Completed
Branch master (0fc797)
by Michael
13:18 queued 09:16
created
include/plugins/foreign-system.php 1 patch
Indentation   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -20,10 +20,10 @@  discard block
 block discarded – undo
20 20
 				case 'tables_priv': return array(array('table' => 'user', 'source' => array('Host', 'User'), 'target' => array('Host', 'User')));
21 21
 				case 'time_zone_name': return array(array('table' => 'time_zone', 'source' => array('Time_zone_id'), 'target' => array('Time_zone_id')));
22 22
 				case 'time_zone_transition': return array(array('table' => 'time_zone', 'source' => array('Time_zone_id'), 'target' => array('Time_zone_id')), array(
23
-                    'table' => 'time_zone_transition_type', 'source' => array('Time_zone_id', 'Transition_type_id'), 'target' => array(
24
-                    'Time_zone_id',
25
-                    'Transition_type_id'
26
-                )));
23
+					'table' => 'time_zone_transition_type', 'source' => array('Time_zone_id', 'Transition_type_id'), 'target' => array(
24
+					'Time_zone_id',
25
+					'Transition_type_id'
26
+				)));
27 27
 				case 'time_zone_transition_type': return array(array('table' => 'time_zone', 'source' => array('Time_zone_id'), 'target' => array('Time_zone_id')));
28 28
 			}
29 29
 		} elseif (DB == 'information_schema') {
@@ -44,40 +44,40 @@  discard block
 block discarded – undo
44 44
 				case 'EVENTS': return array_merge(array(array('source' => array('EVENT_CATALOG', 'EVENT_SCHEMA')) + $schemata), $routine_charsets);
45 45
 				case 'FILES': return array($schemata, $tables);
46 46
 				case 'KEY_COLUMN_USAGE': return array(array('source' => array('CONSTRAINT_CATALOG', 'CONSTRAINT_SCHEMA')) + $schemata, $schemata, $tables, $columns, array('source' => array('TABLE_CATALOG', 'REFERENCED_TABLE_SCHEMA')) + $schemata, array(
47
-                                                                                                                                                                                                                                                           'source' => array(
48
-                                                         'TABLE_CATALOG',
49
-                                                         'REFERENCED_TABLE_SCHEMA',
50
-                                                         'REFERENCED_TABLE_NAME'
51
-                                                     )) + $tables, array(
52
-                                                                                                                                                                                                                                                                                                                                                                    'source' => array(
53
-                                                         'TABLE_CATALOG',
54
-                                                         'REFERENCED_TABLE_SCHEMA',
55
-                                                         'REFERENCED_TABLE_NAME',
56
-                                                         'REFERENCED_COLUMN_NAME'
57
-                                                     )) + $columns);
47
+																																																														   'source' => array(
48
+														 'TABLE_CATALOG',
49
+														 'REFERENCED_TABLE_SCHEMA',
50
+														 'REFERENCED_TABLE_NAME'
51
+													 )) + $tables, array(
52
+																																																																																									'source' => array(
53
+														 'TABLE_CATALOG',
54
+														 'REFERENCED_TABLE_SCHEMA',
55
+														 'REFERENCED_TABLE_NAME',
56
+														 'REFERENCED_COLUMN_NAME'
57
+													 )) + $columns);
58 58
 				case 'PARTITIONS': return array($schemata, $tables);
59 59
 				case 'REFERENTIAL_CONSTRAINTS': return array(array('source' => array('CONSTRAINT_CATALOG', 'CONSTRAINT_SCHEMA')) + $schemata, array('source' => array('UNIQUE_CONSTRAINT_CATALOG', 'UNIQUE_CONSTRAINT_SCHEMA')) + $schemata, array(
60
-                                                                                                                                                                                                                                                 'source' => array(
61
-                                                                'CONSTRAINT_CATALOG',
62
-                                                                'CONSTRAINT_SCHEMA',
63
-                                                                'TABLE_NAME'
64
-                                                            )) + $tables, array(
65
-                                                                                                                                                                                                                                                                                                                                              'source' => array(
66
-                                                                'CONSTRAINT_CATALOG',
67
-                                                                'CONSTRAINT_SCHEMA',
68
-                                                                'REFERENCED_TABLE_NAME'
69
-                                                            )) + $tables);
60
+																																																												 'source' => array(
61
+																'CONSTRAINT_CATALOG',
62
+																'CONSTRAINT_SCHEMA',
63
+																'TABLE_NAME'
64
+															)) + $tables, array(
65
+																																																																																			  'source' => array(
66
+																'CONSTRAINT_CATALOG',
67
+																'CONSTRAINT_SCHEMA',
68
+																'REFERENCED_TABLE_NAME'
69
+															)) + $tables);
70 70
 				case 'ROUTINES': return array_merge(array(array('source' => array('ROUTINE_CATALOG', 'ROUTINE_SCHEMA')) + $schemata), $routine_charsets);
71 71
 				case 'SCHEMA_PRIVILEGES': return array($schemata);
72 72
 				case 'STATISTICS': return array($schemata, $tables, $columns, array('source' => array('TABLE_CATALOG', 'INDEX_SCHEMA')) + $schemata);
73 73
 				case 'TABLE_CONSTRAINTS': return array(array('source' => array('CONSTRAINT_CATALOG', 'CONSTRAINT_SCHEMA')) + $schemata, array('source' => array('CONSTRAINT_CATALOG', 'TABLE_SCHEMA')) + $schemata, array('source' => array('CONSTRAINT_CATALOG', 'TABLE_SCHEMA', 'TABLE_NAME')) + $tables);
74 74
 				case 'TABLE_PRIVILEGES': return array($schemata, $tables);
75 75
 				case 'TRIGGERS': return array_merge(array(array('source' => array('TRIGGER_CATALOG', 'TRIGGER_SCHEMA')) + $schemata, array('source' => array('EVENT_OBJECT_CATALOG', 'EVENT_OBJECT_SCHEMA')) + $schemata, array(
76
-                                                                                                                                                                                                                              'source' => array(
77
-                                                             'EVENT_OBJECT_CATALOG',
78
-                                                             'EVENT_OBJECT_SCHEMA',
79
-                                                             'EVENT_OBJECT_TABLE'
80
-                                                         )) + $tables), $routine_charsets);
76
+																																																							  'source' => array(
77
+															 'EVENT_OBJECT_CATALOG',
78
+															 'EVENT_OBJECT_SCHEMA',
79
+															 'EVENT_OBJECT_TABLE'
80
+														 )) + $tables), $routine_charsets);
81 81
 				case 'VIEWS': return array($schemata);
82 82
 			}
83 83
 		}
Please login to merge, or discard this patch.
include/plugins/translation.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -39,11 +39,11 @@
 block discarded – undo
39 39
 	}
40 40
 	
41 41
 	function tableName(&$tableStatus) {
42
-        $tableStatus['Comment'] = $this->_translate($tableStatus['Comment']);
42
+		$tableStatus['Comment'] = $this->_translate($tableStatus['Comment']);
43 43
 	}
44 44
 	
45 45
 	function fieldName(&$field, $order = 0) {
46
-        $field['comment'] = $this->_translate($field['comment']);
46
+		$field['comment'] = $this->_translate($field['comment']);
47 47
 	}
48 48
 	
49 49
 	function editVal(&$val, $field) {
Please login to merge, or discard this patch.
include/plugins/login-servers.php 2 patches
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -11,9 +11,9 @@
 block discarded – undo
11 11
 	var $servers, $driver;
12 12
 	
13 13
 	/** Set supported servers
14
-	* @param array array($domain) or array($domain => $description) or array($category => array())
15
-	* @param string
16
-	*/
14
+	 * @param array array($domain) or array($domain => $description) or array($category => array())
15
+	 * @param string
16
+	 */
17 17
 	function __construct($servers, $driver = 'server') {
18 18
 		$this->servers = $servers;
19 19
 		$this->driver = $driver;
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -39,7 +39,7 @@
 block discarded – undo
39 39
 		?>
40 40
 <table cellspacing="0">
41 41
 <tr><th><?php echo lang('Server'); ?><td><input type="hidden" name="auth[driver]" value="<?php echo $this->driver; ?>"><select name="auth[server]"><?php echo optionlist($this->servers, SERVER); ?></select>
42
-<tr><th><?php echo lang('Username'); ?><td><input id="username" name="auth[username]" value="<?php echo h($_GET['username']);  ?>">
42
+<tr><th><?php echo lang('Username'); ?><td><input id="username" name="auth[username]" value="<?php echo h($_GET['username']); ?>">
43 43
 <tr><th><?php echo lang('Password'); ?><td><input type="password" name="auth[password]">
44 44
 </table>
45 45
 <p><input type="submit" value="<?php echo lang('Login'); ?>">
Please login to merge, or discard this patch.
include/plugins/file-upload.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -12,10 +12,10 @@
 block discarded – undo
12 12
 	var $uploadPath, $displayPath, $extensions;
13 13
 
14 14
 	/**
15
-	* @param string prefix for uploading data (create writable subdirectory for each table containing uploadable fields)
16
-	* @param string prefix for displaying data, null stands for $uploadPath
17
-	* @param string regular expression with allowed file extensions
18
-	*/
15
+	 * @param string prefix for uploading data (create writable subdirectory for each table containing uploadable fields)
16
+	 * @param string prefix for displaying data, null stands for $uploadPath
17
+	 * @param string regular expression with allowed file extensions
18
+	 */
19 19
 	function __construct($uploadPath = '../static/data/', $displayPath = null, $extensions = '[a-zA-Z0-9]+') {
20 20
 		$this->uploadPath = $uploadPath;
21 21
 		$this->displayPath = ($displayPath !== null ? $displayPath : $uploadPath);
Please login to merge, or discard this patch.
include/bigdump.php 3 patches
Indentation   +273 added lines, -273 removed lines patch added patch discarded remove patch
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
 $ajax               = true;   // AJAX mode: import will be done without refreshing the website
56 56
 $linespersession    = 3000;   // Lines to be executed per one import session
57 57
 $delaypersession    = 0;      // You can specify a sleep time in milliseconds after each session
58
-                              // Works only if JavaScript is activated. Use to reduce server overrun
58
+							  // Works only if JavaScript is activated. Use to reduce server overrun
59 59
 
60 60
 // CSV related settings (only if you use a CSV dump)
61 61
 
@@ -353,25 +353,25 @@  discard block
 block discarded – undo
353 353
 if (!$error && isset($_REQUEST["uploadbutton"]))
354 354
 { if (is_uploaded_file($_FILES["dumpfile"]["tmp_name"]) && ($_FILES["dumpfile"]["error"])==0)
355 355
   { 
356
-    $uploaded_filename=str_replace(" ","_",$_FILES["dumpfile"]["name"]);
357
-    $uploaded_filename=preg_replace("/[^_A-Za-z0-9-\.]/i",'',$uploaded_filename);
358
-    $uploaded_filepath=str_replace("\\","/",$upload_dir."/".$uploaded_filename);
356
+	$uploaded_filename=str_replace(" ","_",$_FILES["dumpfile"]["name"]);
357
+	$uploaded_filename=preg_replace("/[^_A-Za-z0-9-\.]/i",'',$uploaded_filename);
358
+	$uploaded_filepath=str_replace("\\","/",$upload_dir."/".$uploaded_filename);
359 359
 
360
-    do_action('file_uploaded');
360
+	do_action('file_uploaded');
361 361
 
362
-    if (file_exists($uploaded_filename))
363
-    { echo ("<p class=\"error\">File $uploaded_filename already exist! Delete and upload again!</p>\n");
364
-    }
365
-    else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename))
366
-    { echo ("<p class=\"error\">You may only upload .sql .gz or .csv files.</p>\n");
367
-    }
368
-    else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath))
369
-    { echo ("<p class=\"error\">Error moving uploaded file ".$_FILES["dumpfile"]["tmp_name"]." to the $uploaded_filepath</p>\n");
370
-      echo ("<p>Check the directory permissions for $upload_dir (must be 777)!</p>\n");
371
-    }
372
-    else
373
-    { echo ("<p class=\"success\">Uploaded file saved as $uploaded_filename</p>\n");
374
-    }
362
+	if (file_exists($uploaded_filename))
363
+	{ echo ("<p class=\"error\">File $uploaded_filename already exist! Delete and upload again!</p>\n");
364
+	}
365
+	else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename))
366
+	{ echo ("<p class=\"error\">You may only upload .sql .gz or .csv files.</p>\n");
367
+	}
368
+	else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath))
369
+	{ echo ("<p class=\"error\">Error moving uploaded file ".$_FILES["dumpfile"]["tmp_name"]." to the $uploaded_filepath</p>\n");
370
+	  echo ("<p>Check the directory permissions for $upload_dir (must be 777)!</p>\n");
371
+	}
372
+	else
373
+	{ echo ("<p class=\"success\">Uploaded file saved as $uploaded_filename</p>\n");
374
+	}
375 375
   }
376 376
   else
377 377
   { echo ("<p class=\"error\">Error uploading file ".$_FILES["dumpfile"]["name"]."</p>\n");
@@ -383,9 +383,9 @@  discard block
 block discarded – undo
383 383
 
384 384
 if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"]!=basename($_SERVER["SCRIPT_FILENAME"]))
385 385
 { if (preg_match("/(\.(sql|gz|csv))$/i",$_REQUEST["delete"]) && @unlink($upload_dir.'/'.$_REQUEST["delete"])) 
386
-    echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n");
386
+	echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n");
387 387
   else
388
-    echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n");
388
+	echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n");
389 389
 }
390 390
 
391 391
 // Connect to the database, set charset and execute pre-queries
@@ -395,23 +395,23 @@  discard block
 block discarded – undo
395 395
   
396 396
   if (mysqli_connect_error()) 
397 397
   { echo ("<p class=\"error\">Database connection failed due to ".mysqli_connect_error()."</p>\n");
398
-    echo ("<p>Edit the database settings in BigDump configuration, or contact your database provider.</p>\n");
399
-    $error=true;
398
+	echo ("<p>Edit the database settings in BigDump configuration, or contact your database provider.</p>\n");
399
+	$error=true;
400 400
   }
401 401
   if (!$error && $db_connection_charset!=='')
402
-    $mysqli->query("SET NAMES $db_connection_charset");
402
+	$mysqli->query("SET NAMES $db_connection_charset");
403 403
 
404 404
   if (!$error && isset ($pre_query) && sizeof ($pre_query)>0)
405 405
   { reset($pre_query);
406
-    foreach ($pre_query as $pre_query_value)
407
-    {	if (!$mysqli->query($pre_query_value))
408
-    	{ echo ("<p class=\"error\">Error with pre-query.</p>\n");
409
-      	echo ("<p>Query: ".trim(nl2br(htmlentities($pre_query_value)))."</p>\n");
410
-      	echo ("<p>MySQL: ".$mysqli->error."</p>\n");
411
-      	$error=true;
412
-      	break;
413
-     }
414
-    }
406
+	foreach ($pre_query as $pre_query_value)
407
+	{	if (!$mysqli->query($pre_query_value))
408
+		{ echo ("<p class=\"error\">Error with pre-query.</p>\n");
409
+	  	echo ("<p>Query: ".trim(nl2br(htmlentities($pre_query_value)))."</p>\n");
410
+	  	echo ("<p>MySQL: ".$mysqli->error."</p>\n");
411
+	  	$error=true;
412
+	  	break;
413
+	 }
414
+	}
415 415
   }
416 416
 }
417 417
 else
@@ -428,50 +428,50 @@  discard block
 block discarded – undo
428 428
 if (!$error && !isset($_REQUEST["fn"]) && $filename=="")
429 429
 { if ($dirhandle = opendir($upload_dir)) 
430 430
   { 
431
-    $files=array();
432
-    while (false !== ($files[] = readdir($dirhandle)));
433
-    closedir($dirhandle);
434
-    $dirhead=false;
435
-
436
-    if (sizeof($files)>0)
437
-    { 
438
-      sort($files);
439
-      foreach ($files as $dirfile)
440
-      { 
441
-        if ($dirfile != "." && $dirfile != ".." && $dirfile!=basename($_SERVER["SCRIPT_FILENAME"]) && preg_match("/\.(sql|gz|csv)$/i",$dirfile))
442
-        { if (!$dirhead)
443
-          { echo ("<table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\">\n");
444
-            echo ("<tr><th>Filename</th><th>Size</th><th>Date&amp;Time</th><th>Type</th><th>&nbsp;</th><th>&nbsp;</th>\n");
445
-            $dirhead=true;
446
-          }
447
-          echo ("<tr><td>$dirfile</td><td class=\"right\">".filesize($upload_dir.'/'.$dirfile)."</td><td>".date ("Y-m-d H:i:s", filemtime($upload_dir.'/'.$dirfile))."</td>");
448
-
449
-          if (preg_match("/\.sql$/i",$dirfile))
450
-            echo ("<td>SQL</td>");
451
-          elseif (preg_match("/\.gz$/i",$dirfile))
452
-            echo ("<td>GZip</td>");
453
-          elseif (preg_match("/\.csv$/i",$dirfile))
454
-            echo ("<td>CSV</td>");
455
-          else
456
-            echo ("<td>Misc</td>");
457
-
458
-          if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile))
459
-            echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
431
+	$files=array();
432
+	while (false !== ($files[] = readdir($dirhandle)));
433
+	closedir($dirhandle);
434
+	$dirhead=false;
435
+
436
+	if (sizeof($files)>0)
437
+	{ 
438
+	  sort($files);
439
+	  foreach ($files as $dirfile)
440
+	  { 
441
+		if ($dirfile != "." && $dirfile != ".." && $dirfile!=basename($_SERVER["SCRIPT_FILENAME"]) && preg_match("/\.(sql|gz|csv)$/i",$dirfile))
442
+		{ if (!$dirhead)
443
+		  { echo ("<table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\">\n");
444
+			echo ("<tr><th>Filename</th><th>Size</th><th>Date&amp;Time</th><th>Type</th><th>&nbsp;</th><th>&nbsp;</th>\n");
445
+			$dirhead=true;
446
+		  }
447
+		  echo ("<tr><td>$dirfile</td><td class=\"right\">".filesize($upload_dir.'/'.$dirfile)."</td><td>".date ("Y-m-d H:i:s", filemtime($upload_dir.'/'.$dirfile))."</td>");
448
+
449
+		  if (preg_match("/\.sql$/i",$dirfile))
450
+			echo ("<td>SQL</td>");
451
+		  elseif (preg_match("/\.gz$/i",$dirfile))
452
+			echo ("<td>GZip</td>");
453
+		  elseif (preg_match("/\.csv$/i",$dirfile))
454
+			echo ("<td>CSV</td>");
455
+		  else
456
+			echo ("<td>Misc</td>");
457
+
458
+		  if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile))
459
+			echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
460 460
 // TODO: echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a></td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
461
-          else
462
-            echo ("<td>&nbsp;</td>\n <td>&nbsp;</td></tr>\n");
463
-        }
464
-      }
465
-    }
461
+		  else
462
+			echo ("<td>&nbsp;</td>\n <td>&nbsp;</td></tr>\n");
463
+		}
464
+	  }
465
+	}
466 466
 
467
-    if ($dirhead) 
468
-      echo ("</table>\n");
469
-    else 
470
-      echo ("<p>No uploaded SQL, GZ or CSV files found in the working directory</p>\n");
467
+	if ($dirhead) 
468
+	  echo ("</table>\n");
469
+	else 
470
+	  echo ("<p>No uploaded SQL, GZ or CSV files found in the working directory</p>\n");
471 471
   }
472 472
   else
473 473
   { echo ("<p class=\"error\">Error listing directory $upload_dir</p>\n");
474
-    $error=true;
474
+	$error=true;
475 475
   }
476 476
 }
477 477
 
@@ -493,14 +493,14 @@  discard block
 block discarded – undo
493 493
   do { $tempfilename=$upload_dir.'/'.time().".tmp"; } while (file_exists($tempfilename)); 
494 494
   if (!($tempfile=@fopen($tempfilename,"w")))
495 495
   { echo ("<p>Upload form disabled. Permissions for the working directory <i>$upload_dir</i> <b>must be set writable for the webserver</b> in order ");
496
-    echo ("to upload files here. Alternatively you can upload your dump files via FTP.</p>\n");
496
+	echo ("to upload files here. Alternatively you can upload your dump files via FTP.</p>\n");
497 497
   }
498 498
   else
499 499
   { fclose($tempfile);
500
-    unlink ($tempfilename);
500
+	unlink ($tempfilename);
501 501
  
502
-    echo ("<p>You can now upload your dump file up to $upload_max_filesize bytes (".round ($upload_max_filesize/1024/1024)." Mbytes)  ");
503
-    echo ("directly from your browser to the server. Alternatively you can upload your dump files of any size via FTP.</p>\n");
502
+	echo ("<p>You can now upload your dump file up to $upload_max_filesize bytes (".round ($upload_max_filesize/1024/1024)." Mbytes)  ");
503
+	echo ("directly from your browser to the server. Alternatively you can upload your dump files of any size via FTP.</p>\n");
504 504
 ?>
505 505
 <form method="POST" action="<?php echo ($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data">
506 506
 <input type="hidden" name="MAX_FILE_SIZE" value="$upload_max_filesize">
@@ -518,11 +518,11 @@  discard block
 block discarded – undo
518 518
   $result = $mysqli->query("SHOW VARIABLES LIKE 'character_set_connection';");
519 519
   if ($result) 
520 520
   { $row = $result->fetch_assoc();
521
-    if ($row) 
522
-    { $charset = $row['Value'];
523
-      echo ("<p>Note: The current mySQL connection charset is <i>$charset</i>. Your dump file must be encoded in <i>$charset</i> in order to avoid problems with non-latin characters. You can change the connection charset using the \$db_connection_charset variable in bigdump.php</p>\n");
524
-    }
525
-    $result->free();
521
+	if ($row) 
522
+	{ $charset = $row['Value'];
523
+	  echo ("<p>Note: The current mySQL connection charset is <i>$charset</i>. Your dump file must be encoded in <i>$charset</i> in order to avoid problems with non-latin characters. You can change the connection charset using the \$db_connection_charset variable in bigdump.php</p>\n");
524
+	}
525
+	$result->free();
526 526
   }
527 527
 }
528 528
 
@@ -534,43 +534,43 @@  discard block
 block discarded – undo
534 534
 // Set current filename ($filename overrides $_REQUEST["fn"] if set)
535 535
 
536 536
   if ($filename!="")
537
-    $curfilename=$filename;
537
+	$curfilename=$filename;
538 538
   else if (isset($_REQUEST["fn"]))
539
-    $curfilename=urldecode($_REQUEST["fn"]);
539
+	$curfilename=urldecode($_REQUEST["fn"]);
540 540
   else
541
-    $curfilename="";
541
+	$curfilename="";
542 542
 
543 543
 // Recognize GZip filename
544 544
 
545 545
   if (preg_match("/\.gz$/i",$curfilename)) 
546
-    $gzipmode=true;
546
+	$gzipmode=true;
547 547
   else
548
-    $gzipmode=false;
548
+	$gzipmode=false;
549 549
 
550 550
   if ((!$gzipmode && !$file=@fopen($upload_dir.'/'.$curfilename,"r")) || ($gzipmode && !$file=@gzopen($upload_dir.'/'.$curfilename,"r")))
551 551
   { echo ("<p class=\"error\">Can't open ".$curfilename." for import</p>\n");
552
-    echo ("<p>Please, check that your dump file name contains only alphanumerical characters, and rename it accordingly, for example: $curfilename.".
553
-           "<br>Or, specify \$filename in bigdump.php with the full filename. ".
554
-           "<br>Or, you have to upload the $curfilename to the server first.</p>\n");
555
-    $error=true;
552
+	echo ("<p>Please, check that your dump file name contains only alphanumerical characters, and rename it accordingly, for example: $curfilename.".
553
+		   "<br>Or, specify \$filename in bigdump.php with the full filename. ".
554
+		   "<br>Or, you have to upload the $curfilename to the server first.</p>\n");
555
+	$error=true;
556 556
   }
557 557
 
558 558
 // Get the file size (can't do it fast on gzipped files, no idea how)
559 559
 
560 560
   else if ((!$gzipmode && @fseek($file, 0, SEEK_END)==0) || ($gzipmode && @gzseek($file, 0)==0))
561 561
   { if (!$gzipmode) $filesize = ftell($file);
562
-    else $filesize = gztell($file);                   // Always zero, ignore
562
+	else $filesize = gztell($file);                   // Always zero, ignore
563 563
   }
564 564
   else
565 565
   { echo ("<p class=\"error\">I can't seek into $curfilename</p>\n");
566
-    $error=true;
566
+	$error=true;
567 567
   }
568 568
 
569 569
 // Stop if csv file is used, but $csv_insert_table is not set
570 570
 
571 571
   if (!$error && ($csv_insert_table == "") && (preg_match("/(\.csv)$/i",$curfilename)))
572 572
   { echo ("<p class=\"error\">You have to specify \$csv_insert_table when using a CSV file. </p>\n");
573
-    $error=true;
573
+	$error=true;
574 574
   }
575 575
 }
576 576
 
@@ -588,171 +588,171 @@  discard block
 block discarded – undo
588 588
 
589 589
   if (!is_numeric($_REQUEST["start"]) || !is_numeric($_REQUEST["foffset"]))
590 590
   { echo ("<p class=\"error\">UNEXPECTED: Non-numeric values for start and foffset</p>\n");
591
-    $error=true;
591
+	$error=true;
592 592
   }
593 593
   else
594 594
   {	$_REQUEST["start"]   = floor($_REQUEST["start"]);
595
-    $_REQUEST["foffset"] = floor($_REQUEST["foffset"]);
595
+	$_REQUEST["foffset"] = floor($_REQUEST["foffset"]);
596 596
   }
597 597
 
598 598
 // Set the current delimiter if defined
599 599
 
600 600
   if (isset($_REQUEST["delimiter"]))
601
-    $delimiter = $_REQUEST["delimiter"];
601
+	$delimiter = $_REQUEST["delimiter"];
602 602
 
603 603
 // Empty CSV table if requested
604 604
 
605 605
   if (!$error && $_REQUEST["start"]==1 && $csv_insert_table != "" && $csv_preempty_table)
606 606
   { 
607
-    $query = "DELETE FROM `$csv_insert_table`";
608
-    if (!TESTMODE && !$mysqli->query(trim($query)))
609
-    { echo ("<p class=\"error\">Error when deleting entries from $csv_insert_table.</p>\n");
610
-      echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n");
611
-      echo ("<p>MySQL: ".$mysqli->error."</p>\n");
612
-      $error=true;
613
-    }
607
+	$query = "DELETE FROM `$csv_insert_table`";
608
+	if (!TESTMODE && !$mysqli->query(trim($query)))
609
+	{ echo ("<p class=\"error\">Error when deleting entries from $csv_insert_table.</p>\n");
610
+	  echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n");
611
+	  echo ("<p>MySQL: ".$mysqli->error."</p>\n");
612
+	  $error=true;
613
+	}
614 614
   }
615 615
   
616 616
 // Print start message
617 617
 
618 618
   if (!$error)
619 619
   { skin_open();
620
-    if (TESTMODE) 
621
-      echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n");
622
-    echo ("<p class=\"centr\">Processing file: <b>".$curfilename."</b></p>\n");
623
-    echo ("<p class=\"smlcentr\">Starting from line: ".$_REQUEST["start"]."</p>\n");	
624
-    skin_close();
620
+	if (TESTMODE) 
621
+	  echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n");
622
+	echo ("<p class=\"centr\">Processing file: <b>".$curfilename."</b></p>\n");
623
+	echo ("<p class=\"smlcentr\">Starting from line: ".$_REQUEST["start"]."</p>\n");	
624
+	skin_close();
625 625
   }
626 626
 
627 627
 // Check $_REQUEST["foffset"] upon $filesize (can't do it on gzipped files)
628 628
 
629 629
   if (!$error && !$gzipmode && $_REQUEST["foffset"]>$filesize)
630 630
   { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer behind the end of file</p>\n");
631
-    $error=true;
631
+	$error=true;
632 632
   }
633 633
 
634 634
 // Set file pointer to $_REQUEST["foffset"]
635 635
 
636 636
   if (!$error && ((!$gzipmode && fseek($file, $_REQUEST["foffset"])!=0) || ($gzipmode && gzseek($file, $_REQUEST["foffset"])!=0)))
637 637
   { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer to offset: ".$_REQUEST["foffset"]."</p>\n");
638
-    $error=true;
638
+	$error=true;
639 639
   }
640 640
 
641 641
 // Start processing queries from $file
642 642
 
643 643
   if (!$error)
644 644
   { $query="";
645
-    $queries=0;
646
-    $totalqueries=$_REQUEST["totalqueries"];
647
-    $linenumber=$_REQUEST["start"];
648
-    $querylines=0;
649
-    $inparents=false;
645
+	$queries=0;
646
+	$totalqueries=$_REQUEST["totalqueries"];
647
+	$linenumber=$_REQUEST["start"];
648
+	$querylines=0;
649
+	$inparents=false;
650 650
 
651 651
 // Stay processing as long as the $linespersession is not reached or the query is still incomplete
652 652
 
653
-    while ($linenumber<$_REQUEST["start"]+$linespersession || $query!="")
654
-    {
653
+	while ($linenumber<$_REQUEST["start"]+$linespersession || $query!="")
654
+	{
655 655
 
656 656
 // Read the whole next line
657 657
 
658
-      $dumpline = "";
659
-      while (!feof($file) && substr ($dumpline, -1) != "\n" && substr ($dumpline, -1) != "\r")
660
-      { if (!$gzipmode)
661
-          $dumpline .= fgets($file, DATA_CHUNK_LENGTH);
662
-        else
663
-          $dumpline .= gzgets($file, DATA_CHUNK_LENGTH);
664
-      }
665
-      if ($dumpline==="") break;
658
+	  $dumpline = "";
659
+	  while (!feof($file) && substr ($dumpline, -1) != "\n" && substr ($dumpline, -1) != "\r")
660
+	  { if (!$gzipmode)
661
+		  $dumpline .= fgets($file, DATA_CHUNK_LENGTH);
662
+		else
663
+		  $dumpline .= gzgets($file, DATA_CHUNK_LENGTH);
664
+	  }
665
+	  if ($dumpline==="") break;
666 666
 
667 667
 // Remove UTF8 Byte Order Mark at the file beginning if any
668 668
 
669
-      if ($_REQUEST["foffset"]==0)
670
-        $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline);
669
+	  if ($_REQUEST["foffset"]==0)
670
+		$dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline);
671 671
 
672 672
 // Create an SQL query from CSV line
673 673
 
674
-      if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i",$curfilename)))
675
-      {
676
-        if ($csv_add_slashes)
677
-          $dumpline = addslashes($dumpline);
678
-        $dumpline = explode($csv_delimiter,$dumpline);
679
-        if ($csv_add_quotes)
680
-          $dumpline = "'".implode("','",$dumpline)."'";
681
-        else
682
-          $dumpline = implode(",",$dumpline);
683
-        $dumpline = 'INSERT INTO '.$csv_insert_table.' VALUES ('.$dumpline.');';
684
-      }
674
+	  if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i",$curfilename)))
675
+	  {
676
+		if ($csv_add_slashes)
677
+		  $dumpline = addslashes($dumpline);
678
+		$dumpline = explode($csv_delimiter,$dumpline);
679
+		if ($csv_add_quotes)
680
+		  $dumpline = "'".implode("','",$dumpline)."'";
681
+		else
682
+		  $dumpline = implode(",",$dumpline);
683
+		$dumpline = 'INSERT INTO '.$csv_insert_table.' VALUES ('.$dumpline.');';
684
+	  }
685 685
 
686 686
 // Handle DOS and Mac encoded linebreaks (I don't know if it really works on Win32 or Mac Servers)
687 687
 
688
-      $dumpline=str_replace("\r\n", "\n", $dumpline);
689
-      $dumpline=str_replace("\r", "\n", $dumpline);
688
+	  $dumpline=str_replace("\r\n", "\n", $dumpline);
689
+	  $dumpline=str_replace("\r", "\n", $dumpline);
690 690
             
691 691
 // DIAGNOSTIC
692 692
 // echo ("<p>Line $linenumber: $dumpline</p>\n");
693 693
 
694 694
 // Recognize delimiter statement
695 695
 
696
-      if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0)
697
-        $delimiter = str_replace ("DELIMITER ","",trim($dumpline));
696
+	  if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0)
697
+		$delimiter = str_replace ("DELIMITER ","",trim($dumpline));
698 698
 
699 699
 // Skip comments and blank lines only if NOT in parents
700 700
 
701
-      if (!$inparents)
702
-      { $skipline=false;
703
-        reset($comment);
704
-        foreach ($comment as $comment_value)
705
-        { 
701
+	  if (!$inparents)
702
+	  { $skipline=false;
703
+		reset($comment);
704
+		foreach ($comment as $comment_value)
705
+		{ 
706 706
 
707 707
 // DIAGNOSTIC
708 708
 //          echo ($comment_value);
709
-          if (trim($dumpline)=="" || strpos (trim($dumpline), $comment_value) === 0)
710
-          { $skipline=true;
711
-            break;
712
-          }
713
-        }
714
-        if ($skipline)
715
-        { $linenumber++;
709
+		  if (trim($dumpline)=="" || strpos (trim($dumpline), $comment_value) === 0)
710
+		  { $skipline=true;
711
+			break;
712
+		  }
713
+		}
714
+		if ($skipline)
715
+		{ $linenumber++;
716 716
 
717 717
 // DIAGNOSTIC
718 718
 // echo ("<p>Comment line skipped</p>\n");
719 719
 
720
-          continue;
721
-        }
722
-      }
720
+		  continue;
721
+		}
722
+	  }
723 723
 
724 724
 // Remove double back-slashes from the dumpline prior to count the quotes ('\\' can only be within strings)
725 725
       
726
-      $dumpline_deslashed = str_replace ("\\\\","",$dumpline);
726
+	  $dumpline_deslashed = str_replace ("\\\\","",$dumpline);
727 727
 
728 728
 // Count ' and \' (or " and \") in the dumpline to avoid query break within a text field ending by $delimiter
729 729
 
730
-      $parents=substr_count ($dumpline_deslashed, $string_quotes)-substr_count ($dumpline_deslashed, "\\$string_quotes");
731
-      if ($parents % 2 != 0)
732
-        $inparents=!$inparents;
730
+	  $parents=substr_count ($dumpline_deslashed, $string_quotes)-substr_count ($dumpline_deslashed, "\\$string_quotes");
731
+	  if ($parents % 2 != 0)
732
+		$inparents=!$inparents;
733 733
 
734 734
 // Add the line to query
735 735
 
736
-      $query .= $dumpline;
736
+	  $query .= $dumpline;
737 737
 
738 738
 // Don't count the line if in parents (text fields may include unlimited linebreaks)
739 739
       
740
-      if (!$inparents)
741
-        $querylines++;
740
+	  if (!$inparents)
741
+		$querylines++;
742 742
       
743 743
 // Stop if query contains more lines as defined by $max_query_lines
744 744
 
745
-      if ($querylines>$max_query_lines)
746
-      {
747
-        echo ("<p class=\"error\">Stopped at the line $linenumber. </p>");
748
-        echo ("<p>At this place the current query includes more than ".$max_query_lines." dump lines. That can happen if your dump file was ");
749
-        echo ("created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains ");
750
-        echo ("extended inserts or very long procedure definitions. Please read the <a href=\"http://www.ozerov.de/bigdump/usage/\">BigDump usage notes</a> ");
751
-        echo ("for more infos. Ask for our support services ");
752
-        echo ("in order to handle dump files containing extended inserts.</p>\n");
753
-        $error=true;
754
-        break;
755
-      }
745
+	  if ($querylines>$max_query_lines)
746
+	  {
747
+		echo ("<p class=\"error\">Stopped at the line $linenumber. </p>");
748
+		echo ("<p>At this place the current query includes more than ".$max_query_lines." dump lines. That can happen if your dump file was ");
749
+		echo ("created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains ");
750
+		echo ("extended inserts or very long procedure definitions. Please read the <a href=\"http://www.ozerov.de/bigdump/usage/\">BigDump usage notes</a> ");
751
+		echo ("for more infos. Ask for our support services ");
752
+		echo ("in order to handle dump files containing extended inserts.</p>\n");
753
+		$error=true;
754
+		break;
755
+	  }
756 756
 
757 757
 // Execute query if end of query detected ($delimiter as last character) AND NOT in parents
758 758
 
@@ -761,43 +761,43 @@  discard block
 block discarded – undo
761 761
 // echo ("<p>In Parents: ".($inparents?"true":"false")."</p>\n");
762 762
 // echo ("<p>Line: $dumpline</p>\n");
763 763
 
764
-      if ((preg_match('/'.preg_quote($delimiter,'/').'$/',trim($dumpline)) || $delimiter=='') && !$inparents)
765
-      { 
764
+	  if ((preg_match('/'.preg_quote($delimiter,'/').'$/',trim($dumpline)) || $delimiter=='') && !$inparents)
765
+	  { 
766 766
 
767 767
 // Cut off delimiter of the end of the query
768 768
 
769
-        $query = substr(trim($query),0,-1*strlen($delimiter));
769
+		$query = substr(trim($query),0,-1*strlen($delimiter));
770 770
 
771 771
 // DIAGNOSTIC
772 772
 // echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n");
773 773
 
774
-        if (!TESTMODE && !$mysqli->query($query))
775
-        { echo ("<p class=\"error\">Error at the line $linenumber: ". trim($dumpline)."</p>\n");
776
-          echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n");
777
-          echo ("<p>MySQL: ".$mysqli->error."</p>\n");
778
-          $error=true;
779
-          break;
780
-        }
781
-        $totalqueries++;
782
-        $queries++;
783
-        $query="";
784
-        $querylines=0;
785
-      }
786
-      $linenumber++;
787
-    }
774
+		if (!TESTMODE && !$mysqli->query($query))
775
+		{ echo ("<p class=\"error\">Error at the line $linenumber: ". trim($dumpline)."</p>\n");
776
+		  echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n");
777
+		  echo ("<p>MySQL: ".$mysqli->error."</p>\n");
778
+		  $error=true;
779
+		  break;
780
+		}
781
+		$totalqueries++;
782
+		$queries++;
783
+		$query="";
784
+		$querylines=0;
785
+	  }
786
+	  $linenumber++;
787
+	}
788 788
   }
789 789
 
790 790
 // Get the current file position
791 791
 
792 792
   if (!$error)
793 793
   { if (!$gzipmode) 
794
-      $foffset = ftell($file);
795
-    else
796
-      $foffset = gztell($file);
797
-    if (!$foffset)
798
-    { echo ("<p class=\"error\">UNEXPECTED: Can't read the file pointer offset</p>\n");
799
-      $error=true;
800
-    }
794
+	  $foffset = ftell($file);
795
+	else
796
+	  $foffset = gztell($file);
797
+	if (!$foffset)
798
+	{ echo ("<p class=\"error\">UNEXPECTED: Can't read the file pointer offset</p>\n");
799
+	  $error=true;
800
+	}
801 801
   }
802 802
 
803 803
 // Print statistics
@@ -808,63 +808,63 @@  discard block
 block discarded – undo
808 808
 
809 809
   if (!$error)
810 810
   { 
811
-    $lines_this   = $linenumber-$_REQUEST["start"];
812
-    $lines_done   = $linenumber-1;
813
-    $lines_togo   = ' ? ';
814
-    $lines_tota   = ' ? ';
811
+	$lines_this   = $linenumber-$_REQUEST["start"];
812
+	$lines_done   = $linenumber-1;
813
+	$lines_togo   = ' ? ';
814
+	$lines_tota   = ' ? ';
815 815
     
816
-    $queries_this = $queries;
817
-    $queries_done = $totalqueries;
818
-    $queries_togo = ' ? ';
819
-    $queries_tota = ' ? ';
820
-
821
-    $bytes_this   = $foffset-$_REQUEST["foffset"];
822
-    $bytes_done   = $foffset;
823
-    $kbytes_this  = round($bytes_this/1024,2);
824
-    $kbytes_done  = round($bytes_done/1024,2);
825
-    $mbytes_this  = round($kbytes_this/1024,2);
826
-    $mbytes_done  = round($kbytes_done/1024,2);
816
+	$queries_this = $queries;
817
+	$queries_done = $totalqueries;
818
+	$queries_togo = ' ? ';
819
+	$queries_tota = ' ? ';
820
+
821
+	$bytes_this   = $foffset-$_REQUEST["foffset"];
822
+	$bytes_done   = $foffset;
823
+	$kbytes_this  = round($bytes_this/1024,2);
824
+	$kbytes_done  = round($bytes_done/1024,2);
825
+	$mbytes_this  = round($kbytes_this/1024,2);
826
+	$mbytes_done  = round($kbytes_done/1024,2);
827 827
    
828
-    if (!$gzipmode)
829
-    {
830
-      $bytes_togo  = $filesize-$foffset;
831
-      $bytes_tota  = $filesize;
832
-      $kbytes_togo = round($bytes_togo/1024,2);
833
-      $kbytes_tota = round($bytes_tota/1024,2);
834
-      $mbytes_togo = round($kbytes_togo/1024,2);
835
-      $mbytes_tota = round($kbytes_tota/1024,2);
828
+	if (!$gzipmode)
829
+	{
830
+	  $bytes_togo  = $filesize-$foffset;
831
+	  $bytes_tota  = $filesize;
832
+	  $kbytes_togo = round($bytes_togo/1024,2);
833
+	  $kbytes_tota = round($bytes_tota/1024,2);
834
+	  $mbytes_togo = round($kbytes_togo/1024,2);
835
+	  $mbytes_tota = round($kbytes_tota/1024,2);
836 836
       
837
-      $pct_this   = ceil($bytes_this/$filesize*100);
838
-      $pct_done   = ceil($foffset/$filesize*100);
839
-      $pct_togo   = 100 - $pct_done;
840
-      $pct_tota   = 100;
841
-
842
-      if ($bytes_togo==0) 
843
-      { $lines_togo   = '0'; 
844
-        $lines_tota   = $linenumber-1; 
845
-        $queries_togo = '0'; 
846
-        $queries_tota = $totalqueries; 
847
-      }
848
-
849
-      $pct_bar    = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>";
850
-    }
851
-    else
852
-    {
853
-      $bytes_togo  = ' ? ';
854
-      $bytes_tota  = ' ? ';
855
-      $kbytes_togo = ' ? ';
856
-      $kbytes_tota = ' ? ';
857
-      $mbytes_togo = ' ? ';
858
-      $mbytes_tota = ' ? ';
837
+	  $pct_this   = ceil($bytes_this/$filesize*100);
838
+	  $pct_done   = ceil($foffset/$filesize*100);
839
+	  $pct_togo   = 100 - $pct_done;
840
+	  $pct_tota   = 100;
841
+
842
+	  if ($bytes_togo==0) 
843
+	  { $lines_togo   = '0'; 
844
+		$lines_tota   = $linenumber-1; 
845
+		$queries_togo = '0'; 
846
+		$queries_tota = $totalqueries; 
847
+	  }
848
+
849
+	  $pct_bar    = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>";
850
+	}
851
+	else
852
+	{
853
+	  $bytes_togo  = ' ? ';
854
+	  $bytes_tota  = ' ? ';
855
+	  $kbytes_togo = ' ? ';
856
+	  $kbytes_tota = ' ? ';
857
+	  $mbytes_togo = ' ? ';
858
+	  $mbytes_tota = ' ? ';
859 859
       
860
-      $pct_this    = ' ? ';
861
-      $pct_done    = ' ? ';
862
-      $pct_togo    = ' ? ';
863
-      $pct_tota    = 100;
864
-      $pct_bar     = str_replace(' ','&nbsp;','<tt>[         Not available for gzipped files          ]</tt>');
865
-    }
860
+	  $pct_this    = ' ? ';
861
+	  $pct_done    = ' ? ';
862
+	  $pct_togo    = ' ? ';
863
+	  $pct_tota    = 100;
864
+	  $pct_bar     = str_replace(' ','&nbsp;','<tt>[         Not available for gzipped files          ]</tt>');
865
+	}
866 866
     
867
-    echo ("
867
+	echo ("
868 868
     <center>
869 869
     <table width=\"520\" border=\"0\" cellpadding=\"3\" cellspacing=\"1\">
870 870
     <tr><th class=\"bg4\"> </th><th class=\"bg4\">Session</th><th class=\"bg4\">Done</th><th class=\"bg4\">To go</th><th class=\"bg4\">Total</th></tr>
@@ -881,11 +881,11 @@  discard block
 block discarded – undo
881 881
 
882 882
 // Finish message and restart the script
883 883
 
884
-    if ($linenumber<$_REQUEST["start"]+$linespersession)
885
-    { echo ("<p class=\"successcentr\">Congratulations: End of file reached, assuming OK</p>\n");
886
-      echo ("<p class=\"successcentr\">IMPORTANT: REMOVE YOUR DUMP FILE and BIGDUMP SCRIPT FROM SERVER NOW!</p>\n");
887
-      echo ("<p class=\"centr\">Thank you for using this tool! Please rate <a href=\"http://www.hotscripts.com/listing/bigdump/?RID=403\" target=\"_blank\">Bigdump at Hotscripts.com</a></p>\n");
888
-      echo ("<p class=\"centr\">You can send me some bucks or euros as appreciation via PayPal. Thank you!</p>\n");
884
+	if ($linenumber<$_REQUEST["start"]+$linespersession)
885
+	{ echo ("<p class=\"successcentr\">Congratulations: End of file reached, assuming OK</p>\n");
886
+	  echo ("<p class=\"successcentr\">IMPORTANT: REMOVE YOUR DUMP FILE and BIGDUMP SCRIPT FROM SERVER NOW!</p>\n");
887
+	  echo ("<p class=\"centr\">Thank you for using this tool! Please rate <a href=\"http://www.hotscripts.com/listing/bigdump/?RID=403\" target=\"_blank\">Bigdump at Hotscripts.com</a></p>\n");
888
+	  echo ("<p class=\"centr\">You can send me some bucks or euros as appreciation via PayPal. Thank you!</p>\n");
889 889
 ?>
890 890
 
891 891
 <!-- Start Paypal donation code -->
@@ -904,24 +904,24 @@  discard block
 block discarded – undo
904 904
 <!-- End Paypal donation code -->
905 905
 
906 906
 <?php      
907
-      do_action('script_finished');
908
-      $error=true; // This is a semi-error telling the script is finished
909
-    }
910
-    else
911
-    { if ($delaypersession!=0)
912
-        echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n");
913
-      if (!$ajax) 
914
-        echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n");
915
-
916
-      echo ("<noscript>\n");
917
-      echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&amp;fn=".urlencode($curfilename)."&amp;foffset=$foffset&amp;totalqueries=$totalqueries&amp;delimiter=".urlencode($delimiter)."\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n");
918
-      echo ("</noscript>\n");
907
+	  do_action('script_finished');
908
+	  $error=true; // This is a semi-error telling the script is finished
909
+	}
910
+	else
911
+	{ if ($delaypersession!=0)
912
+		echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n");
913
+	  if (!$ajax) 
914
+		echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n");
915
+
916
+	  echo ("<noscript>\n");
917
+	  echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&amp;fn=".urlencode($curfilename)."&amp;foffset=$foffset&amp;totalqueries=$totalqueries&amp;delimiter=".urlencode($delimiter)."\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n");
918
+	  echo ("</noscript>\n");
919 919
    
920
-      echo ("<p class=\"centr\">Press <b><a href=\"".$_SERVER["PHP_SELF"]."\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n");
921
-    }
920
+	  echo ("<p class=\"centr\">Press <b><a href=\"".$_SERVER["PHP_SELF"]."\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n");
921
+	}
922 922
   }
923 923
   else 
924
-    echo ("<p class=\"error\">Stopped on error</p>\n");
924
+	echo ("<p class=\"error\">Stopped on error</p>\n");
925 925
 
926 926
 skin_close();
927 927
 
@@ -967,7 +967,7 @@  discard block
 block discarded – undo
967 967
 	  die;
968 968
   } 
969 969
   else 
970
-    create_ajax_script();	  
970
+	create_ajax_script();	  
971 971
 }
972 972
 
973 973
 // Anyway put out the output from above
@@ -985,8 +985,8 @@  discard block
 block discarded – undo
985 985
   
986 986
   if (isset($plugin_actions[$tag]))
987 987
   { reset ($plugin_actions[$tag]);
988
-    foreach ($plugin_actions[$tag] as $action)
989
-      call_user_func_array($action, array());
988
+	foreach ($plugin_actions[$tag] as $action)
989
+	  call_user_func_array($action, array());
990 990
   }
991 991
 }
992 992
 
Please login to merge, or discard this patch.
Spacing   +165 added lines, -165 removed lines patch added patch discarded remove patch
@@ -51,28 +51,28 @@  discard block
 block discarded – undo
51 51
 
52 52
 // OPTIONAL SETTINGS 
53 53
 
54
-$filename           = '';     // Specify the dump filename to suppress the file selection dialog
55
-$ajax               = true;   // AJAX mode: import will be done without refreshing the website
56
-$linespersession    = 3000;   // Lines to be executed per one import session
57
-$delaypersession    = 0;      // You can specify a sleep time in milliseconds after each session
54
+$filename           = ''; // Specify the dump filename to suppress the file selection dialog
55
+$ajax               = true; // AJAX mode: import will be done without refreshing the website
56
+$linespersession    = 3000; // Lines to be executed per one import session
57
+$delaypersession    = 0; // You can specify a sleep time in milliseconds after each session
58 58
                               // Works only if JavaScript is activated. Use to reduce server overrun
59 59
 
60 60
 // CSV related settings (only if you use a CSV dump)
61 61
 
62
-$csv_insert_table   = '';     // Destination table for CSV files
63
-$csv_preempty_table = false;  // true: delete all entries from table specified in $csv_insert_table before processing
64
-$csv_delimiter      = ',';    // Field delimiter in CSV file
65
-$csv_add_quotes     = true;   // If your CSV data already have quotes around each field set it to false
66
-$csv_add_slashes    = true;   // If your CSV data already have slashes in front of ' and " set it to false
62
+$csv_insert_table   = ''; // Destination table for CSV files
63
+$csv_preempty_table = false; // true: delete all entries from table specified in $csv_insert_table before processing
64
+$csv_delimiter      = ','; // Field delimiter in CSV file
65
+$csv_add_quotes     = true; // If your CSV data already have quotes around each field set it to false
66
+$csv_add_slashes    = true; // If your CSV data already have slashes in front of ' and " set it to false
67 67
 
68 68
 // Allowed comment markers: lines starting with these strings will be ignored by BigDump
69 69
 
70
-$comment[]='#';                       // Standard comment lines are dropped by default
71
-$comment[]='-- ';
72
-$comment[]='DELIMITER';               // Ignore DELIMITER switch as it's not a valid SQL statement
70
+$comment[] = '#'; // Standard comment lines are dropped by default
71
+$comment[] = '-- ';
72
+$comment[] = 'DELIMITER'; // Ignore DELIMITER switch as it's not a valid SQL statement
73 73
 // $comment[]='---';                  // Uncomment this line if using proprietary dump created by outdated mysqldump
74 74
 // $comment[]='CREATE DATABASE';      // Uncomment this line if your dump contains create database queries in order to ignore them
75
-$comment[]='/*!';                     // Or add your own string to leave out other proprietary things
75
+$comment[] = '/*!'; // Or add your own string to leave out other proprietary things
76 76
 
77 77
 // Pre-queries: SQL queries to be executed at the beginning of each import session
78 78
 
@@ -86,7 +86,7 @@  discard block
 block discarded – undo
86 86
 
87 87
 // String quotes character
88 88
 
89
-$string_quotes = '\'';                  // Change to '"' if your dump file uses double qoutes for strings
89
+$string_quotes = '\''; // Change to '"' if your dump file uses double qoutes for strings
90 90
 
91 91
 // How many lines may be considered to be one query (except text lines)
92 92
 
@@ -103,11 +103,11 @@  discard block
 block discarded – undo
103 103
 if ($ajax)
104 104
   ob_start();
105 105
 
106
-define ('VERSION','0.36b');
107
-define ('DATA_CHUNK_LENGTH',16384);  // How many chars are read per time
108
-define ('TESTMODE',false);           // Set to true to process the file without actually accessing the database
109
-define ('BIGDUMP_DIR',dirname(__FILE__));
110
-define ('PLUGIN_DIR',BIGDUMP_DIR.'/plugins/');
106
+define('VERSION', '0.36b');
107
+define('DATA_CHUNK_LENGTH', 16384); // How many chars are read per time
108
+define('TESTMODE', false); // Set to true to process the file without actually accessing the database
109
+define('BIGDUMP_DIR', dirname(__FILE__));
110
+define('PLUGIN_DIR', BIGDUMP_DIR . '/plugins/');
111 111
 
112 112
 header("Expires: Mon, 1 Dec 2003 01:00:00 GMT");
113 113
 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
@@ -125,7 +125,7 @@  discard block
 block discarded – undo
125 125
 
126 126
 foreach ($_REQUEST as $key => $val) 
127 127
 {
128
-  $val = preg_replace("/[^_A-Za-z0-9-\.&= ;\$]/i",'', $val);
128
+  $val = preg_replace("/[^_A-Za-z0-9-\.&= ;\$]/i", '', $val);
129 129
   $_REQUEST[$key] = $val;
130 130
 }
131 131
 
@@ -301,7 +301,7 @@  discard block
 block discarded – undo
301 301
 }
302 302
 
303 303
 skin_open();
304
-echo ('<h1>BigDump: Staggered MySQL Dump Importer v'.VERSION.'</h1>');
304
+echo ('<h1>BigDump: Staggered MySQL Dump Importer v' . VERSION . '</h1>');
305 305
 skin_close();
306 306
 
307 307
 do_action('after_headline');
@@ -312,24 +312,24 @@  discard block
 block discarded – undo
312 312
 // Check PHP version
313 313
 
314 314
 if (!$error && !function_exists('version_compare'))
315
-{ echo ("<p class=\"error\">PHP version 4.1.0 is required for BigDump to proceed. You have PHP ".phpversion()." installed. Sorry!</p>\n");
316
-  $error=true;
315
+{ echo ("<p class=\"error\">PHP version 4.1.0 is required for BigDump to proceed. You have PHP " . phpversion() . " installed. Sorry!</p>\n");
316
+  $error = true;
317 317
 }
318 318
 
319 319
 // Check if mysql extension is available
320 320
 
321 321
 if (!$error && !function_exists('mysqli_connect'))
322 322
 { echo ("<p class=\"error\">There is no mySQLi extension found in your PHP installation. You can use an older Bigdump version if your PHP supports mySQL extension.</p>\n");
323
-  $error=true;
323
+  $error = true;
324 324
 }
325 325
 
326 326
 // Calculate PHP max upload size (handle settings like 10M or 100K)
327 327
 
328 328
 if (!$error)
329
-{ $upload_max_filesize=ini_get("upload_max_filesize");
330
-  if (preg_match("/([0-9]+)K/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024;
331
-  if (preg_match("/([0-9]+)M/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024*1024;
332
-  if (preg_match("/([0-9]+)G/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024*1024*1024;
329
+{ $upload_max_filesize = ini_get("upload_max_filesize");
330
+  if (preg_match("/([0-9]+)K/i", $upload_max_filesize, $tempregs)) $upload_max_filesize = $tempregs[1] * 1024;
331
+  if (preg_match("/([0-9]+)M/i", $upload_max_filesize, $tempregs)) $upload_max_filesize = $tempregs[1] * 1024 * 1024;
332
+  if (preg_match("/([0-9]+)G/i", $upload_max_filesize, $tempregs)) $upload_max_filesize = $tempregs[1] * 1024 * 1024 * 1024;
333 333
 }
334 334
 
335 335
 // Get the current directory
@@ -346,27 +346,27 @@  discard block
 block discarded – undo
346 346
   $upload_dir=dirname($_SERVER["SCRIPT_FILENAME"]);
347 347
 */
348 348
   
349
-do_action ('script_runs');
349
+do_action('script_runs');
350 350
 
351 351
 // Handle file upload
352 352
 
353 353
 if (!$error && isset($_REQUEST["uploadbutton"]))
354
-{ if (is_uploaded_file($_FILES["dumpfile"]["tmp_name"]) && ($_FILES["dumpfile"]["error"])==0)
354
+{ if (is_uploaded_file($_FILES["dumpfile"]["tmp_name"]) && ($_FILES["dumpfile"]["error"]) == 0)
355 355
   { 
356
-    $uploaded_filename=str_replace(" ","_",$_FILES["dumpfile"]["name"]);
357
-    $uploaded_filename=preg_replace("/[^_A-Za-z0-9-\.]/i",'',$uploaded_filename);
358
-    $uploaded_filepath=str_replace("\\","/",$upload_dir."/".$uploaded_filename);
356
+    $uploaded_filename = str_replace(" ", "_", $_FILES["dumpfile"]["name"]);
357
+    $uploaded_filename = preg_replace("/[^_A-Za-z0-9-\.]/i", '', $uploaded_filename);
358
+    $uploaded_filepath = str_replace("\\", "/", $upload_dir . "/" . $uploaded_filename);
359 359
 
360 360
     do_action('file_uploaded');
361 361
 
362 362
     if (file_exists($uploaded_filename))
363 363
     { echo ("<p class=\"error\">File $uploaded_filename already exist! Delete and upload again!</p>\n");
364 364
     }
365
-    else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename))
365
+    else if (!preg_match("/(\.(sql|gz|csv))$/i", $uploaded_filename))
366 366
     { echo ("<p class=\"error\">You may only upload .sql .gz or .csv files.</p>\n");
367 367
     }
368
-    else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath))
369
-    { echo ("<p class=\"error\">Error moving uploaded file ".$_FILES["dumpfile"]["tmp_name"]." to the $uploaded_filepath</p>\n");
368
+    else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"], $uploaded_filepath))
369
+    { echo ("<p class=\"error\">Error moving uploaded file " . $_FILES["dumpfile"]["tmp_name"] . " to the $uploaded_filepath</p>\n");
370 370
       echo ("<p>Check the directory permissions for $upload_dir (must be 777)!</p>\n");
371 371
     }
372 372
     else
@@ -374,18 +374,18 @@  discard block
 block discarded – undo
374 374
     }
375 375
   }
376 376
   else
377
-  { echo ("<p class=\"error\">Error uploading file ".$_FILES["dumpfile"]["name"]."</p>\n");
377
+  { echo ("<p class=\"error\">Error uploading file " . $_FILES["dumpfile"]["name"] . "</p>\n");
378 378
   }
379 379
 }
380 380
 
381 381
 
382 382
 // Handle file deletion (delete only in the current directory for security reasons)
383 383
 
384
-if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"]!=basename($_SERVER["SCRIPT_FILENAME"]))
385
-{ if (preg_match("/(\.(sql|gz|csv))$/i",$_REQUEST["delete"]) && @unlink($upload_dir.'/'.$_REQUEST["delete"])) 
386
-    echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n");
384
+if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"] != basename($_SERVER["SCRIPT_FILENAME"]))
385
+{ if (preg_match("/(\.(sql|gz|csv))$/i", $_REQUEST["delete"]) && @unlink($upload_dir . '/' . $_REQUEST["delete"])) 
386
+    echo ("<p class=\"success\">" . $_REQUEST["delete"] . " was removed successfully</p>\n");
387 387
   else
388
-    echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n");
388
+    echo ("<p class=\"error\">Can't remove " . $_REQUEST["delete"] . "</p>\n");
389 389
 }
390 390
 
391 391
 // Connect to the database, set charset and execute pre-queries
@@ -394,21 +394,21 @@  discard block
 block discarded – undo
394 394
 { $mysqli = new mysqli($db_server, $db_username, $db_password, $db_name);
395 395
   
396 396
   if (mysqli_connect_error()) 
397
-  { echo ("<p class=\"error\">Database connection failed due to ".mysqli_connect_error()."</p>\n");
397
+  { echo ("<p class=\"error\">Database connection failed due to " . mysqli_connect_error() . "</p>\n");
398 398
     echo ("<p>Edit the database settings in BigDump configuration, or contact your database provider.</p>\n");
399
-    $error=true;
399
+    $error = true;
400 400
   }
401
-  if (!$error && $db_connection_charset!=='')
401
+  if (!$error && $db_connection_charset !== '')
402 402
     $mysqli->query("SET NAMES $db_connection_charset");
403 403
 
404
-  if (!$error && isset ($pre_query) && sizeof ($pre_query)>0)
404
+  if (!$error && isset ($pre_query) && sizeof($pre_query) > 0)
405 405
   { reset($pre_query);
406 406
     foreach ($pre_query as $pre_query_value)
407 407
     {	if (!$mysqli->query($pre_query_value))
408 408
     	{ echo ("<p class=\"error\">Error with pre-query.</p>\n");
409
-      	echo ("<p>Query: ".trim(nl2br(htmlentities($pre_query_value)))."</p>\n");
410
-      	echo ("<p>MySQL: ".$mysqli->error."</p>\n");
411
-      	$error=true;
409
+      	echo ("<p>Query: " . trim(nl2br(htmlentities($pre_query_value))) . "</p>\n");
410
+      	echo ("<p>MySQL: " . $mysqli->error . "</p>\n");
411
+      	$error = true;
412 412
       	break;
413 413
      }
414 414
     }
@@ -425,38 +425,38 @@  discard block
 block discarded – undo
425 425
 
426 426
 // List uploaded files in multifile mode
427 427
 
428
-if (!$error && !isset($_REQUEST["fn"]) && $filename=="")
428
+if (!$error && !isset($_REQUEST["fn"]) && $filename == "")
429 429
 { if ($dirhandle = opendir($upload_dir)) 
430 430
   { 
431
-    $files=array();
431
+    $files = array();
432 432
     while (false !== ($files[] = readdir($dirhandle)));
433 433
     closedir($dirhandle);
434
-    $dirhead=false;
434
+    $dirhead = false;
435 435
 
436
-    if (sizeof($files)>0)
436
+    if (sizeof($files) > 0)
437 437
     { 
438 438
       sort($files);
439 439
       foreach ($files as $dirfile)
440 440
       { 
441
-        if ($dirfile != "." && $dirfile != ".." && $dirfile!=basename($_SERVER["SCRIPT_FILENAME"]) && preg_match("/\.(sql|gz|csv)$/i",$dirfile))
441
+        if ($dirfile != "." && $dirfile != ".." && $dirfile != basename($_SERVER["SCRIPT_FILENAME"]) && preg_match("/\.(sql|gz|csv)$/i", $dirfile))
442 442
         { if (!$dirhead)
443 443
           { echo ("<table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\">\n");
444 444
             echo ("<tr><th>Filename</th><th>Size</th><th>Date&amp;Time</th><th>Type</th><th>&nbsp;</th><th>&nbsp;</th>\n");
445
-            $dirhead=true;
445
+            $dirhead = true;
446 446
           }
447
-          echo ("<tr><td>$dirfile</td><td class=\"right\">".filesize($upload_dir.'/'.$dirfile)."</td><td>".date ("Y-m-d H:i:s", filemtime($upload_dir.'/'.$dirfile))."</td>");
447
+          echo ("<tr><td>$dirfile</td><td class=\"right\">" . filesize($upload_dir . '/' . $dirfile) . "</td><td>" . date("Y-m-d H:i:s", filemtime($upload_dir . '/' . $dirfile)) . "</td>");
448 448
 
449
-          if (preg_match("/\.sql$/i",$dirfile))
449
+          if (preg_match("/\.sql$/i", $dirfile))
450 450
             echo ("<td>SQL</td>");
451
-          elseif (preg_match("/\.gz$/i",$dirfile))
451
+          elseif (preg_match("/\.gz$/i", $dirfile))
452 452
             echo ("<td>GZip</td>");
453
-          elseif (preg_match("/\.csv$/i",$dirfile))
453
+          elseif (preg_match("/\.csv$/i", $dirfile))
454 454
             echo ("<td>CSV</td>");
455 455
           else
456 456
             echo ("<td>Misc</td>");
457 457
 
458
-          if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile))
459
-            echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
458
+          if ((preg_match("/\.gz$/i", $dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i", $dirfile) || preg_match("/\.csv$/i", $dirfile))
459
+            echo ("<td><a href=\"" . $_SERVER["PHP_SELF"] . "?start=1&amp;fn=" . urlencode($dirfile) . "&amp;foffset=0&amp;totalqueries=0&amp;delimiter=" . urlencode($delimiter) . "\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"" . $_SERVER["PHP_SELF"] . "?delete=" . urlencode($dirfile) . "\">Delete file</a></td></tr>\n");
460 460
 // TODO: echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a></td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
461 461
           else
462 462
             echo ("<td>&nbsp;</td>\n <td>&nbsp;</td></tr>\n");
@@ -471,35 +471,35 @@  discard block
 block discarded – undo
471 471
   }
472 472
   else
473 473
   { echo ("<p class=\"error\">Error listing directory $upload_dir</p>\n");
474
-    $error=true;
474
+    $error = true;
475 475
   }
476 476
 }
477 477
 
478 478
 
479 479
 // Single file mode
480 480
 
481
-if (!$error && !isset ($_REQUEST["fn"]) && $filename!="")
482
-{ echo ("<p><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($filename)."&amp;foffset=0&amp;totalqueries=0\">Start Import</a> from $filename into $db_name at $db_server</p>\n");
481
+if (!$error && !isset ($_REQUEST["fn"]) && $filename != "")
482
+{ echo ("<p><a href=\"" . $_SERVER["PHP_SELF"] . "?start=1&amp;fn=" . urlencode($filename) . "&amp;foffset=0&amp;totalqueries=0\">Start Import</a> from $filename into $db_name at $db_server</p>\n");
483 483
 }
484 484
 
485 485
 
486 486
 // File Upload Form
487 487
 
488
-if (!$error && !isset($_REQUEST["fn"]) && $filename=="")
488
+if (!$error && !isset($_REQUEST["fn"]) && $filename == "")
489 489
 { 
490 490
 
491 491
 // Test permissions on working directory
492 492
 
493
-  do { $tempfilename=$upload_dir.'/'.time().".tmp"; } while (file_exists($tempfilename)); 
494
-  if (!($tempfile=@fopen($tempfilename,"w")))
493
+  do { $tempfilename = $upload_dir . '/' . time() . ".tmp"; } while (file_exists($tempfilename)); 
494
+  if (!($tempfile = @fopen($tempfilename, "w")))
495 495
   { echo ("<p>Upload form disabled. Permissions for the working directory <i>$upload_dir</i> <b>must be set writable for the webserver</b> in order ");
496 496
     echo ("to upload files here. Alternatively you can upload your dump files via FTP.</p>\n");
497 497
   }
498 498
   else
499 499
   { fclose($tempfile);
500
-    unlink ($tempfilename);
500
+    unlink($tempfilename);
501 501
  
502
-    echo ("<p>You can now upload your dump file up to $upload_max_filesize bytes (".round ($upload_max_filesize/1024/1024)." Mbytes)  ");
502
+    echo ("<p>You can now upload your dump file up to $upload_max_filesize bytes (" . round($upload_max_filesize / 1024 / 1024) . " Mbytes)  ");
503 503
     echo ("directly from your browser to the server. Alternatively you can upload your dump files of any size via FTP.</p>\n");
504 504
 ?>
505 505
 <form method="POST" action="<?php echo ($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data">
@@ -533,44 +533,44 @@  discard block
 block discarded – undo
533 533
 
534 534
 // Set current filename ($filename overrides $_REQUEST["fn"] if set)
535 535
 
536
-  if ($filename!="")
537
-    $curfilename=$filename;
536
+  if ($filename != "")
537
+    $curfilename = $filename;
538 538
   else if (isset($_REQUEST["fn"]))
539
-    $curfilename=urldecode($_REQUEST["fn"]);
539
+    $curfilename = urldecode($_REQUEST["fn"]);
540 540
   else
541
-    $curfilename="";
541
+    $curfilename = "";
542 542
 
543 543
 // Recognize GZip filename
544 544
 
545
-  if (preg_match("/\.gz$/i",$curfilename)) 
546
-    $gzipmode=true;
545
+  if (preg_match("/\.gz$/i", $curfilename)) 
546
+    $gzipmode = true;
547 547
   else
548
-    $gzipmode=false;
548
+    $gzipmode = false;
549 549
 
550
-  if ((!$gzipmode && !$file=@fopen($upload_dir.'/'.$curfilename,"r")) || ($gzipmode && !$file=@gzopen($upload_dir.'/'.$curfilename,"r")))
551
-  { echo ("<p class=\"error\">Can't open ".$curfilename." for import</p>\n");
552
-    echo ("<p>Please, check that your dump file name contains only alphanumerical characters, and rename it accordingly, for example: $curfilename.".
553
-           "<br>Or, specify \$filename in bigdump.php with the full filename. ".
550
+  if ((!$gzipmode && !$file = @fopen($upload_dir . '/' . $curfilename, "r")) || ($gzipmode && !$file = @gzopen($upload_dir . '/' . $curfilename, "r")))
551
+  { echo ("<p class=\"error\">Can't open " . $curfilename . " for import</p>\n");
552
+    echo ("<p>Please, check that your dump file name contains only alphanumerical characters, and rename it accordingly, for example: $curfilename." .
553
+           "<br>Or, specify \$filename in bigdump.php with the full filename. " .
554 554
            "<br>Or, you have to upload the $curfilename to the server first.</p>\n");
555
-    $error=true;
555
+    $error = true;
556 556
   }
557 557
 
558 558
 // Get the file size (can't do it fast on gzipped files, no idea how)
559 559
 
560
-  else if ((!$gzipmode && @fseek($file, 0, SEEK_END)==0) || ($gzipmode && @gzseek($file, 0)==0))
560
+  else if ((!$gzipmode && @fseek($file, 0, SEEK_END) == 0) || ($gzipmode && @gzseek($file, 0) == 0))
561 561
   { if (!$gzipmode) $filesize = ftell($file);
562
-    else $filesize = gztell($file);                   // Always zero, ignore
562
+    else $filesize = gztell($file); // Always zero, ignore
563 563
   }
564 564
   else
565 565
   { echo ("<p class=\"error\">I can't seek into $curfilename</p>\n");
566
-    $error=true;
566
+    $error = true;
567 567
   }
568 568
 
569 569
 // Stop if csv file is used, but $csv_insert_table is not set
570 570
 
571
-  if (!$error && ($csv_insert_table == "") && (preg_match("/(\.csv)$/i",$curfilename)))
571
+  if (!$error && ($csv_insert_table == "") && (preg_match("/(\.csv)$/i", $curfilename)))
572 572
   { echo ("<p class=\"error\">You have to specify \$csv_insert_table when using a CSV file. </p>\n");
573
-    $error=true;
573
+    $error = true;
574 574
   }
575 575
 }
576 576
 
@@ -579,7 +579,7 @@  discard block
 block discarded – undo
579 579
 // START IMPORT SESSION HERE
580 580
 // *******************************************************************************************
581 581
 
582
-if (!$error && isset($_REQUEST["start"]) && isset($_REQUEST["foffset"]) && preg_match("/(\.(sql|gz|csv))$/i",$curfilename))
582
+if (!$error && isset($_REQUEST["start"]) && isset($_REQUEST["foffset"]) && preg_match("/(\.(sql|gz|csv))$/i", $curfilename))
583 583
 {
584 584
 
585 585
   do_action('session_start');
@@ -588,7 +588,7 @@  discard block
 block discarded – undo
588 588
 
589 589
   if (!is_numeric($_REQUEST["start"]) || !is_numeric($_REQUEST["foffset"]))
590 590
   { echo ("<p class=\"error\">UNEXPECTED: Non-numeric values for start and foffset</p>\n");
591
-    $error=true;
591
+    $error = true;
592 592
   }
593 593
   else
594 594
   {	$_REQUEST["start"]   = floor($_REQUEST["start"]);
@@ -602,14 +602,14 @@  discard block
 block discarded – undo
602 602
 
603 603
 // Empty CSV table if requested
604 604
 
605
-  if (!$error && $_REQUEST["start"]==1 && $csv_insert_table != "" && $csv_preempty_table)
605
+  if (!$error && $_REQUEST["start"] == 1 && $csv_insert_table != "" && $csv_preempty_table)
606 606
   { 
607 607
     $query = "DELETE FROM `$csv_insert_table`";
608 608
     if (!TESTMODE && !$mysqli->query(trim($query)))
609 609
     { echo ("<p class=\"error\">Error when deleting entries from $csv_insert_table.</p>\n");
610
-      echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n");
611
-      echo ("<p>MySQL: ".$mysqli->error."</p>\n");
612
-      $error=true;
610
+      echo ("<p>Query: " . trim(nl2br(htmlentities($query))) . "</p>\n");
611
+      echo ("<p>MySQL: " . $mysqli->error . "</p>\n");
612
+      $error = true;
613 613
     }
614 614
   }
615 615
   
@@ -619,95 +619,95 @@  discard block
 block discarded – undo
619 619
   { skin_open();
620 620
     if (TESTMODE) 
621 621
       echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n");
622
-    echo ("<p class=\"centr\">Processing file: <b>".$curfilename."</b></p>\n");
623
-    echo ("<p class=\"smlcentr\">Starting from line: ".$_REQUEST["start"]."</p>\n");	
622
+    echo ("<p class=\"centr\">Processing file: <b>" . $curfilename . "</b></p>\n");
623
+    echo ("<p class=\"smlcentr\">Starting from line: " . $_REQUEST["start"] . "</p>\n");	
624 624
     skin_close();
625 625
   }
626 626
 
627 627
 // Check $_REQUEST["foffset"] upon $filesize (can't do it on gzipped files)
628 628
 
629
-  if (!$error && !$gzipmode && $_REQUEST["foffset"]>$filesize)
629
+  if (!$error && !$gzipmode && $_REQUEST["foffset"] > $filesize)
630 630
   { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer behind the end of file</p>\n");
631
-    $error=true;
631
+    $error = true;
632 632
   }
633 633
 
634 634
 // Set file pointer to $_REQUEST["foffset"]
635 635
 
636
-  if (!$error && ((!$gzipmode && fseek($file, $_REQUEST["foffset"])!=0) || ($gzipmode && gzseek($file, $_REQUEST["foffset"])!=0)))
637
-  { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer to offset: ".$_REQUEST["foffset"]."</p>\n");
638
-    $error=true;
636
+  if (!$error && ((!$gzipmode && fseek($file, $_REQUEST["foffset"]) != 0) || ($gzipmode && gzseek($file, $_REQUEST["foffset"]) != 0)))
637
+  { echo ("<p class=\"error\">UNEXPECTED: Can't set file pointer to offset: " . $_REQUEST["foffset"] . "</p>\n");
638
+    $error = true;
639 639
   }
640 640
 
641 641
 // Start processing queries from $file
642 642
 
643 643
   if (!$error)
644
-  { $query="";
645
-    $queries=0;
646
-    $totalqueries=$_REQUEST["totalqueries"];
647
-    $linenumber=$_REQUEST["start"];
648
-    $querylines=0;
649
-    $inparents=false;
644
+  { $query = "";
645
+    $queries = 0;
646
+    $totalqueries = $_REQUEST["totalqueries"];
647
+    $linenumber = $_REQUEST["start"];
648
+    $querylines = 0;
649
+    $inparents = false;
650 650
 
651 651
 // Stay processing as long as the $linespersession is not reached or the query is still incomplete
652 652
 
653
-    while ($linenumber<$_REQUEST["start"]+$linespersession || $query!="")
653
+    while ($linenumber < $_REQUEST["start"] + $linespersession || $query != "")
654 654
     {
655 655
 
656 656
 // Read the whole next line
657 657
 
658 658
       $dumpline = "";
659
-      while (!feof($file) && substr ($dumpline, -1) != "\n" && substr ($dumpline, -1) != "\r")
659
+      while (!feof($file) && substr($dumpline, -1) != "\n" && substr($dumpline, -1) != "\r")
660 660
       { if (!$gzipmode)
661 661
           $dumpline .= fgets($file, DATA_CHUNK_LENGTH);
662 662
         else
663 663
           $dumpline .= gzgets($file, DATA_CHUNK_LENGTH);
664 664
       }
665
-      if ($dumpline==="") break;
665
+      if ($dumpline === "") break;
666 666
 
667 667
 // Remove UTF8 Byte Order Mark at the file beginning if any
668 668
 
669
-      if ($_REQUEST["foffset"]==0)
670
-        $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline);
669
+      if ($_REQUEST["foffset"] == 0)
670
+        $dumpline = preg_replace('|^\xEF\xBB\xBF|', '', $dumpline);
671 671
 
672 672
 // Create an SQL query from CSV line
673 673
 
674
-      if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i",$curfilename)))
674
+      if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i", $curfilename)))
675 675
       {
676 676
         if ($csv_add_slashes)
677 677
           $dumpline = addslashes($dumpline);
678
-        $dumpline = explode($csv_delimiter,$dumpline);
678
+        $dumpline = explode($csv_delimiter, $dumpline);
679 679
         if ($csv_add_quotes)
680
-          $dumpline = "'".implode("','",$dumpline)."'";
680
+          $dumpline = "'" . implode("','", $dumpline) . "'";
681 681
         else
682
-          $dumpline = implode(",",$dumpline);
683
-        $dumpline = 'INSERT INTO '.$csv_insert_table.' VALUES ('.$dumpline.');';
682
+          $dumpline = implode(",", $dumpline);
683
+        $dumpline = 'INSERT INTO ' . $csv_insert_table . ' VALUES (' . $dumpline . ');';
684 684
       }
685 685
 
686 686
 // Handle DOS and Mac encoded linebreaks (I don't know if it really works on Win32 or Mac Servers)
687 687
 
688
-      $dumpline=str_replace("\r\n", "\n", $dumpline);
689
-      $dumpline=str_replace("\r", "\n", $dumpline);
688
+      $dumpline = str_replace("\r\n", "\n", $dumpline);
689
+      $dumpline = str_replace("\r", "\n", $dumpline);
690 690
             
691 691
 // DIAGNOSTIC
692 692
 // echo ("<p>Line $linenumber: $dumpline</p>\n");
693 693
 
694 694
 // Recognize delimiter statement
695 695
 
696
-      if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0)
697
-        $delimiter = str_replace ("DELIMITER ","",trim($dumpline));
696
+      if (!$inparents && strpos($dumpline, "DELIMITER ") === 0)
697
+        $delimiter = str_replace("DELIMITER ", "", trim($dumpline));
698 698
 
699 699
 // Skip comments and blank lines only if NOT in parents
700 700
 
701 701
       if (!$inparents)
702
-      { $skipline=false;
702
+      { $skipline = false;
703 703
         reset($comment);
704 704
         foreach ($comment as $comment_value)
705 705
         { 
706 706
 
707 707
 // DIAGNOSTIC
708 708
 //          echo ($comment_value);
709
-          if (trim($dumpline)=="" || strpos (trim($dumpline), $comment_value) === 0)
710
-          { $skipline=true;
709
+          if (trim($dumpline) == "" || strpos(trim($dumpline), $comment_value) === 0)
710
+          { $skipline = true;
711 711
             break;
712 712
           }
713 713
         }
@@ -723,13 +723,13 @@  discard block
 block discarded – undo
723 723
 
724 724
 // Remove double back-slashes from the dumpline prior to count the quotes ('\\' can only be within strings)
725 725
       
726
-      $dumpline_deslashed = str_replace ("\\\\","",$dumpline);
726
+      $dumpline_deslashed = str_replace("\\\\", "", $dumpline);
727 727
 
728 728
 // Count ' and \' (or " and \") in the dumpline to avoid query break within a text field ending by $delimiter
729 729
 
730
-      $parents=substr_count ($dumpline_deslashed, $string_quotes)-substr_count ($dumpline_deslashed, "\\$string_quotes");
730
+      $parents = substr_count($dumpline_deslashed, $string_quotes) - substr_count($dumpline_deslashed, "\\$string_quotes");
731 731
       if ($parents % 2 != 0)
732
-        $inparents=!$inparents;
732
+        $inparents = !$inparents;
733 733
 
734 734
 // Add the line to query
735 735
 
@@ -742,15 +742,15 @@  discard block
 block discarded – undo
742 742
       
743 743
 // Stop if query contains more lines as defined by $max_query_lines
744 744
 
745
-      if ($querylines>$max_query_lines)
745
+      if ($querylines > $max_query_lines)
746 746
       {
747 747
         echo ("<p class=\"error\">Stopped at the line $linenumber. </p>");
748
-        echo ("<p>At this place the current query includes more than ".$max_query_lines." dump lines. That can happen if your dump file was ");
748
+        echo ("<p>At this place the current query includes more than " . $max_query_lines . " dump lines. That can happen if your dump file was ");
749 749
         echo ("created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains ");
750 750
         echo ("extended inserts or very long procedure definitions. Please read the <a href=\"http://www.ozerov.de/bigdump/usage/\">BigDump usage notes</a> ");
751 751
         echo ("for more infos. Ask for our support services ");
752 752
         echo ("in order to handle dump files containing extended inserts.</p>\n");
753
-        $error=true;
753
+        $error = true;
754 754
         break;
755 755
       }
756 756
 
@@ -761,27 +761,27 @@  discard block
 block discarded – undo
761 761
 // echo ("<p>In Parents: ".($inparents?"true":"false")."</p>\n");
762 762
 // echo ("<p>Line: $dumpline</p>\n");
763 763
 
764
-      if ((preg_match('/'.preg_quote($delimiter,'/').'$/',trim($dumpline)) || $delimiter=='') && !$inparents)
764
+      if ((preg_match('/' . preg_quote($delimiter, '/') . '$/', trim($dumpline)) || $delimiter == '') && !$inparents)
765 765
       { 
766 766
 
767 767
 // Cut off delimiter of the end of the query
768 768
 
769
-        $query = substr(trim($query),0,-1*strlen($delimiter));
769
+        $query = substr(trim($query), 0, -1 * strlen($delimiter));
770 770
 
771 771
 // DIAGNOSTIC
772 772
 // echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n");
773 773
 
774 774
         if (!TESTMODE && !$mysqli->query($query))
775
-        { echo ("<p class=\"error\">Error at the line $linenumber: ". trim($dumpline)."</p>\n");
776
-          echo ("<p>Query: ".trim(nl2br(htmlentities($query)))."</p>\n");
777
-          echo ("<p>MySQL: ".$mysqli->error."</p>\n");
778
-          $error=true;
775
+        { echo ("<p class=\"error\">Error at the line $linenumber: " . trim($dumpline) . "</p>\n");
776
+          echo ("<p>Query: " . trim(nl2br(htmlentities($query))) . "</p>\n");
777
+          echo ("<p>MySQL: " . $mysqli->error . "</p>\n");
778
+          $error = true;
779 779
           break;
780 780
         }
781 781
         $totalqueries++;
782 782
         $queries++;
783
-        $query="";
784
-        $querylines=0;
783
+        $query = "";
784
+        $querylines = 0;
785 785
       }
786 786
       $linenumber++;
787 787
     }
@@ -796,7 +796,7 @@  discard block
 block discarded – undo
796 796
       $foffset = gztell($file);
797 797
     if (!$foffset)
798 798
     { echo ("<p class=\"error\">UNEXPECTED: Can't read the file pointer offset</p>\n");
799
-      $error=true;
799
+      $error = true;
800 800
     }
801 801
   }
802 802
 
@@ -808,8 +808,8 @@  discard block
 block discarded – undo
808 808
 
809 809
   if (!$error)
810 810
   { 
811
-    $lines_this   = $linenumber-$_REQUEST["start"];
812
-    $lines_done   = $linenumber-1;
811
+    $lines_this   = $linenumber - $_REQUEST["start"];
812
+    $lines_done   = $linenumber - 1;
813 813
     $lines_togo   = ' ? ';
814 814
     $lines_tota   = ' ? ';
815 815
     
@@ -818,35 +818,35 @@  discard block
 block discarded – undo
818 818
     $queries_togo = ' ? ';
819 819
     $queries_tota = ' ? ';
820 820
 
821
-    $bytes_this   = $foffset-$_REQUEST["foffset"];
821
+    $bytes_this   = $foffset - $_REQUEST["foffset"];
822 822
     $bytes_done   = $foffset;
823
-    $kbytes_this  = round($bytes_this/1024,2);
824
-    $kbytes_done  = round($bytes_done/1024,2);
825
-    $mbytes_this  = round($kbytes_this/1024,2);
826
-    $mbytes_done  = round($kbytes_done/1024,2);
823
+    $kbytes_this  = round($bytes_this / 1024, 2);
824
+    $kbytes_done  = round($bytes_done / 1024, 2);
825
+    $mbytes_this  = round($kbytes_this / 1024, 2);
826
+    $mbytes_done  = round($kbytes_done / 1024, 2);
827 827
    
828 828
     if (!$gzipmode)
829 829
     {
830
-      $bytes_togo  = $filesize-$foffset;
830
+      $bytes_togo  = $filesize - $foffset;
831 831
       $bytes_tota  = $filesize;
832
-      $kbytes_togo = round($bytes_togo/1024,2);
833
-      $kbytes_tota = round($bytes_tota/1024,2);
834
-      $mbytes_togo = round($kbytes_togo/1024,2);
835
-      $mbytes_tota = round($kbytes_tota/1024,2);
832
+      $kbytes_togo = round($bytes_togo / 1024, 2);
833
+      $kbytes_tota = round($bytes_tota / 1024, 2);
834
+      $mbytes_togo = round($kbytes_togo / 1024, 2);
835
+      $mbytes_tota = round($kbytes_tota / 1024, 2);
836 836
       
837
-      $pct_this   = ceil($bytes_this/$filesize*100);
838
-      $pct_done   = ceil($foffset/$filesize*100);
837
+      $pct_this   = ceil($bytes_this / $filesize * 100);
838
+      $pct_done   = ceil($foffset / $filesize * 100);
839 839
       $pct_togo   = 100 - $pct_done;
840 840
       $pct_tota   = 100;
841 841
 
842
-      if ($bytes_togo==0) 
842
+      if ($bytes_togo == 0) 
843 843
       { $lines_togo   = '0'; 
844
-        $lines_tota   = $linenumber-1; 
844
+        $lines_tota   = $linenumber - 1; 
845 845
         $queries_togo = '0'; 
846 846
         $queries_tota = $totalqueries; 
847 847
       }
848 848
 
849
-      $pct_bar    = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>";
849
+      $pct_bar = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>";
850 850
     }
851 851
     else
852 852
     {
@@ -861,7 +861,7 @@  discard block
 block discarded – undo
861 861
       $pct_done    = ' ? ';
862 862
       $pct_togo    = ' ? ';
863 863
       $pct_tota    = 100;
864
-      $pct_bar     = str_replace(' ','&nbsp;','<tt>[         Not available for gzipped files          ]</tt>');
864
+      $pct_bar     = str_replace(' ', '&nbsp;', '<tt>[         Not available for gzipped files          ]</tt>');
865 865
     }
866 866
     
867 867
     echo ("
@@ -881,7 +881,7 @@  discard block
 block discarded – undo
881 881
 
882 882
 // Finish message and restart the script
883 883
 
884
-    if ($linenumber<$_REQUEST["start"]+$linespersession)
884
+    if ($linenumber < $_REQUEST["start"] + $linespersession)
885 885
     { echo ("<p class=\"successcentr\">Congratulations: End of file reached, assuming OK</p>\n");
886 886
       echo ("<p class=\"successcentr\">IMPORTANT: REMOVE YOUR DUMP FILE and BIGDUMP SCRIPT FROM SERVER NOW!</p>\n");
887 887
       echo ("<p class=\"centr\">Thank you for using this tool! Please rate <a href=\"http://www.hotscripts.com/listing/bigdump/?RID=403\" target=\"_blank\">Bigdump at Hotscripts.com</a></p>\n");
@@ -905,19 +905,19 @@  discard block
 block discarded – undo
905 905
 
906 906
 <?php      
907 907
       do_action('script_finished');
908
-      $error=true; // This is a semi-error telling the script is finished
908
+      $error = true; // This is a semi-error telling the script is finished
909 909
     }
910 910
     else
911
-    { if ($delaypersession!=0)
911
+    { if ($delaypersession != 0)
912 912
         echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n");
913 913
       if (!$ajax) 
914
-        echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n");
914
+        echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"" . $_SERVER["PHP_SELF"] . "?start=$linenumber&fn=" . urlencode($curfilename) . "&foffset=$foffset&totalqueries=$totalqueries&delimiter=" . urlencode($delimiter) . "\";',500+$delaypersession);</script>\n");
915 915
 
916 916
       echo ("<noscript>\n");
917
-      echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&amp;fn=".urlencode($curfilename)."&amp;foffset=$foffset&amp;totalqueries=$totalqueries&amp;delimiter=".urlencode($delimiter)."\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n");
917
+      echo ("<p class=\"centr\"><a href=\"" . $_SERVER["PHP_SELF"] . "?start=$linenumber&amp;fn=" . urlencode($curfilename) . "&amp;foffset=$foffset&amp;totalqueries=$totalqueries&amp;delimiter=" . urlencode($delimiter) . "\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n");
918 918
       echo ("</noscript>\n");
919 919
    
920
-      echo ("<p class=\"centr\">Press <b><a href=\"".$_SERVER["PHP_SELF"]."\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n");
920
+      echo ("<p class=\"centr\">Press <b><a href=\"" . $_SERVER["PHP_SELF"] . "\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n");
921 921
     }
922 922
   }
923 923
   else 
@@ -928,7 +928,7 @@  discard block
 block discarded – undo
928 928
 }
929 929
 
930 930
 if ($error)
931
-  echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."\">Start from the beginning</a> (DROP the old tables before restarting)</p>\n");
931
+  echo ("<p class=\"centr\"><a href=\"" . $_SERVER["PHP_SELF"] . "\">Start from the beginning</a> (DROP the old tables before restarting)</p>\n");
932 932
 
933 933
 if ($mysqli) $mysqli->close();
934 934
 if ($file && !$gzipmode) fclose($file);
@@ -984,7 +984,7 @@  discard block
 block discarded – undo
984 984
 { global $plugin_actions;
985 985
   
986 986
   if (isset($plugin_actions[$tag]))
987
-  { reset ($plugin_actions[$tag]);
987
+  { reset($plugin_actions[$tag]);
988 988
     foreach ($plugin_actions[$tag] as $action)
989 989
       call_user_func_array($action, array());
990 990
   }
@@ -1008,7 +1008,7 @@  discard block
 block discarded – undo
1008 1008
 				 $bytes_this, $bytes_done, $bytes_togo, $bytes_tota,
1009 1009
 				 $kbytes_this, $kbytes_done, $kbytes_togo, $kbytes_tota,
1010 1010
 				 $mbytes_this, $mbytes_done, $mbytes_togo, $mbytes_tota,
1011
-				 $pct_this, $pct_done, $pct_togo, $pct_tota,$pct_bar;
1011
+				 $pct_this, $pct_done, $pct_togo, $pct_tota, $pct_bar;
1012 1012
 
1013 1013
 	header('Content-Type: application/xml');
1014 1014
 	header('Cache-Control: no-cache');
@@ -1055,7 +1055,7 @@  discard block
 block discarded – undo
1055 1055
 	echo "<elem22>$pct_done</elem22>";
1056 1056
 	echo "<elem23>$pct_togo</elem23>";
1057 1057
 	echo "<elem24>$pct_tota</elem24>";
1058
-	echo "<elem_bar>".htmlentities($pct_bar)."</elem_bar>";
1058
+	echo "<elem_bar>" . htmlentities($pct_bar) . "</elem_bar>";
1059 1059
 				
1060 1060
 	echo "</root>";		
1061 1061
 }
@@ -1158,7 +1158,7 @@  discard block
 block discarded – undo
1158 1158
 	// First Ajax request from initial page
1159 1159
 
1160 1160
 	var http_request = false;
1161
-	var url_request =  get_url(<?php echo ($linenumber.',"'.urlencode($curfilename).'",'.$foffset.','.$totalqueries.',"'.urlencode($delimiter).'"') ;?>);
1161
+	var url_request =  get_url(<?php echo ($linenumber . ',"' . urlencode($curfilename) . '",' . $foffset . ',' . $totalqueries . ',"' . urlencode($delimiter) . '"'); ?>);
1162 1162
 	window.setTimeout("makeRequest(url_request)",500+<?php echo $delaypersession; ?>);
1163 1163
 	</script>
1164 1164
 
Please login to merge, or discard this patch.
Braces   +142 added lines, -112 removed lines patch added patch discarded remove patch
@@ -100,8 +100,9 @@  discard block
 block discarded – undo
100 100
 // If not familiar with PHP please don't change anything below this line
101 101
 // *******************************************************************************************
102 102
 
103
-if ($ajax)
104
-  ob_start();
103
+if ($ajax) {
104
+  ob_start();
105
+}
105 106
 
106 107
 define ('VERSION','0.36b');
107 108
 define ('DATA_CHUNK_LENGTH',16384);  // How many chars are read per time
@@ -118,8 +119,9 @@  discard block
 block discarded – undo
118 119
 @ini_set('auto_detect_line_endings', true);
119 120
 @set_time_limit(0);
120 121
 
121
-if (function_exists("date_default_timezone_set") && function_exists("date_default_timezone_get"))
122
-  @date_default_timezone_set(@date_default_timezone_get());
122
+if (function_exists("date_default_timezone_set") && function_exists("date_default_timezone_get")) {
123
+  @date_default_timezone_set(@date_default_timezone_get());
124
+}
123 125
 
124 126
 // Clean and strip anything we don't want from user's input [0.27b]
125 127
 
@@ -327,10 +329,16 @@  discard block
 block discarded – undo
327 329
 
328 330
 if (!$error)
329 331
 { $upload_max_filesize=ini_get("upload_max_filesize");
330
-  if (preg_match("/([0-9]+)K/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024;
331
-  if (preg_match("/([0-9]+)M/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024*1024;
332
-  if (preg_match("/([0-9]+)G/i",$upload_max_filesize,$tempregs)) $upload_max_filesize=$tempregs[1]*1024*1024*1024;
333
-}
332
+  if (preg_match("/([0-9]+)K/i",$upload_max_filesize,$tempregs)) {
333
+  	$upload_max_filesize=$tempregs[1]*1024;
334
+  }
335
+  if (preg_match("/([0-9]+)M/i",$upload_max_filesize,$tempregs)) {
336
+  	$upload_max_filesize=$tempregs[1]*1024*1024;
337
+  }
338
+  if (preg_match("/([0-9]+)G/i",$upload_max_filesize,$tempregs)) {
339
+  	$upload_max_filesize=$tempregs[1]*1024*1024*1024;
340
+  }
341
+  }
334 342
 
335 343
 // Get the current directory
336 344
 /*
@@ -361,19 +369,15 @@  discard block
 block discarded – undo
361 369
 
362 370
     if (file_exists($uploaded_filename))
363 371
     { echo ("<p class=\"error\">File $uploaded_filename already exist! Delete and upload again!</p>\n");
364
-    }
365
-    else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename))
372
+    } else if (!preg_match("/(\.(sql|gz|csv))$/i",$uploaded_filename))
366 373
     { echo ("<p class=\"error\">You may only upload .sql .gz or .csv files.</p>\n");
367
-    }
368
-    else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath))
374
+    } else if (!@move_uploaded_file($_FILES["dumpfile"]["tmp_name"],$uploaded_filepath))
369 375
     { echo ("<p class=\"error\">Error moving uploaded file ".$_FILES["dumpfile"]["tmp_name"]." to the $uploaded_filepath</p>\n");
370 376
       echo ("<p>Check the directory permissions for $upload_dir (must be 777)!</p>\n");
371
-    }
372
-    else
377
+    } else
373 378
     { echo ("<p class=\"success\">Uploaded file saved as $uploaded_filename</p>\n");
374 379
     }
375
-  }
376
-  else
380
+  } else
377 381
   { echo ("<p class=\"error\">Error uploading file ".$_FILES["dumpfile"]["name"]."</p>\n");
378 382
   }
379 383
 }
@@ -382,11 +386,12 @@  discard block
 block discarded – undo
382 386
 // Handle file deletion (delete only in the current directory for security reasons)
383 387
 
384 388
 if (!$error && isset($_REQUEST["delete"]) && $_REQUEST["delete"]!=basename($_SERVER["SCRIPT_FILENAME"]))
385
-{ if (preg_match("/(\.(sql|gz|csv))$/i",$_REQUEST["delete"]) && @unlink($upload_dir.'/'.$_REQUEST["delete"])) 
386
-    echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n");
387
-  else
388
-    echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n");
389
-}
389
+{ if (preg_match("/(\.(sql|gz|csv))$/i",$_REQUEST["delete"]) && @unlink($upload_dir.'/'.$_REQUEST["delete"])) {
390
+    echo ("<p class=\"success\">".$_REQUEST["delete"]." was removed successfully</p>\n");
391
+} else {
392
+      echo ("<p class=\"error\">Can't remove ".$_REQUEST["delete"]."</p>\n");
393
+  }
394
+  }
390 395
 
391 396
 // Connect to the database, set charset and execute pre-queries
392 397
 
@@ -398,8 +403,9 @@  discard block
 block discarded – undo
398 403
     echo ("<p>Edit the database settings in BigDump configuration, or contact your database provider.</p>\n");
399 404
     $error=true;
400 405
   }
401
-  if (!$error && $db_connection_charset!=='')
402
-    $mysqli->query("SET NAMES $db_connection_charset");
406
+  if (!$error && $db_connection_charset!=='') {
407
+      $mysqli->query("SET NAMES $db_connection_charset");
408
+  }
403 409
 
404 410
   if (!$error && isset ($pre_query) && sizeof ($pre_query)>0)
405 411
   { reset($pre_query);
@@ -413,8 +419,7 @@  discard block
 block discarded – undo
413 419
      }
414 420
     }
415 421
   }
416
-}
417
-else
422
+} else
418 423
 { $dbconnection = false;
419 424
 }
420 425
 
@@ -446,30 +451,33 @@  discard block
 block discarded – undo
446 451
           }
447 452
           echo ("<tr><td>$dirfile</td><td class=\"right\">".filesize($upload_dir.'/'.$dirfile)."</td><td>".date ("Y-m-d H:i:s", filemtime($upload_dir.'/'.$dirfile))."</td>");
448 453
 
449
-          if (preg_match("/\.sql$/i",$dirfile))
450
-            echo ("<td>SQL</td>");
451
-          elseif (preg_match("/\.gz$/i",$dirfile))
452
-            echo ("<td>GZip</td>");
453
-          elseif (preg_match("/\.csv$/i",$dirfile))
454
-            echo ("<td>CSV</td>");
455
-          else
456
-            echo ("<td>Misc</td>");
457
-
458
-          if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile))
459
-            echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
460
-// TODO: echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a></td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
461
-          else
462
-            echo ("<td>&nbsp;</td>\n <td>&nbsp;</td></tr>\n");
454
+          if (preg_match("/\.sql$/i",$dirfile)) {
455
+                      echo ("<td>SQL</td>");
456
+          } elseif (preg_match("/\.gz$/i",$dirfile)) {
457
+                      echo ("<td>GZip</td>");
458
+          } elseif (preg_match("/\.csv$/i",$dirfile)) {
459
+                      echo ("<td>CSV</td>");
460
+          } else {
461
+                      echo ("<td>Misc</td>");
462
+          }
463
+
464
+          if ((preg_match("/\.gz$/i",$dirfile) && function_exists("gzopen")) || preg_match("/\.sql$/i",$dirfile) || preg_match("/\.csv$/i",$dirfile)) {
465
+                      echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a> into $db_name at $db_server</td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
466
+          }
467
+          // TODO: echo ("<td><a href=\"".$_SERVER["PHP_SELF"]."?start=1&amp;fn=".urlencode($dirfile)."&amp;foffset=0&amp;totalqueries=0&amp;delimiter=".urlencode($delimiter)."\">Start Import</a></td>\n <td><a href=\"".$_SERVER["PHP_SELF"]."?delete=".urlencode($dirfile)."\">Delete file</a></td></tr>\n");
468
+          else {
469
+                      echo ("<td>&nbsp;</td>\n <td>&nbsp;</td></tr>\n");
470
+          }
463 471
         }
464 472
       }
465 473
     }
466 474
 
467
-    if ($dirhead) 
468
-      echo ("</table>\n");
469
-    else 
470
-      echo ("<p>No uploaded SQL, GZ or CSV files found in the working directory</p>\n");
471
-  }
472
-  else
475
+    if ($dirhead) {
476
+          echo ("</table>\n");
477
+    } else {
478
+          echo ("<p>No uploaded SQL, GZ or CSV files found in the working directory</p>\n");
479
+    }
480
+  } else
473 481
   { echo ("<p class=\"error\">Error listing directory $upload_dir</p>\n");
474 482
     $error=true;
475 483
   }
@@ -494,8 +502,7 @@  discard block
 block discarded – undo
494 502
   if (!($tempfile=@fopen($tempfilename,"w")))
495 503
   { echo ("<p>Upload form disabled. Permissions for the working directory <i>$upload_dir</i> <b>must be set writable for the webserver</b> in order ");
496 504
     echo ("to upload files here. Alternatively you can upload your dump files via FTP.</p>\n");
497
-  }
498
-  else
505
+  } else
499 506
   { fclose($tempfile);
500 507
     unlink ($tempfilename);
501 508
  
@@ -533,19 +540,21 @@  discard block
 block discarded – undo
533 540
 
534 541
 // Set current filename ($filename overrides $_REQUEST["fn"] if set)
535 542
 
536
-  if ($filename!="")
537
-    $curfilename=$filename;
538
-  else if (isset($_REQUEST["fn"]))
539
-    $curfilename=urldecode($_REQUEST["fn"]);
540
-  else
541
-    $curfilename="";
543
+  if ($filename!="") {
544
+      $curfilename=$filename;
545
+  } else if (isset($_REQUEST["fn"])) {
546
+      $curfilename=urldecode($_REQUEST["fn"]);
547
+  } else {
548
+      $curfilename="";
549
+  }
542 550
 
543 551
 // Recognize GZip filename
544 552
 
545
-  if (preg_match("/\.gz$/i",$curfilename)) 
546
-    $gzipmode=true;
547
-  else
548
-    $gzipmode=false;
553
+  if (preg_match("/\.gz$/i",$curfilename)) {
554
+      $gzipmode=true;
555
+  } else {
556
+      $gzipmode=false;
557
+  }
549 558
 
550 559
   if ((!$gzipmode && !$file=@fopen($upload_dir.'/'.$curfilename,"r")) || ($gzipmode && !$file=@gzopen($upload_dir.'/'.$curfilename,"r")))
551 560
   { echo ("<p class=\"error\">Can't open ".$curfilename." for import</p>\n");
@@ -558,10 +567,13 @@  discard block
 block discarded – undo
558 567
 // Get the file size (can't do it fast on gzipped files, no idea how)
559 568
 
560 569
   else if ((!$gzipmode && @fseek($file, 0, SEEK_END)==0) || ($gzipmode && @gzseek($file, 0)==0))
561
-  { if (!$gzipmode) $filesize = ftell($file);
562
-    else $filesize = gztell($file);                   // Always zero, ignore
563
-  }
564
-  else
570
+  { if (!$gzipmode) {
571
+  	$filesize = ftell($file);
572
+  } else {
573
+    	$filesize = gztell($file);
574
+    }
575
+    // Always zero, ignore
576
+  } else
565 577
   { echo ("<p class=\"error\">I can't seek into $curfilename</p>\n");
566 578
     $error=true;
567 579
   }
@@ -589,16 +601,16 @@  discard block
 block discarded – undo
589 601
   if (!is_numeric($_REQUEST["start"]) || !is_numeric($_REQUEST["foffset"]))
590 602
   { echo ("<p class=\"error\">UNEXPECTED: Non-numeric values for start and foffset</p>\n");
591 603
     $error=true;
592
-  }
593
-  else
604
+  } else
594 605
   {	$_REQUEST["start"]   = floor($_REQUEST["start"]);
595 606
     $_REQUEST["foffset"] = floor($_REQUEST["foffset"]);
596 607
   }
597 608
 
598 609
 // Set the current delimiter if defined
599 610
 
600
-  if (isset($_REQUEST["delimiter"]))
601
-    $delimiter = $_REQUEST["delimiter"];
611
+  if (isset($_REQUEST["delimiter"])) {
612
+      $delimiter = $_REQUEST["delimiter"];
613
+  }
602 614
 
603 615
 // Empty CSV table if requested
604 616
 
@@ -617,8 +629,9 @@  discard block
 block discarded – undo
617 629
 
618 630
   if (!$error)
619 631
   { skin_open();
620
-    if (TESTMODE) 
621
-      echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n");
632
+    if (TESTMODE) {
633
+          echo ("<p class=\"centr\">TEST MODE ENABLED</p>\n");
634
+    }
622 635
     echo ("<p class=\"centr\">Processing file: <b>".$curfilename."</b></p>\n");
623 636
     echo ("<p class=\"smlcentr\">Starting from line: ".$_REQUEST["start"]."</p>\n");	
624 637
     skin_close();
@@ -657,29 +670,35 @@  discard block
 block discarded – undo
657 670
 
658 671
       $dumpline = "";
659 672
       while (!feof($file) && substr ($dumpline, -1) != "\n" && substr ($dumpline, -1) != "\r")
660
-      { if (!$gzipmode)
661
-          $dumpline .= fgets($file, DATA_CHUNK_LENGTH);
662
-        else
663
-          $dumpline .= gzgets($file, DATA_CHUNK_LENGTH);
673
+      { if (!$gzipmode) {
674
+                $dumpline .= fgets($file, DATA_CHUNK_LENGTH);
675
+      } else {
676
+                  $dumpline .= gzgets($file, DATA_CHUNK_LENGTH);
677
+        }
664 678
       }
665
-      if ($dumpline==="") break;
679
+      if ($dumpline==="") {
680
+      	break;
681
+      }
666 682
 
667 683
 // Remove UTF8 Byte Order Mark at the file beginning if any
668 684
 
669
-      if ($_REQUEST["foffset"]==0)
670
-        $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline);
685
+      if ($_REQUEST["foffset"]==0) {
686
+              $dumpline=preg_replace('|^\xEF\xBB\xBF|','',$dumpline);
687
+      }
671 688
 
672 689
 // Create an SQL query from CSV line
673 690
 
674 691
       if (($csv_insert_table != "") && (preg_match("/(\.csv)$/i",$curfilename)))
675 692
       {
676
-        if ($csv_add_slashes)
677
-          $dumpline = addslashes($dumpline);
693
+        if ($csv_add_slashes) {
694
+                  $dumpline = addslashes($dumpline);
695
+        }
678 696
         $dumpline = explode($csv_delimiter,$dumpline);
679
-        if ($csv_add_quotes)
680
-          $dumpline = "'".implode("','",$dumpline)."'";
681
-        else
682
-          $dumpline = implode(",",$dumpline);
697
+        if ($csv_add_quotes) {
698
+                  $dumpline = "'".implode("','",$dumpline)."'";
699
+        } else {
700
+                  $dumpline = implode(",",$dumpline);
701
+        }
683 702
         $dumpline = 'INSERT INTO '.$csv_insert_table.' VALUES ('.$dumpline.');';
684 703
       }
685 704
 
@@ -693,8 +712,9 @@  discard block
 block discarded – undo
693 712
 
694 713
 // Recognize delimiter statement
695 714
 
696
-      if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0)
697
-        $delimiter = str_replace ("DELIMITER ","",trim($dumpline));
715
+      if (!$inparents && strpos ($dumpline, "DELIMITER ") === 0) {
716
+              $delimiter = str_replace ("DELIMITER ","",trim($dumpline));
717
+      }
698 718
 
699 719
 // Skip comments and blank lines only if NOT in parents
700 720
 
@@ -728,8 +748,9 @@  discard block
 block discarded – undo
728 748
 // Count ' and \' (or " and \") in the dumpline to avoid query break within a text field ending by $delimiter
729 749
 
730 750
       $parents=substr_count ($dumpline_deslashed, $string_quotes)-substr_count ($dumpline_deslashed, "\\$string_quotes");
731
-      if ($parents % 2 != 0)
732
-        $inparents=!$inparents;
751
+      if ($parents % 2 != 0) {
752
+              $inparents=!$inparents;
753
+      }
733 754
 
734 755
 // Add the line to query
735 756
 
@@ -737,8 +758,9 @@  discard block
 block discarded – undo
737 758
 
738 759
 // Don't count the line if in parents (text fields may include unlimited linebreaks)
739 760
       
740
-      if (!$inparents)
741
-        $querylines++;
761
+      if (!$inparents) {
762
+              $querylines++;
763
+      }
742 764
       
743 765
 // Stop if query contains more lines as defined by $max_query_lines
744 766
 
@@ -790,10 +812,11 @@  discard block
 block discarded – undo
790 812
 // Get the current file position
791 813
 
792 814
   if (!$error)
793
-  { if (!$gzipmode) 
794
-      $foffset = ftell($file);
795
-    else
796
-      $foffset = gztell($file);
815
+  { if (!$gzipmode) {
816
+        $foffset = ftell($file);
817
+  } else {
818
+          $foffset = gztell($file);
819
+    }
797 820
     if (!$foffset)
798 821
     { echo ("<p class=\"error\">UNEXPECTED: Can't read the file pointer offset</p>\n");
799 822
       $error=true;
@@ -847,8 +870,7 @@  discard block
 block discarded – undo
847 870
       }
848 871
 
849 872
       $pct_bar    = "<div style=\"height:15px;width:$pct_done%;background-color:#000080;margin:0px;\"></div>";
850
-    }
851
-    else
873
+    } else
852 874
     {
853 875
       $bytes_togo  = ' ? ';
854 876
       $bytes_tota  = ' ? ';
@@ -906,12 +928,13 @@  discard block
 block discarded – undo
906 928
 <?php      
907 929
       do_action('script_finished');
908 930
       $error=true; // This is a semi-error telling the script is finished
909
-    }
910
-    else
911
-    { if ($delaypersession!=0)
912
-        echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n");
913
-      if (!$ajax) 
914
-        echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n");
931
+    } else
932
+    { if ($delaypersession!=0) {
933
+            echo ("<p class=\"centr\">Now I'm <b>waiting $delaypersession milliseconds</b> before starting next session...</p>\n");
934
+    }
935
+      if (!$ajax) {
936
+              echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&fn=".urlencode($curfilename)."&foffset=$foffset&totalqueries=$totalqueries&delimiter=".urlencode($delimiter)."\";',500+$delaypersession);</script>\n");
937
+      }
915 938
 
916 939
       echo ("<noscript>\n");
917 940
       echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."?start=$linenumber&amp;fn=".urlencode($curfilename)."&amp;foffset=$foffset&amp;totalqueries=$totalqueries&amp;delimiter=".urlencode($delimiter)."\">Continue from the line $linenumber</a> (Enable JavaScript to do it automatically)</p>\n");
@@ -919,20 +942,26 @@  discard block
 block discarded – undo
919 942
    
920 943
       echo ("<p class=\"centr\">Press <b><a href=\"".$_SERVER["PHP_SELF"]."\">STOP</a></b> to abort the import <b>OR WAIT!</b></p>\n");
921 944
     }
922
-  }
923
-  else 
924
-    echo ("<p class=\"error\">Stopped on error</p>\n");
945
+  } else {
946
+      echo ("<p class=\"error\">Stopped on error</p>\n");
947
+  }
925 948
 
926 949
 skin_close();
927 950
 
928 951
 }
929 952
 
930
-if ($error)
931
-  echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."\">Start from the beginning</a> (DROP the old tables before restarting)</p>\n");
953
+if ($error) {
954
+  echo ("<p class=\"centr\"><a href=\"".$_SERVER["PHP_SELF"]."\">Start from the beginning</a> (DROP the old tables before restarting)</p>\n");
955
+}
932 956
 
933
-if ($mysqli) $mysqli->close();
934
-if ($file && !$gzipmode) fclose($file);
935
-else if ($file && $gzipmode) gzclose($file);
957
+if ($mysqli) {
958
+	$mysqli->close();
959
+}
960
+if ($file && !$gzipmode) {
961
+	fclose($file);
962
+} else if ($file && $gzipmode) {
963
+	gzclose($file);
964
+}
936 965
 
937 966
 ?>
938 967
 
@@ -965,10 +994,10 @@  discard block
 block discarded – undo
965 994
   {	ob_end_clean();
966 995
 	  create_xml_response();
967 996
 	  die;
968
-  } 
969
-  else 
970
-    create_ajax_script();	  
971
-}
997
+  } else {
998
+      create_ajax_script();
999
+  }
1000
+  }
972 1001
 
973 1002
 // Anyway put out the output from above
974 1003
 
@@ -985,8 +1014,9 @@  discard block
 block discarded – undo
985 1014
   
986 1015
   if (isset($plugin_actions[$tag]))
987 1016
   { reset ($plugin_actions[$tag]);
988
-    foreach ($plugin_actions[$tag] as $action)
989
-      call_user_func_array($action, array());
1017
+    foreach ($plugin_actions[$tag] as $action) {
1018
+          call_user_func_array($action, array());
1019
+    }
990 1020
   }
991 1021
 }
992 1022
 
Please login to merge, or discard this patch.
include/adminer.php 2 patches
Spacing   +672 added lines, -672 removed lines patch added patch discarded remove patch
@@ -6,669 +6,669 @@  discard block
 block discarded – undo
6 6
 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
7 7
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
8 8
 * @version 4.2.5
9
-*/error_reporting(6135);$oc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($oc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$yg=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($yg)$$X=$yg;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
10
-lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
11
-lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ	ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›­æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š	Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8А­£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü­’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤	l^íZ6˜ej…Á­³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxl֍ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù	€‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò	'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,E͝`T¦É6Ûˆ-“Åì¾ÅÚŽT[ѐªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø	•ÿš´hìÁ{Ü£•î ËԐ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV­‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØ͇Т©‰‚êcâ¡óB’—}Ø&`ˆîr+E­“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼	ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡	³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£Ì]6¦Þ1´!1M±¸@a´/`Û>Ù¸üߣðÕßÈÛC/ì6à´·#p@pá‘óÿ`Zÿôýchý°\0ïë\0oæ€ð4OýOøi\0-\n«îÿ/ý\0£Dð.ÿ ¾ˆ.“Đ\0fiŒÀÈ«£€˜\0Œ”IDüç\0§¬\rïý0f ßoãÿ€ÊGüˆðeJ|\r€¿ýl	¨3ê~ðiP›¦&“É¿/µ\09	^\0r•0]¯õ ¾›oõŽ.ý\"	°ÐÑM¥íðvÿP€ZÐÕmpËP°ùÚœÐޏ¹ïô{§†C?²ÀkŽ“Ï¼}ð®þdöïʏ°~=‘.Ô- é	Ðm1>hûÏÛЕ1;QI‘OPÈ\rºcßpApV«k\rQ*èQ}ÏçŸq>˜Ðu15BqQ[1fûñl«Â€apå¯ü\0Û‘*ŒJ©Q=ñãّGÜäŠÕÁ±Ÿ±_ñ—ñbŒGHF.‚0Ôø	= 2P™Àó æòÏçP!ò#(3 \nÙ!1&72fª`Â/å\0°‡\"PÁUõ\$ñ\r0Ìð,QrU&2fšÒ_²Xààò]ð9\"’S'òƒ'²yð8\r¨ú§òkW)Oõ)’*Ra%ã\\i—%ò‰&Ò³+r…’3ðS`…,ñvý¦&2×L–&Pu*›-ð˜0\"Á%HĬÔžïÏ@Ø“±°H‰B–P(ÃÉ\$p&ý,1M ªØ­Ã®;\rnÁ.¯Ê I­.Õ',1ò)Ó4ý²å2°u+ó3æ `ÈSŽŠpL\nt§’_*²S3;6r'h35¤55䜋d2q+6ñ8‘O7sC\"pm8Ò­³“6³—9òm\n@e0É<8B8©<,( ¨8²Û\0è	Ó0šJÙ<@¦ÐI¤«ÀR6pÔ­mGË\"11¤6ËÐ.\"æÀ‚ï5Ì‚ûÇ:àÜ8bêA1±;ƒ';Â?<*\$È,³Ìo= òTÓÖ/3Û#«ºÒ†¬");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
12
-lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s>	)â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n	\ræs<ŒPi2INƐ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(ҝm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå	 Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ­˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§­ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$	CAƠ䄤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t	Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬­ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AK㝡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(­#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J	A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…):	ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDù­Ñ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8­ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æڌڇŸ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/؝X ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éPÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðȍôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEЀÔøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6â†¬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F	4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀΠt]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e­¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ	1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î	 ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*­/¹UÖVû‰¤þ­pì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Ɓ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·>	—BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ	¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6ChÂº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ߍ§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)א…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üà倠ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤	(€\r¹öGFžª@ؼÃúÙ­Àß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷È½à¸à\\P’,\"ª-rCÉrVäæYם·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’­ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/­ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê	‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rԁ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx	ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔĝ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã	ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„⢏ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ	€ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní	äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;S­Ç]ãñ@ËÇè:Ââ“­÷I~Û‘•ÙùҝÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}ϝ:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð­‰)¯i4Ñu•sÁ­ÇˆXÁMP¬‚^«ä5¹O’¥	bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE%	dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> “ªÿ'Ó|“#hàÅœ˜6è¦\rñ.=(Ôv±…¥;`\"OøCܐ!âBŠ9ã.B!UEÌDáÄ‚d œ–€)ºKŠ Œ\0Þ» ÆmF~	B{O\0¨Ï©¡¦_選³u#„–5 =LjÀò7´9 š6­¢î£lCV‘€ŒTpÀÚ08±	1ÄÎx'0@gIw€Zã†@9ÇLᎎ\\v\0_(º\".ЯA[sÅ„ä€ê7I(azl_„EЦ<ñ€“tƒUöë7`tèÒ0ø‹(ßà3”=¦ço\$[Ìh×!¸B¦œ[HîR¶œœ) )nxaZ™#=HË8ð뛥 ”’%þ@0w5J’–	¸²A\"F:8NŠÏ\"Xù- èÔ­¥?pj@)iUjƒÀ™\$Ìš-EÆ÷”E§´\n/¸œPÓB–P@y8j¾Y¼Kð³9	0ÊH€Ddš&0Œ¡èh“X \\Ñê\$Ë(ÁÐ`d\nEΤÀŽ@ÉJ“b*NRP\"(q.f#“dšGÈæD¾š¦M’n9:*€¶fÐŽt4æò:p½Mí(5%ÊQ\0e”Sb’4ú1¤ÉõeM‡),ŸR‘\"k§m?Ê\0rB¿( è\\èšÅ••de<£\\ÊBMò’i„¢L	(Åh›ÚRÁ¿D›e\"r™CÊÖRä•ô¬å)9EJâQÒ˜>	õO´ãí`šAÈ#®bh|HNÐ\$™%Z#˜4-® 2=ˆD‰ê„ñ\\´æ0Ú…Ȇ¶õ\\’\"©aUR	Ã-I¨ãk0\0ÛæÙ‚ÊÃæHýH³ ÀÎ~u”]QŽƒFš1')-¡\0'óxüeüˆÑ·ŸÌÕp\$ÆQØeaþ#\"ëRǰÀœ@\\èÂF0ѸÀÕ#\"–˜&<¬1ÎHЃÃ\" BªÂð.ˆþ#h˜ÎÃÀ/ùž…TmA[€ç\rRŒ(̼@%ÙE8ÌÂÙÐ&\$	`Eà€ŠÃ,B]À(a{„@ù6I›¢k3[ˆhÚ	ìEw\0¡1®)%檘 @Úªÿ\"ˆ6ˆÙ®aJ¦I8J+4q€Úa¨±0\nBë2É—àa“!{q›•ŽŒÛ„Àgá1!9à:\0¦Š&D8|8Á\0Ë:á5P1ƒ¼›0‹ã:y„ª¨FDHÄÎUk3Á’…USLKôàfŠi‡mB¹Fk§@EPØM-ä;1ˆ¡%Òá82ls1œ´!&û5¼ÍRaÅñ—ÄÂÀú’4’ÏP%¸„eOþ/¹¨ˆ±³ÈE‰I@C=ùùMHÉÓôd°çË8@¹–à9rI¼Ð€£Š*B,› Ã^ð‘ҁ\r˜Û€N猗4ˆB“™ZCXÿs!	*@ENø)»Ð”4àa\n¨ )¿¸˜?`+¡€&‰C01M¼SqDñ€ÞQŸBð\"ï¡ ‘‰n)ÓM¹¢!x\0€Š5Æüj3w\0⣂ð0!\$\0`a7º¨2Q¶Zì>I4ŒÖ}ÉxÑàÁ½›ÊÏÚZu¶\0´çñWÉdd4J2„†26\n 	À¶žÙ ŸÅ…æ€OhÜFç0Èš\0=΃š%Ù1Ú\rÊAàih@vM)’\0¼`£&Êa2ù´Kši©KðfhZUÆ\n¶‘AM(iéP€ÈW47¥|ò©ZQ†þ:¨5X>x#5†¡s=0Rªå>„“7úÓÀiü'èÙž\0Ê™£ú)`hþRÁð…š—d`œѵM‘IQ\\V´ÞV‚ã4T²¦ÓUãåR%9F“aºhÕ47œ]Mà_`>P~_T!¡†ÑN\0ŽÎ.lÔú%ÈC(DZSþqu\0œ¸…in默2¡áÙHéqCÔM`”…AÞMqQ¢~«5p+ŠAZh¾¡3Ÿ‡Å¸\n62¸URbq%B(\nÀTØ󑜛FåâÌð>œ8¿†GM ‹LpiÈ¢EQf‘M&•.©OQ\"=Z{µºR¥åïl¨aOêïØ«”ýk}° Á-´~+Ê`µewíWêÎT	Õ¨º2ߘ’.¤1RÒH8H¤†d€Á†h@0Œ\0[€@réŸ j\"„ý¸êöOZŽ ‘1r#¬tQ@7—V5kÈ+˜ÖÉʽVlï¬ì·\r-å®–¯U„Ý\$\$XÚ¼ž4µ«äF6{à/ˆ‰Ç–P¡óZ¹s½|Œ\rcÓ€f™Á˜f¸?	•_«™XՔ𰕆¬@Áë—â0nlŠÜ„Yòg:×°ËSæâä›sª~˜šâ¡9ëî×FŽt\0/Ã\nÅ0']y‰á^ŠÇ#&¹\rHœ†j‡R0ý:æ¤â‡£¦äD7J¡Ÿ~¿Ä52Éælë”D­}J‡TàeΜ% ŸÕ}¸è+R#”°k3T¼Ýë¶\0rYuŒh¡‹ÞŒf¼“Þleù„ØAï1S•TØP\"±¾PhŠE¶NœÞVK`2Qò\0e©eK‡›Š>IFÜš-Ã7Sê=Ôù•BÀ¼j¢N5U÷[ñXl'\0 2¡…j\0;ªÍ‘’ìú®J\"\r4hEž±FXômRö\0Q‘Ö·*/X ”K£{hÍWÚ‘ž©”l€êm'j8€ÚŽŽ.êFˆÔsUÔ©µ\"iþ+bÒÊBÚUl1 ¬¼RCGÐ-­²3Þ)3å\0ø'ÉNv?³³PeÒÔÀÂZžÕ/óiãOÝ]6b“|1T•ªÉ×jØHÚ¾×@mµà¹-k_TÃÅPè–¯\\©¬\0æÀ69¸°nU¶{‚-±Õ5Â!²“´øGª³çξ5ãšºm®S Á´\$룱øm3õÙ%˜`[¯B©/ËešØÎõÉTm§i‚N›o£!âàµ.È\râ÷0¨6 ,lí¬\0äàà:&|\rÖ»\"M¯¡kw*ÛrHVó„Ü5Û‚Ãjàá „YpÒ“ÙX\råw{Uß…qÄ’Ü\$u⨞Ul{‹Û\$×¶þ5mÀ(ü`/¬¢—ù¸4/nIp–j\\-³¶ç_3\\)òës×–çW–·mçt\n†JR—D¹Ñ‚%tŠ\nÝ*‹Rzá2>²°\"®‰a²\0Ö8Š1˜Žè¤/sÄ@Û†Jì'l—Hu®k Zªç©´hÔ8§s}ÈšP§)R*“Übûe%²í·o„Ús– û2aQ¡J†©¤Õ°í‹qkÂ6g.	¼R“/({Ǥ~ÙEŒ©;ö\$ÝÓt†löÃmIêºèGR:iÕ'—àÁApªÞy€üÛ­DMºŽ/<¦ÜwºÁàp\rÀ\"•Âá}\0ßPS€'éŠß܆“”pý¶k`CìÜqEYÀ3Êd¡èÉ|p{ó DJ;úå÷cHTšÏWnW<)M5~ÆY2÷–t9Š©âkÞR<ý«q#\0¨ýep7Lø+Óc¾ Ú\0u\0\0®mÔW¾‘c}[* <÷ؾÎ+¢ër7Æ@+·Ô^/Ä·ûò_ÀYÆŽ¿ £/yƒ6Ù¾þ«%œXÛKRÒÚoƒÙS¯\\¾	m/ˆg³PϾÉV–­%D«¡GÄOiuöÝt€åN)®›Î¯&ú†ySô0jn“rrÚT”y×myˆk!É8UšøDn£Bþ\0÷l¥¨PGç.[‡z··|†8bGõx×Ñ\\s[µ#¸?>:£\0Xz	f¯´ f.⣏4€^  9‡ |šË\r§·z+G¸Z¸D©È?‰5A¢„A]¹1ϱ5‹7bvæ`|1»èk.‚LUëÍڐ/`Weñ©'âàkû¹†k°ÜŸàÅÐI\0wvu‘]©-˜Ó%OÈb3ó¡j•bŠÍ™T½A%¯à&êIÊÜP£ŽcBã9Í‹{yBßLtVÖ?ØÊF:hªUd[ËÑ ük±–8OSV«	káZÑ|â€*ÑU¾Gû˜-k¦&ˆÚI–‘žÈÝ”ðO9\0®€Åˆ˜ÕeQ>7ŠÉp¶e[¶<¯¿RæÝ­ h\$®?ύöäúª¾Añǐ‘ÿ-×!–iÈ|¿Ö¿…ä[UÎ³ïfEƧ‘’SätF™RUÎHÁ?¡Z¡¶¨I@â¢Ã‘‚šÖEY*–½Y²‘YúÔZEÐö­=–ì:Û+Ù@¾VÐ6„·^ÃÚ½NÖ8VK2‡’ê ¼#èbÉŠ[2ç-	ñ…k2&*äENškV¶2Áy¼ùW8+Öœq°Œ&9„1åøù+Z“Dªã\",¥­œ““‹Êƒ#-šÉÈ4ÿ5•µ—‘cãxPŸæÌ•ÓÅlXó Ös-P”χBÂßÕkFŒ¸ÖŒ\$5m€W@º¨\0›Ò—!úÌ`@ð¼ß©²\"áOõa7œš†Ï14yo®us,|d*+É¢ee7ž<Åœó:Çߘ¸Ôá]œbg!™ùÎbsŸH\nr˜„nÕ–É@Ø@ör Ÿæâr€)0 €’à\"\0\"΀òO4]ªÞaÄH*•o–,뀬.CpÉÒÉ3>Šu©Åx5™äúž‘	Åæš³ÓÊVZ–Ò€,,\ršfáHl÷e£êè:Úe™Z@Î]ò¼½\rs@¨%Ë\"\n!ìk‰úhÊ´ËeÈ´?åÄji: ˆ>{ÉšÞËŸ½! W.ºEBV‘åË	\0002Ï9©¦Ëæ­šC¼Ñ\r4íÌûóP+.Ÿ‹=5\$KbÍÂùËh(5\0©I¤CŸèì“ U«ÅÇ4'V”°(-¢!0	À¨­ÀÈ•:eñÔn¥Ã›©’:¥”-F®‚µ;/¥#”‡T<¢ÐùMVH/O¦½±´Û¹ÂûQ®€Åž4h-âDþ5ÀU€\0‚@\"€€	àFavœ@à€y ëé'‰;.HnrzxPô^€ÿ[áªûbEÐÖD;SYãåÚ	Pôï :1¬ÇN‰iâ€wfíw»Ü1ÀY½¨ù™| FâDiZ×¶D|{q”RÁà0\"³Íç(åO³ÕDîƒ	—z`Ò)Þ`-ˆ Ä|è5Ql_c.øküö<Ù5¤0§zÏÒ–Ñü›Ûßкe˜†dí\$’©\"þJè÷ÓSÝÑû\n\rHK¿_Ó„”tà4ç€s›A\njVð´ñŒ!oÚ[l¶œOPÀQª©¬‹wÑÓ†Q¥9ÛÑ!…5€ì¥\0¶Ym‹g„õÛ(@u¶§ƒXO_éÝa~ÉÔ&Ðó#( =:ã Ã\0½µ×k4WñÏ\0]IàŒ+šf	FÕÈj¥C#Ûn7ˆ?µöô×N Ní’´)Ï&zÝŠ‹“o»Ž¿h¤·BlM½TU)5ÜËp¾t€¦µ›¥tÁä¶ùºî¨\rµV.è]û¹Í‹†Ð»¡nç†JÑív… Ø¶ï·t(ÍÉn¸Ñ»±ÝœD2)mÛž([Ïr©˜Åë³2z eŒ¿¦ñ¾=Òn*̍vûw8ÝÄàx+§<`	2½GFííTBÛ=væh=ºì};L/wîþ÷£¿÷v[«cîØßîã÷)¦ÀnL¦*§¡¹ê¡ã7`7ôÞ‘þ÷©_øˆ\næ{˜æ‚B%Q\0ǃ@pyæ÷\0ûÁȈnè'Š^î庾&‡Ó6Þ\0•È¿‘Ôð†û»Þ̃%¾EKÔÈ;,á‰â·PeÍîl-•:ÙþïgÄKüëXTØEPVP. èP ´¼RØl²ë±sìOmtâ•êhô’ô ñÀ¬#”Uv…ϲ=}ì”a>\"‡õàÆ½Žˆøo|RØt£Më¢û<fM SòãZ˜QBà¡È*¡o^ð&ÍÞ5Æþµ€*D²QþN»\$*¦	ä¯	BrD`Íòe¡Ó=äç'¹?Ê•T MxkkÓZúŒ}­Q²‰[~ùŸÕŒš(qmQ:ü{Þ‹µè¿ó×Ͳ°f}N@±lCaùðˆê\"N`ˆùAP“cÔ€V0\0ÍB’fÝÙÀž…ø„P\0Iu†5ª4›³ì÷ÿ©Ð`°:*†`þQ¢wRó(º¸éœêÆÊÉû7È»™jj÷gçdc°™ð6,É/%ñç2ç¦#³òûiÉ»8\\nϧ‘—ðqö‘SuÛ³nu4?W7\$»>-0ϵЁ¦-7d}y¼…[áx‡ñ~»¸0òSükó«y{!©sü°ö(@6p\$a:ʨ€Z5}\0üç]BßøŸgŒÔÀuTT\"K@€uÑþ­<Ìž.ªugGø›±n¢¿ÚŠ|aâx¡ÔÀÇ窱ÿX5é‡EØõØó@tçVw¿ü?\0½ç„ruY둹Ï.Å?[ŽfèÈ9Îñ9ô3£®	I\0—ذš)±OuɈz*ð’ãbí+\$Sª9ÇØ~‚vŒú}+–Ññ„«Ùtwøµ‹\0\\€");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
13
-lzw_decompress("v0œF£©ÌÐ==˜ÎFS	ÐÊ_6MƳ˜èèr:™E‡CI´Êo:C„”Xc‚\ræØ„J(:=ŸE†¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS	œËUl(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ`Èó¯bè\\š?`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°ø㢺÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m6PÔ@ÃEQàÄ9\n¨V-‹Áó\"¦.:åJÏ8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼ÉÃà@„}&„ˆL7U°wuYhÔ2¸È@ûu  Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]­lá@MplvÂ)æ ÁÁHW‘‘Ôy>Y-øYŸè/«›ªÁî hC [*‹ûFã­#~†!Ð`ô\r#0PïC˝—f ·¶¡îÃ\\î›¶‡É^Ã%B<\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF¨jZ£1«\\:Æ´>N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p\"띰ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡ۏÙÀ)PÓÜØHgàýUþ„ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠŠ=¡p)«\0P	˜s€µn…3îr„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ\\—b„ÿé¾’Q„=7:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉÕ«Æ¯ÕbBr£ªö„’­²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^<Lóà4U* õBg ëÐæè*nÊ–è-ÿÜõÓ	9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7	tßšé-&¢\nj!\rÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl	8‡;¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5-	Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾Ã4ÉDZ©ÕI¢™'\$cL”R–MpY&ü½Íiçz3GÍzÒšJ%ÁÌPÜ-„[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'\\–’KJa¨ÃMƒ&º°£Ó¾\"à²eo^Q+h^âÐiTð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\ޝX°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½û΁ß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿á|9Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á]ÄržÊý¯v¹~B£ PB`T¡H>0¤Bҁ)ð >¸N!4\"‡À¦xW-ÅX)„0BhA0à½J2P@>ÈAA)„SÎôn¼ìnìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âöàøïhèí@È‹’î®(–ð\nì†Fì˜ñÏ–øÆ™…(ìγ¤ÛP\0÷NÂõo}¯‚l«<ønÞø®ˆâîlëoq\0/Q\0of*Ê‘NÑ½P\r/îpA°Y\0p\\ãï~³ÐbÐLh °!Îã	ÐPöîd÷.¿ïy\no\0áÌËжöPptùP¡ovÐ‚knޏ\0z+æ›l6÷°©¬Êø0’äð¹P½oF€NìÏFô¯OpýàN`ÜÐÖ\rogðá0}PÍ\n¬–@°”ö15\r±9\$M\r \\©\nggìÀ Ø\$Q	\r‘“Dd‰ÆÊ8\$¶ªkþDâjÖ¢Ô†ö&€ÓÀÊ ¶àbѬ˜ê°¿‰›	ñ=\n0ÊÕÀúºÀPØ ~ج6eö½¬2%Íx\"pß@Xб~«æ’?¬цZelf\0ÒZ), ,^Ê`ß\0è8&´ì¨Ù©‘Ñr€© ©ÃkFJÂÂP>VƜԍp¨²8%2>ÂBmÎóØ@ä’G(²ä¨s\$Ž dÕÌœv†\"Èp°wÇÆ6§æ}(VÌKË ‚K¬L ¾¤éÄWñöqú\r‘þÃ̤ʀQòL%’PÔdJ¨¦HÀNxK:\n ¤	 †%fn‹ã³%ÒŒ¿DÌMü À[#¢T\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi2I\$\"@¾[`¢hMý3q3d’þ\0ÖµÈúys\$`ÖDÀæ\$\0äQOf1ƒ&‚\"~0€¸`ø£\"@ZG¼)	Y:S¨ê†D.S%͈’ Ð3¾à d¹ÀmÓU5‹æ¬ó<£SÒSZ3â%r “ÎãÆ{óe3Cu6³o73î—³ÀdÀL\"àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2øQôÐ÷“¼åÓ3ÀVذWBðDtCq#C@½I”P÷DT_D´:ÔQ<”UF²=’1ô@\$‚‰6Â<cÆrÅf%Ô¬,|“27#w7ÌTq´6sþl-1cPÕmðqªÊ\n@ÊàŠ5\0P!`\\\r@Þ\"CÆ-\0RRˆtFH8µ|NíÆ-€Ædòg€‡Ò\rÀ¾)FÆ*h—`ö €CK4Ã1‹ÊkMKCRf@w4BßJÁ2\"䌴Ó\r1Q4É2,\"ô¤'¼êx§Œy—R‚%RÄ“SÓ5K”¦IFz	#XP‡>¨âf­É-WX\ršÜê¤pU´ÕDÔt&7@¶ÂÑô?’©ÀÑ ªµ£}O1½2†‡2Õ#UK*¤)ô긋Œ0o<> ]HŽš„Æ¿rè›LGNª›ê˜W%–™M^’Õ9X:ÕÉ¥N”òÕêÔséE¥­@xy’(HêÆ™Md×5<52B– ð–k!>\r^J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0,™DJ£Fxbèµí4lTØ•û[¨§[é•\\‡¦¨Ô –\\{­Ò6\\Þ–’ öß(#mJÔ£,ý`©I³ûJ‚Õ­ÊÜèlߍ ûj…jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢®ÑW•\rkÕÏ)\0Ý3Õ€@xè¹,³-Ê	5B”¡¶˜=ÂÔ࣐#–gf¢¡&Üß·Z`ä#ÄoíæXf È\r ìJhô˜“À´5rqnzõ§­sÁ,6’oÓtD´y‡äÂb´àhþ—Ctn˜9n‘ í`§X&¨\r'tpLž7²Î—¤&—¨¼l¬Z-ͬw£{r—¤@iUzM¿{rxא—mÒSBÀ\r@ H*BD.7¹(‘3XCV Ç<WÔуÝ|d‡q*@”þ@ÞÀÊ+xø÷̼`á€Ï^™Ì˜ß¬__•ND­X\0Q_D]}tõYÅúp¦f€wÔÚ\"â3øz¦n«MYñùZR\0÷¬Q¤?¸{†M3†•£*×1 ,¨\"Øg*U¡*²¯ˆÌ«zÒŒW5NV2O-|€¾ÉÓñ,×]‚B×dí\rŠñ/OâtÎøÃï‚Ì0‹xƆðŽ½Ð®OCë8Þ-0Ò\r”ÿ0à·õ„@]¤XÌŠÐÎð\\\0¾0NÈï£Ñƒ4ëi¨;ƒØAtê¼8X—x¤\r†…Š“‘ìÁ‡øÝŠ×Ê7¬<ö@SlÈ'LÒø9WŽ ÊθòϬÖËì¢Íı•ùRçÌðÌ\r¾Ï ÂÏò|ÜXÐÖa÷ø7y€Ù\rwe¸Œù„Y!ƒ˜Eƒù’´šÂcRIdBOkË28[‡mÌJŒ+L ÈÅÙ¸OXpføÓ9ѝDÏ›·¦ßªw“@Ë“—Y—…¢Õ÷\\yäAcÙ£ƒXgš™%šôó’Â1“ï“j	œX†9Cc݇àR¡¹‡”QFÇpdÒ= C˜÷ýš\n\r¥Õ‘ÔóšdjŽÙ«’xE¡Â2FX§¢x_¢ØÅ£Ú5£™—}q¨Åí¿¤M%¦ZM™:\nÏzWšX7¥åí¦:ÐZi¢npY;Žù>ʘí£ÙɆ:6Ú;£ZÎX0ƒ“Ì¢#ùýcàMyU…i2,q¹FËšÈb­J @ÓgGè|4ógÈÒmzWõäÊ	¬)™Èr|àX`Sc‚Õ§ÀË™„óc—¥‡û!²B²—±”»/}{4JÂ\0ÒÝn»Kuz @ÌmÚÑ®€ß­yÍžÒyÖ\"º)u¹ÊÂÙã¶Y睘s·c¶yë‘¶š‡··y¼—ސ¹7Á|·±|—Å{Ϙ*)°Ê4Y`ϵ[v¹‡¤­‡û^NX•†¸‰†ò‡W”©û·‚7†;¾_‚‹*x™ˆ¹Ú\rùß¼߉xm+¾mû¨Ú™	´»¹‹\$\n¾l˜);™²„|Ù ßÚ™¡:œNÚ :„‚Š_È8N³¸Uœ5;¨p+U–L‡ò\\‡9í¦Ùñ“›¡»ýO:I’šû zQºœ¡ƒ¡TëšÜ)ªXG¡æ»ÅJ{w8“¾ûʼn¸UÆù\$ôàÃøü›PxTY¾pjh·¾J×À›˜JÙ{‹Âð@îÇ‚³ øðZ‡ÌÙs•¹h˘ç–XÌ\0Û–lÓ–ÌàÌÈθÎçìó‚Y}˜Ÿ®ü^Ð@u2ÀSÚ#U‰ˆ;È|¼¼•¥¼™P\\ŸÊ#ùÊ|ª<®Ý\\³À›žJ۝‚,öœÀ•\\ÅÌšEÌú…‚]WÍlÁÎ,£ÍìÉ–<åÎŒÛ>YnÎ),ΙrÎüûÔ¼å—⍺]Èý	ª\$õÐç½Íq„DJí=•Ù÷•XI-ðÅ€äÅÌa‡llÃµ]\\“w(iÜCÄ׃tƒ‘<i-u[uVŽDÖ“¸Q¸€xb€kæLI­.kú›@ÞÀ„ÜN‹“[ñ¼l<o=-]1`蔼ªdš ÜMÌ7‡@Û%C=]ú›êÀ/|-à܏ˆ¾ÉÞáqÃã•âíùâ*¾C¾òO~ÊQâòså`·ç(âòãDÉßɲ¿à[ãþæ>Éká¾R™uéÞ\\+>)3íûPÊßP§Óí6ÓËM%º¡¾pÔŒœÅAÐ3qmu2ÖfzƒÛ¯ì4s‹	´í`ÛŽ‘ì°-kÊS%6\"IT5½‹~Òì\"™íÂUt_	TuvàÖ½ä¶Yw¤†­0I7¤’L‡\$ú¿1Mí?íe@3Ûq{,çÀÏó\"&Vi·àžÔIŸ?¾µmõˆ™¯UWR¾´\"uiT‹‘uƒq­Ÿj\"•GÃËõßò(™ï-½‚Byîê5øcÝõ?Œàwñ®°ëTúî’`ei¾½Jtb‰gðU‹3ËëÉå@öá~ê+¾Íï\0MïGè7`ùïÍ\0¢_Ô-ùñ?\rîVÿµ?øFOÔ6á`\no†ÏšInª¼*pà™öeÙí\"T{[Гp^÷ä\nlh@l0[/ö„poóJKÖX“ñ€ü<ª=€9{Ǿ6ç–<eߏAxãÀùÇ‚¼Éá4x[ÍžLò“~>!åOQxš{ZVFÔŽ`½éÈ~Ižß–“øL)Q[ëTûôM›àþT²*BC¤~	æâ‚ä\nƒò¡gÈŅp9zKÉ–ówzO9di^›'‰+¹ßïDz4ägHAº¯Lyô¡\nr€<IêjKQó¸Snô==\r.Âo7½Êé%a;‰kÏãmX¿›Zi%P¨iÏ\r­€¾ýµ/©…L`pR0¤Ž&õ—I (Øá\\.£*m„*Ž(ÚÖŽõ—\$䆯À÷\nw׊Х…8a“\n&´Â‘žÍUmª MÖ¨P+\"Ly„ó?¡M\n€2’	L\nbS ¥NäùÇr¶!w¥jw`¼Â\$îôƒráè…Êaáv±^Ãq­F‰Ü6•Ó¨i*™Ÿæ„ì_xõØ\n‰fðIê:B&ù6@É“KED¡úú·QD(V`.1\0Q\$íøF­¹H®’Tþ€zІ‹Ì\rªjkzM€ÐÀ®Y™À(61€”x‘+®%dj¸Æo\n¦¬\rg°ï\"ÉŒ´ˆ—?Œ1- 3hÏXÖÁ)åyjÃ5r¢N±#Q¾¼Џw{_þ¡øG)ÂÎÙ1i‹Ì íç¤<Z‹ºpX³¡Ö\$â?¥=%.´€Ò®&¾­%\\±8w­!¤µa4œ<JB[Ðĺ¦u4‡%êŠ×47‹Ä%gѐä&¸€Z(@	€E¢{@’Ð#¥–2Šh@Œ#ñŸø™ÑŸ¥£@\$8\n\0UŒìjãA(ׁž2ÀO€Š8Ú€ž5‘¸Œ¨@†ð&'´\n€DŽ\$i#ŽÀ#Ÿt\n PŽTs#]P*	àDÌuc› PÀO|pc—øËP	ÞŽ¼i#Ô}ˆæ:<ñí\0\0¥ÀˆÅ¥lo#}ÏFÜR‰Tp@„À'	`Q¬ycTp(ÆŠ@€eh\0‹˜Õ8\nrx› cþ<`NŽˆã:)DY\n*Dý‘2{dZ)A‹Ú4±²¤€cZLð2ÈÊ<ñò\\Œ\$r#ˆþÆö7ñÁŽ¥°!û€´ü€Nª{O¼@\$<	Ñ¢ðVƒZÒÆž52.Aù#D0 \0´ÀI¸û\"P'H	²_)¼x@Š€*úàAOh£hI)I²L1¦’ìƒäµ%áJI‚B‘þ’g¤i\"p÷§K2}’ä–Å(CËÉÍ=²t”xCøÐ&FÄ	r“ÒoÙÉ@@'”ñ€%	 ÛHÞT±áˆ	ãÔ˜:=¾)\0.ñ°]Îâ5 .ðæõ(pÈÀL!à8­\0ˆ¹	éR\0L‹YaÔbkÔ°ˆ6Ä)Y·éˆî •Ô®£	h³zZ¦õ±’IgÎVO3oœ­Lgà3ËY2ãÛ‰ÜDoPË`3̸ec-‰r7í‡2Ô—Dº‚Þç‘B¼‰Z•¼¼%å/I{MÃ\0pÐÀ́.`äÊÝo*•Ô¯%T€ý\0 &–iR\n™+Éo€ì©–\rÀ^2q”Ë©\0\\¨I@‚	KÀ#peC*!>€/á%|È…Ì’ÁÞŽüô\$è)çÀ§1P30(\r¢+\nZÆzž„))\0*®\0kà€ÙÅ2¼–Ï…(–E86å¶s—tºf&”™Š¡´“+;”Ø76&ãK–_Ž(›9fÓ,@-ÃÉ4l\$Û‚e7\0ù±:l“LÝæM7.\0ˆ³|›ðo–JÛ©ÀÎZ³u•̺Š'Èy{ÅH,#\0vU@9!¼¥	Ñ'†¨&„òGôøß@_-Ù¿³ºt;Üê¡:©µ€²u¡<—ˆL†iÙΚ_ꀝأ@U6°Îù#ä_€L'~ùæ/Öm`\\Të']=Iäât°Çž¸Âà)ÔÏqùsÉ9Âa<RPº|tžút&5°äs©lî@¾	ÞKÆwS®èlÍ:9úN®wSø|·göÉØOùAП<ë‰BÈ€\0/àz@´	ÍÏÁ•Òå†=?=iÞO‘ŽkÓŸ=\0E@iâÐ\$B× hO\0Á>DÖP´ó‹Uäçцj¥HìÂ9F¬BcCi‰é­BwMާtÓx€PÀÙM‚?p“®=—äì8ÜÔý‘Ïlg~¨˜tÁa©€%]b\$àØ\rˆr„èÄa,6ÅtŒàW)Ž\0U¨›F˜	|æì“¢ˆvh¦Qú*¥Oƒl.C\$À\\ ÐցRRÌ<lcù™&Cj3Ñý%ôZM¨öÀz9GpY’â¹£\0i\$Dµ‡d‡ñzt[')[)Q¤ØêÞkÁpi0·#cþ‹ôNE¨ô(ºC2L	Æ@9hÑEJ5Ò,šh{&Jzö0n€vª©>[€j“£Û[œ]ƒK•ýRîJë>.;ù¨íF=RÚŒŽ<råÓM¡=—Ô’¤ÜhØ^Y\\RmnËÐð Nn*g‘¦ôÒÅB¬·5^QÒ‰@O¢°x¨¡HIÊT ´â9½)(‘œ&µ‡}A)PÊ\\/êô…_Õ!́H þÚ‘¥¤ù\0éBá­\$z4ÓTYu‚J’v\0ꏃ”¨…%@æ32\0Sôm€--Gi@¸úQÅ%Ñj©YÝ+FuzlSž—”ÜW3ØÅ·OrŠU\$EÔè;¹M©¢\\€Ô±Äu/£õjeQªš¦§,#J¡ªXPÔ<UH•TVVé#Uê™ÔUbˆOU´DZ‘⢵£Í8êÕUJuS «À‘g)XDZK‚•¢Bî\n¼@2Š©ìx@d&ü ½eÜ«Ià@ÊFwì¬8“©\$Ù'IºV‚V†U\$²ETÎ_ð*ˆd¸/áFCÓYdp§vGƒ‰3‰ ‹Ñš‹L^(ù`áj”÷2S¸ºcÛW¨ÜJQYiÖHB”£ckœRè\nþ²U\$jê\n„ZAi€î»¢U*wKDRxW‰LÂò­ˆ€+fÚŒ@ã¨A4¢àGz…R\n²5‚b¬\\_²Ÿ ­ô‡¡á0¼C@¤\$X\0+Å]¤ÑÂè\"?‡n¦€+QIj\n»x\r€ôB`S¸âM‚ÈÑûŠ\r o°@‚À6XÀ\"{±\0µãb ¯)–ÁM¨cMðW ä¶D_áαÐv@{cÐ:¤®%[%‰C²þ1¼Ù;AƈÌTn› \0º a²pážóe~ÙU5 s©V†Ýe|M9‡€9 hË@æ¦\0êÙ~É@.³	l€· Jv]©ºD§f€7¨FÌá±³ËùŒ,/+:¾‹íÚXIi­\0U¢â@Nµá´\r Ê¢,².½i¶‡ª³m_ûFŒàÖõäÀYiUÔÓJ¯!©gûLj‹ãÑú¬D“iKAà6²õª-U«KfÖ_N€\0ö-3©ìÀã3+¥dãiûD	\"ö¯µM¥ml‹L…XÜã㯸Œ>‹&|UÕсõ`Ïh¾ù2¦ÑÐn6Ý…·ÉI+Øné-nDÃ×`„µ†®°É”°@ã¬B!;X™smȯ·†pC`‘p5Á°¬¡O‰%Z/Õè5”³é#CK`‚XˆªÂcb°Q#«§Qa»–Ž…ƒ¸q…èpÚÝ÷)™®G+~Û–ß÷\"ðlM_^zò©šæ!ÌÉàE«”Ð¥’®šÀ‡ïa úØp86ì„åˆn+oì’Jâ¶ö¥¾,¹¡ó‡¢ºw\n¢]̓pëŠÛRÁõ'§eÖJÕqµ'ܨ%£'€nlO‹h@>NBÈŠX5,ˆ‡‹¢ÊrGr¹ Z l\r(ªË‘jIù†±lŸ¬%b‡;s+±× ¤Wg7¨)’*e…¸1µ•ÞÑ3“L e@(»p\0 ÐÃŽèds®AñÖD\0Í\\bD§\nuê/&1¬ÞXR×¥E楂5¡Tœ\r§}7õ§”ªîÔþ”AÙ¬áÉkâ\\–øö͵´ŸÇqà2Ü€öZ-wo´“tßZùƒ‹¯]ó-yq2j+Õ†¾Õ­Ã«¬€n¾XA«Û\0†\0º¾+S•+ïY6_BúV7z®nZ@̆²Ô·Æ´]´-UMJc*¢ü¸´®í¢s\"ß+\0·ï¯x´B3^«öà0\r÷ÜÀÎïÁcðÖ\\jÆÆ*¬P-\\Q8ˆÊށ·…l•cË%XþÉVB‡}‘,€þ;(‰`*Qú	\$áïÛrßÂ{ÁKøìCúÖ%¬\r¥ˆx	ÞøQû…,¶Ø¾¥×/‰vàä\" pÁã¶ð~ Óáã ÅJ5eãü®Eš-^âX;c²\\©¶×¬m‹´7£?˜6C*庮†,7®HfÄ/Â9eÌ0[@ñ¤!bê®íÅþUБ=›Äi.Jocñj;ø—B³\0¼ƒï]Õ”ÑúvÙGÃÜ8àO\\\0ÀÇŠüO©›\$Ž•.&	p‘\\‹H1bØpø’:F\"8Ŷ…þ‰ŠøVx©ÅýµR®–xä=À3Æf1Š+|Ò»\0ÂBÀ¼kbÌPÇLÑ’£ô\$zÌáàÎc	¢ÇÐi,Pcb,pÃn(¥Æ,¸ì`'/»~êÙkÖµ‚Îp€q-›Áȱ¹VÀÜ܆Ü\rÙž	\0á‘‹dSˆÓÈÚÍ+º\"Šéˆ­1\0(Ä-’Ì1~útcªþfý¸àBÛ‘b}Ø ’Ã0<1\r°¨¨L’€»\$¸ˆ2d\"1ž&ì™Æ€BóN…Ô\ràB\rrƒ«\"?vädäZá±.\".\0?wä¼9€oÃà\rÄ0¥Ñœ!¢ÍdR€‚뤶\0‘ÃÇHëÜra%ЊØ+\0yrƒH¾sÏ’4W#œ,\$èô \0„*xBó\nPÌòü|„ 8@/ \0ø2U’°ábíÝè¢ÂÎΪxÀ!¨d§°óúNÿ3SÔ?£ÑP»…€(òg\n8·‡ppŸˆü€S9õ@‘'  Ç\0úyµÿ\0¦y46¡H<‚öÌ×ô\n`S’ˆ…¼ÈûCY¹’„”³jp:\0N(ӍŒáX4ŒkÌÈÓgßDy‹<–n4™£ØrS<ÒÏýˆó¯?¥\nÀÇBãúf('™Ì~dgÓ™SËÏ?<³ÓVg(1™éãæƒ2ù£ž­—²)ÕôŸf`éZ€¼a“>t{ÀœÉŸô’>ñø\0ŠìPû`O¼\\sŒ<õ?4äwÞ~³ÜÇf@z™ÿÍ~hBW Ìø³á´ŠxhA¡¡ÜO'=úP֌ײÜö±ë=óúc[ysèÌûgâ|¹‹Ï掳%™Mè,Q³ÆÒ8'X žhlUs®…§Ù¢ú é4ËÃqDýÂx*8g§NLšBÈ–¨;§}%eû@YìŸv ho!\$æ›NcCXì³@Ð;YH'Á°@^ à·Rf^x„\0^osÜ_fª—“;¨Ópj]²:’Ô¤ïõ.mLêl\rš®V¨\0ó@Ü€¶Ê\"ÓÕÄ1%Œ!_êô@-]8f¤ç -Õþ±äa]Y¯WšÏˆh`(‘¬äJë@…ÁÖ\rˆ—õ€Y	kB(€xÖÂ:5˜B\\QkO[:Õ0˜¼¡­uk›X¥\\×P\0ë[öx¹ÀÅ®`ŠRIGÕÐk5°ðª§YzÍ×PÒ™¬=†l=áõÖe€\0ç•2=k` Å[K¼‡B꽍Ìû8ž¶C±Í}k«c{#ÖØ¢„ølŸdfF.̵ü-›AºÿÙ6º†K­’•¤ÐÖ×Pàv„'¢lHiAÝÚ8C¶“®	G„`GbyÙ¾·Í- 0•Ĭ;[*_ˆ¡ãmlH{(;Uo¶ÕÑ*Ä]Š,Ä‹åŒÖÆÈþôXË“¡80Cµ°K	­!N¼õÔ(I`¨³	V¾Dv½§íšwá·rpc,ðåŒÃÓ\0ää 9~s»Xn㦇¢žŸr[ec·4dçpÅi	\\…Èe2âãl±ÄaZCk»gl÷bB„™¶7x%¿ê轞í€Å»Ùk`ì\nÁ(@ź«®„5åݘ¥Ï­ċ#t›–Ü–éãE½}Å„sñ–Lvö÷E¹ï\nQQÛ”Þæú76}õ‹Or»çj§b¯%@7‹˜àÛµßh³w͹÷n£kÙ`Víq·±Íòï³~›™ß~ø„4{Œßþå÷ë¾óË;òßï8p2mP+ dÖaX8&,=Òn›}ü!/øK&\rŠÿt´H™Ó)/øYÜ”†6@å¯=}ðŠðEU§lKÃü\\kÓb[×â1Gø®­M­)™J¨xXÚEïTä¾	/¸\"-‘ë…<4ßxDˆ¥ÅíÐpÄ(¼3ÞÊŸ·ß´'È+Û\$\r†¶<rí×n`H\\t\"þ¶70=ä·Y×Wéhsð­\rÏw¼~°!ù0@6l‹\\† •§/þBò7’¼‰–ßÏ>Fÿ‘܉\\¶¼RÙ¾-Çn‡€þܧ\n¸?F~†œaÞ×+xÉÁýëñ¨\rœl,fúCß+­Žîw•i¢GøÛËî.X!¼_à71ymÌ~ñ„œDå¦È7åÊé	÷š¼ÆåîûÅG;gówƒàb/89¯ËxÑ@!R–9¸éJq˜Y¼hß'3¹ÏÍĬ*÷ñXw‹Ë®^—ÛË	¾7ŸÎî5óÀûåÖ`ö:î#È+Û­0˜ž·œS¯ˆ@0óo7:&~r(Z·‘G1zÐþˆ€·¢pÝÎñdNŒï“£›`ç¿/Fz@8Ñt0ŠZÌ_ ‰ªÎ0³™{Úè¿Lén•‡×‡oEËÍÑâ=rû¡‚Gj]õ H•¥›²Ò·…»ÞAf+ªÈèVº•º­mžœ7ýåßB‹ÛÓî*q‚þ}cãwس=Û„g¥»wE¢-H·°€»·¦½&Rh4—ªMêžZÕ_L½©]WV'ÁÕ¦§Íñ\"uŒ@-ÜaMÃsº@9êL:ÈÕ’]ù#‚ÝaëoybÝ\n\0[Øêrðp*}Qí‚bwßÛÓ¦?†ºâÿ;Vc¾Ê°›»	«.Ûsç´¢XíÖ°ûy·R=§&d”ã·rûO«žçõ2Åj!Ïux¥ÜÎÔ§R{NÖ&øµÑ»®5ö„}£ßvyÛ°Ž1o8Z#žþ{ÛNärû½ÝÑï‡Q:BÕHzW{òïW{:ìržÞ÷ó¶}D\$§j7)àP€÷ëÁÐÝCvV¬X—¾ýdí¨D7ó፮€·¼,Ôh»÷á_ø]·^í—qσܟxO»]­ïŠö¬?p{Æ\"ˆðOŠ8Qáµ?xw}ùJâ?9kâÞüx½5buÛ&÷øÏo›ÅÆ^ñ†õ¼Ÿ¬>õw“g]çíh¼#ä?+÷‹ mï(³¼¹àÿ/ngŒ	é5â5<ù;‡ñüòÈ…¼Ë³½œxÍ%‡³‘;ì(³ÞVóŸ–;Çço-ìó˽ëòÿ.eänkpËÂÀ_ËFäXõ9ÓWjQ¥ÓàCBاåv3R=°ì†¦;aÙ][yËÈ»4Þ/¢|óÃ##v	@_Ç­}UçM>ùßÌþ1§»\rC£MúqƒCÞÄÆädÄ˜U#[ÓɦŸm\n\\Ä\r6ô'Ï>‰ôÃiI;€R\0X€ç<rW0[ÀE°dHSèH\n^×\\”¥3ÂTû´ÀF÷xB™îÀ\$	Òi÷´-‚­'ûÛÝÕ÷Xf¼}\0#ɤ	1êo·BÆ€*;Û1±(\0ø~@)ü§Òh>³ª{³â~Ûøw·ÉH/vL\n9È?doÒÑð°,‹x)#>˜#b`',úgTð¤È~¯tˆ	€YÐ}Ùï°/]-'Òüž\0¾(ØÈ þñ@Ï¡î/Ÿëä…>¶Š~ðolH‹âžÜöÿ·½À/qû–DƒTúéö~¾¡o|ÓìaÉþ°°#|F8ÍûdœÏ¥ò/±|“ì¿u÷¿€Vîâ©hø\n>Û÷ÿ°{´	Þõ÷ˆýçï_{þGâ IaùE½÷&{VNñžod¡õÃFÆBÀXûï×½ÙñÀ(I¦N@Yû¿Çÿøÿ·ýÇð9»üÉ¿\n-èû{çã@RýoÛ½Ù&‘o^3Y¹÷ï»>ð¯†|”òŸø—îþ-ñóö¶ùä~åý/»ò?*ù`\nÏú?—Sæ!VùŸîÏ©óœüïîÿ>ÎèÕ¸}ïãþO⟕ü¿Å>îýRMïûºƒõãø?b@\nOÚ?þà0¯s\0ˆ¢IèÏ€’ú+èà'¾’úX¯¦À,úƒò`'¾¦óê¯Ô?€úÓñ¯å\0‚K௸¬úCéO…À2út©>¨LO¬¾¢Lïv3ŠàúÒ\0ŠÎ[PΛïlë¬H\nhä²Îlr\$/Àý\0+½Øý\0	»£ž¨	©\r@ ?Kå)<#PøÓîïs\0Žø ” ÂÎ?Kæ@Ì@\0ÃæÏꀱø\0²%,p)?#£îïÄ\$ø\niL€¦¤°3è[Ìå3˜’“îð?²¬ @Ï´O¼\0ªýö°A|P\0™ôD?²N@\$Á,£Ý/ÞÀÿ€\$B?0ýÃø\0‚\$¯²\0Vú’LhÍ…¼Žˆ	èé€ùŒ£é½Ê>¤#6ý+ù€>öR:p¾>«7#÷…½\\Ð³lΓãAoãüÉ<3lø	pe#7ÚA@)À±ðü¯Ü@ÒÔ#ýAV?hýãøƒ	0*ÐZ\0“°*Ð\\AuƒüÐ_>kÃöÐb?>«ïÀ\"…½cæ©#6>ÒBÃö’Òü \"\0ž>Ü\0psÁÒ?ÛDPvA\\#þà(>Ò÷3EPŒ¿>ûÓ:­Â<\n´OÅ\0ˆüd\"ï@A\0ô°Aꎐûð‘Áò”ð”Â5ìÞÁÿ	“ø #¿‡	´ cþ©	“þ€+´@ÃùhØ€ø÷¤€\$\0øŽ‹:M3nø’3cêÞ`ûèØÂ„ÑT+I8¿Bò3@*ÀÆÐø	@'”\\pM¤8Olòüøû¯†‚­»ÝM€Ÿcî#üÂíÄð7B÷h`,	àâ6oŒÂ\\\\.S>¤›DÌÙCù˜ÿ0ŠË´ÐÆ£S\$2ÃòB‚ù«ù@&AŠ>ºLðkù¬4ÎAóÜ­3˜÷Ô°Ð@½;öÍ>pùÐüɤ‡\r¨\n°3|Î\0\nO‹Aø:6ƒô\0¥d7à«@8ýœ%`#Ɉ[ÐÀ=ÚDåÀÐ\n°ýÌÜ3u’LãóC™¢9ÏBCÔ:`£Ž‘\$!hÚ\$Ó“;ÐêB”20uÁ[¬8°ñC×	Ä<ôÃäúó篟ÃëdPŠÃß|=q€2pí€V>˜û°áÃ÷	|*1\0Âç\rÐE\0©dAov´PÎt'?d,P­D*ü@	/Ÿ#6øÔCP‹BO\n¬©8Ä',5ÏÑüE€ ½ËLq\r?m¤Eq\nÂzþC@+¤är60åCê?3ß/¡Ì“ˆ\nP܏ÙlHð•D—ü¯Í¤5\nóü°°ÂÆãói)D°„1(ú£Dƒï£7ƒæÏu>Üà\nà\$Aæüj4Í\0˜?ê4Áª?”ÑLK	Aæ¢>Ͻ?Œü‹û€ÀqDI@³£\$;ð†D®Ž8	 &¾?;°c€—ÄJØ£bÑPû¯ÐÅþ\0	ðBÅ#3í`‚øˆ)ªÁ»ÌOÐ3CMZ50âEO6èÔC¯ì\0ÂÀŒ\\\$èÍÔûp[Ð9BãíÁª#cj<‘1Ä1B;còÅDBhÔ?Ëô@`*€ƒ¬.qbÄÐøX	o?;\0KÜp¤3¥8	ÐRCÌú6/®¤—ˆ\$>lͤpIÀª,!€*\0®+ÜÀ>=÷]±wÅã\nT^pgźú#ó\0ž?\$J@Ä	\0*CÈ*É7Æh\nñj?“ê:pArø”]Y€’ùÔL‹ËDbÑŒàúïBÑ4d@(Dä”ÌcÀEçÛâ@>\$Òà	4¾Ø‘þц©</¶Ð?\n€/ĺ>¬gpŽ>šŒü± ¤I6i8¾;³êÃèÆ‰cÝ1¢AZ6€!Æ}<j±¤D¢¤jÉ(F’?dÀÂÅ'óêït\0†üTeÂØø´1– ú ü£þAv?lnos3˜’„50†#Æ>¼Èòœ_¯«Ûd°©¿³¬UкÁZPú©4DŽ|;Ðr£‘ÃCðñ€ˆø[9£ê¤¥ú5IÇ5²I‘É\0ûEOÜB\0{9q C‡|\"pUÇZÎPû` €²øý´GcœQCëGPúJO‹ñÂ6(ÚBïóÇz>Ú7ðÏFøöÈ0IÂ:¼vOŠÇ‘¢BÏuEäµ·,\\0ŽÇ¸r8îÈûqgA6>ÀýÑ74D÷0qÇG¥ûêÍ>-SE@# ÑÈÎGÒ÷¤.à*\0i\n\\-`*\0q\n\\eñ½Áÿر\"—Œ)qu¤ýÃï³nùô@`>DÔ8	\0/Ä@þ„_±Ú€¤üw#îǍlƒÒG‚>Ô„²¾-+ߐ6¿Wl%°6½·l0®\$5´sÔÅ&Œ\r *\0e!èrÇÿœ€qI” \"ÀæÑ> Ș3EILÅ\"‹â‰94G\$/ñ¦\0—´‚©\0¯ Ñ-2>/„ƒì倘üèÓGg\nà/¿LŒq®BP€\"#7ôzñáHMÔ…O‹ÈO\0̏ &£¶2L‘ƒÁT^P@Zúd¨À=”]Q—=çÌKCïEã\0ŒQO¢Æ\\øôs0¤¤>ƒèq—Czù¬†±—G„>¤†²¿ü	ÌÄ@?Œ0Â?ü\\oÂ¿³–èø4Md1‰9€‰\0¼ÍGò?m\rDÆÑü(Ô´LdòÃ\\KJ8\rE’Ðù-24U 0VAÛ”…R=ÈEäe£þ¤5!Ì2m³qðüÏÓAEÛô²V\$ÆüÏ•ÉâŒØÅI9Óü‘	C&ù\\GÀ)D «ü§½òü4çIç#pú«#ÆøŒ—ññCˆù\\x£ø¿C(\$òƒHÍ:NI(J\0΋ß\"w\0¿,)PØÇ¬‹íÏ‹4<þÔ!òŽ=ÞúœGošÄó‹âP‡¿6üìN±QDë\r[;‹A|KÒ'AAäP\0¥C:šÊ„̉Ñ4Åã*To‘†£ÕD˜F^ÈûÉ‘\$)Ï¢»¬\n«É’àÍ)’(Sà‰\0ò’È(ý\$:ä­@à‚²Y8’‹JÐà#ÅЂë+œ¯\nQ5ß+`a+ ¸iþ`6x𑤪†è: ÚŒà.ÐT‚:‰þa˜\0øŸcv(ƒ^X¨€Â¼H˜O.\"JÊðO\rÎË>ex-¾¨J¸€èKPïû¤rÔ‚-`2²€ÜË_à7€Å-!\"Jؐô¶òÝJêH.²ÚËo-ø.²Ý\$ª<¸BOЀ`> ©dáµ\nêH\"ò؆o+›“§s‚ؐè 3ƒ‘+¢± ©6¿/¡ƒa.Ð\r²ð†nd»²ï˨é’?ˆô£z1\0¥àð‚?‰¨ 7€ˆâà<À?âãø\$Ó\n`+Aw*MQ¼Ã<Pýo¿°?,)#P>”à€šøÌ„\0¦?jŒÞÄ“ÄVqÀ?“£ñ³\$¡	9¯õÆ-üÄ2ŒÌIÄÐîD9̳Lg1h[ÌۏÏ1ŒÄsC1sÞ©9Lz?à	 LWdÈovLŠþ#ðÐ9`ͨ0æ€Þ‰É¦W·–ˆh>\0>¦¢Å/)Dáü²·Lº¢¡ÀÌÀ\$ÍaÀ†¨9*ƒ<:C+àJËìKPJ¸\"—L\\Ã*bÌò 1ÔÀä6ë4ja+\0î%Qf ;KœE¬¹ÀÔš`è> >7¦tÒHw€¾MPn3I:fàD <LÄÊRÈ'¾.\$ðíBO\\²\nû	Ðø5ã86Ä̹D1‰<\r¼³\$Z…œð’ƒ„ï4Š%r̃¬²×àúÌþ\$€ƒ˶§»éo™^Ú\\°È\0øf[z“e…í6|Ö“gŒ&ñ8+M=6È5ˆ³\0Ò1Idì{™^fqd趈s7(|©tM.]HSó[€ø¬Ô ÕÍ;7yC„—šÎ¸mÎÌÞI|A‚Ê:`c †Êß8\rÒ…iÔɃ¤ßÓ@¬‚P`È~\rlËa=M3ã€áf‰<ëÀRå\0Ï!ûÀ@’ØeØ«ríÍdO‘t ¬‰T°³-æXY9A“˜:38áOÊÞadÐ¥ö’gL³fxË=4K\n&€ôu0KòͨÇ,ô³o7¤€ëĆÓ,à½Î3Ë:h|’ÎKbá)AN¬úÄ`ì€Ñ:ØÎŒ€×;´ €Í»*sI&”á«Rsµ>\rX\r!\0\nÀàBsVM63˜KâO×:Ä®ƒƒc5„× úÎæ‰X!AœQ9z%`º{:èHòºDëE€îcv!‚Ν,Èôá“:Xƒ)¬(üº%˜Ë2a&Œ«,ðl3Ó8j1è|’͇É=CRrÍË<â\$óŽ\"KB3äöÁ'9…:|÷)`Oj+îÀ9	}-õSÒ>2¬ëUU5ÜôBUNàóô÷²ÑNÄäìS¾NÄüì«ÈO²äû3±KNìÐŽˆ†¨ ×@:/ç7£ÄQ†¨ç!Ô@.’(&v9ÔédÓøŒ^þ“‡’ج!ï¦[.pGc K#?¸füÐpÝe“Oæçd®€2\0k6)„,\rÿ65GmOFV™dåiÈx,ÿa=O@s³þc6…`¤Ø\rJ\0å;‰³H†(ù*ŽrÅ-Œ¾.íMÛ[ BΠ!(àóM¸LP«bUèÛpJÔ:î1úÞE“»¦º!:¢,ô:‚YB‚ò*KRÞ¤¾rÍ0جLî“a6Å;6+2Æí)èUB`JsV0È:Ô0_B14/ÎúíAOáœNeúÈ)A~\rÚÈ öÃÌ –NPów“,È´C„î3œæ®¹ÌÞ°T3öq9}SQ\$ÄãA‚P“DÐ;!:À!îæ¸YŒÐsÄÎû6Ø“ÑÑRԁŒFt›#C¨Ï€øQ\\`rXr…<í'ò×72ؼ´O-„w9Ó¤ùËb8à5€Å3{¡\0Ä7ø\ra\"ƒ\nh[j·ŸåFÛa)”Ñ+€2Ï<%’´M¢ê|®m¸|\nÀ54pˆþ	&bUQ¨8\0EŽÑ¥4AAN,ˍàì˝FØ•To(ÉG`šO•GA›³êËGlý`:†=è\0<\0Ðëꔃ²ŒTÌNϬ=.û´ 6Ζ(ûSBİô\0,Jð?”.º(é†%“…,Ê?B.<2ðhM΃I`éÎŒá4ô¶*é˯G°ëì'ÙI¸ÛíÊÑ9š¾ôžRX—E%,O\r,ʈs³Ï*•(”}<Ú—@c©öRœj]Dþ`UR÷γ,˜.²÷·d£¥rø¦’	\\·N•ÒÆl¸ÀØRÏ-󓴵˚Üëkô·Q•K„½”¹,ƒIå.ÒíÒêšT·@1\0ÉK 4¼Òý/]04¾K›K\nC¨&•F,¶ô³SF0“ÔµS.-´ÉÊéKÅ2ÔÀRÏLe'ÀìÓ7L…0”ÏËoKõ3TËS.å4T‘:X̾4‰Î9/:WRò9.Í62ôËËJ6ÀŽS	.ðc´¡Sv^ 0®»ËèO|L±MD%3î 4z3Id\n»ö•áú#tPq5h{!7Z‘Û»2 „ÆthÊ !îK€Ñ7YÝó1S³<»áh‹µ©½Ç-<ÎÍpÆø€jéÍÖà<4øÓ¹O˜%@‰OKBø°ôS¶!10Ô‡SÚҐëôõ‚YF…?UR4ÏÁ›ÓÜÇ!•õŒ~ÂXl´=¨ÇH|¶5QHýC&¸\"1M'µ8¯5a`Å?¢SPlõ`0—\\ÝmËÈTM,8'1eQaA&	\nÇTRèI¡ÑGÌ¿´ýÍZxôâ6yQôôñ¼aÀJÀ‹¼üûkU&ÿOXHá‚ÔphQEN†â=Cµ\"ˆLÉ›( ÚçQe@\0;ÐñQ®ÓPÔÅD\"€/—ú\rB༖tãµTžì\r<eÐÔeS}Om¾—EP­P\rüÓ«P5B•4U\rR==õBSÏR}Hã“Tè#µE\0Îô¥U‚=QE‚J<ýSð` Û‚¼1x\0ãU:óéOá/‚¼€+µN J`P!t8Õ\rT¥µ7 SõR58\nc>ÇÆºÈâ!ÊõŒ1{ÀúÓ¼uE€ÚM4{Ö”4TÞíGa;Ž|ðñà5\"SÎÕýNkSä8»DÄÔ?JcU0Õ¯RtB¸{ð5qSåB„Ï,±\0ÆpÐàÔj†!‡\0006K¼1å ƒX@¦D¨V­å_ .Ô(¥_`-Öð`ÆD¼àua .‹•X\rFÃÕöðõRõ…ÐFD½•‚S÷RxhÁª<mXjïb­ÖWù_G\nVšÄ©èS¸ï\00074Ù\0ÒLRÁ\$QíX›pˆÄÓðù ×ê\$°Nó¡Ö&83&a+²€|l³Õ‰ÏÉQsÀA£…CXšú]Î_X]‚\0á+8+UzƒsRPΨQ\0Ü\08Õ™PóOÝMU¶ÔH6!ªVX¤5†˜X…a¤ÇV/kӏVF”ý`‰TŸZ\0D5FÑOS½nákÖóTMSÕ¾U\rTMZÒºBðÍìoÓîÜEgÿWGµfµÅ„-YÁ(µ}V7T0BÀ©œ4Úð’Âòƒ[9‘5ÖX´åm¯ÿXhét>×LU`4\nÍŒTÑõ††o9­vÓ×FÊUm®Ö\"ýu†DÕ€	\rw+Ö˜\r`©V(ýVÏãPËÆÓjô]K⏜4°ìoT.\$mDĵ¶	S’à‚­e@3ÿ×­;@7mŒ:È륥“´dðÈ!õâ¥Zð£ôá»Q[œåõÑ5P•µ7;Sôº/BÖ!McÃG¹ÉT»Wõå(V–ÖÔò䯕<7ó[lÓt…‡^Êô×ø\ri0ÁPÕÐÍa£|VX‰•á̃a[x9Hˆõ]¿õ¬^&m¹‚¼ƒÒ¤ù\0ÙXl㤫Ìú•‚•Þ€»T‹ÐáOXl0£öØ(ô,Ï`€ØoaÈÕu€×ø3½‡U#Îô'0+Ó½8ñ]HT!XX\ryW@è¡\$ÛMQb¹‘-ä)ÓX	oõ†‚\n|Å`-qÎ-bÙ¶U‘VcŠÇÒÖ ‘3N=5vAg\rýŒÀ8<IGPBÔ9O^8.	Xk®ö;+\"Cµü×Z/åÂUUo[i`Ö\$×ïd].âÙ(s¼Ñå“ÔèÕ`-•Öâ½€óqªûe‘-ÂN¿=#[ÖMÙPè…ÅÑO^(B †”6ÍÏ_u–¶2:0mx ­Yg^5”-‘YG8”´AØÝc¯VVßÉdô6Í\">\ra­è™^íÈЮ0õ\"䱿R¤¬–,·3Dä¯Åøß¡2iGÈ5§Í?:\rT!ƒwg„óM[7;[v{ÖªCs\rU9d×`ØÈyh\0h@ØÈ~ŸqT4Ì×_QVÍvÃø•F5ÔPƒs*ÄMc]Ió9Ú1T0m†V)S•ÓXÖ[üâÍ*Œ¨c“dA+Œ1hóbõ:×IhõM@Ýs>P¬ÛÍÞ9ûvuTË>¥Ž‚Ö½`	O5ÙccÛÍöjϏ?QëTmq\$¼¹—=(VÏ6F\rTr¶®~¥šÃ\0Ø|m•CÚ)[Õ‚N¨ÖÆ,dÐ+;µQm™-Ňðê\$µo²B-žsšÚÇRˆ­ÕàN›:’È/8‰>øb.°Û40>‡ÆÚñ,‹.tÚºJ¶\rÛ\rk®•6Û	WMmØ3[Ñx5œËêqÕÉÑìLb´6Í;`•Lm‹ÿ4•Iµ6^d!5`7¤:aOÕh4õµÀÐ-3üÒHÈUm˜€¶Ú’³^_ÀÔNTꍱ²[PHðÙØa=UH\rE µ\rjM¶•”SåPsN6ºMXQ 5Œæ	Ã\r’Û­YKqsþ[¾s-\0Öé®ï]¼aN³d5?ó+—Cf¼ÍÀRe^ø+@Ø[ÓP€5­ËÐGa‹öôÒµoM@w\0QyoKŽõUÛøe}¼Õ[¶_oK’Ž@Ûán»wxVýpEºäùPuo5öR“ñ8c·.¥	Uo5Áw\0ò\n(%ÓNp¤ëVÖ®ˆJàˆ AqtÏ×Zæ#Õˆ³òÜk6””ÜiEÜØV‹R{qü×fØ{3l@äPqH‹r!VS]úÈ6¥Ú'q«Ð@>R=E\0ùêSñ+UjõÊ”øYÓ[źuUÕ¸Õ»rÌÜÇp»6Öõs]h'tË	mJ ¬8ñQUUuD’­m2z›Ð„àˆB¡K”ßÜÝv'P¿l]AAfËchÈ\"RåV«p´ÓXÌü;UË5öÜŽÆåÒcƒÖ°zPTuUQYëõíZ¯5åU¹…ýJen5ÀÜnÞÕovÅs=Hu½ÙÅZõoa‚itÝoUÀÚ»uuH5nÝ=jSÐÀUPZMNÄàˆÿQmobF·A>´]i\\¨G\rTŸvÏÖ‚Ôâ\"•Ä2Ø×v4γ=]¶2åz\n=:¢\rh*s¯×fÅÓw_ÔäÊUt8Å[Ý„8]Ÿ+=•ÐëGÕ×7z=n…Û—JÝòßuè8|«Å4u]ô	caÈÝzà×€YwíÊt]ܪÔÕáÅä^€ˆÎrÌÞ)w­]Œ%‚i,˜¦õí¤e}w—0<Õ3ÕäµnÛLr½å.³Ýiy-Þ7(K&‡\r_;f‰[­Ìˆ\\\rXÃ+Hï…çÔøa=ܳbÞnôc€	,c’!£Õ8\$m“VõvRæJ]g -†W¹OsˆôŽƒR( êÞ5]WHVC\\5@DÝ!s%Î’²^×sdñ%NÐÞ9úÈ7·Öƒ{U™¡+ÜÙI-îÕ¼€ïP\0\"FЈS5…ÒFÞÏ[Òâµz¶Åsk(7ÄEz•Ÿ÷ÇÖ1-å@Ýxñ̹Ú>M³g‡ïWM£âjÔ»n\nÈ ƒ^«tLµ·ÓUc}AÃVRÜúõ™@;ÕX-<sÔ<×t…¹C8^!P}Ì3q´d·\\ζLÄ3uÀÖúÛû\\-\rSlX{sàLÅNlÙåïL™ßŸnà‹¶&ZÅpút6_[\r±¢°¬ƒVÅV÷è„C~ÈIªE…?W%üUöÜ«u…[ÓATAW\rü÷•¦\rdáwøßÅV½ÛkÝù¶þÏh,8£ÅŠÏ”Üí×D×ÈØ»¦Ë­|añ¸6-_1O×Ã`j…ýo?7>\nÀXsôY‘nã^cÑÙ{jÈ7®ÚÄÚÊ:ÈÜ]E\"JVJe~×.ÙQHgžT3r…cÆÙVßBceø“3e^Õ€…9®8¤\nò ™Zð(ä䇪½	;tæzôãՍ#	üq#à\0V.\nÂS/DkÈ");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&Ùœƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function
14
-connection(){global$e;return$e;}function
15
-adminer(){global$b;return$b;}function
16
-idf_unescape($Jc){$fd=substr($Jc,-1);return
17
-str_replace($fd.$fd,$fd,substr($Jc,1,-1));}function
18
-escape_string($X){return
19
-substr(q($X),1,-1);}function
20
-number($X){return
21
-preg_replace('~[^0-9]+~','',$X);}function
22
-remove_slashes($Me,$oc=false){if(get_magic_quotes_gpc()){while(list($z,$X)=each($Me)){foreach($X
23
-as$Zc=>$W){unset($Me[$z][$Zc]);if(is_array($W)){$Me[$z][stripslashes($Zc)]=$W;$Me[]=&$Me[$z][stripslashes($Zc)];}else$Me[$z][stripslashes($Zc)]=($oc?$W:stripslashes($W));}}}}function
24
-bracket_escape($Jc,$_a=false){static$mg=array(':'=>':1',']'=>':2','['=>':3');return
25
-strtr($Jc,($_a?array_flip($mg):$mg));}function
26
-charset($e){return(version_compare($e->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function
27
-h($Gf){return
28
-str_replace("\0","&#0;",htmlspecialchars($Gf,ENT_QUOTES,'utf-8'));}function
29
-nbsp($Gf){return(trim($Gf)!=""?h($Gf):"&nbsp;");}function
30
-nl_br($Gf){return
31
-str_replace("\n","<br>",$Gf);}function
32
-checkbox($F,$Y,$Na,$dd="",$Xd="",$Ra=""){$K="<input type='checkbox' name='$F' value='".h($Y)."'".($Na?" checked":"").($Xd?' onclick="'.h($Xd).'"':'').">";return($dd!=""||$Ra?"<label".($Ra?" class='$Ra'":"").">$K".h($dd)."</label>":$K);}function
33
-optionlist($be,$qf=null,$Eg=false){$K="";foreach($be
34
-as$Zc=>$W){$ce=array($Zc=>$W);if(is_array($W)){$K.='<optgroup label="'.h($Zc).'">';$ce=$W;}foreach($ce
35
-as$z=>$X)$K.='<option'.($Eg||is_string($z)?' value="'.h($z).'"':'').(($Eg||is_string($z)?(string)$z:$X)===$qf?' selected':'').'>'.h($X);if(is_array($W))$K.='</optgroup>';}return$K;}function
36
-html_select($F,$be,$Y="",$Wd=true){if($Wd)return"<select name='".h($F)."'".(is_string($Wd)?' onchange="'.h($Wd).'"':"").">".optionlist($be,$Y)."</select>";$K="";foreach($be
37
-as$z=>$X)$K.="<label><input type='radio' name='".h($F)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";return$K;}function
38
-select_input($wa,$be,$Y="",$_e=""){return($be?"<select$wa><option value=''>$_e".optionlist($be,$Y,true)."</select>":"<input$wa size='10' value='".h($Y)."' placeholder='$_e'>");}function
39
-confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function
40
-print_fieldset($u,$kd,$Mg=false,$Xd=""){echo"<fieldset><legend><a href='#fieldset-$u' onclick=\"".h($Xd)."return !toggle('fieldset-$u');\">$kd</a></legend><div id='fieldset-$u'".($Mg?"":" class='hidden'").">\n";}function
41
-bold($Ga,$Ra=""){return($Ga?" class='active $Ra'":($Ra?" class='$Ra'":""));}function
42
-odd($K=' class="odd"'){static$t=0;if(!$K)$t=-1;return($t++%2?$K:'');}function
43
-js_escape($Gf){return
44
-addcslashes($Gf,"\r\n'\\/");}function
45
-json_row($z,$X=null){static$pc=true;if($pc)echo"{";if($z!=""){echo($pc?"":",")."\n\t\"".addcslashes($z,"\r\n\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'undefined');$pc=false;}else{echo"\n}\n";$pc=true;}}function
46
-ini_bool($Nc){$X=ini_get($Nc);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
47
-sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function
48
-set_password($Jg,$O,$V,$we){$_SESSION["pwds"][$Jg][$O][$V]=($_COOKIE["adminer_key"]&&is_string($we)?array(encrypt_string($we,$_COOKIE["adminer_key"])):$we);}function
49
-get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function
50
-q($Gf){global$e;return$e->quote($Gf);}function
51
-get_vals($I,$c=0){global$e;$K=array();$J=$e->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$c];}return$K;}function
52
-get_key_vals($I,$f=null,$cg=0){global$e;if(!is_object($f))$f=$e;$K=array();$f->timeout=$cg;$J=$f->query($I);$f->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function
53
-get_rows($I,$f=null,$k="<p class='error'>"){global$e;$eb=(is_object($f)?$f:$e);$K=array();$J=$eb->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($f)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function
54
-unique_array($L,$w){foreach($w
55
-as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$K=array();foreach($v["columns"]as$z){if(!isset($L[$z]))continue
56
-2;$K[$z]=$L[$z];}return$K;}}}function
57
-escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return
58
-idf_escape($z);}function
59
-where($Z,$m=array()){global$e,$y;$K=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$c=escape_key($z);$K[]=$c.(($y=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X))||$y=="mssql"?" LIKE ".q(addcslashes($X,"%_\\")):" = ".unconvert_field($m[$z],q($X)));if($y=="sql"&&preg_match('~char|text~',$m[$z]["type"])&&preg_match("~[^ -@]~",$X))$K[]="$c = ".q($X)." COLLATE ".charset($e)."_bin";}foreach((array)$Z["null"]as$z)$K[]=escape_key($z)." IS NULL";return
60
-implode(" AND ",$K);}function
61
-where_check($X,$m=array()){parse_str($X,$Ma);remove_slashes(array(&$Ma));return
62
-where($Ma,$m);}function
63
-where_link($t,$c,$Y,$Yd="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($c)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$Yd:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
64
-convert_fields($d,$m,$N=array()){$K="";foreach($d
65
-as$z=>$X){if($N&&!in_array(idf_escape($z),$N))continue;$ua=convert_field($m[$z]);if($ua)$K.=", $ua AS ".idf_escape($z);}return$K;}function
66
-cookie($F,$Y,$nd=2592000){global$ba;$pe=array($F,(preg_match("~\n~",$Y)?"":$Y),($nd?time()+$nd:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$pe[]=true;return
67
-call_user_func_array('setcookie',$pe);}function
68
-restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
69
-stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
70
-set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function
71
-auth_url($Jg,$O,$V,$i=null){global$Eb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($Eb))."|username|".($i!==null?"db|":"").session_name()),$C);return"$C[1]?".(sid()?SID."&":"").($Jg!="server"||$O!=""?urlencode($Jg)."=".urlencode($O)."&":"")."username=".urlencode($V).($i!=""?"&db=".urlencode($i):"").($C[2]?"&$C[2]":"");}function
72
-is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
73
-redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function
74
-query_redirect($I,$B,$D,$Ue=true,$cc=true,$ic=false,$bg=""){global$e,$k,$b;if($cc){$Cf=microtime(true);$ic=!$e->query($I);$bg=format_time($Cf);}$Bf="";if($I)$Bf=$b->messageQuery($I,$bg);if($ic){$k=error().$Bf;return
75
-false;}if($Ue)redirect($B,$D.$Bf);return
76
-true;}function
77
-queries($I){global$e;static$Pe=array();static$Cf;if(!$Cf)$Cf=microtime(true);if($I===null)return
78
-array(implode("\n",$Pe),format_time($Cf));$Pe[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$e->query($I);}function
79
-apply_queries($I,$S,$Yb='table'){foreach($S
80
-as$Q){if(!queries("$I ".$Yb($Q)))return
81
-false;}return
82
-true;}function
83
-queries_redirect($B,$D,$Ue){list($Pe,$bg)=queries(null);return
84
-query_redirect($Pe,$B,$D,$Ue,false,!$Ue,$bg);}function
85
-format_time($Cf){return
86
-sprintf('%.3f s',max(0,microtime(true)-$Cf));}function
87
-remove_from_uri($oe=""){return
88
-substr(preg_replace("~(?<=[?&])($oe".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
89
-pagination($G,$nb){return" ".($G==$nb?$G+1:'<a href="'.h(remove_from_uri("page").($G?"&page=$G".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($G+1)."</a>");}function
90
-get_file($z,$ub=false){$mc=$_FILES[$z];if(!$mc)return
91
-null;foreach($mc
92
-as$z=>$X)$mc[$z]=(array)$X;$K='';foreach($mc["error"]as$z=>$k){if($k)return$k;$F=$mc["name"][$z];$jg=$mc["tmp_name"][$z];$fb=file_get_contents($ub&&preg_match('~\\.gz$~',$F)?"compress.zlib://$jg":$jg);if($ub){$Cf=substr($fb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Cf,$af))$fb=iconv("utf-16","utf-8",$fb);elseif($Cf=="\xEF\xBB\xBF")$fb=substr($fb,3);$K.=$fb."\n\n";}else$K.=$fb;}return$K;}function
93
-upload_error($k){$wd=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($wd?" ".sprintf('Maximum allowed file size is %sB.',$wd):""):'File does not exist.');}function
94
-repeat_pattern($ye,$ld){return
95
-str_repeat("$ye{0,65535}",$ld/65535)."$ye{0,".($ld%65535)."}";}function
96
-is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$X));}function
97
-shorten_utf8($Gf,$ld=80,$Kf=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$ld).")($)?)u",$Gf,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$ld).")($)?)",$Gf,$C);return
98
-h($C[1]).$Kf.(isset($C[2])?"":"<i>...</i>");}function
99
-format_number($X){return
100
-strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
101
-friendly_url($X){return
102
-preg_replace('~[^a-z0-9_]~i','-',$X);}function
103
-hidden_fields($Me,$Kc=array()){while(list($z,$X)=each($Me)){if(!in_array($z,$Kc)){if(is_array($X)){foreach($X
104
-as$Zc=>$W)$Me[$z."[$Zc]"]=$W;}else
105
-echo'<input type="hidden" name="'.h($z).'" value="'.h($X).'">';}}}function
106
-hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
107
-table_status1($Q,$jc=false){$K=table_status($Q,$jc);return($K?$K:array("Name"=>$Q));}function
108
-column_foreign_keys($Q){global$b;$K=array();foreach($b->foreignKeys($Q)as$n){foreach($n["source"]as$X)$K[$X][]=$n;}return$K;}function
109
-enum_input($U,$wa,$l,$Y,$Sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);$K=($Sb!==null?"<label><input type='$U'$wa value='$Sb'".((is_array($Y)?in_array($Sb,$Y):$Y===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?$Y==$t+1:(is_array($Y)?in_array($t+1,$Y):$Y===$X));$K.=" <label><input type='$U'$wa value='".($t+1)."'".($Na?' checked':'').'>'.h($b->editVal($X,$l)).'</label>';}return$K;}function
110
-input($l,$Y,$q){global$e,$tg,$b,$y;$F=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$ta=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$ta[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$ta);$q="json";}$cf=($y=="mssql"&&$l["auto_increment"]);if($cf&&!$_POST["save"])$q=null;$xc=(isset($_GET["select"])||$cf?array("orig"=>'original'):array())+$b->editFunctions($l);$wa=" name='fields[$F]'";if($l["type"]=="enum")echo
111
-nbsp($xc[""])."<td>".$b->editInput($_GET["edit"],$l,$wa,$Y);else{$pc=0;foreach($xc
112
-as$z=>$X){if($z===""||!$X)break;$pc++;}$Wd=($pc?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($pc > f.selectedIndex) f.selectedIndex = $pc;\" onkeyup='keyupChange.call(this);'":"");$wa.=$Wd;$Cc=(in_array($q,$xc)||isset($xc[$q]));echo(count($xc)>1?"<select name='function[$F]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($xc,$q===null||$Cc?$q:"")."</select>":nbsp(reset($xc))).'<td>';$Pc=$b->editInput($_GET["edit"],$l,$wa,$Y);if($Pc!="")echo$Pc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$F][$t]' value='".(1<<$t)."'".($Na?' checked':'')."$Wd>".h($b->editVal($X,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$F'$Wd>";elseif(($Zf=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$Y)){if($Zf&&$y!="sqlite")$wa.=" cols='50' rows='12'";else{$M=min(12,substr_count($Y,"\n")+1);$wa.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$wa>".h($Y).'</textarea>';}elseif($q=="json")echo"<textarea$wa cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$yd=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$C)?((preg_match("~binary~",$l["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$l["unsigned"]?1:0)):($tg[$l["type"]]?$tg[$l["type"]]+($l["unsigned"]?0:1):0));if($y=='sql'&&$e->server_info>=5.6&&preg_match('~time~',$l["type"]))$yd+=7;echo"<input".((!$Cc||$q==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($Y)."'".($yd?" maxlength='$yd'":"").(preg_match('~char|binary~',$l["type"])&&$yd>20?" size='40'":"")."$wa>";}}}function
113
-process_input($l){global$b;$Jc=bracket_escape($l["field"]);$q=$_POST["function"][$Jc];$Y=$_POST["fields"][$Jc];if($l["type"]=="enum"){if($Y==-1)return
114
-false;if($Y=="")return"NULL";return+$Y;}if($l["auto_increment"]&&$Y=="")return
115
-null;if($q=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($q=="NULL")return"NULL";if($l["type"]=="set")return
116
-array_sum((array)$Y);if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y))return
117
-false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$mc=get_file("fields-$Jc");if(!is_string($mc))return
118
-false;return
119
-q($mc);}return$b->processInput($l,$Y,$q);}function
120
-fields_from_edit(){global$j;$K=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$F=bracket_escape($z,1);$K[$F]=array("field"=>$F,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($z==$j->primary),);}return$K;}function
121
-search_tables(){global$b,$e;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$uc=false;foreach(table_status('',true)as$Q=>$R){$F=$b->tableName($R);if(isset($R["Engine"])&&$F!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$J=$e->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($Q),array())),1));if(!$J||$J->fetch_row()){if(!$uc){echo"<ul>\n";$uc=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$F</a>\n":"$F: <span class='error'>".error()."</span>\n");}}}echo($uc?"</ul>":"<p class='message'>".'No tables.')."\n";}function
122
-dump_headers($Ic,$Ed=false){global$b;$K=$b->dumpHeaders($Ic,$Ed);$me=$_POST["output"];if($me!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Ic).".$K".($me!="file"&&!preg_match('~[^0-9a-z]~',$me)?".$me":""));session_write_close();ob_flush();flush();return$K;}function
123
-dump_csv($L){foreach($L
124
-as$z=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$L[$z]='"'.str_replace('"','""',$X).'"';}echo
125
-implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function
126
-apply_sql_function($q,$c){return($q?($q=="unixepoch"?"DATETIME($c, '$q')":($q=="count distinct"?"COUNT(DISTINCT ":strtoupper("$q("))."$c)"):$c);}function
127
-get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$nc=@tempnam("","");if(!$nc)return
128
-false;$K=dirname($nc);unlink($nc);}}return$K;}function
129
-password_file($g){$nc=get_temp_dir()."/adminer.key";$K=@file_get_contents($nc);if($K||!$g)return$K;$p=@fopen($nc,"w");if($p){chmod($nc,0660);$K=rand_string();fwrite($p,$K);fclose($p);}return$K;}function
130
-rand_string(){return
131
-md5(uniqid(mt_rand(),true));}function
132
-select_value($X,$A,$l,$ag){global$b,$ba;if(is_array($X)){$K="";foreach($X
133
-as$Zc=>$W)$K.="<tr>".($X!=array_values($X)?"<th>".h($Zc):"")."<td>".select_value($W,$A,$l,$ag);return"<table cellspacing='0'>$K</table>";}if(!$A)$A=$b->selectLink($X,$l);if($A===null){if(is_mail($X))$A="mailto:$X";if($Oe=is_url($X))$A=(($Oe=="http"&&$ba)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$X:"https://www.adminer.org/redirect/?url=".urlencode($X));}$K=$b->editVal($X,$l);if($K!==null){if($K==="")$K="&nbsp;";elseif(!is_utf8($K))$K="\0";elseif($ag!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$ag));else$K=h($K);}return$b->selectVal($K,$A,$l,$X);}function
134
-is_mail($Pb){$va='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ye="$va+(\\.$va+)*@($Db?\\.)+$Db";return
135
-is_string($Pb)&&preg_match("(^$ye(,\\s*$ye)*\$)i",$Pb);}function
136
-is_url($Gf){$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($Db?\\.)+$Db(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Gf,$C)?strtolower($C[1]):"");}function
137
-is_shortable($l){return
138
-preg_match('~char|text|lob|geometry|point|linestring|polygon|string~',$l["type"]);}function
139
-count_rows($Q,$Z,$Vc,$s){global$y;$I=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($Vc&&($y=="sql"||count($s)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$s).")$I":"SELECT COUNT(*)".($Vc?" FROM (SELECT 1$I$zc) x":$I));}function
140
-slow_query($I){global$b,$T;$i=$b->database();$cg=$b->queryTimeout();if(support("kill")&&is_object($f=connect())&&($i==""||$f->select_db($i))){$bd=$f->result("SELECT CONNECTION_ID()");echo'<script type="text/javascript">
9
+*/error_reporting(6135); $oc = !preg_match('~^(unsafe_raw)?$~', ini_get("filter.default")); if ($oc || ini_get("filter.default_flags")) {foreach (array('_GET', '_POST', '_COOKIE', '_SERVER')as$X) {$yg = filter_input_array(constant("INPUT$X"), FILTER_UNSAFE_RAW); if ($yg)$$X = $yg; }}if (function_exists("mb_internal_encoding"))mb_internal_encoding("8bit"); if (isset($_GET["file"])) {if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {header("HTTP/1.1 304 Not Modified"); exit; }header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365 * 24 * 60 * 60) . " GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); if ($_GET["file"] == "favicon.ico") {header("Content-Type: image/x-icon"); echo
10
+lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0"); }elseif ($_GET["file"] == "default.css") {header("Content-Type: text/css; charset=utf-8"); echo
11
+lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ	ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›­æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š	Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8А­£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü­’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤	l^íZ6˜ej…Á­³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxl֍ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù	€‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò	'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,E͝`T¦É6Ûˆ-“Åì¾ÅÚŽT[ѐªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø	•ÿš´hìÁ{Ü£•î ËԐ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV­‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØ͇Т©‰‚êcâ¡óB’—}Ø&`ˆîr+E­“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼	ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡	³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£Ì]6¦Þ1´!1M±¸@a´/`Û>Ù¸üߣðÕßÈÛC/ì6à´·#p@pá‘óÿ`Zÿôýchý°\0ïë\0oæ€ð4OýOøi\0-\n«îÿ/ý\0£Dð.ÿ ¾ˆ.“Đ\0fiŒÀÈ«£€˜\0Œ”IDüç\0§¬\rïý0f ßoãÿ€ÊGüˆðeJ|\r€¿ýl	¨3ê~ðiP›¦&“É¿/µ\09	^\0r•0]¯õ ¾›oõŽ.ý\"	°ÐÑM¥íðvÿP€ZÐÕmpËP°ùÚœÐޏ¹ïô{§†C?²ÀkŽ“Ï¼}ð®þdöïʏ°~=‘.Ô- é	Ðm1>hûÏÛЕ1;QI‘OPÈ\rºcßpApV«k\rQ*èQ}ÏçŸq>˜Ðu15BqQ[1fûñl«Â€apå¯ü\0Û‘*ŒJ©Q=ñãّGÜäŠÕÁ±Ÿ±_ñ—ñbŒGHF.‚0Ôø	= 2P™Àó æòÏçP!ò#(3 \nÙ!1&72fª`Â/å\0°‡\"PÁUõ\$ñ\r0Ìð,QrU&2fšÒ_²Xààò]ð9\"’S'òƒ'²yð8\r¨ú§òkW)Oõ)’*Ra%ã\\i—%ò‰&Ò³+r…’3ðS`…,ñvý¦&2×L–&Pu*›-ð˜0\"Á%HĬÔžïÏ@Ø“±°H‰B–P(ÃÉ\$p&ý,1M ªØ­Ã®;\rnÁ.¯Ê I­.Õ',1ò)Ó4ý²å2°u+ó3æ `ÈSŽŠpL\nt§’_*²S3;6r'h35¤55䜋d2q+6ñ8‘O7sC\"pm8Ò­³“6³—9òm\n@e0É<8B8©<,( ¨8²Û\0è	Ó0šJÙ<@¦ÐI¤«ÀR6pÔ­mGË\"11¤6ËÐ.\"æÀ‚ï5Ì‚ûÇ:àÜ8bêA1±;ƒ';Â?<*\$È,³Ìo= òTÓÖ/3Û#«ºÒ†¬"); }elseif ($_GET["file"] == "functions.js") {header("Content-Type: text/javascript; charset=utf-8"); echo
12
+lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s>	)â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n	\ræs<ŒPi2INƐ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(ҝm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå	 Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ­˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§­ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$	CAƠ䄤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t	Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬­ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AK㝡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(­#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J	A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…):	ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDù­Ñ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8­ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æڌڇŸ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/؝X ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éPÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðȍôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEЀÔøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6â†¬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F	4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀΠt]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e­¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ	1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î	 ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*­/¹UÖVû‰¤þ­pì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Ɓ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·>	—BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ	¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6ChÂº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ߍ§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)א…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üà倠ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤	(€\r¹öGFžª@ؼÃúÙ­Àß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷È½à¸à\\P’,\"ª-rCÉrVäæYם·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’­ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/­ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê	‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rԁ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx	ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔĝ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã	ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„⢏ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ	€ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní	äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;S­Ç]ãñ@ËÇè:Ââ“­÷I~Û‘•ÙùҝÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}ϝ:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð­‰)¯i4Ñu•sÁ­ÇˆXÁMP¬‚^«ä5¹O’¥	bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE%	dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> “ªÿ'Ó|“#hàÅœ˜6è¦\rñ.=(Ôv±…¥;`\"OøCܐ!âBŠ9ã.B!UEÌDáÄ‚d œ–€)ºKŠ Œ\0Þ» ÆmF~	B{O\0¨Ï©¡¦_選³u#„–5 =LjÀò7´9 š6­¢î£lCV‘€ŒTpÀÚ08±	1ÄÎx'0@gIw€Zã†@9ÇLᎎ\\v\0_(º\".ЯA[sÅ„ä€ê7I(azl_„EЦ<ñ€“tƒUöë7`tèÒ0ø‹(ßà3”=¦ço\$[Ìh×!¸B¦œ[HîR¶œœ) )nxaZ™#=HË8ð뛥 ”’%þ@0w5J’–	¸²A\"F:8NŠÏ\"Xù- èÔ­¥?pj@)iUjƒÀ™\$Ìš-EÆ÷”E§´\n/¸œPÓB–P@y8j¾Y¼Kð³9	0ÊH€Ddš&0Œ¡èh“X \\Ñê\$Ë(ÁÐ`d\nEΤÀŽ@ÉJ“b*NRP\"(q.f#“dšGÈæD¾š¦M’n9:*€¶fÐŽt4æò:p½Mí(5%ÊQ\0e”Sb’4ú1¤ÉõeM‡),ŸR‘\"k§m?Ê\0rB¿( è\\èšÅ••de<£\\ÊBMò’i„¢L	(Åh›ÚRÁ¿D›e\"r™CÊÖRä•ô¬å)9EJâQÒ˜>	õO´ãí`šAÈ#®bh|HNÐ\$™%Z#˜4-® 2=ˆD‰ê„ñ\\´æ0Ú…Ȇ¶õ\\’\"©aUR	Ã-I¨ãk0\0ÛæÙ‚ÊÃæHýH³ ÀÎ~u”]QŽƒFš1')-¡\0'óxüeüˆÑ·ŸÌÕp\$ÆQØeaþ#\"ëRǰÀœ@\\èÂF0ѸÀÕ#\"–˜&<¬1ÎHЃÃ\" BªÂð.ˆþ#h˜ÎÃÀ/ùž…TmA[€ç\rRŒ(̼@%ÙE8ÌÂÙÐ&\$	`Eà€ŠÃ,B]À(a{„@ù6I›¢k3[ˆhÚ	ìEw\0¡1®)%檘 @Úªÿ\"ˆ6ˆÙ®aJ¦I8J+4q€Úa¨±0\nBë2É—àa“!{q›•ŽŒÛ„Àgá1!9à:\0¦Š&D8|8Á\0Ë:á5P1ƒ¼›0‹ã:y„ª¨FDHÄÎUk3Á’…USLKôàfŠi‡mB¹Fk§@EPØM-ä;1ˆ¡%Òá82ls1œ´!&û5¼ÍRaÅñ—ÄÂÀú’4’ÏP%¸„eOþ/¹¨ˆ±³ÈE‰I@C=ùùMHÉÓôd°çË8@¹–à9rI¼Ð€£Š*B,› Ã^ð‘ҁ\r˜Û€N猗4ˆB“™ZCXÿs!	*@ENø)»Ð”4àa\n¨ )¿¸˜?`+¡€&‰C01M¼SqDñ€ÞQŸBð\"ï¡ ‘‰n)ÓM¹¢!x\0€Š5Æüj3w\0⣂ð0!\$\0`a7º¨2Q¶Zì>I4ŒÖ}ÉxÑàÁ½›ÊÏÚZu¶\0´çñWÉdd4J2„†26\n 	À¶žÙ ŸÅ…æ€OhÜFç0Èš\0=΃š%Ù1Ú\rÊAàih@vM)’\0¼`£&Êa2ù´Kši©KðfhZUÆ\n¶‘AM(iéP€ÈW47¥|ò©ZQ†þ:¨5X>x#5†¡s=0Rªå>„“7úÓÀiü'èÙž\0Ê™£ú)`hþRÁð…š—d`œѵM‘IQ\\V´ÞV‚ã4T²¦ÓUãåR%9F“aºhÕ47œ]Mà_`>P~_T!¡†ÑN\0ŽÎ.lÔú%ÈC(DZSþqu\0œ¸…in默2¡áÙHéqCÔM`”…AÞMqQ¢~«5p+ŠAZh¾¡3Ÿ‡Å¸\n62¸URbq%B(\nÀTØ󑜛FåâÌð>œ8¿†GM ‹LpiÈ¢EQf‘M&•.©OQ\"=Z{µºR¥åïl¨aOêïØ«”ýk}° Á-´~+Ê`µewíWêÎT	Õ¨º2ߘ’.¤1RÒH8H¤†d€Á†h@0Œ\0[€@réŸ j\"„ý¸êöOZŽ ‘1r#¬tQ@7—V5kÈ+˜ÖÉʽVlï¬ì·\r-å®–¯U„Ý\$\$XÚ¼ž4µ«äF6{à/ˆ‰Ç–P¡óZ¹s½|Œ\rcÓ€f™Á˜f¸?	•_«™XՔ𰕆¬@Áë—â0nlŠÜ„Yòg:×°ËSæâä›sª~˜šâ¡9ëî×FŽt\0/Ã\nÅ0']y‰á^ŠÇ#&¹\rHœ†j‡R0ý:æ¤â‡£¦äD7J¡Ÿ~¿Ä52Éælë”D­}J‡TàeΜ% ŸÕ}¸è+R#”°k3T¼Ýë¶\0rYuŒh¡‹ÞŒf¼“Þleù„ØAï1S•TØP\"±¾PhŠE¶NœÞVK`2Qò\0e©eK‡›Š>IFÜš-Ã7Sê=Ôù•BÀ¼j¢N5U÷[ñXl'\0 2¡…j\0;ªÍ‘’ìú®J\"\r4hEž±FXômRö\0Q‘Ö·*/X ”K£{hÍWÚ‘ž©”l€êm'j8€ÚŽŽ.êFˆÔsUÔ©µ\"iþ+bÒÊBÚUl1 ¬¼RCGÐ-­²3Þ)3å\0ø'ÉNv?³³PeÒÔÀÂZžÕ/óiãOÝ]6b“|1T•ªÉ×jØHÚ¾×@mµà¹-k_TÃÅPè–¯\\©¬\0æÀ69¸°nU¶{‚-±Õ5Â!²“´øGª³çξ5ãšºm®S Á´\$룱øm3õÙ%˜`[¯B©/ËešØÎõÉTm§i‚N›o£!âàµ.È\râ÷0¨6 ,lí¬\0äàà:&|\rÖ»\"M¯¡kw*ÛrHVó„Ü5Û‚Ãjàá „YpÒ“ÙX\råw{Uß…qÄ’Ü\$u⨞Ul{‹Û\$×¶þ5mÀ(ü`/¬¢—ù¸4/nIp–j\\-³¶ç_3\\)òës×–çW–·mçt\n†JR—D¹Ñ‚%tŠ\nÝ*‹Rzá2>²°\"®‰a²\0Ö8Š1˜Žè¤/sÄ@Û†Jì'l—Hu®k Zªç©´hÔ8§s}ÈšP§)R*“Übûe%²í·o„Ús– û2aQ¡J†©¤Õ°í‹qkÂ6g.	¼R“/({Ǥ~ÙEŒ©;ö\$ÝÓt†löÃmIêºèGR:iÕ'—àÁApªÞy€üÛ­DMºŽ/<¦ÜwºÁàp\rÀ\"•Âá}\0ßPS€'éŠß܆“”pý¶k`CìÜqEYÀ3Êd¡èÉ|p{ó DJ;úå÷cHTšÏWnW<)M5~ÆY2÷–t9Š©âkÞR<ý«q#\0¨ýep7Lø+Óc¾ Ú\0u\0\0®mÔW¾‘c}[* <÷ؾÎ+¢ër7Æ@+·Ô^/Ä·ûò_ÀYÆŽ¿ £/yƒ6Ù¾þ«%œXÛKRÒÚoƒÙS¯\\¾	m/ˆg³PϾÉV–­%D«¡GÄOiuöÝt€åN)®›Î¯&ú†ySô0jn“rrÚT”y×myˆk!É8UšøDn£Bþ\0÷l¥¨PGç.[‡z··|†8bGõx×Ñ\\s[µ#¸?>:£\0Xz	f¯´ f.⣏4€^  9‡ |šË\r§·z+G¸Z¸D©È?‰5A¢„A]¹1ϱ5‹7bvæ`|1»èk.‚LUëÍڐ/`Weñ©'âàkû¹†k°ÜŸàÅÐI\0wvu‘]©-˜Ó%OÈb3ó¡j•bŠÍ™T½A%¯à&êIÊÜP£ŽcBã9Í‹{yBßLtVÖ?ØÊF:hªUd[ËÑ ük±–8OSV«	káZÑ|â€*ÑU¾Gû˜-k¦&ˆÚI–‘žÈÝ”ðO9\0®€Åˆ˜ÕeQ>7ŠÉp¶e[¶<¯¿RæÝ­ h\$®?ύöäúª¾Añǐ‘ÿ-×!–iÈ|¿Ö¿…ä[UÎ³ïfEƧ‘’SätF™RUÎHÁ?¡Z¡¶¨I@â¢Ã‘‚šÖEY*–½Y²‘YúÔZEÐö­=–ì:Û+Ù@¾VÐ6„·^ÃÚ½NÖ8VK2‡’ê ¼#èbÉŠ[2ç-	ñ…k2&*äENškV¶2Áy¼ùW8+Öœq°Œ&9„1åøù+Z“Dªã\",¥­œ““‹Êƒ#-šÉÈ4ÿ5•µ—‘cãxPŸæÌ•ÓÅlXó Ös-P”χBÂßÕkFŒ¸ÖŒ\$5m€W@º¨\0›Ò—!úÌ`@ð¼ß©²\"áOõa7œš†Ï14yo®us,|d*+É¢ee7ž<Åœó:Çߘ¸Ôá]œbg!™ùÎbsŸH\nr˜„nÕ–É@Ø@ör Ÿæâr€)0 €’à\"\0\"΀òO4]ªÞaÄH*•o–,뀬.CpÉÒÉ3>Šu©Åx5™äúž‘	Åæš³ÓÊVZ–Ò€,,\ršfáHl÷e£êè:Úe™Z@Î]ò¼½\rs@¨%Ë\"\n!ìk‰úhÊ´ËeÈ´?åÄji: ˆ>{ÉšÞËŸ½! W.ºEBV‘åË	\0002Ï9©¦Ëæ­šC¼Ñ\r4íÌûóP+.Ÿ‹=5\$KbÍÂùËh(5\0©I¤CŸèì“ U«ÅÇ4'V”°(-¢!0	À¨­ÀÈ•:eñÔn¥Ã›©’:¥”-F®‚µ;/¥#”‡T<¢ÐùMVH/O¦½±´Û¹ÂûQ®€Åž4h-âDþ5ÀU€\0‚@\"€€	àFavœ@à€y ëé'‰;.HnrzxPô^€ÿ[áªûbEÐÖD;SYãåÚ	Pôï :1¬ÇN‰iâ€wfíw»Ü1ÀY½¨ù™| FâDiZ×¶D|{q”RÁà0\"³Íç(åO³ÕDîƒ	—z`Ò)Þ`-ˆ Ä|è5Ql_c.øküö<Ù5¤0§zÏÒ–Ñü›Ûßкe˜†dí\$’©\"þJè÷ÓSÝÑû\n\rHK¿_Ó„”tà4ç€s›A\njVð´ñŒ!oÚ[l¶œOPÀQª©¬‹wÑÓ†Q¥9ÛÑ!…5€ì¥\0¶Ym‹g„õÛ(@u¶§ƒXO_éÝa~ÉÔ&Ðó#( =:ã Ã\0½µ×k4WñÏ\0]IàŒ+šf	FÕÈj¥C#Ûn7ˆ?µöô×N Ní’´)Ï&zÝŠ‹“o»Ž¿h¤·BlM½TU)5ÜËp¾t€¦µ›¥tÁä¶ùºî¨\rµV.è]û¹Í‹†Ð»¡nç†JÑív… Ø¶ï·t(ÍÉn¸Ñ»±ÝœD2)mÛž([Ïr©˜Åë³2z eŒ¿¦ñ¾=Òn*̍vûw8ÝÄàx+§<`	2½GFííTBÛ=væh=ºì};L/wîþ÷£¿÷v[«cîØßîã÷)¦ÀnL¦*§¡¹ê¡ã7`7ôÞ‘þ÷©_øˆ\næ{˜æ‚B%Q\0ǃ@pyæ÷\0ûÁȈnè'Š^î庾&‡Ó6Þ\0•È¿‘Ôð†û»Þ̃%¾EKÔÈ;,á‰â·PeÍîl-•:ÙþïgÄKüëXTØEPVP. èP ´¼RØl²ë±sìOmtâ•êhô’ô ñÀ¬#”Uv…ϲ=}ì”a>\"‡õàÆ½Žˆøo|RØt£Më¢û<fM SòãZ˜QBà¡È*¡o^ð&ÍÞ5Æþµ€*D²QþN»\$*¦	ä¯	BrD`Íòe¡Ó=äç'¹?Ê•T MxkkÓZúŒ}­Q²‰[~ùŸÕŒš(qmQ:ü{Þ‹µè¿ó×Ͳ°f}N@±lCaùðˆê\"N`ˆùAP“cÔ€V0\0ÍB’fÝÙÀž…ø„P\0Iu†5ª4›³ì÷ÿ©Ð`°:*†`þQ¢wRó(º¸éœêÆÊÉû7È»™jj÷gçdc°™ð6,É/%ñç2ç¦#³òûiÉ»8\\nϧ‘—ðqö‘SuÛ³nu4?W7\$»>-0ϵЁ¦-7d}y¼…[áx‡ñ~»¸0òSükó«y{!©sü°ö(@6p\$a:ʨ€Z5}\0üç]BßøŸgŒÔÀuTT\"K@€uÑþ­<Ìž.ªugGø›±n¢¿ÚŠ|aâx¡ÔÀÇ窱ÿX5é‡EØõØó@tçVw¿ü?\0½ç„ruY둹Ï.Å?[ŽfèÈ9Îñ9ô3£®	I\0—ذš)±OuɈz*ð’ãbí+\$Sª9ÇØ~‚vŒú}+–Ññ„«Ùtwøµ‹\0\\€"); }elseif ($_GET["file"] == "jush.js") {header("Content-Type: text/javascript; charset=utf-8"); echo
13
+lzw_decompress("v0œF£©ÌÐ==˜ÎFS	ÐÊ_6MƳ˜èèr:™E‡CI´Êo:C„”Xc‚\ræØ„J(:=ŸE†¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS	œËUl(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ`Èó¯bè\\š?`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°ø㢺÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m6PÔ@ÃEQàÄ9\n¨V-‹Áó\"¦.:åJÏ8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼ÉÃà@„}&„ˆL7U°wuYhÔ2¸È@ûu  Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]­lá@MplvÂ)æ ÁÁHW‘‘Ôy>Y-øYŸè/«›ªÁî hC [*‹ûFã­#~†!Ð`ô\r#0PïC˝—f ·¶¡îÃ\\î›¶‡É^Ã%B<\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF¨jZ£1«\\:Æ´>N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p\"띰ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡ۏÙÀ)PÓÜØHgàýUþ„ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠŠ=¡p)«\0P	˜s€µn…3îr„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ\\—b„ÿé¾’Q„=7:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉÕ«Æ¯ÕbBr£ªö„’­²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^<Lóà4U* õBg ëÐæè*nÊ–è-ÿÜõÓ	9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7	tßšé-&¢\nj!\rÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl	8‡;¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5-	Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾Ã4ÉDZ©ÕI¢™'\$cL”R–MpY&ü½Íiçz3GÍzÒšJ%ÁÌPÜ-„[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'\\–’KJa¨ÃMƒ&º°£Ó¾\"à²eo^Q+h^âÐiTð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\ޝX°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½û΁ß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿á|9Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á]ÄržÊý¯v¹~B£ PB`T¡H>0¤Bҁ)ð >¸N!4\"‡À¦xW-ÅX)„0BhA0à½J2P@>ÈAA)„SÎôn¼ìnìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âöàøïhèí@È‹’î®(–ð\nì†Fì˜ñÏ–øÆ™…(ìγ¤ÛP\0÷NÂõo}¯‚l«<ønÞø®ˆâîlëoq\0/Q\0of*Ê‘NÑ½P\r/îpA°Y\0p\\ãï~³ÐbÐLh °!Îã	ÐPöîd÷.¿ïy\no\0áÌËжöPptùP¡ovÐ‚knޏ\0z+æ›l6÷°©¬Êø0’äð¹P½oF€NìÏFô¯OpýàN`ÜÐÖ\rogðá0}PÍ\n¬–@°”ö15\r±9\$M\r \\©\nggìÀ Ø\$Q	\r‘“Dd‰ÆÊ8\$¶ªkþDâjÖ¢Ô†ö&€ÓÀÊ ¶àbѬ˜ê°¿‰›	ñ=\n0ÊÕÀúºÀPØ ~ج6eö½¬2%Íx\"pß@Xб~«æ’?¬цZelf\0ÒZ), ,^Ê`ß\0è8&´ì¨Ù©‘Ñr€© ©ÃkFJÂÂP>VƜԍp¨²8%2>ÂBmÎóØ@ä’G(²ä¨s\$Ž dÕÌœv†\"Èp°wÇÆ6§æ}(VÌKË ‚K¬L ¾¤éÄWñöqú\r‘þÃ̤ʀQòL%’PÔdJ¨¦HÀNxK:\n ¤	 †%fn‹ã³%ÒŒ¿DÌMü À[#¢T\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi2I\$\"@¾[`¢hMý3q3d’þ\0ÖµÈúys\$`ÖDÀæ\$\0äQOf1ƒ&‚\"~0€¸`ø£\"@ZG¼)	Y:S¨ê†D.S%͈’ Ð3¾à d¹ÀmÓU5‹æ¬ó<£SÒSZ3â%r “ÎãÆ{óe3Cu6³o73î—³ÀdÀL\"àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2øQôÐ÷“¼åÓ3ÀVذWBðDtCq#C@½I”P÷DT_D´:ÔQ<”UF²=’1ô@\$‚‰6Â<cÆrÅf%Ô¬,|“27#w7ÌTq´6sþl-1cPÕmðqªÊ\n@ÊàŠ5\0P!`\\\r@Þ\"CÆ-\0RRˆtFH8µ|NíÆ-€Ædòg€‡Ò\rÀ¾)FÆ*h—`ö €CK4Ã1‹ÊkMKCRf@w4BßJÁ2\"䌴Ó\r1Q4É2,\"ô¤'¼êx§Œy—R‚%RÄ“SÓ5K”¦IFz	#XP‡>¨âf­É-WX\ršÜê¤pU´ÕDÔt&7@¶ÂÑô?’©ÀÑ ªµ£}O1½2†‡2Õ#UK*¤)ô긋Œ0o<> ]HŽš„Æ¿rè›LGNª›ê˜W%–™M^’Õ9X:ÕÉ¥N”òÕêÔséE¥­@xy’(HêÆ™Md×5<52B– ð–k!>\r^J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0,™DJ£Fxbèµí4lTØ•û[¨§[é•\\‡¦¨Ô –\\{­Ò6\\Þ–’ öß(#mJÔ£,ý`©I³ûJ‚Õ­ÊÜèlߍ ûj…jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢®ÑW•\rkÕÏ)\0Ý3Õ€@xè¹,³-Ê	5B”¡¶˜=ÂÔ࣐#–gf¢¡&Üß·Z`ä#ÄoíæXf È\r ìJhô˜“À´5rqnzõ§­sÁ,6’oÓtD´y‡äÂb´àhþ—Ctn˜9n‘ í`§X&¨\r'tpLž7²Î—¤&—¨¼l¬Z-ͬw£{r—¤@iUzM¿{rxא—mÒSBÀ\r@ H*BD.7¹(‘3XCV Ç<WÔуÝ|d‡q*@”þ@ÞÀÊ+xø÷̼`á€Ï^™Ì˜ß¬__•ND­X\0Q_D]}tõYÅúp¦f€wÔÚ\"â3øz¦n«MYñùZR\0÷¬Q¤?¸{†M3†•£*×1 ,¨\"Øg*U¡*²¯ˆÌ«zÒŒW5NV2O-|€¾ÉÓñ,×]‚B×dí\rŠñ/OâtÎøÃï‚Ì0‹xƆðŽ½Ð®OCë8Þ-0Ò\r”ÿ0à·õ„@]¤XÌŠÐÎð\\\0¾0NÈï£Ñƒ4ëi¨;ƒØAtê¼8X—x¤\r†…Š“‘ìÁ‡øÝŠ×Ê7¬<ö@SlÈ'LÒø9WŽ ÊθòϬÖËì¢Íı•ùRçÌðÌ\r¾Ï ÂÏò|ÜXÐÖa÷ø7y€Ù\rwe¸Œù„Y!ƒ˜Eƒù’´šÂcRIdBOkË28[‡mÌJŒ+L ÈÅÙ¸OXpføÓ9ѝDÏ›·¦ßªw“@Ë“—Y—…¢Õ÷\\yäAcÙ£ƒXgš™%šôó’Â1“ï“j	œX†9Cc݇àR¡¹‡”QFÇpdÒ= C˜÷ýš\n\r¥Õ‘ÔóšdjŽÙ«’xE¡Â2FX§¢x_¢ØÅ£Ú5£™—}q¨Åí¿¤M%¦ZM™:\nÏzWšX7¥åí¦:ÐZi¢npY;Žù>ʘí£ÙɆ:6Ú;£ZÎX0ƒ“Ì¢#ùýcàMyU…i2,q¹FËšÈb­J @ÓgGè|4ógÈÒmzWõäÊ	¬)™Èr|àX`Sc‚Õ§ÀË™„óc—¥‡û!²B²—±”»/}{4JÂ\0ÒÝn»Kuz @ÌmÚÑ®€ß­yÍžÒyÖ\"º)u¹ÊÂÙã¶Y睘s·c¶yë‘¶š‡··y¼—ސ¹7Á|·±|—Å{Ϙ*)°Ê4Y`ϵ[v¹‡¤­‡û^NX•†¸‰†ò‡W”©û·‚7†;¾_‚‹*x™ˆ¹Ú\rùß¼߉xm+¾mû¨Ú™	´»¹‹\$\n¾l˜);™²„|Ù ßÚ™¡:œNÚ :„‚Š_È8N³¸Uœ5;¨p+U–L‡ò\\‡9í¦Ùñ“›¡»ýO:I’šû zQºœ¡ƒ¡TëšÜ)ªXG¡æ»ÅJ{w8“¾ûʼn¸UÆù\$ôàÃøü›PxTY¾pjh·¾J×À›˜JÙ{‹Âð@îÇ‚³ øðZ‡ÌÙs•¹h˘ç–XÌ\0Û–lÓ–ÌàÌÈθÎçìó‚Y}˜Ÿ®ü^Ð@u2ÀSÚ#U‰ˆ;È|¼¼•¥¼™P\\ŸÊ#ùÊ|ª<®Ý\\³À›žJ۝‚,öœÀ•\\ÅÌšEÌú…‚]WÍlÁÎ,£ÍìÉ–<åÎŒÛ>YnÎ),ΙrÎüûÔ¼å—⍺]Èý	ª\$õÐç½Íq„DJí=•Ù÷•XI-ðÅ€äÅÌa‡llÃµ]\\“w(iÜCÄ׃tƒ‘<i-u[uVŽDÖ“¸Q¸€xb€kæLI­.kú›@ÞÀ„ÜN‹“[ñ¼l<o=-]1`蔼ªdš ÜMÌ7‡@Û%C=]ú›êÀ/|-à܏ˆ¾ÉÞáqÃã•âíùâ*¾C¾òO~ÊQâòså`·ç(âòãDÉßɲ¿à[ãþæ>Éká¾R™uéÞ\\+>)3íûPÊßP§Óí6ÓËM%º¡¾pÔŒœÅAÐ3qmu2ÖfzƒÛ¯ì4s‹	´í`ÛŽ‘ì°-kÊS%6\"IT5½‹~Òì\"™íÂUt_	TuvàÖ½ä¶Yw¤†­0I7¤’L‡\$ú¿1Mí?íe@3Ûq{,çÀÏó\"&Vi·àžÔIŸ?¾µmõˆ™¯UWR¾´\"uiT‹‘uƒq­Ÿj\"•GÃËõßò(™ï-½‚Byîê5øcÝõ?Œàwñ®°ëTúî’`ei¾½Jtb‰gðU‹3ËëÉå@öá~ê+¾Íï\0MïGè7`ùïÍ\0¢_Ô-ùñ?\rîVÿµ?øFOÔ6á`\no†ÏšInª¼*pà™öeÙí\"T{[Гp^÷ä\nlh@l0[/ö„poóJKÖX“ñ€ü<ª=€9{Ǿ6ç–<eߏAxãÀùÇ‚¼Éá4x[ÍžLò“~>!åOQxš{ZVFÔŽ`½éÈ~Ižß–“øL)Q[ëTûôM›àþT²*BC¤~	æâ‚ä\nƒò¡gÈŅp9zKÉ–ówzO9di^›'‰+¹ßïDz4ägHAº¯Lyô¡\nr€<IêjKQó¸Snô==\r.Âo7½Êé%a;‰kÏãmX¿›Zi%P¨iÏ\r­€¾ýµ/©…L`pR0¤Ž&õ—I (Øá\\.£*m„*Ž(ÚÖŽõ—\$䆯À÷\nw׊Х…8a“\n&´Â‘žÍUmª MÖ¨P+\"Ly„ó?¡M\n€2’	L\nbS ¥NäùÇr¶!w¥jw`¼Â\$îôƒráè…Êaáv±^Ãq­F‰Ü6•Ó¨i*™Ÿæ„ì_xõØ\n‰fðIê:B&ù6@É“KED¡úú·QD(V`.1\0Q\$íøF­¹H®’Tþ€zІ‹Ì\rªjkzM€ÐÀ®Y™À(61€”x‘+®%dj¸Æo\n¦¬\rg°ï\"ÉŒ´ˆ—?Œ1- 3hÏXÖÁ)åyjÃ5r¢N±#Q¾¼Џw{_þ¡øG)ÂÎÙ1i‹Ì íç¤<Z‹ºpX³¡Ö\$â?¥=%.´€Ò®&¾­%\\±8w­!¤µa4œ<JB[Ðĺ¦u4‡%êŠ×47‹Ä%gѐä&¸€Z(@	€E¢{@’Ð#¥–2Šh@Œ#ñŸø™ÑŸ¥£@\$8\n\0UŒìjãA(ׁž2ÀO€Š8Ú€ž5‘¸Œ¨@†ð&'´\n€DŽ\$i#ŽÀ#Ÿt\n PŽTs#]P*	àDÌuc› PÀO|pc—øËP	ÞŽ¼i#Ô}ˆæ:<ñí\0\0¥ÀˆÅ¥lo#}ÏFÜR‰Tp@„À'	`Q¬ycTp(ÆŠ@€eh\0‹˜Õ8\nrx› cþ<`NŽˆã:)DY\n*Dý‘2{dZ)A‹Ú4±²¤€cZLð2ÈÊ<ñò\\Œ\$r#ˆþÆö7ñÁŽ¥°!û€´ü€Nª{O¼@\$<	Ñ¢ðVƒZÒÆž52.Aù#D0 \0´ÀI¸û\"P'H	²_)¼x@Š€*úàAOh£hI)I²L1¦’ìƒäµ%áJI‚B‘þ’g¤i\"p÷§K2}’ä–Å(CËÉÍ=²t”xCøÐ&FÄ	r“ÒoÙÉ@@'”ñ€%	 ÛHÞT±áˆ	ãÔ˜:=¾)\0.ñ°]Îâ5 .ðæõ(pÈÀL!à8­\0ˆ¹	éR\0L‹YaÔbkÔ°ˆ6Ä)Y·éˆî •Ô®£	h³zZ¦õ±’IgÎVO3oœ­Lgà3ËY2ãÛ‰ÜDoPË`3̸ec-‰r7í‡2Ô—Dº‚Þç‘B¼‰Z•¼¼%å/I{MÃ\0pÐÀ́.`äÊÝo*•Ô¯%T€ý\0 &–iR\n™+Éo€ì©–\rÀ^2q”Ë©\0\\¨I@‚	KÀ#peC*!>€/á%|È…Ì’ÁÞŽüô\$è)çÀ§1P30(\r¢+\nZÆzž„))\0*®\0kà€ÙÅ2¼–Ï…(–E86å¶s—tºf&”™Š¡´“+;”Ø76&ãK–_Ž(›9fÓ,@-ÃÉ4l\$Û‚e7\0ù±:l“LÝæM7.\0ˆ³|›ðo–JÛ©ÀÎZ³u•̺Š'Èy{ÅH,#\0vU@9!¼¥	Ñ'†¨&„òGôøß@_-Ù¿³ºt;Üê¡:©µ€²u¡<—ˆL†iÙΚ_ꀝأ@U6°Îù#ä_€L'~ùæ/Öm`\\Të']=Iäât°Çž¸Âà)ÔÏqùsÉ9Âa<RPº|tžút&5°äs©lî@¾	ÞKÆwS®èlÍ:9úN®wSø|·göÉØOùAП<ë‰BÈ€\0/àz@´	ÍÏÁ•Òå†=?=iÞO‘ŽkÓŸ=\0E@iâÐ\$B× hO\0Á>DÖP´ó‹Uäçцj¥HìÂ9F¬BcCi‰é­BwMާtÓx€PÀÙM‚?p“®=—äì8ÜÔý‘Ïlg~¨˜tÁa©€%]b\$àØ\rˆr„èÄa,6ÅtŒàW)Ž\0U¨›F˜	|æì“¢ˆvh¦Qú*¥Oƒl.C\$À\\ ÐցRRÌ<lcù™&Cj3Ñý%ôZM¨öÀz9GpY’â¹£\0i\$Dµ‡d‡ñzt[')[)Q¤ØêÞkÁpi0·#cþ‹ôNE¨ô(ºC2L	Æ@9hÑEJ5Ò,šh{&Jzö0n€vª©>[€j“£Û[œ]ƒK•ýRîJë>.;ù¨íF=RÚŒŽ<råÓM¡=—Ô’¤ÜhØ^Y\\RmnËÐð Nn*g‘¦ôÒÅB¬·5^QÒ‰@O¢°x¨¡HIÊT ´â9½)(‘œ&µ‡}A)PÊ\\/êô…_Õ!́H þÚ‘¥¤ù\0éBá­\$z4ÓTYu‚J’v\0ꏃ”¨…%@æ32\0Sôm€--Gi@¸úQÅ%Ñj©YÝ+FuzlSž—”ÜW3ØÅ·OrŠU\$EÔè;¹M©¢\\€Ô±Äu/£õjeQªš¦§,#J¡ªXPÔ<UH•TVVé#Uê™ÔUbˆOU´DZ‘⢵£Í8êÕUJuS «À‘g)XDZK‚•¢Bî\n¼@2Š©ìx@d&ü ½eÜ«Ià@ÊFwì¬8“©\$Ù'IºV‚V†U\$²ETÎ_ð*ˆd¸/áFCÓYdp§vGƒ‰3‰ ‹Ñš‹L^(ù`áj”÷2S¸ºcÛW¨ÜJQYiÖHB”£ckœRè\nþ²U\$jê\n„ZAi€î»¢U*wKDRxW‰LÂò­ˆ€+fÚŒ@ã¨A4¢àGz…R\n²5‚b¬\\_²Ÿ ­ô‡¡á0¼C@¤\$X\0+Å]¤ÑÂè\"?‡n¦€+QIj\n»x\r€ôB`S¸âM‚ÈÑûŠ\r o°@‚À6XÀ\"{±\0µãb ¯)–ÁM¨cMðW ä¶D_áαÐv@{cÐ:¤®%[%‰C²þ1¼Ù;AƈÌTn› \0º a²pážóe~ÙU5 s©V†Ýe|M9‡€9 hË@æ¦\0êÙ~É@.³	l€· Jv]©ºD§f€7¨FÌá±³ËùŒ,/+:¾‹íÚXIi­\0U¢â@Nµá´\r Ê¢,².½i¶‡ª³m_ûFŒàÖõäÀYiUÔÓJ¯!©gûLj‹ãÑú¬D“iKAà6²õª-U«KfÖ_N€\0ö-3©ìÀã3+¥dãiûD	\"ö¯µM¥ml‹L…XÜã㯸Œ>‹&|UÕсõ`Ïh¾ù2¦ÑÐn6Ý…·ÉI+Øné-nDÃ×`„µ†®°É”°@ã¬B!;X™smȯ·†pC`‘p5Á°¬¡O‰%Z/Õè5”³é#CK`‚XˆªÂcb°Q#«§Qa»–Ž…ƒ¸q…èpÚÝ÷)™®G+~Û–ß÷\"ðlM_^zò©šæ!ÌÉàE«”Ð¥’®šÀ‡ïa úØp86ì„åˆn+oì’Jâ¶ö¥¾,¹¡ó‡¢ºw\n¢]̓pëŠÛRÁõ'§eÖJÕqµ'ܨ%£'€nlO‹h@>NBÈŠX5,ˆ‡‹¢ÊrGr¹ Z l\r(ªË‘jIù†±lŸ¬%b‡;s+±× ¤Wg7¨)’*e…¸1µ•ÞÑ3“L e@(»p\0 ÐÃŽèds®AñÖD\0Í\\bD§\nuê/&1¬ÞXR×¥E楂5¡Tœ\r§}7õ§”ªîÔþ”AÙ¬áÉkâ\\–øö͵´ŸÇqà2Ü€öZ-wo´“tßZùƒ‹¯]ó-yq2j+Õ†¾Õ­Ã«¬€n¾XA«Û\0†\0º¾+S•+ïY6_BúV7z®nZ@̆²Ô·Æ´]´-UMJc*¢ü¸´®í¢s\"ß+\0·ï¯x´B3^«öà0\r÷ÜÀÎïÁcðÖ\\jÆÆ*¬P-\\Q8ˆÊށ·…l•cË%XþÉVB‡}‘,€þ;(‰`*Qú	\$áïÛrßÂ{ÁKøìCúÖ%¬\r¥ˆx	ÞøQû…,¶Ø¾¥×/‰vàä\" pÁã¶ð~ Óáã ÅJ5eãü®Eš-^âX;c²\\©¶×¬m‹´7£?˜6C*庮†,7®HfÄ/Â9eÌ0[@ñ¤!bê®íÅþUБ=›Äi.Jocñj;ø—B³\0¼ƒï]Õ”ÑúvÙGÃÜ8àO\\\0ÀÇŠüO©›\$Ž•.&	p‘\\‹H1bØpø’:F\"8Ŷ…þ‰ŠøVx©ÅýµR®–xä=À3Æf1Š+|Ò»\0ÂBÀ¼kbÌPÇLÑ’£ô\$zÌáàÎc	¢ÇÐi,Pcb,pÃn(¥Æ,¸ì`'/»~êÙkÖµ‚Îp€q-›Áȱ¹VÀÜ܆Ü\rÙž	\0á‘‹dSˆÓÈÚÍ+º\"Šéˆ­1\0(Ä-’Ì1~útcªþfý¸àBÛ‘b}Ø ’Ã0<1\r°¨¨L’€»\$¸ˆ2d\"1ž&ì™Æ€BóN…Ô\ràB\rrƒ«\"?vädäZá±.\".\0?wä¼9€oÃà\rÄ0¥Ñœ!¢ÍdR€‚뤶\0‘ÃÇHëÜra%ЊØ+\0yrƒH¾sÏ’4W#œ,\$èô \0„*xBó\nPÌòü|„ 8@/ \0ø2U’°ábíÝè¢ÂÎΪxÀ!¨d§°óúNÿ3SÔ?£ÑP»…€(òg\n8·‡ppŸˆü€S9õ@‘'  Ç\0úyµÿ\0¦y46¡H<‚öÌ×ô\n`S’ˆ…¼ÈûCY¹’„”³jp:\0N(ӍŒáX4ŒkÌÈÓgßDy‹<–n4™£ØrS<ÒÏýˆó¯?¥\nÀÇBãúf('™Ì~dgÓ™SËÏ?<³ÓVg(1™éãæƒ2ù£ž­—²)ÕôŸf`éZ€¼a“>t{ÀœÉŸô’>ñø\0ŠìPû`O¼\\sŒ<õ?4äwÞ~³ÜÇf@z™ÿÍ~hBW Ìø³á´ŠxhA¡¡ÜO'=úP֌ײÜö±ë=óúc[ysèÌûgâ|¹‹Ï掳%™Mè,Q³ÆÒ8'X žhlUs®…§Ù¢ú é4ËÃqDýÂx*8g§NLšBÈ–¨;§}%eû@YìŸv ho!\$æ›NcCXì³@Ð;YH'Á°@^ à·Rf^x„\0^osÜ_fª—“;¨Ópj]²:’Ô¤ïõ.mLêl\rš®V¨\0ó@Ü€¶Ê\"ÓÕÄ1%Œ!_êô@-]8f¤ç -Õþ±äa]Y¯WšÏˆh`(‘¬äJë@…ÁÖ\rˆ—õ€Y	kB(€xÖÂ:5˜B\\QkO[:Õ0˜¼¡­uk›X¥\\×P\0ë[öx¹ÀÅ®`ŠRIGÕÐk5°ðª§YzÍ×PÒ™¬=†l=áõÖe€\0ç•2=k` Å[K¼‡B꽍Ìû8ž¶C±Í}k«c{#ÖØ¢„ølŸdfF.̵ü-›AºÿÙ6º†K­’•¤ÐÖ×Pàv„'¢lHiAÝÚ8C¶“®	G„`GbyÙ¾·Í- 0•Ĭ;[*_ˆ¡ãmlH{(;Uo¶ÕÑ*Ä]Š,Ä‹åŒÖÆÈþôXË“¡80Cµ°K	­!N¼õÔ(I`¨³	V¾Dv½§íšwá·rpc,ðåŒÃÓ\0ää 9~s»Xn㦇¢žŸr[ec·4dçpÅi	\\…Èe2âãl±ÄaZCk»gl÷bB„™¶7x%¿ê轞í€Å»Ùk`ì\nÁ(@ź«®„5åݘ¥Ï­ċ#t›–Ü–éãE½}Å„sñ–Lvö÷E¹ï\nQQÛ”Þæú76}õ‹Or»çj§b¯%@7‹˜àÛµßh³w͹÷n£kÙ`Víq·±Íòï³~›™ß~ø„4{Œßþå÷ë¾óË;òßï8p2mP+ dÖaX8&,=Òn›}ü!/øK&\rŠÿt´H™Ó)/øYÜ”†6@å¯=}ðŠðEU§lKÃü\\kÓb[×â1Gø®­M­)™J¨xXÚEïTä¾	/¸\"-‘ë…<4ßxDˆ¥ÅíÐpÄ(¼3ÞÊŸ·ß´'È+Û\$\r†¶<rí×n`H\\t\"þ¶70=ä·Y×Wéhsð­\rÏw¼~°!ù0@6l‹\\† •§/þBò7’¼‰–ßÏ>Fÿ‘܉\\¶¼RÙ¾-Çn‡€þܧ\n¸?F~†œaÞ×+xÉÁýëñ¨\rœl,fúCß+­Žîw•i¢GøÛËî.X!¼_à71ymÌ~ñ„œDå¦È7åÊé	÷š¼ÆåîûÅG;gówƒàb/89¯ËxÑ@!R–9¸éJq˜Y¼hß'3¹ÏÍĬ*÷ñXw‹Ë®^—ÛË	¾7ŸÎî5óÀûåÖ`ö:î#È+Û­0˜ž·œS¯ˆ@0óo7:&~r(Z·‘G1zÐþˆ€·¢pÝÎñdNŒï“£›`ç¿/Fz@8Ñt0ŠZÌ_ ‰ªÎ0³™{Úè¿Lén•‡×‡oEËÍÑâ=rû¡‚Gj]õ H•¥›²Ò·…»ÞAf+ªÈèVº•º­mžœ7ýåßB‹ÛÓî*q‚þ}cãwس=Û„g¥»wE¢-H·°€»·¦½&Rh4—ªMêžZÕ_L½©]WV'ÁÕ¦§Íñ\"uŒ@-ÜaMÃsº@9êL:ÈÕ’]ù#‚ÝaëoybÝ\n\0[Øêrðp*}Qí‚bwßÛÓ¦?†ºâÿ;Vc¾Ê°›»	«.Ûsç´¢XíÖ°ûy·R=§&d”ã·rûO«žçõ2Åj!Ïux¥ÜÎÔ§R{NÖ&øµÑ»®5ö„}£ßvyÛ°Ž1o8Z#žþ{ÛNärû½ÝÑï‡Q:BÕHzW{òïW{:ìržÞ÷ó¶}D\$§j7)àP€÷ëÁÐÝCvV¬X—¾ýdí¨D7ó፮€·¼,Ôh»÷á_ø]·^í—qσܟxO»]­ïŠö¬?p{Æ\"ˆðOŠ8Qáµ?xw}ùJâ?9kâÞüx½5buÛ&÷øÏo›ÅÆ^ñ†õ¼Ÿ¬>õw“g]çíh¼#ä?+÷‹ mï(³¼¹àÿ/ngŒ	é5â5<ù;‡ñüòÈ…¼Ë³½œxÍ%‡³‘;ì(³ÞVóŸ–;Çço-ìó˽ëòÿ.eänkpËÂÀ_ËFäXõ9ÓWjQ¥ÓàCBاåv3R=°ì†¦;aÙ][yËÈ»4Þ/¢|óÃ##v	@_Ç­}UçM>ùßÌþ1§»\rC£MúqƒCÞÄÆädÄ˜U#[ÓɦŸm\n\\Ä\r6ô'Ï>‰ôÃiI;€R\0X€ç<rW0[ÀE°dHSèH\n^×\\”¥3ÂTû´ÀF÷xB™îÀ\$	Òi÷´-‚­'ûÛÝÕ÷Xf¼}\0#ɤ	1êo·BÆ€*;Û1±(\0ø~@)ü§Òh>³ª{³â~Ûøw·ÉH/vL\n9È?doÒÑð°,‹x)#>˜#b`',úgTð¤È~¯tˆ	€YÐ}Ùï°/]-'Òüž\0¾(ØÈ þñ@Ï¡î/Ÿëä…>¶Š~ðolH‹âžÜöÿ·½À/qû–DƒTúéö~¾¡o|ÓìaÉþ°°#|F8ÍûdœÏ¥ò/±|“ì¿u÷¿€Vîâ©hø\n>Û÷ÿ°{´	Þõ÷ˆýçï_{þGâ IaùE½÷&{VNñžod¡õÃFÆBÀXûï×½ÙñÀ(I¦N@Yû¿Çÿøÿ·ýÇð9»üÉ¿\n-èû{çã@RýoÛ½Ù&‘o^3Y¹÷ï»>ð¯†|”òŸø—îþ-ñóö¶ùä~åý/»ò?*ù`\nÏú?—Sæ!VùŸîÏ©óœüïîÿ>ÎèÕ¸}ïãþO⟕ü¿Å>îýRMïûºƒõãø?b@\nOÚ?þà0¯s\0ˆ¢IèÏ€’ú+èà'¾’úX¯¦À,úƒò`'¾¦óê¯Ô?€úÓñ¯å\0‚K௸¬úCéO…À2út©>¨LO¬¾¢Lïv3ŠàúÒ\0ŠÎ[PΛïlë¬H\nhä²Îlr\$/Àý\0+½Øý\0	»£ž¨	©\r@ ?Kå)<#PøÓîïs\0Žø ” ÂÎ?Kæ@Ì@\0ÃæÏꀱø\0²%,p)?#£îïÄ\$ø\niL€¦¤°3è[Ìå3˜’“îð?²¬ @Ï´O¼\0ªýö°A|P\0™ôD?²N@\$Á,£Ý/ÞÀÿ€\$B?0ýÃø\0‚\$¯²\0Vú’LhÍ…¼Žˆ	èé€ùŒ£é½Ê>¤#6ý+ù€>öR:p¾>«7#÷…½\\Ð³lΓãAoãüÉ<3lø	pe#7ÚA@)À±ðü¯Ü@ÒÔ#ýAV?hýãøƒ	0*ÐZ\0“°*Ð\\AuƒüÐ_>kÃöÐb?>«ïÀ\"…½cæ©#6>ÒBÃö’Òü \"\0ž>Ü\0psÁÒ?ÛDPvA\\#þà(>Ò÷3EPŒ¿>ûÓ:­Â<\n´OÅ\0ˆüd\"ï@A\0ô°Aꎐûð‘Áò”ð”Â5ìÞÁÿ	“ø #¿‡	´ cþ©	“þ€+´@ÃùhØ€ø÷¤€\$\0øŽ‹:M3nø’3cêÞ`ûèØÂ„ÑT+I8¿Bò3@*ÀÆÐø	@'”\\pM¤8Olòüøû¯†‚­»ÝM€Ÿcî#üÂíÄð7B÷h`,	àâ6oŒÂ\\\\.S>¤›DÌÙCù˜ÿ0ŠË´ÐÆ£S\$2ÃòB‚ù«ù@&AŠ>ºLðkù¬4ÎAóÜ­3˜÷Ô°Ð@½;öÍ>pùÐüɤ‡\r¨\n°3|Î\0\nO‹Aø:6ƒô\0¥d7à«@8ýœ%`#Ɉ[ÐÀ=ÚDåÀÐ\n°ýÌÜ3u’LãóC™¢9ÏBCÔ:`£Ž‘\$!hÚ\$Ó“;ÐêB”20uÁ[¬8°ñC×	Ä<ôÃäúó篟ÃëdPŠÃß|=q€2pí€V>˜û°áÃ÷	|*1\0Âç\rÐE\0©dAov´PÎt'?d,P­D*ü@	/Ÿ#6øÔCP‹BO\n¬©8Ä',5ÏÑüE€ ½ËLq\r?m¤Eq\nÂzþC@+¤är60åCê?3ß/¡Ì“ˆ\nP܏ÙlHð•D—ü¯Í¤5\nóü°°ÂÆãói)D°„1(ú£Dƒï£7ƒæÏu>Üà\nà\$Aæüj4Í\0˜?ê4Áª?”ÑLK	Aæ¢>Ͻ?Œü‹û€ÀqDI@³£\$;ð†D®Ž8	 &¾?;°c€—ÄJØ£bÑPû¯ÐÅþ\0	ðBÅ#3í`‚øˆ)ªÁ»ÌOÐ3CMZ50âEO6èÔC¯ì\0ÂÀŒ\\\$èÍÔûp[Ð9BãíÁª#cj<‘1Ä1B;còÅDBhÔ?Ëô@`*€ƒ¬.qbÄÐøX	o?;\0KÜp¤3¥8	ÐRCÌú6/®¤—ˆ\$>lͤpIÀª,!€*\0®+ÜÀ>=÷]±wÅã\nT^pgźú#ó\0ž?\$J@Ä	\0*CÈ*É7Æh\nñj?“ê:pArø”]Y€’ùÔL‹ËDbÑŒàúïBÑ4d@(Dä”ÌcÀEçÛâ@>\$Òà	4¾Ø‘þц©</¶Ð?\n€/ĺ>¬gpŽ>šŒü± ¤I6i8¾;³êÃèÆ‰cÝ1¢AZ6€!Æ}<j±¤D¢¤jÉ(F’?dÀÂÅ'óêït\0†üTeÂØø´1– ú ü£þAv?lnos3˜’„50†#Æ>¼Èòœ_¯«Ûd°©¿³¬UкÁZPú©4DŽ|;Ðr£‘ÃCðñ€ˆø[9£ê¤¥ú5IÇ5²I‘É\0ûEOÜB\0{9q C‡|\"pUÇZÎPû` €²øý´GcœQCëGPúJO‹ñÂ6(ÚBïóÇz>Ú7ðÏFøöÈ0IÂ:¼vOŠÇ‘¢BÏuEäµ·,\\0ŽÇ¸r8îÈûqgA6>ÀýÑ74D÷0qÇG¥ûêÍ>-SE@# ÑÈÎGÒ÷¤.à*\0i\n\\-`*\0q\n\\eñ½Áÿر\"—Œ)qu¤ýÃï³nùô@`>DÔ8	\0/Ä@þ„_±Ú€¤üw#îǍlƒÒG‚>Ô„²¾-+ߐ6¿Wl%°6½·l0®\$5´sÔÅ&Œ\r *\0e!èrÇÿœ€qI” \"ÀæÑ> Ș3EILÅ\"‹â‰94G\$/ñ¦\0—´‚©\0¯ Ñ-2>/„ƒì倘üèÓGg\nà/¿LŒq®BP€\"#7ôzñáHMÔ…O‹ÈO\0̏ &£¶2L‘ƒÁT^P@Zúd¨À=”]Q—=çÌKCïEã\0ŒQO¢Æ\\øôs0¤¤>ƒèq—Czù¬†±—G„>¤†²¿ü	ÌÄ@?Œ0Â?ü\\oÂ¿³–èø4Md1‰9€‰\0¼ÍGò?m\rDÆÑü(Ô´LdòÃ\\KJ8\rE’Ðù-24U 0VAÛ”…R=ÈEäe£þ¤5!Ì2m³qðüÏÓAEÛô²V\$ÆüÏ•ÉâŒØÅI9Óü‘	C&ù\\GÀ)D «ü§½òü4çIç#pú«#ÆøŒ—ññCˆù\\x£ø¿C(\$òƒHÍ:NI(J\0΋ß\"w\0¿,)PØÇ¬‹íÏ‹4<þÔ!òŽ=ÞúœGošÄó‹âP‡¿6üìN±QDë\r[;‹A|KÒ'AAäP\0¥C:šÊ„̉Ñ4Åã*To‘†£ÕD˜F^ÈûÉ‘\$)Ï¢»¬\n«É’àÍ)’(Sà‰\0ò’È(ý\$:ä­@à‚²Y8’‹JÐà#ÅЂë+œ¯\nQ5ß+`a+ ¸iþ`6x𑤪†è: ÚŒà.ÐT‚:‰þa˜\0øŸcv(ƒ^X¨€Â¼H˜O.\"JÊðO\rÎË>ex-¾¨J¸€èKPïû¤rÔ‚-`2²€ÜË_à7€Å-!\"Jؐô¶òÝJêH.²ÚËo-ø.²Ý\$ª<¸BOЀ`> ©dáµ\nêH\"ò؆o+›“§s‚ؐè 3ƒ‘+¢± ©6¿/¡ƒa.Ð\r²ð†nd»²ï˨é’?ˆô£z1\0¥àð‚?‰¨ 7€ˆâà<À?âãø\$Ó\n`+Aw*MQ¼Ã<Pýo¿°?,)#P>”à€šøÌ„\0¦?jŒÞÄ“ÄVqÀ?“£ñ³\$¡	9¯õÆ-üÄ2ŒÌIÄÐîD9̳Lg1h[ÌۏÏ1ŒÄsC1sÞ©9Lz?à	 LWdÈovLŠþ#ðÐ9`ͨ0æ€Þ‰É¦W·–ˆh>\0>¦¢Å/)Dáü²·Lº¢¡ÀÌÀ\$ÍaÀ†¨9*ƒ<:C+àJËìKPJ¸\"—L\\Ã*bÌò 1ÔÀä6ë4ja+\0î%Qf ;KœE¬¹ÀÔš`è> >7¦tÒHw€¾MPn3I:fàD <LÄÊRÈ'¾.\$ðíBO\\²\nû	Ðø5ã86Ä̹D1‰<\r¼³\$Z…œð’ƒ„ï4Š%r̃¬²×àúÌþ\$€ƒ˶§»éo™^Ú\\°È\0øf[z“e…í6|Ö“gŒ&ñ8+M=6È5ˆ³\0Ò1Idì{™^fqd趈s7(|©tM.]HSó[€ø¬Ô ÕÍ;7yC„—šÎ¸mÎÌÞI|A‚Ê:`c †Êß8\rÒ…iÔɃ¤ßÓ@¬‚P`È~\rlËa=M3ã€áf‰<ëÀRå\0Ï!ûÀ@’ØeØ«ríÍdO‘t ¬‰T°³-æXY9A“˜:38áOÊÞadÐ¥ö’gL³fxË=4K\n&€ôu0KòͨÇ,ô³o7¤€ëĆÓ,à½Î3Ë:h|’ÎKbá)AN¬úÄ`ì€Ñ:ØÎŒ€×;´ €Í»*sI&”á«Rsµ>\rX\r!\0\nÀàBsVM63˜KâO×:Ä®ƒƒc5„× úÎæ‰X!AœQ9z%`º{:èHòºDëE€îcv!‚Ν,Èôá“:Xƒ)¬(üº%˜Ë2a&Œ«,ðl3Ó8j1è|’͇É=CRrÍË<â\$óŽ\"KB3äöÁ'9…:|÷)`Oj+îÀ9	}-õSÒ>2¬ëUU5ÜôBUNàóô÷²ÑNÄäìS¾NÄüì«ÈO²äû3±KNìÐŽˆ†¨ ×@:/ç7£ÄQ†¨ç!Ô@.’(&v9ÔédÓøŒ^þ“‡’ج!ï¦[.pGc K#?¸füÐpÝe“Oæçd®€2\0k6)„,\rÿ65GmOFV™dåiÈx,ÿa=O@s³þc6…`¤Ø\rJ\0å;‰³H†(ù*ŽrÅ-Œ¾.íMÛ[ BΠ!(àóM¸LP«bUèÛpJÔ:î1úÞE“»¦º!:¢,ô:‚YB‚ò*KRÞ¤¾rÍ0جLî“a6Å;6+2Æí)èUB`JsV0È:Ô0_B14/ÎúíAOáœNeúÈ)A~\rÚÈ öÃÌ –NPów“,È´C„î3œæ®¹ÌÞ°T3öq9}SQ\$ÄãA‚P“DÐ;!:À!îæ¸YŒÐsÄÎû6Ø“ÑÑRԁŒFt›#C¨Ï€øQ\\`rXr…<í'ò×72ؼ´O-„w9Ó¤ùËb8à5€Å3{¡\0Ä7ø\ra\"ƒ\nh[j·ŸåFÛa)”Ñ+€2Ï<%’´M¢ê|®m¸|\nÀ54pˆþ	&bUQ¨8\0EŽÑ¥4AAN,ˍàì˝FØ•To(ÉG`šO•GA›³êËGlý`:†=è\0<\0Ðëꔃ²ŒTÌNϬ=.û´ 6Ζ(ûSBİô\0,Jð?”.º(é†%“…,Ê?B.<2ðhM΃I`éÎŒá4ô¶*é˯G°ëì'ÙI¸ÛíÊÑ9š¾ôžRX—E%,O\r,ʈs³Ï*•(”}<Ú—@c©öRœj]Dþ`UR÷γ,˜.²÷·d£¥rø¦’	\\·N•ÒÆl¸ÀØRÏ-󓴵˚Üëkô·Q•K„½”¹,ƒIå.ÒíÒêšT·@1\0ÉK 4¼Òý/]04¾K›K\nC¨&•F,¶ô³SF0“ÔµS.-´ÉÊéKÅ2ÔÀRÏLe'ÀìÓ7L…0”ÏËoKõ3TËS.å4T‘:X̾4‰Î9/:WRò9.Í62ôËËJ6ÀŽS	.ðc´¡Sv^ 0®»ËèO|L±MD%3î 4z3Id\n»ö•áú#tPq5h{!7Z‘Û»2 „ÆthÊ !îK€Ñ7YÝó1S³<»áh‹µ©½Ç-<ÎÍpÆø€jéÍÖà<4øÓ¹O˜%@‰OKBø°ôS¶!10Ô‡SÚҐëôõ‚YF…?UR4ÏÁ›ÓÜÇ!•õŒ~ÂXl´=¨ÇH|¶5QHýC&¸\"1M'µ8¯5a`Å?¢SPlõ`0—\\ÝmËÈTM,8'1eQaA&	\nÇTRèI¡ÑGÌ¿´ýÍZxôâ6yQôôñ¼aÀJÀ‹¼üûkU&ÿOXHá‚ÔphQEN†â=Cµ\"ˆLÉ›( ÚçQe@\0;ÐñQ®ÓPÔÅD\"€/—ú\rB༖tãµTžì\r<eÐÔeS}Om¾—EP­P\rüÓ«P5B•4U\rR==õBSÏR}Hã“Tè#µE\0Îô¥U‚=QE‚J<ýSð` Û‚¼1x\0ãU:óéOá/‚¼€+µN J`P!t8Õ\rT¥µ7 SõR58\nc>ÇÆºÈâ!ÊõŒ1{ÀúÓ¼uE€ÚM4{Ö”4TÞíGa;Ž|ðñà5\"SÎÕýNkSä8»DÄÔ?JcU0Õ¯RtB¸{ð5qSåB„Ï,±\0ÆpÐàÔj†!‡\0006K¼1å ƒX@¦D¨V­å_ .Ô(¥_`-Öð`ÆD¼àua .‹•X\rFÃÕöðõRõ…ÐFD½•‚S÷RxhÁª<mXjïb­ÖWù_G\nVšÄ©èS¸ï\00074Ù\0ÒLRÁ\$QíX›pˆÄÓðù ×ê\$°Nó¡Ö&83&a+²€|l³Õ‰ÏÉQsÀA£…CXšú]Î_X]‚\0á+8+UzƒsRPΨQ\0Ü\08Õ™PóOÝMU¶ÔH6!ªVX¤5†˜X…a¤ÇV/kӏVF”ý`‰TŸZ\0D5FÑOS½nákÖóTMSÕ¾U\rTMZÒºBðÍìoÓîÜEgÿWGµfµÅ„-YÁ(µ}V7T0BÀ©œ4Úð’Âòƒ[9‘5ÖX´åm¯ÿXhét>×LU`4\nÍŒTÑõ††o9­vÓ×FÊUm®Ö\"ýu†DÕ€	\rw+Ö˜\r`©V(ýVÏãPËÆÓjô]K⏜4°ìoT.\$mDĵ¶	S’à‚­e@3ÿ×­;@7mŒ:È륥“´dðÈ!õâ¥Zð£ôá»Q[œåõÑ5P•µ7;Sôº/BÖ!McÃG¹ÉT»Wõå(V–ÖÔò䯕<7ó[lÓt…‡^Êô×ø\ri0ÁPÕÐÍa£|VX‰•á̃a[x9Hˆõ]¿õ¬^&m¹‚¼ƒÒ¤ù\0ÙXl㤫Ìú•‚•Þ€»T‹ÐáOXl0£öØ(ô,Ï`€ØoaÈÕu€×ø3½‡U#Îô'0+Ó½8ñ]HT!XX\ryW@è¡\$ÛMQb¹‘-ä)ÓX	oõ†‚\n|Å`-qÎ-bÙ¶U‘VcŠÇÒÖ ‘3N=5vAg\rýŒÀ8<IGPBÔ9O^8.	Xk®ö;+\"Cµü×Z/åÂUUo[i`Ö\$×ïd].âÙ(s¼Ñå“ÔèÕ`-•Öâ½€óqªûe‘-ÂN¿=#[ÖMÙPè…ÅÑO^(B †”6ÍÏ_u–¶2:0mx ­Yg^5”-‘YG8”´AØÝc¯VVßÉdô6Í\">\ra­è™^íÈЮ0õ\"䱿R¤¬–,·3Dä¯Åøß¡2iGÈ5§Í?:\rT!ƒwg„óM[7;[v{ÖªCs\rU9d×`ØÈyh\0h@ØÈ~ŸqT4Ì×_QVÍvÃø•F5ÔPƒs*ÄMc]Ió9Ú1T0m†V)S•ÓXÖ[üâÍ*Œ¨c“dA+Œ1hóbõ:×IhõM@Ýs>P¬ÛÍÞ9ûvuTË>¥Ž‚Ö½`	O5ÙccÛÍöjϏ?QëTmq\$¼¹—=(VÏ6F\rTr¶®~¥šÃ\0Ø|m•CÚ)[Õ‚N¨ÖÆ,dÐ+;µQm™-Ňðê\$µo²B-žsšÚÇRˆ­ÕàN›:’È/8‰>øb.°Û40>‡ÆÚñ,‹.tÚºJ¶\rÛ\rk®•6Û	WMmØ3[Ñx5œËêqÕÉÑìLb´6Í;`•Lm‹ÿ4•Iµ6^d!5`7¤:aOÕh4õµÀÐ-3üÒHÈUm˜€¶Ú’³^_ÀÔNTꍱ²[PHðÙØa=UH\rE µ\rjM¶•”SåPsN6ºMXQ 5Œæ	Ã\r’Û­YKqsþ[¾s-\0Öé®ï]¼aN³d5?ó+—Cf¼ÍÀRe^ø+@Ø[ÓP€5­ËÐGa‹öôÒµoM@w\0QyoKŽõUÛøe}¼Õ[¶_oK’Ž@Ûán»wxVýpEºäùPuo5öR“ñ8c·.¥	Uo5Áw\0ò\n(%ÓNp¤ëVÖ®ˆJàˆ AqtÏ×Zæ#Õˆ³òÜk6””ÜiEÜØV‹R{qü×fØ{3l@äPqH‹r!VS]úÈ6¥Ú'q«Ð@>R=E\0ùêSñ+UjõÊ”øYÓ[źuUÕ¸Õ»rÌÜÇp»6Öõs]h'tË	mJ ¬8ñQUUuD’­m2z›Ð„àˆB¡K”ßÜÝv'P¿l]AAfËchÈ\"RåV«p´ÓXÌü;UË5öÜŽÆåÒcƒÖ°zPTuUQYëõíZ¯5åU¹…ýJen5ÀÜnÞÕovÅs=Hu½ÙÅZõoa‚itÝoUÀÚ»uuH5nÝ=jSÐÀUPZMNÄàˆÿQmobF·A>´]i\\¨G\rTŸvÏÖ‚Ôâ\"•Ä2Ø×v4γ=]¶2åz\n=:¢\rh*s¯×fÅÓw_ÔäÊUt8Å[Ý„8]Ÿ+=•ÐëGÕ×7z=n…Û—JÝòßuè8|«Å4u]ô	caÈÝzà×€YwíÊt]ܪÔÕáÅä^€ˆÎrÌÞ)w­]Œ%‚i,˜¦õí¤e}w—0<Õ3ÕäµnÛLr½å.³Ýiy-Þ7(K&‡\r_;f‰[­Ìˆ\\\rXÃ+Hï…çÔøa=ܳbÞnôc€	,c’!£Õ8\$m“VõvRæJ]g -†W¹OsˆôŽƒR( êÞ5]WHVC\\5@DÝ!s%Î’²^×sdñ%NÐÞ9úÈ7·Öƒ{U™¡+ÜÙI-îÕ¼€ïP\0\"FЈS5…ÒFÞÏ[Òâµz¶Åsk(7ÄEz•Ÿ÷ÇÖ1-å@Ýxñ̹Ú>M³g‡ïWM£âjÔ»n\nÈ ƒ^«tLµ·ÓUc}AÃVRÜúõ™@;ÕX-<sÔ<×t…¹C8^!P}Ì3q´d·\\ζLÄ3uÀÖúÛû\\-\rSlX{sàLÅNlÙåïL™ßŸnà‹¶&ZÅpút6_[\r±¢°¬ƒVÅV÷è„C~ÈIªE…?W%üUöÜ«u…[ÓATAW\rü÷•¦\rdáwøßÅV½ÛkÝù¶þÏh,8£ÅŠÏ”Üí×D×ÈØ»¦Ë­|añ¸6-_1O×Ã`j…ýo?7>\nÀXsôY‘nã^cÑÙ{jÈ7®ÚÄÚÊ:ÈÜ]E\"JVJe~×.ÙQHgžT3r…cÆÙVßBceø“3e^Õ€…9®8¤\nò ™Zð(ä䇪½	;tæzôãՍ#	üq#à\0V.\nÂS/DkÈ"); } else {header("Content-Type: image/gif"); switch ($_GET["file"]) {case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;"; break; case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;"; break; case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;"; break; case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&Ùœƶ•\0Çò\0;"; break; case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;"; break; }}exit; }function
14
+connection() {global$e; return$e; }function
15
+adminer() {global$b; return$b; }function
16
+idf_unescape($Jc) {$fd = substr($Jc, -1); return
17
+str_replace($fd . $fd, $fd, substr($Jc, 1, -1)); }function
18
+escape_string($X) {return
19
+substr(q($X), 1, -1); }function
20
+number($X) {return
21
+preg_replace('~[^0-9]+~', '', $X); }function
22
+remove_slashes($Me, $oc = false) {if (get_magic_quotes_gpc()) {while (list($z, $X) = each($Me)) {foreach ($X
23
+as$Zc=>$W) {unset($Me[$z][$Zc]); if (is_array($W)) {$Me[$z][stripslashes($Zc)] = $W; $Me[] = &$Me[$z][stripslashes($Zc)]; } else$Me[$z][stripslashes($Zc)] = ($oc ? $W : stripslashes($W)); }}}}function
24
+bracket_escape($Jc, $_a = false) {static$mg = array(':'=>':1', ']'=>':2', '['=>':3'); return
25
+strtr($Jc, ($_a ? array_flip($mg) : $mg)); }function
26
+charset($e) {return(version_compare($e->server_info, "5.5.3") >= 0 ? "utf8mb4" : "utf8"); }function
27
+h($Gf) {return
28
+str_replace("\0", "&#0;", htmlspecialchars($Gf, ENT_QUOTES, 'utf-8')); }function
29
+nbsp($Gf) {return(trim($Gf) != "" ? h($Gf) : "&nbsp;"); }function
30
+nl_br($Gf) {return
31
+str_replace("\n", "<br>", $Gf); }function
32
+checkbox($F, $Y, $Na, $dd = "", $Xd = "", $Ra = "") {$K = "<input type='checkbox' name='$F' value='" . h($Y) . "'" . ($Na ? " checked" : "") . ($Xd ? ' onclick="' . h($Xd) . '"' : '') . ">"; return($dd != "" || $Ra ? "<label" . ($Ra ? " class='$Ra'" : "") . ">$K" . h($dd) . "</label>" : $K); }function
33
+optionlist($be, $qf = null, $Eg = false) {$K = ""; foreach ($be
34
+as$Zc=>$W) {$ce = array($Zc=>$W); if (is_array($W)) {$K .= '<optgroup label="' . h($Zc) . '">'; $ce = $W; }foreach ($ce
35
+as$z=>$X)$K .= '<option' . ($Eg || is_string($z) ? ' value="' . h($z) . '"' : '') . (($Eg || is_string($z) ? (string) $z : $X) === $qf ? ' selected' : '') . '>' . h($X); if (is_array($W))$K .= '</optgroup>'; }return$K; }function
36
+html_select($F, $be, $Y = "", $Wd = true) {if ($Wd)return"<select name='" . h($F) . "'" . (is_string($Wd) ? ' onchange="' . h($Wd) . '"' : "") . ">" . optionlist($be, $Y) . "</select>"; $K = ""; foreach ($be
37
+as$z=>$X)$K .= "<label><input type='radio' name='" . h($F) . "' value='" . h($z) . "'" . ($z == $Y ? " checked" : "") . ">" . h($X) . "</label>"; return$K; }function
38
+select_input($wa, $be, $Y = "", $_e = "") {return($be ? "<select$wa><option value=''>$_e" . optionlist($be, $Y, true) . "</select>" : "<input$wa size='10' value='" . h($Y) . "' placeholder='$_e'>"); }function
39
+confirm() {return" onclick=\"return confirm('" . 'Are you sure?' . "');\""; }function
40
+print_fieldset($u, $kd, $Mg = false, $Xd = "") {echo"<fieldset><legend><a href='#fieldset-$u' onclick=\"" . h($Xd) . "return !toggle('fieldset-$u');\">$kd</a></legend><div id='fieldset-$u'" . ($Mg ? "" : " class='hidden'") . ">\n"; }function
41
+bold($Ga, $Ra = "") {return($Ga ? " class='active $Ra'" : ($Ra ? " class='$Ra'" : "")); }function
42
+odd($K = ' class="odd"') {static$t = 0; if (!$K)$t = -1; return($t++ % 2 ? $K : ''); }function
43
+js_escape($Gf) {return
44
+addcslashes($Gf, "\r\n'\\/"); }function
45
+json_row($z, $X = null) {static$pc = true; if ($pc)echo"{"; if ($z != "") {echo($pc ? "" : ",") . "\n\t\"" . addcslashes($z, "\r\n\"\\/") . '": ' . ($X !== null ? '"' . addcslashes($X, "\r\n\"\\/") . '"' : 'undefined'); $pc = false; } else {echo"\n}\n"; $pc = true; }}function
46
+ini_bool($Nc) {$X = ini_get($Nc); return(preg_match('~^(on|true|yes)$~i', $X) || (int) $X); }function
47
+sid() {static$K; if ($K === null)$K = (SID && !($_COOKIE && ini_bool("session.use_cookies"))); return$K; }function
48
+set_password($Jg, $O, $V, $we) {$_SESSION["pwds"][$Jg][$O][$V] = ($_COOKIE["adminer_key"] && is_string($we) ? array(encrypt_string($we, $_COOKIE["adminer_key"])) : $we); }function
49
+get_password() {$K = get_session("pwds"); if (is_array($K))$K = ($_COOKIE["adminer_key"] ? decrypt_string($K[0], $_COOKIE["adminer_key"]) : false); return$K; }function
50
+q($Gf) {global$e; return$e->quote($Gf); }function
51
+get_vals($I, $c = 0) {global$e; $K = array(); $J = $e->query($I); if (is_object($J)) {while ($L = $J->fetch_row())$K[] = $L[$c]; }return$K; }function
52
+get_key_vals($I, $f = null, $cg = 0) {global$e; if (!is_object($f))$f = $e; $K = array(); $f->timeout = $cg; $J = $f->query($I); $f->timeout = 0; if (is_object($J)) {while ($L = $J->fetch_row())$K[$L[0]] = $L[1]; }return$K; }function
53
+get_rows($I, $f = null, $k = "<p class='error'>") {global$e; $eb = (is_object($f) ? $f : $e); $K = array(); $J = $eb->query($I); if (is_object($J)) {while ($L = $J->fetch_assoc())$K[] = $L; }elseif (!$J && !is_object($f) && $k && defined("PAGE_HEADER"))echo$k . error() . "\n"; return$K; }function
54
+unique_array($L, $w) {foreach ($w
55
+as$v) {if (preg_match("~PRIMARY|UNIQUE~", $v["type"])) {$K = array(); foreach ($v["columns"]as$z) {if (!isset($L[$z]))continue
56
+2; $K[$z] = $L[$z]; }return$K; }}}function
57
+escape_key($z) {if (preg_match('(^([\w(]+)(' . str_replace("_", ".*", preg_quote(idf_escape("_"))) . ')([ \w)]+)$)', $z, $C))return$C[1] . idf_escape(idf_unescape($C[2])) . $C[3]; return
58
+idf_escape($z); }function
59
+where($Z, $m = array()) {global$e, $y; $K = array(); foreach ((array) $Z["where"]as$z=>$X) {$z = bracket_escape($z, 1); $c = escape_key($z); $K[] = $c . (($y == "sql" && preg_match('~^[0-9]*\\.[0-9]*$~', $X)) || $y == "mssql" ? " LIKE " . q(addcslashes($X, "%_\\")) : " = " . unconvert_field($m[$z], q($X))); if ($y == "sql" && preg_match('~char|text~', $m[$z]["type"]) && preg_match("~[^ -@]~", $X))$K[] = "$c = " . q($X) . " COLLATE " . charset($e) . "_bin"; }foreach ((array) $Z["null"]as$z)$K[] = escape_key($z) . " IS NULL"; return
60
+implode(" AND ", $K); }function
61
+where_check($X, $m = array()) {parse_str($X, $Ma); remove_slashes(array(&$Ma)); return
62
+where($Ma, $m); }function
63
+where_link($t, $c, $Y, $Yd = "=") {return"&where%5B$t%5D%5Bcol%5D=" . urlencode($c) . "&where%5B$t%5D%5Bop%5D=" . urlencode(($Y !== null ? $Yd : "IS NULL")) . "&where%5B$t%5D%5Bval%5D=" . urlencode($Y); }function
64
+convert_fields($d, $m, $N = array()) {$K = ""; foreach ($d
65
+as$z=>$X) {if ($N && !in_array(idf_escape($z), $N))continue; $ua = convert_field($m[$z]); if ($ua)$K .= ", $ua AS " . idf_escape($z); }return$K; }function
66
+cookie($F, $Y, $nd = 2592000) {global$ba; $pe = array($F, (preg_match("~\n~", $Y) ? "" : $Y), ($nd ? time() + $nd : 0), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $ba); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$pe[] = true; return
67
+call_user_func_array('setcookie', $pe); }function
68
+restart_session() {if (!ini_bool("session.use_cookies"))session_start(); }function
69
+stop_session() {if (!ini_bool("session.use_cookies"))session_write_close(); }function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]; }function
70
+set_session($z, $X) {$_SESSION[$z][DRIVER][SERVER][$_GET["username"]] = $X; }function
71
+auth_url($Jg, $O, $V, $i = null) {global$Eb; preg_match('~([^?]*)\\??(.*)~', remove_from_uri(implode("|", array_keys($Eb)) . "|username|" . ($i !== null ? "db|" : "") . session_name()), $C); return"$C[1]?" . (sid() ? SID . "&" : "") . ($Jg != "server" || $O != "" ? urlencode($Jg) . "=" . urlencode($O) . "&" : "") . "username=" . urlencode($V) . ($i != "" ? "&db=" . urlencode($i) : "") . ($C[2] ? "&$C[2]" : ""); }function
72
+is_ajax() {return($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"); }function
73
+redirect($B, $D = null) {if ($D !== null) {restart_session(); $_SESSION["messages"][preg_replace('~^[^?]*~', '', ($B !== null ? $B : $_SERVER["REQUEST_URI"]))][] = $D; }if ($B !== null) {if ($B == "")$B = "."; header("Location: $B"); exit; }}function
74
+query_redirect($I, $B, $D, $Ue = true, $cc = true, $ic = false, $bg = "") {global$e, $k, $b; if ($cc) {$Cf = microtime(true); $ic = !$e->query($I); $bg = format_time($Cf); }$Bf = ""; if ($I)$Bf = $b->messageQuery($I, $bg); if ($ic) {$k = error() . $Bf; return
75
+false; }if ($Ue)redirect($B, $D . $Bf); return
76
+true; }function
77
+queries($I) {global$e; static$Pe = array(); static$Cf; if (!$Cf)$Cf = microtime(true); if ($I === null)return
78
+array(implode("\n", $Pe), format_time($Cf)); $Pe[] = (preg_match('~;$~', $I) ? "DELIMITER ;;\n$I;\nDELIMITER " : $I) . ";"; return$e->query($I); }function
79
+apply_queries($I, $S, $Yb = 'table') {foreach ($S
80
+as$Q) {if (!queries("$I " . $Yb($Q)))return
81
+false; }return
82
+true; }function
83
+queries_redirect($B, $D, $Ue) {list($Pe, $bg) = queries(null); return
84
+query_redirect($Pe, $B, $D, $Ue, false, !$Ue, $bg); }function
85
+format_time($Cf) {return
86
+sprintf('%.3f s', max(0, microtime(true) - $Cf)); }function
87
+remove_from_uri($oe = "") {return
88
+substr(preg_replace("~(?<=[?&])($oe" . (SID ? "" : "|" . session_name()) . ")=[^&]*&~", '', "$_SERVER[REQUEST_URI]&"), 0, -1); }function
89
+pagination($G, $nb) {return" " . ($G == $nb ? $G + 1 : '<a href="' . h(remove_from_uri("page") . ($G ? "&page=$G" . ($_GET["next"] ? "&next=" . urlencode($_GET["next"]) : "") : "")) . '">' . ($G + 1) . "</a>"); }function
90
+get_file($z, $ub = false) {$mc = $_FILES[$z]; if (!$mc)return
91
+null; foreach ($mc
92
+as$z=>$X)$mc[$z] = (array) $X; $K = ''; foreach ($mc["error"]as$z=>$k) {if ($k)return$k; $F = $mc["name"][$z]; $jg = $mc["tmp_name"][$z]; $fb = file_get_contents($ub && preg_match('~\\.gz$~', $F) ? "compress.zlib://$jg" : $jg); if ($ub) {$Cf = substr($fb, 0, 3); if (function_exists("iconv") && preg_match("~^\xFE\xFF|^\xFF\xFE~", $Cf, $af))$fb = iconv("utf-16", "utf-8", $fb); elseif ($Cf == "\xEF\xBB\xBF")$fb = substr($fb, 3); $K .= $fb . "\n\n"; } else$K .= $fb; }return$K; }function
93
+upload_error($k) {$wd = ($k == UPLOAD_ERR_INI_SIZE ? ini_get("upload_max_filesize") : 0); return($k ? 'Unable to upload a file.' . ($wd ? " " . sprintf('Maximum allowed file size is %sB.', $wd) : "") : 'File does not exist.'); }function
94
+repeat_pattern($ye, $ld) {return
95
+str_repeat("$ye{0,65535}", $ld / 65535) . "$ye{0," . ($ld % 65535) . "}"; }function
96
+is_utf8($X) {return(preg_match('~~u', $X) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $X)); }function
97
+shorten_utf8($Gf, $ld = 80, $Kf = "") {if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{FFFF}]", $ld) . ")($)?)u", $Gf, $C))preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $ld) . ")($)?)", $Gf, $C); return
98
+h($C[1]) . $Kf . (isset($C[2]) ? "" : "<i>...</i>"); }function
99
+format_number($X) {return
100
+strtr(number_format($X, 0, ".", ','), preg_split('~~u', '0123456789', -1, PREG_SPLIT_NO_EMPTY)); }function
101
+friendly_url($X) {return
102
+preg_replace('~[^a-z0-9_]~i', '-', $X); }function
103
+hidden_fields($Me, $Kc = array()) {while (list($z, $X) = each($Me)) {if (!in_array($z, $Kc)) {if (is_array($X)) {foreach ($X
104
+as$Zc=>$W)$Me[$z . "[$Zc]"] = $W; } else
105
+echo'<input type="hidden" name="' . h($z) . '" value="' . h($X) . '">'; }}}function
106
+hidden_fields_get() {echo(sid() ? '<input type="hidden" name="' . session_name() . '" value="' . h(session_id()) . '">' : ''), (SERVER !== null ? '<input type="hidden" name="' . DRIVER . '" value="' . h(SERVER) . '">' : ""), '<input type="hidden" name="username" value="' . h($_GET["username"]) . '">'; }function
107
+table_status1($Q, $jc = false) {$K = table_status($Q, $jc); return($K ? $K : array("Name"=>$Q)); }function
108
+column_foreign_keys($Q) {global$b; $K = array(); foreach ($b->foreignKeys($Q)as$n) {foreach ($n["source"]as$X)$K[$X][] = $n; }return$K; }function
109
+enum_input($U, $wa, $l, $Y, $Sb = null) {global$b; preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $rd); $K = ($Sb !== null ? "<label><input type='$U'$wa value='$Sb'" . ((is_array($Y) ? in_array($Sb, $Y) : $Y === 0) ? " checked" : "") . "><i>" . 'empty' . "</i></label>" : ""); foreach ($rd[1]as$t=>$X) {$X = stripcslashes(str_replace("''", "'", $X)); $Na = (is_int($Y) ? $Y == $t + 1 : (is_array($Y) ? in_array($t + 1, $Y) : $Y === $X)); $K .= " <label><input type='$U'$wa value='" . ($t + 1) . "'" . ($Na ? ' checked' : '') . '>' . h($b->editVal($X, $l)) . '</label>'; }return$K; }function
110
+input($l, $Y, $q) {global$e, $tg, $b, $y; $F = h(bracket_escape($l["field"])); echo"<td class='function'>"; if (is_array($Y) && !$q) {$ta = array($Y); if (version_compare(PHP_VERSION, 5.4) >= 0)$ta[] = JSON_PRETTY_PRINT; $Y = call_user_func_array('json_encode', $ta); $q = "json"; }$cf = ($y == "mssql" && $l["auto_increment"]); if ($cf && !$_POST["save"])$q = null; $xc = (isset($_GET["select"]) || $cf ? array("orig"=>'original') : array()) + $b->editFunctions($l); $wa = " name='fields[$F]'"; if ($l["type"] == "enum")echo
111
+nbsp($xc[""]) . "<td>" . $b->editInput($_GET["edit"], $l, $wa, $Y); else {$pc = 0; foreach ($xc
112
+as$z=>$X) {if ($z === "" || !$X)break; $pc++; }$Wd = ($pc ? " onchange=\"var f = this.form['function[" . h(js_escape(bracket_escape($l["field"]))) . "]']; if ($pc > f.selectedIndex) f.selectedIndex = $pc;\" onkeyup='keyupChange.call(this);'" : ""); $wa .= $Wd; $Cc = (in_array($q, $xc) || isset($xc[$q])); echo(count($xc) > 1 ? "<select name='function[$F]' onchange='functionChange(this);'" . on_help("getTarget(event).value.replace(/^SQL\$/, '')", 1) . ">" . optionlist($xc, $q === null || $Cc ? $q : "") . "</select>" : nbsp(reset($xc))) . '<td>'; $Pc = $b->editInput($_GET["edit"], $l, $wa, $Y); if ($Pc != "")echo$Pc; elseif ($l["type"] == "set") {preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $rd); foreach ($rd[1]as$t=>$X) {$X = stripcslashes(str_replace("''", "'", $X)); $Na = (is_int($Y) ? ($Y >> $t) & 1 : in_array($X, explode(",", $Y), true)); echo" <label><input type='checkbox' name='fields[$F][$t]' value='" . (1 << $t) . "'" . ($Na ? ' checked' : '') . "$Wd>" . h($b->editVal($X, $l)) . '</label>'; }}elseif (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads"))echo"<input type='file' name='fields-$F'$Wd>"; elseif (($Zf = preg_match('~text|lob~', $l["type"])) || preg_match("~\n~", $Y)) {if ($Zf && $y != "sqlite")$wa .= " cols='50' rows='12'"; else {$M = min(12, substr_count($Y, "\n") + 1); $wa .= " cols='30' rows='$M'" . ($M == 1 ? " style='height: 1.2em;'" : ""); }echo"<textarea$wa>" . h($Y) . '</textarea>'; }elseif ($q == "json")echo"<textarea$wa cols='50' rows='12' class='jush-js'>" . h($Y) . '</textarea>'; else {$yd = (!preg_match('~int~', $l["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $l["length"], $C) ? ((preg_match("~binary~", $l["type"]) ? 2 : 1) * $C[1] + ($C[3] ? 1 : 0) + ($C[2] && !$l["unsigned"] ? 1 : 0)) : ($tg[$l["type"]] ? $tg[$l["type"]] + ($l["unsigned"] ? 0 : 1) : 0)); if ($y == 'sql' && $e->server_info >= 5.6 && preg_match('~time~', $l["type"]))$yd += 7; echo"<input" . ((!$Cc || $q === "") && preg_match('~(?<!o)int~', $l["type"]) ? " type='number'" : "") . " value='" . h($Y) . "'" . ($yd ? " maxlength='$yd'" : "") . (preg_match('~char|binary~', $l["type"]) && $yd > 20 ? " size='40'" : "") . "$wa>"; }}}function
113
+process_input($l) {global$b; $Jc = bracket_escape($l["field"]); $q = $_POST["function"][$Jc]; $Y = $_POST["fields"][$Jc]; if ($l["type"] == "enum") {if ($Y == -1)return
114
+false; if ($Y == "")return"NULL"; return+$Y; }if ($l["auto_increment"] && $Y == "")return
115
+null; if ($q == "orig")return($l["on_update"] == "CURRENT_TIMESTAMP" ? idf_escape($l["field"]) : false); if ($q == "NULL")return"NULL"; if ($l["type"] == "set")return
116
+array_sum((array) $Y); if ($q == "json") {$q = ""; $Y = json_decode($Y, true); if (!is_array($Y))return
117
+false; return$Y; }if (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads")) {$mc = get_file("fields-$Jc"); if (!is_string($mc))return
118
+false; return
119
+q($mc); }return$b->processInput($l, $Y, $q); }function
120
+fields_from_edit() {global$j; $K = array(); foreach ((array) $_POST["field_keys"]as$z=>$X) {if ($X != "") {$X = bracket_escape($X); $_POST["function"][$X] = $_POST["field_funs"][$z]; $_POST["fields"][$X] = $_POST["field_vals"][$z]; }}foreach ((array) $_POST["fields"]as$z=>$X) {$F = bracket_escape($z, 1); $K[$F] = array("field"=>$F, "privileges"=>array("insert"=>1, "update"=>1), "null"=>1, "auto_increment"=>($z == $j->primary),); }return$K; }function
121
+search_tables() {global$b, $e; $_GET["where"][0]["op"] = "LIKE %%"; $_GET["where"][0]["val"] = $_POST["query"]; $uc = false; foreach (table_status('', true)as$Q=>$R) {$F = $b->tableName($R); if (isset($R["Engine"]) && $F != "" && (!$_POST["tables"] || in_array($Q, $_POST["tables"]))) {$J = $e->query("SELECT" . limit("1 FROM " . table($Q), " WHERE " . implode(" AND ", $b->selectSearchProcess(fields($Q), array())), 1)); if (!$J || $J->fetch_row()) {if (!$uc) {echo"<ul>\n"; $uc = true; }echo"<li>" . ($J ? "<a href='" . h(ME . "select=" . urlencode($Q) . "&where[0][op]=" . urlencode($_GET["where"][0]["op"]) . "&where[0][val]=" . urlencode($_GET["where"][0]["val"])) . "'>$F</a>\n" : "$F: <span class='error'>" . error() . "</span>\n"); }}}echo($uc ? "</ul>" : "<p class='message'>" . 'No tables.') . "\n"; }function
122
+dump_headers($Ic, $Ed = false) {global$b; $K = $b->dumpHeaders($Ic, $Ed); $me = $_POST["output"]; if ($me != "text")header("Content-Disposition: attachment; filename=" . $b->dumpFilename($Ic) . ".$K" . ($me != "file" && !preg_match('~[^0-9a-z]~', $me) ? ".$me" : "")); session_write_close(); ob_flush(); flush(); return$K; }function
123
+dump_csv($L) {foreach ($L
124
+as$z=>$X) {if (preg_match("~[\"\n,;\t]~", $X) || $X === "")$L[$z] = '"' . str_replace('"', '""', $X) . '"'; }echo
125
+implode(($_POST["format"] == "csv" ? "," : ($_POST["format"] == "tsv" ? "\t" : ";")), $L) . "\r\n"; }function
126
+apply_sql_function($q, $c) {return($q ? ($q == "unixepoch" ? "DATETIME($c, '$q')" : ($q == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$q(")) . "$c)") : $c); }function
127
+get_temp_dir() {$K = ini_get("upload_tmp_dir"); if (!$K) {if (function_exists('sys_get_temp_dir'))$K = sys_get_temp_dir(); else {$nc = @tempnam("", ""); if (!$nc)return
128
+false; $K = dirname($nc); unlink($nc); }}return$K; }function
129
+password_file($g) {$nc = get_temp_dir() . "/adminer.key"; $K = @file_get_contents($nc); if ($K || !$g)return$K; $p = @fopen($nc, "w"); if ($p) {chmod($nc, 0660); $K = rand_string(); fwrite($p, $K); fclose($p); }return$K; }function
130
+rand_string() {return
131
+md5(uniqid(mt_rand(), true)); }function
132
+select_value($X, $A, $l, $ag) {global$b, $ba; if (is_array($X)) {$K = ""; foreach ($X
133
+as$Zc=>$W)$K .= "<tr>" . ($X != array_values($X) ? "<th>" . h($Zc) : "") . "<td>" . select_value($W, $A, $l, $ag); return"<table cellspacing='0'>$K</table>"; }if (!$A)$A = $b->selectLink($X, $l); if ($A === null) {if (is_mail($X))$A = "mailto:$X"; if ($Oe = is_url($X))$A = (($Oe == "http" && $ba) || preg_match('~WebKit~i', $_SERVER["HTTP_USER_AGENT"]) ? $X : "https://www.adminer.org/redirect/?url=" . urlencode($X)); }$K = $b->editVal($X, $l); if ($K !== null) {if ($K === "")$K = "&nbsp;"; elseif (!is_utf8($K))$K = "\0"; elseif ($ag != "" && is_shortable($l))$K = shorten_utf8($K, max(0, +$ag)); else$K = h($K); }return$b->selectVal($K, $A, $l, $X); }function
134
+is_mail($Pb) {$va = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; $Db = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; $ye = "$va+(\\.$va+)*@($Db?\\.)+$Db"; return
135
+is_string($Pb) && preg_match("(^$ye(,\\s*$ye)*\$)i", $Pb); }function
136
+is_url($Gf) {$Db = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; return(preg_match("~^(https?)://($Db?\\.)+$Db(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $Gf, $C) ? strtolower($C[1]) : ""); }function
137
+is_shortable($l) {return
138
+preg_match('~char|text|lob|geometry|point|linestring|polygon|string~', $l["type"]); }function
139
+count_rows($Q, $Z, $Vc, $s) {global$y; $I = " FROM " . table($Q) . ($Z ? " WHERE " . implode(" AND ", $Z) : ""); return($Vc && ($y == "sql" || count($s) == 1) ? "SELECT COUNT(DISTINCT " . implode(", ", $s) . ")$I" : "SELECT COUNT(*)" . ($Vc ? " FROM (SELECT 1$I$zc) x" : $I)); }function
140
+slow_query($I) {global$b, $T; $i = $b->database(); $cg = $b->queryTimeout(); if (support("kill") && is_object($f = connect()) && ($i == "" || $f->select_db($i))) {$bd = $f->result("SELECT CONNECTION_ID()"); echo'<script type="text/javascript">
141 141
 var timeout = setTimeout(function () {
142
-	ajax(\'',js_escape(ME),'script=kill\', function () {
143
-	}, \'token=',$T,'&kill=',$bd,'\');
144
-}, ',1000*$cg,');
142
+	ajax(\'',js_escape(ME), 'script=kill\', function () {
143
+	}, \'token=',$T, '&kill=', $bd, '\');
144
+}, ',1000 * $cg, ');
145 145
 </script>
146
-';}else$f=null;ob_flush();flush();$K=@get_key_vals($I,$f,$cg);if($f){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return
147
-array_keys($K);}function
148
-get_token(){$Se=rand(1,1e6);return($Se^$_SESSION["token"]).":$Se";}function
149
-verify_token(){list($T,$Se)=explode(":",$_POST["token"]);return($Se^$_SESSION["token"])==$T;}function
150
-lzw_decompress($Da){$_b=256;$Ea=8;$Ta=array();$df=0;$ef=0;for($t=0;$t<strlen($Da);$t++){$df=($df<<8)+ord($Da[$t]);$ef+=8;if($ef>=$Ea){$ef-=$Ea;$Ta[]=$df>>$ef;$df&=(1<<$ef)-1;$_b++;if($_b>>$Ea)$Ea++;}}$zb=range("\0","\xFF");$K="";foreach($Ta
151
-as$t=>$Sa){$Ob=$zb[$Sa];if(!isset($Ob))$Ob=$Qg.$Qg[0];$K.=$Ob;if($t)$zb[]=$Qg.$Ob[0];$Qg=$Ob;}return$K;}function
152
-on_help($Za,$xf=0){return" onmouseover='helpMouseover(this, event, ".h($Za).", $xf);' onmouseout='helpMouseout(this, event);'";}function
153
-edit_form($a,$m,$L,$Ag){global$b,$y,$T,$k;$Pf=$b->tableName(table_status1($a,true));page_header(($Ag?'Edit':'Insert'),$k,array("select"=>array($a,$Pf)),$Pf);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form">
154
-';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m
155
-as$F=>$l){echo"<tr><th>".$b->fieldName($l);$vb=$_GET["set"][bracket_escape($F)];if($vb===null){$vb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$vb,$af))$vb=$af[1];}$Y=($L!==null?($L[$F]!=""&&$y=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$F])?array_sum($L[$F]):+$L[$F]):$L[$F]):(!$Ag&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$vb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$l);$q=($_POST["save"]?(string)$_POST["function"][$F]:($Ag&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$q="now";}input($l,$Y,$q);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($Ag?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($Ag?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
146
+';} else$f = null; ob_flush(); flush(); $K = @get_key_vals($I, $f, $cg); if ($f) {echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n"; ob_flush(); flush(); }return
147
+array_keys($K); }function
148
+get_token() {$Se = rand(1, 1e6); return($Se ^ $_SESSION["token"]) . ":$Se"; }function
149
+verify_token() {list($T, $Se) = explode(":", $_POST["token"]); return($Se ^ $_SESSION["token"]) == $T; }function
150
+lzw_decompress($Da) {$_b = 256; $Ea = 8; $Ta = array(); $df = 0; $ef = 0; for ($t = 0; $t < strlen($Da); $t++) {$df = ($df << 8) + ord($Da[$t]); $ef += 8; if ($ef >= $Ea) {$ef -= $Ea; $Ta[] = $df >> $ef; $df &= (1 << $ef) - 1; $_b++; if ($_b >> $Ea)$Ea++; }}$zb = range("\0", "\xFF"); $K = ""; foreach ($Ta
151
+as$t=>$Sa) {$Ob = $zb[$Sa]; if (!isset($Ob))$Ob = $Qg . $Qg[0]; $K .= $Ob; if ($t)$zb[] = $Qg . $Ob[0]; $Qg = $Ob; }return$K; }function
152
+on_help($Za, $xf = 0) {return" onmouseover='helpMouseover(this, event, " . h($Za) . ", $xf);' onmouseout='helpMouseout(this, event);'"; }function
153
+edit_form($a, $m, $L, $Ag) {global$b, $y, $T, $k; $Pf = $b->tableName(table_status1($a, true)); page_header(($Ag ? 'Edit' : 'Insert'), $k, array("select"=>array($a, $Pf)), $Pf); if ($L === false)echo"<p class='error'>" . 'No rows.' . "\n"; echo'<form action="" method="post" enctype="multipart/form-data" id="form">
154
+';if (!$m)echo"<p class='error'>" . 'You have no privileges to update this table.' . "\n"; else {echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n"; foreach ($m
155
+as$F=>$l) {echo"<tr><th>" . $b->fieldName($l); $vb = $_GET["set"][bracket_escape($F)]; if ($vb === null) {$vb = $l["default"]; if ($l["type"] == "bit" && preg_match("~^b'([01]*)'\$~", $vb, $af))$vb = $af[1]; }$Y = ($L !== null ? ($L[$F] != "" && $y == "sql" && preg_match("~enum|set~", $l["type"]) ? (is_array($L[$F]) ? array_sum($L[$F]) : +$L[$F]) : $L[$F]) : (!$Ag && $l["auto_increment"] ? "" : (isset($_GET["select"]) ? false : $vb))); if (!$_POST["save"] && is_string($Y))$Y = $b->editVal($Y, $l); $q = ($_POST["save"] ? (string) $_POST["function"][$F] : ($Ag && $l["on_update"] == "CURRENT_TIMESTAMP" ? "now" : ($Y === false ? null : ($Y !== null ? '' : 'NULL')))); if (preg_match("~time~", $l["type"]) && $Y == "CURRENT_TIMESTAMP") {$Y = ""; $q = "now"; }input($l, $Y, $q); echo"\n"; }if (!support("table"))echo"<tr>" . "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>" . "<td class='function'>" . html_select("field_funs[]", $b->editFunctions(array("null"=>isset($_GET["select"])))) . "<td><input name='field_vals[]'>" . "\n"; echo"</table>\n"; }echo"<p>\n"; if ($m) {echo"<input type='submit' value='" . 'Save' . "'>\n"; if (!isset($_GET["select"]))echo"<input type='submit' name='insert' value='" . ($Ag ? 'Save and continue edit' . "' onclick='return !ajaxForm(this.form, \"" . 'Saving' . '...", this)' : 'Save and insert next') . "' title='Ctrl+Shift+Enter'>\n"; }echo($Ag ? "<input type='submit' name='delete' value='" . 'Delete' . "'" . confirm() . ">\n" : ($_POST || !$m ? "" : "<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n")); if (isset($_GET["select"]))hidden_fields(array("check"=>(array) $_POST["check"], "clone"=>$_POST["clone"], "all"=>$_POST["all"])); echo'<input type="hidden" name="referer" value="', h(isset($_POST["referer"]) ? $_POST["referer"] : $_SERVER["HTTP_REFERER"]), '">
156 156
 <input type="hidden" name="save" value="1">
157
-<input type="hidden" name="token" value="',$T,'">
157
+<input type="hidden" name="token" value="',$T, '">
158 158
 </form>
159
-';}global$b,$e,$Eb,$Lb,$Vb,$k,$xc,$_c,$ba,$Oc,$y,$ca,$ed,$Vd,$ze,$Hf,$Dc,$T,$og,$tg,$_g,$ga;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$ba=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$pe=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$pe[]=true;call_user_func_array('session_set_cookie_params',$pe);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$oc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function
160
-get_lang(){return'en';}function
161
-lang($ng,$Md=null){if(is_array($ng)){$Be=($Md==1?0:1);$ng=$ng[$Be];}$ng=str_replace("%d","%s",$ng);$Md=format_number($Md);return
162
-sprintf($ng,$Md);}if(extension_loaded('pdo')){class
159
+';}global$b, $e, $Eb, $Lb, $Vb, $k, $xc, $_c, $ba, $Oc, $y, $ca, $ed, $Vd, $ze, $Hf, $Dc, $T, $og, $tg, $_g, $ga; if (!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"]; if (!strpos($_SERVER["REQUEST_URI"], '?') && $_SERVER["QUERY_STRING"] != "")$_SERVER["REQUEST_URI"] .= "?$_SERVER[QUERY_STRING]"; $ba = $_SERVER["HTTPS"] && strcasecmp($_SERVER["HTTPS"], "off"); @ini_set("session.use_trans_sid", false); session_cache_limiter(""); if (!defined("SID")) {session_name("adminer_sid"); $pe = array(0, preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $ba); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$pe[] = true; call_user_func_array('session_set_cookie_params', $pe); session_start(); }remove_slashes(array(&$_GET, &$_POST, &$_COOKIE), $oc); if (get_magic_quotes_runtime())set_magic_quotes_runtime(false); @set_time_limit(0); @ini_set("zend.ze1_compatibility_mode", false); @ini_set("precision", 20); function
160
+get_lang() {return'en'; }function
161
+lang($ng, $Md = null) {if (is_array($ng)) {$Be = ($Md == 1 ? 0 : 1); $ng = $ng[$Be]; }$ng = str_replace("%d", "%s", $ng); $Md = format_number($Md); return
162
+sprintf($ng, $Md); }if (extension_loaded('pdo')) {class
163 163
 Min_PDO
164 164
 extends
165
-PDO{var$_result,$server_info,$affected_rows,$errno,$error;function
166
-__construct(){global$b;$Be=array_search("SQL",$b->operators);if($Be!==false)unset($b->operators[$Be]);}function
167
-dsn($Ib,$V,$we){try{parent::__construct($Ib,$V,$we);}catch(Exception$ac){auth_error($ac->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
168
-query($I,$ug=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return
169
-false;}$this->store_result($J);return$J;}function
170
-multi_query($I){return$this->_result=$this->query($I);}function
171
-store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return
172
-false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
173
-true;}function
174
-next_result(){if(!$this->_result)return
175
-false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
176
-result($I,$l=0){$J=$this->query($I);if(!$J)return
177
-false;$L=$J->fetch();return$L[$l];}}class
165
+PDO {var$_result, $server_info, $affected_rows, $errno, $error; function
166
+__construct() {global$b; $Be = array_search("SQL", $b->operators); if ($Be !== false)unset($b->operators[$Be]); }function
167
+dsn($Ib, $V, $we) {try {parent::__construct($Ib, $V, $we); } catch (Exception$ac) {auth_error($ac->getMessage()); }$this->setAttribute(13, array('Min_PDOStatement')); $this->server_info = $this->getAttribute(4); }function
168
+query($I, $ug = false) {$J = parent::query($I); $this->error = ""; if (!$J) {list(,$this->errno, $this->error) = $this->errorInfo(); return
169
+false; }$this->store_result($J); return$J; }function
170
+multi_query($I) {return$this->_result = $this->query($I); }function
171
+store_result($J = null) {if (!$J) {$J = $this->_result; if (!$J)return
172
+false; }if ($J->columnCount()) {$J->num_rows = $J->rowCount(); return$J; }$this->affected_rows = $J->rowCount(); return
173
+true; }function
174
+next_result() {if (!$this->_result)return
175
+false; $this->_result->_offset = 0; return@$this->_result->nextRowset(); }function
176
+result($I, $l = 0) {$J = $this->query($I); if (!$J)return
177
+false; $L = $J->fetch(); return$L[$l]; }}class
178 178
 Min_PDOStatement
179 179
 extends
180
-PDOStatement{var$_offset=0,$num_rows;function
181
-fetch_assoc(){return$this->fetch(2);}function
182
-fetch_row(){return$this->fetch(3);}function
183
-fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$Eb=array();class
184
-Min_SQL{var$_conn;function
185
-__construct($e){$this->_conn=$e;}function
186
-select($Q,$N,$Z,$s,$de=array(),$_=1,$G=0,$Ie=false){global$b,$y;$Vc=(count($s)<count($N));$I=$b->selectQueryBuild($N,$Z,$s,$de,$_,$G);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):""),($_!=""?+$_:null),($G?$_*$G:0),"\n");$Cf=microtime(true);$K=$this->_conn->query($I);if($Ie)echo$b->selectQuery($I,format_time($Cf));return$K;}function
187
-delete($Q,$Qe,$_=0){$I="FROM ".table($Q);return
188
-queries("DELETE".($_?limit1($I,$Qe):" $I$Qe"));}function
189
-update($Q,$P,$Qe,$_=0,$sf="\n"){$Hg=array();foreach($P
190
-as$z=>$X)$Hg[]="$z = $X";$I=table($Q)." SET$sf".implode(",$sf",$Hg);return
191
-queries("UPDATE".($_?limit1($I,$Qe):" $I$Qe"));}function
192
-insert($Q,$P){return
193
-queries("INSERT INTO ".table($Q).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
194
-insertUpdate($Q,$M,$He){return
195
-false;}function
196
-begin(){return
197
-queries("BEGIN");}function
198
-commit(){return
199
-queries("COMMIT");}function
200
-rollback(){return
201
-queries("ROLLBACK");}}$Eb=array("server"=>"MySQL")+$Eb;if(!defined("DRIVER")){$Ee=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class
180
+PDOStatement {var$_offset = 0, $num_rows; function
181
+fetch_assoc() {return$this->fetch(2); }function
182
+fetch_row() {return$this->fetch(3); }function
183
+fetch_field() {$L = (object) $this->getColumnMeta($this->_offset++); $L->orgtable = $L->table; $L->orgname = $L->name; $L->charsetnr = (in_array("blob", (array) $L->flags) ? 63 : 0); return$L; }}}$Eb = array(); class
184
+Min_SQL {var$_conn; function
185
+__construct($e) {$this->_conn = $e; }function
186
+select($Q, $N, $Z, $s, $de = array(), $_ = 1, $G = 0, $Ie = false) {global$b, $y; $Vc = (count($s) < count($N)); $I = $b->selectQueryBuild($N, $Z, $s, $de, $_, $G); if (!$I)$I = "SELECT" . limit(($_GET["page"] != "last" && +$_ && $s && $Vc && $y == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $N) . "\nFROM " . table($Q), ($Z ? "\nWHERE " . implode(" AND ", $Z) : "") . ($s && $Vc ? "\nGROUP BY " . implode(", ", $s) : "") . ($de ? "\nORDER BY " . implode(", ", $de) : ""), ($_ != "" ?+$_ : null), ($G ? $_ * $G : 0), "\n"); $Cf = microtime(true); $K = $this->_conn->query($I); if ($Ie)echo$b->selectQuery($I, format_time($Cf)); return$K; }function
187
+delete($Q, $Qe, $_ = 0) {$I = "FROM " . table($Q); return
188
+queries("DELETE" . ($_ ? limit1($I, $Qe) : " $I$Qe")); }function
189
+update($Q, $P, $Qe, $_ = 0, $sf = "\n") {$Hg = array(); foreach ($P
190
+as$z=>$X)$Hg[] = "$z = $X"; $I = table($Q) . " SET$sf" . implode(",$sf", $Hg); return
191
+queries("UPDATE" . ($_ ? limit1($I, $Qe) : " $I$Qe")); }function
192
+insert($Q, $P) {return
193
+queries("INSERT INTO " . table($Q) . ($P ? " (" . implode(", ", array_keys($P)) . ")\nVALUES (" . implode(", ", $P) . ")" : " DEFAULT VALUES")); }function
194
+insertUpdate($Q, $M, $He) {return
195
+false; }function
196
+begin() {return
197
+queries("BEGIN"); }function
198
+commit() {return
199
+queries("COMMIT"); }function
200
+rollback() {return
201
+queries("ROLLBACK"); }}$Eb = array("server"=>"MySQL") + $Eb; if (!defined("DRIVER")) {$Ee = array("MySQLi", "MySQL", "PDO_MySQL"); define("DRIVER", "server"); if (extension_loaded("mysqli")) {class
202 202
 Min_DB
203 203
 extends
204
-MySQLi{var$extension="MySQLi";function
205
-__construct(){parent::init();}function
206
-connect($O="",$V="",$we="",$qb=null,$Ae=null,$zf=null){mysqli_report(MYSQLI_REPORT_OFF);list($Gc,$Ae)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$Gc:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$we!=""?$we:ini_get("mysqli.default_pw")),$qb,(is_numeric($Ae)?$Ae:ini_get("mysqli.default_port")),(!is_numeric($Ae)?$Ae:$zf));return$K;}function
207
-set_charset($La){if(parent::set_charset($La))return
208
-true;parent::set_charset('utf8');return$this->query("SET NAMES $La");}function
209
-result($I,$l=0){$J=$this->query($I);if(!$J)return
210
-false;$L=$J->fetch_array();return$L[$l];}function
211
-quote($Gf){return"'".$this->escape_string($Gf)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
212
-Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
213
-connect($O,$V,$we){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$we"!=""?$we:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
214
-set_charset($La){if(function_exists('mysql_set_charset')){if(mysql_set_charset($La,$this->_link))return
215
-true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $La");}function
216
-quote($Gf){return"'".mysql_real_escape_string($Gf,$this->_link)."'";}function
217
-select_db($qb){return
218
-mysql_select_db($qb,$this->_link);}function
219
-query($I,$ug=false){$J=@($ug?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
220
-false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
221
-true;}return
204
+MySQLi {var$extension = "MySQLi"; function
205
+__construct() {parent::init(); }function
206
+connect($O = "", $V = "", $we = "", $qb = null, $Ae = null, $zf = null) {mysqli_report(MYSQLI_REPORT_OFF); list($Gc, $Ae) = explode(":", $O, 2); $K = @$this->real_connect(($O != "" ? $Gc : ini_get("mysqli.default_host")), ($O . $V != "" ? $V : ini_get("mysqli.default_user")), ($O . $V . $we != "" ? $we : ini_get("mysqli.default_pw")), $qb, (is_numeric($Ae) ? $Ae : ini_get("mysqli.default_port")), (!is_numeric($Ae) ? $Ae : $zf)); return$K; }function
207
+set_charset($La) {if (parent::set_charset($La))return
208
+true; parent::set_charset('utf8'); return$this->query("SET NAMES $La"); }function
209
+result($I, $l = 0) {$J = $this->query($I); if (!$J)return
210
+false; $L = $J->fetch_array(); return$L[$l]; }function
211
+quote($Gf) {return"'" . $this->escape_string($Gf) . "'"; }}}elseif (extension_loaded("mysql") && !(ini_get("sql.safe_mode") && extension_loaded("pdo_mysql"))) {class
212
+Min_DB {var$extension = "MySQL", $server_info, $affected_rows, $errno, $error, $_link, $_result; function
213
+connect($O, $V, $we) {$this->_link = @mysql_connect(($O != "" ? $O : ini_get("mysql.default_host")), ("$O$V" != "" ? $V : ini_get("mysql.default_user")), ("$O$V$we" != "" ? $we : ini_get("mysql.default_password")), true, 131072); if ($this->_link)$this->server_info = mysql_get_server_info($this->_link); else$this->error = mysql_error(); return(bool) $this->_link; }function
214
+set_charset($La) {if (function_exists('mysql_set_charset')) {if (mysql_set_charset($La, $this->_link))return
215
+true; mysql_set_charset('utf8', $this->_link); }return$this->query("SET NAMES $La"); }function
216
+quote($Gf) {return"'" . mysql_real_escape_string($Gf, $this->_link) . "'"; }function
217
+select_db($qb) {return
218
+mysql_select_db($qb, $this->_link); }function
219
+query($I, $ug = false) {$J = @($ug ? mysql_unbuffered_query($I, $this->_link) : mysql_query($I, $this->_link)); $this->error = ""; if (!$J) {$this->errno = mysql_errno($this->_link); $this->error = mysql_error($this->_link); return
220
+false; }if ($J === true) {$this->affected_rows = mysql_affected_rows($this->_link); $this->info = mysql_info($this->_link); return
221
+true; }return
222 222
 new
223
-Min_Result($J);}function
224
-multi_query($I){return$this->_result=$this->query($I);}function
225
-store_result(){return$this->_result;}function
226
-next_result(){return
227
-false;}function
228
-result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return
229
-false;return
230
-mysql_result($J->_result,0,$l);}}class
231
-Min_Result{var$num_rows,$_result,$_offset=0;function
232
-__construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function
233
-fetch_assoc(){return
234
-mysql_fetch_assoc($this->_result);}function
235
-fetch_row(){return
236
-mysql_fetch_row($this->_result);}function
237
-fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function
238
-__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
223
+Min_Result($J); }function
224
+multi_query($I) {return$this->_result = $this->query($I); }function
225
+store_result() {return$this->_result; }function
226
+next_result() {return
227
+false; }function
228
+result($I, $l = 0) {$J = $this->query($I); if (!$J || !$J->num_rows)return
229
+false; return
230
+mysql_result($J->_result, 0, $l); }}class
231
+Min_Result {var$num_rows, $_result, $_offset = 0; function
232
+__construct($J) {$this->_result = $J; $this->num_rows = mysql_num_rows($J); }function
233
+fetch_assoc() {return
234
+mysql_fetch_assoc($this->_result); }function
235
+fetch_row() {return
236
+mysql_fetch_row($this->_result); }function
237
+fetch_field() {$K = mysql_fetch_field($this->_result, $this->_offset++); $K->orgtable = $K->table; $K->orgname = $K->name; $K->charsetnr = ($K->blob ? 63 : 0); return$K; }function
238
+__destruct() {mysql_free_result($this->_result); }}}elseif (extension_loaded("pdo_mysql")) {class
239 239
 Min_DB
240 240
 extends
241
-Min_PDO{var$extension="PDO_MySQL";function
242
-connect($O,$V,$we){$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$O)),$V,$we);return
243
-true;}function
244
-set_charset($La){$this->query("SET NAMES $La");}function
245
-select_db($qb){return$this->query("USE ".idf_escape($qb));}function
246
-query($I,$ug=false){$this->setAttribute(1000,!$ug);return
247
-parent::query($I,$ug);}}}class
241
+Min_PDO {var$extension = "PDO_MySQL"; function
242
+connect($O, $V, $we) {$this->dsn("mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $O)), $V, $we); return
243
+true; }function
244
+set_charset($La) {$this->query("SET NAMES $La"); }function
245
+select_db($qb) {return$this->query("USE " . idf_escape($qb)); }function
246
+query($I, $ug = false) {$this->setAttribute(1000, !$ug); return
247
+parent::query($I, $ug); }}}class
248 248
 Min_Driver
249 249
 extends
250
-Min_SQL{function
251
-insert($Q,$P){return($P?parent::insert($Q,$P):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
252
-insertUpdate($Q,$M,$He){$d=array_keys(reset($M));$Fe="INSERT INTO ".table($Q)." (".implode(", ",$d).") VALUES\n";$Hg=array();foreach($d
253
-as$z)$Hg[$z]="$z = VALUES($z)";$Kf="\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg);$Hg=array();$ld=0;foreach($M
254
-as$P){$Y="(".implode(", ",$P).")";if($Hg&&(strlen($Fe)+$ld+strlen($Y)+strlen($Kf)>1e6)){if(!queries($Fe.implode(",\n",$Hg).$Kf))return
255
-false;$Hg=array();$ld=0;}$Hg[]=$Y;$ld+=strlen($Y)+2;}return
256
-queries($Fe.implode(",\n",$Hg).$Kf);}}function
257
-idf_escape($Jc){return"`".str_replace("`","``",$Jc)."`";}function
258
-table($Jc){return
259
-idf_escape($Jc);}function
260
-connect(){global$b;$e=new
261
-Min_DB;$mb=$b->credentials();if($e->connect($mb[0],$mb[1],$mb[2])){$e->set_charset(charset($e));$e->query("SET sql_quote_show_create = 1, autocommit = 1");return$e;}$K=$e->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($lf=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$lf;return$K;}function
262
-get_databases($qc){global$e;$K=get_session("dbs");if($K===null){$I=($e->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($qc?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function
263
-limit($I,$Z,$_,$Od=0,$sf=" "){return" $I$Z".($_!==null?$sf."LIMIT $_".($Od?" OFFSET $Od":""):"");}function
264
-limit1($I,$Z){return
265
-limit($I,$Z,1);}function
266
-db_collation($i,$Xa){global$e;$K=null;$g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1);if(preg_match('~ COLLATE ([^ ]+)~',$g,$C))$K=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$g,$C))$K=$Xa[$C[1]][-1];return$K;}function
267
-engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function
268
-logged_user(){global$e;return$e->result("SELECT USER()");}function
269
-tables_list(){global$e;return
270
-get_key_vals($e->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
271
-count_tables($h){$K=array();foreach($h
272
-as$i)$K[$i]=count(get_vals("SHOW TABLES IN ".idf_escape($i)));return$K;}function
273
-table_status($F="",$jc=false){global$e;$K=array();foreach(get_rows($jc&&$e->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($F!=""?"AND TABLE_NAME = ".q($F):"ORDER BY Name"):"SHOW TABLE STATUS".($F!=""?" LIKE ".q(addcslashes($F,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($F!="")return$L;$K[$L["Name"]]=$L;}return$K;}function
274
-is_view($R){return$R["Engine"]===null;}function
275
-fk_support($R){global$e;return
276
-preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&version_compare($e->server_info,'5.6')>=0);}function
277
-fields($Q){$K=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($Q))as$L){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$L["Type"],$C);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$C[1],"length"=>$C[2],"unsigned"=>ltrim($C[3].$C[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$C[1])?$L["Default"]:null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$C)?$C[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),);}return$K;}function
278
-indexes($Q,$f=null){$K=array();foreach(get_rows("SHOW INDEX FROM ".table($Q),$f)as$L){$K[$L["Key_name"]]["type"]=($L["Key_name"]=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?"INDEX":"UNIQUE")));$K[$L["Key_name"]]["columns"][]=$L["Column_name"];$K[$L["Key_name"]]["lengths"][]=$L["Sub_part"];$K[$L["Key_name"]]["descs"][]=null;}return$K;}function
279
-foreign_keys($Q){global$e,$Vd;static$ye='`(?:[^`]|``)+`';$K=array();$kb=$e->result("SHOW CREATE TABLE ".table($Q),1);if($kb){preg_match_all("~CONSTRAINT ($ye) FOREIGN KEY ?\\(((?:$ye,? ?)+)\\) REFERENCES ($ye)(?:\\.($ye))? \\(((?:$ye,? ?)+)\\)(?: ON DELETE ($Vd))?(?: ON UPDATE ($Vd))?~",$kb,$rd,PREG_SET_ORDER);foreach($rd
280
-as$C){preg_match_all("~$ye~",$C[2],$_f);preg_match_all("~$ye~",$C[5],$Vf);$K[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('idf_unescape',$_f[0]),"target"=>array_map('idf_unescape',$Vf[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$K;}function
281
-view($F){global$e;return
282
-array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$e->result("SHOW CREATE VIEW ".table($F),1)));}function
283
-collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K
284
-as$z=>$X)asort($K[$z]);return$K;}function
285
-information_schema($i){global$e;return($e->server_info>=5&&$i=="information_schema")||($e->server_info>=5.5&&$i=="performance_schema");}function
286
-error(){global$e;return
287
-h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$e->error));}function
288
-create_database($i,$Wa){return
289
-queries("CREATE DATABASE ".idf_escape($i).($Wa?" COLLATE ".q($Wa):""));}function
290
-drop_databases($h){$K=apply_queries("DROP DATABASE",$h,'idf_escape');restart_session();set_session("dbs",null);return$K;}function
291
-rename_database($F,$Wa){$K=false;if(create_database($F,$Wa)){$bf=array();foreach(tables_list()as$Q=>$U)$bf[]=table($Q)." TO ".idf_escape($F).".".table($Q);$K=(!$bf||queries("RENAME TABLE ".implode(", ",$bf)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function
292
-auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$za="";break;}if($v["type"]=="PRIMARY")$za=" UNIQUE";}}return" AUTO_INCREMENT$za";}function
293
-alter_table($Q,$F,$m,$rc,$bb,$Tb,$Wa,$ya,$te){$sa=array();foreach($m
294
-as$l)$sa[]=($l[1]?($Q!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($Q!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$sa=array_merge($sa,$rc);$Df=($bb!==null?" COMMENT=".q($bb):"").($Tb?" ENGINE=".q($Tb):"").($Wa?" COLLATE ".q($Wa):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($Q=="")return
295
-queries("CREATE TABLE ".table($F)." (\n".implode(",\n",$sa)."\n)$Df$te");if($Q!=$F)$sa[]="RENAME TO ".table($F);if($Df)$sa[]=ltrim($Df);return($sa||$te?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$sa).$te):true);}function
296
-alter_indexes($Q,$sa){foreach($sa
297
-as$z=>$X)$sa[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
298
-queries("ALTER TABLE ".table($Q).implode(",",$sa));}function
299
-truncate_tables($S){return
300
-apply_queries("TRUNCATE TABLE",$S);}function
301
-drop_views($Lg){return
302
-queries("DROP VIEW ".implode(", ",array_map('table',$Lg)));}function
303
-drop_tables($S){return
304
-queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
305
-move_tables($S,$Lg,$Vf){$bf=array();foreach(array_merge($S,$Lg)as$Q)$bf[]=table($Q)." TO ".idf_escape($Vf).".".table($Q);return
306
-queries("RENAME TABLE ".implode(", ",$bf));}function
307
-copy_tables($S,$Lg,$Vf){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S
308
-as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));if(!queries("\nDROP TABLE IF EXISTS $F")||!queries("CREATE TABLE $F LIKE ".table($Q))||!queries("INSERT INTO $F SELECT * FROM ".table($Q)))return
309
-false;}foreach($Lg
310
-as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));$Kg=view($Q);if(!queries("DROP VIEW IF EXISTS $F")||!queries("CREATE VIEW $F AS $Kg[select]"))return
311
-false;}return
312
-true;}function
313
-trigger($F){if($F=="")return
314
-array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($F));return
315
-reset($M);}function
316
-triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function
317
-trigger_options(){return
318
-array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
319
-routine($F,$U){global$e,$Vb,$Oc,$tg;$qa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$sg="((".implode("|",array_merge(array_keys($tg),$qa)).")\\b(?:\\s*\\(((?:[^'\")]|$Vb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ye="\\s*(".($U=="FUNCTION"?"":$Oc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$sg";$g=$e->result("SHOW CREATE $U ".idf_escape($F),2);preg_match("~\\(((?:$ye\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$sg\\s+":"")."(.*)~is",$g,$C);$m=array();preg_match_all("~$ye\\s*,?~is",$C[1],$rd,PREG_SET_ORDER);foreach($rd
320
-as$oe){$F=str_replace("``","`",$oe[2]).$oe[3];$m[]=array("field"=>$F,"type"=>strtolower($oe[5]),"length"=>preg_replace_callback("~$Vb~s",'normalize_enum',$oe[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$oe[8] $oe[7]"))),"null"=>1,"full_type"=>$oe[4],"inout"=>strtoupper($oe[1]),"collation"=>strtolower($oe[9]),);}if($U!="FUNCTION")return
321
-array("fields"=>$m,"definition"=>$C[11]);return
322
-array("fields"=>$m,"returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",);}function
323
-routines(){return
324
-get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
325
-routine_languages(){return
326
-array();}function
327
-last_id(){global$e;return$e->result("SELECT LAST_INSERT_ID()");}function
328
-explain($e,$I){return$e->query("EXPLAIN ".($e->server_info>=5.1?"PARTITIONS ":"").$I);}function
329
-found_rows($R,$Z){return($Z||$R["Engine"]!="InnoDB"?null:$R["Rows"]);}function
330
-types(){return
331
-array();}function
332
-schemas(){return
333
-array();}function
334
-get_schema(){return"";}function
335
-set_schema($nf){return
336
-true;}function
337
-create_sql($Q,$ya){global$e;$K=$e->result("SHOW CREATE TABLE ".table($Q),1);if(!$ya)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function
338
-truncate_sql($Q){return"TRUNCATE ".table($Q);}function
339
-use_sql($qb){return"USE ".idf_escape($qb);}function
340
-trigger_sql($Q,$If){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L)$K.="\n".($If=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function
341
-show_variables(){return
342
-get_key_vals("SHOW VARIABLES");}function
343
-process_list(){return
344
-get_rows("SHOW FULL PROCESSLIST");}function
345
-show_status(){return
346
-get_key_vals("SHOW STATUS");}function
347
-convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function
348
-unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function
349
-support($kc){global$e;return!preg_match("~scheme|sequence|type|view_trigger".($e->server_info<5.1?"|event|partitioning".($e->server_info<5?"|routine|trigger|view":""):"")."~",$kc);}function
350
-kill_process($X){return
351
-queries("KILL ".number($X));}function
352
-max_connections(){global$e;return$e->result("SELECT @@max_connections");}$y="sql";$tg=array();$Hf=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$z=>$X){$tg+=$X;$Hf[$z]=array_keys($X);}$_g=array("unsigned","zerofill","unsigned zerofill");$Zd=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$xc=array("char_length","date","from_unixtime","lower","round","sec_to_time","time_to_sec","upper");$_c=array("avg","count","count distinct","group_concat","max","min","sum");$Lb=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array("(^|[^o])int|float|double|decimal"=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\\1',$_SERVER["REQUEST_URI"]).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$ga="4.2.5";class
353
-Adminer{var$operators;function
354
-name(){return"<a href='https://www.adminer.org/' target='_blank' id='h1'>Adminer</a>";}function
355
-credentials(){return
356
-array(SERVER,$_GET["username"],get_password());}function
357
-permanentLogin($g=false){return
358
-password_file($g);}function
359
-bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
360
-database(){return
361
-DB;}function
362
-databases($qc=true){return
363
-get_databases($qc);}function
364
-schemas(){return
365
-schemas();}function
366
-queryTimeout(){return
367
-5;}function
368
-headers(){return
369
-true;}function
370
-head(){return
371
-true;}function
372
-loginForm(){global$Eb;echo'<table cellspacing="0">
373
-<tr><th>System<td>',html_select("auth[driver]",$Eb,DRIVER),'<tr><th>Server<td><input name="auth[server]" value="',h(SERVER),'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">
374
-<tr><th>Username<td><input name="auth[username]" id="username" value="',h($_GET["username"]),'" autocapitalize="off">
250
+Min_SQL {function
251
+insert($Q, $P) {return($P ? parent::insert($Q, $P) : queries("INSERT INTO " . table($Q) . " ()\nVALUES ()")); }function
252
+insertUpdate($Q, $M, $He) {$d = array_keys(reset($M)); $Fe = "INSERT INTO " . table($Q) . " (" . implode(", ", $d) . ") VALUES\n"; $Hg = array(); foreach ($d
253
+as$z)$Hg[$z] = "$z = VALUES($z)"; $Kf = "\nON DUPLICATE KEY UPDATE " . implode(", ", $Hg); $Hg = array(); $ld = 0; foreach ($M
254
+as$P) {$Y = "(" . implode(", ", $P) . ")"; if ($Hg && (strlen($Fe) + $ld + strlen($Y) + strlen($Kf) > 1e6)) {if (!queries($Fe . implode(",\n", $Hg) . $Kf))return
255
+false; $Hg = array(); $ld = 0; }$Hg[] = $Y; $ld += strlen($Y) + 2; }return
256
+queries($Fe . implode(",\n", $Hg) . $Kf); }}function
257
+idf_escape($Jc) {return"`" . str_replace("`", "``", $Jc) . "`"; }function
258
+table($Jc) {return
259
+idf_escape($Jc); }function
260
+connect() {global$b; $e = new
261
+Min_DB; $mb = $b->credentials(); if ($e->connect($mb[0], $mb[1], $mb[2])) {$e->set_charset(charset($e)); $e->query("SET sql_quote_show_create = 1, autocommit = 1"); return$e; }$K = $e->error; if (function_exists('iconv') && !is_utf8($K) && strlen($lf = iconv("windows-1250", "utf-8", $K)) > strlen($K))$K = $lf; return$K; }function
262
+get_databases($qc) {global$e; $K = get_session("dbs"); if ($K === null) {$I = ($e->server_info >= 5 ? "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA" : "SHOW DATABASES"); $K = ($qc ? slow_query($I) : get_vals($I)); restart_session(); set_session("dbs", $K); stop_session(); }return$K; }function
263
+limit($I, $Z, $_, $Od = 0, $sf = " ") {return" $I$Z" . ($_ !== null ? $sf . "LIMIT $_" . ($Od ? " OFFSET $Od" : "") : ""); }function
264
+limit1($I, $Z) {return
265
+limit($I, $Z, 1); }function
266
+db_collation($i, $Xa) {global$e; $K = null; $g = $e->result("SHOW CREATE DATABASE " . idf_escape($i), 1); if (preg_match('~ COLLATE ([^ ]+)~', $g, $C))$K = $C[1]; elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $g, $C))$K = $Xa[$C[1]][-1]; return$K; }function
267
+engines() {$K = array(); foreach (get_rows("SHOW ENGINES")as$L) {if (preg_match("~YES|DEFAULT~", $L["Support"]))$K[] = $L["Engine"]; }return$K; }function
268
+logged_user() {global$e; return$e->result("SELECT USER()"); }function
269
+tables_list() {global$e; return
270
+get_key_vals($e->server_info >= 5 ? "SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME" : "SHOW TABLES"); }function
271
+count_tables($h) {$K = array(); foreach ($h
272
+as$i)$K[$i] = count(get_vals("SHOW TABLES IN " . idf_escape($i))); return$K; }function
273
+table_status($F = "", $jc = false) {global$e; $K = array(); foreach (get_rows($jc && $e->server_info >= 5 ? "SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($F != "" ? "AND TABLE_NAME = " . q($F) : "ORDER BY Name") : "SHOW TABLE STATUS" . ($F != "" ? " LIKE " . q(addcslashes($F, "%_\\")) : ""))as$L) {if ($L["Engine"] == "InnoDB")$L["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $L["Comment"]); if (!isset($L["Engine"]))$L["Comment"] = ""; if ($F != "")return$L; $K[$L["Name"]] = $L; }return$K; }function
274
+is_view($R) {return$R["Engine"] === null; }function
275
+fk_support($R) {global$e; return
276
+preg_match('~InnoDB|IBMDB2I~i', $R["Engine"]) || (preg_match('~NDB~i', $R["Engine"]) && version_compare($e->server_info, '5.6') >= 0); }function
277
+fields($Q) {$K = array(); foreach (get_rows("SHOW FULL COLUMNS FROM " . table($Q))as$L) {preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $L["Type"], $C); $K[$L["Field"]] = array("field"=>$L["Field"], "full_type"=>$L["Type"], "type"=>$C[1], "length"=>$C[2], "unsigned"=>ltrim($C[3] . $C[4]), "default"=>($L["Default"] != "" || preg_match("~char|set~", $C[1]) ? $L["Default"] : null), "null"=>($L["Null"] == "YES"), "auto_increment"=>($L["Extra"] == "auto_increment"), "on_update"=>(preg_match('~^on update (.+)~i', $L["Extra"], $C) ? $C[1] : ""), "collation"=>$L["Collation"], "privileges"=>array_flip(preg_split('~, *~', $L["Privileges"])), "comment"=>$L["Comment"], "primary"=>($L["Key"] == "PRI"),); }return$K; }function
278
+indexes($Q, $f = null) {$K = array(); foreach (get_rows("SHOW INDEX FROM " . table($Q), $f)as$L) {$K[$L["Key_name"]]["type"] = ($L["Key_name"] == "PRIMARY" ? "PRIMARY" : ($L["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($L["Non_unique"] ? "INDEX" : "UNIQUE"))); $K[$L["Key_name"]]["columns"][] = $L["Column_name"]; $K[$L["Key_name"]]["lengths"][] = $L["Sub_part"]; $K[$L["Key_name"]]["descs"][] = null; }return$K; }function
279
+foreign_keys($Q) {global$e, $Vd; static$ye = '`(?:[^`]|``)+`'; $K = array(); $kb = $e->result("SHOW CREATE TABLE " . table($Q), 1); if ($kb) {preg_match_all("~CONSTRAINT ($ye) FOREIGN KEY ?\\(((?:$ye,? ?)+)\\) REFERENCES ($ye)(?:\\.($ye))? \\(((?:$ye,? ?)+)\\)(?: ON DELETE ($Vd))?(?: ON UPDATE ($Vd))?~", $kb, $rd, PREG_SET_ORDER); foreach ($rd
280
+as$C) {preg_match_all("~$ye~", $C[2], $_f); preg_match_all("~$ye~", $C[5], $Vf); $K[idf_unescape($C[1])] = array("db"=>idf_unescape($C[4] != "" ? $C[3] : $C[4]), "table"=>idf_unescape($C[4] != "" ? $C[4] : $C[3]), "source"=>array_map('idf_unescape', $_f[0]), "target"=>array_map('idf_unescape', $Vf[0]), "on_delete"=>($C[6] ? $C[6] : "RESTRICT"), "on_update"=>($C[7] ? $C[7] : "RESTRICT"),); }}return$K; }function
281
+view($F) {global$e; return
282
+array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $e->result("SHOW CREATE VIEW " . table($F), 1))); }function
283
+collations() {$K = array(); foreach (get_rows("SHOW COLLATION")as$L) {if ($L["Default"])$K[$L["Charset"]][-1] = $L["Collation"]; else$K[$L["Charset"]][] = $L["Collation"]; }ksort($K); foreach ($K
284
+as$z=>$X)asort($K[$z]); return$K; }function
285
+information_schema($i) {global$e; return($e->server_info >= 5 && $i == "information_schema") || ($e->server_info >= 5.5 && $i == "performance_schema"); }function
286
+error() {global$e; return
287
+h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $e->error)); }function
288
+create_database($i, $Wa) {return
289
+queries("CREATE DATABASE " . idf_escape($i) . ($Wa ? " COLLATE " . q($Wa) : "")); }function
290
+drop_databases($h) {$K = apply_queries("DROP DATABASE", $h, 'idf_escape'); restart_session(); set_session("dbs", null); return$K; }function
291
+rename_database($F, $Wa) {$K = false; if (create_database($F, $Wa)) {$bf = array(); foreach (tables_list()as$Q=>$U)$bf[] = table($Q) . " TO " . idf_escape($F) . "." . table($Q); $K = (!$bf || queries("RENAME TABLE " . implode(", ", $bf))); if ($K)queries("DROP DATABASE " . idf_escape(DB)); restart_session(); set_session("dbs", null); }return$K; }function
292
+auto_increment() {$za = " PRIMARY KEY"; if ($_GET["create"] != "" && $_POST["auto_increment_col"]) {foreach (indexes($_GET["create"])as$v) {if (in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"], $v["columns"], true)) {$za = ""; break; }if ($v["type"] == "PRIMARY")$za = " UNIQUE"; }}return" AUTO_INCREMENT$za"; }function
293
+alter_table($Q, $F, $m, $rc, $bb, $Tb, $Wa, $ya, $te) {$sa = array(); foreach ($m
294
+as$l)$sa[] = ($l[1] ? ($Q != "" ? ($l[0] != "" ? "CHANGE " . idf_escape($l[0]) : "ADD") : " ") . " " . implode($l[1]) . ($Q != "" ? $l[2] : "") : "DROP " . idf_escape($l[0])); $sa = array_merge($sa, $rc); $Df = ($bb !== null ? " COMMENT=" . q($bb) : "") . ($Tb ? " ENGINE=" . q($Tb) : "") . ($Wa ? " COLLATE " . q($Wa) : "") . ($ya != "" ? " AUTO_INCREMENT=$ya" : ""); if ($Q == "")return
295
+queries("CREATE TABLE " . table($F) . " (\n" . implode(",\n", $sa) . "\n)$Df$te"); if ($Q != $F)$sa[] = "RENAME TO " . table($F); if ($Df)$sa[] = ltrim($Df); return($sa || $te ? queries("ALTER TABLE " . table($Q) . "\n" . implode(",\n", $sa) . $te) : true); }function
296
+alter_indexes($Q, $sa) {foreach ($sa
297
+as$z=>$X)$sa[$z] = ($X[2] == "DROP" ? "\nDROP INDEX " . idf_escape($X[1]) : "\nADD $X[0] " . ($X[0] == "PRIMARY" ? "KEY " : "") . ($X[1] != "" ? idf_escape($X[1]) . " " : "") . "(" . implode(", ", $X[2]) . ")"); return
298
+queries("ALTER TABLE " . table($Q) . implode(",", $sa)); }function
299
+truncate_tables($S) {return
300
+apply_queries("TRUNCATE TABLE", $S); }function
301
+drop_views($Lg) {return
302
+queries("DROP VIEW " . implode(", ", array_map('table', $Lg))); }function
303
+drop_tables($S) {return
304
+queries("DROP TABLE " . implode(", ", array_map('table', $S))); }function
305
+move_tables($S, $Lg, $Vf) {$bf = array(); foreach (array_merge($S, $Lg)as$Q)$bf[] = table($Q) . " TO " . idf_escape($Vf) . "." . table($Q); return
306
+queries("RENAME TABLE " . implode(", ", $bf)); }function
307
+copy_tables($S, $Lg, $Vf) {queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'"); foreach ($S
308
+as$Q) {$F = ($Vf == DB ? table("copy_$Q") : idf_escape($Vf) . "." . table($Q)); if (!queries("\nDROP TABLE IF EXISTS $F") || !queries("CREATE TABLE $F LIKE " . table($Q)) || !queries("INSERT INTO $F SELECT * FROM " . table($Q)))return
309
+false; }foreach ($Lg
310
+as$Q) {$F = ($Vf == DB ? table("copy_$Q") : idf_escape($Vf) . "." . table($Q)); $Kg = view($Q); if (!queries("DROP VIEW IF EXISTS $F") || !queries("CREATE VIEW $F AS $Kg[select]"))return
311
+false; }return
312
+true; }function
313
+trigger($F) {if ($F == "")return
314
+array(); $M = get_rows("SHOW TRIGGERS WHERE `Trigger` = " . q($F)); return
315
+reset($M); }function
316
+triggers($Q) {$K = array(); foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($Q, "%_\\")))as$L)$K[$L["Trigger"]] = array($L["Timing"], $L["Event"]); return$K; }function
317
+trigger_options() {return
318
+array("Timing"=>array("BEFORE", "AFTER"), "Event"=>array("INSERT", "UPDATE", "DELETE"), "Type"=>array("FOR EACH ROW"),); }function
319
+routine($F, $U) {global$e, $Vb, $Oc, $tg; $qa = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar"); $sg = "((" . implode("|", array_merge(array_keys($tg), $qa)) . ")\\b(?:\\s*\\(((?:[^'\")]|$Vb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?"; $ye = "\\s*(" . ($U == "FUNCTION" ? "" : $Oc) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$sg"; $g = $e->result("SHOW CREATE $U " . idf_escape($F), 2); preg_match("~\\(((?:$ye\\s*,?)*)\\)\\s*" . ($U == "FUNCTION" ? "RETURNS\\s+$sg\\s+" : "") . "(.*)~is", $g, $C); $m = array(); preg_match_all("~$ye\\s*,?~is", $C[1], $rd, PREG_SET_ORDER); foreach ($rd
320
+as$oe) {$F = str_replace("``", "`", $oe[2]) . $oe[3]; $m[] = array("field"=>$F, "type"=>strtolower($oe[5]), "length"=>preg_replace_callback("~$Vb~s", 'normalize_enum', $oe[6]), "unsigned"=>strtolower(preg_replace('~\\s+~', ' ', trim("$oe[8] $oe[7]"))), "null"=>1, "full_type"=>$oe[4], "inout"=>strtoupper($oe[1]), "collation"=>strtolower($oe[9]),); }if ($U != "FUNCTION")return
321
+array("fields"=>$m, "definition"=>$C[11]); return
322
+array("fields"=>$m, "returns"=>array("type"=>$C[12], "length"=>$C[13], "unsigned"=>$C[15], "collation"=>$C[16]), "definition"=>$C[17], "language"=>"SQL",); }function
323
+routines() {return
324
+get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB)); }function
325
+routine_languages() {return
326
+array(); }function
327
+last_id() {global$e; return$e->result("SELECT LAST_INSERT_ID()"); }function
328
+explain($e, $I) {return$e->query("EXPLAIN " . ($e->server_info >= 5.1 ? "PARTITIONS " : "") . $I); }function
329
+found_rows($R, $Z) {return($Z || $R["Engine"] != "InnoDB" ? null : $R["Rows"]); }function
330
+types() {return
331
+array(); }function
332
+schemas() {return
333
+array(); }function
334
+get_schema() {return""; }function
335
+set_schema($nf) {return
336
+true; }function
337
+create_sql($Q, $ya) {global$e; $K = $e->result("SHOW CREATE TABLE " . table($Q), 1); if (!$ya)$K = preg_replace('~ AUTO_INCREMENT=\\d+~', '', $K); return$K; }function
338
+truncate_sql($Q) {return"TRUNCATE " . table($Q); }function
339
+use_sql($qb) {return"USE " . idf_escape($qb); }function
340
+trigger_sql($Q, $If) {$K = ""; foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($Q, "%_\\")), null, "-- ")as$L)$K .= "\n" . ($If == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($L["Trigger"]) . ";;\n" : "") . "CREATE TRIGGER " . idf_escape($L["Trigger"]) . " $L[Timing] $L[Event] ON " . table($L["Table"]) . " FOR EACH ROW\n$L[Statement];;\n"; return$K; }function
341
+show_variables() {return
342
+get_key_vals("SHOW VARIABLES"); }function
343
+process_list() {return
344
+get_rows("SHOW FULL PROCESSLIST"); }function
345
+show_status() {return
346
+get_key_vals("SHOW STATUS"); }function
347
+convert_field($l) {if (preg_match("~binary~", $l["type"]))return"HEX(" . idf_escape($l["field"]) . ")"; if ($l["type"] == "bit")return"BIN(" . idf_escape($l["field"]) . " + 0)"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))return"AsWKT(" . idf_escape($l["field"]) . ")"; }function
348
+unconvert_field($l, $K) {if (preg_match("~binary~", $l["type"]))$K = "UNHEX($K)"; if ($l["type"] == "bit")$K = "CONV($K, 2, 10) + 0"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))$K = "GeomFromText($K)"; return$K; }function
349
+support($kc) {global$e; return!preg_match("~scheme|sequence|type|view_trigger" . ($e->server_info < 5.1 ? "|event|partitioning" . ($e->server_info < 5 ? "|routine|trigger|view" : "") : "") . "~", $kc); }function
350
+kill_process($X) {return
351
+queries("KILL " . number($X)); }function
352
+max_connections() {global$e; return$e->result("SELECT @@max_connections"); }$y = "sql"; $tg = array(); $Hf = array(); foreach (array('Numbers'=>array("tinyint"=>3, "smallint"=>5, "mediumint"=>8, "int"=>10, "bigint"=>20, "decimal"=>66, "float"=>12, "double"=>21), 'Date and time'=>array("date"=>10, "datetime"=>19, "timestamp"=>19, "time"=>10, "year"=>4), 'Strings'=>array("char"=>255, "varchar"=>65535, "tinytext"=>255, "text"=>65535, "mediumtext"=>16777215, "longtext"=>4294967295), 'Lists'=>array("enum"=>65535, "set"=>64), 'Binary'=>array("bit"=>20, "binary"=>255, "varbinary"=>65535, "tinyblob"=>255, "blob"=>65535, "mediumblob"=>16777215, "longblob"=>4294967295), 'Geometry'=>array("geometry"=>0, "point"=>0, "linestring"=>0, "polygon"=>0, "multipoint"=>0, "multilinestring"=>0, "multipolygon"=>0, "geometrycollection"=>0),)as$z=>$X) {$tg += $X; $Hf[$z] = array_keys($X); }$_g = array("unsigned", "zerofill", "unsigned zerofill"); $Zd = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"); $xc = array("char_length", "date", "from_unixtime", "lower", "round", "sec_to_time", "time_to_sec", "upper"); $_c = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); $Lb = array(array("char"=>"md5/sha1/password/encrypt/uuid", "binary"=>"md5/sha1", "date|time"=>"now",), array("(^|[^o])int|float|double|decimal"=>"+/-", "date"=>"+ interval/- interval", "time"=>"addtime/subtime", "char|text"=>"concat",)); }define("SERVER", $_GET[DRIVER]); define("DB", $_GET["db"]); define("ME", preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_URI"]) . '?' . (sid() ? SID . '&' : '') . (SERVER !== null ? DRIVER . "=" . urlencode(SERVER) . '&' : '') . (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '') . (DB != "" ? 'db=' . urlencode(DB) . '&' . (isset($_GET["ns"]) ? "ns=" . urlencode($_GET["ns"]) . "&" : "") : '')); $ga = "4.2.5"; class
353
+Adminer {var$operators; function
354
+name() {return"<a href='https://www.adminer.org/' target='_blank' id='h1'>Adminer</a>"; }function
355
+credentials() {return
356
+array(SERVER, $_GET["username"], get_password()); }function
357
+permanentLogin($g = false) {return
358
+password_file($g); }function
359
+bruteForceKey() {return$_SERVER["REMOTE_ADDR"]; }function
360
+database() {return
361
+DB; }function
362
+databases($qc = true) {return
363
+get_databases($qc); }function
364
+schemas() {return
365
+schemas(); }function
366
+queryTimeout() {return
367
+5; }function
368
+headers() {return
369
+true; }function
370
+head() {return
371
+true; }function
372
+loginForm() {global$Eb; echo'<table cellspacing="0">
373
+<tr><th>System<td>',html_select("auth[driver]", $Eb, DRIVER), '<tr><th>Server<td><input name="auth[server]" value="', h(SERVER), '" title="hostname[:port]" placeholder="localhost" autocapitalize="off">
374
+<tr><th>Username<td><input name="auth[username]" id="username" value="',h($_GET["username"]), '" autocapitalize="off">
375 375
 <tr><th>Password<td><input type="password" name="auth[password]">
376
-<tr><th>Database<td><input name="auth[db]" value="',h($_GET["db"]),'" autocapitalize="off">
376
+<tr><th>Database<td><input name="auth[db]" value="',h($_GET["db"]), '" autocapitalize="off">
377 377
 </table>
378 378
 <script type="text/javascript">
379 379
 focus(document.getElementById(\'username\'));
380 380
 </script>
381
-',"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
382
-login($pd,$we){global$y;if($y=="sqlite")return
383
-sprintf('Implement %s method to use SQLite.','login()');return
384
-true;}function
385
-tableName($Of){return
386
-h($Of["Name"]);}function
387
-fieldName($l,$de=0){return'<span title="'.h($l["full_type"]).'">'.h($l["field"]).'</span>';}function
388
-selectLinks($Of,$P=""){echo'<p class="links">';$od=array("select"=>'Select data');if(support("table")||support("indexes"))$od["table"]='Show structure';if(support("table")){if(is_view($Of))$od["view"]='Alter view';else$od["create"]='Alter table';}if($P!==null)$od["edit"]='New item';foreach($od
389
-as$z=>$X)echo" <a href='".h(ME)."$z=".urlencode($Of["Name"]).($z=="edit"?$P:"")."'".bold(isset($_GET[$z])).">$X</a>";echo"\n";}function
390
-foreignKeys($Q){return
391
-foreign_keys($Q);}function
392
-backwardKeys($Q,$Nf){return
393
-array();}function
394
-backwardKeysPrint($Aa,$L){}function
395
-selectQuery($I,$bg){global$y;return"<p><code class='jush-$y'>".h(str_replace("\n"," ",$I))."</code> <span class='time'>($bg)</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>":"")."</p>";}function
396
-rowDescription($Q){return"";}function
397
-rowDescriptions($M,$sc){return$M;}function
398
-selectLink($X,$l){}function
399
-selectVal($X,$A,$l,$ke){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary~",$l["type"])&&!preg_match("~var~",$l["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$l["type"])&&!is_utf8($X))$K=lang(array('%d byte','%d bytes'),strlen($ke));return($A?"<a href='".h($A)."'".(is_url($A)?" rel='noreferrer'":"").">$K</a>":$K);}function
400
-editVal($X,$l){return$X;}function
401
-selectColumnsPrint($N,$d){global$xc,$_c;print_fieldset("select",'Select',$N);$t=0;$N[""]=array();foreach($N
402
-as$z=>$X){$X=$_GET["columns"][$z];$c=select_input(" name='columns[$t][col]' onchange='".($z!==""?"selectFieldChange(this.form)":"selectAddRow(this)").";'",$d,$X["col"]);echo"<div>".($xc||$_c?"<select name='columns[$t][fun]' onchange='helpClose();".($z!==""?"":" this.nextSibling.nextSibling.onchange();")."'".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).">".optionlist(array(-1=>"")+array_filter(array('Functions'=>$xc,'Aggregation'=>$_c)),$X["fun"])."</select>"."($c)":$c)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
403
-selectSearchPrint($Z,$d,$w){print_fieldset("search",'Search',$Z);foreach($w
404
-as$t=>$v){if($v["type"]=="FULLTEXT"){echo"(<i>".implode("</i>, <i>",array_map('h',$v["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$t]' value='".h($_GET["fulltext"][$t])."' onchange='selectFieldChange(this.form);'>",checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"<br>\n";}}$_GET["where"]=(array)$_GET["where"];reset($_GET["where"]);$Ka="this.nextSibling.onchange();";for($t=0;$t<=count($_GET["where"]);$t++){list(,$X)=each($_GET["where"]);if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".select_input(" name='where[$t][col]' onchange='$Ka'",$d,$X["col"],"(".'anywhere'.")"),html_select("where[$t][op]",$this->operators,$X["op"],$Ka),"<input type='search' name='where[$t][val]' value='".h($X["val"])."' onchange='".($X?"selectFieldChange(this.form)":"selectAddRow(this)").";' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";}}echo"</div></fieldset>\n";}function
405
-selectOrderPrint($de,$d,$w){print_fieldset("sort",'Sort',$de);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"<div>".select_input(" name='order[$t]' onchange='selectFieldChange(this.form);'",$d,$X),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),'descending')."</div>\n";$t++;}}echo"<div>".select_input(" name='order[$t]' onchange='selectAddRow(this);'",$d),checkbox("desc[$t]",1,false,'descending')."</div>\n","</div></fieldset>\n";}function
406
-selectLimitPrint($_){echo"<fieldset><legend>".'Limit'."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($_)."' onchange='selectFieldChange(this.form);'>","</div></fieldset>\n";}function
407
-selectLengthPrint($ag){if($ag!==null){echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($ag)."'>","</div></fieldset>\n";}}function
408
-selectActionPrint($w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script type='text/javascript'>\n","var indexColumns = ";$d=array();foreach($w
409
-as$v){if($v["type"]!="FULLTEXT")$d[reset($v["columns"])]=1;}$d[""]=1;foreach($d
410
-as$z=>$X)json_row($z);echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}function
411
-selectCommandPrint(){return!information_schema(DB);}function
412
-selectImportPrint(){return!information_schema(DB);}function
413
-selectEmailPrint($Qb,$d){}function
414
-selectColumnsProcess($d,$w){global$xc,$_c;$N=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$xc)||in_array($X["fun"],$_c)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$_c))$s[]=$N[$z];}}return
415
-array($N,$s);}function
416
-selectSearchProcess($m,$w){global$e,$y;$K=array();foreach($w
417
-as$t=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$db=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Lc=process_length($X["val"]);$db.=" ".($Lc!=""?$Lc:"(NULL)");}elseif($X["op"]=="SQL")$db=" $X[val]";elseif($X["op"]=="LIKE %%")$db=" LIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$db=" ILIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif(!preg_match('~NULL$~',$X["op"]))$db.=" ".$this->processInput($m[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=idf_escape($X["col"]).$db;else{$Ya=array();foreach($m
418
-as$F=>$l){$Xc=preg_match('~char|text|enum|set~',$l["type"]);if((is_numeric($X["val"])||!preg_match('~(^|[^o])int|float|double|decimal|bit~',$l["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||$Xc)){$F=idf_escape($F);$Ya[]=($y=="sql"&&$Xc&&!preg_match("~^utf8_~",$l["collation"])?"CONVERT($F USING ".charset($e).")":$F);}}$K[]=($Ya?"(".implode("$db OR ",$Ya)."$db)":"0");}}}return$K;}function
419
-selectOrderProcess($m,$w){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$K;}function
420
-selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
421
-selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
422
-selectEmailProcess($Z,$sc){return
423
-false;}function
424
-selectQueryBuild($N,$Z,$s,$de,$_,$G){return"";}function
425
-messageQuery($I,$bg){global$y;restart_session();$Ec=&get_session("queries");$u="sql-".count($Ec[$_GET["db"]]);if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n...";$Ec[$_GET["db"]][]=array($I,time(),$bg);return" <span class='time'>".@date("H:i:s")."</span> <a href='#$u' onclick=\"return !toggle('$u');\">".'SQL command'."</a>"."<div id='$u' class='hidden'><pre><code class='jush-$y'>".shorten_utf8($I,1000).'</code></pre>'.($bg?" <span class='time'>($bg)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Ec[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
426
-editFunctions($l){global$Lb;$K=($l["null"]?"NULL/":"");foreach($Lb
427
-as$z=>$xc){if(!$z||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($xc
428
-as$ye=>$X){if(!$ye||preg_match("~$ye~",$l["type"]))$K.="/$X";}if($z&&!preg_match('~set|blob|bytea|raw|file~',$l["type"]))$K.="/SQL";}}if($l["auto_increment"]&&!isset($_GET["select"])&&!where($_GET))$K='Auto Increment';return
429
-explode("/",$K);}function
430
-editInput($Q,$l,$wa,$Y){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$wa value='-1' checked><i>".'original'."</i></label> ":"").($l["null"]?"<label><input type='radio'$wa value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$wa,$l,$Y,0);return"";}function
431
-processInput($l,$Y,$q=""){if($q=="SQL")return$Y;$F=$l["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q))$K="$q()";elseif(preg_match('~^current_(date|timestamp)$~',$q))$K=$q;elseif(preg_match('~^([+-]|\\|\\|)$~',$q))$K=idf_escape($F)." $q $K";elseif(preg_match('~^[+-] interval$~',$q))$K=idf_escape($F)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$q))$K="$q(".idf_escape($F).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q))$K="$q($K)";return
432
-unconvert_field($l,$K);}function
433
-dumpOutput(){$K=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function
434
-dumpFormat(){return
435
-array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
436
-dumpDatabase($i){}function
437
-dumpTable($Q,$If,$Yc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($If)dump_csv(array_keys(fields($Q)));}else{if($Yc==2){$m=array();foreach(fields($Q)as$F=>$l)$m[]=idf_escape($F)." $l[full_type]";$g="CREATE TABLE ".table($Q)." (".implode(", ",$m).")";}else$g=create_sql($Q,$_POST["auto_increment"]);set_utf8mb4($g);if($If&&$g){if($If=="DROP+CREATE"||$Yc==1)echo"DROP ".($Yc==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($Yc==1)$g=remove_definer($g);echo"$g;\n\n";}}}function
438
-dumpData($Q,$If,$I){global$e,$y;$td=($y=="sqlite"?0:1048576);if($If){if($_POST["format"]=="sql"){if($If=="TRUNCATE+INSERT")echo
439
-truncate_sql($Q).";\n";$m=fields($Q);}$J=$e->query($I,1);if($J){$Qc="";$Ia="";$ad=array();$Kf="";$lc=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$lc()){if(!$ad){$Hg=array();foreach($L
440
-as$X){$l=$J->fetch_field();$ad[]=$l->name;$z=idf_escape($l->name);$Hg[]="$z = VALUES($z)";}$Kf=($If=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg):"").";\n";}if($_POST["format"]!="sql"){if($If=="table"){dump_csv($ad);$If="INSERT";}dump_csv($L);}else{if(!$Qc)$Qc="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$ad)).") VALUES";foreach($L
441
-as$z=>$X){$l=$m[$z];$L[$z]=($X!==null?unconvert_field($l,preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&$X!=''?$X:q($X)):"NULL");}$lf=($td?"\n":" ")."(".implode(",\t",$L).")";if(!$Ia)$Ia=$Qc.$lf;elseif(strlen($Ia)+4+strlen($lf)+strlen($Kf)<$td)$Ia.=",$lf";else{echo$Ia.$Kf;$Ia=$Qc.$lf;}}}if($Ia)echo$Ia.$Kf;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$e->error)."\n";}}function
442
-dumpFilename($Ic){return
443
-friendly_url($Ic!=""?$Ic:(SERVER!=""?SERVER:"localhost"));}function
444
-dumpHeaders($Ic,$Ed=false){$me=$_POST["output"];$gc=(preg_match('~sql~',$_POST["format"])?"sql":($Ed?"tar":"csv"));header("Content-Type: ".($me=="gz"?"application/x-gzip":($gc=="tar"?"application/x-tar":($gc=="sql"||$me!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($me=="gz")ob_start('ob_gzencode',1e6);return$gc;}function
445
-homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return
446
-true;}function
447
-navigation($Dd){global$ga,$y,$Eb,$e;echo'<h1>
448
-',$this->name(),' <span class="version">',$ga,'</span>
449
-<a href="https://www.adminer.org/#download" target="_blank" id="version">',(version_compare($ga,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
381
+',"<p><input type='submit' value='" . 'Login' . "'>\n", checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], 'Permanent login') . "\n"; }function
382
+login($pd, $we) {global$y; if ($y == "sqlite")return
383
+sprintf('Implement %s method to use SQLite.', 'login()'); return
384
+true; }function
385
+tableName($Of) {return
386
+h($Of["Name"]); }function
387
+fieldName($l, $de = 0) {return'<span title="' . h($l["full_type"]) . '">' . h($l["field"]) . '</span>'; }function
388
+selectLinks($Of, $P = "") {echo'<p class="links">'; $od = array("select"=>'Select data'); if (support("table") || support("indexes"))$od["table"] = 'Show structure'; if (support("table")) {if (is_view($Of))$od["view"] = 'Alter view'; else$od["create"] = 'Alter table'; }if ($P !== null)$od["edit"] = 'New item'; foreach ($od
389
+as$z=>$X)echo" <a href='" . h(ME) . "$z=" . urlencode($Of["Name"]) . ($z == "edit" ? $P : "") . "'" . bold(isset($_GET[$z])) . ">$X</a>"; echo"\n"; }function
390
+foreignKeys($Q) {return
391
+foreign_keys($Q); }function
392
+backwardKeys($Q, $Nf) {return
393
+array(); }function
394
+backwardKeysPrint($Aa, $L) {}function
395
+selectQuery($I, $bg) {global$y; return"<p><code class='jush-$y'>" . h(str_replace("\n", " ", $I)) . "</code> <span class='time'>($bg)</span>" . (support("sql") ? " <a href='" . h(ME) . "sql=" . urlencode($I) . "'>" . 'Edit' . "</a>" : "") . "</p>"; }function
396
+rowDescription($Q) {return""; }function
397
+rowDescriptions($M, $sc) {return$M; }function
398
+selectLink($X, $l) {}function
399
+selectVal($X, $A, $l, $ke) {$K = ($X === null ? "<i>NULL</i>" : (preg_match("~char|binary~", $l["type"]) && !preg_match("~var~", $l["type"]) ? "<code>$X</code>" : $X)); if (preg_match('~blob|bytea|raw|file~', $l["type"]) && !is_utf8($X))$K = lang(array('%d byte', '%d bytes'), strlen($ke)); return($A ? "<a href='" . h($A) . "'" . (is_url($A) ? " rel='noreferrer'" : "") . ">$K</a>" : $K); }function
400
+editVal($X, $l) {return$X; }function
401
+selectColumnsPrint($N, $d) {global$xc, $_c; print_fieldset("select", 'Select', $N); $t = 0; $N[""] = array(); foreach ($N
402
+as$z=>$X) {$X = $_GET["columns"][$z]; $c = select_input(" name='columns[$t][col]' onchange='" . ($z !== "" ? "selectFieldChange(this.form)" : "selectAddRow(this)") . ";'", $d, $X["col"]); echo"<div>" . ($xc || $_c ? "<select name='columns[$t][fun]' onchange='helpClose();" . ($z !== "" ? "" : " this.nextSibling.nextSibling.onchange();") . "'" . on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'", 1) . ">" . optionlist(array(-1=>"") + array_filter(array('Functions'=>$xc, 'Aggregation'=>$_c)), $X["fun"]) . "</select>" . "($c)" : $c) . "</div>\n"; $t++; }echo"</div></fieldset>\n"; }function
403
+selectSearchPrint($Z, $d, $w) {print_fieldset("search", 'Search', $Z); foreach ($w
404
+as$t=>$v) {if ($v["type"] == "FULLTEXT") {echo"(<i>" . implode("</i>, <i>", array_map('h', $v["columns"])) . "</i>) AGAINST", " <input type='search' name='fulltext[$t]' value='" . h($_GET["fulltext"][$t]) . "' onchange='selectFieldChange(this.form);'>", checkbox("boolean[$t]", 1, isset($_GET["boolean"][$t]), "BOOL"), "<br>\n"; }}$_GET["where"] = (array) $_GET["where"]; reset($_GET["where"]); $Ka = "this.nextSibling.onchange();"; for ($t = 0; $t <= count($_GET["where"]); $t++) {list(,$X) = each($_GET["where"]); if (!$X || ("$X[col]$X[val]" != "" && in_array($X["op"], $this->operators))) {echo"<div>" . select_input(" name='where[$t][col]' onchange='$Ka'", $d, $X["col"], "(" . 'anywhere' . ")"), html_select("where[$t][op]", $this->operators, $X["op"], $Ka), "<input type='search' name='where[$t][val]' value='" . h($X["val"]) . "' onchange='" . ($X ? "selectFieldChange(this.form)" : "selectAddRow(this)") . ";' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n"; }}echo"</div></fieldset>\n"; }function
405
+selectOrderPrint($de, $d, $w) {print_fieldset("sort", 'Sort', $de); $t = 0; foreach ((array) $_GET["order"]as$z=>$X) {if ($X != "") {echo"<div>" . select_input(" name='order[$t]' onchange='selectFieldChange(this.form);'", $d, $X), checkbox("desc[$t]", 1, isset($_GET["desc"][$z]), 'descending') . "</div>\n"; $t++; }}echo"<div>" . select_input(" name='order[$t]' onchange='selectAddRow(this);'", $d), checkbox("desc[$t]", 1, false, 'descending') . "</div>\n", "</div></fieldset>\n"; }function
406
+selectLimitPrint($_) {echo"<fieldset><legend>" . 'Limit' . "</legend><div>"; echo"<input type='number' name='limit' class='size' value='" . h($_) . "' onchange='selectFieldChange(this.form);'>", "</div></fieldset>\n"; }function
407
+selectLengthPrint($ag) {if ($ag !== null) {echo"<fieldset><legend>" . 'Text length' . "</legend><div>", "<input type='number' name='text_length' class='size' value='" . h($ag) . "'>", "</div></fieldset>\n"; }}function
408
+selectActionPrint($w) {echo"<fieldset><legend>" . 'Action' . "</legend><div>", "<input type='submit' value='" . 'Select' . "'>", " <span id='noindex' title='" . 'Full table scan' . "'></span>", "<script type='text/javascript'>\n", "var indexColumns = "; $d = array(); foreach ($w
409
+as$v) {if ($v["type"] != "FULLTEXT")$d[reset($v["columns"])] = 1; }$d[""] = 1; foreach ($d
410
+as$z=>$X)json_row($z); echo";\n", "selectFieldChange(document.getElementById('form'));\n", "</script>\n", "</div></fieldset>\n"; }function
411
+selectCommandPrint() {return!information_schema(DB); }function
412
+selectImportPrint() {return!information_schema(DB); }function
413
+selectEmailPrint($Qb, $d) {}function
414
+selectColumnsProcess($d, $w) {global$xc, $_c; $N = array(); $s = array(); foreach ((array) $_GET["columns"]as$z=>$X) {if ($X["fun"] == "count" || ($X["col"] != "" && (!$X["fun"] || in_array($X["fun"], $xc) || in_array($X["fun"], $_c)))) {$N[$z] = apply_sql_function($X["fun"], ($X["col"] != "" ? idf_escape($X["col"]) : "*")); if (!in_array($X["fun"], $_c))$s[] = $N[$z]; }}return
415
+array($N, $s); }function
416
+selectSearchProcess($m, $w) {global$e, $y; $K = array(); foreach ($w
417
+as$t=>$v) {if ($v["type"] == "FULLTEXT" && $_GET["fulltext"][$t] != "")$K[] = "MATCH (" . implode(", ", array_map('idf_escape', $v["columns"])) . ") AGAINST (" . q($_GET["fulltext"][$t]) . (isset($_GET["boolean"][$t]) ? " IN BOOLEAN MODE" : "") . ")"; }foreach ((array) $_GET["where"]as$X) {if ("$X[col]$X[val]" != "" && in_array($X["op"], $this->operators)) {$db = " $X[op]"; if (preg_match('~IN$~', $X["op"])) {$Lc = process_length($X["val"]); $db .= " " . ($Lc != "" ? $Lc : "(NULL)"); }elseif ($X["op"] == "SQL")$db = " $X[val]"; elseif ($X["op"] == "LIKE %%")$db = " LIKE " . $this->processInput($m[$X["col"]], "%$X[val]%"); elseif ($X["op"] == "ILIKE %%")$db = " ILIKE " . $this->processInput($m[$X["col"]], "%$X[val]%"); elseif (!preg_match('~NULL$~', $X["op"]))$db .= " " . $this->processInput($m[$X["col"]], $X["val"]); if ($X["col"] != "")$K[] = idf_escape($X["col"]) . $db; else {$Ya = array(); foreach ($m
418
+as$F=>$l) {$Xc = preg_match('~char|text|enum|set~', $l["type"]); if ((is_numeric($X["val"]) || !preg_match('~(^|[^o])int|float|double|decimal|bit~', $l["type"])) && (!preg_match("~[\x80-\xFF]~", $X["val"]) || $Xc)) {$F = idf_escape($F); $Ya[] = ($y == "sql" && $Xc && !preg_match("~^utf8_~", $l["collation"]) ? "CONVERT($F USING " . charset($e) . ")" : $F); }}$K[] = ($Ya ? "(" . implode("$db OR ", $Ya) . "$db)" : "0"); }}}return$K; }function
419
+selectOrderProcess($m, $w) {$K = array(); foreach ((array) $_GET["order"]as$z=>$X) {if ($X != "")$K[] = (preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~', $X) ? $X : idf_escape($X)) . (isset($_GET["desc"][$z]) ? " DESC" : ""); }return$K; }function
420
+selectLimitProcess() {return(isset($_GET["limit"]) ? $_GET["limit"] : "50"); }function
421
+selectLengthProcess() {return(isset($_GET["text_length"]) ? $_GET["text_length"] : "100"); }function
422
+selectEmailProcess($Z, $sc) {return
423
+false; }function
424
+selectQueryBuild($N, $Z, $s, $de, $_, $G) {return""; }function
425
+messageQuery($I, $bg) {global$y; restart_session(); $Ec = &get_session("queries"); $u = "sql-" . count($Ec[$_GET["db"]]); if (strlen($I) > 1e6)$I = preg_replace('~[\x80-\xFF]+$~', '', substr($I, 0, 1e6)) . "\n..."; $Ec[$_GET["db"]][] = array($I, time(), $bg); return" <span class='time'>" . @date("H:i:s") . "</span> <a href='#$u' onclick=\"return !toggle('$u');\">" . 'SQL command' . "</a>" . "<div id='$u' class='hidden'><pre><code class='jush-$y'>" . shorten_utf8($I, 1000) . '</code></pre>' . ($bg ? " <span class='time'>($bg)</span>" : '') . (support("sql") ? '<p><a href="' . h(str_replace("db=" . urlencode(DB), "db=" . urlencode($_GET["db"]), ME) . 'sql=&history=' . (count($Ec[$_GET["db"]]) - 1)) . '">' . 'Edit' . '</a>' : '') . '</div>'; }function
426
+editFunctions($l) {global$Lb; $K = ($l["null"] ? "NULL/" : ""); foreach ($Lb
427
+as$z=>$xc) {if (!$z || (!isset($_GET["call"]) && (isset($_GET["select"]) || where($_GET)))) {foreach ($xc
428
+as$ye=>$X) {if (!$ye || preg_match("~$ye~", $l["type"]))$K .= "/$X"; }if ($z && !preg_match('~set|blob|bytea|raw|file~', $l["type"]))$K .= "/SQL"; }}if ($l["auto_increment"] && !isset($_GET["select"]) && !where($_GET))$K = 'Auto Increment'; return
429
+explode("/", $K); }function
430
+editInput($Q, $l, $wa, $Y) {if ($l["type"] == "enum")return(isset($_GET["select"]) ? "<label><input type='radio'$wa value='-1' checked><i>" . 'original' . "</i></label> " : "") . ($l["null"] ? "<label><input type='radio'$wa value=''" . ($Y !== null || isset($_GET["select"]) ? "" : " checked") . "><i>NULL</i></label> " : "") . enum_input("radio", $wa, $l, $Y, 0); return""; }function
431
+processInput($l, $Y, $q = "") {if ($q == "SQL")return$Y; $F = $l["field"]; $K = q($Y); if (preg_match('~^(now|getdate|uuid)$~', $q))$K = "$q()"; elseif (preg_match('~^current_(date|timestamp)$~', $q))$K = $q; elseif (preg_match('~^([+-]|\\|\\|)$~', $q))$K = idf_escape($F) . " $q $K"; elseif (preg_match('~^[+-] interval$~', $q))$K = idf_escape($F) . " $q " . (preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i", $Y) ? $Y : $K); elseif (preg_match('~^(addtime|subtime|concat)$~', $q))$K = "$q(" . idf_escape($F) . ", $K)"; elseif (preg_match('~^(md5|sha1|password|encrypt)$~', $q))$K = "$q($K)"; return
432
+unconvert_field($l, $K); }function
433
+dumpOutput() {$K = array('text'=>'open', 'file'=>'save'); if (function_exists('gzencode'))$K['gz'] = 'gzip'; return$K; }function
434
+dumpFormat() {return
435
+array('sql'=>'SQL', 'csv'=>'CSV,', 'csv;'=>'CSV;', 'tsv'=>'TSV'); }function
436
+dumpDatabase($i) {}function
437
+dumpTable($Q, $If, $Yc = 0) {if ($_POST["format"] != "sql") {echo"\xef\xbb\xbf"; if ($If)dump_csv(array_keys(fields($Q))); } else {if ($Yc == 2) {$m = array(); foreach (fields($Q)as$F=>$l)$m[] = idf_escape($F) . " $l[full_type]"; $g = "CREATE TABLE " . table($Q) . " (" . implode(", ", $m) . ")"; } else$g = create_sql($Q, $_POST["auto_increment"]); set_utf8mb4($g); if ($If && $g) {if ($If == "DROP+CREATE" || $Yc == 1)echo"DROP " . ($Yc == 2 ? "VIEW" : "TABLE") . " IF EXISTS " . table($Q) . ";\n"; if ($Yc == 1)$g = remove_definer($g); echo"$g;\n\n"; }}}function
438
+dumpData($Q, $If, $I) {global$e, $y; $td = ($y == "sqlite" ? 0 : 1048576); if ($If) {if ($_POST["format"] == "sql") {if ($If == "TRUNCATE+INSERT")echo
439
+truncate_sql($Q) . ";\n"; $m = fields($Q); }$J = $e->query($I, 1); if ($J) {$Qc = ""; $Ia = ""; $ad = array(); $Kf = ""; $lc = ($Q != '' ? 'fetch_assoc' : 'fetch_row'); while ($L = $J->$lc()) {if (!$ad) {$Hg = array(); foreach ($L
440
+as$X) {$l = $J->fetch_field(); $ad[] = $l->name; $z = idf_escape($l->name); $Hg[] = "$z = VALUES($z)"; }$Kf = ($If == "INSERT+UPDATE" ? "\nON DUPLICATE KEY UPDATE " . implode(", ", $Hg) : "") . ";\n"; }if ($_POST["format"] != "sql") {if ($If == "table") {dump_csv($ad); $If = "INSERT"; }dump_csv($L); } else {if (!$Qc)$Qc = "INSERT INTO " . table($Q) . " (" . implode(", ", array_map('idf_escape', $ad)) . ") VALUES"; foreach ($L
441
+as$z=>$X) {$l = $m[$z]; $L[$z] = ($X !== null ? unconvert_field($l, preg_match('~(^|[^o])int|float|double|decimal~', $l["type"]) && $X != '' ? $X : q($X)) : "NULL"); }$lf = ($td ? "\n" : " ") . "(" . implode(",\t", $L) . ")"; if (!$Ia)$Ia = $Qc . $lf; elseif (strlen($Ia) + 4 + strlen($lf) + strlen($Kf) < $td)$Ia .= ",$lf"; else {echo$Ia . $Kf; $Ia = $Qc . $lf; }}}if ($Ia)echo$Ia . $Kf; }elseif ($_POST["format"] == "sql")echo"-- " . str_replace("\n", " ", $e->error) . "\n"; }}function
442
+dumpFilename($Ic) {return
443
+friendly_url($Ic != "" ? $Ic : (SERVER != "" ? SERVER : "localhost")); }function
444
+dumpHeaders($Ic, $Ed = false) {$me = $_POST["output"]; $gc = (preg_match('~sql~', $_POST["format"]) ? "sql" : ($Ed ? "tar" : "csv")); header("Content-Type: " . ($me == "gz" ? "application/x-gzip" : ($gc == "tar" ? "application/x-tar" : ($gc == "sql" || $me != "file" ? "text/plain" : "text/csv") . "; charset=utf-8"))); if ($me == "gz")ob_start('ob_gzencode', 1e6); return$gc; }function
445
+homepage() {echo'<p class="links">' . ($_GET["ns"] == "" && support("database") ? '<a href="' . h(ME) . 'database=">' . 'Alter database' . "</a>\n" : ""), (support("scheme") ? "<a href='" . h(ME) . "scheme='>" . ($_GET["ns"] != "" ? 'Alter schema' : 'Create schema') . "</a>\n" : ""), ($_GET["ns"] !== "" ? '<a href="' . h(ME) . 'schema=">' . 'Database schema' . "</a>\n" : ""), (support("privileges") ? "<a href='" . h(ME) . "privileges='>" . 'Privileges' . "</a>\n" : ""); return
446
+true; }function
447
+navigation($Dd) {global$ga, $y, $Eb, $e; echo'<h1>
448
+',$this->name(), ' <span class="version">', $ga, '</span>
449
+<a href="https://www.adminer.org/#download" target="_blank" id="version">',(version_compare($ga, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""), '</a>
450 450
 </h1>
451
-';if($Dd=="auth"){$pc=true;foreach((array)$_SESSION["pwds"]as$Jg=>$vf){foreach($vf
452
-as$O=>$Fg){foreach($Fg
453
-as$V=>$we){if($we!==null){if($pc){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$pc=false;}$tb=$_SESSION["db"][$Jg][$O][$V];foreach(($tb?array_keys($tb):array(""))as$i)echo"<a href='".h(auth_url($Jg,$O,$V,$i))."'>($Eb[$Jg]) ".h($V.($O!=""?"@$O":"").($i!=""?" - $i":""))."</a><br>\n";}}}}}else{if($_GET["ns"]!==""&&!$Dd&&DB!=""){$e->select_db(DB);$S=table_status('',true);}if(support("sql")){echo'<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=jush.js&amp;version=4.2.5&amp;driver=mysql",'"></script>
451
+';if ($Dd == "auth") {$pc = true; foreach ((array) $_SESSION["pwds"]as$Jg=>$vf) {foreach ($vf
452
+as$O=>$Fg) {foreach ($Fg
453
+as$V=>$we) {if ($we !== null) {if ($pc) {echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; $pc = false; }$tb = $_SESSION["db"][$Jg][$O][$V]; foreach (($tb ? array_keys($tb) : array(""))as$i)echo"<a href='" . h(auth_url($Jg, $O, $V, $i)) . "'>($Eb[$Jg]) " . h($V . ($O != "" ? "@$O" : "") . ($i != "" ? " - $i" : "")) . "</a><br>\n"; }}}}} else {if ($_GET["ns"] !== "" && !$Dd && DB != "") {$e->select_db(DB); $S = table_status('', true); }if (support("sql")) {echo'<script type="text/javascript" src="', h(preg_replace("~\\?.*~", "", ME)) . "?file=jush.js&amp;version=4.2.5&amp;driver=mysql", '"></script>
454 454
 <script type="text/javascript">
455
-';if($S){$od=array();foreach($S
456
-as$Q=>$U)$od[]=preg_quote($Q,'/');echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$od).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}echo'bodyLoad(\'',(is_object($e)?substr($e->server_info,0,3):""),'\');
455
+';if ($S) {$od = array(); foreach ($S
456
+as$Q=>$U)$od[] = preg_quote($Q, '/'); echo"var jushLinks = { $y: [ '" . js_escape(ME) . (support("table") ? "table=" : "select=") . "\$&', /\\b(" . implode("|", $od) . ")\\b/g ] };\n"; foreach (array("bac", "bra", "sqlite_quo", "mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n"; }echo'bodyLoad(\'', (is_object($e) ? substr($e->server_info, 0, 3) : ""), '\');
457 457
 </script>
458
-';}$this->databasesPrint($Dd);if(DB==""||!$Dd){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>\n":"")."";if(support("dump"))echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>\n";}if($_GET["ns"]!==""&&!$Dd&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>\n";if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function
459
-databasesPrint($Dd){global$b,$e;$h=$this->databases();echo'<form action="">
458
+';}$this->databasesPrint($Dd); if (DB == "" || !$Dd) {echo"<p class='links'>" . (support("sql") ? "<a href='" . h(ME) . "sql='" . bold(isset($_GET["sql"]) && !isset($_GET["import"])) . ">" . 'SQL command' . "</a>\n<a href='" . h(ME) . "import='" . bold(isset($_GET["import"])) . ">" . 'Import' . "</a>\n" : "") . ""; if (support("dump"))echo"<a href='" . h(ME) . "dump=" . urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]) . "' id='dump'" . bold(isset($_GET["dump"])) . ">" . 'Export' . "</a>\n"; }if ($_GET["ns"] !== "" && !$Dd && DB != "") {echo'<a href="' . h(ME) . 'create="' . bold($_GET["create"] === "") . ">" . 'Create table' . "</a>\n"; if (!$S)echo"<p class='message'>" . 'No tables.' . "\n"; else$this->tablesPrint($S); }}}function
459
+databasesPrint($Dd) {global$b, $e; $h = $this->databases(); echo'<form action="">
460 460
 <p id="dbs">
461
-';hidden_fields_get();$rb=" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'";echo"<span title='".'database'."'>DB</span>: ".($h?"<select name='db'$rb>".optionlist(array(""=>"")+$h,DB)."</select>":'<input name="db" value="'.h(DB).'" autocapitalize="off">'),"<input type='submit' value='".'Use'."'".($h?" class='hidden'":"").">\n";if($Dd!="db"&&DB!=""&&$e->select_db(DB)){}echo(isset($_GET["sql"])?'<input type="hidden" name="sql" value="">':(isset($_GET["schema"])?'<input type="hidden" name="schema" value="">':(isset($_GET["dump"])?'<input type="hidden" name="dump" value="">':(isset($_GET["privileges"])?'<input type="hidden" name="privileges" value="">':"")))),"</p></form>\n";}function
462
-tablesPrint($S){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($S
463
-as$Q=>$Df){echo'<a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select").">".'select'."</a> ";$F=$this->tableName($Df);echo(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($Q).'"'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($Df)?"view":""),"structure")." title='".'Show structure'."'>$F</a>":"<span>$F</span>")."<br>\n";}}}$b=(function_exists('adminer_object')?adminer_object():new
464
-Adminer);if($b->operators===null)$b->operators=$Zd;function
465
-page_header($eg,$k="",$Ha=array(),$fg=""){global$ca,$ga,$b,$Eb,$y;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$gg=$eg.($fg!=""?": $fg":"");$hg=strip_tags($gg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
461
+';hidden_fields_get(); $rb = " onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'"; echo"<span title='" . 'database' . "'>DB</span>: " . ($h ? "<select name='db'$rb>" . optionlist(array(""=>"") + $h, DB) . "</select>" : '<input name="db" value="' . h(DB) . '" autocapitalize="off">'), "<input type='submit' value='" . 'Use' . "'" . ($h ? " class='hidden'" : "") . ">\n"; if ($Dd != "db" && DB != "" && $e->select_db(DB)) {}echo(isset($_GET["sql"]) ? '<input type="hidden" name="sql" value="">' : (isset($_GET["schema"]) ? '<input type="hidden" name="schema" value="">' : (isset($_GET["dump"]) ? '<input type="hidden" name="dump" value="">' : (isset($_GET["privileges"]) ? '<input type="hidden" name="privileges" value="">' : "")))), "</p></form>\n"; }function
462
+tablesPrint($S) {echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; foreach ($S
463
+as$Q=>$Df) {echo'<a href="' . h(ME) . 'select=' . urlencode($Q) . '"' . bold($_GET["select"] == $Q || $_GET["edit"] == $Q, "select") . ">" . 'select' . "</a> "; $F = $this->tableName($Df); echo(support("table") || support("indexes") ? '<a href="' . h(ME) . 'table=' . urlencode($Q) . '"' . bold(in_array($Q, array($_GET["table"], $_GET["create"], $_GET["indexes"], $_GET["foreign"], $_GET["trigger"])), (is_view($Df) ? "view" : ""), "structure") . " title='" . 'Show structure' . "'>$F</a>" : "<span>$F</span>") . "<br>\n"; }}}$b = (function_exists('adminer_object') ? adminer_object() : new
464
+Adminer); if ($b->operators === null)$b->operators = $Zd; function
465
+page_header($eg, $k = "", $Ha = array(), $fg = "") {global$ca, $ga, $b, $Eb, $y; page_headers(); if (is_ajax() && $k) {page_messages($k); exit; }$gg = $eg . ($fg != "" ? ": $fg" : ""); $hg = strip_tags($gg . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $b->name()); echo'<!DOCTYPE html>
466 466
 <html lang="en" dir="ltr">
467 467
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
468 468
 <meta http-equiv="Content-Script-Type" content="text/javascript">
469 469
 <meta name="robots" content="noindex">
470 470
 <meta name="referrer" content="origin-when-crossorigin">
471
-<title>',$hg,'</title>
472
-<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME))."?file=default.css&amp;version=4.2.5&amp;driver=mysql",'">
473
-<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=functions.js&amp;version=4.2.5&amp;driver=mysql",'"></script>
474
-';if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&amp;version=4.2.5&amp;driver=mysql",'">
475
-<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&amp;version=4.2.5&amp;driver=mysql",'">
476
-';if(file_exists("adminer.css")){echo'<link rel="stylesheet" type="text/css" href="adminer.css">
471
+<title>',$hg, '</title>
472
+<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=default.css&amp;version=4.2.5&amp;driver=mysql", '">
473
+<script type="text/javascript" src="',h(preg_replace("~\\?.*~", "", ME)) . "?file=functions.js&amp;version=4.2.5&amp;driver=mysql", '"></script>
474
+';if ($b->head()) {echo'<link rel="shortcut icon" type="image/x-icon" href="', h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&amp;version=4.2.5&amp;driver=mysql", '">
475
+<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&amp;version=4.2.5&amp;driver=mysql", '">
476
+';if (file_exists("adminer.css")) {echo'<link rel="stylesheet" type="text/css" href="adminer.css">
477 477
 ';}}echo'
478
-<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"])?"":" onload=\"verifyVersion('$ga');\"");?>>
478
+<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"]) ? "" : " onload=\"verifyVersion('$ga');\""); ?>>
479 479
 <script type="text/javascript">
480 480
 document.body.className = document.body.className.replace(/ nojs/, ' js');
481 481
 var offlineMessage = '<?php echo
482
-js_escape('You are offline.'),'\';
482
+js_escape('You are offline.'), '\';
483 483
 </script>
484 484
 
485
-<div id="help" class="jush-',$y,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
485
+<div id="help" class="jush-',$y, ' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
486 486
 
487 487
 <div id="content">
488
-';if($Ha!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$Eb[DRIVER].'</a> &raquo; ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ha===false)echo"$O\n";else{echo"<a href='".($A?h($A):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ha)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';if(is_array($Ha)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';foreach($Ha
489
-as$z=>$X){$xb=(is_array($X)?$X[1]:h($X));if($xb!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$xb</a> &raquo; ";}}echo"$eg\n";}}echo"<h2>$gg</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$h=&get_session("dbs");if(DB!=""&&$h&&!in_array(DB,$h,true))$h=null;stop_session();define("PAGE_HEADER",1);}function
490
-page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function
491
-page_messages($k){$Bg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Bd=$_SESSION["messages"][$Bg];if($Bd){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Bd)."</div>\n";unset($_SESSION["messages"][$Bg]);}if($k)echo"<div class='error'>$k</div>\n";}function
492
-page_footer($Dd=""){global$b,$T;echo'</div>
488
+';if ($Ha !== null) {$A = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1); echo'<p id="breadcrumb"><a href="' . h($A ? $A : ".") . '">' . $Eb[DRIVER] . '</a> &raquo; '; $A = substr(preg_replace('~\b(db|ns)=[^&]*&~', '', ME), 0, -1); $O = (SERVER != "" ? h(SERVER) : 'Server'); if ($Ha === false)echo"$O\n"; else {echo"<a href='" . ($A ? h($A) : ".") . "' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; "; if ($_GET["ns"] != "" || (DB != "" && is_array($Ha)))echo'<a href="' . h($A . "&db=" . urlencode(DB) . (support("scheme") ? "&ns=" : "")) . '">' . h(DB) . '</a> &raquo; '; if (is_array($Ha)) {if ($_GET["ns"] != "")echo'<a href="' . h(substr(ME, 0, -1)) . '">' . h($_GET["ns"]) . '</a> &raquo; '; foreach ($Ha
489
+as$z=>$X) {$xb = (is_array($X) ? $X[1] : h($X)); if ($xb != "")echo"<a href='" . h(ME . "$z=") . urlencode(is_array($X) ? $X[0] : $X) . "'>$xb</a> &raquo; "; }}echo"$eg\n"; }}echo"<h2>$gg</h2>\n", "<div id='ajaxstatus' class='jsonly hidden'></div>\n"; restart_session(); page_messages($k); $h = &get_session("dbs"); if (DB != "" && $h && !in_array(DB, $h, true))$h = null; stop_session(); define("PAGE_HEADER", 1); }function
490
+page_headers() {global$b; header("Content-Type: text/html; charset=utf-8"); header("Cache-Control: no-cache"); if ($b->headers()) {header("X-Frame-Options: deny"); header("X-XSS-Protection: 0"); }}function
491
+page_messages($k) {$Bg = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]); $Bd = $_SESSION["messages"][$Bg]; if ($Bd) {echo"<div class='message'>" . implode("</div>\n<div class='message'>", $Bd) . "</div>\n"; unset($_SESSION["messages"][$Bg]); }if ($k)echo"<div class='error'>$k</div>\n"; }function
492
+page_footer($Dd = "") {global$b, $T; echo'</div>
493 493
 
494
-';if($Dd!="auth"){echo'<form action="" method="post">
494
+';if ($Dd != "auth") {echo'<form action="" method="post">
495 495
 <p class="logout">
496 496
 <input type="submit" name="logout" value="Logout" id="logout">
497
-<input type="hidden" name="token" value="',$T,'">
497
+<input type="hidden" name="token" value="',$T, '">
498 498
 </p>
499 499
 </form>
500 500
 ';}echo'<div id="menu">
501
-';$b->navigation($Dd);echo'</div>
501
+';$b->navigation($Dd); echo'</div>
502 502
 <script type="text/javascript">setupSubmitHighlight(document);</script>
503 503
 ';}function
504
-int32($E){while($E>=2147483648)$E-=4294967296;while($E<=-2147483649)$E+=4294967296;return(int)$E;}function
505
-long2str($W,$Ng){$lf='';foreach($W
506
-as$X)$lf.=pack('V',$X);if($Ng)return
507
-substr($lf,0,end($W));return$lf;}function
508
-str2long($lf,$Ng){$W=array_values(unpack('V*',str_pad($lf,4*ceil(strlen($lf)/4),"\0")));if($Ng)$W[]=strlen($lf);return$W;}function
509
-xxtea_mx($Sg,$Rg,$Lf,$Zc){return
510
-int32((($Sg>>5&0x7FFFFFF)^$Rg<<2)+(($Rg>>3&0x1FFFFFFF)^$Sg<<4))^int32(($Lf^$Rg)+($Zc^$Sg));}function
511
-encrypt_string($Ff,$z){if($Ff=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,true);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=0;while($H-->0){$Lf=int32($Lf+0x9E3779B9);$Kb=$Lf>>2&3;for($ne=0;$ne<$E;$ne++){$Rg=$W[$ne+1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$ne]+$Fd);$W[$ne]=$Sg;}$Rg=$W[0];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$E]+$Fd);$W[$E]=$Sg;}return
512
-long2str($W,false);}function
513
-decrypt_string($Ff,$z){if($Ff=="")return"";if(!$z)return
514
-false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,false);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=int32($H*0x9E3779B9);while($Lf){$Kb=$Lf>>2&3;for($ne=$E;$ne>0;$ne--){$Sg=$W[$ne-1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[$ne]-$Fd);$W[$ne]=$Rg;}$Sg=$W[$E];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[0]-$Fd);$W[0]=$Rg;$Lf=int32($Lf-0x9E3779B9);}return
515
-long2str($W,true);}$e='';$Dc=$_SESSION["token"];if(!$Dc)$_SESSION["token"]=rand(1,1e6);$T=get_token();$ze=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$ze[$z]=$X;}}function
516
-add_invalid_login(){global$b;$nc=get_temp_dir()."/adminer.invalid";$p=@fopen($nc,"r+");if(!$p){$p=@fopen($nc,"w");if(!$p)return;}flock($p,LOCK_EX);$Tc=unserialize(stream_get_contents($p));$bg=time();if($Tc){foreach($Tc
517
-as$Uc=>$X){if($X[0]<$bg)unset($Tc[$Uc]);}}$Sc=&$Tc[$b->bruteForceKey()];if(!$Sc)$Sc=array($bg+30*60,0);$Sc[1]++;$tf=serialize($Tc);rewind($p);fwrite($p,$tf);ftruncate($p,strlen($tf));flock($p,LOCK_UN);fclose($p);}$xa=$_POST["auth"];if($xa){$Tc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Sc=$Tc[$b->bruteForceKey()];$Kd=($Sc[1]>30?$Sc[0]-time():0);if($Kd>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Kd/60)));session_regenerate_id();$Jg=$xa["driver"];$O=$xa["server"];$V=$xa["username"];$we=(string)$xa["password"];$i=$xa["db"];set_password($Jg,$O,$V,$we);$_SESSION["db"][$Jg][$O][$V][$i]=true;if($xa["permanent"]){$z=base64_encode($Jg)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($i);$Je=$b->permanentLogin(true);$ze[$z]="$z:".base64_encode($Je?encrypt_string($we,$Je):"");cookie("adminer_permanent",implode(" ",$ze));}if(count($_POST)==1||DRIVER!=$Jg||SERVER!=$O||$_GET["username"]!==$V||DB!=$i)redirect(auth_url($Jg,$O,$V,$i));}elseif($_POST["logout"]){if($Dc&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($ze&&!$_SESSION["pwds"]){session_regenerate_id();$Je=$b->permanentLogin();foreach($ze
518
-as$z=>$X){list(,$Qa)=explode(":",$X);list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));set_password($Jg,$O,$V,decrypt_string(base64_decode($Qa),$Je));$_SESSION["db"][$Jg][$O][$V][$i]=true;}}function
519
-unset_permanent(){global$ze;foreach($ze
520
-as$z=>$X){list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));if($Jg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$i==DB)unset($ze[$z]);}cookie("adminer_permanent",implode(" ",$ze));}function
521
-auth_error($k){global$b,$Dc;$k=h($k);$wf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$wf]||$_GET[$wf])&&!$Dc)$k='Session expired, please login again.';else{add_invalid_login();$we=get_password();if($we!==null){if($we===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$wf]&&$_GET[$wf]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$pe=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$pe["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Ee)),false);page_footer("auth");exit;}$e=connect();}$j=new
522
-Min_Driver($e);if(!is_object($e)||($pd=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($e)?$e:(is_string($pd)?$pd:'Invalid credentials.')));if($xa&&$_POST["token"])$_POST["token"]=$T;$k='';if($_POST){if(!verify_token()){$Nc="max_input_vars";$xd=ini_get($Nc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$xd||$X<$xd)){$Nc=$z;$xd=$X;}}}$k=(!$_POST["token"]&&$xd?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Nc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function
523
-select($J,$f=null,$ge=array(),$_=0){global$y;$od=array();$w=array();$d=array();$Fa=array();$tg=array();$K=array();odd('');for($t=0;(!$_||$t<$_)&&($L=$J->fetch_row());$t++){if(!$t){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($x=0;$x<count($L);$x++){$l=$J->fetch_field();$F=$l->name;$fe=$l->orgtable;$ee=$l->orgname;$K[$l->table]=$fe;if($ge&&$y=="sql")$od[$x]=($F=="table"?"table=":($F=="possible_keys"?"indexes=":null));elseif($fe!=""){if(!isset($w[$fe])){$w[$fe]=array();foreach(indexes($fe,$f)as$v){if($v["type"]=="PRIMARY"){$w[$fe]=array_flip($v["columns"]);break;}}$d[$fe]=$w[$fe];}if(isset($d[$fe][$ee])){unset($d[$fe][$ee]);$w[$fe][$ee]=$x;$od[$x]=$fe;}}if($l->charsetnr==63)$Fa[$x]=true;$tg[$x]=$l->type;echo"<th".($fe!=""||$l->name!=$ee?" title='".h(($fe!=""?"$fe.":"").$ee)."'":"").">".h($F).($ge?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($F))):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($L
524
-as$z=>$X){if($X===null)$X="<i>NULL</i>";elseif($Fa[$z]&&!is_utf8($X))$X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>";elseif(!strlen($X))$X="&nbsp;";else{$X=h($X);if($tg[$z]==254)$X="<code>$X</code>";}if(isset($od[$z])&&!$d[$od[$z]]){if($ge&&$y=="sql"){$Q=$L[array_search("table=",$od)];$A=$od[$z].urlencode($ge[$Q]!=""?$ge[$Q]:$Q);}else{$A="edit=".urlencode($od[$z]);foreach($w[$od[$z]]as$Ua=>$x)$A.="&where".urlencode("[".bracket_escape($Ua)."]")."=".urlencode($L[$x]);}$X="<a href='".h(ME.$A)."'>$X</a>";}echo"<td>$X";}}echo($t?"</table>":"<p class='message'>".'No rows.')."\n";return$K;}function
525
-referencable_primary($rf){$K=array();foreach(table_status('',true)as$Pf=>$Q){if($Pf!=$rf&&fk_support($Q)){foreach(fields($Pf)as$l){if($l["primary"]){if($K[$Pf]){unset($K[$Pf]);break;}$K[$Pf]=$l;}}}}return$K;}function
526
-textarea($F,$Y,$M=10,$Ya=80){global$y;echo"<textarea name='$F' rows='$M' cols='$Ya' class='sqlarea jush-$y' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
504
+int32($E) {while ($E >= 2147483648)$E -= 4294967296; while ($E <= -2147483649)$E += 4294967296; return(int) $E; }function
505
+long2str($W, $Ng) {$lf = ''; foreach ($W
506
+as$X)$lf .= pack('V', $X); if ($Ng)return
507
+substr($lf, 0, end($W)); return$lf; }function
508
+str2long($lf, $Ng) {$W = array_values(unpack('V*', str_pad($lf, 4 * ceil(strlen($lf) / 4), "\0"))); if ($Ng)$W[] = strlen($lf); return$W; }function
509
+xxtea_mx($Sg, $Rg, $Lf, $Zc) {return
510
+int32((($Sg >> 5 & 0x7FFFFFF) ^ $Rg << 2) + (($Rg >> 3 & 0x1FFFFFFF) ^ $Sg << 4)) ^ int32(($Lf ^ $Rg) + ($Zc ^ $Sg)); }function
511
+encrypt_string($Ff, $z) {if ($Ff == "")return""; $z = array_values(unpack("V*", pack("H*", md5($z)))); $W = str2long($Ff, true); $E = count($W) - 1; $Sg = $W[$E]; $Rg = $W[0]; $H = floor(6 + 52 / ($E + 1)); $Lf = 0; while ($H-- > 0) {$Lf = int32($Lf + 0x9E3779B9); $Kb = $Lf >> 2 & 3; for ($ne = 0; $ne < $E; $ne++) {$Rg = $W[$ne + 1]; $Fd = xxtea_mx($Sg, $Rg, $Lf, $z[$ne & 3 ^ $Kb]); $Sg = int32($W[$ne] + $Fd); $W[$ne] = $Sg; }$Rg = $W[0]; $Fd = xxtea_mx($Sg, $Rg, $Lf, $z[$ne & 3 ^ $Kb]); $Sg = int32($W[$E] + $Fd); $W[$E] = $Sg; }return
512
+long2str($W, false); }function
513
+decrypt_string($Ff, $z) {if ($Ff == "")return""; if (!$z)return
514
+false; $z = array_values(unpack("V*", pack("H*", md5($z)))); $W = str2long($Ff, false); $E = count($W) - 1; $Sg = $W[$E]; $Rg = $W[0]; $H = floor(6 + 52 / ($E + 1)); $Lf = int32($H * 0x9E3779B9); while ($Lf) {$Kb = $Lf >> 2 & 3; for ($ne = $E; $ne > 0; $ne--) {$Sg = $W[$ne - 1]; $Fd = xxtea_mx($Sg, $Rg, $Lf, $z[$ne & 3 ^ $Kb]); $Rg = int32($W[$ne] - $Fd); $W[$ne] = $Rg; }$Sg = $W[$E]; $Fd = xxtea_mx($Sg, $Rg, $Lf, $z[$ne & 3 ^ $Kb]); $Rg = int32($W[0] - $Fd); $W[0] = $Rg; $Lf = int32($Lf - 0x9E3779B9); }return
515
+long2str($W, true); }$e = ''; $Dc = $_SESSION["token"]; if (!$Dc)$_SESSION["token"] = rand(1, 1e6); $T = get_token(); $ze = array(); if ($_COOKIE["adminer_permanent"]) {foreach (explode(" ", $_COOKIE["adminer_permanent"])as$X) {list($z) = explode(":", $X); $ze[$z] = $X; }}function
516
+add_invalid_login() {global$b; $nc = get_temp_dir() . "/adminer.invalid"; $p = @fopen($nc, "r+"); if (!$p) {$p = @fopen($nc, "w"); if (!$p)return; }flock($p, LOCK_EX); $Tc = unserialize(stream_get_contents($p)); $bg = time(); if ($Tc) {foreach ($Tc
517
+as$Uc=>$X) {if ($X[0] < $bg)unset($Tc[$Uc]); }}$Sc = &$Tc[$b->bruteForceKey()]; if (!$Sc)$Sc = array($bg + 30 * 60, 0); $Sc[1]++; $tf = serialize($Tc); rewind($p); fwrite($p, $tf); ftruncate($p, strlen($tf)); flock($p, LOCK_UN); fclose($p); }$xa = $_POST["auth"]; if ($xa) {$Tc = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); $Sc = $Tc[$b->bruteForceKey()]; $Kd = ($Sc[1] > 30 ? $Sc[0] - time() : 0); if ($Kd > 0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.', 'Too many unsuccessful logins, try again in %d minutes.'), ceil($Kd / 60))); session_regenerate_id(); $Jg = $xa["driver"]; $O = $xa["server"]; $V = $xa["username"]; $we = (string) $xa["password"]; $i = $xa["db"]; set_password($Jg, $O, $V, $we); $_SESSION["db"][$Jg][$O][$V][$i] = true; if ($xa["permanent"]) {$z = base64_encode($Jg) . "-" . base64_encode($O) . "-" . base64_encode($V) . "-" . base64_encode($i); $Je = $b->permanentLogin(true); $ze[$z] = "$z:" . base64_encode($Je ? encrypt_string($we, $Je) : ""); cookie("adminer_permanent", implode(" ", $ze)); }if (count($_POST) == 1 || DRIVER != $Jg || SERVER != $O || $_GET["username"] !== $V || DB != $i)redirect(auth_url($Jg, $O, $V, $i)); }elseif ($_POST["logout"]) {if ($Dc && !verify_token()) {page_header('Logout', 'Invalid CSRF token. Send the form again.'); page_footer("db"); exit; } else {foreach (array("pwds", "db", "dbs", "queries")as$z)set_session($z, null); unset_permanent(); redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), 'Logout successful.'); }}elseif ($ze && !$_SESSION["pwds"]) {session_regenerate_id(); $Je = $b->permanentLogin(); foreach ($ze
518
+as$z=>$X) {list(,$Qa) = explode(":", $X); list($Jg, $O, $V, $i) = array_map('base64_decode', explode("-", $z)); set_password($Jg, $O, $V, decrypt_string(base64_decode($Qa), $Je)); $_SESSION["db"][$Jg][$O][$V][$i] = true; }}function
519
+unset_permanent() {global$ze; foreach ($ze
520
+as$z=>$X) {list($Jg, $O, $V, $i) = array_map('base64_decode', explode("-", $z)); if ($Jg == DRIVER && $O == SERVER && $V == $_GET["username"] && $i == DB)unset($ze[$z]); }cookie("adminer_permanent", implode(" ", $ze)); }function
521
+auth_error($k) {global$b, $Dc; $k = h($k); $wf = session_name(); if (isset($_GET["username"])) {header("HTTP/1.1 403 Forbidden"); if (($_COOKIE[$wf] || $_GET[$wf]) && !$Dc)$k = 'Session expired, please login again.'; else {add_invalid_login(); $we = get_password(); if ($we !== null) {if ($we === false)$k .= '<br>' . sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.', '<code>permanentLogin()</code>'); set_password(DRIVER, SERVER, $_GET["username"], null); }unset_permanent(); }}if (!$_COOKIE[$wf] && $_GET[$wf] && ini_bool("session.use_only_cookies"))$k = 'Session support must be enabled.'; $pe = session_get_cookie_params(); cookie("adminer_key", ($_COOKIE["adminer_key"] ? $_COOKIE["adminer_key"] : rand_string()), $pe["lifetime"]); page_header('Login', $k, null); echo"<form action='' method='post'>\n"; $b->loginForm(); echo"<div>"; hidden_fields($_POST, array("auth")); echo"</div>\n", "</form>\n"; page_footer("auth"); exit; }if (isset($_GET["username"])) {if (!class_exists("Min_DB")) {unset($_SESSION["pwds"][DRIVER]); unset_permanent(); page_header('No extension', sprintf('None of the supported PHP extensions (%s) are available.', implode(", ", $Ee)), false); page_footer("auth"); exit; }$e = connect(); }$j = new
522
+Min_Driver($e); if (!is_object($e) || ($pd = $b->login($_GET["username"], get_password())) !== true)auth_error((is_string($e) ? $e : (is_string($pd) ? $pd : 'Invalid credentials.'))); if ($xa && $_POST["token"])$_POST["token"] = $T; $k = ''; if ($_POST) {if (!verify_token()) {$Nc = "max_input_vars"; $xd = ini_get($Nc); if (extension_loaded("suhosin")) {foreach (array("suhosin.request.max_vars", "suhosin.post.max_vars")as$z) {$X = ini_get($z); if ($X && (!$xd || $X < $xd)) {$Nc = $z; $xd = $X; }}}$k = (!$_POST["token"] && $xd ? sprintf('Maximum number of allowed fields exceeded. Please increase %s.', "'$Nc'") : 'Invalid CSRF token. Send the form again.' . ' ' . 'If you did not send this request from Adminer then close this page.'); }}elseif ($_SERVER["REQUEST_METHOD"] == "POST") {$k = sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.', "'post_max_size'"); if (isset($_GET["sql"]))$k .= ' ' . 'You can upload a big SQL file via FTP and import it from server.'; }if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !== false)session_write_close(); function
523
+select($J, $f = null, $ge = array(), $_ = 0) {global$y; $od = array(); $w = array(); $d = array(); $Fa = array(); $tg = array(); $K = array(); odd(''); for ($t = 0; (!$_ || $t < $_) && ($L = $J->fetch_row()); $t++) {if (!$t) {echo"<table cellspacing='0' class='nowrap'>\n", "<thead><tr>"; for ($x = 0; $x < count($L); $x++) {$l = $J->fetch_field(); $F = $l->name; $fe = $l->orgtable; $ee = $l->orgname; $K[$l->table] = $fe; if ($ge && $y == "sql")$od[$x] = ($F == "table" ? "table=" : ($F == "possible_keys" ? "indexes=" : null)); elseif ($fe != "") {if (!isset($w[$fe])) {$w[$fe] = array(); foreach (indexes($fe, $f)as$v) {if ($v["type"] == "PRIMARY") {$w[$fe] = array_flip($v["columns"]); break; }}$d[$fe] = $w[$fe]; }if (isset($d[$fe][$ee])) {unset($d[$fe][$ee]); $w[$fe][$ee] = $x; $od[$x] = $fe; }}if ($l->charsetnr == 63)$Fa[$x] = true; $tg[$x] = $l->type; echo"<th" . ($fe != "" || $l->name != $ee ? " title='" . h(($fe != "" ? "$fe." : "") . $ee) . "'" : "") . ">" . h($F) . ($ge ? doc_link(array('sql'=>"explain-output.html#explain_" . strtolower($F))) : ""); }echo"</thead>\n"; }echo"<tr" . odd() . ">"; foreach ($L
524
+as$z=>$X) {if ($X === null)$X = "<i>NULL</i>"; elseif ($Fa[$z] && !is_utf8($X))$X = "<i>" . lang(array('%d byte', '%d bytes'), strlen($X)) . "</i>"; elseif (!strlen($X))$X = "&nbsp;"; else {$X = h($X); if ($tg[$z] == 254)$X = "<code>$X</code>"; }if (isset($od[$z]) && !$d[$od[$z]]) {if ($ge && $y == "sql") {$Q = $L[array_search("table=", $od)]; $A = $od[$z] . urlencode($ge[$Q] != "" ? $ge[$Q] : $Q); } else {$A = "edit=" . urlencode($od[$z]); foreach ($w[$od[$z]]as$Ua=>$x)$A .= "&where" . urlencode("[" . bracket_escape($Ua) . "]") . "=" . urlencode($L[$x]); }$X = "<a href='" . h(ME . $A) . "'>$X</a>"; }echo"<td>$X"; }}echo($t ? "</table>" : "<p class='message'>" . 'No rows.') . "\n"; return$K; }function
525
+referencable_primary($rf) {$K = array(); foreach (table_status('', true)as$Pf=>$Q) {if ($Pf != $rf && fk_support($Q)) {foreach (fields($Pf)as$l) {if ($l["primary"]) {if ($K[$Pf]) {unset($K[$Pf]); break; }$K[$Pf] = $l; }}}}return$K; }function
526
+textarea($F, $Y, $M = 10, $Ya = 80) {global$y; echo"<textarea name='$F' rows='$M' cols='$Ya' class='sqlarea jush-$y' spellcheck='false' wrap='off'>"; if (is_array($Y)) {foreach ($Y
527 527
 as$X)echo
528
-h($X[0])."\n\n\n";}else
528
+h($X[0]) . "\n\n\n"; } else
529 529
 echo
530
-h($Y);echo"</textarea>";}function
531
-edit_type($z,$l,$Xa,$o=array()){global$Hf,$tg,$_g,$Vd;$U=$l["type"];echo'<td><select name="',h($z),'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',on_help("getTarget(event).value",1),'>';if($U&&!isset($tg[$U])&&!isset($o[$U]))array_unshift($Hf,$U);if($o)$Hf['Foreign keys']=$o;echo
532
-optionlist($Hf,$U),'</select>
533
-<td><input name="',h($z),'[length]" value="',h($l["length"]),'" size="3" onfocus="editingLengthFocus(this);"',(!$l["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":""),' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">';echo"<select name='".h($z)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'").'><option value="">('.'collation'.')'.optionlist($Xa,$l["collation"]).'</select>',($_g?"<select name='".h($z)."[unsigned]'".(!$U||preg_match('~((^|[^o])int|float|double|decimal)$~',$U)?"":" class='hidden'").'><option>'.optionlist($_g,$l["unsigned"]).'</select>':''),(isset($l['on_update'])?"<select name='".h($z)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),$l["on_update"]).'</select>':''),($o?"<select name='".h($z)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",$Vd),$l["on_delete"])."</select> ":" ");}function
534
-process_length($ld){global$Vb;return(preg_match("~^\\s*\\(?\\s*$Vb(?:\\s*,\\s*$Vb)*+\\s*\\)?\\s*\$~",$ld)&&preg_match_all("~$Vb~",$ld,$rd)?"(".implode(",",$rd[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$ld)));}function
535
-process_type($l,$Va="COLLATE"){global$_g;return" $l[type]".process_length($l["length"]).(preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&in_array($l["unsigned"],$_g)?" $l[unsigned]":"").(preg_match('~char|text|enum|set~',$l["type"])&&$l["collation"]?" $Va ".q($l["collation"]):"");}function
536
-process_field($l,$rg){global$y;$vb=$l["default"];return
537
-array(idf_escape(trim($l["field"])),process_type($rg),($l["null"]?" NULL":" NOT NULL"),(isset($vb)?" DEFAULT ".((preg_match('~time~',$l["type"])&&preg_match('~^CURRENT_TIMESTAMP$~i',$vb))||($y=="sqlite"&&preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i',$vb))||($l["type"]=="bit"&&preg_match("~^([0-9]+|b'[0-1]+')\$~",$vb))||($y=="pgsql"&&preg_match("~^[a-z]+\\(('[^']*')+\\)\$~",$vb))?$vb:q($vb)):""),(preg_match('~timestamp|datetime~',$l["type"])&&$l["on_update"]?" ON UPDATE $l[on_update]":""),(support("comment")&&$l["comment"]!=""?" COMMENT ".q($l["comment"]):""),($l["auto_increment"]?auto_increment():null),);}function
538
-type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$U))return" class='$z'";}}function
539
-edit_fields($m,$Xa,$U="TABLE",$o=array(),$cb=false){global$e,$Oc;$m=array_values($m);echo'<thead><tr class="wrap">
540
-';if($U=="PROCEDURE"){echo'<td>&nbsp;';}echo'<th>',($U=="TABLE"?'Column name':'Parameter name'),'<td>Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
530
+h($Y); echo"</textarea>"; }function
531
+edit_type($z, $l, $Xa, $o = array()) {global$Hf, $tg, $_g, $Vd; $U = $l["type"]; echo'<td><select name="', h($z), '[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"', on_help("getTarget(event).value", 1), '>'; if ($U && !isset($tg[$U]) && !isset($o[$U]))array_unshift($Hf, $U); if ($o)$Hf['Foreign keys'] = $o; echo
532
+optionlist($Hf, $U), '</select>
533
+<td><input name="',h($z), '[length]" value="', h($l["length"]), '" size="3" onfocus="editingLengthFocus(this);"', (!$l["length"] && preg_match('~var(char|binary)$~', $U) ? " class='required'" : ""), ' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">'; echo"<select name='" . h($z) . "[collation]'" . (preg_match('~(char|text|enum|set)$~', $U) ? "" : " class='hidden'") . '><option value="">(' . 'collation' . ')' . optionlist($Xa, $l["collation"]) . '</select>', ($_g ? "<select name='" . h($z) . "[unsigned]'" . (!$U || preg_match('~((^|[^o])int|float|double|decimal)$~', $U) ? "" : " class='hidden'") . '><option>' . optionlist($_g, $l["unsigned"]) . '</select>' : ''), (isset($l['on_update']) ? "<select name='" . h($z) . "[on_update]'" . (preg_match('~timestamp|datetime~', $U) ? "" : " class='hidden'") . '>' . optionlist(array(""=>"(" . 'ON UPDATE' . ")", "CURRENT_TIMESTAMP"), $l["on_update"]) . '</select>' : ''), ($o ? "<select name='" . h($z) . "[on_delete]'" . (preg_match("~`~", $U) ? "" : " class='hidden'") . "><option value=''>(" . 'ON DELETE' . ")" . optionlist(explode("|", $Vd), $l["on_delete"]) . "</select> " : " "); }function
534
+process_length($ld) {global$Vb; return(preg_match("~^\\s*\\(?\\s*$Vb(?:\\s*,\\s*$Vb)*+\\s*\\)?\\s*\$~", $ld) && preg_match_all("~$Vb~", $ld, $rd) ? "(" . implode(",", $rd[0]) . ")" : preg_replace('~^[0-9].*~', '(\0)', preg_replace('~[^-0-9,+()[\]]~', '', $ld))); }function
535
+process_type($l, $Va = "COLLATE") {global$_g; return" $l[type]" . process_length($l["length"]) . (preg_match('~(^|[^o])int|float|double|decimal~', $l["type"]) && in_array($l["unsigned"], $_g) ? " $l[unsigned]" : "") . (preg_match('~char|text|enum|set~', $l["type"]) && $l["collation"] ? " $Va " . q($l["collation"]) : ""); }function
536
+process_field($l, $rg) {global$y; $vb = $l["default"]; return
537
+array(idf_escape(trim($l["field"])), process_type($rg), ($l["null"] ? " NULL" : " NOT NULL"), (isset($vb) ? " DEFAULT " . ((preg_match('~time~', $l["type"]) && preg_match('~^CURRENT_TIMESTAMP$~i', $vb)) || ($y == "sqlite" && preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i', $vb)) || ($l["type"] == "bit" && preg_match("~^([0-9]+|b'[0-1]+')\$~", $vb)) || ($y == "pgsql" && preg_match("~^[a-z]+\\(('[^']*')+\\)\$~", $vb)) ? $vb : q($vb)) : ""), (preg_match('~timestamp|datetime~', $l["type"]) && $l["on_update"] ? " ON UPDATE $l[on_update]" : ""), (support("comment") && $l["comment"] != "" ? " COMMENT " . q($l["comment"]) : ""), ($l["auto_increment"] ? auto_increment() : null),); }function
538
+type_class($U) {foreach (array('char'=>'text', 'date'=>'time|year', 'binary'=>'blob', 'enum'=>'set',)as$z=>$X) {if (preg_match("~$z|$X~", $U))return" class='$z'"; }}function
539
+edit_fields($m, $Xa, $U = "TABLE", $o = array(), $cb = false) {global$e, $Oc; $m = array_values($m); echo'<thead><tr class="wrap">
540
+';if ($U == "PROCEDURE") {echo'<td>&nbsp;'; }echo'<th>', ($U == "TABLE" ? 'Column name' : 'Parameter name'), '<td>Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
541 541
 <td>Length
542 542
 <td>Options
543
-';if($U=="TABLE"){echo'<td>NULL
544
-<td><input type="radio" name="auto_increment_col" value=""><acronym title="Auto Increment">AI</acronym>',doc_link(array('sql'=>"example-auto-increment.html",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),'<td>Default value
545
-',(support("comment")?"<td".($cb?"":" class='hidden'").">".'Comment':"");}echo'<td>',"<input type='image' class='icon' name='add[".(support("move_col")?0:count($m))."]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='".'Add next'."'>",'<script type="text/javascript">row_count = ',count($m),';</script>
543
+';if ($U == "TABLE") {echo'<td>NULL
544
+<td><input type="radio" name="auto_increment_col" value=""><acronym title="Auto Increment">AI</acronym>',doc_link(array('sql'=>"example-auto-increment.html", 'sqlite'=>"autoinc.html", 'pgsql'=>"datatype.html#DATATYPE-SERIAL", 'mssql'=>"ms186775.aspx",)), '<td>Default value
545
+',(support("comment") ? "<td" . ($cb ? "" : " class='hidden'") . ">" . 'Comment' : ""); }echo'<td>', "<input type='image' class='icon' name='add[" . (support("move_col") ? 0 : count($m)) . "]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='" . 'Add next' . "'>", '<script type="text/javascript">row_count = ', count($m), ';</script>
546 546
 </thead>
547 547
 <tbody onkeydown="return editingKeydown(event);">
548
-';foreach($m
549
-as$t=>$l){$t++;$he=$l[($_POST?"orig":"field")];$Ab=(isset($_POST["add"][$t-1])||(isset($l["field"])&&!$_POST["drop_col"][$t]))&&(support("drop_col")||$he=="");echo'<tr',($Ab?"":" style='display: none;'"),'>
550
-',($U=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",$Oc),$l["inout"]):""),'<th>';if($Ab){echo'<input name="fields[',$t,'][field]" value="',h($l["field"]),'" onchange="editingNameChange(this);',($l["field"]!=""||count($m)>1?'':' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'),'" maxlength="64" autocapitalize="off">';}echo'<input type="hidden" name="fields[',$t,'][orig]" value="',h($he),'">
551
-';edit_type("fields[$t]",$l,$Xa,$o);if($U=="TABLE"){echo'<td>',checkbox("fields[$t][null]",1,$l["null"],"","","block"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$t,'"';if($l["auto_increment"]){echo' checked';}?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php
548
+';foreach ($m
549
+as$t=>$l) {$t++; $he = $l[($_POST ? "orig" : "field")]; $Ab = (isset($_POST["add"][$t - 1]) || (isset($l["field"]) && !$_POST["drop_col"][$t])) && (support("drop_col") || $he == ""); echo'<tr', ($Ab ? "" : " style='display: none;'"), '>
550
+',($U == "PROCEDURE" ? "<td>" . html_select("fields[$t][inout]", explode("|", $Oc), $l["inout"]) : ""), '<th>'; if ($Ab) {echo'<input name="fields[', $t, '][field]" value="', h($l["field"]), '" onchange="editingNameChange(this);', ($l["field"] != "" || count($m) > 1 ? '' : ' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'), '" maxlength="64" autocapitalize="off">'; }echo'<input type="hidden" name="fields[', $t, '][orig]" value="', h($he), '">
551
+';edit_type("fields[$t]", $l, $Xa, $o); if ($U == "TABLE") {echo'<td>', checkbox("fields[$t][null]", 1, $l["null"], "", "", "block"), '<td><label class="block"><input type="radio" name="auto_increment_col" value="', $t, '"'; if ($l["auto_increment"]) {echo' checked'; }?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php
552 552
 echo
553
-checkbox("fields[$t][has_default]",1,$l["has_default"]),'<input name="fields[',$t,'][default]" value="',h($l["default"]),'" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;">
554
-',(support("comment")?"<td".($cb?"":" class='hidden'")."><input name='fields[$t][comment]' value='".h($l["comment"])."' maxlength='".($e->server_info>=5.5?1024:255)."'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='".'Add next'."' onclick='return !editingAddRow(this, 1);'>&nbsp;"."<input type='image' class='icon' name='up[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=up.gif&amp;version=4.2.5&amp;driver=mysql' alt='^' title='".'Move up'."'>&nbsp;"."<input type='image' class='icon' name='down[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=down.gif&amp;version=4.2.5&amp;driver=mysql' alt='v' title='".'Move down'."'>&nbsp;":""),($he==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&amp;version=4.2.5&amp;driver=mysql' alt='x' title='".'Remove'."' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">":""),"\n";}}function
555
-process_fields(&$m){ksort($m);$Od=0;if($_POST["up"]){$fd=0;foreach($m
556
-as$z=>$l){if(key($_POST["up"])==$z){unset($m[$z]);array_splice($m,$fd,0,array($l));break;}if(isset($l["field"]))$fd=$Od;$Od++;}}elseif($_POST["down"]){$uc=false;foreach($m
557
-as$z=>$l){if(isset($l["field"])&&$uc){unset($m[key($_POST["down"])]);array_splice($m,$Od,0,array($uc));break;}if(key($_POST["down"])==$z)$uc=$l;$Od++;}}elseif($_POST["add"]){$m=array_values($m);array_splice($m,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
558
-false;return
559
-true;}function
560
-normalize_enum($C){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),'\\'))."'";}function
561
-grant($r,$Le,$d,$Ud){if(!$Le)return
562
-true;if($Le==array("ALL PRIVILEGES","GRANT OPTION"))return($r=="GRANT"?queries("$r ALL PRIVILEGES$Ud WITH GRANT OPTION"):queries("$r ALL PRIVILEGES$Ud")&&queries("$r GRANT OPTION$Ud"));return
563
-queries("$r ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$d, ",$Le).$d).$Ud);}function
564
-drop_create($Fb,$g,$Gb,$Yf,$Hb,$B,$Ad,$zd,$_d,$Rd,$Id){if($_POST["drop"])query_redirect($Fb,$B,$Ad);elseif($Rd=="")query_redirect($g,$B,$_d);elseif($Rd!=$Id){$lb=queries($g);queries_redirect($B,$zd,$lb&&queries($Fb));if($lb)queries($Gb);}else
565
-queries_redirect($B,$zd,queries($Yf)&&queries($Hb)&&queries($Fb)&&queries($g));}function
566
-create_trigger($Ud,$L){global$y;$dg=" $L[Timing] $L[Event]".($L["Event"]=="UPDATE OF"?" ".idf_escape($L["Of"]):"");return"CREATE TRIGGER ".idf_escape($L["Trigger"]).($y=="mssql"?$Ud.$dg:$dg.$Ud).rtrim(" $L[Type]\n$L[Statement]",";").";";}function
567
-create_routine($if,$L){global$Oc;$P=array();$m=(array)$L["fields"];ksort($m);foreach($m
568
-as$l){if($l["field"]!="")$P[]=(preg_match("~^($Oc)\$~",$l["inout"])?"$l[inout] ":"").idf_escape($l["field"]).process_type($l,"CHARACTER SET");}return"CREATE $if ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").rtrim("\n$L[definition]",";").";";}function
569
-remove_definer($I){return
570
-preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$I);}function
571
-format_foreign_key($n){global$Vd;return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$n["source"])).") REFERENCES ".table($n["table"])." (".implode(", ",array_map('idf_escape',$n["target"])).")".(preg_match("~^($Vd)\$~",$n["on_delete"])?" ON DELETE $n[on_delete]":"").(preg_match("~^($Vd)\$~",$n["on_update"])?" ON UPDATE $n[on_update]":"");}function
572
-tar_file($nc,$ig){$K=pack("a100a8a8a8a12a12",$nc,644,0,0,decoct($ig->size),decoct(time()));$Pa=8*32;for($t=0;$t<strlen($K);$t++)$Pa+=ord($K[$t]);$K.=sprintf("%06o",$Pa)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$ig->send();echo
573
-str_repeat("\0",511-($ig->size+511)%512);}function
574
-ini_bytes($Nc){$X=ini_get($Nc);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
575
-doc_link($xe){global$y,$e;$Cg=array('sql'=>"http://dev.mysql.com/doc/refman/".substr($e->server_info,0,3)."/en/",'sqlite'=>"http://www.sqlite.org/",'pgsql'=>"http://www.postgresql.org/docs/".substr($e->server_info,0,3)."/static/",'mssql'=>"http://msdn.microsoft.com/library/",'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);return($xe[$y]?"<a href='$Cg[$y]$xe[$y]' target='_blank' rel='noreferrer'><sup>?</sup></a>":"");}function
576
-ob_gzencode($Gf){return
577
-gzencode($Gf);}function
578
-db_size($i){global$e;if(!$e->select_db($i))return"?";$K=0;foreach(table_status()as$R)$K+=$R["Data_length"]+$R["Index_length"];return
579
-format_number($K);}function
580
-set_utf8mb4($g){global$e;static$P=false;if(!$P&&preg_match('~\butf8mb4~i',$g)){$P=true;echo"SET NAMES ".charset($e).";\n\n";}}function
581
-connect_error(){global$b,$e,$T,$k,$Eb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$k)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$k,false);echo"<p class='links'>\n";foreach(array('database'=>'Create new database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$z=>$X){if(support($z))echo"<a href='".h(ME)."$z='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',$Eb[DRIVER],"<b>".h($e->server_info)."</b>","<b>$e->extension</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$h=$b->databases();if($h){$of=support("scheme");$Xa=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(support("database")?"<td>&nbsp;":"")."<th>".'Database'." - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>"."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1' onclick=\"return !ajaxSetHtml('".h(js_escape(ME))."script=connect');\">".'Compute'."</a>"."</thead>\n";$h=($_GET["dbsize"]?count_tables($h):array_flip($h));foreach($h
582
-as$i=>$S){$hf=h(ME)."db=".urlencode($i);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$i,in_array($i,(array)$_POST["db"])):""),"<th><a href='$hf'>".h($i)."</a>";$Wa=nbsp(db_collation($i,$Xa));echo"<td>".(support("database")?"<a href='$hf".($of?"&amp;ns=":"")."&amp;database=' title='".'Alter database'."'>$Wa</a>":$Wa),"<td align='right'><a href='$hf&amp;schema=' id='tables-".h($i)."' title='".'Database schema'."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($i)."'>".($_GET["dbsize"]?db_size($i):"?"),"\n";}echo"</table>\n",(support("database")?"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n"."<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$e->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Vd="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
583
-TmpFile{var$handler;var$size;function
584
-__construct(){$this->handler=tmpfile();}function
585
-write($gb){$this->size+=strlen($gb);fwrite($this->handler,$gb);}function
586
-send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Vb="'(?:''|[^'\\\\]|\\\\.)*'";$Oc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$j->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$m=fields($a);if(!$m)$k=error();$R=table_status1($a,true);page_header(($m&&is_view($R)?'View':'Table').": ".h($a),$k);$b->selectLinks($R);$bb=$R["Comment"];if($bb!="")echo"<p>".'Comment'.": ".h($bb)."\n";if($m){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";foreach($m
587
-as$l){echo"<tr".odd()."><th>".h($l["field"]),"<td><span title='".h($l["collation"])."'>".h($l["full_type"])."</span>",($l["null"]?" <i>NULL</i>":""),($l["auto_increment"]?" <i>".'Auto Increment'."</i>":""),(isset($l["default"])?" <span title='".'Default value'."'>[<b>".h($l["default"])."</b>]</span>":""),(support("comment")?"<td>".nbsp($l["comment"]):""),"\n";}echo"</table>\n";}if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w){echo"<table cellspacing='0'>\n";foreach($w
588
-as$F=>$v){ksort($v["columns"]);$Ie=array();foreach($v["columns"]as$z=>$X)$Ie[]="<i>".h($X)."</i>".($v["lengths"][$z]?"(".$v["lengths"][$z].")":"").($v["descs"][$z]?" DESC":"");echo"<tr title='".h($F)."'><th>$v[type]<td>".implode(", ",$Ie)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$o=foreign_keys($a);if($o){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td>&nbsp;</thead>\n";foreach($o
589
-as$F=>$n){echo"<tr title='".h($F)."'>","<th><i>".implode("</i>, <i>",array_map('h',$n["source"]))."</i>","<td><a href='".h($n["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($n["db"]),ME):($n["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($n["ns"]),ME):ME))."table=".urlencode($n["table"])."'>".($n["db"]!=""?"<b>".h($n["db"])."</b>.":"").($n["ns"]!=""?"<b>".h($n["ns"])."</b>.":"").h($n["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$n["target"]))."</i>)","<td>".nbsp($n["on_delete"])."\n","<td>".nbsp($n["on_update"])."\n",'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($F)).'">'.'Alter'.'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$qg=triggers($a);if($qg){echo"<table cellspacing='0'>\n";foreach($qg
590
-as$z=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Qf=array();$Rf=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$rd,PREG_SET_ORDER);foreach($rd
591
-as$t=>$C){$Qf[$C[1]]=array($C[2],$C[3]);$Rf[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$kg=0;$Ca=-1;$nf=array();$Ye=array();$jd=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$Be=0;$nf[$Q]["fields"]=array();foreach(fields($Q)as$F=>$l){$Be+=1.25;$l["pos"]=$Be;$nf[$Q]["fields"][$F]=$l;}$nf[$Q]["pos"]=($Qf[$Q]?$Qf[$Q]:array($kg,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$hd=$Ca;if($Qf[$Q][1]||$Qf[$X["table"]][1])$hd=min(floatval($Qf[$Q][1]),floatval($Qf[$X["table"]][1]))-1;else$Ca-=.1;while($jd[(string)$hd])$hd-=.0001;$nf[$Q]["references"][$X["table"]][(string)$hd]=array($X["source"],$X["target"]);$Ye[$X["table"]][$Q][(string)$hd]=$X["target"];$jd[(string)$hd]=true;}}$kg=max($kg,$nf[$Q]["pos"][0]+2.5+$Be);}echo'<div id="schema" style="height: ',$kg,'em;" onselectstart="return false;">
553
+checkbox("fields[$t][has_default]", 1, $l["has_default"]), '<input name="fields[', $t, '][default]" value="', h($l["default"]), '" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;">
554
+',(support("comment") ? "<td" . ($cb ? "" : " class='hidden'") . "><input name='fields[$t][comment]' value='" . h($l["comment"]) . "' maxlength='" . ($e->server_info >= 5.5 ? 1024 : 255) . "'>" : ""); }echo"<td>", (support("move_col") ? "<input type='image' class='icon' name='add[$t]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='" . 'Add next' . "' onclick='return !editingAddRow(this, 1);'>&nbsp;" . "<input type='image' class='icon' name='up[$t]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=up.gif&amp;version=4.2.5&amp;driver=mysql' alt='^' title='" . 'Move up' . "'>&nbsp;" . "<input type='image' class='icon' name='down[$t]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=down.gif&amp;version=4.2.5&amp;driver=mysql' alt='v' title='" . 'Move down' . "'>&nbsp;" : ""), ($he == "" || support("drop_col") ? "<input type='image' class='icon' name='drop_col[$t]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=cross.gif&amp;version=4.2.5&amp;driver=mysql' alt='x' title='" . 'Remove' . "' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">" : ""), "\n"; }}function
555
+process_fields(&$m) {ksort($m); $Od = 0; if ($_POST["up"]) {$fd = 0; foreach ($m
556
+as$z=>$l) {if (key($_POST["up"]) == $z) {unset($m[$z]); array_splice($m, $fd, 0, array($l)); break; }if (isset($l["field"]))$fd = $Od; $Od++; }}elseif ($_POST["down"]) {$uc = false; foreach ($m
557
+as$z=>$l) {if (isset($l["field"]) && $uc) {unset($m[key($_POST["down"])]); array_splice($m, $Od, 0, array($uc)); break; }if (key($_POST["down"]) == $z)$uc = $l; $Od++; }}elseif ($_POST["add"]) {$m = array_values($m); array_splice($m, key($_POST["add"]), 0, array(array())); }elseif (!$_POST["drop_col"])return
558
+false; return
559
+true; }function
560
+normalize_enum($C) {return"'" . str_replace("'", "''", addcslashes(stripcslashes(str_replace($C[0][0] . $C[0][0], $C[0][0], substr($C[0], 1, -1))), '\\')) . "'"; }function
561
+grant($r, $Le, $d, $Ud) {if (!$Le)return
562
+true; if ($Le == array("ALL PRIVILEGES", "GRANT OPTION"))return($r == "GRANT" ? queries("$r ALL PRIVILEGES$Ud WITH GRANT OPTION") : queries("$r ALL PRIVILEGES$Ud") && queries("$r GRANT OPTION$Ud")); return
563
+queries("$r " . preg_replace('~(GRANT OPTION)\\([^)]*\\)~', '\\1', implode("$d, ", $Le) . $d) . $Ud); }function
564
+drop_create($Fb, $g, $Gb, $Yf, $Hb, $B, $Ad, $zd, $_d, $Rd, $Id) {if ($_POST["drop"])query_redirect($Fb, $B, $Ad); elseif ($Rd == "")query_redirect($g, $B, $_d); elseif ($Rd != $Id) {$lb = queries($g); queries_redirect($B, $zd, $lb && queries($Fb)); if ($lb)queries($Gb); } else
565
+queries_redirect($B, $zd, queries($Yf) && queries($Hb) && queries($Fb) && queries($g)); }function
566
+create_trigger($Ud, $L) {global$y; $dg = " $L[Timing] $L[Event]" . ($L["Event"] == "UPDATE OF" ? " " . idf_escape($L["Of"]) : ""); return"CREATE TRIGGER " . idf_escape($L["Trigger"]) . ($y == "mssql" ? $Ud . $dg : $dg . $Ud) . rtrim(" $L[Type]\n$L[Statement]", ";") . ";"; }function
567
+create_routine($if, $L) {global$Oc; $P = array(); $m = (array) $L["fields"]; ksort($m); foreach ($m
568
+as$l) {if ($l["field"] != "")$P[] = (preg_match("~^($Oc)\$~", $l["inout"]) ? "$l[inout] " : "") . idf_escape($l["field"]) . process_type($l, "CHARACTER SET"); }return"CREATE $if " . idf_escape(trim($L["name"])) . " (" . implode(", ", $P) . ")" . (isset($_GET["function"]) ? " RETURNS" . process_type($L["returns"], "CHARACTER SET") : "") . ($L["language"] ? " LANGUAGE $L[language]" : "") . rtrim("\n$L[definition]", ";") . ";"; }function
569
+remove_definer($I) {return
570
+preg_replace('~^([A-Z =]+) DEFINER=`' . preg_replace('~@(.*)~', '`@`(%|\\1)', logged_user()) . '`~', '\\1', $I); }function
571
+format_foreign_key($n) {global$Vd; return" FOREIGN KEY (" . implode(", ", array_map('idf_escape', $n["source"])) . ") REFERENCES " . table($n["table"]) . " (" . implode(", ", array_map('idf_escape', $n["target"])) . ")" . (preg_match("~^($Vd)\$~", $n["on_delete"]) ? " ON DELETE $n[on_delete]" : "") . (preg_match("~^($Vd)\$~", $n["on_update"]) ? " ON UPDATE $n[on_update]" : ""); }function
572
+tar_file($nc, $ig) {$K = pack("a100a8a8a8a12a12", $nc, 644, 0, 0, decoct($ig->size), decoct(time())); $Pa = 8 * 32; for ($t = 0; $t < strlen($K); $t++)$Pa += ord($K[$t]); $K .= sprintf("%06o", $Pa) . "\0 "; echo$K, str_repeat("\0", 512 - strlen($K)); $ig->send(); echo
573
+str_repeat("\0", 511 - ($ig->size + 511) % 512); }function
574
+ini_bytes($Nc) {$X = ini_get($Nc); switch (strtolower(substr($X, -1))) {case'g':$X *= 1024; case'm':$X *= 1024; case'k':$X *= 1024; }return$X; }function
575
+doc_link($xe) {global$y, $e; $Cg = array('sql'=>"http://dev.mysql.com/doc/refman/" . substr($e->server_info, 0, 3) . "/en/", 'sqlite'=>"http://www.sqlite.org/", 'pgsql'=>"http://www.postgresql.org/docs/" . substr($e->server_info, 0, 3) . "/static/", 'mssql'=>"http://msdn.microsoft.com/library/", 'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",); return($xe[$y] ? "<a href='$Cg[$y]$xe[$y]' target='_blank' rel='noreferrer'><sup>?</sup></a>" : ""); }function
576
+ob_gzencode($Gf) {return
577
+gzencode($Gf); }function
578
+db_size($i) {global$e; if (!$e->select_db($i))return"?"; $K = 0; foreach (table_status()as$R)$K += $R["Data_length"] + $R["Index_length"]; return
579
+format_number($K); }function
580
+set_utf8mb4($g) {global$e; static$P = false; if (!$P && preg_match('~\butf8mb4~i', $g)) {$P = true; echo"SET NAMES " . charset($e) . ";\n\n"; }}function
581
+connect_error() {global$b, $e, $T, $k, $Eb; if (DB != "") {header("HTTP/1.1 404 Not Found"); page_header('Database' . ": " . h(DB), 'Invalid database.', true); } else {if ($_POST["db"] && !$k)queries_redirect(substr(ME, 0, -1), 'Databases have been dropped.', drop_databases($_POST["db"])); page_header('Select database', $k, false); echo"<p class='links'>\n"; foreach (array('database'=>'Create new database', 'privileges'=>'Privileges', 'processlist'=>'Process list', 'variables'=>'Variables', 'status'=>'Status',)as$z=>$X) {if (support($z))echo"<a href='" . h(ME) . "$z='>$X</a>\n"; }echo"<p>" . sprintf('%s version: %s through PHP extension %s', $Eb[DRIVER], "<b>" . h($e->server_info) . "</b>", "<b>$e->extension</b>") . "\n", "<p>" . sprintf('Logged as: %s', "<b>" . h(logged_user()) . "</b>") . "\n"; $h = $b->databases(); if ($h) {$of = support("scheme"); $Xa = collations(); echo"<form action='' method='post'>\n", "<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n", "<thead><tr>" . (support("database") ? "<td>&nbsp;" : "") . "<th>" . 'Database' . " - <a href='" . h(ME) . "refresh=1'>" . 'Refresh' . "</a>" . "<td>" . 'Collation' . "<td>" . 'Tables' . "<td>" . 'Size' . " - <a href='" . h(ME) . "dbsize=1' onclick=\"return !ajaxSetHtml('" . h(js_escape(ME)) . "script=connect');\">" . 'Compute' . "</a>" . "</thead>\n"; $h = ($_GET["dbsize"] ? count_tables($h) : array_flip($h)); foreach ($h
582
+as$i=>$S) {$hf = h(ME) . "db=" . urlencode($i); echo"<tr" . odd() . ">" . (support("database") ? "<td>" . checkbox("db[]", $i, in_array($i, (array) $_POST["db"])) : ""), "<th><a href='$hf'>" . h($i) . "</a>"; $Wa = nbsp(db_collation($i, $Xa)); echo"<td>" . (support("database") ? "<a href='$hf" . ($of ? "&amp;ns=" : "") . "&amp;database=' title='" . 'Alter database' . "'>$Wa</a>" : $Wa), "<td align='right'><a href='$hf&amp;schema=' id='tables-" . h($i) . "' title='" . 'Database schema' . "'>" . ($_GET["dbsize"] ? $S : "?") . "</a>", "<td align='right' id='size-" . h($i) . "'>" . ($_GET["dbsize"] ? db_size($i) : "?"), "\n"; }echo"</table>\n", (support("database") ? "<fieldset><legend>" . 'Selected' . " <span id='selected'></span></legend><div>\n" . "<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n" . "<input type='submit' name='drop' value='" . 'Drop' . "'" . confirm() . ">\n" . "</div></fieldset>\n" : ""), "<script type='text/javascript'>tableCheck();</script>\n", "<input type='hidden' name='token' value='$T'>\n", "</form>\n"; }}page_footer("db"); }if (isset($_GET["status"]))$_GET["variables"] = $_GET["status"]; if (isset($_GET["import"]))$_GET["sql"] = $_GET["import"]; if (!(DB != "" ? $e->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["variables"]) || $_GET["script"] == "connect" || $_GET["script"] == "kill")) {if (DB != "" || $_GET["refresh"]) {restart_session(); set_session("dbs", null); }connect_error(); exit; }$Vd = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; class
583
+TmpFile {var$handler; var$size; function
584
+__construct() {$this->handler = tmpfile(); }function
585
+write($gb) {$this->size += strlen($gb); fwrite($this->handler, $gb); }function
586
+send() {fseek($this->handler, 0); fpassthru($this->handler); fclose($this->handler); }}$Vb = "'(?:''|[^'\\\\]|\\\\.)*'"; $Oc = "IN|OUT|INOUT"; if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"])$_GET["edit"] = $_GET["select"]; if (isset($_GET["callf"]))$_GET["call"] = $_GET["callf"]; if (isset($_GET["function"]))$_GET["procedure"] = $_GET["function"]; if (isset($_GET["download"])) {$a = $_GET["download"]; $m = fields($a); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . friendly_url("$a-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"])); $N = array(idf_escape($_GET["field"])); $J = $j->select($a, $N, array(where($_GET, $m)), $N); $L = ($J ? $J->fetch_row() : array()); echo$L[0]; exit; }elseif (isset($_GET["table"])) {$a = $_GET["table"]; $m = fields($a); if (!$m)$k = error(); $R = table_status1($a, true); page_header(($m && is_view($R) ? 'View' : 'Table') . ": " . h($a), $k); $b->selectLinks($R); $bb = $R["Comment"]; if ($bb != "")echo"<p>" . 'Comment' . ": " . h($bb) . "\n"; if ($m) {echo"<table cellspacing='0'>\n", "<thead><tr><th>" . 'Column' . "<td>" . 'Type' . (support("comment") ? "<td>" . 'Comment' : "") . "</thead>\n"; foreach ($m
587
+as$l) {echo"<tr" . odd() . "><th>" . h($l["field"]), "<td><span title='" . h($l["collation"]) . "'>" . h($l["full_type"]) . "</span>", ($l["null"] ? " <i>NULL</i>" : ""), ($l["auto_increment"] ? " <i>" . 'Auto Increment' . "</i>" : ""), (isset($l["default"]) ? " <span title='" . 'Default value' . "'>[<b>" . h($l["default"]) . "</b>]</span>" : ""), (support("comment") ? "<td>" . nbsp($l["comment"]) : ""), "\n"; }echo"</table>\n"; }if (!is_view($R)) {if (support("indexes")) {echo"<h3 id='indexes'>" . 'Indexes' . "</h3>\n"; $w = indexes($a); if ($w) {echo"<table cellspacing='0'>\n"; foreach ($w
588
+as$F=>$v) {ksort($v["columns"]); $Ie = array(); foreach ($v["columns"]as$z=>$X)$Ie[] = "<i>" . h($X) . "</i>" . ($v["lengths"][$z] ? "(" . $v["lengths"][$z] . ")" : "") . ($v["descs"][$z] ? " DESC" : ""); echo"<tr title='" . h($F) . "'><th>$v[type]<td>" . implode(", ", $Ie) . "\n"; }echo"</table>\n"; }echo'<p class="links"><a href="' . h(ME) . 'indexes=' . urlencode($a) . '">' . 'Alter indexes' . "</a>\n"; }if (fk_support($R)) {echo"<h3 id='foreign-keys'>" . 'Foreign keys' . "</h3>\n"; $o = foreign_keys($a); if ($o) {echo"<table cellspacing='0'>\n", "<thead><tr><th>" . 'Source' . "<td>" . 'Target' . "<td>" . 'ON DELETE' . "<td>" . 'ON UPDATE' . "<td>&nbsp;</thead>\n"; foreach ($o
589
+as$F=>$n) {echo"<tr title='" . h($F) . "'>", "<th><i>" . implode("</i>, <i>", array_map('h', $n["source"])) . "</i>", "<td><a href='" . h($n["db"] != "" ? preg_replace('~db=[^&]*~', "db=" . urlencode($n["db"]), ME) : ($n["ns"] != "" ? preg_replace('~ns=[^&]*~', "ns=" . urlencode($n["ns"]), ME) : ME)) . "table=" . urlencode($n["table"]) . "'>" . ($n["db"] != "" ? "<b>" . h($n["db"]) . "</b>." : "") . ($n["ns"] != "" ? "<b>" . h($n["ns"]) . "</b>." : "") . h($n["table"]) . "</a>", "(<i>" . implode("</i>, <i>", array_map('h', $n["target"])) . "</i>)", "<td>" . nbsp($n["on_delete"]) . "\n", "<td>" . nbsp($n["on_update"]) . "\n", '<td><a href="' . h(ME . 'foreign=' . urlencode($a) . '&name=' . urlencode($F)) . '">' . 'Alter' . '</a>'; }echo"</table>\n"; }echo'<p class="links"><a href="' . h(ME) . 'foreign=' . urlencode($a) . '">' . 'Add foreign key' . "</a>\n"; }}if (support(is_view($R) ? "view_trigger" : "trigger")) {echo"<h3 id='triggers'>" . 'Triggers' . "</h3>\n"; $qg = triggers($a); if ($qg) {echo"<table cellspacing='0'>\n"; foreach ($qg
590
+as$z=>$X)echo"<tr valign='top'><td>" . h($X[0]) . "<td>" . h($X[1]) . "<th>" . h($z) . "<td><a href='" . h(ME . 'trigger=' . urlencode($a) . '&name=' . urlencode($z)) . "'>" . 'Alter' . "</a>\n"; echo"</table>\n"; }echo'<p class="links"><a href="' . h(ME) . 'trigger=' . urlencode($a) . '">' . 'Add trigger' . "</a>\n"; }}elseif (isset($_GET["schema"])) {page_header('Database schema', "", array(), h(DB . ($_GET["ns"] ? ".$_GET[ns]" : ""))); $Qf = array(); $Rf = array(); $ea = ($_GET["schema"] ? $_GET["schema"] : $_COOKIE["adminer_schema-" . str_replace(".", "_", DB)]); preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', $ea, $rd, PREG_SET_ORDER); foreach ($rd
591
+as$t=>$C) {$Qf[$C[1]] = array($C[2], $C[3]); $Rf[] = "\n\t'" . js_escape($C[1]) . "': [ $C[2], $C[3] ]"; }$kg = 0; $Ca = -1; $nf = array(); $Ye = array(); $jd = array(); foreach (table_status('', true)as$Q=>$R) {if (is_view($R))continue; $Be = 0; $nf[$Q]["fields"] = array(); foreach (fields($Q)as$F=>$l) {$Be += 1.25; $l["pos"] = $Be; $nf[$Q]["fields"][$F] = $l; }$nf[$Q]["pos"] = ($Qf[$Q] ? $Qf[$Q] : array($kg, 0)); foreach ($b->foreignKeys($Q)as$X) {if (!$X["db"]) {$hd = $Ca; if ($Qf[$Q][1] || $Qf[$X["table"]][1])$hd = min(floatval($Qf[$Q][1]), floatval($Qf[$X["table"]][1])) - 1; else$Ca -= .1; while ($jd[(string) $hd])$hd -= .0001; $nf[$Q]["references"][$X["table"]][(string) $hd] = array($X["source"], $X["target"]); $Ye[$X["table"]][$Q][(string) $hd] = $X["target"]; $jd[(string) $hd] = true; }}$kg = max($kg, $nf[$Q]["pos"][0] + 2.5 + $Be); }echo'<div id="schema" style="height: ', $kg, 'em;" onselectstart="return false;">
592 592
 <script type="text/javascript">
593
-var tablePos = {',implode(",",$Rf)."\n",'};
594
-var em = document.getElementById(\'schema\').offsetHeight / ',$kg,';
593
+var tablePos = {',implode(",", $Rf) . "\n", '};
594
+var em = document.getElementById(\'schema\').offsetHeight / ',$kg, ';
595 595
 document.onmousemove = schemaMousemove;
596 596
 document.onmouseup = function (ev) {
597
-	schemaMouseup(ev, \'',js_escape(DB),'\');
597
+	schemaMouseup(ev, \'',js_escape(DB), '\');
598 598
 };
599 599
 </script>
600
-';foreach($nf
601
-as$F=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;' onmousedown='schemaMousedown(this, event);'>",'<a href="'.h(ME).'table='.urlencode($F).'"><b>'.h($F)."</b></a>";foreach($Q["fields"]as$l){$X='<span'.type_class($l["type"]).' title="'.h($l["full_type"].($l["null"]?" NULL":'')).'">'.h($l["field"]).'</span>';echo"<br>".($l["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$Wf=>$Ze){foreach($Ze
602
-as$hd=>$Ve){$id=$hd-$Qf[$F][1];$t=0;foreach($Ve[0]as$_f)echo"\n<div class='references' title='".h($Wf)."' id='refs$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$_f]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$id)."em;'></div></div>";}}foreach((array)$Ye[$F]as$Wf=>$Ze){foreach($Ze
603
-as$hd=>$d){$id=$hd-$Qf[$F][1];$t=0;foreach($d
604
-as$Vf)echo"\n<div class='references' title='".h($Wf)."' id='refd$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$Vf]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&amp;version=4.2.5&amp;driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$id)."em;'></div></div>";}}echo"\n</div>\n";}foreach($nf
605
-as$F=>$Q){foreach((array)$Q["references"]as$Wf=>$Ze){foreach($Ze
606
-as$hd=>$Ve){$Cd=$kg;$vd=-10;foreach($Ve[0]as$z=>$_f){$Ce=$Q["pos"][0]+$Q["fields"][$_f]["pos"];$De=$nf[$Wf]["pos"][0]+$nf[$Wf]["fields"][$Ve[1][$z]]["pos"];$Cd=min($Cd,$Ce,$De);$vd=max($vd,$Ce,$De);}echo"<div class='references' id='refl$hd' style='left: $hd"."em; top: $Cd"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($vd-$Cd)."em;'></div></div>\n";}}}echo'</div>
607
-<p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">Permanent link</a>
608
-';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$k){$jb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$jb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($jb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$gc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Wc=preg_match('~sql~',$_POST["format"]);if($Wc){echo"-- Adminer $ga ".$Eb[DRIVER]." dump\n\n";if($y=="sql"){echo"SET NAMES utf8;
600
+';foreach ($nf
601
+as$F=>$Q) {echo"<div class='table' style='top: " . $Q["pos"][0] . "em; left: " . $Q["pos"][1] . "em;' onmousedown='schemaMousedown(this, event);'>", '<a href="' . h(ME) . 'table=' . urlencode($F) . '"><b>' . h($F) . "</b></a>"; foreach ($Q["fields"]as$l) {$X = '<span' . type_class($l["type"]) . ' title="' . h($l["full_type"] . ($l["null"] ? " NULL" : '')) . '">' . h($l["field"]) . '</span>'; echo"<br>" . ($l["primary"] ? "<i>$X</i>" : $X); }foreach ((array) $Q["references"]as$Wf=>$Ze) {foreach ($Ze
602
+as$hd=>$Ve) {$id = $hd - $Qf[$F][1]; $t = 0; foreach ($Ve[0]as$_f)echo"\n<div class='references' title='" . h($Wf) . "' id='refs$hd-" . ($t++) . "' style='left: $id" . "em; top: " . $Q["fields"][$_f]["pos"] . "em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: " . (-$id) . "em;'></div></div>"; }}foreach ((array) $Ye[$F]as$Wf=>$Ze) {foreach ($Ze
603
+as$hd=>$d) {$id = $hd - $Qf[$F][1]; $t = 0; foreach ($d
604
+as$Vf)echo"\n<div class='references' title='" . h($Wf) . "' id='refd$hd-" . ($t++) . "' style='left: $id" . "em; top: " . $Q["fields"][$Vf]["pos"] . "em; height: 1.25em; background: url(" . h(preg_replace("~\\?.*~", "", ME)) . "?file=arrow.gif) no-repeat right center;&amp;version=4.2.5&amp;driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: " . (-$id) . "em;'></div></div>"; }}echo"\n</div>\n"; }foreach ($nf
605
+as$F=>$Q) {foreach ((array) $Q["references"]as$Wf=>$Ze) {foreach ($Ze
606
+as$hd=>$Ve) {$Cd = $kg; $vd = -10; foreach ($Ve[0]as$z=>$_f) {$Ce = $Q["pos"][0] + $Q["fields"][$_f]["pos"]; $De = $nf[$Wf]["pos"][0] + $nf[$Wf]["fields"][$Ve[1][$z]]["pos"]; $Cd = min($Cd, $Ce, $De); $vd = max($vd, $Ce, $De); }echo"<div class='references' id='refl$hd' style='left: $hd" . "em; top: $Cd" . "em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: " . ($vd - $Cd) . "em;'></div></div>\n"; }}}echo'</div>
607
+<p class="links"><a href="',h(ME . "schema=" . urlencode($ea)), '" id="schema-link">Permanent link</a>
608
+';}elseif (isset($_GET["dump"])) {$a = $_GET["dump"]; if ($_POST && !$k) {$jb = ""; foreach (array("output", "format", "db_style", "routines", "events", "table_style", "auto_increment", "triggers", "data_style")as$z)$jb .= "&$z=" . urlencode($_POST[$z]); cookie("adminer_export", substr($jb, 1)); $S = array_flip((array) $_POST["tables"]) + array_flip((array) $_POST["data"]); $gc = dump_headers((count($S) == 1 ? key($S) : DB), (DB == "" || count($S) > 1)); $Wc = preg_match('~sql~', $_POST["format"]); if ($Wc) {echo"-- Adminer $ga " . $Eb[DRIVER] . " dump\n\n"; if ($y == "sql") {echo"SET NAMES utf8;
609 609
 SET time_zone = '+00:00';
610
-".($_POST["data_style"]?"SET foreign_key_checks = 0;
610
+".($_POST["data_style"] ? "SET foreign_key_checks = 0;
611 611
 SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
612
-":"")."
613
-";$e->query("SET time_zone = '+00:00';");}}$If=$_POST["db_style"];$h=array(DB);if(DB==""){$h=$_POST["databases"];if(is_string($h))$h=explode("\n",rtrim(str_replace("\r","",$h),"\n"));}foreach((array)$h
614
-as$i){$b->dumpDatabase($i);if($e->select_db($i)){if($Wc&&preg_match('~CREATE~',$If)&&($g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1))){set_utf8mb4($g);if($If=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($i).";\n";echo"$g;\n";}if($Wc){if($If)echo
615
-use_sql($i).";\n\n";$le="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$if){foreach(get_rows("SHOW $if STATUS WHERE Db = ".q($i),null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE $if ".idf_escape($L["Name"]),2));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP $if IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}if($le)echo"DELIMITER ;;\n\n$le"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Lg=array();foreach(table_status('',true)as$F=>$R){$Q=(DB==""||in_array($F,(array)$_POST["tables"]));$ob=(DB==""||in_array($F,(array)$_POST["data"]));if($Q||$ob){if($gc=="tar"){$ig=new
616
-TmpFile;ob_start(array($ig,'write'),1e5);}$b->dumpTable($F,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Lg[]=$F;elseif($ob){$m=fields($F);$b->dumpData($F,$_POST["data_style"],"SELECT *".convert_fields($m,$m)." FROM ".table($F));}if($Wc&&$_POST["triggers"]&&$Q&&($qg=trigger_sql($F,$_POST["table_style"])))echo"\nDELIMITER ;;\n$qg\nDELIMITER ;\n";if($gc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$i/")."$F.csv",$ig);}elseif($Wc)echo"\n";}}foreach($Lg
617
-as$Kg)$b->dumpTable($Kg,$_POST["table_style"],1);if($gc=="tar")echo
618
-pack("x512");}}}if($Wc)echo"-- ".$e->result("SELECT NOW()")."\n";exit;}page_header('Export',$k,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
612
+":"") . "
613
+";$e->query("SET time_zone = '+00:00';"); }}$If = $_POST["db_style"]; $h = array(DB); if (DB == "") {$h = $_POST["databases"]; if (is_string($h))$h = explode("\n", rtrim(str_replace("\r", "", $h), "\n")); }foreach ((array) $h
614
+as$i) {$b->dumpDatabase($i); if ($e->select_db($i)) {if ($Wc && preg_match('~CREATE~', $If) && ($g = $e->result("SHOW CREATE DATABASE " . idf_escape($i), 1))) {set_utf8mb4($g); if ($If == "DROP+CREATE")echo"DROP DATABASE IF EXISTS " . idf_escape($i) . ";\n"; echo"$g;\n"; }if ($Wc) {if ($If)echo
615
+use_sql($i) . ";\n\n"; $le = ""; if ($_POST["routines"]) {foreach (array("FUNCTION", "PROCEDURE")as$if) {foreach (get_rows("SHOW $if STATUS WHERE Db = " . q($i), null, "-- ")as$L) {$g = remove_definer($e->result("SHOW CREATE $if " . idf_escape($L["Name"]), 2)); set_utf8mb4($g); $le .= ($If != 'DROP+CREATE' ? "DROP $if IF EXISTS " . idf_escape($L["Name"]) . ";;\n" : "") . "$g;;\n\n"; }}}if ($_POST["events"]) {foreach (get_rows("SHOW EVENTS", null, "-- ")as$L) {$g = remove_definer($e->result("SHOW CREATE EVENT " . idf_escape($L["Name"]), 3)); set_utf8mb4($g); $le .= ($If != 'DROP+CREATE' ? "DROP EVENT IF EXISTS " . idf_escape($L["Name"]) . ";;\n" : "") . "$g;;\n\n"; }}if ($le)echo"DELIMITER ;;\n\n$le" . "DELIMITER ;\n\n"; }if ($_POST["table_style"] || $_POST["data_style"]) {$Lg = array(); foreach (table_status('', true)as$F=>$R) {$Q = (DB == "" || in_array($F, (array) $_POST["tables"])); $ob = (DB == "" || in_array($F, (array) $_POST["data"])); if ($Q || $ob) {if ($gc == "tar") {$ig = new
616
+TmpFile; ob_start(array($ig, 'write'), 1e5); }$b->dumpTable($F, ($Q ? $_POST["table_style"] : ""), (is_view($R) ? 2 : 0)); if (is_view($R))$Lg[] = $F; elseif ($ob) {$m = fields($F); $b->dumpData($F, $_POST["data_style"], "SELECT *" . convert_fields($m, $m) . " FROM " . table($F)); }if ($Wc && $_POST["triggers"] && $Q && ($qg = trigger_sql($F, $_POST["table_style"])))echo"\nDELIMITER ;;\n$qg\nDELIMITER ;\n"; if ($gc == "tar") {ob_end_flush(); tar_file((DB != "" ? "" : "$i/") . "$F.csv", $ig); }elseif ($Wc)echo"\n"; }}foreach ($Lg
617
+as$Kg)$b->dumpTable($Kg, $_POST["table_style"], 1); if ($gc == "tar")echo
618
+pack("x512"); }}}if ($Wc)echo"-- " . $e->result("SELECT NOW()") . "\n"; exit; }page_header('Export', $k, ($_GET["export"] != "" ? array("table"=>$_GET["export"]) : array()), h(DB)); echo'
619 619
 <form action="" method="post">
620 620
 <table cellspacing="0">
621
-';$sb=array('','USE','DROP+CREATE','CREATE');$Sf=array('','DROP+CREATE','CREATE');$pb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql")$pb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".'Output'."<td>".html_select("output",$b->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".'Format'."<td>".html_select("format",$b->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$sb,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],'Routines'):"").(support("event")?checkbox("events",1,$L["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$Sf,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$L["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$pb,$L["data_style"]),'</table>
621
+';$sb = array('', 'USE', 'DROP+CREATE', 'CREATE'); $Sf = array('', 'DROP+CREATE', 'CREATE'); $pb = array('', 'TRUNCATE+INSERT', 'INSERT'); if ($y == "sql")$pb[] = 'INSERT+UPDATE'; parse_str($_COOKIE["adminer_export"], $L); if (!$L)$L = array("output"=>"text", "format"=>"sql", "db_style"=>(DB != "" ? "" : "CREATE"), "table_style"=>"DROP+CREATE", "data_style"=>"INSERT"); if (!isset($L["events"])) {$L["routines"] = $L["events"] = ($_GET["dump"] == ""); $L["triggers"] = $L["table_style"]; }echo"<tr><th>" . 'Output' . "<td>" . html_select("output", $b->dumpOutput(), $L["output"], 0) . "\n"; echo"<tr><th>" . 'Format' . "<td>" . html_select("format", $b->dumpFormat(), $L["format"], 0) . "\n"; echo($y == "sqlite" ? "" : "<tr><th>" . 'Database' . "<td>" . html_select('db_style', $sb, $L["db_style"]) . (support("routine") ? checkbox("routines", 1, $L["routines"], 'Routines') : "") . (support("event") ? checkbox("events", 1, $L["events"], 'Events') : "")), "<tr><th>" . 'Tables' . "<td>" . html_select('table_style', $Sf, $L["table_style"]) . checkbox("auto_increment", 1, $L["auto_increment"], 'Auto Increment') . (support("trigger") ? checkbox("triggers", 1, $L["triggers"], 'Triggers') : ""), "<tr><th>" . 'Data' . "<td>" . html_select('data_style', $pb, $L["data_style"]), '</table>
622 622
 <p><input type="submit" value="Export">
623
-<input type="hidden" name="token" value="',$T,'">
623
+<input type="hidden" name="token" value="',$T, '">
624 624
 
625 625
 <table cellspacing="0">
626
-';$Ge=array();if(DB!=""){$Na=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Na onclick='formCheck(this, /^tables\\[/);'>".'Tables'."</label>","<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Na onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Lg="";$Tf=tables_list();foreach($Tf
627
-as$F=>$U){$Fe=preg_replace('~_.*~','',$F);$Na=($a==""||$a==(substr($a,-1)=="%"?"$Fe%":$F));$Ie="<tr><td>".checkbox("tables[]",$F,$Na,$F,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U))$Lg.="$Ie\n";else
628
-echo"$Ie<td align='right'><label class='block'><span id='Rows-".h($F)."'></span>".checkbox("data[]",$F,$Na,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";$Ge[$Fe]++;}echo$Lg;if($Tf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".'Database'."</label></thead>\n";$h=$b->databases();if($h){foreach($h
629
-as$i){if(!information_schema($i)){$Fe=preg_replace('~_.*~','',$i);echo"<tr><td>".checkbox("databases[]",$i,$a==""||$a=="$Fe%",$i,"formUncheck('check-databases');","block")."\n";$Ge[$Fe]++;}}}else
630
-echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
626
+';$Ge = array(); if (DB != "") {$Na = ($a != "" ? "" : " checked"); echo"<thead><tr>", "<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Na onclick='formCheck(this, /^tables\\[/);'>" . 'Tables' . "</label>", "<th style='text-align: right;'><label class='block'>" . 'Data' . "<input type='checkbox' id='check-data'$Na onclick='formCheck(this, /^data\\[/);'></label>", "</thead>\n"; $Lg = ""; $Tf = tables_list(); foreach ($Tf
627
+as$F=>$U) {$Fe = preg_replace('~_.*~', '', $F); $Na = ($a == "" || $a == (substr($a, -1) == "%" ? "$Fe%" : $F)); $Ie = "<tr><td>" . checkbox("tables[]", $F, $Na, $F, "checkboxClick(event, this); formUncheck('check-tables');", "block"); if ($U !== null && !preg_match('~table~i', $U))$Lg .= "$Ie\n"; else
628
+echo"$Ie<td align='right'><label class='block'><span id='Rows-" . h($F) . "'></span>" . checkbox("data[]", $F, $Na, "", "checkboxClick(event, this); formUncheck('check-data');") . "</label>\n"; $Ge[$Fe]++; }echo$Lg; if ($Tf)echo"<script type='text/javascript'>ajaxSetHtml('" . js_escape(ME) . "script=db');</script>\n"; } else {echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'" . ($a == "" ? " checked" : "") . " onclick='formCheck(this, /^databases\\[/);'>" . 'Database' . "</label></thead>\n"; $h = $b->databases(); if ($h) {foreach ($h
629
+as$i) {if (!information_schema($i)) {$Fe = preg_replace('~_.*~', '', $i); echo"<tr><td>" . checkbox("databases[]", $i, $a == "" || $a == "$Fe%", $i, "formUncheck('check-databases');", "block") . "\n"; $Ge[$Fe]++; }}} else
630
+echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>"; }echo'</table>
631 631
 </form>
632
-';$pc=true;foreach($Ge
633
-as$z=>$X){if($z!=""&&$X>1){echo($pc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$pc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');$J=$e->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$r=$J;if(!$J)$J=$e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($r?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th>&nbsp;</thead>\n";while($L=$J->fetch_assoc())echo'<tr'.odd().'><td>'.h($L["User"])."<td>".h($L["Host"]).'<td><a href="'.h(ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.'Edit'."</a>\n";if(!$r||DB!="")echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n",'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";}elseif(isset($_GET["sql"])){if(!$k&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Fc=&get_session("queries");$Ec=&$Fc[DB];if(!$k&&$_POST["clear"]){$Ec=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$k);if(!$k&&$_POST){$p=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$p=@fopen((file_exists("adminer.sql")?"adminer.sql":"compress.zlib://adminer.sql.gz"),"rb");$I=($p?fread($p,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Ec||reset(end($Ec))!=$H){restart_session();$Ec[]=array($H,time());set_session("queries",$Fc);stop_session();}}$Af="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$wb=";";$Od=0;$Sb=true;$f=connect();if(is_object($f)&&DB!="")$f->select_db(DB);$ab=0;$Xb=array();$qe='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\\*|-- |$'.($y=="pgsql"?'|\\$[^$]*\\$':'');$lg=microtime(true);parse_str($_COOKIE["adminer_export"],$la);$Jb=$b->dumpFormat();unset($Jb["sql"]);while($I!=""){if(!$Od&&preg_match("~^$Af*+DELIMITER\\s+(\\S+)~i",$I,$C)){$wb=$C[1];$I=substr($I,strlen($C[0]));}else{preg_match('('.preg_quote($wb)."\\s*|$qe)",$I,$C,PREG_OFFSET_CAPTURE,$Od);list($uc,$Be)=$C[0];if(!$uc&&$p&&!feof($p))$I.=fread($p,1e5);else{if(!$uc&&rtrim($I)=="")break;$Od=$Be+strlen($uc);if($uc&&rtrim($uc)!=$wb){while(preg_match('('.($uc=='/*'?'\\*/':($uc=='['?']':(preg_match('~^-- |^#~',$uc)?"\n":preg_quote($uc)."|\\\\."))).'|$)s',$I,$C,PREG_OFFSET_CAPTURE,$Od)){$lf=$C[0][0];if(!$lf&&$p&&!feof($p))$I.=fread($p,1e5);else{$Od=$C[0][1]+strlen($lf);if($lf[0]!="\\")break;}}}else{$Sb=false;$H=substr($I,0,$Be);$ab++;$Ie="<pre id='sql-$ab'><code class='jush-$y'>".shorten_utf8(trim($H),1000)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$Af*+ATTACH\\b~i",$H,$C)){echo$Ie,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Ie;ob_flush();flush();}$Cf=microtime(true);if($e->multi_query($H)&&is_object($f)&&preg_match("~^$Af*+USE\\b~i",$H))$f->query($H);do{$J=$e->store_result();$bg=" <span class='time'>(".format_time($Cf).")</span>".(strlen($H)<1000?" <a href='".h(ME)."sql=".urlencode(trim($H))."'>".'Edit'."</a>":"");if($e->error){echo($_POST["only_errors"]?$Ie:""),"<p class='error'>".'Error in query'.($e->errno?" ($e->errno)":"").": ".error()."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"])break
634
-2;}elseif(is_object($J)){$_=$_POST["limit"];$ge=select($J,$f,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Ld=$J->num_rows;echo"<p>".($Ld?($_&&$Ld>$_?sprintf('%d / ',$_):"").lang(array('%d row','%d rows'),$Ld):""),$bg;$u="export-$ab";$fc=", <a href='#$u' onclick=\"return !toggle('$u');\">".'Export'."</a><span id='$u' class='hidden'>: ".html_select("output",$b->dumpOutput(),$la["output"])." ".html_select("format",$Jb,$la["format"])."<input type='hidden' name='query' value='".h($H)."'>"." <input type='submit' name='export' value='".'Export'."'><input type='hidden' name='token' value='$T'></span>\n";if($f&&preg_match("~^($Af|\\()*+SELECT\\b~i",$H)&&($ec=explain($f,$H))){$u="explain-$ab";echo", <a href='#$u' onclick=\"return !toggle('$u');\">EXPLAIN</a>$fc","<div id='$u' class='hidden'>\n";select($ec,$f,$ge);echo"</div>\n";}else
635
-echo$fc;echo"</form>\n";}}else{if(preg_match("~^$Af*+(CREATE|DROP|ALTER)$Af++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($e->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$e->affected_rows)."$bg\n";}$Cf=microtime(true);}while($e->next_result());}$I=substr($I,$Od);$Od=0;}}}}if($Sb)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$ab-count($Xb))," <span class='time'>(".format_time($lg).")</span>\n";}elseif($Xb&&$ab>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Xb)."\n";}else
636
-echo"<p class='error'>".upload_error($I)."\n";}echo'
632
+';$pc = true; foreach ($Ge
633
+as$z=>$X) {if ($z != "" && $X > 1) {echo($pc ? "<p>" : " ") . "<a href='" . h(ME) . "dump=" . urlencode("$z%") . "'>" . h($z) . "</a>"; $pc = false; }}}elseif (isset($_GET["privileges"])) {page_header('Privileges'); $J = $e->query("SELECT User, Host FROM mysql." . (DB == "" ? "user" : "db WHERE " . q(DB) . " LIKE Db") . " ORDER BY Host, User"); $r = $J; if (!$J)$J = $e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host"); echo"<form action=''><p>\n"; hidden_fields_get(); echo"<input type='hidden' name='db' value='" . h(DB) . "'>\n", ($r ? "" : "<input type='hidden' name='grant' value=''>\n"), "<table cellspacing='0'>\n", "<thead><tr><th>" . 'Username' . "<th>" . 'Server' . "<th>&nbsp;</thead>\n"; while ($L = $J->fetch_assoc())echo'<tr' . odd() . '><td>' . h($L["User"]) . "<td>" . h($L["Host"]) . '<td><a href="' . h(ME . 'user=' . urlencode($L["User"]) . '&host=' . urlencode($L["Host"])) . '">' . 'Edit' . "</a>\n"; if (!$r || DB != "")echo"<tr" . odd() . "><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='" . 'Edit' . "'>\n"; echo"</table>\n", "</form>\n", '<p class="links"><a href="' . h(ME) . 'user=">' . 'Create user' . "</a>"; }elseif (isset($_GET["sql"])) {if (!$k && $_POST["export"]) {dump_headers("sql"); $b->dumpTable("", ""); $b->dumpData("", "table", $_POST["query"]); exit; }restart_session(); $Fc = &get_session("queries"); $Ec = &$Fc[DB]; if (!$k && $_POST["clear"]) {$Ec = array(); redirect(remove_from_uri("history")); }page_header((isset($_GET["import"]) ? 'Import' : 'SQL command'), $k); if (!$k && $_POST) {$p = false; if (!isset($_GET["import"]))$I = $_POST["query"]; elseif ($_POST["webfile"]) {$p = @fopen((file_exists("adminer.sql") ? "adminer.sql" : "compress.zlib://adminer.sql.gz"), "rb"); $I = ($p ? fread($p, 1e6) : false); } else$I = get_file("sql_file", true); if (is_string($I)) {if (function_exists('memory_get_usage'))@ini_set("memory_limit", max(ini_bytes("memory_limit"), 2 * strlen($I) + memory_get_usage() + 8e6)); if ($I != "" && strlen($I) < 1e6) {$H = $I . (preg_match("~;[ \t\r\n]*\$~", $I) ? "" : ";"); if (!$Ec || reset(end($Ec)) != $H) {restart_session(); $Ec[] = array($H, time()); set_session("queries", $Fc); stop_session(); }}$Af = "(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)"; $wb = ";"; $Od = 0; $Sb = true; $f = connect(); if (is_object($f) && DB != "")$f->select_db(DB); $ab = 0; $Xb = array(); $qe = '[\'"' . ($y == "sql" ? '`#' : ($y == "sqlite" ? '`[' : ($y == "mssql" ? '[' : ''))) . ']|/\\*|-- |$' . ($y == "pgsql" ? '|\\$[^$]*\\$' : ''); $lg = microtime(true); parse_str($_COOKIE["adminer_export"], $la); $Jb = $b->dumpFormat(); unset($Jb["sql"]); while ($I != "") {if (!$Od && preg_match("~^$Af*+DELIMITER\\s+(\\S+)~i", $I, $C)) {$wb = $C[1]; $I = substr($I, strlen($C[0])); } else {preg_match('(' . preg_quote($wb) . "\\s*|$qe)", $I, $C, PREG_OFFSET_CAPTURE, $Od); list($uc, $Be) = $C[0]; if (!$uc && $p && !feof($p))$I .= fread($p, 1e5); else {if (!$uc && rtrim($I) == "")break; $Od = $Be + strlen($uc); if ($uc && rtrim($uc) != $wb) {while (preg_match('(' . ($uc == '/*' ? '\\*/' : ($uc == '[' ? ']' : (preg_match('~^-- |^#~', $uc) ? "\n" : preg_quote($uc) . "|\\\\."))) . '|$)s', $I, $C, PREG_OFFSET_CAPTURE, $Od)) {$lf = $C[0][0]; if (!$lf && $p && !feof($p))$I .= fread($p, 1e5); else {$Od = $C[0][1] + strlen($lf); if ($lf[0] != "\\")break; }}} else {$Sb = false; $H = substr($I, 0, $Be); $ab++; $Ie = "<pre id='sql-$ab'><code class='jush-$y'>" . shorten_utf8(trim($H), 1000) . "</code></pre>\n"; if ($y == "sqlite" && preg_match("~^$Af*+ATTACH\\b~i", $H, $C)) {echo$Ie, "<p class='error'>" . 'ATTACH queries are not supported.' . "\n"; $Xb[] = " <a href='#sql-$ab'>$ab</a>"; if ($_POST["error_stops"])break; } else {if (!$_POST["only_errors"]) {echo$Ie; ob_flush(); flush(); }$Cf = microtime(true); if ($e->multi_query($H) && is_object($f) && preg_match("~^$Af*+USE\\b~i", $H))$f->query($H); do {$J = $e->store_result(); $bg = " <span class='time'>(" . format_time($Cf) . ")</span>" . (strlen($H) < 1000 ? " <a href='" . h(ME) . "sql=" . urlencode(trim($H)) . "'>" . 'Edit' . "</a>" : ""); if ($e->error) {echo($_POST["only_errors"] ? $Ie : ""), "<p class='error'>" . 'Error in query' . ($e->errno ? " ($e->errno)" : "") . ": " . error() . "\n"; $Xb[] = " <a href='#sql-$ab'>$ab</a>"; if ($_POST["error_stops"])break
634
+2; }elseif (is_object($J)) {$_ = $_POST["limit"]; $ge = select($J, $f, array(), $_); if (!$_POST["only_errors"]) {echo"<form action='' method='post'>\n"; $Ld = $J->num_rows; echo"<p>" . ($Ld ? ($_ && $Ld > $_ ? sprintf('%d / ', $_) : "") . lang(array('%d row', '%d rows'), $Ld) : ""), $bg; $u = "export-$ab"; $fc = ", <a href='#$u' onclick=\"return !toggle('$u');\">" . 'Export' . "</a><span id='$u' class='hidden'>: " . html_select("output", $b->dumpOutput(), $la["output"]) . " " . html_select("format", $Jb, $la["format"]) . "<input type='hidden' name='query' value='" . h($H) . "'>" . " <input type='submit' name='export' value='" . 'Export' . "'><input type='hidden' name='token' value='$T'></span>\n"; if ($f && preg_match("~^($Af|\\()*+SELECT\\b~i", $H) && ($ec = explain($f, $H))) {$u = "explain-$ab"; echo", <a href='#$u' onclick=\"return !toggle('$u');\">EXPLAIN</a>$fc", "<div id='$u' class='hidden'>\n"; select($ec, $f, $ge); echo"</div>\n"; } else
635
+echo$fc; echo"</form>\n"; }} else {if (preg_match("~^$Af*+(CREATE|DROP|ALTER)$Af++(DATABASE|SCHEMA)\\b~i", $H)) {restart_session(); set_session("dbs", null); stop_session(); }if (!$_POST["only_errors"])echo"<p class='message' title='" . h($e->info) . "'>" . lang(array('Query executed OK, %d row affected.', 'Query executed OK, %d rows affected.'), $e->affected_rows) . "$bg\n"; }$Cf = microtime(true); } while ($e->next_result()); }$I = substr($I, $Od); $Od = 0; }}}}if ($Sb)echo"<p class='message'>" . 'No commands to execute.' . "\n"; elseif ($_POST["only_errors"]) {echo"<p class='message'>" . lang(array('%d query executed OK.', '%d queries executed OK.'), $ab - count($Xb)), " <span class='time'>(" . format_time($lg) . ")</span>\n"; }elseif ($Xb && $ab > 1)echo"<p class='error'>" . 'Error in query' . ": " . implode("", $Xb) . "\n"; } else
636
+echo"<p class='error'>" . upload_error($I) . "\n"; }echo'
637 637
 <form action="" method="post" enctype="multipart/form-data" id="form">
638
-';$cc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$Ec;elseif($_GET["history"]!="")$H=$Ec[$_GET["history"]][0];echo"<p>";textarea("query",$H,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$cc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>",(ini_bool("file_uploads")?"SQL (&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$cc":'File uploads are disabled.'),"</div></fieldset>\n","<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>adminer.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n","<p>";}echo
639
-checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),'Show only errors')."\n","<input type='hidden' name='token' value='$T'>\n";if(!isset($_GET["import"])&&$Ec){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Ec);$X;$X=prev($Ec)){$z=key($Ec);list($H,$bg,$Nb)=$X;echo'<a href="'.h(ME."sql=&history=$z").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$bg)."'>".@date("H:i:s",$bg)."</span>"." <code class='jush-$y'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"</code>").($Nb?" <span class='time'>($Nb)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form>
640
-';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$Ag=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($m
641
-as$F=>$l){if(!isset($l["privileges"][$Ag?"update":"insert"])||$b->fieldName($l)=="")unset($m[$F]);}if($_POST&&!$k&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Ag?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$w=indexes($a);$wg=unique_array($_GET["where"],$w);$Re="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,'Item has been deleted.',$j->delete($a,$Re,!$wg));else{$P=array();foreach($m
642
-as$F=>$l){$X=process_input($l);if($X!==false&&$X!==null)$P[idf_escape($F)]=$X;}if($Ag){if(!$P)redirect($B);queries_redirect($B,'Item has been updated.',$j->update($a,$P,$Re,!$wg));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$j->insert($a,$P);$gd=($J?last_id():0);queries_redirect($B,sprintf('Item%s has been inserted.',($gd?" $gd":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($m
643
-as$F=>$l){if(isset($l["privileges"]["select"])){$ua=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$ua="''";if($y=="sql"&&preg_match("~enum|set~",$l["type"]))$ua="1*".idf_escape($F);$N[]=($ua?"$ua AS ":"").idf_escape($F);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$j->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Z){$J=$j->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($j->primary=>"");}if($L){foreach($L
644
-as$z=>$X){if(!$Z)$L[$z]=null;$m[$z]=array("field"=>$z,"null"=>($z!=$j->primary),"auto_increment"=>($z==$j->primary));}}}edit_form($a,$m,$L,$Ag);}elseif(isset($_GET["create"])){$a=$_GET["create"];$re=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$re[$z]=$z;$Xe=referencable_primary($a);$o=array();foreach($Xe
645
-as$Pf=>$l)$o[str_replace("`","``",$Pf)."`".str_replace("`","``",$l["field"])]=$Pf;$je=array();$R=array();if($a!=""){$je=fields($a);$R=table_status($a);if(!$R)$k='No tables.';}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!process_fields($L["fields"])&&!$k){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$m=array();$ra=array();$Dg=false;$rc=array();ksort($L["fields"]);$ie=reset($je);$pa=" FIRST";foreach($L["fields"]as$z=>$l){$n=$o[$l["type"]];$rg=($n!==null?$Xe[$n]:$l);if($l["field"]!=""){if(!$l["has_default"])$l["default"]=null;if($z==$L["auto_increment_col"])$l["auto_increment"]=true;$Ne=process_field($l,$rg);$ra[]=array($l["orig"],$Ne,$pa);if($Ne!=process_field($ie,$ie)){$m[]=array($l["orig"],$Ne,$pa);if($l["orig"]!=""||$pa)$Dg=true;}if($n!==null)$rc[idf_escape($l["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$o[$l["type"]],'source'=>array($l["field"]),'target'=>array($rg["field"]),'on_delete'=>$l["on_delete"],));$pa=" AFTER ".idf_escape($l["field"]);}elseif($l["orig"]!=""){$Dg=true;$m[]=array($l["orig"]);}if($l["orig"]!=""){$ie=next($je);if(!$ie)$pa="";}}$te="";if($re[$L["partition_by"]]){$ue=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$z=>$X){$Y=$L["partition_values"][$z];$ue[]="\n  PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$te.="\nPARTITION BY $L[partition_by]($L[partition])".($ue?" (".implode(",",$ue)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$te.="\nREMOVE PARTITIONING";$D='Table has been altered.';if($a==""){cookie("adminer_engine",$L["Engine"]);$D='Table has been created.';}$F=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($F),$D,alter_table($a,$F,($y=="sqlite"&&($Dg||$rc)?$ra:$m),$rc,($L["Comment"]!=$R["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$te));}}page_header(($a!=""?'Alter table':'Create table'),$k,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($tg["int"])?"int":(isset($tg["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$L=$R;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($je
646
-as$l){$l["has_default"]=isset($l["default"]);$L["fields"][]=$l;}if(support("partitioning")){$wc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$J=$e->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $wc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($L["partition_by"],$L["partitions"],$L["partition"])=$J->fetch_row();$ue=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $wc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$ue[""]="";$L["partition_names"]=array_keys($ue);$L["partition_values"]=array_values($ue);}}}$Xa=collations();$Ub=engines();foreach($Ub
647
-as$Tb){if(!strcasecmp($Tb,$L["Engine"])){$L["Engine"]=$Tb;break;}}echo'
638
+';$cc = "<input type='submit' value='" . 'Execute' . "' title='Ctrl+Enter'>"; if (!isset($_GET["import"])) {$H = $_GET["sql"]; if ($_POST)$H = $_POST["query"]; elseif ($_GET["history"] == "all")$H = $Ec; elseif ($_GET["history"] != "")$H = $Ec[$_GET["history"]][0]; echo"<p>"; textarea("query", $H, 20); echo($_POST ? "" : "<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"), "<p>$cc\n", 'Limit rows' . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n"; } else {echo"<fieldset><legend>" . 'File upload' . "</legend><div>", (ini_bool("file_uploads") ? "SQL (&lt; " . ini_get("upload_max_filesize") . "B): <input type='file' name='sql_file[]' multiple>\n$cc" : 'File uploads are disabled.'), "</div></fieldset>\n", "<fieldset><legend>" . 'From server' . "</legend><div>", sprintf('Webserver file %s', "<code>adminer.sql" . (extension_loaded("zlib") ? "[.gz]" : "") . "</code>"), ' <input type="submit" name="webfile" value="' . 'Run file' . '">', "</div></fieldset>\n", "<p>"; }echo
639
+checkbox("error_stops", 1, ($_POST ? $_POST["error_stops"] : isset($_GET["import"])), 'Stop on error') . "\n", checkbox("only_errors", 1, ($_POST ? $_POST["only_errors"] : isset($_GET["import"])), 'Show only errors') . "\n", "<input type='hidden' name='token' value='$T'>\n"; if (!isset($_GET["import"]) && $Ec) {print_fieldset("history", 'History', $_GET["history"] != ""); for ($X = end($Ec); $X; $X = prev($Ec)) {$z = key($Ec); list($H, $bg, $Nb) = $X; echo'<a href="' . h(ME . "sql=&history=$z") . '">' . 'Edit' . "</a>" . " <span class='time' title='" . @date('Y-m-d', $bg) . "'>" . @date("H:i:s", $bg) . "</span>" . " <code class='jush-$y'>" . shorten_utf8(ltrim(str_replace("\n", " ", str_replace("\r", "", preg_replace('~^(#|-- ).*~m', '', $H)))), 80, "</code>") . ($Nb ? " <span class='time'>($Nb)</span>" : "") . "<br>\n"; }echo"<input type='submit' name='clear' value='" . 'Clear' . "'>\n", "<a href='" . h(ME . "sql=&history=all") . "'>" . 'Edit all' . "</a>\n", "</div></fieldset>\n"; }echo'</form>
640
+';}elseif (isset($_GET["edit"])) {$a = $_GET["edit"]; $m = fields($a); $Z = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0], $m) : "") : where($_GET, $m)); $Ag = (isset($_GET["select"]) ? $_POST["edit"] : $Z); foreach ($m
641
+as$F=>$l) {if (!isset($l["privileges"][$Ag ? "update" : "insert"]) || $b->fieldName($l) == "")unset($m[$F]); }if ($_POST && !$k && !isset($_GET["select"])) {$B = $_POST["referer"]; if ($_POST["insert"])$B = ($Ag ? null : $_SERVER["REQUEST_URI"]); elseif (!preg_match('~^.+&select=.+$~', $B))$B = ME . "select=" . urlencode($a); $w = indexes($a); $wg = unique_array($_GET["where"], $w); $Re = "\nWHERE $Z"; if (isset($_POST["delete"]))queries_redirect($B, 'Item has been deleted.', $j->delete($a, $Re, !$wg)); else {$P = array(); foreach ($m
642
+as$F=>$l) {$X = process_input($l); if ($X !== false && $X !== null)$P[idf_escape($F)] = $X; }if ($Ag) {if (!$P)redirect($B); queries_redirect($B, 'Item has been updated.', $j->update($a, $P, $Re, !$wg)); if (is_ajax()) {page_headers(); page_messages($k); exit; }} else {$J = $j->insert($a, $P); $gd = ($J ? last_id() : 0); queries_redirect($B, sprintf('Item%s has been inserted.', ($gd ? " $gd" : "")), $J); }}}$L = null; if ($_POST["save"])$L = (array) $_POST["fields"]; elseif ($Z) {$N = array(); foreach ($m
643
+as$F=>$l) {if (isset($l["privileges"]["select"])) {$ua = convert_field($l); if ($_POST["clone"] && $l["auto_increment"])$ua = "''"; if ($y == "sql" && preg_match("~enum|set~", $l["type"]))$ua = "1*" . idf_escape($F); $N[] = ($ua ? "$ua AS " : "") . idf_escape($F); }}$L = array(); if (!support("table"))$N = array("*"); if ($N) {$J = $j->select($a, $N, array($Z), $N, array(), (isset($_GET["select"]) ? 2 : 1)); $L = $J->fetch_assoc(); if (!$L)$L = false; if (isset($_GET["select"]) && (!$L || $J->fetch_assoc()))$L = null; }}if (!support("table") && !$m) {if (!$Z) {$J = $j->select($a, array("*"), $Z, array("*")); $L = ($J ? $J->fetch_assoc() : false); if (!$L)$L = array($j->primary=>""); }if ($L) {foreach ($L
644
+as$z=>$X) {if (!$Z)$L[$z] = null; $m[$z] = array("field"=>$z, "null"=>($z != $j->primary), "auto_increment"=>($z == $j->primary)); }}}edit_form($a, $m, $L, $Ag); }elseif (isset($_GET["create"])) {$a = $_GET["create"]; $re = array(); foreach (array('HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY', 'RANGE', 'LIST')as$z)$re[$z] = $z; $Xe = referencable_primary($a); $o = array(); foreach ($Xe
645
+as$Pf=>$l)$o[str_replace("`", "``", $Pf) . "`" . str_replace("`", "``", $l["field"])] = $Pf; $je = array(); $R = array(); if ($a != "") {$je = fields($a); $R = table_status($a); if (!$R)$k = 'No tables.'; }$L = $_POST; $L["fields"] = (array) $L["fields"]; if ($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"] = true; if ($_POST && !process_fields($L["fields"]) && !$k) {if ($_POST["drop"])queries_redirect(substr(ME, 0, -1), 'Table has been dropped.', drop_tables(array($a))); else {$m = array(); $ra = array(); $Dg = false; $rc = array(); ksort($L["fields"]); $ie = reset($je); $pa = " FIRST"; foreach ($L["fields"]as$z=>$l) {$n = $o[$l["type"]]; $rg = ($n !== null ? $Xe[$n] : $l); if ($l["field"] != "") {if (!$l["has_default"])$l["default"] = null; if ($z == $L["auto_increment_col"])$l["auto_increment"] = true; $Ne = process_field($l, $rg); $ra[] = array($l["orig"], $Ne, $pa); if ($Ne != process_field($ie, $ie)) {$m[] = array($l["orig"], $Ne, $pa); if ($l["orig"] != "" || $pa)$Dg = true; }if ($n !== null)$rc[idf_escape($l["field"])] = ($a != "" && $y != "sqlite" ? "ADD" : " ") . format_foreign_key(array('table'=>$o[$l["type"]], 'source'=>array($l["field"]), 'target'=>array($rg["field"]), 'on_delete'=>$l["on_delete"],)); $pa = " AFTER " . idf_escape($l["field"]); }elseif ($l["orig"] != "") {$Dg = true; $m[] = array($l["orig"]); }if ($l["orig"] != "") {$ie = next($je); if (!$ie)$pa = ""; }}$te = ""; if ($re[$L["partition_by"]]) {$ue = array(); if ($L["partition_by"] == 'RANGE' || $L["partition_by"] == 'LIST') {foreach (array_filter($L["partition_names"])as$z=>$X) {$Y = $L["partition_values"][$z]; $ue[] = "\n  PARTITION " . idf_escape($X) . " VALUES " . ($L["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . ($Y != "" ? " ($Y)" : " MAXVALUE"); }}$te .= "\nPARTITION BY $L[partition_by]($L[partition])" . ($ue ? " (" . implode(",", $ue) . "\n)" : ($L["partitions"] ? " PARTITIONS " . (+$L["partitions"]) : "")); }elseif (support("partitioning") && preg_match("~partitioned~", $R["Create_options"]))$te .= "\nREMOVE PARTITIONING"; $D = 'Table has been altered.'; if ($a == "") {cookie("adminer_engine", $L["Engine"]); $D = 'Table has been created.'; }$F = trim($L["name"]); queries_redirect(ME . (support("table") ? "table=" : "select=") . urlencode($F), $D, alter_table($a, $F, ($y == "sqlite" && ($Dg || $rc) ? $ra : $m), $rc, ($L["Comment"] != $R["Comment"] ? $L["Comment"] : null), ($L["Engine"] && $L["Engine"] != $R["Engine"] ? $L["Engine"] : ""), ($L["Collation"] && $L["Collation"] != $R["Collation"] ? $L["Collation"] : ""), ($L["Auto_increment"] != "" ? number($L["Auto_increment"]) : ""), $te)); }}page_header(($a != "" ? 'Alter table' : 'Create table'), $k, array("table"=>$a), h($a)); if (!$_POST) {$L = array("Engine"=>$_COOKIE["adminer_engine"], "fields"=>array(array("field"=>"", "type"=>(isset($tg["int"]) ? "int" : (isset($tg["integer"]) ? "integer" : "")))), "partition_names"=>array(""),); if ($a != "") {$L = $R; $L["name"] = $a; $L["fields"] = array(); if (!$_GET["auto_increment"])$L["Auto_increment"] = ""; foreach ($je
646
+as$l) {$l["has_default"] = isset($l["default"]); $L["fields"][] = $l; }if (support("partitioning")) {$wc = "FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = " . q(DB) . " AND TABLE_NAME = " . q($a); $J = $e->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $wc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1"); list($L["partition_by"], $L["partitions"], $L["partition"]) = $J->fetch_row(); $ue = get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $wc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION"); $ue[""] = ""; $L["partition_names"] = array_keys($ue); $L["partition_values"] = array_values($ue); }}}$Xa = collations(); $Ub = engines(); foreach ($Ub
647
+as$Tb) {if (!strcasecmp($Tb, $L["Engine"])) {$L["Engine"] = $Tb; break; }}echo'
648 648
 <form action="" method="post" id="form">
649 649
 <p>
650
-';if(support("columns")||$a==""){echo'Table name: <input name="name" maxlength="64" value="',h($L["name"]),'" autocapitalize="off">
651
-';if($a==""&&!$_POST){?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php }echo($Ub?"<select name='Engine' onchange='helpClose();'".on_help("getTarget(event).value",1).">".optionlist(array(""=>"(".'engine'.")")+$Ub,$L["Engine"])."</select>":""),' ',($Xa&&!preg_match("~sqlite|mssql~",$y)?html_select("Collation",array(""=>"(".'collation'.")")+$Xa,$L["Collation"]):""),' <input type="submit" value="Save">
650
+';if (support("columns") || $a == "") {echo'Table name: <input name="name" maxlength="64" value="', h($L["name"]), '" autocapitalize="off">
651
+';if ($a == "" && !$_POST) {?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php }echo($Ub ? "<select name='Engine' onchange='helpClose();'" . on_help("getTarget(event).value", 1) . ">" . optionlist(array(""=>"(" . 'engine' . ")") + $Ub, $L["Engine"]) . "</select>" : ""), ' ', ($Xa && !preg_match("~sqlite|mssql~", $y) ? html_select("Collation", array(""=>"(" . 'collation' . ")") + $Xa, $L["Collation"]) : ""), ' <input type="submit" value="Save">
652 652
 ';}echo'
653
-';if(support("columns")){echo'<table cellspacing="0" id="edit-fields" class="nowrap">
654
-';$cb=($_POST?$_POST["comments"]:$L["Comment"]!="");if(!$_POST&&!$cb){foreach($L["fields"]as$l){if($l["comment"]!=""){$cb=true;break;}}}edit_fields($L["fields"],$Xa,"TABLE",$o,$cb);echo'</table>
653
+';if (support("columns")) {echo'<table cellspacing="0" id="edit-fields" class="nowrap">
654
+';$cb = ($_POST ? $_POST["comments"] : $L["Comment"] != ""); if (!$_POST && !$cb) {foreach ($L["fields"]as$l) {if ($l["comment"] != "") {$cb = true; break; }}}edit_fields($L["fields"], $Xa, "TABLE", $o, $cb); echo'</table>
655 655
 <p>
656
-Auto Increment: <input type="number" name="Auto_increment" size="6" value="',h($L["Auto_increment"]),'">
657
-',checkbox("defaults",1,true,'Default values',"columnShow(this.checked, 5)","jsonly");if(!$_POST["defaults"]){echo'<script type="text/javascript">editingHideDefaults()</script>';}echo(support("comment")?"<label><input type='checkbox' name='comments' value='1' class='jsonly' onclick=\"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();\"".($cb?" checked":"").">".'Comment'."</label>".' <input name="Comment" id="Comment" value="'.h($L["Comment"]).'" maxlength="'.($e->server_info>=5.5?2048:60).'"'.($cb?'':' class="hidden"').'>':''),'<p>
656
+Auto Increment: <input type="number" name="Auto_increment" size="6" value="',h($L["Auto_increment"]), '">
657
+',checkbox("defaults", 1, true, 'Default values', "columnShow(this.checked, 5)", "jsonly"); if (!$_POST["defaults"]) {echo'<script type="text/javascript">editingHideDefaults()</script>'; }echo(support("comment") ? "<label><input type='checkbox' name='comments' value='1' class='jsonly' onclick=\"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();\"" . ($cb ? " checked" : "") . ">" . 'Comment' . "</label>" . ' <input name="Comment" id="Comment" value="' . h($L["Comment"]) . '" maxlength="' . ($e->server_info >= 5.5 ? 2048 : 60) . '"' . ($cb ? '' : ' class="hidden"') . '>' : ''), '<p>
658 658
 <input type="submit" value="Save">
659 659
 ';}echo'
660
-';if($a!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}if(support("partitioning")){$se=preg_match('~RANGE|LIST~',$L["partition_by"]);print_fieldset("partition",'Partition by',$L["partition_by"]);echo'<p>
661
-',"<select name='partition_by' onchange='partitionByChange(this);'".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).">".optionlist(array(""=>"")+$re,$L["partition_by"])."</select>",'(<input name="partition" value="',h($L["partition"]),'">)
662
-Partitions: <input type="number" name="partitions" class="size',($se||!$L["partition_by"]?" hidden":""),'" value="',h($L["partitions"]),'">
663
-<table cellspacing="0" id="partition-table"',($se?"":" class='hidden'"),'>
660
+';if ($a != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }if (support("partitioning")) {$se = preg_match('~RANGE|LIST~', $L["partition_by"]); print_fieldset("partition", 'Partition by', $L["partition_by"]); echo'<p>
661
+',"<select name='partition_by' onchange='partitionByChange(this);'" . on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')", 1) . ">" . optionlist(array(""=>"") + $re, $L["partition_by"]) . "</select>", '(<input name="partition" value="', h($L["partition"]), '">)
662
+Partitions: <input type="number" name="partitions" class="size',($se || !$L["partition_by"] ? " hidden" : ""), '" value="', h($L["partitions"]), '">
663
+<table cellspacing="0" id="partition-table"',($se ? "" : " class='hidden'"), '>
664 664
 <thead><tr><th>Partition name<th>Values</thead>
665
-';foreach($L["partition_names"]as$z=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'"'.($z==count($L["partition_names"])-1?' onchange="partitionNameChange(this);"':'').' autocapitalize="off">','<td><input name="partition_values[]" value="'.h($L["partition_values"][$z]).'">';}echo'</table>
665
+';foreach ($L["partition_names"]as$z=>$X) {echo'<tr>', '<td><input name="partition_names[]" value="' . h($X) . '"' . ($z == count($L["partition_names"]) - 1 ? ' onchange="partitionNameChange(this);"' : '') . ' autocapitalize="off">', '<td><input name="partition_values[]" value="' . h($L["partition_values"][$z]) . '">'; }echo'</table>
666 666
 </div></fieldset>
667
-';}echo'<input type="hidden" name="token" value="',$T,'">
667
+';}echo'<input type="hidden" name="token" value="', $T, '">
668 668
 </form>
669
-';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Mc=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.($e->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"]))$Mc[]="FULLTEXT";$w=indexes($a);$He=array();if($y=="mongo"){$He=$w["_id_"];unset($Mc[0]);unset($w["_id_"]);}$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]){$sa=array();foreach($L["indexes"]as$v){$F=$v["name"];if(in_array($v["type"],$Mc)){$d=array();$md=array();$yb=array();$P=array();ksort($v["columns"]);foreach($v["columns"]as$z=>$c){if($c!=""){$ld=$v["lengths"][$z];$xb=$v["descs"][$z];$P[]=idf_escape($c).($ld?"(".(+$ld).")":"").($xb?" DESC":"");$d[]=$c;$md[]=($ld?$ld:null);$yb[]=$xb;}}if($d){$dc=$w[$F];if($dc){ksort($dc["columns"]);ksort($dc["lengths"]);ksort($dc["descs"]);if($v["type"]==$dc["type"]&&array_values($dc["columns"])===$d&&(!$dc["lengths"]||array_values($dc["lengths"])===$md)&&array_values($dc["descs"])===$yb){unset($w[$F]);continue;}}$sa[]=array($v["type"],$F,$P);}}}foreach($w
670
-as$F=>$dc)$sa[]=array($dc["type"],$F,"DROP");if(!$sa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$sa));}page_header('Indexes',$k,array("table"=>$a),h($a));$m=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$z=>$v){if($v["columns"][count($v["columns"])]!="")$L["indexes"][$z]["columns"][]="";}$v=end($L["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($w
671
-as$z=>$v){$w[$z]["name"]=$z;$w[$z]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$L["indexes"]=$w;}?>
669
+';}elseif (isset($_GET["indexes"])) {$a = $_GET["indexes"]; $Mc = array("PRIMARY", "UNIQUE", "INDEX"); $R = table_status($a, true); if (preg_match('~MyISAM|M?aria' . ($e->server_info >= 5.6 ? '|InnoDB' : '') . '~i', $R["Engine"]))$Mc[] = "FULLTEXT"; $w = indexes($a); $He = array(); if ($y == "mongo") {$He = $w["_id_"]; unset($Mc[0]); unset($w["_id_"]); }$L = $_POST; if ($_POST && !$k && !$_POST["add"] && !$_POST["drop_col"]) {$sa = array(); foreach ($L["indexes"]as$v) {$F = $v["name"]; if (in_array($v["type"], $Mc)) {$d = array(); $md = array(); $yb = array(); $P = array(); ksort($v["columns"]); foreach ($v["columns"]as$z=>$c) {if ($c != "") {$ld = $v["lengths"][$z]; $xb = $v["descs"][$z]; $P[] = idf_escape($c) . ($ld ? "(" . (+$ld) . ")" : "") . ($xb ? " DESC" : ""); $d[] = $c; $md[] = ($ld ? $ld : null); $yb[] = $xb; }}if ($d) {$dc = $w[$F]; if ($dc) {ksort($dc["columns"]); ksort($dc["lengths"]); ksort($dc["descs"]); if ($v["type"] == $dc["type"] && array_values($dc["columns"]) === $d && (!$dc["lengths"] || array_values($dc["lengths"]) === $md) && array_values($dc["descs"]) === $yb) {unset($w[$F]); continue; }}$sa[] = array($v["type"], $F, $P); }}}foreach ($w
670
+as$F=>$dc)$sa[] = array($dc["type"], $F, "DROP"); if (!$sa)redirect(ME . "table=" . urlencode($a)); queries_redirect(ME . "table=" . urlencode($a), 'Indexes have been altered.', alter_indexes($a, $sa)); }page_header('Indexes', $k, array("table"=>$a), h($a)); $m = array_keys(fields($a)); if ($_POST["add"]) {foreach ($L["indexes"]as$z=>$v) {if ($v["columns"][count($v["columns"])] != "")$L["indexes"][$z]["columns"][] = ""; }$v = end($L["indexes"]); if ($v["type"] || array_filter($v["columns"], 'strlen'))$L["indexes"][] = array("columns"=>array(1=>"")); }if (!$L) {foreach ($w
671
+as$z=>$v) {$w[$z]["name"] = $z; $w[$z]["columns"][] = ""; }$w[] = array("columns"=>array(1=>"")); $L["indexes"] = $w; }?>
672 672
 
673 673
 <form action="" method="post">
674 674
 <table cellspacing="0" class="nowrap">
@@ -679,138 +679,138 @@  discard block
 block discarded – undo
679 679
 <th><noscript><input type='image' class='icon' name='add[0]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='Add next'></noscript>&nbsp;
680 680
 </thead>
681 681
 <?php
682
-if($He){echo"<tr><td>PRIMARY<td>";foreach($He["columns"]as$z=>$c){echo
683
-select_input(" disabled",$m,$c),"<label><input disabled type='checkbox'>".'descending'."</label> ";}echo"<td><td>\n";}$x=1;foreach($L["indexes"]as$v){if(!$_POST["drop_col"]||$x!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$x][type]",array(-1=>"")+$Mc,$v["type"],($x==count($L["indexes"])?"indexesAddRow(this);":1)),"<td>";ksort($v["columns"]);$t=1;foreach($v["columns"]as$z=>$c){echo"<span>".select_input(" name='indexes[$x][columns][$t]' onchange=\"".($t==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn")."(this, '".h(js_escape($y=="sql"?"":$_GET["indexes"]."_"))."');\"",($m?array_combine($m,$m):$m),$c),($y=="sql"||$y=="mssql"?"<input type='number' name='indexes[$x][lengths][$t]' class='size' value='".h($v["lengths"][$z])."'>":""),($y!="sql"?checkbox("indexes[$x][descs][$t]",1,$v["descs"][$z],'descending'):"")," </span>";$t++;}echo"<td><input name='indexes[$x][name]' value='".h($v["name"])."' autocapitalize='off'>\n","<td><input type='image' class='icon' name='drop_col[$x]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&amp;version=4.2.5&amp;driver=mysql' alt='x' title='".'Remove'."' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n";}$x++;}echo'</table>
682
+if ($He) {echo"<tr><td>PRIMARY<td>"; foreach ($He["columns"]as$z=>$c) {echo
683
+select_input(" disabled", $m, $c), "<label><input disabled type='checkbox'>" . 'descending' . "</label> "; }echo"<td><td>\n"; }$x = 1; foreach ($L["indexes"]as$v) {if (!$_POST["drop_col"] || $x != key($_POST["drop_col"])) {echo"<tr><td>" . html_select("indexes[$x][type]", array(-1=>"") + $Mc, $v["type"], ($x == count($L["indexes"]) ? "indexesAddRow(this);" : 1)), "<td>"; ksort($v["columns"]); $t = 1; foreach ($v["columns"]as$z=>$c) {echo"<span>" . select_input(" name='indexes[$x][columns][$t]' onchange=\"" . ($t == count($v["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . h(js_escape($y == "sql" ? "" : $_GET["indexes"] . "_")) . "');\"", ($m ? array_combine($m, $m) : $m), $c), ($y == "sql" || $y == "mssql" ? "<input type='number' name='indexes[$x][lengths][$t]' class='size' value='" . h($v["lengths"][$z]) . "'>" : ""), ($y != "sql" ? checkbox("indexes[$x][descs][$t]", 1, $v["descs"][$z], 'descending') : ""), " </span>"; $t++; }echo"<td><input name='indexes[$x][name]' value='" . h($v["name"]) . "' autocapitalize='off'>\n", "<td><input type='image' class='icon' name='drop_col[$x]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=cross.gif&amp;version=4.2.5&amp;driver=mysql' alt='x' title='" . 'Remove' . "' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n"; }$x++; }echo'</table>
684 684
 <p>
685 685
 <input type="submit" value="Save">
686
-<input type="hidden" name="token" value="',$T,'">
686
+<input type="hidden" name="token" value="',$T, '">
687 687
 </form>
688
-';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$k&&!isset($_POST["add_x"])){$F=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$F){if(DB!=""){$_GET["db"]=$F;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($F),'Database has been renamed.',rename_database($F,$L["collation"]));}else{$h=explode("\n",str_replace("\r","",$F));$Jf=true;$fd="";foreach($h
689
-as$i){if(count($h)==1||$i!=""){if(!create_database($i,$L["collation"]))$Jf=false;$fd=$i;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($fd),'Database has been created.',$Jf);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($F).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$k,array(),h(DB));$Xa=collations();$F=DB;if($_POST)$F=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$Xa);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$r){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$r,$C)&&$C[1]){$F=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'
688
+';}elseif (isset($_GET["database"])) {$L = $_POST; if ($_POST && !$k && !isset($_POST["add_x"])) {$F = trim($L["name"]); if ($_POST["drop"]) {$_GET["db"] = ""; queries_redirect(remove_from_uri("db|database"), 'Database has been dropped.', drop_databases(array(DB))); }elseif (DB !== $F) {if (DB != "") {$_GET["db"] = $F; queries_redirect(preg_replace('~\bdb=[^&]*&~', '', ME) . "db=" . urlencode($F), 'Database has been renamed.', rename_database($F, $L["collation"])); } else {$h = explode("\n", str_replace("\r", "", $F)); $Jf = true; $fd = ""; foreach ($h
689
+as$i) {if (count($h) == 1 || $i != "") {if (!create_database($i, $L["collation"]))$Jf = false; $fd = $i; }}restart_session(); set_session("dbs", null); queries_redirect(ME . "db=" . urlencode($fd), 'Database has been created.', $Jf); }} else {if (!$L["collation"])redirect(substr(ME, 0, -1)); query_redirect("ALTER DATABASE " . idf_escape($F) . (preg_match('~^[a-z0-9_]+$~i', $L["collation"]) ? " COLLATE $L[collation]" : ""), substr(ME, 0, -1), 'Database has been altered.'); }}page_header(DB != "" ? 'Alter database' : 'Create database', $k, array(), h(DB)); $Xa = collations(); $F = DB; if ($_POST)$F = $L["name"]; elseif (DB != "")$L["collation"] = db_collation(DB, $Xa); elseif ($y == "sql") {foreach (get_vals("SHOW GRANTS")as$r) {if (preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~', $r, $C) && $C[1]) {$F = stripcslashes(idf_unescape("`$C[2]`")); break; }}}echo'
690 690
 <form action="" method="post">
691 691
 <p>
692
-',($_POST["add_x"]||strpos($F,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($F).'</textarea><br>':'<input name="name" id="name" value="'.h($F).'" maxlength="64" autocapitalize="off">')."\n".($Xa?html_select("collation",array(""=>"(".'collation'.")")+$Xa,$L["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mssql'=>"ms187963.aspx",)):"");?>
692
+',($_POST["add_x"] || strpos($F, "\n") ? '<textarea id="name" name="name" rows="10" cols="40">' . h($F) . '</textarea><br>' : '<input name="name" id="name" value="' . h($F) . '" maxlength="64" autocapitalize="off">') . "\n" . ($Xa ? html_select("collation", array(""=>"(" . 'collation' . ")") + $Xa, $L["collation"]) . doc_link(array('sql'=>"charset-charsets.html", 'mssql'=>"ms187963.aspx",)) : ""); ?>
693 693
 <script type='text/javascript'>focus(document.getElementById('name'));</script>
694 694
 <input type="submit" value="Save">
695 695
 <?php
696
-if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='".'Add next'."'>\n";echo'<input type="hidden" name="token" value="',$T,'">
696
+if (DB != "")echo"<input type='submit' name='drop' value='" . 'Drop' . "'" . confirm() . ">\n"; elseif (!$_POST["add_x"] && $_GET["db"] == "")echo"<input type='image' class='icon' name='add' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='" . 'Add next' . "'>\n"; echo'<input type="hidden" name="token" value="', $T, '">
697 697
 </form>
698
-';}elseif(isset($_GET["call"])){$da=$_GET["call"];page_header('Call'.": ".h($da),$k);$if=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Lc=array();$le=array();foreach($if["fields"]as$t=>$l){if(substr($l["inout"],-3)=="OUT")$le[$t]="@".idf_escape($l["field"])." AS ".idf_escape($l["field"]);if(!$l["inout"]||substr($l["inout"],0,2)=="IN")$Lc[]=$t;}if(!$k&&$_POST){$Ja=array();foreach($if["fields"]as$z=>$l){if(in_array($z,$Lc)){$X=process_input($l);if($X===false)$X="''";if(isset($le[$z]))$e->query("SET @".idf_escape($l["field"])." = $X");}$Ja[]=(isset($le[$z])?"@".idf_escape($l["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ja).")";echo"<p><code class='jush-$y'>".h($I)."</code> <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>\n";if(!$e->multi_query($I))echo"<p class='error'>".error()."\n";else{$f=connect();if(is_object($f))$f->select_db(DB);do{$J=$e->store_result();if(is_object($J))select($J,$f);else
699
-echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$e->affected_rows)."\n";}while($e->next_result());if($le)select($e->query("SELECT ".implode(", ",$le)));}}echo'
698
+';}elseif (isset($_GET["call"])) {$da = $_GET["call"]; page_header('Call' . ": " . h($da), $k); $if = routine($da, (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDURE")); $Lc = array(); $le = array(); foreach ($if["fields"]as$t=>$l) {if (substr($l["inout"], -3) == "OUT")$le[$t] = "@" . idf_escape($l["field"]) . " AS " . idf_escape($l["field"]); if (!$l["inout"] || substr($l["inout"], 0, 2) == "IN")$Lc[] = $t; }if (!$k && $_POST) {$Ja = array(); foreach ($if["fields"]as$z=>$l) {if (in_array($z, $Lc)) {$X = process_input($l); if ($X === false)$X = "''"; if (isset($le[$z]))$e->query("SET @" . idf_escape($l["field"]) . " = $X"); }$Ja[] = (isset($le[$z]) ? "@" . idf_escape($l["field"]) : $X); }$I = (isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($da) . "(" . implode(", ", $Ja) . ")"; echo"<p><code class='jush-$y'>" . h($I) . "</code> <a href='" . h(ME) . "sql=" . urlencode($I) . "'>" . 'Edit' . "</a>\n"; if (!$e->multi_query($I))echo"<p class='error'>" . error() . "\n"; else {$f = connect(); if (is_object($f))$f->select_db(DB); do {$J = $e->store_result(); if (is_object($J))select($J, $f); else
699
+echo"<p class='message'>" . lang(array('Routine has been called, %d row affected.', 'Routine has been called, %d rows affected.'), $e->affected_rows) . "\n"; } while ($e->next_result()); if ($le)select($e->query("SELECT " . implode(", ", $le))); }}echo'
700 700
 <form action="" method="post">
701
-';if($Lc){echo"<table cellspacing='0'>\n";foreach($Lc
702
-as$z){$l=$if["fields"][$z];$F=$l["field"];echo"<tr><th>".$b->fieldName($l);$Y=$_POST["fields"][$F];if($Y!=""){if($l["type"]=="enum")$Y=+$Y;if($l["type"]=="set")$Y=array_sum($Y);}input($l,$Y,(string)$_POST["function"][$F]);echo"\n";}echo"</table>\n";}echo'<p>
701
+';if ($Lc) {echo"<table cellspacing='0'>\n"; foreach ($Lc
702
+as$z) {$l = $if["fields"][$z]; $F = $l["field"]; echo"<tr><th>" . $b->fieldName($l); $Y = $_POST["fields"][$F]; if ($Y != "") {if ($l["type"] == "enum")$Y = +$Y; if ($l["type"] == "set")$Y = array_sum($Y); }input($l, $Y, (string) $_POST["function"][$F]); echo"\n"; }echo"</table>\n"; }echo'<p>
703 703
 <input type="submit" value="Call">
704
-<input type="hidden" name="token" value="',$T,'">
704
+<input type="hidden" name="token" value="',$T, '">
705 705
 </form>
706
-';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$F=$_GET["name"];$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?'Foreign key has been dropped.':($F!=""?'Foreign key has been altered.':'Foreign key has been created.'));$B=ME."table=".urlencode($a);$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Vf=array();foreach($L["source"]as$z=>$X)$Vf[$z]=$L["target"][$z];$L["target"]=$Vf;if($y=="sqlite")queries_redirect($B,$D,recreate_table($a,$a,array(),array(),array(" $F"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$sa="ALTER TABLE ".table($a);$Fb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($F);if($_POST["drop"])query_redirect($sa.$Fb,$B,$D);else{query_redirect($sa.($F!=""?"$Fb,":"")."\nADD".format_foreign_key($L),$B,$D);$k='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."<br>$k";}}}page_header('Foreign key',$k,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($F!=""){$o=foreign_keys($a);$L=$o[$F];$L["source"][]="";}else{$L["table"]=$a;$L["source"]=array("");}$_f=array_keys(fields($a));$Vf=($a===$L["table"]?$_f:array_keys(fields($L["table"])));$We=array_keys(array_filter(table_status('',true),'fk_support'));echo'
706
+';}elseif (isset($_GET["foreign"])) {$a = $_GET["foreign"]; $F = $_GET["name"]; $L = $_POST; if ($_POST && !$k && !$_POST["add"] && !$_POST["change"] && !$_POST["change-js"]) {$D = ($_POST["drop"] ? 'Foreign key has been dropped.' : ($F != "" ? 'Foreign key has been altered.' : 'Foreign key has been created.')); $B = ME . "table=" . urlencode($a); $L["source"] = array_filter($L["source"], 'strlen'); ksort($L["source"]); $Vf = array(); foreach ($L["source"]as$z=>$X)$Vf[$z] = $L["target"][$z]; $L["target"] = $Vf; if ($y == "sqlite")queries_redirect($B, $D, recreate_table($a, $a, array(), array(), array(" $F"=>($_POST["drop"] ? "" : " " . format_foreign_key($L))))); else {$sa = "ALTER TABLE " . table($a); $Fb = "\nDROP " . ($y == "sql" ? "FOREIGN KEY " : "CONSTRAINT ") . idf_escape($F); if ($_POST["drop"])query_redirect($sa . $Fb, $B, $D); else {query_redirect($sa . ($F != "" ? "$Fb," : "") . "\nADD" . format_foreign_key($L), $B, $D); $k = 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' . "<br>$k"; }}}page_header('Foreign key', $k, array("table"=>$a), h($a)); if ($_POST) {ksort($L["source"]); if ($_POST["add"])$L["source"][] = ""; elseif ($_POST["change"] || $_POST["change-js"])$L["target"] = array(); }elseif ($F != "") {$o = foreign_keys($a); $L = $o[$F]; $L["source"][] = ""; } else {$L["table"] = $a; $L["source"] = array(""); }$_f = array_keys(fields($a)); $Vf = ($a === $L["table"] ? $_f : array_keys(fields($L["table"]))); $We = array_keys(array_filter(table_status('', true), 'fk_support')); echo'
707 707
 <form action="" method="post">
708 708
 <p>
709
-';if($L["db"]==""&&$L["ns"]==""){echo'Target table:
710
-',html_select("table",$We,$L["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'<input type="hidden" name="change-js" value="">
709
+';if ($L["db"] == "" && $L["ns"] == "") {echo'Target table:
710
+',html_select("table", $We, $L["table"], "this.form['change-js'].value = '1'; this.form.submit();"), '<input type="hidden" name="change-js" value="">
711 711
 <noscript><p><input type="submit" name="change" value="Change"></noscript>
712 712
 <table cellspacing="0">
713 713
 <thead><tr><th>Source<th>Target</thead>
714
-';$x=0;foreach($L["source"]as$z=>$X){echo"<tr>","<td>".html_select("source[".(+$z)."]",array(-1=>"")+$_f,$X,($x==count($L["source"])-1?"foreignAddRow(this);":1)),"<td>".html_select("target[".(+$z)."]",$Vf,$L["target"][$z]);$x++;}echo'</table>
714
+';$x = 0; foreach ($L["source"]as$z=>$X) {echo"<tr>", "<td>" . html_select("source[" . (+$z) . "]", array(-1=>"") + $_f, $X, ($x == count($L["source"]) - 1 ? "foreignAddRow(this);" : 1)), "<td>" . html_select("target[" . (+$z) . "]", $Vf, $L["target"][$z]); $x++; }echo'</table>
715 715
 <p>
716
-ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",$Vd),$L["on_delete"]),' ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",$Vd),$L["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"ms174979.aspx",'oracle'=>"clauses002.htm#sthref2903",)),'<p>
716
+ON DELETE: ',html_select("on_delete", array(-1=>"") + explode("|", $Vd), $L["on_delete"]), ' ON UPDATE: ', html_select("on_update", array(-1=>"") + explode("|", $Vd), $L["on_update"]), doc_link(array('sql'=>"innodb-foreign-key-constraints.html", 'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES", 'mssql'=>"ms174979.aspx", 'oracle'=>"clauses002.htm#sthref2903",)), '<p>
717 717
 <input type="submit" value="Save">
718 718
 <noscript><p><input type="submit" name="add" value="Add column"></noscript>
719
-';}if($F!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
719
+';}if ($F != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '">
720 720
 </form>
721
-';}elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;if($_POST&&!$k){$F=trim($L["name"]);$ua=" AS\n$L[select]";$B=ME."table=".urlencode($F);$D='View has been altered.';if($_GET["materialized"])$U="MATERIALIZED VIEW";else{$U="VIEW";if($y=="pgsql"){$Df=table_status($F);$U=($Df?strtoupper($Df["Engine"]):$U);}}if(!$_POST["drop"]&&$a==$F&&$y!="sqlite"&&$U!="MATERIALIZED VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($F).$ua,$B,$D);else{$Xf=$F."_adminer_".uniqid();drop_create("DROP $U ".table($a),"CREATE $U ".table($F).$ua,"DROP $U ".table($F),"CREATE $U ".table($Xf).$ua,"DROP $U ".table($Xf),($_POST["drop"]?substr(ME,0,-1):$B),'View has been dropped.',$D,'View has been created.',$a,$F);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;if(!$k)$k=error();}page_header(($a!=""?'Alter view':'Create view'),$k,array("table"=>$a),h($a));echo'
721
+';}elseif (isset($_GET["view"])) {$a = $_GET["view"]; $L = $_POST; if ($_POST && !$k) {$F = trim($L["name"]); $ua = " AS\n$L[select]"; $B = ME . "table=" . urlencode($F); $D = 'View has been altered.'; if ($_GET["materialized"])$U = "MATERIALIZED VIEW"; else {$U = "VIEW"; if ($y == "pgsql") {$Df = table_status($F); $U = ($Df ? strtoupper($Df["Engine"]) : $U); }}if (!$_POST["drop"] && $a == $F && $y != "sqlite" && $U != "MATERIALIZED VIEW")query_redirect(($y == "mssql" ? "ALTER" : "CREATE OR REPLACE") . " VIEW " . table($F) . $ua, $B, $D); else {$Xf = $F . "_adminer_" . uniqid(); drop_create("DROP $U " . table($a), "CREATE $U " . table($F) . $ua, "DROP $U " . table($F), "CREATE $U " . table($Xf) . $ua, "DROP $U " . table($Xf), ($_POST["drop"] ? substr(ME, 0, -1) : $B), 'View has been dropped.', $D, 'View has been created.', $a, $F); }}if (!$_POST && $a != "") {$L = view($a); $L["name"] = $a; if (!$k)$k = error(); }page_header(($a != "" ? 'Alter view' : 'Create view'), $k, array("table"=>$a), h($a)); echo'
722 722
 <form action="" method="post">
723
-<p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off">
724
-<p>';textarea("select",$L["select"]);echo'<p>
723
+<p>Name: <input name="name" value="',h($L["name"]), '" maxlength="64" autocapitalize="off">
724
+<p>';textarea("select", $L["select"]); echo'<p>
725 725
 <input type="submit" value="Save">
726
-';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
726
+';if ($_GET["view"] != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '">
727 727
 </form>
728
-';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Rc=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ef=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$k){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($L["INTERVAL_FIELD"],$Rc)&&isset($Ef[$L["STATUS"]])){$mf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$mf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$mf)."\n".$Ef[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$k);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo'
728
+';}elseif (isset($_GET["event"])) {$aa = $_GET["event"]; $Rc = array("YEAR", "QUARTER", "MONTH", "DAY", "HOUR", "MINUTE", "WEEK", "SECOND", "YEAR_MONTH", "DAY_HOUR", "DAY_MINUTE", "DAY_SECOND", "HOUR_MINUTE", "HOUR_SECOND", "MINUTE_SECOND"); $Ef = array("ENABLED"=>"ENABLE", "DISABLED"=>"DISABLE", "SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE"); $L = $_POST; if ($_POST && !$k) {if ($_POST["drop"])query_redirect("DROP EVENT " . idf_escape($aa), substr(ME, 0, -1), 'Event has been dropped.'); elseif (in_array($L["INTERVAL_FIELD"], $Rc) && isset($Ef[$L["STATUS"]])) {$mf = "\nON SCHEDULE " . ($L["INTERVAL_VALUE"] ? "EVERY " . q($L["INTERVAL_VALUE"]) . " $L[INTERVAL_FIELD]" . ($L["STARTS"] ? " STARTS " . q($L["STARTS"]) : "") . ($L["ENDS"] ? " ENDS " . q($L["ENDS"]) : "") : "AT " . q($L["STARTS"])) . " ON COMPLETION" . ($L["ON_COMPLETION"] ? "" : " NOT") . " PRESERVE"; queries_redirect(substr(ME, 0, -1), ($aa != "" ? 'Event has been altered.' : 'Event has been created.'), queries(($aa != "" ? "ALTER EVENT " . idf_escape($aa) . $mf . ($aa != $L["EVENT_NAME"] ? "\nRENAME TO " . idf_escape($L["EVENT_NAME"]) : "") : "CREATE EVENT " . idf_escape($L["EVENT_NAME"]) . $mf) . "\n" . $Ef[$L["STATUS"]] . " COMMENT " . q($L["EVENT_COMMENT"]) . rtrim(" DO\n$L[EVENT_DEFINITION]", ";") . ";")); }}page_header(($aa != "" ? 'Alter event' . ": " . h($aa) : 'Create event'), $k); if (!$L && $aa != "") {$M = get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = " . q(DB) . " AND EVENT_NAME = " . q($aa)); $L = reset($M); }echo'
729 729
 <form action="" method="post">
730 730
 <table cellspacing="0">
731
-<tr><th>Name<td><input name="EVENT_NAME" value="',h($L["EVENT_NAME"]),'" maxlength="64" autocapitalize="off">
732
-<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$L[EXECUTE_AT]$L[STARTS]"),'">
733
-<tr><th title="datetime">End<td><input name="ENDS" value="',h($L["ENDS"]),'">
734
-<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($L["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$Rc,$L["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$Ef,$L["STATUS"]),'<tr><th>Comment<td><input name="EVENT_COMMENT" value="',h($L["EVENT_COMMENT"]),'" maxlength="64">
735
-<tr><th>&nbsp;<td>',checkbox("ON_COMPLETION","PRESERVE",$L["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'</table>
736
-<p>';textarea("EVENT_DEFINITION",$L["EVENT_DEFINITION"]);echo'<p>
731
+<tr><th>Name<td><input name="EVENT_NAME" value="',h($L["EVENT_NAME"]), '" maxlength="64" autocapitalize="off">
732
+<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$L[EXECUTE_AT]$L[STARTS]"), '">
733
+<tr><th title="datetime">End<td><input name="ENDS" value="',h($L["ENDS"]), '">
734
+<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($L["INTERVAL_VALUE"]), '" class="size"> ', html_select("INTERVAL_FIELD", $Rc, $L["INTERVAL_FIELD"]), '<tr><th>Status<td>', html_select("STATUS", $Ef, $L["STATUS"]), '<tr><th>Comment<td><input name="EVENT_COMMENT" value="', h($L["EVENT_COMMENT"]), '" maxlength="64">
735
+<tr><th>&nbsp;<td>',checkbox("ON_COMPLETION", "PRESERVE", $L["ON_COMPLETION"] == "PRESERVE", 'On completion preserve'), '</table>
736
+<p>';textarea("EVENT_DEFINITION", $L["EVENT_DEFINITION"]); echo'<p>
737 737
 <input type="submit" value="Save">
738
-';if($aa!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
738
+';if ($aa != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '">
739 739
 </form>
740
-';}elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$if=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$k){$Xf="$L[name]_adminer_".uniqid();drop_create("DROP $if ".idf_escape($da),create_routine($if,$L),"DROP $if ".idf_escape($L["name"]),create_routine($if,array("name"=>$Xf)+$L),"DROP $if ".idf_escape($Xf),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$L["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$k);if(!$_POST&&$da!=""){$L=routine($da,$if);$L["name"]=$da;}$Xa=get_vals("SHOW CHARACTER SET");sort($Xa);$jf=routine_languages();echo'
740
+';}elseif (isset($_GET["procedure"])) {$da = $_GET["procedure"]; $if = (isset($_GET["function"]) ? "FUNCTION" : "PROCEDURE"); $L = $_POST; $L["fields"] = (array) $L["fields"]; if ($_POST && !process_fields($L["fields"]) && !$k) {$Xf = "$L[name]_adminer_" . uniqid(); drop_create("DROP $if " . idf_escape($da), create_routine($if, $L), "DROP $if " . idf_escape($L["name"]), create_routine($if, array("name"=>$Xf) + $L), "DROP $if " . idf_escape($Xf), substr(ME, 0, -1), 'Routine has been dropped.', 'Routine has been altered.', 'Routine has been created.', $da, $L["name"]); }page_header(($da != "" ? (isset($_GET["function"]) ? 'Alter function' : 'Alter procedure') . ": " . h($da) : (isset($_GET["function"]) ? 'Create function' : 'Create procedure')), $k); if (!$_POST && $da != "") {$L = routine($da, $if); $L["name"] = $da; }$Xa = get_vals("SHOW CHARACTER SET"); sort($Xa); $jf = routine_languages(); echo'
741 741
 <form action="" method="post" id="form">
742
-<p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off">
743
-',($jf?'Language'.": ".html_select("language",$jf,$L["language"]):""),'<input type="submit" value="Save">
742
+<p>Name: <input name="name" value="',h($L["name"]), '" maxlength="64" autocapitalize="off">
743
+',($jf ? 'Language' . ": " . html_select("language", $jf, $L["language"]) : ""), '<input type="submit" value="Save">
744 744
 <table cellspacing="0" class="nowrap">
745
-';edit_fields($L["fields"],$Xa,$if);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",$L["returns"],$Xa);}echo'</table>
746
-<p>';textarea("definition",$L["definition"]);echo'<p>
745
+';edit_fields($L["fields"], $Xa, $if); if (isset($_GET["function"])) {echo"<tr><td>" . 'Return type'; edit_type("returns", $L["returns"], $Xa); }echo'</table>
746
+<p>';textarea("definition", $L["definition"]); echo'<p>
747 747
 <input type="submit" value="Save">
748
-';if($da!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
748
+';if ($da != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '">
749 749
 </form>
750
-';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$F=$_GET["name"];$pg=trigger_options();$L=(array)trigger($F)+array("Trigger"=>$a."_bi");if($_POST){if(!$k&&in_array($_POST["Timing"],$pg["Timing"])&&in_array($_POST["Event"],$pg["Event"])&&in_array($_POST["Type"],$pg["Type"])){$Ud=" ON ".table($a);$Fb="DROP TRIGGER ".idf_escape($F).($y=="pgsql"?$Ud:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Fb,$B,'Trigger has been dropped.');else{if($F!="")queries($Fb);queries_redirect($B,($F!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Ud,$_POST)));if($F!="")queries(create_trigger($Ud,$L+array("Type"=>reset($pg["Type"]))));}}$L=$_POST;}page_header(($F!=""?'Alter trigger'.": ".h($F):'Create trigger'),$k,array("table"=>$a));echo'
750
+';}elseif (isset($_GET["trigger"])) {$a = $_GET["trigger"]; $F = $_GET["name"]; $pg = trigger_options(); $L = (array) trigger($F) + array("Trigger"=>$a . "_bi"); if ($_POST) {if (!$k && in_array($_POST["Timing"], $pg["Timing"]) && in_array($_POST["Event"], $pg["Event"]) && in_array($_POST["Type"], $pg["Type"])) {$Ud = " ON " . table($a); $Fb = "DROP TRIGGER " . idf_escape($F) . ($y == "pgsql" ? $Ud : ""); $B = ME . "table=" . urlencode($a); if ($_POST["drop"])query_redirect($Fb, $B, 'Trigger has been dropped.'); else {if ($F != "")queries($Fb); queries_redirect($B, ($F != "" ? 'Trigger has been altered.' : 'Trigger has been created.'), queries(create_trigger($Ud, $_POST))); if ($F != "")queries(create_trigger($Ud, $L + array("Type"=>reset($pg["Type"])))); }}$L = $_POST; }page_header(($F != "" ? 'Alter trigger' . ": " . h($F) : 'Create trigger'), $k, array("table"=>$a)); echo'
751 751
 <form action="" method="post" id="form">
752 752
 <table cellspacing="0">
753
-<tr><th>Time<td>',html_select("Timing",$pg["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$pg["Event"],$L["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$pg["Event"])?" <input name='Of' value='".h($L["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$pg["Type"],$L["Type"]),'</table>
754
-<p>Name: <input name="Trigger" value="',h($L["Trigger"]);?>" maxlength="64" autocapitalize="off">
753
+<tr><th>Time<td>',html_select("Timing", $pg["Timing"], $L["Timing"], "triggerChange(/^" . preg_quote($a, "/") . "_[ba][iud]$/, '" . js_escape($a) . "', this.form);"), '<tr><th>Event<td>', html_select("Event", $pg["Event"], $L["Event"], "this.form['Timing'].onchange();"), (in_array("UPDATE OF", $pg["Event"]) ? " <input name='Of' value='" . h($L["Of"]) . "' class='hidden'>" : ""), '<tr><th>Type<td>', html_select("Type", $pg["Type"], $L["Type"]), '</table>
754
+<p>Name: <input name="Trigger" value="',h($L["Trigger"]); ?>" maxlength="64" autocapitalize="off">
755 755
 <script type="text/javascript">document.getElementById('form')['Timing'].onchange();</script>
756
-<p><?php textarea("Statement",$L["Statement"]);echo'<p>
756
+<p><?php textarea("Statement", $L["Statement"]); echo'<p>
757 757
 <input type="submit" value="Save">
758
-';if($F!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
758
+';if ($F != "") {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '">
759 759
 </form>
760
-';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Le=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$hb)$Le[$hb][$L["Privilege"]]=$L["Comment"];}$Le["Server Admin"]+=$Le["File access on server"];$Le["Databases"]["Create routine"]=$Le["Procedures"]["Create routine"];unset($Le["Procedures"]["Create routine"]);$Le["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Le["Columns"][$X]=$Le["Tables"][$X];unset($Le["Server Admin"]["Usage"]);foreach($Le["Tables"]as$z=>$X)unset($Le["Databases"][$z]);$Hd=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Hd[$X]=(array)$Hd[$X]+(array)$_POST["grants"][$z];}$yc=array();$Sd="";if(isset($_GET["host"])&&($J=$e->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$C[1],$rd,PREG_SET_ORDER)){foreach($rd
761
-as$X){if($X[1]!="USAGE")$yc["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$L[0]))$yc["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$C))$Sd=$C[1];}}if($_POST&&!$k){$Td=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Td",ME."privileges=",'User has been dropped.');else{$Jd=q($_POST["user"])."@".q($_POST["host"]);$ve=$_POST["pass"];if($ve!=''&&!$_POST["hashed"]){$ve=$e->result("SELECT PASSWORD(".q($ve).")");$k=!$ve;}$lb=false;if(!$k){if($Td!=$Jd){$lb=queries(($e->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Jd IDENTIFIED BY PASSWORD ".q($ve));$k=!$lb;}elseif($ve!=$Sd)queries("SET PASSWORD FOR $Jd = ".q($ve));}if(!$k){$ff=array();foreach($Hd
762
-as$Nd=>$r){if(isset($_GET["grant"]))$r=array_filter($r);$r=array_keys($r);if(isset($_GET["grant"]))$ff=array_diff(array_keys(array_filter($Hd[$Nd],'strlen')),$r);elseif($Td==$Jd){$Qd=array_keys((array)$yc[$Nd]);$ff=array_diff($Qd,$r);$r=array_diff($r,$Qd);unset($yc[$Nd]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Nd,$C)&&(!grant("REVOKE",$ff,$C[2]," ON $C[1] FROM $Jd")||!grant("GRANT",$r,$C[2]," ON $C[1] TO $Jd"))){$k=true;break;}}}if(!$k&&isset($_GET["host"])){if($Td!=$Jd)queries("DROP USER $Td");elseif(!isset($_GET["grant"])){foreach($yc
763
-as$Nd=>$ff){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Nd,$C))grant("REVOKE",array_keys($ff),$C[2]," ON $C[1] FROM $Jd");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$k);if($lb)$e->query("DROP USER $Jd");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$k,array("privileges"=>array('','Privileges')));if($_POST){$L=$_POST;$yc=$Hd;}else{$L=$_GET+array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$Sd;if($Sd!="")$L["hashed"]=true;$yc[(DB==""||$yc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
760
+';}elseif (isset($_GET["user"])) {$fa = $_GET["user"]; $Le = array(""=>array("All privileges"=>"")); foreach (get_rows("SHOW PRIVILEGES")as$L) {foreach (explode(",", ($L["Privilege"] == "Grant option" ? "" : $L["Context"]))as$hb)$Le[$hb][$L["Privilege"]] = $L["Comment"]; }$Le["Server Admin"] += $Le["File access on server"]; $Le["Databases"]["Create routine"] = $Le["Procedures"]["Create routine"]; unset($Le["Procedures"]["Create routine"]); $Le["Columns"] = array(); foreach (array("Select", "Insert", "Update", "References")as$X)$Le["Columns"][$X] = $Le["Tables"][$X]; unset($Le["Server Admin"]["Usage"]); foreach ($Le["Tables"]as$z=>$X)unset($Le["Databases"][$z]); $Hd = array(); if ($_POST) {foreach ($_POST["objects"]as$z=>$X)$Hd[$X] = (array) $Hd[$X] + (array) $_POST["grants"][$z]; }$yc = array(); $Sd = ""; if (isset($_GET["host"]) && ($J = $e->query("SHOW GRANTS FOR " . q($fa) . "@" . q($_GET["host"])))) {while ($L = $J->fetch_row()) {if (preg_match('~GRANT (.*) ON (.*) TO ~', $L[0], $C) && preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~', $C[1], $rd, PREG_SET_ORDER)) {foreach ($rd
761
+as$X) {if ($X[1] != "USAGE")$yc["$C[2]$X[2]"][$X[1]] = true; if (preg_match('~ WITH GRANT OPTION~', $L[0]))$yc["$C[2]$X[2]"]["GRANT OPTION"] = true; }}if (preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~", $L[0], $C))$Sd = $C[1]; }}if ($_POST && !$k) {$Td = (isset($_GET["host"]) ? q($fa) . "@" . q($_GET["host"]) : "''"); if ($_POST["drop"])query_redirect("DROP USER $Td", ME . "privileges=", 'User has been dropped.'); else {$Jd = q($_POST["user"]) . "@" . q($_POST["host"]); $ve = $_POST["pass"]; if ($ve != '' && !$_POST["hashed"]) {$ve = $e->result("SELECT PASSWORD(" . q($ve) . ")"); $k = !$ve; }$lb = false; if (!$k) {if ($Td != $Jd) {$lb = queries(($e->server_info < 5 ? "GRANT USAGE ON *.* TO" : "CREATE USER") . " $Jd IDENTIFIED BY PASSWORD " . q($ve)); $k = !$lb; }elseif ($ve != $Sd)queries("SET PASSWORD FOR $Jd = " . q($ve)); }if (!$k) {$ff = array(); foreach ($Hd
762
+as$Nd=>$r) {if (isset($_GET["grant"]))$r = array_filter($r); $r = array_keys($r); if (isset($_GET["grant"]))$ff = array_diff(array_keys(array_filter($Hd[$Nd], 'strlen')), $r); elseif ($Td == $Jd) {$Qd = array_keys((array) $yc[$Nd]); $ff = array_diff($Qd, $r); $r = array_diff($r, $Qd); unset($yc[$Nd]); }if (preg_match('~^(.+)\\s*(\\(.*\\))?$~U', $Nd, $C) && (!grant("REVOKE", $ff, $C[2], " ON $C[1] FROM $Jd") || !grant("GRANT", $r, $C[2], " ON $C[1] TO $Jd"))) {$k = true; break; }}}if (!$k && isset($_GET["host"])) {if ($Td != $Jd)queries("DROP USER $Td"); elseif (!isset($_GET["grant"])) {foreach ($yc
763
+as$Nd=>$ff) {if (preg_match('~^(.+)(\\(.*\\))?$~U', $Nd, $C))grant("REVOKE", array_keys($ff), $C[2], " ON $C[1] FROM $Jd"); }}}queries_redirect(ME . "privileges=", (isset($_GET["host"]) ? 'User has been altered.' : 'User has been created.'), !$k); if ($lb)$e->query("DROP USER $Jd"); }}page_header((isset($_GET["host"]) ? 'Username' . ": " . h("$fa@$_GET[host]") : 'Create user'), $k, array("privileges"=>array('', 'Privileges'))); if ($_POST) {$L = $_POST; $yc = $Hd; } else {$L = $_GET + array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)")); $L["pass"] = $Sd; if ($Sd != "")$L["hashed"] = true; $yc[(DB == "" || $yc ? "" : idf_escape(addcslashes(DB, "%_\\"))) . ".*"] = array(); }echo'<form action="" method="post">
764 764
 <table cellspacing="0">
765
-<tr><th>Server<td><input name="host" maxlength="60" value="',h($L["host"]),'" autocapitalize="off">
766
-<tr><th>Username<td><input name="user" maxlength="16" value="',h($L["user"]),'" autocapitalize="off">
767
-<tr><th>Password<td><input name="pass" id="pass" value="',h($L["pass"]),'">
768
-';if(!$L["hashed"]){echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>';}echo
769
-checkbox("hashed",1,$L["hashed"],'Hashed',"typePassword(this.form['pass'], this.checked);"),'</table>
765
+<tr><th>Server<td><input name="host" maxlength="60" value="',h($L["host"]), '" autocapitalize="off">
766
+<tr><th>Username<td><input name="user" maxlength="16" value="',h($L["user"]), '" autocapitalize="off">
767
+<tr><th>Password<td><input name="pass" id="pass" value="',h($L["pass"]), '">
768
+';if (!$L["hashed"]) {echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>'; }echo
769
+checkbox("hashed", 1, $L["hashed"], 'Hashed', "typePassword(this.form['pass'], this.checked);"), '</table>
770 770
 
771
-';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($yc
772
-as$Nd=>$r){echo'<th>'.($Nd!="*.*"?"<input name='objects[$t]' value='".h($Nd)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$hb=>$xb){foreach((array)$Le[$hb]as$Ke=>$bb){echo"<tr".odd()."><td".($xb?">$xb<td":" colspan='2'").' lang="en" title="'.h($bb).'">'.h($Ke);$t=0;foreach($yc
773
-as$Nd=>$r){$F="'grants[$t][".h(strtoupper($Ke))."]'";$Y=$r[strtoupper($Ke)];if($hb=="Server Admin"&&$Nd!=(isset($yc["*.*"])?"*.*":".*"))echo"<td>&nbsp;";elseif(isset($_GET["grant"]))echo"<td><select name=$F><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else
774
-echo"<td align='center'><label class='block'><input type='checkbox' name=$F value='1'".($Y?" checked":"").($Ke=="All privileges"?" id='grants-$t-all'":($Ke=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$t-all');\""))."></label>";$t++;}}}echo"</table>\n",'<p>
771
+';echo"<table cellspacing='0'>\n", "<thead><tr><th colspan='2'>" . 'Privileges' . doc_link(array('sql'=>"grant.html#priv_level")); $t = 0; foreach ($yc
772
+as$Nd=>$r) {echo'<th>' . ($Nd != "*.*" ? "<input name='objects[$t]' value='" . h($Nd) . "' size='10' autocapitalize='off'>" : "<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*"); $t++; }echo"</thead>\n"; foreach (array(""=>"", "Server Admin"=>'Server', "Databases"=>'Database', "Tables"=>'Table', "Columns"=>'Column', "Procedures"=>'Routine',)as$hb=>$xb) {foreach ((array) $Le[$hb]as$Ke=>$bb) {echo"<tr" . odd() . "><td" . ($xb ? ">$xb<td" : " colspan='2'") . ' lang="en" title="' . h($bb) . '">' . h($Ke); $t = 0; foreach ($yc
773
+as$Nd=>$r) {$F = "'grants[$t][" . h(strtoupper($Ke)) . "]'"; $Y = $r[strtoupper($Ke)]; if ($hb == "Server Admin" && $Nd != (isset($yc["*.*"]) ? "*.*" : ".*"))echo"<td>&nbsp;"; elseif (isset($_GET["grant"]))echo"<td><select name=$F><option><option value='1'" . ($Y ? " selected" : "") . ">" . 'Grant' . "<option value='0'" . ($Y == "0" ? " selected" : "") . ">" . 'Revoke' . "</select>"; else
774
+echo"<td align='center'><label class='block'><input type='checkbox' name=$F value='1'" . ($Y ? " checked" : "") . ($Ke == "All privileges" ? " id='grants-$t-all'" : ($Ke == "Grant option" ? "" : " onclick=\"if (this.checked) formUncheck('grants-$t-all');\"")) . "></label>"; $t++; }}}echo"</table>\n", '<p>
775 775
 <input type="submit" value="Save">
776
-';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
776
+';if (isset($_GET["host"])) {echo'<input type="submit" name="drop" value="Drop"', confirm(), '>'; }echo'<input type="hidden" name="token" value="', $T, '">
777 777
 </form>
778
-';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$k){$cd=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$cd++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$cd),$cd||!$_POST["kill"]);}page_header('Process list',$k);echo'
778
+';}elseif (isset($_GET["processlist"])) {if (support("kill") && $_POST && !$k) {$cd = 0; foreach ((array) $_POST["kill"]as$X) {if (kill_process($X))$cd++; }queries_redirect(ME . "processlist=", lang(array('%d process has been killed.', '%d processes have been killed.'), $cd), $cd || !$_POST["kill"]); }page_header('Process list', $k); echo'
779 779
 <form action="" method="post">
780 780
 <table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable">
781
-';$t=-1;foreach(process_list()as$t=>$L){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th>&nbsp;":"");foreach($L
782
-as$z=>$X)echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$L[$y=="sql"?"Id":"pid"],0):"");foreach($L
783
-as$z=>$X)echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$y'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':nbsp($X));echo"\n";}echo'</table>
781
+';$t = -1; foreach (process_list()as$t=>$L) {if (!$t) {echo"<thead><tr lang='en'>" . (support("kill") ? "<th>&nbsp;" : ""); foreach ($L
782
+as$z=>$X)echo"<th>$z" . doc_link(array('sql'=>"show-processlist.html#processlist_" . strtolower($z), 'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW", 'oracle'=>"../b14237/dynviews_2088.htm",)); echo"</thead>\n"; }echo"<tr" . odd() . ">" . (support("kill") ? "<td>" . checkbox("kill[]", $L[$y == "sql" ? "Id" : "pid"], 0) : ""); foreach ($L
783
+as$z=>$X)echo"<td>" . (($y == "sql" && $z == "Info" && preg_match("~Query|Killed~", $L["Command"]) && $X != "") || ($y == "pgsql" && $z == "current_query" && $X != "<IDLE>") || ($y == "oracle" && $z == "sql_text" && $X != "") ? "<code class='jush-$y'>" . shorten_utf8($X, 100, "</code>") . ' <a href="' . h(ME . ($L["db"] != "" ? "db=" . urlencode($L["db"]) . "&" : "") . "sql=" . urlencode($X)) . '">' . 'Clone' . '</a>' : nbsp($X)); echo"\n"; }echo'</table>
784 784
 <script type=\'text/javascript\'>tableCheck();</script>
785 785
 <p>
786
-';if(support("kill")){echo($t+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";}echo'<input type="hidden" name="token" value="',$T,'">
786
+';if (support("kill")) {echo($t + 1) . "/" . sprintf('%d in total', max_connections()), "<p><input type='submit' value='" . 'Kill' . "'>\n"; }echo'<input type="hidden" name="token" value="', $T, '">
787 787
 </form>
788
-';}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$w=indexes($a);$m=fields($a);$o=column_foreign_keys($a);$Pd="";if($R["Oid"]){$Pd=($y=="sqlite"?"rowid":"oid");$w[]=array("type"=>"PRIMARY","columns"=>array($Pd));}parse_str($_COOKIE["adminer_import"],$ma);$gf=array();$d=array();$ag=null;foreach($m
789
-as$z=>$l){$F=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$F!=""){$d[$z]=html_entity_decode(strip_tags($F),ENT_QUOTES);if(is_shortable($l))$ag=$b->selectLengthProcess();}$gf+=$l["privileges"];}list($N,$s)=$b->selectColumnsProcess($d,$w);$Vc=count($s)<count($N);$Z=$b->selectSearchProcess($m,$w);$de=$b->selectOrderProcess($m,$w);$_=$b->selectLimitProcess();$wc=($N?implode(", ",$N):"*".($Pd?", $Pd":"")).convert_fields($d,$m,$N)."\nFROM ".table($a);$zc=($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$xg=>$L){$ua=convert_field($m[key($L)]);$N=array($ua?$ua:idf_escape(key($L)));$Z[]=where_check($xg,$m);$K=$j->select($a,$N,$Z,$N);if($K)echo
790
-reset($K->fetch_row());}exit;}if($_POST&&!$k){$Pg=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Oa=array();foreach($_POST["check"]as$Ma)$Oa[]=where_check($Ma,$m);$Pg[]="((".implode(") OR (",$Oa)."))";}$Pg=($Pg?"\nWHERE ".implode(" AND ",$Pg):"");$He=$zg=null;foreach($w
791
-as$v){if($v["type"]=="PRIMARY"){$He=array_flip($v["columns"]);$zg=($N?$He:array());break;}}foreach((array)$zg
792
-as$z=>$X){if(in_array(idf_escape($z),$N))unset($zg[$z]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$zg===array())$I="SELECT $wc$Pg$zc";else{$vg=array();foreach($_POST["check"]as$X)$vg[]="(SELECT".limit($wc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m).$zc,1).")";$I=implode(" UNION ALL ",$vg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$o)){if($_POST["save"]||$_POST["delete"]){$J=true;$na=0;$P=array();if(!$_POST["delete"]){foreach($d
793
-as$F=>$X){$X=process_input($m[$F]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($F)]=($X!==false?$X:idf_escape($F));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($zg===array()&&is_array($_POST["check"]))||$Vc){$J=($_POST["delete"]?$j->delete($a,$Pg):($_POST["clone"]?queries("INSERT $I$Pg"):$j->update($a,$P,$Pg)));$na=$e->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Og="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m);$J=($_POST["delete"]?$j->delete($a,$Og,1):($_POST["clone"]?queries("INSERT".limit1($I,$Og)):$j->update($a,$P,$Og)));if(!$J)break;$na+=$e->affected_rows;}}}$D=lang(array('%d item has been affected.','%d items have been affected.'),$na);if($_POST["clone"]&&$J&&$na==1){$gd=last_id();if($gd)$D=sprintf('Item%s has been inserted.'," $gd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$na=0;foreach($_POST["val"]as$xg=>$L){$P=array();foreach($L
794
-as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$m[$z]["type"])||$X!=""?$b->processInput($m[$z],$X):"NULL");}$J=$j->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($xg,$m),!($Vc||$zg===array())," ");if(!$J)break;$na+=$e->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$na),$J);}}elseif(!is_string($mc=get_file("csv_file",true)))$k=upload_error($mc);elseif(!preg_match('~~u',$mc))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ma["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Ya=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$mc,$rd);$na=count($rd[0]);$j->begin();$sf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($rd[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$sf]*)$sf~",$X.$sf,$sd);if(!$z&&!array_diff($sd[1],$Ya)){$Ya=$sd[1];$na--;}else{$P=array();foreach($sd[1]as$t=>$Ua)$P[idf_escape($Ya[$t])]=($Ua==""&&$m[$Ya[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ua))));$M[]=$P;}}$J=(!$M||$j->insertUpdate($a,$M,$He));if($J)$j->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$na),$J);$j->rollback();}}}$Pf=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
795
-page_header('Select'.": $Pf",$k);$P=null;if(isset($gf["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if(count($o[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$P);if(!$d&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$d);$b->selectSearchPrint($Z,$d,$w);$b->selectOrderPrint($de,$d,$w);$b->selectLimitPrint($_);$b->selectLengthPrint($ag);$b->selectActionPrint($w);echo"</form>\n";$G=$_GET["page"];if($G=="last"){$vc=$e->result(count_rows($a,$Z,$Vc,$s));$G=floor(max(0,$vc-1)/$_);}$pf=$N;if(!$pf){$pf[]="*";if($Pd)$pf[]=$Pd;}$ib=convert_fields($d,$m,$N);if($ib)$pf[]=substr($ib,2);$J=$j->select($a,$pf,$Z,$s,$de,$_,$G,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($y=="mssql"&&$G)$J->seek($_*$G);$Rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql")$vc=$e->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$Ba=$b->backwardKeys($a,$Pf);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$s&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Gd=array();$xc=array();reset($N);$Te=1;foreach($M[0]as$z=>$X){if($z!=$Pd){$X=$_GET["columns"][key($N)];$l=$m[$N?($X?$X["col"]:current($N)):$z];$F=($l?$b->fieldName($l,$Te):($X["fun"]?"*":$z));if($F!=""){$Te++;$Gd[$z]=$F;$c=idf_escape($z);$Hc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$xb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($Hc.($de[0]==$c||$de[0]==$z||(!$de&&$Vc&&$s[0]==$c)?$xb:'')).'">';echo
796
-apply_sql_function($X["fun"],$F)."</a>";echo"<span class='column hidden'>","<a href='".h($Hc.$xb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($z)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$xc[$z]=$X["fun"];next($N);}}$md=array();if($_GET["modify"]){foreach($M
797
-as$L){foreach($L
798
-as$z=>$X)$md[$z]=max($md[$z],min(40,strlen(utf8_decode($X))));}}echo($Ba?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($_%2==1&&$G%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$o)as$E=>$L){$wg=unique_array($M[$E],$w);if(!$wg){$wg=array();foreach($M[$E]as$z=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$z))$wg[$z]=$X;}}$xg="";foreach($wg
799
-as$z=>$X){if(($y=="sql"||$y=="pgsql")&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".($y=='sql'&&preg_match("~^utf8_~",$m[$z]["collation"])?$z:"CONVERT($z USING ".charset($e).")").")";$X=md5($X);}$xg.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X):"null%5B%5D=".urlencode($z));}echo"<tr".odd().">".(!$s&&$N?"":"<td>".checkbox("check[]",substr($xg,1),in_array(substr($xg,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Vc||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$xg)."'>".'edit'."</a>"));foreach($L
800
-as$z=>$X){if(isset($Gd[$z])){$l=$m[$z];if($X!=""&&(!isset($Rb[$z])||$Rb[$z]!=""))$Rb[$z]=(is_mail($X)?$Gd[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$xg;if(!$A&&$X!==null){foreach((array)$o[$z]as$n){if(count($o[$z])==1||end($n["source"])==$z){$A="";foreach($n["source"]as$t=>$_f)$A.=where_link($t,$n["target"][$t],$M[$E][$_f]);$A=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$A;if(count($n["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$wg))$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($wg
801
-as$Zc=>$W)$A.=where_link($t++,$Zc,$W);}$X=select_value($X,$A,$l,$ag);$u=h("val[$xg][".bracket_escape($z)."]");$Y=$_POST["val"][$xg][bracket_escape($z)];$Mb=!is_array($L[$z])&&is_utf8($X)&&$M[$E][$z]==$L[$z]&&!$xc[$z];$Zf=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$Mb)||$Y!==null){$Ac=h($Y!==null?$Y:$L[$z]);echo"<td>".($Zf?"<textarea name='$u' cols='30' rows='".(substr_count($L[$z],"\n")+1)."'>$Ac</textarea>":"<input name='$u' value='$Ac' size='$md[$z]'>");}else{$qd=strpos($X,"<i>...</i>");echo"<td id='$u' onclick=\"selectClick(this, event, ".($qd?2:($Zf?1:0)).($Mb?"":", '".h('Use edit link to modify this value.')."'").");\">$X";}}}if($Ba)echo"<td>";$b->backwardKeysPrint($Ba,$M[$E]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$G)&&!is_ajax()){$bc=true;if($_GET["page"]!="last"){if(!+$_)$vc=count($M);elseif($y!="sql"||!$Vc){$vc=($Vc?false:found_rows($R,$Z));if($vc<max(1e4,2*($G+1)*$_))$vc=reset(slow_query(count_rows($a,$Z,$Vc,$s)));else$bc=false;}}if(+$_&&($vc===false||$vc>$_||$G)){echo"<p class='pages'>";$ud=($vc===false?$G+(count($M)>=$_?2:1):floor(($vc-1)/$_));if($y!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($G+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$G).($G>5?" ...":"");for($t=max(1,$G-4);$t<min($ud,$G+5);$t++)echo
802
-pagination($t,$G);if($ud>0){echo($G+5<$ud?" ...":""),($bc&&$vc!==false?pagination($ud,$G):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ud'>".'last'."</a>");}echo(($vc===false?count($M)+1:$vc-$G*$_)>$_?' <a href="'.h(remove_from_uri("page")."&page=".($G+1)).'" onclick="return !selectLoadMore(this, '.(+$_).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$G).($G>1?" ...":""),($G?pagination($G,$G):""),($ud>$G?pagination($G+1,$G).($ud>$G+1?" ...":""):"");}}echo"<p class='count'>\n",($vc!==false?"(".($bc?"":"~ ").lang(array('%d row','%d rows'),$vc).") ":"");$Bb=($bc?"":"~ ").$vc;echo
803
-checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Bb' : checked); selectCount('selected2', this.checked || !checked ? '$Bb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
804
-<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
788
+';}elseif (isset($_GET["select"])) {$a = $_GET["select"]; $R = table_status1($a); $w = indexes($a); $m = fields($a); $o = column_foreign_keys($a); $Pd = ""; if ($R["Oid"]) {$Pd = ($y == "sqlite" ? "rowid" : "oid"); $w[] = array("type"=>"PRIMARY", "columns"=>array($Pd)); }parse_str($_COOKIE["adminer_import"], $ma); $gf = array(); $d = array(); $ag = null; foreach ($m
789
+as$z=>$l) {$F = $b->fieldName($l); if (isset($l["privileges"]["select"]) && $F != "") {$d[$z] = html_entity_decode(strip_tags($F), ENT_QUOTES); if (is_shortable($l))$ag = $b->selectLengthProcess(); }$gf += $l["privileges"]; }list($N, $s) = $b->selectColumnsProcess($d, $w); $Vc = count($s) < count($N); $Z = $b->selectSearchProcess($m, $w); $de = $b->selectOrderProcess($m, $w); $_ = $b->selectLimitProcess(); $wc = ($N ? implode(", ", $N) : "*" . ($Pd ? ", $Pd" : "")) . convert_fields($d, $m, $N) . "\nFROM " . table($a); $zc = ($s && $Vc ? "\nGROUP BY " . implode(", ", $s) : "") . ($de ? "\nORDER BY " . implode(", ", $de) : ""); if ($_GET["val"] && is_ajax()) {header("Content-Type: text/plain; charset=utf-8"); foreach ($_GET["val"]as$xg=>$L) {$ua = convert_field($m[key($L)]); $N = array($ua ? $ua : idf_escape(key($L))); $Z[] = where_check($xg, $m); $K = $j->select($a, $N, $Z, $N); if ($K)echo
790
+reset($K->fetch_row()); }exit; }if ($_POST && !$k) {$Pg = $Z; if (!$_POST["all"] && is_array($_POST["check"])) {$Oa = array(); foreach ($_POST["check"]as$Ma)$Oa[] = where_check($Ma, $m); $Pg[] = "((" . implode(") OR (", $Oa) . "))"; }$Pg = ($Pg ? "\nWHERE " . implode(" AND ", $Pg) : ""); $He = $zg = null; foreach ($w
791
+as$v) {if ($v["type"] == "PRIMARY") {$He = array_flip($v["columns"]); $zg = ($N ? $He : array()); break; }}foreach ((array) $zg
792
+as$z=>$X) {if (in_array(idf_escape($z), $N))unset($zg[$z]); }if ($_POST["export"]) {cookie("adminer_import", "output=" . urlencode($_POST["output"]) . "&format=" . urlencode($_POST["format"])); dump_headers($a); $b->dumpTable($a, ""); if (!is_array($_POST["check"]) || $zg === array())$I = "SELECT $wc$Pg$zc"; else {$vg = array(); foreach ($_POST["check"]as$X)$vg[] = "(SELECT" . limit($wc, "\nWHERE " . ($Z ? implode(" AND ", $Z) . " AND " : "") . where_check($X, $m) . $zc, 1) . ")"; $I = implode(" UNION ALL ", $vg); }$b->dumpData($a, "table", $I); exit; }if (!$b->selectEmailProcess($Z, $o)) {if ($_POST["save"] || $_POST["delete"]) {$J = true; $na = 0; $P = array(); if (!$_POST["delete"]) {foreach ($d
793
+as$F=>$X) {$X = process_input($m[$F]); if ($X !== null && ($_POST["clone"] || $X !== false))$P[idf_escape($F)] = ($X !== false ? $X : idf_escape($F)); }}if ($_POST["delete"] || $P) {if ($_POST["clone"])$I = "INTO " . table($a) . " (" . implode(", ", array_keys($P)) . ")\nSELECT " . implode(", ", $P) . "\nFROM " . table($a); if ($_POST["all"] || ($zg === array() && is_array($_POST["check"])) || $Vc) {$J = ($_POST["delete"] ? $j->delete($a, $Pg) : ($_POST["clone"] ? queries("INSERT $I$Pg") : $j->update($a, $P, $Pg))); $na = $e->affected_rows; } else {foreach ((array) $_POST["check"]as$X) {$Og = "\nWHERE " . ($Z ? implode(" AND ", $Z) . " AND " : "") . where_check($X, $m); $J = ($_POST["delete"] ? $j->delete($a, $Og, 1) : ($_POST["clone"] ? queries("INSERT" . limit1($I, $Og)) : $j->update($a, $P, $Og))); if (!$J)break; $na += $e->affected_rows; }}}$D = lang(array('%d item has been affected.', '%d items have been affected.'), $na); if ($_POST["clone"] && $J && $na == 1) {$gd = last_id(); if ($gd)$D = sprintf('Item%s has been inserted.', " $gd"); }queries_redirect(remove_from_uri($_POST["all"] && $_POST["delete"] ? "page" : ""), $D, $J); if (!$_POST["delete"]) {edit_form($a, $m, (array) $_POST["fields"], !$_POST["clone"]); page_footer(); exit; }}elseif (!$_POST["import"]) {if (!$_POST["val"])$k = 'Ctrl+click on a value to modify it.'; else {$J = true; $na = 0; foreach ($_POST["val"]as$xg=>$L) {$P = array(); foreach ($L
794
+as$z=>$X) {$z = bracket_escape($z, 1); $P[idf_escape($z)] = (preg_match('~char|text~', $m[$z]["type"]) || $X != "" ? $b->processInput($m[$z], $X) : "NULL"); }$J = $j->update($a, $P, " WHERE " . ($Z ? implode(" AND ", $Z) . " AND " : "") . where_check($xg, $m), !($Vc || $zg === array()), " "); if (!$J)break; $na += $e->affected_rows; }queries_redirect(remove_from_uri(), lang(array('%d item has been affected.', '%d items have been affected.'), $na), $J); }}elseif (!is_string($mc = get_file("csv_file", true)))$k = upload_error($mc); elseif (!preg_match('~~u', $mc))$k = 'File must be in UTF-8 encoding.'; else {cookie("adminer_import", "output=" . urlencode($ma["output"]) . "&format=" . urlencode($_POST["separator"])); $J = true; $Ya = array_keys($m); preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $mc, $rd); $na = count($rd[0]); $j->begin(); $sf = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";")); $M = array(); foreach ($rd[0]as$z=>$X) {preg_match_all("~((?>\"[^\"]*\")+|[^$sf]*)$sf~", $X . $sf, $sd); if (!$z && !array_diff($sd[1], $Ya)) {$Ya = $sd[1]; $na--; } else {$P = array(); foreach ($sd[1]as$t=>$Ua)$P[idf_escape($Ya[$t])] = ($Ua == "" && $m[$Ya[$t]]["null"] ? "NULL" : q(str_replace('""', '"', preg_replace('~^"|"$~', '', $Ua)))); $M[] = $P; }}$J = (!$M || $j->insertUpdate($a, $M, $He)); if ($J)$j->commit(); queries_redirect(remove_from_uri("page"), lang(array('%d row has been imported.', '%d rows have been imported.'), $na), $J); $j->rollback(); }}}$Pf = $b->tableName($R); if (is_ajax()) {page_headers(); ob_start(); } else
795
+page_header('Select' . ": $Pf", $k); $P = null; if (isset($gf["insert"]) || !support("table")) {$P = ""; foreach ((array) $_GET["where"]as$X) {if (count($o[$X["col"]]) == 1 && ($X["op"] == "=" || (!$X["op"] && !preg_match('~[_%]~', $X["val"]))))$P .= "&set" . urlencode("[" . bracket_escape($X["col"]) . "]") . "=" . urlencode($X["val"]); }}$b->selectLinks($R, $P); if (!$d && support("table"))echo"<p class='error'>" . 'Unable to select the table' . ($m ? "." : ": " . error()) . "\n"; else {echo"<form action='' id='form'>\n", "<div style='display: none;'>"; hidden_fields_get(); echo(DB != "" ? '<input type="hidden" name="db" value="' . h(DB) . '">' . (isset($_GET["ns"]) ? '<input type="hidden" name="ns" value="' . h($_GET["ns"]) . '">' : "") : ""); echo'<input type="hidden" name="select" value="' . h($a) . '">', "</div>\n"; $b->selectColumnsPrint($N, $d); $b->selectSearchPrint($Z, $d, $w); $b->selectOrderPrint($de, $d, $w); $b->selectLimitPrint($_); $b->selectLengthPrint($ag); $b->selectActionPrint($w); echo"</form>\n"; $G = $_GET["page"]; if ($G == "last") {$vc = $e->result(count_rows($a, $Z, $Vc, $s)); $G = floor(max(0, $vc - 1) / $_); }$pf = $N; if (!$pf) {$pf[] = "*"; if ($Pd)$pf[] = $Pd; }$ib = convert_fields($d, $m, $N); if ($ib)$pf[] = substr($ib, 2); $J = $j->select($a, $pf, $Z, $s, $de, $_, $G, true); if (!$J)echo"<p class='error'>" . error() . "\n"; else {if ($y == "mssql" && $G)$J->seek($_ * $G); $Rb = array(); echo"<form action='' method='post' enctype='multipart/form-data'>\n"; $M = array(); while ($L = $J->fetch_assoc()) {if ($G && $y == "oracle")unset($L["RNUM"]); $M[] = $L; }if ($_GET["page"] != "last" && +$_ && $s && $Vc && $y == "sql")$vc = $e->result(" SELECT FOUND_ROWS()"); if (!$M)echo"<p class='message'>" . 'No rows.' . "\n"; else {$Ba = $b->backwardKeys($a, $Pf); echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n", "<thead><tr>" . (!$s && $N ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . 'Modify' . "</a>"); $Gd = array(); $xc = array(); reset($N); $Te = 1; foreach ($M[0]as$z=>$X) {if ($z != $Pd) {$X = $_GET["columns"][key($N)]; $l = $m[$N ? ($X ? $X["col"] : current($N)) : $z]; $F = ($l ? $b->fieldName($l, $Te) : ($X["fun"] ? "*" : $z)); if ($F != "") {$Te++; $Gd[$z] = $F; $c = idf_escape($z); $Hc = remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($z); $xb = "&desc%5B0%5D=1"; echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">', '<a href="' . h($Hc . ($de[0] == $c || $de[0] == $z || (!$de && $Vc && $s[0] == $c) ? $xb : '')) . '">'; echo
796
+apply_sql_function($X["fun"], $F) . "</a>"; echo"<span class='column hidden'>", "<a href='" . h($Hc . $xb) . "' title='" . 'descending' . "' class='text'> ↓</a>"; if (!$X["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\'' . h(js_escape($z)) . '\'); return false;" title="' . 'Search' . '" class="text jsonly"> =</a>'; echo"</span>"; }$xc[$z] = $X["fun"]; next($N); }}$md = array(); if ($_GET["modify"]) {foreach ($M
797
+as$L) {foreach ($L
798
+as$z=>$X)$md[$z] = max($md[$z], min(40, strlen(utf8_decode($X)))); }}echo($Ba ? "<th>" . 'Relations' : "") . "</thead>\n"; if (is_ajax()) {if ($_ % 2 == 1 && $G % 2 == 1)odd(); ob_end_clean(); }foreach ($b->rowDescriptions($M, $o)as$E=>$L) {$wg = unique_array($M[$E], $w); if (!$wg) {$wg = array(); foreach ($M[$E]as$z=>$X) {if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~', $z))$wg[$z] = $X; }}$xg = ""; foreach ($wg
799
+as$z=>$X) {if (($y == "sql" || $y == "pgsql") && strlen($X) > 64) {$z = (strpos($z, '(') ? $z : idf_escape($z)); $z = "MD5(" . ($y == 'sql' && preg_match("~^utf8_~", $m[$z]["collation"]) ? $z : "CONVERT($z USING " . charset($e) . ")") . ")"; $X = md5($X); }$xg .= "&" . ($X !== null ? urlencode("where[" . bracket_escape($z) . "]") . "=" . urlencode($X) : "null%5B%5D=" . urlencode($z)); }echo"<tr" . odd() . ">" . (!$s && $N ? "" : "<td>" . checkbox("check[]", substr($xg, 1), in_array(substr($xg, 1), (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . ($Vc || information_schema(DB) ? "" : " <a href='" . h(ME . "edit=" . urlencode($a) . $xg) . "'>" . 'edit' . "</a>")); foreach ($L
800
+as$z=>$X) {if (isset($Gd[$z])) {$l = $m[$z]; if ($X != "" && (!isset($Rb[$z]) || $Rb[$z] != ""))$Rb[$z] = (is_mail($X) ? $Gd[$z] : ""); $A = ""; if (preg_match('~blob|bytea|raw|file~', $l["type"]) && $X != "")$A = ME . 'download=' . urlencode($a) . '&field=' . urlencode($z) . $xg; if (!$A && $X !== null) {foreach ((array) $o[$z]as$n) {if (count($o[$z]) == 1 || end($n["source"]) == $z) {$A = ""; foreach ($n["source"]as$t=>$_f)$A .= where_link($t, $n["target"][$t], $M[$E][$_f]); $A = ($n["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($n["db"]), ME) : ME) . 'select=' . urlencode($n["table"]) . $A; if (count($n["source"]) == 1)break; }}}if ($z == "COUNT(*)") {$A = ME . "select=" . urlencode($a); $t = 0; foreach ((array) $_GET["where"]as$W) {if (!array_key_exists($W["col"], $wg))$A .= where_link($t++, $W["col"], $W["val"], $W["op"]); }foreach ($wg
801
+as$Zc=>$W)$A .= where_link($t++, $Zc, $W); }$X = select_value($X, $A, $l, $ag); $u = h("val[$xg][" . bracket_escape($z) . "]"); $Y = $_POST["val"][$xg][bracket_escape($z)]; $Mb = !is_array($L[$z]) && is_utf8($X) && $M[$E][$z] == $L[$z] && !$xc[$z]; $Zf = preg_match('~text|lob~', $l["type"]); if (($_GET["modify"] && $Mb) || $Y !== null) {$Ac = h($Y !== null ? $Y : $L[$z]); echo"<td>" . ($Zf ? "<textarea name='$u' cols='30' rows='" . (substr_count($L[$z], "\n") + 1) . "'>$Ac</textarea>" : "<input name='$u' value='$Ac' size='$md[$z]'>"); } else {$qd = strpos($X, "<i>...</i>"); echo"<td id='$u' onclick=\"selectClick(this, event, " . ($qd ? 2 : ($Zf ? 1 : 0)) . ($Mb ? "" : ", '" . h('Use edit link to modify this value.') . "'") . ");\">$X"; }}}if ($Ba)echo"<td>"; $b->backwardKeysPrint($Ba, $M[$E]); echo"</tr>\n"; }if (is_ajax())exit; echo"</table>\n"; }if (($M || $G) && !is_ajax()) {$bc = true; if ($_GET["page"] != "last") {if (!+$_)$vc = count($M); elseif ($y != "sql" || !$Vc) {$vc = ($Vc ? false : found_rows($R, $Z)); if ($vc < max(1e4, 2 * ($G + 1) * $_))$vc = reset(slow_query(count_rows($a, $Z, $Vc, $s))); else$bc = false; }}if (+$_ && ($vc === false || $vc > $_ || $G)) {echo"<p class='pages'>"; $ud = ($vc === false ? $G + (count($M) >= $_ ? 2 : 1) : floor(($vc - 1) / $_)); if ($y != "simpledb") {echo'<a href="' . h(remove_from_uri("page")) . "\" onclick=\"pageClick(this.href, +prompt('" . 'Page' . "', '" . ($G + 1) . "'), event); return false;\">" . 'Page' . "</a>:", pagination(0, $G) . ($G > 5 ? " ..." : ""); for ($t = max(1, $G - 4); $t < min($ud, $G + 5); $t++)echo
802
+pagination($t, $G); if ($ud > 0) {echo($G + 5 < $ud ? " ..." : ""), ($bc && $vc !== false ? pagination($ud, $G) : " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$ud'>" . 'last' . "</a>"); }echo(($vc === false ? count($M) + 1 : $vc - $G * $_) > $_ ? ' <a href="' . h(remove_from_uri("page") . "&page=" . ($G + 1)) . '" onclick="return !selectLoadMore(this, ' . (+$_) . ', \'' . 'Loading' . '...\');" class="loadmore">' . 'Load more data' . '</a>' : ''); } else {echo'Page' . ":", pagination(0, $G) . ($G > 1 ? " ..." : ""), ($G ? pagination($G, $G) : ""), ($ud > $G ? pagination($G + 1, $G) . ($ud > $G + 1 ? " ..." : "") : ""); }}echo"<p class='count'>\n", ($vc !== false ? "(" . ($bc ? "" : "~ ") . lang(array('%d row', '%d rows'), $vc) . ") " : ""); $Bb = ($bc ? "" : "~ ") . $vc; echo
803
+checkbox("all", 1, 0, 'whole result', "var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Bb' : checked); selectCount('selected2', this.checked || !checked ? '$Bb' : checked);") . "\n"; if ($b->selectCommandPrint()) {echo'<fieldset', ($_GET["modify"] ? '' : ' class="jsonly"'), '><legend>Modify</legend><div>
804
+<input type="submit" value="Save"',($_GET["modify"] ? '' : ' title="' . 'Ctrl+click on a value to modify it.' . '"'), '>
805 805
 </div></fieldset>
806 806
 <fieldset><legend>Selected <span id="selected"></span></legend><div>
807 807
 <input type="submit" name="edit" value="Edit">
808 808
 <input type="submit" name="clone" value="Clone">
809
-<input type="submit" name="delete" value="Delete"',confirm(),'>
809
+<input type="submit" name="delete" value="Delete"',confirm(), '>
810 810
 </div></fieldset>
811
-';}$tc=$b->dumpFormat();foreach((array)$_GET["columns"]as$c){if($c["fun"]){unset($tc['sql']);break;}}if($tc){print_fieldset("export",'Export'." <span id='selected2'></span>");$me=$b->dumpOutput();echo($me?html_select("output",$me,$ma["output"])." ":""),html_select("format",$tc,$ma["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$s&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ma["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Rb,'strlen'),$d);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$Df=isset($_GET["status"]);page_header($Df?'Status':'Variables');$Ig=($Df?show_status():show_variables());if(!$Ig)echo"<p class='message'>".'No rows.'."\n";else{echo"<table cellspacing='0'>\n";foreach($Ig
812
-as$z=>$X){echo"<tr>","<th><code class='jush-".$y.($Df?"status":"set")."'>".h($z)."</code>","<td>".nbsp($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Mf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$F=>$R){json_row("Comment-$F",nbsp($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z)json_row("$z-$F",nbsp($R[$z]));foreach($Mf+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$F",($z=="Rows"&&$X&&$R["Engine"]==($Bf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Mf[$z]))$Mf[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}elseif(array_key_exists($z,$R))json_row("$z-$F");}}}foreach($Mf
813
-as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$e->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$i=>$X){json_row("tables-$i",$X);json_row("size-$i",db_size($i));}json_row("");}exit;}else{$Uf=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Uf&&!$k&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=truncate_tables($_POST["tables"]);$D='Tables have been truncated.';}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been moved.';}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$D='Tables have been dropped.';}elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tables have been optimized.';}elseif(!$_POST["tables"])$D='No tables.';elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="<b>".h($L["Table"])."</b>: ".h($L["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$k,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Tf=tables_list();if(!$Tf)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!="")search_tables();}echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';$Cb=doc_link(array('sql'=>'show-table-status.html'));echo'<th>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-mysql.html')),'<td>'.'Data Length'.$Cb,'<td>'.'Index Length'.$Cb,'<td>'.'Data Free'.$Cb,'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html')),'<td>'.'Rows'.$Cb,(support("comment")?'<td>'.'Comment'.$Cb:''),"</thead>\n";$S=0;foreach($Tf
814
-as$F=>$U){$Kg=($U!==null&&!preg_match('~table~i',$U));echo'<tr'.odd().'><td>'.checkbox(($Kg?"views[]":"tables[]"),$F,in_array($F,$Uf,true),"","formUncheck('check-all');"),'<th>'.(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($F).'" title="'.'Show structure'.'">'.h($F).'</a>':h($F));if($Kg){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($F).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized View':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($F).'" title="'.'Select data'.'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$z=>$A){$u=" id='$z-".h($F)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($F)."'$u title='$A[1]'>?</a>":"<span$u>?</span>"):"<td id='$z-".h($F)."'>&nbsp;");}$S++;}echo(support("comment")?"<td id='Comment-".h($F)."'>&nbsp;":"");}echo"<tr><td>&nbsp;<th>".sprintf('%d in total',count($Tf)),"<td>".nbsp($y=="sql"?$e->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"<td align='right' id='sum-$z'>&nbsp;";echo"</table>\n";if(!information_schema(DB)){$Gg="<input type='submit' value='".'Vacuum'."'".on_help("'VACUUM'")."> ";$ae="<input type='submit' name='optimize' value='".'Optimize'."'".on_help($y=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".($y=="sqlite"?$Gg:($y=="pgsql"?$Gg.$ae:($y=="sql"?"<input type='submit' value='".'Analyze'."'".on_help("'ANALYZE TABLE'")."> ".$ae."<input type='submit' name='check' value='".'Check'."'".on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".'Repair'."'".on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".'Truncate'."'".confirm().on_help($y=="sqlite"?"'DELETE'":"'TRUNCATE".($y=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".'Drop'."'".confirm().on_help("'DROP TABLE'").">\n";$h=(support("scheme")?$b->schemas():$b->databases());if(count($h)!=1&&$y!="sqlite"){$i=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($h?html_select("target",$h,$i):'<input name="target" value="'.h($i).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.h(ME).'create=">'.'Create table'."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.'Create view'."</a>\n":""),(support("materializedview")?'<a href="'.h(ME).'view=&amp;materialized=1">'.'Create materialized view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$kf=routines();if($kf){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td>&nbsp;</thead>\n";odd('');foreach($kf
815
-as$L){echo'<tr'.odd().'>','<th><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($L["ROUTINE_NAME"]).'">'.h($L["ROUTINE_NAME"]).'</a>','<td>'.h($L["ROUTINE_TYPE"]),'<td>'.h($L["DTD_IDENTIFIER"]),'<td><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($L["ROUTINE_NAME"]).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$M=get_rows("SHOW EVENTS");if($M){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($M
816
-as$L){echo"<tr>","<th>".h($L["Name"]),"<td>".($L["Execute at"]?'At given time'."<td>".$L["Execute at"]:'Every'." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.h(ME).'event='.urlencode($L["Name"]).'">'.'Alter'.'</a>';}echo"</table>\n";$Zb=$e->result("SELECT @@event_scheduler");if($Zb&&$Zb!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Zb)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Tf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}}}page_footer();
817 811
\ No newline at end of file
812
+';}$tc = $b->dumpFormat(); foreach ((array) $_GET["columns"]as$c) {if ($c["fun"]) {unset($tc['sql']); break; }}if ($tc) {print_fieldset("export", 'Export' . " <span id='selected2'></span>"); $me = $b->dumpOutput(); echo($me ? html_select("output", $me, $ma["output"]) . " " : ""), html_select("format", $tc, $ma["format"]), " <input type='submit' name='export' value='" . 'Export' . "'>\n", "</div></fieldset>\n"; }echo(!$s && $N ? "" : "<script type='text/javascript'>tableCheck();</script>\n"); }if ($b->selectImportPrint()) {print_fieldset("import", 'Import', !$M); echo"<input type='file' name='csv_file'> ", html_select("separator", array("csv"=>"CSV,", "csv;"=>"CSV;", "tsv"=>"TSV"), $ma["format"], 1); echo" <input type='submit' name='import' value='" . 'Import' . "'>", "</div></fieldset>\n"; }$b->selectEmailPrint(array_filter($Rb, 'strlen'), $d); echo"<p><input type='hidden' name='token' value='$T'></p>\n", "</form>\n"; }}if (is_ajax()) {ob_end_clean(); exit; }}elseif (isset($_GET["variables"])) {$Df = isset($_GET["status"]); page_header($Df ? 'Status' : 'Variables'); $Ig = ($Df ? show_status() : show_variables()); if (!$Ig)echo"<p class='message'>" . 'No rows.' . "\n"; else {echo"<table cellspacing='0'>\n"; foreach ($Ig
813
+as$z=>$X) {echo"<tr>", "<th><code class='jush-" . $y . ($Df ? "status" : "set") . "'>" . h($z) . "</code>", "<td>" . nbsp($X); }echo"</table>\n"; }}elseif (isset($_GET["script"])) {header("Content-Type: text/javascript; charset=utf-8"); if ($_GET["script"] == "db") {$Mf = array("Data_length"=>0, "Index_length"=>0, "Data_free"=>0); foreach (table_status()as$F=>$R) {json_row("Comment-$F", nbsp($R["Comment"])); if (!is_view($R)) {foreach (array("Engine", "Collation")as$z)json_row("$z-$F", nbsp($R[$z])); foreach ($Mf + array("Auto_increment"=>0, "Rows"=>0)as$z=>$X) {if ($R[$z] != "") {$X = format_number($R[$z]); json_row("$z-$F", ($z == "Rows" && $X && $R["Engine"] == ($Bf == "pgsql" ? "table" : "InnoDB") ? "~ $X" : $X)); if (isset($Mf[$z]))$Mf[$z] += ($R["Engine"] != "InnoDB" || $z != "Data_free" ? $R[$z] : 0); }elseif (array_key_exists($z, $R))json_row("$z-$F"); }}}foreach ($Mf
814
+as$z=>$X)json_row("sum-$z", format_number($X)); json_row(""); }elseif ($_GET["script"] == "kill")$e->query("KILL " . number($_POST["kill"])); else {foreach (count_tables($b->databases())as$i=>$X) {json_row("tables-$i", $X); json_row("size-$i", db_size($i)); }json_row(""); }exit; } else {$Uf = array_merge((array) $_POST["tables"], (array) $_POST["views"]); if ($Uf && !$k && !$_POST["search"]) {$J = true; $D = ""; if ($y == "sql" && count($_POST["tables"]) > 1 && ($_POST["drop"] || $_POST["truncate"] || $_POST["copy"]))queries("SET foreign_key_checks = 0"); if ($_POST["truncate"]) {if ($_POST["tables"])$J = truncate_tables($_POST["tables"]); $D = 'Tables have been truncated.'; }elseif ($_POST["move"]) {$J = move_tables((array) $_POST["tables"], (array) $_POST["views"], $_POST["target"]); $D = 'Tables have been moved.'; }elseif ($_POST["copy"]) {$J = copy_tables((array) $_POST["tables"], (array) $_POST["views"], $_POST["target"]); $D = 'Tables have been copied.'; }elseif ($_POST["drop"]) {if ($_POST["views"])$J = drop_views($_POST["views"]); if ($J && $_POST["tables"])$J = drop_tables($_POST["tables"]); $D = 'Tables have been dropped.'; }elseif ($y != "sql") {$J = ($y == "sqlite" ? queries("VACUUM") : apply_queries("VACUUM" . ($_POST["optimize"] ? "" : " ANALYZE"), $_POST["tables"])); $D = 'Tables have been optimized.'; }elseif (!$_POST["tables"])$D = 'No tables.'; elseif ($J = queries(($_POST["optimize"] ? "OPTIMIZE" : ($_POST["check"] ? "CHECK" : ($_POST["repair"] ? "REPAIR" : "ANALYZE"))) . " TABLE " . implode(", ", array_map('idf_escape', $_POST["tables"])))) {while ($L = $J->fetch_assoc())$D .= "<b>" . h($L["Table"]) . "</b>: " . h($L["Msg_text"]) . "<br>"; }queries_redirect(substr(ME, 0, -1), $D, $J); }page_header(($_GET["ns"] == "" ? 'Database' . ": " . h(DB) : 'Schema' . ": " . h($_GET["ns"])), $k, true); if ($b->homepage()) {if ($_GET["ns"] !== "") {echo"<h3 id='tables-views'>" . 'Tables and views' . "</h3>\n"; $Tf = tables_list(); if (!$Tf)echo"<p class='message'>" . 'No tables.' . "\n"; else {echo"<form action='' method='post'>\n"; if (support("table")) {echo"<fieldset><legend>" . 'Search data in tables' . " <span id='selected2'></span></legend><div>", "<input type='search' name='query' value='" . h($_POST["query"]) . "'> <input type='submit' name='search' value='" . 'Search' . "'>\n", "</div></fieldset>\n"; if ($_POST["search"] && $_POST["query"] != "")search_tables(); }echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n", '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">'; $Cb = doc_link(array('sql'=>'show-table-status.html')); echo'<th>' . 'Table', '<td>' . 'Engine' . doc_link(array('sql'=>'storage-engines.html')), '<td>' . 'Collation' . doc_link(array('sql'=>'charset-mysql.html')), '<td>' . 'Data Length' . $Cb, '<td>' . 'Index Length' . $Cb, '<td>' . 'Data Free' . $Cb, '<td>' . 'Auto Increment' . doc_link(array('sql'=>'example-auto-increment.html')), '<td>' . 'Rows' . $Cb, (support("comment") ? '<td>' . 'Comment' . $Cb : ''), "</thead>\n"; $S = 0; foreach ($Tf
815
+as$F=>$U) {$Kg = ($U !== null && !preg_match('~table~i', $U)); echo'<tr' . odd() . '><td>' . checkbox(($Kg ? "views[]" : "tables[]"), $F, in_array($F, $Uf, true), "", "formUncheck('check-all');"), '<th>' . (support("table") || support("indexes") ? '<a href="' . h(ME) . 'table=' . urlencode($F) . '" title="' . 'Show structure' . '">' . h($F) . '</a>' : h($F)); if ($Kg) {echo'<td colspan="6"><a href="' . h(ME) . "view=" . urlencode($F) . '" title="' . 'Alter view' . '">' . (preg_match('~materialized~i', $U) ? 'Materialized View' : 'View') . '</a>', '<td align="right"><a href="' . h(ME) . "select=" . urlencode($F) . '" title="' . 'Select data' . '">?</a>'; } else {foreach (array("Engine"=>array(), "Collation"=>array(), "Data_length"=>array("create", 'Alter table'), "Index_length"=>array("indexes", 'Alter indexes'), "Data_free"=>array("edit", 'New item'), "Auto_increment"=>array("auto_increment=1&create", 'Alter table'), "Rows"=>array("select", 'Select data'),)as$z=>$A) {$u = " id='$z-" . h($F) . "'"; echo($A ? "<td align='right'>" . (support("table") || $z == "Rows" || (support("indexes") && $z != "Data_length") ? "<a href='" . h(ME . "$A[0]=") . urlencode($F) . "'$u title='$A[1]'>?</a>" : "<span$u>?</span>") : "<td id='$z-" . h($F) . "'>&nbsp;"); }$S++; }echo(support("comment") ? "<td id='Comment-" . h($F) . "'>&nbsp;" : ""); }echo"<tr><td>&nbsp;<th>" . sprintf('%d in total', count($Tf)), "<td>" . nbsp($y == "sql" ? $e->result("SELECT @@storage_engine") : ""), "<td>" . nbsp(db_collation(DB, collations())); foreach (array("Data_length", "Index_length", "Data_free")as$z)echo"<td align='right' id='sum-$z'>&nbsp;"; echo"</table>\n"; if (!information_schema(DB)) {$Gg = "<input type='submit' value='" . 'Vacuum' . "'" . on_help("'VACUUM'") . "> "; $ae = "<input type='submit' name='optimize' value='" . 'Optimize' . "'" . on_help($y == "sql" ? "'OPTIMIZE TABLE'" : "'VACUUM OPTIMIZE'") . "> "; echo"<fieldset><legend>" . 'Selected' . " <span id='selected'></span></legend><div>" . ($y == "sqlite" ? $Gg : ($y == "pgsql" ? $Gg . $ae : ($y == "sql" ? "<input type='submit' value='" . 'Analyze' . "'" . on_help("'ANALYZE TABLE'") . "> " . $ae . "<input type='submit' name='check' value='" . 'Check' . "'" . on_help("'CHECK TABLE'") . "> " . "<input type='submit' name='repair' value='" . 'Repair' . "'" . on_help("'REPAIR TABLE'") . "> " : ""))) . "<input type='submit' name='truncate' value='" . 'Truncate' . "'" . confirm() . on_help($y == "sqlite" ? "'DELETE'" : "'TRUNCATE" . ($y == "pgsql" ? "'" : " TABLE'")) . "> " . "<input type='submit' name='drop' value='" . 'Drop' . "'" . confirm() . on_help("'DROP TABLE'") . ">\n"; $h = (support("scheme") ? $b->schemas() : $b->databases()); if (count($h) != 1 && $y != "sqlite") {$i = (isset($_POST["target"]) ? $_POST["target"] : (support("scheme") ? $_GET["ns"] : DB)); echo"<p>" . 'Move to other database' . ": ", ($h ? html_select("target", $h, $i) : '<input name="target" value="' . h($i) . '" autocapitalize="off">'), " <input type='submit' name='move' value='" . 'Move' . "'>", (support("copy") ? " <input type='submit' name='copy' value='" . 'Copy' . "'>" : ""), "\n"; }echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));" . (support("table") ? " selectCount('selected2', formChecked(this, /^tables\[/) || $S);" : "") . "\">\n"; echo"<input type='hidden' name='token' value='$T'>\n", "</div></fieldset>\n"; }echo"</form>\n", "<script type='text/javascript'>tableCheck();</script>\n"; }echo'<p class="links"><a href="' . h(ME) . 'create=">' . 'Create table' . "</a>\n", (support("view") ? '<a href="' . h(ME) . 'view=">' . 'Create view' . "</a>\n" : ""), (support("materializedview") ? '<a href="' . h(ME) . 'view=&amp;materialized=1">' . 'Create materialized view' . "</a>\n" : ""); if (support("routine")) {echo"<h3 id='routines'>" . 'Routines' . "</h3>\n"; $kf = routines(); if ($kf) {echo"<table cellspacing='0'>\n", '<thead><tr><th>' . 'Name' . '<td>' . 'Type' . '<td>' . 'Return type' . "<td>&nbsp;</thead>\n"; odd(''); foreach ($kf
816
+as$L) {echo'<tr' . odd() . '>', '<th><a href="' . h(ME) . ($L["ROUTINE_TYPE"] != "PROCEDURE" ? 'callf=' : 'call=') . urlencode($L["ROUTINE_NAME"]) . '">' . h($L["ROUTINE_NAME"]) . '</a>', '<td>' . h($L["ROUTINE_TYPE"]), '<td>' . h($L["DTD_IDENTIFIER"]), '<td><a href="' . h(ME) . ($L["ROUTINE_TYPE"] != "PROCEDURE" ? 'function=' : 'procedure=') . urlencode($L["ROUTINE_NAME"]) . '">' . 'Alter' . "</a>"; }echo"</table>\n"; }echo'<p class="links">' . (support("procedure") ? '<a href="' . h(ME) . 'procedure=">' . 'Create procedure' . '</a>' : '') . '<a href="' . h(ME) . 'function=">' . 'Create function' . "</a>\n"; }if (support("event")) {echo"<h3 id='events'>" . 'Events' . "</h3>\n"; $M = get_rows("SHOW EVENTS"); if ($M) {echo"<table cellspacing='0'>\n", "<thead><tr><th>" . 'Name' . "<td>" . 'Schedule' . "<td>" . 'Start' . "<td>" . 'End' . "<td></thead>\n"; foreach ($M
817
+as$L) {echo"<tr>", "<th>" . h($L["Name"]), "<td>" . ($L["Execute at"] ? 'At given time' . "<td>" . $L["Execute at"] : 'Every' . " " . $L["Interval value"] . " " . $L["Interval field"] . "<td>$L[Starts]"), "<td>$L[Ends]", '<td><a href="' . h(ME) . 'event=' . urlencode($L["Name"]) . '">' . 'Alter' . '</a>'; }echo"</table>\n"; $Zb = $e->result("SELECT @@event_scheduler"); if ($Zb && $Zb != "ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: " . h($Zb) . "\n"; }echo'<p class="links"><a href="' . h(ME) . 'event=">' . 'Create event' . "</a>\n"; }if ($Tf)echo"<script type='text/javascript'>ajaxSetHtml('" . js_escape(ME) . "script=db');</script>\n"; }}}page_footer();
818 818
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +1449 added lines, -238 removed lines patch added patch discarded remove patch
@@ -6,11 +6,17 @@  discard block
 block discarded – undo
6 6
 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
7 7
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
8 8
 * @version 4.2.5
9
-*/error_reporting(6135);$oc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($oc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$yg=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($yg)$$X=$yg;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
10
-lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
11
-lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ	ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›­æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š	Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8А­£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü­’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤	l^íZ6˜ej…Á­³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxl֍ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù	€‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò	'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,E͝`T¦É6Ûˆ-“Åì¾ÅÚŽT[ѐªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø	•ÿš´hìÁ{Ü£•î ËԐ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV­‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØ͇Т©‰‚êcâ¡óB’—}Ø&`ˆîr+E­“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼	ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡	³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£Ì]6¦Þ1´!1M±¸@a´/`Û>Ù¸üߣðÕßÈÛC/ì6à´·#p@pá‘óÿ`Zÿôýchý°\0ïë\0oæ€ð4OýOøi\0-\n«îÿ/ý\0£Dð.ÿ ¾ˆ.“Đ\0fiŒÀÈ«£€˜\0Œ”IDüç\0§¬\rïý0f ßoãÿ€ÊGüˆðeJ|\r€¿ýl	¨3ê~ðiP›¦&“É¿/µ\09	^\0r•0]¯õ ¾›oõŽ.ý\"	°ÐÑM¥íðvÿP€ZÐÕmpËP°ùÚœÐޏ¹ïô{§†C?²ÀkŽ“Ï¼}ð®þdöïʏ°~=‘.Ô- é	Ðm1>hûÏÛЕ1;QI‘OPÈ\rºcßpApV«k\rQ*èQ}ÏçŸq>˜Ðu15BqQ[1fûñl«Â€apå¯ü\0Û‘*ŒJ©Q=ñãّGÜäŠÕÁ±Ÿ±_ñ—ñbŒGHF.‚0Ôø	= 2P™Àó æòÏçP!ò#(3 \nÙ!1&72fª`Â/å\0°‡\"PÁUõ\$ñ\r0Ìð,QrU&2fšÒ_²Xààò]ð9\"’S'òƒ'²yð8\r¨ú§òkW)Oõ)’*Ra%ã\\i—%ò‰&Ò³+r…’3ðS`…,ñvý¦&2×L–&Pu*›-ð˜0\"Á%HĬÔžïÏ@Ø“±°H‰B–P(ÃÉ\$p&ý,1M ªØ­Ã®;\rnÁ.¯Ê I­.Õ',1ò)Ó4ý²å2°u+ó3æ `ÈSŽŠpL\nt§’_*²S3;6r'h35¤55䜋d2q+6ñ8‘O7sC\"pm8Ò­³“6³—9òm\n@e0É<8B8©<,( ¨8²Û\0è	Ó0šJÙ<@¦ÐI¤«ÀR6pÔ­mGË\"11¤6ËÐ.\"æÀ‚ï5Ì‚ûÇ:àÜ8bêA1±;ƒ';Â?<*\$È,³Ìo= òTÓÖ/3Û#«ºÒ†¬");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
12
-lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s>	)â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n	\ræs<ŒPi2INƐ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(ҝm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå	 Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ­˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§­ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$	CAƠ䄤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t	Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬­ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AK㝡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(­#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J	A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…):	ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDù­Ñ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8­ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æڌڇŸ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/؝X ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éPÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðȍôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEЀÔøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6â†¬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F	4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀΠt]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e­¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ	1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î	 ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*­/¹UÖVû‰¤þ­pì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Ɓ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·>	—BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ	¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6ChÂº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ߍ§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)א…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üà倠ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤	(€\r¹öGFžª@ؼÃúÙ­Àß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷È½à¸à\\P’,\"ª-rCÉrVäæYם·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’­ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/­ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê	‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rԁ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx	ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔĝ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã	ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„⢏ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ	€ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní	äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;S­Ç]ãñ@ËÇè:Ââ“­÷I~Û‘•ÙùҝÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}ϝ:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð­‰)¯i4Ñu•sÁ­ÇˆXÁMP¬‚^«ä5¹O’¥	bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE%	dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> “ªÿ'Ó|“#hàÅœ˜6è¦\rñ.=(Ôv±…¥;`\"OøCܐ!âBŠ9ã.B!UEÌDáÄ‚d œ–€)ºKŠ Œ\0Þ» ÆmF~	B{O\0¨Ï©¡¦_選³u#„–5 =LjÀò7´9 š6­¢î£lCV‘€ŒTpÀÚ08±	1ÄÎx'0@gIw€Zã†@9ÇLᎎ\\v\0_(º\".ЯA[sÅ„ä€ê7I(azl_„EЦ<ñ€“tƒUöë7`tèÒ0ø‹(ßà3”=¦ço\$[Ìh×!¸B¦œ[HîR¶œœ) )nxaZ™#=HË8ð뛥 ”’%þ@0w5J’–	¸²A\"F:8NŠÏ\"Xù- èÔ­¥?pj@)iUjƒÀ™\$Ìš-EÆ÷”E§´\n/¸œPÓB–P@y8j¾Y¼Kð³9	0ÊH€Ddš&0Œ¡èh“X \\Ñê\$Ë(ÁÐ`d\nEΤÀŽ@ÉJ“b*NRP\"(q.f#“dšGÈæD¾š¦M’n9:*€¶fÐŽt4æò:p½Mí(5%ÊQ\0e”Sb’4ú1¤ÉõeM‡),ŸR‘\"k§m?Ê\0rB¿( è\\èšÅ••de<£\\ÊBMò’i„¢L	(Åh›ÚRÁ¿D›e\"r™CÊÖRä•ô¬å)9EJâQÒ˜>	õO´ãí`šAÈ#®bh|HNÐ\$™%Z#˜4-® 2=ˆD‰ê„ñ\\´æ0Ú…Ȇ¶õ\\’\"©aUR	Ã-I¨ãk0\0ÛæÙ‚ÊÃæHýH³ ÀÎ~u”]QŽƒFš1')-¡\0'óxüeüˆÑ·ŸÌÕp\$ÆQØeaþ#\"ëRǰÀœ@\\èÂF0ѸÀÕ#\"–˜&<¬1ÎHЃÃ\" BªÂð.ˆþ#h˜ÎÃÀ/ùž…TmA[€ç\rRŒ(̼@%ÙE8ÌÂÙÐ&\$	`Eà€ŠÃ,B]À(a{„@ù6I›¢k3[ˆhÚ	ìEw\0¡1®)%檘 @Úªÿ\"ˆ6ˆÙ®aJ¦I8J+4q€Úa¨±0\nBë2É—àa“!{q›•ŽŒÛ„Àgá1!9à:\0¦Š&D8|8Á\0Ë:á5P1ƒ¼›0‹ã:y„ª¨FDHÄÎUk3Á’…USLKôàfŠi‡mB¹Fk§@EPØM-ä;1ˆ¡%Òá82ls1œ´!&û5¼ÍRaÅñ—ÄÂÀú’4’ÏP%¸„eOþ/¹¨ˆ±³ÈE‰I@C=ùùMHÉÓôd°çË8@¹–à9rI¼Ð€£Š*B,› Ã^ð‘ҁ\r˜Û€N猗4ˆB“™ZCXÿs!	*@ENø)»Ð”4àa\n¨ )¿¸˜?`+¡€&‰C01M¼SqDñ€ÞQŸBð\"ï¡ ‘‰n)ÓM¹¢!x\0€Š5Æüj3w\0⣂ð0!\$\0`a7º¨2Q¶Zì>I4ŒÖ}ÉxÑàÁ½›ÊÏÚZu¶\0´çñWÉdd4J2„†26\n 	À¶žÙ ŸÅ…æ€OhÜFç0Èš\0=΃š%Ù1Ú\rÊAàih@vM)’\0¼`£&Êa2ù´Kši©KðfhZUÆ\n¶‘AM(iéP€ÈW47¥|ò©ZQ†þ:¨5X>x#5†¡s=0Rªå>„“7úÓÀiü'èÙž\0Ê™£ú)`hþRÁð…š—d`œѵM‘IQ\\V´ÞV‚ã4T²¦ÓUãåR%9F“aºhÕ47œ]Mà_`>P~_T!¡†ÑN\0ŽÎ.lÔú%ÈC(DZSþqu\0œ¸…in默2¡áÙHéqCÔM`”…AÞMqQ¢~«5p+ŠAZh¾¡3Ÿ‡Å¸\n62¸URbq%B(\nÀTØ󑜛FåâÌð>œ8¿†GM ‹LpiÈ¢EQf‘M&•.©OQ\"=Z{µºR¥åïl¨aOêïØ«”ýk}° Á-´~+Ê`µewíWêÎT	Õ¨º2ߘ’.¤1RÒH8H¤†d€Á†h@0Œ\0[€@réŸ j\"„ý¸êöOZŽ ‘1r#¬tQ@7—V5kÈ+˜ÖÉʽVlï¬ì·\r-å®–¯U„Ý\$\$XÚ¼ž4µ«äF6{à/ˆ‰Ç–P¡óZ¹s½|Œ\rcÓ€f™Á˜f¸?	•_«™XՔ𰕆¬@Áë—â0nlŠÜ„Yòg:×°ËSæâä›sª~˜šâ¡9ëî×FŽt\0/Ã\nÅ0']y‰á^ŠÇ#&¹\rHœ†j‡R0ý:æ¤â‡£¦äD7J¡Ÿ~¿Ä52Éælë”D­}J‡TàeΜ% ŸÕ}¸è+R#”°k3T¼Ýë¶\0rYuŒh¡‹ÞŒf¼“Þleù„ØAï1S•TØP\"±¾PhŠE¶NœÞVK`2Qò\0e©eK‡›Š>IFÜš-Ã7Sê=Ôù•BÀ¼j¢N5U÷[ñXl'\0 2¡…j\0;ªÍ‘’ìú®J\"\r4hEž±FXômRö\0Q‘Ö·*/X ”K£{hÍWÚ‘ž©”l€êm'j8€ÚŽŽ.êFˆÔsUÔ©µ\"iþ+bÒÊBÚUl1 ¬¼RCGÐ-­²3Þ)3å\0ø'ÉNv?³³PeÒÔÀÂZžÕ/óiãOÝ]6b“|1T•ªÉ×jØHÚ¾×@mµà¹-k_TÃÅPè–¯\\©¬\0æÀ69¸°nU¶{‚-±Õ5Â!²“´øGª³çξ5ãšºm®S Á´\$룱øm3õÙ%˜`[¯B©/ËešØÎõÉTm§i‚N›o£!âàµ.È\râ÷0¨6 ,lí¬\0äàà:&|\rÖ»\"M¯¡kw*ÛrHVó„Ü5Û‚Ãjàá „YpÒ“ÙX\råw{Uß…qÄ’Ü\$u⨞Ul{‹Û\$×¶þ5mÀ(ü`/¬¢—ù¸4/nIp–j\\-³¶ç_3\\)òës×–çW–·mçt\n†JR—D¹Ñ‚%tŠ\nÝ*‹Rzá2>²°\"®‰a²\0Ö8Š1˜Žè¤/sÄ@Û†Jì'l—Hu®k Zªç©´hÔ8§s}ÈšP§)R*“Übûe%²í·o„Ús– û2aQ¡J†©¤Õ°í‹qkÂ6g.	¼R“/({Ǥ~ÙEŒ©;ö\$ÝÓt†löÃmIêºèGR:iÕ'—àÁApªÞy€üÛ­DMºŽ/<¦ÜwºÁàp\rÀ\"•Âá}\0ßPS€'éŠß܆“”pý¶k`CìÜqEYÀ3Êd¡èÉ|p{ó DJ;úå÷cHTšÏWnW<)M5~ÆY2÷–t9Š©âkÞR<ý«q#\0¨ýep7Lø+Óc¾ Ú\0u\0\0®mÔW¾‘c}[* <÷ؾÎ+¢ër7Æ@+·Ô^/Ä·ûò_ÀYÆŽ¿ £/yƒ6Ù¾þ«%œXÛKRÒÚoƒÙS¯\\¾	m/ˆg³PϾÉV–­%D«¡GÄOiuöÝt€åN)®›Î¯&ú†ySô0jn“rrÚT”y×myˆk!É8UšøDn£Bþ\0÷l¥¨PGç.[‡z··|†8bGõx×Ñ\\s[µ#¸?>:£\0Xz	f¯´ f.⣏4€^  9‡ |šË\r§·z+G¸Z¸D©È?‰5A¢„A]¹1ϱ5‹7bvæ`|1»èk.‚LUëÍڐ/`Weñ©'âàkû¹†k°ÜŸàÅÐI\0wvu‘]©-˜Ó%OÈb3ó¡j•bŠÍ™T½A%¯à&êIÊÜP£ŽcBã9Í‹{yBßLtVÖ?ØÊF:hªUd[ËÑ ük±–8OSV«	káZÑ|â€*ÑU¾Gû˜-k¦&ˆÚI–‘žÈÝ”ðO9\0®€Åˆ˜ÕeQ>7ŠÉp¶e[¶<¯¿RæÝ­ h\$®?ύöäúª¾Añǐ‘ÿ-×!–iÈ|¿Ö¿…ä[UÎ³ïfEƧ‘’SätF™RUÎHÁ?¡Z¡¶¨I@â¢Ã‘‚šÖEY*–½Y²‘YúÔZEÐö­=–ì:Û+Ù@¾VÐ6„·^ÃÚ½NÖ8VK2‡’ê ¼#èbÉŠ[2ç-	ñ…k2&*äENškV¶2Áy¼ùW8+Öœq°Œ&9„1åøù+Z“Dªã\",¥­œ““‹Êƒ#-šÉÈ4ÿ5•µ—‘cãxPŸæÌ•ÓÅlXó Ös-P”χBÂßÕkFŒ¸ÖŒ\$5m€W@º¨\0›Ò—!úÌ`@ð¼ß©²\"áOõa7œš†Ï14yo®us,|d*+É¢ee7ž<Åœó:Çߘ¸Ôá]œbg!™ùÎbsŸH\nr˜„nÕ–É@Ø@ör Ÿæâr€)0 €’à\"\0\"΀òO4]ªÞaÄH*•o–,뀬.CpÉÒÉ3>Šu©Åx5™äúž‘	Åæš³ÓÊVZ–Ò€,,\ršfáHl÷e£êè:Úe™Z@Î]ò¼½\rs@¨%Ë\"\n!ìk‰úhÊ´ËeÈ´?åÄji: ˆ>{ÉšÞËŸ½! W.ºEBV‘åË	\0002Ï9©¦Ëæ­šC¼Ñ\r4íÌûóP+.Ÿ‹=5\$KbÍÂùËh(5\0©I¤CŸèì“ U«ÅÇ4'V”°(-¢!0	À¨­ÀÈ•:eñÔn¥Ã›©’:¥”-F®‚µ;/¥#”‡T<¢ÐùMVH/O¦½±´Û¹ÂûQ®€Åž4h-âDþ5ÀU€\0‚@\"€€	àFavœ@à€y ëé'‰;.HnrzxPô^€ÿ[áªûbEÐÖD;SYãåÚ	Pôï :1¬ÇN‰iâ€wfíw»Ü1ÀY½¨ù™| FâDiZ×¶D|{q”RÁà0\"³Íç(åO³ÕDîƒ	—z`Ò)Þ`-ˆ Ä|è5Ql_c.øküö<Ù5¤0§zÏÒ–Ñü›Ûßкe˜†dí\$’©\"þJè÷ÓSÝÑû\n\rHK¿_Ó„”tà4ç€s›A\njVð´ñŒ!oÚ[l¶œOPÀQª©¬‹wÑÓ†Q¥9ÛÑ!…5€ì¥\0¶Ym‹g„õÛ(@u¶§ƒXO_éÝa~ÉÔ&Ðó#( =:ã Ã\0½µ×k4WñÏ\0]IàŒ+šf	FÕÈj¥C#Ûn7ˆ?µöô×N Ní’´)Ï&zÝŠ‹“o»Ž¿h¤·BlM½TU)5ÜËp¾t€¦µ›¥tÁä¶ùºî¨\rµV.è]û¹Í‹†Ð»¡nç†JÑív… Ø¶ï·t(ÍÉn¸Ñ»±ÝœD2)mÛž([Ïr©˜Åë³2z eŒ¿¦ñ¾=Òn*̍vûw8ÝÄàx+§<`	2½GFííTBÛ=væh=ºì};L/wîþ÷£¿÷v[«cîØßîã÷)¦ÀnL¦*§¡¹ê¡ã7`7ôÞ‘þ÷©_øˆ\næ{˜æ‚B%Q\0ǃ@pyæ÷\0ûÁȈnè'Š^î庾&‡Ó6Þ\0•È¿‘Ôð†û»Þ̃%¾EKÔÈ;,á‰â·PeÍîl-•:ÙþïgÄKüëXTØEPVP. èP ´¼RØl²ë±sìOmtâ•êhô’ô ñÀ¬#”Uv…ϲ=}ì”a>\"‡õàÆ½Žˆøo|RØt£Më¢û<fM SòãZ˜QBà¡È*¡o^ð&ÍÞ5Æþµ€*D²QþN»\$*¦	ä¯	BrD`Íòe¡Ó=äç'¹?Ê•T MxkkÓZúŒ}­Q²‰[~ùŸÕŒš(qmQ:ü{Þ‹µè¿ó×Ͳ°f}N@±lCaùðˆê\"N`ˆùAP“cÔ€V0\0ÍB’fÝÙÀž…ø„P\0Iu†5ª4›³ì÷ÿ©Ð`°:*†`þQ¢wRó(º¸éœêÆÊÉû7È»™jj÷gçdc°™ð6,É/%ñç2ç¦#³òûiÉ»8\\nϧ‘—ðqö‘SuÛ³nu4?W7\$»>-0ϵЁ¦-7d}y¼…[áx‡ñ~»¸0òSükó«y{!©sü°ö(@6p\$a:ʨ€Z5}\0üç]BßøŸgŒÔÀuTT\"K@€uÑþ­<Ìž.ªugGø›±n¢¿ÚŠ|aâx¡ÔÀÇ窱ÿX5é‡EØõØó@tçVw¿ü?\0½ç„ruY둹Ï.Å?[ŽfèÈ9Îñ9ô3£®	I\0—ذš)±OuɈz*ð’ãbí+\$Sª9ÇØ~‚vŒú}+–Ññ„«Ùtwøµ‹\0\\€");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
13
-lzw_decompress("v0œF£©ÌÐ==˜ÎFS	ÐÊ_6MƳ˜èèr:™E‡CI´Êo:C„”Xc‚\ræØ„J(:=ŸE†¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS	œËUl(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ`Èó¯bè\\š?`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°ø㢺÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m6PÔ@ÃEQàÄ9\n¨V-‹Áó\"¦.:åJÏ8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼ÉÃà@„}&„ˆL7U°wuYhÔ2¸È@ûu  Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]­lá@MplvÂ)æ ÁÁHW‘‘Ôy>Y-øYŸè/«›ªÁî hC [*‹ûFã­#~†!Ð`ô\r#0PïC˝—f ·¶¡îÃ\\î›¶‡É^Ã%B<\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF¨jZ£1«\\:Æ´>N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p\"띰ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡ۏÙÀ)PÓÜØHgàýUþ„ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠŠ=¡p)«\0P	˜s€µn…3îr„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ\\—b„ÿé¾’Q„=7:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉÕ«Æ¯ÕbBr£ªö„’­²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^<Lóà4U* õBg ëÐæè*nÊ–è-ÿÜõÓ	9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7	tßšé-&¢\nj!\rÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl	8‡;¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5-	Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾Ã4ÉDZ©ÕI¢™'\$cL”R–MpY&ü½Íiçz3GÍzÒšJ%ÁÌPÜ-„[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'\\–’KJa¨ÃMƒ&º°£Ó¾\"à²eo^Q+h^âÐiTð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\ޝX°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½û΁ß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿á|9Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á]ÄržÊý¯v¹~B£ PB`T¡H>0¤Bҁ)ð >¸N!4\"‡À¦xW-ÅX)„0BhA0à½J2P@>ÈAA)„SÎôn¼ìnìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âöàøïhèí@È‹’î®(–ð\nì†Fì˜ñÏ–øÆ™…(ìγ¤ÛP\0÷NÂõo}¯‚l«<ønÞø®ˆâîlëoq\0/Q\0of*Ê‘NÑ½P\r/îpA°Y\0p\\ãï~³ÐbÐLh °!Îã	ÐPöîd÷.¿ïy\no\0áÌËжöPptùP¡ovÐ‚knޏ\0z+æ›l6÷°©¬Êø0’äð¹P½oF€NìÏFô¯OpýàN`ÜÐÖ\rogðá0}PÍ\n¬–@°”ö15\r±9\$M\r \\©\nggìÀ Ø\$Q	\r‘“Dd‰ÆÊ8\$¶ªkþDâjÖ¢Ô†ö&€ÓÀÊ ¶àbѬ˜ê°¿‰›	ñ=\n0ÊÕÀúºÀPØ ~ج6eö½¬2%Íx\"pß@Xб~«æ’?¬цZelf\0ÒZ), ,^Ê`ß\0è8&´ì¨Ù©‘Ñr€© ©ÃkFJÂÂP>VƜԍp¨²8%2>ÂBmÎóØ@ä’G(²ä¨s\$Ž dÕÌœv†\"Èp°wÇÆ6§æ}(VÌKË ‚K¬L ¾¤éÄWñöqú\r‘þÃ̤ʀQòL%’PÔdJ¨¦HÀNxK:\n ¤	 †%fn‹ã³%ÒŒ¿DÌMü À[#¢T\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi2I\$\"@¾[`¢hMý3q3d’þ\0ÖµÈúys\$`ÖDÀæ\$\0äQOf1ƒ&‚\"~0€¸`ø£\"@ZG¼)	Y:S¨ê†D.S%͈’ Ð3¾à d¹ÀmÓU5‹æ¬ó<£SÒSZ3â%r “ÎãÆ{óe3Cu6³o73î—³ÀdÀL\"àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2øQôÐ÷“¼åÓ3ÀVذWBðDtCq#C@½I”P÷DT_D´:ÔQ<”UF²=’1ô@\$‚‰6Â<cÆrÅf%Ô¬,|“27#w7ÌTq´6sþl-1cPÕmðqªÊ\n@ÊàŠ5\0P!`\\\r@Þ\"CÆ-\0RRˆtFH8µ|NíÆ-€Ædòg€‡Ò\rÀ¾)FÆ*h—`ö €CK4Ã1‹ÊkMKCRf@w4BßJÁ2\"䌴Ó\r1Q4É2,\"ô¤'¼êx§Œy—R‚%RÄ“SÓ5K”¦IFz	#XP‡>¨âf­É-WX\ršÜê¤pU´ÕDÔt&7@¶ÂÑô?’©ÀÑ ªµ£}O1½2†‡2Õ#UK*¤)ô긋Œ0o<> ]HŽš„Æ¿rè›LGNª›ê˜W%–™M^’Õ9X:ÕÉ¥N”òÕêÔséE¥­@xy’(HêÆ™Md×5<52B– ð–k!>\r^J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0,™DJ£Fxbèµí4lTØ•û[¨§[é•\\‡¦¨Ô –\\{­Ò6\\Þ–’ öß(#mJÔ£,ý`©I³ûJ‚Õ­ÊÜèlߍ ûj…jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢®ÑW•\rkÕÏ)\0Ý3Õ€@xè¹,³-Ê	5B”¡¶˜=ÂÔ࣐#–gf¢¡&Üß·Z`ä#ÄoíæXf È\r ìJhô˜“À´5rqnzõ§­sÁ,6’oÓtD´y‡äÂb´àhþ—Ctn˜9n‘ í`§X&¨\r'tpLž7²Î—¤&—¨¼l¬Z-ͬw£{r—¤@iUzM¿{rxא—mÒSBÀ\r@ H*BD.7¹(‘3XCV Ç<WÔуÝ|d‡q*@”þ@ÞÀÊ+xø÷̼`á€Ï^™Ì˜ß¬__•ND­X\0Q_D]}tõYÅúp¦f€wÔÚ\"â3øz¦n«MYñùZR\0÷¬Q¤?¸{†M3†•£*×1 ,¨\"Øg*U¡*²¯ˆÌ«zÒŒW5NV2O-|€¾ÉÓñ,×]‚B×dí\rŠñ/OâtÎøÃï‚Ì0‹xƆðŽ½Ð®OCë8Þ-0Ò\r”ÿ0à·õ„@]¤XÌŠÐÎð\\\0¾0NÈï£Ñƒ4ëi¨;ƒØAtê¼8X—x¤\r†…Š“‘ìÁ‡øÝŠ×Ê7¬<ö@SlÈ'LÒø9WŽ ÊθòϬÖËì¢Íı•ùRçÌðÌ\r¾Ï ÂÏò|ÜXÐÖa÷ø7y€Ù\rwe¸Œù„Y!ƒ˜Eƒù’´šÂcRIdBOkË28[‡mÌJŒ+L ÈÅÙ¸OXpføÓ9ѝDÏ›·¦ßªw“@Ë“—Y—…¢Õ÷\\yäAcÙ£ƒXgš™%šôó’Â1“ï“j	œX†9Cc݇àR¡¹‡”QFÇpdÒ= C˜÷ýš\n\r¥Õ‘ÔóšdjŽÙ«’xE¡Â2FX§¢x_¢ØÅ£Ú5£™—}q¨Åí¿¤M%¦ZM™:\nÏzWšX7¥åí¦:ÐZi¢npY;Žù>ʘí£ÙɆ:6Ú;£ZÎX0ƒ“Ì¢#ùýcàMyU…i2,q¹FËšÈb­J @ÓgGè|4ógÈÒmzWõäÊ	¬)™Èr|àX`Sc‚Õ§ÀË™„óc—¥‡û!²B²—±”»/}{4JÂ\0ÒÝn»Kuz @ÌmÚÑ®€ß­yÍžÒyÖ\"º)u¹ÊÂÙã¶Y睘s·c¶yë‘¶š‡··y¼—ސ¹7Á|·±|—Å{Ϙ*)°Ê4Y`ϵ[v¹‡¤­‡û^NX•†¸‰†ò‡W”©û·‚7†;¾_‚‹*x™ˆ¹Ú\rùß¼߉xm+¾mû¨Ú™	´»¹‹\$\n¾l˜);™²„|Ù ßÚ™¡:œNÚ :„‚Š_È8N³¸Uœ5;¨p+U–L‡ò\\‡9í¦Ùñ“›¡»ýO:I’šû zQºœ¡ƒ¡TëšÜ)ªXG¡æ»ÅJ{w8“¾ûʼn¸UÆù\$ôàÃøü›PxTY¾pjh·¾J×À›˜JÙ{‹Âð@îÇ‚³ øðZ‡ÌÙs•¹h˘ç–XÌ\0Û–lÓ–ÌàÌÈθÎçìó‚Y}˜Ÿ®ü^Ð@u2ÀSÚ#U‰ˆ;È|¼¼•¥¼™P\\ŸÊ#ùÊ|ª<®Ý\\³À›žJ۝‚,öœÀ•\\ÅÌšEÌú…‚]WÍlÁÎ,£ÍìÉ–<åÎŒÛ>YnÎ),ΙrÎüûÔ¼å—⍺]Èý	ª\$õÐç½Íq„DJí=•Ù÷•XI-ðÅ€äÅÌa‡llÃµ]\\“w(iÜCÄ׃tƒ‘<i-u[uVŽDÖ“¸Q¸€xb€kæLI­.kú›@ÞÀ„ÜN‹“[ñ¼l<o=-]1`蔼ªdš ÜMÌ7‡@Û%C=]ú›êÀ/|-à܏ˆ¾ÉÞáqÃã•âíùâ*¾C¾òO~ÊQâòså`·ç(âòãDÉßɲ¿à[ãþæ>Éká¾R™uéÞ\\+>)3íûPÊßP§Óí6ÓËM%º¡¾pÔŒœÅAÐ3qmu2ÖfzƒÛ¯ì4s‹	´í`ÛŽ‘ì°-kÊS%6\"IT5½‹~Òì\"™íÂUt_	TuvàÖ½ä¶Yw¤†­0I7¤’L‡\$ú¿1Mí?íe@3Ûq{,çÀÏó\"&Vi·àžÔIŸ?¾µmõˆ™¯UWR¾´\"uiT‹‘uƒq­Ÿj\"•GÃËõßò(™ï-½‚Byîê5øcÝõ?Œàwñ®°ëTúî’`ei¾½Jtb‰gðU‹3ËëÉå@öá~ê+¾Íï\0MïGè7`ùïÍ\0¢_Ô-ùñ?\rîVÿµ?øFOÔ6á`\no†ÏšInª¼*pà™öeÙí\"T{[Гp^÷ä\nlh@l0[/ö„poóJKÖX“ñ€ü<ª=€9{Ǿ6ç–<eߏAxãÀùÇ‚¼Éá4x[ÍžLò“~>!åOQxš{ZVFÔŽ`½éÈ~Ižß–“øL)Q[ëTûôM›àþT²*BC¤~	æâ‚ä\nƒò¡gÈŅp9zKÉ–ówzO9di^›'‰+¹ßïDz4ägHAº¯Lyô¡\nr€<IêjKQó¸Snô==\r.Âo7½Êé%a;‰kÏãmX¿›Zi%P¨iÏ\r­€¾ýµ/©…L`pR0¤Ž&õ—I (Øá\\.£*m„*Ž(ÚÖŽõ—\$䆯À÷\nw׊Х…8a“\n&´Â‘žÍUmª MÖ¨P+\"Ly„ó?¡M\n€2’	L\nbS ¥NäùÇr¶!w¥jw`¼Â\$îôƒráè…Êaáv±^Ãq­F‰Ü6•Ó¨i*™Ÿæ„ì_xõØ\n‰fðIê:B&ù6@É“KED¡úú·QD(V`.1\0Q\$íøF­¹H®’Tþ€zІ‹Ì\rªjkzM€ÐÀ®Y™À(61€”x‘+®%dj¸Æo\n¦¬\rg°ï\"ÉŒ´ˆ—?Œ1- 3hÏXÖÁ)åyjÃ5r¢N±#Q¾¼Џw{_þ¡øG)ÂÎÙ1i‹Ì íç¤<Z‹ºpX³¡Ö\$â?¥=%.´€Ò®&¾­%\\±8w­!¤µa4œ<JB[Ðĺ¦u4‡%êŠ×47‹Ä%gѐä&¸€Z(@	€E¢{@’Ð#¥–2Šh@Œ#ñŸø™ÑŸ¥£@\$8\n\0UŒìjãA(ׁž2ÀO€Š8Ú€ž5‘¸Œ¨@†ð&'´\n€DŽ\$i#ŽÀ#Ÿt\n PŽTs#]P*	àDÌuc› PÀO|pc—øËP	ÞŽ¼i#Ô}ˆæ:<ñí\0\0¥ÀˆÅ¥lo#}ÏFÜR‰Tp@„À'	`Q¬ycTp(ÆŠ@€eh\0‹˜Õ8\nrx› cþ<`NŽˆã:)DY\n*Dý‘2{dZ)A‹Ú4±²¤€cZLð2ÈÊ<ñò\\Œ\$r#ˆþÆö7ñÁŽ¥°!û€´ü€Nª{O¼@\$<	Ñ¢ðVƒZÒÆž52.Aù#D0 \0´ÀI¸û\"P'H	²_)¼x@Š€*úàAOh£hI)I²L1¦’ìƒäµ%áJI‚B‘þ’g¤i\"p÷§K2}’ä–Å(CËÉÍ=²t”xCøÐ&FÄ	r“ÒoÙÉ@@'”ñ€%	 ÛHÞT±áˆ	ãÔ˜:=¾)\0.ñ°]Îâ5 .ðæõ(pÈÀL!à8­\0ˆ¹	éR\0L‹YaÔbkÔ°ˆ6Ä)Y·éˆî •Ô®£	h³zZ¦õ±’IgÎVO3oœ­Lgà3ËY2ãÛ‰ÜDoPË`3̸ec-‰r7í‡2Ô—Dº‚Þç‘B¼‰Z•¼¼%å/I{MÃ\0pÐÀ́.`äÊÝo*•Ô¯%T€ý\0 &–iR\n™+Éo€ì©–\rÀ^2q”Ë©\0\\¨I@‚	KÀ#peC*!>€/á%|È…Ì’ÁÞŽüô\$è)çÀ§1P30(\r¢+\nZÆzž„))\0*®\0kà€ÙÅ2¼–Ï…(–E86å¶s—tºf&”™Š¡´“+;”Ø76&ãK–_Ž(›9fÓ,@-ÃÉ4l\$Û‚e7\0ù±:l“LÝæM7.\0ˆ³|›ðo–JÛ©ÀÎZ³u•̺Š'Èy{ÅH,#\0vU@9!¼¥	Ñ'†¨&„òGôøß@_-Ù¿³ºt;Üê¡:©µ€²u¡<—ˆL†iÙΚ_ꀝأ@U6°Îù#ä_€L'~ùæ/Öm`\\Të']=Iäât°Çž¸Âà)ÔÏqùsÉ9Âa<RPº|tžút&5°äs©lî@¾	ÞKÆwS®èlÍ:9úN®wSø|·göÉØOùAП<ë‰BÈ€\0/àz@´	ÍÏÁ•Òå†=?=iÞO‘ŽkÓŸ=\0E@iâÐ\$B× hO\0Á>DÖP´ó‹Uäçцj¥HìÂ9F¬BcCi‰é­BwMާtÓx€PÀÙM‚?p“®=—äì8ÜÔý‘Ïlg~¨˜tÁa©€%]b\$àØ\rˆr„èÄa,6ÅtŒàW)Ž\0U¨›F˜	|æì“¢ˆvh¦Qú*¥Oƒl.C\$À\\ ÐցRRÌ<lcù™&Cj3Ñý%ôZM¨öÀz9GpY’â¹£\0i\$Dµ‡d‡ñzt[')[)Q¤ØêÞkÁpi0·#cþ‹ôNE¨ô(ºC2L	Æ@9hÑEJ5Ò,šh{&Jzö0n€vª©>[€j“£Û[œ]ƒK•ýRîJë>.;ù¨íF=RÚŒŽ<råÓM¡=—Ô’¤ÜhØ^Y\\RmnËÐð Nn*g‘¦ôÒÅB¬·5^QÒ‰@O¢°x¨¡HIÊT ´â9½)(‘œ&µ‡}A)PÊ\\/êô…_Õ!́H þÚ‘¥¤ù\0éBá­\$z4ÓTYu‚J’v\0ꏃ”¨…%@æ32\0Sôm€--Gi@¸úQÅ%Ñj©YÝ+FuzlSž—”ÜW3ØÅ·OrŠU\$EÔè;¹M©¢\\€Ô±Äu/£õjeQªš¦§,#J¡ªXPÔ<UH•TVVé#Uê™ÔUbˆOU´DZ‘⢵£Í8êÕUJuS «À‘g)XDZK‚•¢Bî\n¼@2Š©ìx@d&ü ½eÜ«Ià@ÊFwì¬8“©\$Ù'IºV‚V†U\$²ETÎ_ð*ˆd¸/áFCÓYdp§vGƒ‰3‰ ‹Ñš‹L^(ù`áj”÷2S¸ºcÛW¨ÜJQYiÖHB”£ckœRè\nþ²U\$jê\n„ZAi€î»¢U*wKDRxW‰LÂò­ˆ€+fÚŒ@ã¨A4¢àGz…R\n²5‚b¬\\_²Ÿ ­ô‡¡á0¼C@¤\$X\0+Å]¤ÑÂè\"?‡n¦€+QIj\n»x\r€ôB`S¸âM‚ÈÑûŠ\r o°@‚À6XÀ\"{±\0µãb ¯)–ÁM¨cMðW ä¶D_áαÐv@{cÐ:¤®%[%‰C²þ1¼Ù;AƈÌTn› \0º a²pážóe~ÙU5 s©V†Ýe|M9‡€9 hË@æ¦\0êÙ~É@.³	l€· Jv]©ºD§f€7¨FÌá±³ËùŒ,/+:¾‹íÚXIi­\0U¢â@Nµá´\r Ê¢,².½i¶‡ª³m_ûFŒàÖõäÀYiUÔÓJ¯!©gûLj‹ãÑú¬D“iKAà6²õª-U«KfÖ_N€\0ö-3©ìÀã3+¥dãiûD	\"ö¯µM¥ml‹L…XÜã㯸Œ>‹&|UÕсõ`Ïh¾ù2¦ÑÐn6Ý…·ÉI+Øné-nDÃ×`„µ†®°É”°@ã¬B!;X™smȯ·†pC`‘p5Á°¬¡O‰%Z/Õè5”³é#CK`‚XˆªÂcb°Q#«§Qa»–Ž…ƒ¸q…èpÚÝ÷)™®G+~Û–ß÷\"ðlM_^zò©šæ!ÌÉàE«”Ð¥’®šÀ‡ïa úØp86ì„åˆn+oì’Jâ¶ö¥¾,¹¡ó‡¢ºw\n¢]̓pëŠÛRÁõ'§eÖJÕqµ'ܨ%£'€nlO‹h@>NBÈŠX5,ˆ‡‹¢ÊrGr¹ Z l\r(ªË‘jIù†±lŸ¬%b‡;s+±× ¤Wg7¨)’*e…¸1µ•ÞÑ3“L e@(»p\0 ÐÃŽèds®AñÖD\0Í\\bD§\nuê/&1¬ÞXR×¥E楂5¡Tœ\r§}7õ§”ªîÔþ”AÙ¬áÉkâ\\–øö͵´ŸÇqà2Ü€öZ-wo´“tßZùƒ‹¯]ó-yq2j+Õ†¾Õ­Ã«¬€n¾XA«Û\0†\0º¾+S•+ïY6_BúV7z®nZ@̆²Ô·Æ´]´-UMJc*¢ü¸´®í¢s\"ß+\0·ï¯x´B3^«öà0\r÷ÜÀÎïÁcðÖ\\jÆÆ*¬P-\\Q8ˆÊށ·…l•cË%XþÉVB‡}‘,€þ;(‰`*Qú	\$áïÛrßÂ{ÁKøìCúÖ%¬\r¥ˆx	ÞøQû…,¶Ø¾¥×/‰vàä\" pÁã¶ð~ Óáã ÅJ5eãü®Eš-^âX;c²\\©¶×¬m‹´7£?˜6C*庮†,7®HfÄ/Â9eÌ0[@ñ¤!bê®íÅþUБ=›Äi.Jocñj;ø—B³\0¼ƒï]Õ”ÑúvÙGÃÜ8àO\\\0ÀÇŠüO©›\$Ž•.&	p‘\\‹H1bØpø’:F\"8Ŷ…þ‰ŠøVx©ÅýµR®–xä=À3Æf1Š+|Ò»\0ÂBÀ¼kbÌPÇLÑ’£ô\$zÌáàÎc	¢ÇÐi,Pcb,pÃn(¥Æ,¸ì`'/»~êÙkÖµ‚Îp€q-›Áȱ¹VÀÜ܆Ü\rÙž	\0á‘‹dSˆÓÈÚÍ+º\"Šéˆ­1\0(Ä-’Ì1~útcªþfý¸àBÛ‘b}Ø ’Ã0<1\r°¨¨L’€»\$¸ˆ2d\"1ž&ì™Æ€BóN…Ô\ràB\rrƒ«\"?vädäZá±.\".\0?wä¼9€oÃà\rÄ0¥Ñœ!¢ÍdR€‚뤶\0‘ÃÇHëÜra%ЊØ+\0yrƒH¾sÏ’4W#œ,\$èô \0„*xBó\nPÌòü|„ 8@/ \0ø2U’°ábíÝè¢ÂÎΪxÀ!¨d§°óúNÿ3SÔ?£ÑP»…€(òg\n8·‡ppŸˆü€S9õ@‘'  Ç\0úyµÿ\0¦y46¡H<‚öÌ×ô\n`S’ˆ…¼ÈûCY¹’„”³jp:\0N(ӍŒáX4ŒkÌÈÓgßDy‹<–n4™£ØrS<ÒÏýˆó¯?¥\nÀÇBãúf('™Ì~dgÓ™SËÏ?<³ÓVg(1™éãæƒ2ù£ž­—²)ÕôŸf`éZ€¼a“>t{ÀœÉŸô’>ñø\0ŠìPû`O¼\\sŒ<õ?4äwÞ~³ÜÇf@z™ÿÍ~hBW Ìø³á´ŠxhA¡¡ÜO'=úP֌ײÜö±ë=óúc[ysèÌûgâ|¹‹Ï掳%™Mè,Q³ÆÒ8'X žhlUs®…§Ù¢ú é4ËÃqDýÂx*8g§NLšBÈ–¨;§}%eû@YìŸv ho!\$æ›NcCXì³@Ð;YH'Á°@^ à·Rf^x„\0^osÜ_fª—“;¨Ópj]²:’Ô¤ïõ.mLêl\rš®V¨\0ó@Ü€¶Ê\"ÓÕÄ1%Œ!_êô@-]8f¤ç -Õþ±äa]Y¯WšÏˆh`(‘¬äJë@…ÁÖ\rˆ—õ€Y	kB(€xÖÂ:5˜B\\QkO[:Õ0˜¼¡­uk›X¥\\×P\0ë[öx¹ÀÅ®`ŠRIGÕÐk5°ðª§YzÍ×PÒ™¬=†l=áõÖe€\0ç•2=k` Å[K¼‡B꽍Ìû8ž¶C±Í}k«c{#ÖØ¢„ølŸdfF.̵ü-›AºÿÙ6º†K­’•¤ÐÖ×Pàv„'¢lHiAÝÚ8C¶“®	G„`GbyÙ¾·Í- 0•Ĭ;[*_ˆ¡ãmlH{(;Uo¶ÕÑ*Ä]Š,Ä‹åŒÖÆÈþôXË“¡80Cµ°K	­!N¼õÔ(I`¨³	V¾Dv½§íšwá·rpc,ðåŒÃÓ\0ää 9~s»Xn㦇¢žŸr[ec·4dçpÅi	\\…Èe2âãl±ÄaZCk»gl÷bB„™¶7x%¿ê轞í€Å»Ùk`ì\nÁ(@ź«®„5åݘ¥Ï­ċ#t›–Ü–éãE½}Å„sñ–Lvö÷E¹ï\nQQÛ”Þæú76}õ‹Or»çj§b¯%@7‹˜àÛµßh³w͹÷n£kÙ`Víq·±Íòï³~›™ß~ø„4{Œßþå÷ë¾óË;òßï8p2mP+ dÖaX8&,=Òn›}ü!/øK&\rŠÿt´H™Ó)/øYÜ”†6@å¯=}ðŠðEU§lKÃü\\kÓb[×â1Gø®­M­)™J¨xXÚEïTä¾	/¸\"-‘ë…<4ßxDˆ¥ÅíÐpÄ(¼3ÞÊŸ·ß´'È+Û\$\r†¶<rí×n`H\\t\"þ¶70=ä·Y×Wéhsð­\rÏw¼~°!ù0@6l‹\\† •§/þBò7’¼‰–ßÏ>Fÿ‘܉\\¶¼RÙ¾-Çn‡€þܧ\n¸?F~†œaÞ×+xÉÁýëñ¨\rœl,fúCß+­Žîw•i¢GøÛËî.X!¼_à71ymÌ~ñ„œDå¦È7åÊé	÷š¼ÆåîûÅG;gówƒàb/89¯ËxÑ@!R–9¸éJq˜Y¼hß'3¹ÏÍĬ*÷ñXw‹Ë®^—ÛË	¾7ŸÎî5óÀûåÖ`ö:î#È+Û­0˜ž·œS¯ˆ@0óo7:&~r(Z·‘G1zÐþˆ€·¢pÝÎñdNŒï“£›`ç¿/Fz@8Ñt0ŠZÌ_ ‰ªÎ0³™{Úè¿Lén•‡×‡oEËÍÑâ=rû¡‚Gj]õ H•¥›²Ò·…»ÞAf+ªÈèVº•º­mžœ7ýåßB‹ÛÓî*q‚þ}cãwس=Û„g¥»wE¢-H·°€»·¦½&Rh4—ªMêžZÕ_L½©]WV'ÁÕ¦§Íñ\"uŒ@-ÜaMÃsº@9êL:ÈÕ’]ù#‚ÝaëoybÝ\n\0[Øêrðp*}Qí‚bwßÛÓ¦?†ºâÿ;Vc¾Ê°›»	«.Ûsç´¢XíÖ°ûy·R=§&d”ã·rûO«žçõ2Åj!Ïux¥ÜÎÔ§R{NÖ&øµÑ»®5ö„}£ßvyÛ°Ž1o8Z#žþ{ÛNärû½ÝÑï‡Q:BÕHzW{òïW{:ìržÞ÷ó¶}D\$§j7)àP€÷ëÁÐÝCvV¬X—¾ýdí¨D7ó፮€·¼,Ôh»÷á_ø]·^í—qσܟxO»]­ïŠö¬?p{Æ\"ˆðOŠ8Qáµ?xw}ùJâ?9kâÞüx½5buÛ&÷øÏo›ÅÆ^ñ†õ¼Ÿ¬>õw“g]çíh¼#ä?+÷‹ mï(³¼¹àÿ/ngŒ	é5â5<ù;‡ñüòÈ…¼Ë³½œxÍ%‡³‘;ì(³ÞVóŸ–;Çço-ìó˽ëòÿ.eänkpËÂÀ_ËFäXõ9ÓWjQ¥ÓàCBاåv3R=°ì†¦;aÙ][yËÈ»4Þ/¢|óÃ##v	@_Ç­}UçM>ùßÌþ1§»\rC£MúqƒCÞÄÆädÄ˜U#[ÓɦŸm\n\\Ä\r6ô'Ï>‰ôÃiI;€R\0X€ç<rW0[ÀE°dHSèH\n^×\\”¥3ÂTû´ÀF÷xB™îÀ\$	Òi÷´-‚­'ûÛÝÕ÷Xf¼}\0#ɤ	1êo·BÆ€*;Û1±(\0ø~@)ü§Òh>³ª{³â~Ûøw·ÉH/vL\n9È?doÒÑð°,‹x)#>˜#b`',úgTð¤È~¯tˆ	€YÐ}Ùï°/]-'Òüž\0¾(ØÈ þñ@Ï¡î/Ÿëä…>¶Š~ðolH‹âžÜöÿ·½À/qû–DƒTúéö~¾¡o|ÓìaÉþ°°#|F8ÍûdœÏ¥ò/±|“ì¿u÷¿€Vîâ©hø\n>Û÷ÿ°{´	Þõ÷ˆýçï_{þGâ IaùE½÷&{VNñžod¡õÃFÆBÀXûï×½ÙñÀ(I¦N@Yû¿Çÿøÿ·ýÇð9»üÉ¿\n-èû{çã@RýoÛ½Ù&‘o^3Y¹÷ï»>ð¯†|”òŸø—îþ-ñóö¶ùä~åý/»ò?*ù`\nÏú?—Sæ!VùŸîÏ©óœüïîÿ>ÎèÕ¸}ïãþO⟕ü¿Å>îýRMïûºƒõãø?b@\nOÚ?þà0¯s\0ˆ¢IèÏ€’ú+èà'¾’úX¯¦À,úƒò`'¾¦óê¯Ô?€úÓñ¯å\0‚K௸¬úCéO…À2út©>¨LO¬¾¢Lïv3ŠàúÒ\0ŠÎ[PΛïlë¬H\nhä²Îlr\$/Àý\0+½Øý\0	»£ž¨	©\r@ ?Kå)<#PøÓîïs\0Žø ” ÂÎ?Kæ@Ì@\0ÃæÏꀱø\0²%,p)?#£îïÄ\$ø\niL€¦¤°3è[Ìå3˜’“îð?²¬ @Ï´O¼\0ªýö°A|P\0™ôD?²N@\$Á,£Ý/ÞÀÿ€\$B?0ýÃø\0‚\$¯²\0Vú’LhÍ…¼Žˆ	èé€ùŒ£é½Ê>¤#6ý+ù€>öR:p¾>«7#÷…½\\Ð³lΓãAoãüÉ<3lø	pe#7ÚA@)À±ðü¯Ü@ÒÔ#ýAV?hýãøƒ	0*ÐZ\0“°*Ð\\AuƒüÐ_>kÃöÐb?>«ïÀ\"…½cæ©#6>ÒBÃö’Òü \"\0ž>Ü\0psÁÒ?ÛDPvA\\#þà(>Ò÷3EPŒ¿>ûÓ:­Â<\n´OÅ\0ˆüd\"ï@A\0ô°Aꎐûð‘Áò”ð”Â5ìÞÁÿ	“ø #¿‡	´ cþ©	“þ€+´@ÃùhØ€ø÷¤€\$\0øŽ‹:M3nø’3cêÞ`ûèØÂ„ÑT+I8¿Bò3@*ÀÆÐø	@'”\\pM¤8Olòüøû¯†‚­»ÝM€Ÿcî#üÂíÄð7B÷h`,	àâ6oŒÂ\\\\.S>¤›DÌÙCù˜ÿ0ŠË´ÐÆ£S\$2ÃòB‚ù«ù@&AŠ>ºLðkù¬4ÎAóÜ­3˜÷Ô°Ð@½;öÍ>pùÐüɤ‡\r¨\n°3|Î\0\nO‹Aø:6ƒô\0¥d7à«@8ýœ%`#Ɉ[ÐÀ=ÚDåÀÐ\n°ýÌÜ3u’LãóC™¢9ÏBCÔ:`£Ž‘\$!hÚ\$Ó“;ÐêB”20uÁ[¬8°ñC×	Ä<ôÃäúó篟ÃëdPŠÃß|=q€2pí€V>˜û°áÃ÷	|*1\0Âç\rÐE\0©dAov´PÎt'?d,P­D*ü@	/Ÿ#6øÔCP‹BO\n¬©8Ä',5ÏÑüE€ ½ËLq\r?m¤Eq\nÂzþC@+¤är60åCê?3ß/¡Ì“ˆ\nP܏ÙlHð•D—ü¯Í¤5\nóü°°ÂÆãói)D°„1(ú£Dƒï£7ƒæÏu>Üà\nà\$Aæüj4Í\0˜?ê4Áª?”ÑLK	Aæ¢>Ͻ?Œü‹û€ÀqDI@³£\$;ð†D®Ž8	 &¾?;°c€—ÄJØ£bÑPû¯ÐÅþ\0	ðBÅ#3í`‚øˆ)ªÁ»ÌOÐ3CMZ50âEO6èÔC¯ì\0ÂÀŒ\\\$èÍÔûp[Ð9BãíÁª#cj<‘1Ä1B;còÅDBhÔ?Ëô@`*€ƒ¬.qbÄÐøX	o?;\0KÜp¤3¥8	ÐRCÌú6/®¤—ˆ\$>lͤpIÀª,!€*\0®+ÜÀ>=÷]±wÅã\nT^pgźú#ó\0ž?\$J@Ä	\0*CÈ*É7Æh\nñj?“ê:pArø”]Y€’ùÔL‹ËDbÑŒàúïBÑ4d@(Dä”ÌcÀEçÛâ@>\$Òà	4¾Ø‘þц©</¶Ð?\n€/ĺ>¬gpŽ>šŒü± ¤I6i8¾;³êÃèÆ‰cÝ1¢AZ6€!Æ}<j±¤D¢¤jÉ(F’?dÀÂÅ'óêït\0†üTeÂØø´1– ú ü£þAv?lnos3˜’„50†#Æ>¼Èòœ_¯«Ûd°©¿³¬UкÁZPú©4DŽ|;Ðr£‘ÃCðñ€ˆø[9£ê¤¥ú5IÇ5²I‘É\0ûEOÜB\0{9q C‡|\"pUÇZÎPû` €²øý´GcœQCëGPúJO‹ñÂ6(ÚBïóÇz>Ú7ðÏFøöÈ0IÂ:¼vOŠÇ‘¢BÏuEäµ·,\\0ŽÇ¸r8îÈûqgA6>ÀýÑ74D÷0qÇG¥ûêÍ>-SE@# ÑÈÎGÒ÷¤.à*\0i\n\\-`*\0q\n\\eñ½Áÿر\"—Œ)qu¤ýÃï³nùô@`>DÔ8	\0/Ä@þ„_±Ú€¤üw#îǍlƒÒG‚>Ô„²¾-+ߐ6¿Wl%°6½·l0®\$5´sÔÅ&Œ\r *\0e!èrÇÿœ€qI” \"ÀæÑ> Ș3EILÅ\"‹â‰94G\$/ñ¦\0—´‚©\0¯ Ñ-2>/„ƒì倘üèÓGg\nà/¿LŒq®BP€\"#7ôzñáHMÔ…O‹ÈO\0̏ &£¶2L‘ƒÁT^P@Zúd¨À=”]Q—=çÌKCïEã\0ŒQO¢Æ\\øôs0¤¤>ƒèq—Czù¬†±—G„>¤†²¿ü	ÌÄ@?Œ0Â?ü\\oÂ¿³–èø4Md1‰9€‰\0¼ÍGò?m\rDÆÑü(Ô´LdòÃ\\KJ8\rE’Ðù-24U 0VAÛ”…R=ÈEäe£þ¤5!Ì2m³qðüÏÓAEÛô²V\$ÆüÏ•ÉâŒØÅI9Óü‘	C&ù\\GÀ)D «ü§½òü4çIç#pú«#ÆøŒ—ññCˆù\\x£ø¿C(\$òƒHÍ:NI(J\0΋ß\"w\0¿,)PØÇ¬‹íÏ‹4<þÔ!òŽ=ÞúœGošÄó‹âP‡¿6üìN±QDë\r[;‹A|KÒ'AAäP\0¥C:šÊ„̉Ñ4Åã*To‘†£ÕD˜F^ÈûÉ‘\$)Ï¢»¬\n«É’àÍ)’(Sà‰\0ò’È(ý\$:ä­@à‚²Y8’‹JÐà#ÅЂë+œ¯\nQ5ß+`a+ ¸iþ`6x𑤪†è: ÚŒà.ÐT‚:‰þa˜\0øŸcv(ƒ^X¨€Â¼H˜O.\"JÊðO\rÎË>ex-¾¨J¸€èKPïû¤rÔ‚-`2²€ÜË_à7€Å-!\"Jؐô¶òÝJêH.²ÚËo-ø.²Ý\$ª<¸BOЀ`> ©dáµ\nêH\"ò؆o+›“§s‚ؐè 3ƒ‘+¢± ©6¿/¡ƒa.Ð\r²ð†nd»²ï˨é’?ˆô£z1\0¥àð‚?‰¨ 7€ˆâà<À?âãø\$Ó\n`+Aw*MQ¼Ã<Pýo¿°?,)#P>”à€šøÌ„\0¦?jŒÞÄ“ÄVqÀ?“£ñ³\$¡	9¯õÆ-üÄ2ŒÌIÄÐîD9̳Lg1h[ÌۏÏ1ŒÄsC1sÞ©9Lz?à	 LWdÈovLŠþ#ðÐ9`ͨ0æ€Þ‰É¦W·–ˆh>\0>¦¢Å/)Dáü²·Lº¢¡ÀÌÀ\$ÍaÀ†¨9*ƒ<:C+àJËìKPJ¸\"—L\\Ã*bÌò 1ÔÀä6ë4ja+\0î%Qf ;KœE¬¹ÀÔš`è> >7¦tÒHw€¾MPn3I:fàD <LÄÊRÈ'¾.\$ðíBO\\²\nû	Ðø5ã86Ä̹D1‰<\r¼³\$Z…œð’ƒ„ï4Š%r̃¬²×àúÌþ\$€ƒ˶§»éo™^Ú\\°È\0øf[z“e…í6|Ö“gŒ&ñ8+M=6È5ˆ³\0Ò1Idì{™^fqd趈s7(|©tM.]HSó[€ø¬Ô ÕÍ;7yC„—šÎ¸mÎÌÞI|A‚Ê:`c †Êß8\rÒ…iÔɃ¤ßÓ@¬‚P`È~\rlËa=M3ã€áf‰<ëÀRå\0Ï!ûÀ@’ØeØ«ríÍdO‘t ¬‰T°³-æXY9A“˜:38áOÊÞadÐ¥ö’gL³fxË=4K\n&€ôu0KòͨÇ,ô³o7¤€ëĆÓ,à½Î3Ë:h|’ÎKbá)AN¬úÄ`ì€Ñ:ØÎŒ€×;´ €Í»*sI&”á«Rsµ>\rX\r!\0\nÀàBsVM63˜KâO×:Ä®ƒƒc5„× úÎæ‰X!AœQ9z%`º{:èHòºDëE€îcv!‚Ν,Èôá“:Xƒ)¬(üº%˜Ë2a&Œ«,ðl3Ó8j1è|’͇É=CRrÍË<â\$óŽ\"KB3äöÁ'9…:|÷)`Oj+îÀ9	}-õSÒ>2¬ëUU5ÜôBUNàóô÷²ÑNÄäìS¾NÄüì«ÈO²äû3±KNìÐŽˆ†¨ ×@:/ç7£ÄQ†¨ç!Ô@.’(&v9ÔédÓøŒ^þ“‡’ج!ï¦[.pGc K#?¸füÐpÝe“Oæçd®€2\0k6)„,\rÿ65GmOFV™dåiÈx,ÿa=O@s³þc6…`¤Ø\rJ\0å;‰³H†(ù*ŽrÅ-Œ¾.íMÛ[ BΠ!(àóM¸LP«bUèÛpJÔ:î1úÞE“»¦º!:¢,ô:‚YB‚ò*KRÞ¤¾rÍ0جLî“a6Å;6+2Æí)èUB`JsV0È:Ô0_B14/ÎúíAOáœNeúÈ)A~\rÚÈ öÃÌ –NPów“,È´C„î3œæ®¹ÌÞ°T3öq9}SQ\$ÄãA‚P“DÐ;!:À!îæ¸YŒÐsÄÎû6Ø“ÑÑRԁŒFt›#C¨Ï€øQ\\`rXr…<í'ò×72ؼ´O-„w9Ó¤ùËb8à5€Å3{¡\0Ä7ø\ra\"ƒ\nh[j·ŸåFÛa)”Ñ+€2Ï<%’´M¢ê|®m¸|\nÀ54pˆþ	&bUQ¨8\0EŽÑ¥4AAN,ˍàì˝FØ•To(ÉG`šO•GA›³êËGlý`:†=è\0<\0Ðëꔃ²ŒTÌNϬ=.û´ 6Ζ(ûSBİô\0,Jð?”.º(é†%“…,Ê?B.<2ðhM΃I`éÎŒá4ô¶*é˯G°ëì'ÙI¸ÛíÊÑ9š¾ôžRX—E%,O\r,ʈs³Ï*•(”}<Ú—@c©öRœj]Dþ`UR÷γ,˜.²÷·d£¥rø¦’	\\·N•ÒÆl¸ÀØRÏ-󓴵˚Üëkô·Q•K„½”¹,ƒIå.ÒíÒêšT·@1\0ÉK 4¼Òý/]04¾K›K\nC¨&•F,¶ô³SF0“ÔµS.-´ÉÊéKÅ2ÔÀRÏLe'ÀìÓ7L…0”ÏËoKõ3TËS.å4T‘:X̾4‰Î9/:WRò9.Í62ôËËJ6ÀŽS	.ðc´¡Sv^ 0®»ËèO|L±MD%3î 4z3Id\n»ö•áú#tPq5h{!7Z‘Û»2 „ÆthÊ !îK€Ñ7YÝó1S³<»áh‹µ©½Ç-<ÎÍpÆø€jéÍÖà<4øÓ¹O˜%@‰OKBø°ôS¶!10Ô‡SÚҐëôõ‚YF…?UR4ÏÁ›ÓÜÇ!•õŒ~ÂXl´=¨ÇH|¶5QHýC&¸\"1M'µ8¯5a`Å?¢SPlõ`0—\\ÝmËÈTM,8'1eQaA&	\nÇTRèI¡ÑGÌ¿´ýÍZxôâ6yQôôñ¼aÀJÀ‹¼üûkU&ÿOXHá‚ÔphQEN†â=Cµ\"ˆLÉ›( ÚçQe@\0;ÐñQ®ÓPÔÅD\"€/—ú\rB༖tãµTžì\r<eÐÔeS}Om¾—EP­P\rüÓ«P5B•4U\rR==õBSÏR}Hã“Tè#µE\0Îô¥U‚=QE‚J<ýSð` Û‚¼1x\0ãU:óéOá/‚¼€+µN J`P!t8Õ\rT¥µ7 SõR58\nc>ÇÆºÈâ!ÊõŒ1{ÀúÓ¼uE€ÚM4{Ö”4TÞíGa;Ž|ðñà5\"SÎÕýNkSä8»DÄÔ?JcU0Õ¯RtB¸{ð5qSåB„Ï,±\0ÆpÐàÔj†!‡\0006K¼1å ƒX@¦D¨V­å_ .Ô(¥_`-Öð`ÆD¼àua .‹•X\rFÃÕöðõRõ…ÐFD½•‚S÷RxhÁª<mXjïb­ÖWù_G\nVšÄ©èS¸ï\00074Ù\0ÒLRÁ\$QíX›pˆÄÓðù ×ê\$°Nó¡Ö&83&a+²€|l³Õ‰ÏÉQsÀA£…CXšú]Î_X]‚\0á+8+UzƒsRPΨQ\0Ü\08Õ™PóOÝMU¶ÔH6!ªVX¤5†˜X…a¤ÇV/kӏVF”ý`‰TŸZ\0D5FÑOS½nákÖóTMSÕ¾U\rTMZÒºBðÍìoÓîÜEgÿWGµfµÅ„-YÁ(µ}V7T0BÀ©œ4Úð’Âòƒ[9‘5ÖX´åm¯ÿXhét>×LU`4\nÍŒTÑõ††o9­vÓ×FÊUm®Ö\"ýu†DÕ€	\rw+Ö˜\r`©V(ýVÏãPËÆÓjô]K⏜4°ìoT.\$mDĵ¶	S’à‚­e@3ÿ×­;@7mŒ:È륥“´dðÈ!õâ¥Zð£ôá»Q[œåõÑ5P•µ7;Sôº/BÖ!McÃG¹ÉT»Wõå(V–ÖÔò䯕<7ó[lÓt…‡^Êô×ø\ri0ÁPÕÐÍa£|VX‰•á̃a[x9Hˆõ]¿õ¬^&m¹‚¼ƒÒ¤ù\0ÙXl㤫Ìú•‚•Þ€»T‹ÐáOXl0£öØ(ô,Ï`€ØoaÈÕu€×ø3½‡U#Îô'0+Ó½8ñ]HT!XX\ryW@è¡\$ÛMQb¹‘-ä)ÓX	oõ†‚\n|Å`-qÎ-bÙ¶U‘VcŠÇÒÖ ‘3N=5vAg\rýŒÀ8<IGPBÔ9O^8.	Xk®ö;+\"Cµü×Z/åÂUUo[i`Ö\$×ïd].âÙ(s¼Ñå“ÔèÕ`-•Öâ½€óqªûe‘-ÂN¿=#[ÖMÙPè…ÅÑO^(B †”6ÍÏ_u–¶2:0mx ­Yg^5”-‘YG8”´AØÝc¯VVßÉdô6Í\">\ra­è™^íÈЮ0õ\"䱿R¤¬–,·3Dä¯Åøß¡2iGÈ5§Í?:\rT!ƒwg„óM[7;[v{ÖªCs\rU9d×`ØÈyh\0h@ØÈ~ŸqT4Ì×_QVÍvÃø•F5ÔPƒs*ÄMc]Ió9Ú1T0m†V)S•ÓXÖ[üâÍ*Œ¨c“dA+Œ1hóbõ:×IhõM@Ýs>P¬ÛÍÞ9ûvuTË>¥Ž‚Ö½`	O5ÙccÛÍöjϏ?QëTmq\$¼¹—=(VÏ6F\rTr¶®~¥šÃ\0Ø|m•CÚ)[Õ‚N¨ÖÆ,dÐ+;µQm™-Ňðê\$µo²B-žsšÚÇRˆ­ÕàN›:’È/8‰>øb.°Û40>‡ÆÚñ,‹.tÚºJ¶\rÛ\rk®•6Û	WMmØ3[Ñx5œËêqÕÉÑìLb´6Í;`•Lm‹ÿ4•Iµ6^d!5`7¤:aOÕh4õµÀÐ-3üÒHÈUm˜€¶Ú’³^_ÀÔNTꍱ²[PHðÙØa=UH\rE µ\rjM¶•”SåPsN6ºMXQ 5Œæ	Ã\r’Û­YKqsþ[¾s-\0Öé®ï]¼aN³d5?ó+—Cf¼ÍÀRe^ø+@Ø[ÓP€5­ËÐGa‹öôÒµoM@w\0QyoKŽõUÛøe}¼Õ[¶_oK’Ž@Ûán»wxVýpEºäùPuo5öR“ñ8c·.¥	Uo5Áw\0ò\n(%ÓNp¤ëVÖ®ˆJàˆ AqtÏ×Zæ#Õˆ³òÜk6””ÜiEÜØV‹R{qü×fØ{3l@äPqH‹r!VS]úÈ6¥Ú'q«Ð@>R=E\0ùêSñ+UjõÊ”øYÓ[źuUÕ¸Õ»rÌÜÇp»6Öõs]h'tË	mJ ¬8ñQUUuD’­m2z›Ð„àˆB¡K”ßÜÝv'P¿l]AAfËchÈ\"RåV«p´ÓXÌü;UË5öÜŽÆåÒcƒÖ°zPTuUQYëõíZ¯5åU¹…ýJen5ÀÜnÞÕovÅs=Hu½ÙÅZõoa‚itÝoUÀÚ»uuH5nÝ=jSÐÀUPZMNÄàˆÿQmobF·A>´]i\\¨G\rTŸvÏÖ‚Ôâ\"•Ä2Ø×v4γ=]¶2åz\n=:¢\rh*s¯×fÅÓw_ÔäÊUt8Å[Ý„8]Ÿ+=•ÐëGÕ×7z=n…Û—JÝòßuè8|«Å4u]ô	caÈÝzà×€YwíÊt]ܪÔÕáÅä^€ˆÎrÌÞ)w­]Œ%‚i,˜¦õí¤e}w—0<Õ3ÕäµnÛLr½å.³Ýiy-Þ7(K&‡\r_;f‰[­Ìˆ\\\rXÃ+Hï…çÔøa=ܳbÞnôc€	,c’!£Õ8\$m“VõvRæJ]g -†W¹OsˆôŽƒR( êÞ5]WHVC\\5@DÝ!s%Î’²^×sdñ%NÐÞ9úÈ7·Öƒ{U™¡+ÜÙI-îÕ¼€ïP\0\"FЈS5…ÒFÞÏ[Òâµz¶Åsk(7ÄEz•Ÿ÷ÇÖ1-å@Ýxñ̹Ú>M³g‡ïWM£âjÔ»n\nÈ ƒ^«tLµ·ÓUc}AÃVRÜúõ™@;ÕX-<sÔ<×t…¹C8^!P}Ì3q´d·\\ζLÄ3uÀÖúÛû\\-\rSlX{sàLÅNlÙåïL™ßŸnà‹¶&ZÅpút6_[\r±¢°¬ƒVÅV÷è„C~ÈIªE…?W%üUöÜ«u…[ÓATAW\rü÷•¦\rdáwøßÅV½ÛkÝù¶þÏh,8£ÅŠÏ”Üí×D×ÈØ»¦Ë­|añ¸6-_1O×Ã`j…ýo?7>\nÀXsôY‘nã^cÑÙ{jÈ7®ÚÄÚÊ:ÈÜ]E\"JVJe~×.ÙQHgžT3r…cÆÙVßBceø“3e^Õ€…9®8¤\nò ™Zð(ä䇪½	;tæzôãՍ#	üq#à\0V.\nÂS/DkÈ");}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&Ùœƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function
9
+*/error_reporting(6135);$oc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($oc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$yg=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($yg) {
10
+	$$X=$yg;
11
+}
12
+}}if(function_exists("mb_internal_encoding")) {
13
+	mb_internal_encoding("8bit");
14
+}
15
+if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
16
+lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");} elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
17
+lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ	ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›­æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š	Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8А­£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü­’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤	l^íZ6˜ej…Á­³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxl֍ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù	€‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò	'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,E͝`T¦É6Ûˆ-“Åì¾ÅÚŽT[ѐªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø	•ÿš´hìÁ{Ü£•î ËԐ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV­‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØ͇Т©‰‚êcâ¡óB’—}Ø&`ˆîr+E­“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼	ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡	³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£Ì]6¦Þ1´!1M±¸@a´/`Û>Ù¸üߣðÕßÈÛC/ì6à´·#p@pá‘óÿ`Zÿôýchý°\0ïë\0oæ€ð4OýOøi\0-\n«îÿ/ý\0£Dð.ÿ ¾ˆ.“Đ\0fiŒÀÈ«£€˜\0Œ”IDüç\0§¬\rïý0f ßoãÿ€ÊGüˆðeJ|\r€¿ýl	¨3ê~ðiP›¦&“É¿/µ\09	^\0r•0]¯õ ¾›oõŽ.ý\"	°ÐÑM¥íðvÿP€ZÐÕmpËP°ùÚœÐޏ¹ïô{§†C?²ÀkŽ“Ï¼}ð®þdöïʏ°~=‘.Ô- é	Ðm1>hûÏÛЕ1;QI‘OPÈ\rºcßpApV«k\rQ*èQ}ÏçŸq>˜Ðu15BqQ[1fûñl«Â€apå¯ü\0Û‘*ŒJ©Q=ñãّGÜäŠÕÁ±Ÿ±_ñ—ñbŒGHF.‚0Ôø	= 2P™Àó æòÏçP!ò#(3 \nÙ!1&72fª`Â/å\0°‡\"PÁUõ\$ñ\r0Ìð,QrU&2fšÒ_²Xààò]ð9\"’S'òƒ'²yð8\r¨ú§òkW)Oõ)’*Ra%ã\\i—%ò‰&Ò³+r…’3ðS`…,ñvý¦&2×L–&Pu*›-ð˜0\"Á%HĬÔžïÏ@Ø“±°H‰B–P(ÃÉ\$p&ý,1M ªØ­Ã®;\rnÁ.¯Ê I­.Õ',1ò)Ó4ý²å2°u+ó3æ `ÈSŽŠpL\nt§’_*²S3;6r'h35¤55䜋d2q+6ñ8‘O7sC\"pm8Ò­³“6³—9òm\n@e0É<8B8©<,( ¨8²Û\0è	Ó0šJÙ<@¦ÐI¤«ÀR6pÔ­mGË\"11¤6ËÐ.\"æÀ‚ï5Ì‚ûÇ:àÜ8bêA1±;ƒ';Â?<*\$È,³Ìo= òTÓÖ/3Û#«ºÒ†¬");} elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
18
+lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s>	)â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n	\ræs<ŒPi2INƐ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(ҝm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå	 Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ­˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§­ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$	CAƠ䄤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t	Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬­ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AK㝡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(­#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J	A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…):	ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDù­Ñ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8­ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æڌڇŸ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/؝X ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éPÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðȍôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEЀÔøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6â†¬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F	4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀΠt]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e­¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ	1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î	 ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*­/¹UÖVû‰¤þ­pì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Ɓ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·>	—BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ	¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6ChÂº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ߍ§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)א…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üà倠ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤	(€\r¹öGFžª@ؼÃúÙ­Àß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷È½à¸à\\P’,\"ª-rCÉrVäæYם·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’­ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/­ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê	‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rԁ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx	ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔĝ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã	ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„⢏ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ	€ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní	äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;S­Ç]ãñ@ËÇè:Ââ“­÷I~Û‘•ÙùҝÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}ϝ:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð­‰)¯i4Ñu•sÁ­ÇˆXÁMP¬‚^«ä5¹O’¥	bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE%	dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> “ªÿ'Ó|“#hàÅœ˜6è¦\rñ.=(Ôv±…¥;`\"OøCܐ!âBŠ9ã.B!UEÌDáÄ‚d œ–€)ºKŠ Œ\0Þ» ÆmF~	B{O\0¨Ï©¡¦_選³u#„–5 =LjÀò7´9 š6­¢î£lCV‘€ŒTpÀÚ08±	1ÄÎx'0@gIw€Zã†@9ÇLᎎ\\v\0_(º\".ЯA[sÅ„ä€ê7I(azl_„EЦ<ñ€“tƒUöë7`tèÒ0ø‹(ßà3”=¦ço\$[Ìh×!¸B¦œ[HîR¶œœ) )nxaZ™#=HË8ð뛥 ”’%þ@0w5J’–	¸²A\"F:8NŠÏ\"Xù- èÔ­¥?pj@)iUjƒÀ™\$Ìš-EÆ÷”E§´\n/¸œPÓB–P@y8j¾Y¼Kð³9	0ÊH€Ddš&0Œ¡èh“X \\Ñê\$Ë(ÁÐ`d\nEΤÀŽ@ÉJ“b*NRP\"(q.f#“dšGÈæD¾š¦M’n9:*€¶fÐŽt4æò:p½Mí(5%ÊQ\0e”Sb’4ú1¤ÉõeM‡),ŸR‘\"k§m?Ê\0rB¿( è\\èšÅ••de<£\\ÊBMò’i„¢L	(Åh›ÚRÁ¿D›e\"r™CÊÖRä•ô¬å)9EJâQÒ˜>	õO´ãí`šAÈ#®bh|HNÐ\$™%Z#˜4-® 2=ˆD‰ê„ñ\\´æ0Ú…Ȇ¶õ\\’\"©aUR	Ã-I¨ãk0\0ÛæÙ‚ÊÃæHýH³ ÀÎ~u”]QŽƒFš1')-¡\0'óxüeüˆÑ·ŸÌÕp\$ÆQØeaþ#\"ëRǰÀœ@\\èÂF0ѸÀÕ#\"–˜&<¬1ÎHЃÃ\" BªÂð.ˆþ#h˜ÎÃÀ/ùž…TmA[€ç\rRŒ(̼@%ÙE8ÌÂÙÐ&\$	`Eà€ŠÃ,B]À(a{„@ù6I›¢k3[ˆhÚ	ìEw\0¡1®)%檘 @Úªÿ\"ˆ6ˆÙ®aJ¦I8J+4q€Úa¨±0\nBë2É—àa“!{q›•ŽŒÛ„Àgá1!9à:\0¦Š&D8|8Á\0Ë:á5P1ƒ¼›0‹ã:y„ª¨FDHÄÎUk3Á’…USLKôàfŠi‡mB¹Fk§@EPØM-ä;1ˆ¡%Òá82ls1œ´!&û5¼ÍRaÅñ—ÄÂÀú’4’ÏP%¸„eOþ/¹¨ˆ±³ÈE‰I@C=ùùMHÉÓôd°çË8@¹–à9rI¼Ð€£Š*B,› Ã^ð‘ҁ\r˜Û€N猗4ˆB“™ZCXÿs!	*@ENø)»Ð”4àa\n¨ )¿¸˜?`+¡€&‰C01M¼SqDñ€ÞQŸBð\"ï¡ ‘‰n)ÓM¹¢!x\0€Š5Æüj3w\0⣂ð0!\$\0`a7º¨2Q¶Zì>I4ŒÖ}ÉxÑàÁ½›ÊÏÚZu¶\0´çñWÉdd4J2„†26\n 	À¶žÙ ŸÅ…æ€OhÜFç0Èš\0=΃š%Ù1Ú\rÊAàih@vM)’\0¼`£&Êa2ù´Kši©KðfhZUÆ\n¶‘AM(iéP€ÈW47¥|ò©ZQ†þ:¨5X>x#5†¡s=0Rªå>„“7úÓÀiü'èÙž\0Ê™£ú)`hþRÁð…š—d`œѵM‘IQ\\V´ÞV‚ã4T²¦ÓUãåR%9F“aºhÕ47œ]Mà_`>P~_T!¡†ÑN\0ŽÎ.lÔú%ÈC(DZSþqu\0œ¸…in默2¡áÙHéqCÔM`”…AÞMqQ¢~«5p+ŠAZh¾¡3Ÿ‡Å¸\n62¸URbq%B(\nÀTØ󑜛FåâÌð>œ8¿†GM ‹LpiÈ¢EQf‘M&•.©OQ\"=Z{µºR¥åïl¨aOêïØ«”ýk}° Á-´~+Ê`µewíWêÎT	Õ¨º2ߘ’.¤1RÒH8H¤†d€Á†h@0Œ\0[€@réŸ j\"„ý¸êöOZŽ ‘1r#¬tQ@7—V5kÈ+˜ÖÉʽVlï¬ì·\r-å®–¯U„Ý\$\$XÚ¼ž4µ«äF6{à/ˆ‰Ç–P¡óZ¹s½|Œ\rcÓ€f™Á˜f¸?	•_«™XՔ𰕆¬@Áë—â0nlŠÜ„Yòg:×°ËSæâä›sª~˜šâ¡9ëî×FŽt\0/Ã\nÅ0']y‰á^ŠÇ#&¹\rHœ†j‡R0ý:æ¤â‡£¦äD7J¡Ÿ~¿Ä52Éælë”D­}J‡TàeΜ% ŸÕ}¸è+R#”°k3T¼Ýë¶\0rYuŒh¡‹ÞŒf¼“Þleù„ØAï1S•TØP\"±¾PhŠE¶NœÞVK`2Qò\0e©eK‡›Š>IFÜš-Ã7Sê=Ôù•BÀ¼j¢N5U÷[ñXl'\0 2¡…j\0;ªÍ‘’ìú®J\"\r4hEž±FXômRö\0Q‘Ö·*/X ”K£{hÍWÚ‘ž©”l€êm'j8€ÚŽŽ.êFˆÔsUÔ©µ\"iþ+bÒÊBÚUl1 ¬¼RCGÐ-­²3Þ)3å\0ø'ÉNv?³³PeÒÔÀÂZžÕ/óiãOÝ]6b“|1T•ªÉ×jØHÚ¾×@mµà¹-k_TÃÅPè–¯\\©¬\0æÀ69¸°nU¶{‚-±Õ5Â!²“´øGª³çξ5ãšºm®S Á´\$룱øm3õÙ%˜`[¯B©/ËešØÎõÉTm§i‚N›o£!âàµ.È\râ÷0¨6 ,lí¬\0äàà:&|\rÖ»\"M¯¡kw*ÛrHVó„Ü5Û‚Ãjàá „YpÒ“ÙX\råw{Uß…qÄ’Ü\$u⨞Ul{‹Û\$×¶þ5mÀ(ü`/¬¢—ù¸4/nIp–j\\-³¶ç_3\\)òës×–çW–·mçt\n†JR—D¹Ñ‚%tŠ\nÝ*‹Rzá2>²°\"®‰a²\0Ö8Š1˜Žè¤/sÄ@Û†Jì'l—Hu®k Zªç©´hÔ8§s}ÈšP§)R*“Übûe%²í·o„Ús– û2aQ¡J†©¤Õ°í‹qkÂ6g.	¼R“/({Ǥ~ÙEŒ©;ö\$ÝÓt†löÃmIêºèGR:iÕ'—àÁApªÞy€üÛ­DMºŽ/<¦ÜwºÁàp\rÀ\"•Âá}\0ßPS€'éŠß܆“”pý¶k`CìÜqEYÀ3Êd¡èÉ|p{ó DJ;úå÷cHTšÏWnW<)M5~ÆY2÷–t9Š©âkÞR<ý«q#\0¨ýep7Lø+Óc¾ Ú\0u\0\0®mÔW¾‘c}[* <÷ؾÎ+¢ër7Æ@+·Ô^/Ä·ûò_ÀYÆŽ¿ £/yƒ6Ù¾þ«%œXÛKRÒÚoƒÙS¯\\¾	m/ˆg³PϾÉV–­%D«¡GÄOiuöÝt€åN)®›Î¯&ú†ySô0jn“rrÚT”y×myˆk!É8UšøDn£Bþ\0÷l¥¨PGç.[‡z··|†8bGõx×Ñ\\s[µ#¸?>:£\0Xz	f¯´ f.⣏4€^  9‡ |šË\r§·z+G¸Z¸D©È?‰5A¢„A]¹1ϱ5‹7bvæ`|1»èk.‚LUëÍڐ/`Weñ©'âàkû¹†k°ÜŸàÅÐI\0wvu‘]©-˜Ó%OÈb3ó¡j•bŠÍ™T½A%¯à&êIÊÜP£ŽcBã9Í‹{yBßLtVÖ?ØÊF:hªUd[ËÑ ük±–8OSV«	káZÑ|â€*ÑU¾Gû˜-k¦&ˆÚI–‘žÈÝ”ðO9\0®€Åˆ˜ÕeQ>7ŠÉp¶e[¶<¯¿RæÝ­ h\$®?ύöäúª¾Añǐ‘ÿ-×!–iÈ|¿Ö¿…ä[UÎ³ïfEƧ‘’SätF™RUÎHÁ?¡Z¡¶¨I@â¢Ã‘‚šÖEY*–½Y²‘YúÔZEÐö­=–ì:Û+Ù@¾VÐ6„·^ÃÚ½NÖ8VK2‡’ê ¼#èbÉŠ[2ç-	ñ…k2&*äENškV¶2Áy¼ùW8+Öœq°Œ&9„1åøù+Z“Dªã\",¥­œ““‹Êƒ#-šÉÈ4ÿ5•µ—‘cãxPŸæÌ•ÓÅlXó Ös-P”χBÂßÕkFŒ¸ÖŒ\$5m€W@º¨\0›Ò—!úÌ`@ð¼ß©²\"áOõa7œš†Ï14yo®us,|d*+É¢ee7ž<Åœó:Çߘ¸Ôá]œbg!™ùÎbsŸH\nr˜„nÕ–É@Ø@ör Ÿæâr€)0 €’à\"\0\"΀òO4]ªÞaÄH*•o–,뀬.CpÉÒÉ3>Šu©Åx5™äúž‘	Åæš³ÓÊVZ–Ò€,,\ršfáHl÷e£êè:Úe™Z@Î]ò¼½\rs@¨%Ë\"\n!ìk‰úhÊ´ËeÈ´?åÄji: ˆ>{ÉšÞËŸ½! W.ºEBV‘åË	\0002Ï9©¦Ëæ­šC¼Ñ\r4íÌûóP+.Ÿ‹=5\$KbÍÂùËh(5\0©I¤CŸèì“ U«ÅÇ4'V”°(-¢!0	À¨­ÀÈ•:eñÔn¥Ã›©’:¥”-F®‚µ;/¥#”‡T<¢ÐùMVH/O¦½±´Û¹ÂûQ®€Åž4h-âDþ5ÀU€\0‚@\"€€	àFavœ@à€y ëé'‰;.HnrzxPô^€ÿ[áªûbEÐÖD;SYãåÚ	Pôï :1¬ÇN‰iâ€wfíw»Ü1ÀY½¨ù™| FâDiZ×¶D|{q”RÁà0\"³Íç(åO³ÕDîƒ	—z`Ò)Þ`-ˆ Ä|è5Ql_c.øküö<Ù5¤0§zÏÒ–Ñü›Ûßкe˜†dí\$’©\"þJè÷ÓSÝÑû\n\rHK¿_Ó„”tà4ç€s›A\njVð´ñŒ!oÚ[l¶œOPÀQª©¬‹wÑÓ†Q¥9ÛÑ!…5€ì¥\0¶Ym‹g„õÛ(@u¶§ƒXO_éÝa~ÉÔ&Ðó#( =:ã Ã\0½µ×k4WñÏ\0]IàŒ+šf	FÕÈj¥C#Ûn7ˆ?µöô×N Ní’´)Ï&zÝŠ‹“o»Ž¿h¤·BlM½TU)5ÜËp¾t€¦µ›¥tÁä¶ùºî¨\rµV.è]û¹Í‹†Ð»¡nç†JÑív… Ø¶ï·t(ÍÉn¸Ñ»±ÝœD2)mÛž([Ïr©˜Åë³2z eŒ¿¦ñ¾=Òn*̍vûw8ÝÄàx+§<`	2½GFííTBÛ=væh=ºì};L/wîþ÷£¿÷v[«cîØßîã÷)¦ÀnL¦*§¡¹ê¡ã7`7ôÞ‘þ÷©_øˆ\næ{˜æ‚B%Q\0ǃ@pyæ÷\0ûÁȈnè'Š^î庾&‡Ó6Þ\0•È¿‘Ôð†û»Þ̃%¾EKÔÈ;,á‰â·PeÍîl-•:ÙþïgÄKüëXTØEPVP. èP ´¼RØl²ë±sìOmtâ•êhô’ô ñÀ¬#”Uv…ϲ=}ì”a>\"‡õàÆ½Žˆøo|RØt£Më¢û<fM SòãZ˜QBà¡È*¡o^ð&ÍÞ5Æþµ€*D²QþN»\$*¦	ä¯	BrD`Íòe¡Ó=äç'¹?Ê•T MxkkÓZúŒ}­Q²‰[~ùŸÕŒš(qmQ:ü{Þ‹µè¿ó×Ͳ°f}N@±lCaùðˆê\"N`ˆùAP“cÔ€V0\0ÍB’fÝÙÀž…ø„P\0Iu†5ª4›³ì÷ÿ©Ð`°:*†`þQ¢wRó(º¸éœêÆÊÉû7È»™jj÷gçdc°™ð6,É/%ñç2ç¦#³òûiÉ»8\\nϧ‘—ðqö‘SuÛ³nu4?W7\$»>-0ϵЁ¦-7d}y¼…[áx‡ñ~»¸0òSükó«y{!©sü°ö(@6p\$a:ʨ€Z5}\0üç]BßøŸgŒÔÀuTT\"K@€uÑþ­<Ìž.ªugGø›±n¢¿ÚŠ|aâx¡ÔÀÇ窱ÿX5é‡EØõØó@tçVw¿ü?\0½ç„ruY둹Ï.Å?[ŽfèÈ9Îñ9ô3£®	I\0—ذš)±OuɈz*ð’ãbí+\$Sª9ÇØ~‚vŒú}+–Ññ„«Ùtwøµ‹\0\\€");} elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
19
+lzw_decompress("v0œF£©ÌÐ==˜ÎFS	ÐÊ_6MƳ˜èèr:™E‡CI´Êo:C„”Xc‚\ræØ„J(:=ŸE†¦a28¡xð¸?Ä'ƒi°SANN‘ùðxs…NBáÌVl0›ŒçS	œËUl(D|Ò„çÊP¦À>šE†ã©¶yHchäÂ-3Eb“å ¸b½ßpEÁpÿ9.Š˜Ì~\nŽ?Kb±iw|È`Ç÷d.¼x8EN¦ã!”Í2™‡3©ˆá\r‡ÑYŽÌèy6GFmYŽ8o7\n\r³0¤÷\0DbcÓ!¾Q7Шd8‹Áì~‘¬N)ùEг`ôNsßð`ÆS)ÐOé—·ç/º<xÆ9Žo»ÔåµÁì3n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ`Èó¯bè\\š?`†4\r#`È<¯BeãB#¤N Üã\r.D`¬«jê4ÿŽŽpéar°ø㢺÷>ò8Ó\$Éc ¾1Écœ ¡c êÝê{n7ÀáƒAðNÊRLi\r1À¾ø!£(æj´®+Âê62ÀXÊ8+Êâàä.\rÍÎôƒÎ!x¼åƒhù'ãâˆ6Sð\0RïÔôñOÒ\n¼…1(W0…ãœÇ7qœë:NÃE:68n+ŽäÕ´5_(®s \rã”ê‰/m6PÔ@ÃEQàÄ9\n¨V-‹Áó\"¦.:åJÏ8weÎq½|؇³XÐ]µÝY XÁeåzWâü Ž7âûZ1íhQfÙãu£jÑ4Z{p\\AUËJ<õ†káÁ@¼ÉÃà@„}&„ˆL7U°wuYhÔ2¸È@ûu  Pà7ËA†hèÌò°Þ3ÛêçXEÍ…Zˆ]­lá@MplvÂ)æ ÁÁHW‘‘Ôy>Y-øYŸè/«›ªÁî hC [*‹ûFã­#~†!Ð`ô\r#0PïC˝—f ·¶¡îÃ\\î›¶‡É^Ã%B<\\½fˆÞ±ÅáÐÝã&/¦O‚ðL\\jF¨jZ£1«\\:Æ´>N¹¯XaFÃAÀ³²ðÃØÍf…h{\"s\n×64‡ÜøÒ…¼?Ä8Ü^p\"띰ñȸ\\Úe(¸PƒNµìq[g¸Árÿ&Â}PhÊà¡ÀWÙí*Þír_sËP‡hà¼àÐ\nÛËÃomõ¿¥Ãê—Ó#§¡.Á\0@épdW ²\$Òº°QÛ½Tl0† ¾ÃHdHë)š‡ۏÙÀ)PÓÜØHgàýUþ„ªBèe\r†t:‡Õ\0)\"Åtô,´œ’ÛÇ[(DøO\nR8!†Æ¬ÖšðÜlAüV…¨4 hà£Sq<žà@}ÃëÊgK±]®àè]â=90°'€åâøwA<‚ƒÐÑaÁ~€òWšæƒD|A´††2ÓXÙU2àéyÅŠŠ=¡p)«\0P	˜s€µn…3îr„f\0¢F…·ºvÒÌG®ÁI@é%¤”Ÿ+Àö_I`¶ÌôÅ\r.ƒ N²ºËKI…[”Ê–SJò©¾aUf›Szûƒ«M§ô„%¬·\"Q|9€¨Bc§aÁq\0©8Ÿ#Ò<a„³:z1Ufª·>îZ¹l‰‰¹ÓÀe5#U@iUG‚™©n¨%Ò°s¦„Ë;gxL´pPš?BçŒÊQ\\—b„ÿé¾’Q„=7:¸¯Ý¡Qº\r:ƒtì¥:y(Å ×\nÛd)¹ÐÒ\nÁX; ‹ìŽêCaA¬\ráÝñŸP¨GHù!¡ ¢@È9\n\nAl~H úªV\nsªÉÕ«Æ¯ÕbBr£ªö„’­²ßû3ƒ\ržP¿%¢Ñ„\r}b/‰Î‘\$“5§PëCä\"wÌB_çŽÉUÕgAtë¤ô…夅é^QÄåUÉÄÖj™Áí Bvhì¡„4‡)¹ã+ª)<–j^<Lóà4U* õBg ëÐæè*nÊ–è-ÿÜõÓ	9O\$´‰Ø·zyM™3„\\9Üè˜.oжšÌë¸E(iåàžœÄÓ7	tßšé-&¢\nj!\rÀyœyàD1gðÒö]«ÜyRÔ7\"ðæ§·ƒˆ~ÀíàÜ)TZ0E9MåYZtXe!Ýf†@ç{Ȭyl	8‡;¦ƒR{„ë8‡Ä®ÁeØ+ULñ'‚F²1ýøæ8PE5-	Ð_!Ô7…ó [2‰JËÁ;‡HR²éǹ€8p痲݇@™£0,Õ®psK0\r¿4”¢\$sJ¾Ã4ÉDZ©ÕI¢™'\$cL”R–MpY&ü½Íiçz3GÍzÒšJ%ÁÌPÜ-„[É/xç³T¾{p¶§z‹CÖvµ¥Ó:ƒV'\\–’KJa¨ÃMƒ&º°£Ó¾\"à²eo^Q+h^âÐiTð1ªORäl«,5[ݘ\$¹·)¬ôNô\n«ž[Ðb÷ƒà|;‘éîp»74Íܔ¢¨ÐIŠCË\\ޝX°ç\n%øhØIäç4Ïg‹P:< ôõk¦1Q™+\\ÚÈ^å’ ™VèøCàòôWàÃ`83B-9F@ànÃT>»ÞÀlj-–¿öÊ&âÜ`9q¦…Çßä‘“PÜy6Üå\r.yñ&£ñ´ÎảÍÃE8Ÿ0 êÀõkAÁ×VÛT7ñpïÆxØ)Þ¡~¤M½û΁ß!áEt§ÐùP\\èÄÏ—m~c½Bð\\\nímŠv{µÎù9`G[·¾~xsLî\\±Iõ®ïâXwy\nà¨çu¯áÁ™S£c»¬€1?A¼*‡ùÍ{œã½ÿ´óÍ¿á|9Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á]ÄržÊý¯v¹~B£ PB`T¡H>0¤Bҁ)ð >¸N!4\"‡À¦xW-ÅX)„0BhA0à½J2P@>ÈAA)„SÎôn¼ìnìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âöàøïhèí@È‹’î®(–ð\nì†Fì˜ñÏ–øÆ™…(ìγ¤ÛP\0÷NÂõo}¯‚l«<ønÞø®ˆâîlëoq\0/Q\0of*Ê‘NÑ½P\r/îpA°Y\0p\\ãï~³ÐbÐLh °!Îã	ÐPöîd÷.¿ïy\no\0áÌËжöPptùP¡ovÐ‚knޏ\0z+æ›l6÷°©¬Êø0’äð¹P½oF€NìÏFô¯OpýàN`ÜÐÖ\rogðá0}PÍ\n¬–@°”ö15\r±9\$M\r \\©\nggìÀ Ø\$Q	\r‘“Dd‰ÆÊ8\$¶ªkþDâjÖ¢Ô†ö&€ÓÀÊ ¶àbѬ˜ê°¿‰›	ñ=\n0ÊÕÀúºÀPØ ~ج6eö½¬2%Íx\"pß@Xб~«æ’?¬цZelf\0ÒZ), ,^Ê`ß\0è8&´ì¨Ù©‘Ñr€© ©ÃkFJÂÂP>VƜԍp¨²8%2>ÂBmÎóØ@ä’G(²ä¨s\$Ž dÕÌœv†\"Èp°wÇÆ6§æ}(VÌKË ‚K¬L ¾¤éÄWñöqú\r‘þÃ̤ʀQòL%’PÔdJ¨¦HÀNxK:\n ¤	 †%fn‹ã³%ÒŒ¿DÌMü À[#¢T\r©ÀrÂ.¦LLè&W/>h6@êE ÈãLP‚vÆC’ß6O:Yh^mn6£n¼j>7`z`Ní\\Ùj\rgô\rÈi2I\$\"@¾[`¢hMý3q3d’þ\0ÖµÈúys\$`ÖDÀæ\$\0äQOf1ƒ&‚\"~0€¸`ø£\"@ZG¼)	Y:S¨ê†D.S%͈’ Ð3¾à d¹ÀmÓU5‹æ¬ó<£SÒSZ3â%r “ÎãÆ{óe3Cu6³o73î—³ÀdÀL\"àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2øQôÐ÷“¼åÓ3ÀVذWBðDtCq#C@½I”P÷DT_D´:ÔQ<”UF²=’1ô@\$‚‰6Â<cÆrÅf%Ô¬,|“27#w7ÌTq´6sþl-1cPÕmðqªÊ\n@ÊàŠ5\0P!`\\\r@Þ\"CÆ-\0RRˆtFH8µ|NíÆ-€Ædòg€‡Ò\rÀ¾)FÆ*h—`ö €CK4Ã1‹ÊkMKCRf@w4BßJÁ2\"䌴Ó\r1Q4É2,\"ô¤'¼êx§Œy—R‚%RÄ“SÓ5K”¦IFz	#XP‡>¨âf­É-WX\ršÜê¤pU´ÕDÔt&7@¶ÂÑô?’©ÀÑ ªµ£}O1½2†‡2Õ#UK*¤)ô긋Œ0o<> ]HŽš„Æ¿rè›LGNª›ê˜W%–™M^’Õ9X:ÕÉ¥N”òÕêÔséE¥­@xy’(HêÆ™Md×5<52B– ð–k!>\r^J`‹IžS N¡¥4'Æš*œ*`ø>€—`|¢0,™DJ£Fxbèµí4lTØ•û[¨§[é•\\‡¦¨Ô –\\{­Ò6\\Þ–’ öß(#mJÔ£,ý`©I³ûJ‚Õ­ÊÜèlߍ ûj…jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢®ÑW•\rkÕÏ)\0Ý3Õ€@xè¹,³-Ê	5B”¡¶˜=ÂÔ࣐#–gf¢¡&Üß·Z`ä#ÄoíæXf È\r ìJhô˜“À´5rqnzõ§­sÁ,6’oÓtD´y‡äÂb´àhþ—Ctn˜9n‘ í`§X&¨\r'tpLž7²Î—¤&—¨¼l¬Z-ͬw£{r—¤@iUzM¿{rxא—mÒSBÀ\r@ H*BD.7¹(‘3XCV Ç<WÔуÝ|d‡q*@”þ@ÞÀÊ+xø÷̼`á€Ï^™Ì˜ß¬__•ND­X\0Q_D]}tõYÅúp¦f€wÔÚ\"â3øz¦n«MYñùZR\0÷¬Q¤?¸{†M3†•£*×1 ,¨\"Øg*U¡*²¯ˆÌ«zÒŒW5NV2O-|€¾ÉÓñ,×]‚B×dí\rŠñ/OâtÎøÃï‚Ì0‹xƆðŽ½Ð®OCë8Þ-0Ò\r”ÿ0à·õ„@]¤XÌŠÐÎð\\\0¾0NÈï£Ñƒ4ëi¨;ƒØAtê¼8X—x¤\r†…Š“‘ìÁ‡øÝŠ×Ê7¬<ö@SlÈ'LÒø9WŽ ÊθòϬÖËì¢Íı•ùRçÌðÌ\r¾Ï ÂÏò|ÜXÐÖa÷ø7y€Ù\rwe¸Œù„Y!ƒ˜Eƒù’´šÂcRIdBOkË28[‡mÌJŒ+L ÈÅÙ¸OXpføÓ9ѝDÏ›·¦ßªw“@Ë“—Y—…¢Õ÷\\yäAcÙ£ƒXgš™%šôó’Â1“ï“j	œX†9Cc݇àR¡¹‡”QFÇpdÒ= C˜÷ýš\n\r¥Õ‘ÔóšdjŽÙ«’xE¡Â2FX§¢x_¢ØÅ£Ú5£™—}q¨Åí¿¤M%¦ZM™:\nÏzWšX7¥åí¦:ÐZi¢npY;Žù>ʘí£ÙɆ:6Ú;£ZÎX0ƒ“Ì¢#ùýcàMyU…i2,q¹FËšÈb­J @ÓgGè|4ógÈÒmzWõäÊ	¬)™Èr|àX`Sc‚Õ§ÀË™„óc—¥‡û!²B²—±”»/}{4JÂ\0ÒÝn»Kuz @ÌmÚÑ®€ß­yÍžÒyÖ\"º)u¹ÊÂÙã¶Y睘s·c¶yë‘¶š‡··y¼—ސ¹7Á|·±|—Å{Ϙ*)°Ê4Y`ϵ[v¹‡¤­‡û^NX•†¸‰†ò‡W”©û·‚7†;¾_‚‹*x™ˆ¹Ú\rùß¼߉xm+¾mû¨Ú™	´»¹‹\$\n¾l˜);™²„|Ù ßÚ™¡:œNÚ :„‚Š_È8N³¸Uœ5;¨p+U–L‡ò\\‡9í¦Ùñ“›¡»ýO:I’šû zQºœ¡ƒ¡TëšÜ)ªXG¡æ»ÅJ{w8“¾ûʼn¸UÆù\$ôàÃøü›PxTY¾pjh·¾J×À›˜JÙ{‹Âð@îÇ‚³ øðZ‡ÌÙs•¹h˘ç–XÌ\0Û–lÓ–ÌàÌÈθÎçìó‚Y}˜Ÿ®ü^Ð@u2ÀSÚ#U‰ˆ;È|¼¼•¥¼™P\\ŸÊ#ùÊ|ª<®Ý\\³À›žJ۝‚,öœÀ•\\ÅÌšEÌú…‚]WÍlÁÎ,£ÍìÉ–<åÎŒÛ>YnÎ),ΙrÎüûÔ¼å—⍺]Èý	ª\$õÐç½Íq„DJí=•Ù÷•XI-ðÅ€äÅÌa‡llÃµ]\\“w(iÜCÄ׃tƒ‘<i-u[uVŽDÖ“¸Q¸€xb€kæLI­.kú›@ÞÀ„ÜN‹“[ñ¼l<o=-]1`蔼ªdš ÜMÌ7‡@Û%C=]ú›êÀ/|-à܏ˆ¾ÉÞáqÃã•âíùâ*¾C¾òO~ÊQâòså`·ç(âòãDÉßɲ¿à[ãþæ>Éká¾R™uéÞ\\+>)3íûPÊßP§Óí6ÓËM%º¡¾pÔŒœÅAÐ3qmu2ÖfzƒÛ¯ì4s‹	´í`ÛŽ‘ì°-kÊS%6\"IT5½‹~Òì\"™íÂUt_	TuvàÖ½ä¶Yw¤†­0I7¤’L‡\$ú¿1Mí?íe@3Ûq{,çÀÏó\"&Vi·àžÔIŸ?¾µmõˆ™¯UWR¾´\"uiT‹‘uƒq­Ÿj\"•GÃËõßò(™ï-½‚Byîê5øcÝõ?Œàwñ®°ëTúî’`ei¾½Jtb‰gðU‹3ËëÉå@öá~ê+¾Íï\0MïGè7`ùïÍ\0¢_Ô-ùñ?\rîVÿµ?øFOÔ6á`\no†ÏšInª¼*pà™öeÙí\"T{[Гp^÷ä\nlh@l0[/ö„poóJKÖX“ñ€ü<ª=€9{Ǿ6ç–<eߏAxãÀùÇ‚¼Éá4x[ÍžLò“~>!åOQxš{ZVFÔŽ`½éÈ~Ižß–“øL)Q[ëTûôM›àþT²*BC¤~	æâ‚ä\nƒò¡gÈŅp9zKÉ–ówzO9di^›'‰+¹ßïDz4ägHAº¯Lyô¡\nr€<IêjKQó¸Snô==\r.Âo7½Êé%a;‰kÏãmX¿›Zi%P¨iÏ\r­€¾ýµ/©…L`pR0¤Ž&õ—I (Øá\\.£*m„*Ž(ÚÖŽõ—\$䆯À÷\nw׊Х…8a“\n&´Â‘žÍUmª MÖ¨P+\"Ly„ó?¡M\n€2’	L\nbS ¥NäùÇr¶!w¥jw`¼Â\$îôƒráè…Êaáv±^Ãq­F‰Ü6•Ó¨i*™Ÿæ„ì_xõØ\n‰fðIê:B&ù6@É“KED¡úú·QD(V`.1\0Q\$íøF­¹H®’Tþ€zІ‹Ì\rªjkzM€ÐÀ®Y™À(61€”x‘+®%dj¸Æo\n¦¬\rg°ï\"ÉŒ´ˆ—?Œ1- 3hÏXÖÁ)åyjÃ5r¢N±#Q¾¼Џw{_þ¡øG)ÂÎÙ1i‹Ì íç¤<Z‹ºpX³¡Ö\$â?¥=%.´€Ò®&¾­%\\±8w­!¤µa4œ<JB[Ðĺ¦u4‡%êŠ×47‹Ä%gѐä&¸€Z(@	€E¢{@’Ð#¥–2Šh@Œ#ñŸø™ÑŸ¥£@\$8\n\0UŒìjãA(ׁž2ÀO€Š8Ú€ž5‘¸Œ¨@†ð&'´\n€DŽ\$i#ŽÀ#Ÿt\n PŽTs#]P*	àDÌuc› PÀO|pc—øËP	ÞŽ¼i#Ô}ˆæ:<ñí\0\0¥ÀˆÅ¥lo#}ÏFÜR‰Tp@„À'	`Q¬ycTp(ÆŠ@€eh\0‹˜Õ8\nrx› cþ<`NŽˆã:)DY\n*Dý‘2{dZ)A‹Ú4±²¤€cZLð2ÈÊ<ñò\\Œ\$r#ˆþÆö7ñÁŽ¥°!û€´ü€Nª{O¼@\$<	Ñ¢ðVƒZÒÆž52.Aù#D0 \0´ÀI¸û\"P'H	²_)¼x@Š€*úàAOh£hI)I²L1¦’ìƒäµ%áJI‚B‘þ’g¤i\"p÷§K2}’ä–Å(CËÉÍ=²t”xCøÐ&FÄ	r“ÒoÙÉ@@'”ñ€%	 ÛHÞT±áˆ	ãÔ˜:=¾)\0.ñ°]Îâ5 .ðæõ(pÈÀL!à8­\0ˆ¹	éR\0L‹YaÔbkÔ°ˆ6Ä)Y·éˆî •Ô®£	h³zZ¦õ±’IgÎVO3oœ­Lgà3ËY2ãÛ‰ÜDoPË`3̸ec-‰r7í‡2Ô—Dº‚Þç‘B¼‰Z•¼¼%å/I{MÃ\0pÐÀ́.`äÊÝo*•Ô¯%T€ý\0 &–iR\n™+Éo€ì©–\rÀ^2q”Ë©\0\\¨I@‚	KÀ#peC*!>€/á%|È…Ì’ÁÞŽüô\$è)çÀ§1P30(\r¢+\nZÆzž„))\0*®\0kà€ÙÅ2¼–Ï…(–E86å¶s—tºf&”™Š¡´“+;”Ø76&ãK–_Ž(›9fÓ,@-ÃÉ4l\$Û‚e7\0ù±:l“LÝæM7.\0ˆ³|›ðo–JÛ©ÀÎZ³u•̺Š'Èy{ÅH,#\0vU@9!¼¥	Ñ'†¨&„òGôøß@_-Ù¿³ºt;Üê¡:©µ€²u¡<—ˆL†iÙΚ_ꀝأ@U6°Îù#ä_€L'~ùæ/Öm`\\Të']=Iäât°Çž¸Âà)ÔÏqùsÉ9Âa<RPº|tžút&5°äs©lî@¾	ÞKÆwS®èlÍ:9úN®wSø|·göÉØOùAП<ë‰BÈ€\0/àz@´	ÍÏÁ•Òå†=?=iÞO‘ŽkÓŸ=\0E@iâÐ\$B× hO\0Á>DÖP´ó‹Uäçцj¥HìÂ9F¬BcCi‰é­BwMާtÓx€PÀÙM‚?p“®=—äì8ÜÔý‘Ïlg~¨˜tÁa©€%]b\$àØ\rˆr„èÄa,6ÅtŒàW)Ž\0U¨›F˜	|æì“¢ˆvh¦Qú*¥Oƒl.C\$À\\ ÐցRRÌ<lcù™&Cj3Ñý%ôZM¨öÀz9GpY’â¹£\0i\$Dµ‡d‡ñzt[')[)Q¤ØêÞkÁpi0·#cþ‹ôNE¨ô(ºC2L	Æ@9hÑEJ5Ò,šh{&Jzö0n€vª©>[€j“£Û[œ]ƒK•ýRîJë>.;ù¨íF=RÚŒŽ<råÓM¡=—Ô’¤ÜhØ^Y\\RmnËÐð Nn*g‘¦ôÒÅB¬·5^QÒ‰@O¢°x¨¡HIÊT ´â9½)(‘œ&µ‡}A)PÊ\\/êô…_Õ!́H þÚ‘¥¤ù\0éBá­\$z4ÓTYu‚J’v\0ꏃ”¨…%@æ32\0Sôm€--Gi@¸úQÅ%Ñj©YÝ+FuzlSž—”ÜW3ØÅ·OrŠU\$EÔè;¹M©¢\\€Ô±Äu/£õjeQªš¦§,#J¡ªXPÔ<UH•TVVé#Uê™ÔUbˆOU´DZ‘⢵£Í8êÕUJuS «À‘g)XDZK‚•¢Bî\n¼@2Š©ìx@d&ü ½eÜ«Ià@ÊFwì¬8“©\$Ù'IºV‚V†U\$²ETÎ_ð*ˆd¸/áFCÓYdp§vGƒ‰3‰ ‹Ñš‹L^(ù`áj”÷2S¸ºcÛW¨ÜJQYiÖHB”£ckœRè\nþ²U\$jê\n„ZAi€î»¢U*wKDRxW‰LÂò­ˆ€+fÚŒ@ã¨A4¢àGz…R\n²5‚b¬\\_²Ÿ ­ô‡¡á0¼C@¤\$X\0+Å]¤ÑÂè\"?‡n¦€+QIj\n»x\r€ôB`S¸âM‚ÈÑûŠ\r o°@‚À6XÀ\"{±\0µãb ¯)–ÁM¨cMðW ä¶D_áαÐv@{cÐ:¤®%[%‰C²þ1¼Ù;AƈÌTn› \0º a²pážóe~ÙU5 s©V†Ýe|M9‡€9 hË@æ¦\0êÙ~É@.³	l€· Jv]©ºD§f€7¨FÌá±³ËùŒ,/+:¾‹íÚXIi­\0U¢â@Nµá´\r Ê¢,².½i¶‡ª³m_ûFŒàÖõäÀYiUÔÓJ¯!©gûLj‹ãÑú¬D“iKAà6²õª-U«KfÖ_N€\0ö-3©ìÀã3+¥dãiûD	\"ö¯µM¥ml‹L…XÜã㯸Œ>‹&|UÕсõ`Ïh¾ù2¦ÑÐn6Ý…·ÉI+Øné-nDÃ×`„µ†®°É”°@ã¬B!;X™smȯ·†pC`‘p5Á°¬¡O‰%Z/Õè5”³é#CK`‚XˆªÂcb°Q#«§Qa»–Ž…ƒ¸q…èpÚÝ÷)™®G+~Û–ß÷\"ðlM_^zò©šæ!ÌÉàE«”Ð¥’®šÀ‡ïa úØp86ì„åˆn+oì’Jâ¶ö¥¾,¹¡ó‡¢ºw\n¢]̓pëŠÛRÁõ'§eÖJÕqµ'ܨ%£'€nlO‹h@>NBÈŠX5,ˆ‡‹¢ÊrGr¹ Z l\r(ªË‘jIù†±lŸ¬%b‡;s+±× ¤Wg7¨)’*e…¸1µ•ÞÑ3“L e@(»p\0 ÐÃŽèds®AñÖD\0Í\\bD§\nuê/&1¬ÞXR×¥E楂5¡Tœ\r§}7õ§”ªîÔþ”AÙ¬áÉkâ\\–øö͵´ŸÇqà2Ü€öZ-wo´“tßZùƒ‹¯]ó-yq2j+Õ†¾Õ­Ã«¬€n¾XA«Û\0†\0º¾+S•+ïY6_BúV7z®nZ@̆²Ô·Æ´]´-UMJc*¢ü¸´®í¢s\"ß+\0·ï¯x´B3^«öà0\r÷ÜÀÎïÁcðÖ\\jÆÆ*¬P-\\Q8ˆÊށ·…l•cË%XþÉVB‡}‘,€þ;(‰`*Qú	\$áïÛrßÂ{ÁKøìCúÖ%¬\r¥ˆx	ÞøQû…,¶Ø¾¥×/‰vàä\" pÁã¶ð~ Óáã ÅJ5eãü®Eš-^âX;c²\\©¶×¬m‹´7£?˜6C*庮†,7®HfÄ/Â9eÌ0[@ñ¤!bê®íÅþUБ=›Äi.Jocñj;ø—B³\0¼ƒï]Õ”ÑúvÙGÃÜ8àO\\\0ÀÇŠüO©›\$Ž•.&	p‘\\‹H1bØpø’:F\"8Ŷ…þ‰ŠøVx©ÅýµR®–xä=À3Æf1Š+|Ò»\0ÂBÀ¼kbÌPÇLÑ’£ô\$zÌáàÎc	¢ÇÐi,Pcb,pÃn(¥Æ,¸ì`'/»~êÙkÖµ‚Îp€q-›Áȱ¹VÀÜ܆Ü\rÙž	\0á‘‹dSˆÓÈÚÍ+º\"Šéˆ­1\0(Ä-’Ì1~útcªþfý¸àBÛ‘b}Ø ’Ã0<1\r°¨¨L’€»\$¸ˆ2d\"1ž&ì™Æ€BóN…Ô\ràB\rrƒ«\"?vädäZá±.\".\0?wä¼9€oÃà\rÄ0¥Ñœ!¢ÍdR€‚뤶\0‘ÃÇHëÜra%ЊØ+\0yrƒH¾sÏ’4W#œ,\$èô \0„*xBó\nPÌòü|„ 8@/ \0ø2U’°ábíÝè¢ÂÎΪxÀ!¨d§°óúNÿ3SÔ?£ÑP»…€(òg\n8·‡ppŸˆü€S9õ@‘'  Ç\0úyµÿ\0¦y46¡H<‚öÌ×ô\n`S’ˆ…¼ÈûCY¹’„”³jp:\0N(ӍŒáX4ŒkÌÈÓgßDy‹<–n4™£ØrS<ÒÏýˆó¯?¥\nÀÇBãúf('™Ì~dgÓ™SËÏ?<³ÓVg(1™éãæƒ2ù£ž­—²)ÕôŸf`éZ€¼a“>t{ÀœÉŸô’>ñø\0ŠìPû`O¼\\sŒ<õ?4äwÞ~³ÜÇf@z™ÿÍ~hBW Ìø³á´ŠxhA¡¡ÜO'=úP֌ײÜö±ë=óúc[ysèÌûgâ|¹‹Ï掳%™Mè,Q³ÆÒ8'X žhlUs®…§Ù¢ú é4ËÃqDýÂx*8g§NLšBÈ–¨;§}%eû@YìŸv ho!\$æ›NcCXì³@Ð;YH'Á°@^ à·Rf^x„\0^osÜ_fª—“;¨Ópj]²:’Ô¤ïõ.mLêl\rš®V¨\0ó@Ü€¶Ê\"ÓÕÄ1%Œ!_êô@-]8f¤ç -Õþ±äa]Y¯WšÏˆh`(‘¬äJë@…ÁÖ\rˆ—õ€Y	kB(€xÖÂ:5˜B\\QkO[:Õ0˜¼¡­uk›X¥\\×P\0ë[öx¹ÀÅ®`ŠRIGÕÐk5°ðª§YzÍ×PÒ™¬=†l=áõÖe€\0ç•2=k` Å[K¼‡B꽍Ìû8ž¶C±Í}k«c{#ÖØ¢„ølŸdfF.̵ü-›AºÿÙ6º†K­’•¤ÐÖ×Pàv„'¢lHiAÝÚ8C¶“®	G„`GbyÙ¾·Í- 0•Ĭ;[*_ˆ¡ãmlH{(;Uo¶ÕÑ*Ä]Š,Ä‹åŒÖÆÈþôXË“¡80Cµ°K	­!N¼õÔ(I`¨³	V¾Dv½§íšwá·rpc,ðåŒÃÓ\0ää 9~s»Xn㦇¢žŸr[ec·4dçpÅi	\\…Èe2âãl±ÄaZCk»gl÷bB„™¶7x%¿ê轞í€Å»Ùk`ì\nÁ(@ź«®„5åݘ¥Ï­ċ#t›–Ü–éãE½}Å„sñ–Lvö÷E¹ï\nQQÛ”Þæú76}õ‹Or»çj§b¯%@7‹˜àÛµßh³w͹÷n£kÙ`Víq·±Íòï³~›™ß~ø„4{Œßþå÷ë¾óË;òßï8p2mP+ dÖaX8&,=Òn›}ü!/øK&\rŠÿt´H™Ó)/øYÜ”†6@å¯=}ðŠðEU§lKÃü\\kÓb[×â1Gø®­M­)™J¨xXÚEïTä¾	/¸\"-‘ë…<4ßxDˆ¥ÅíÐpÄ(¼3ÞÊŸ·ß´'È+Û\$\r†¶<rí×n`H\\t\"þ¶70=ä·Y×Wéhsð­\rÏw¼~°!ù0@6l‹\\† •§/þBò7’¼‰–ßÏ>Fÿ‘܉\\¶¼RÙ¾-Çn‡€þܧ\n¸?F~†œaÞ×+xÉÁýëñ¨\rœl,fúCß+­Žîw•i¢GøÛËî.X!¼_à71ymÌ~ñ„œDå¦È7åÊé	÷š¼ÆåîûÅG;gówƒàb/89¯ËxÑ@!R–9¸éJq˜Y¼hß'3¹ÏÍĬ*÷ñXw‹Ë®^—ÛË	¾7ŸÎî5óÀûåÖ`ö:î#È+Û­0˜ž·œS¯ˆ@0óo7:&~r(Z·‘G1zÐþˆ€·¢pÝÎñdNŒï“£›`ç¿/Fz@8Ñt0ŠZÌ_ ‰ªÎ0³™{Úè¿Lén•‡×‡oEËÍÑâ=rû¡‚Gj]õ H•¥›²Ò·…»ÞAf+ªÈèVº•º­mžœ7ýåßB‹ÛÓî*q‚þ}cãwس=Û„g¥»wE¢-H·°€»·¦½&Rh4—ªMêžZÕ_L½©]WV'ÁÕ¦§Íñ\"uŒ@-ÜaMÃsº@9êL:ÈÕ’]ù#‚ÝaëoybÝ\n\0[Øêrðp*}Qí‚bwßÛÓ¦?†ºâÿ;Vc¾Ê°›»	«.Ûsç´¢XíÖ°ûy·R=§&d”ã·rûO«žçõ2Åj!Ïux¥ÜÎÔ§R{NÖ&øµÑ»®5ö„}£ßvyÛ°Ž1o8Z#žþ{ÛNärû½ÝÑï‡Q:BÕHzW{òïW{:ìržÞ÷ó¶}D\$§j7)àP€÷ëÁÐÝCvV¬X—¾ýdí¨D7ó፮€·¼,Ôh»÷á_ø]·^í—qσܟxO»]­ïŠö¬?p{Æ\"ˆðOŠ8Qáµ?xw}ùJâ?9kâÞüx½5buÛ&÷øÏo›ÅÆ^ñ†õ¼Ÿ¬>õw“g]çíh¼#ä?+÷‹ mï(³¼¹àÿ/ngŒ	é5â5<ù;‡ñüòÈ…¼Ë³½œxÍ%‡³‘;ì(³ÞVóŸ–;Çço-ìó˽ëòÿ.eänkpËÂÀ_ËFäXõ9ÓWjQ¥ÓàCBاåv3R=°ì†¦;aÙ][yËÈ»4Þ/¢|óÃ##v	@_Ç­}UçM>ùßÌþ1§»\rC£MúqƒCÞÄÆädÄ˜U#[ÓɦŸm\n\\Ä\r6ô'Ï>‰ôÃiI;€R\0X€ç<rW0[ÀE°dHSèH\n^×\\”¥3ÂTû´ÀF÷xB™îÀ\$	Òi÷´-‚­'ûÛÝÕ÷Xf¼}\0#ɤ	1êo·BÆ€*;Û1±(\0ø~@)ü§Òh>³ª{³â~Ûøw·ÉH/vL\n9È?doÒÑð°,‹x)#>˜#b`',úgTð¤È~¯tˆ	€YÐ}Ùï°/]-'Òüž\0¾(ØÈ þñ@Ï¡î/Ÿëä…>¶Š~ðolH‹âžÜöÿ·½À/qû–DƒTúéö~¾¡o|ÓìaÉþ°°#|F8ÍûdœÏ¥ò/±|“ì¿u÷¿€Vîâ©hø\n>Û÷ÿ°{´	Þõ÷ˆýçï_{þGâ IaùE½÷&{VNñžod¡õÃFÆBÀXûï×½ÙñÀ(I¦N@Yû¿Çÿøÿ·ýÇð9»üÉ¿\n-èû{çã@RýoÛ½Ù&‘o^3Y¹÷ï»>ð¯†|”òŸø—îþ-ñóö¶ùä~åý/»ò?*ù`\nÏú?—Sæ!VùŸîÏ©óœüïîÿ>ÎèÕ¸}ïãþO⟕ü¿Å>îýRMïûºƒõãø?b@\nOÚ?þà0¯s\0ˆ¢IèÏ€’ú+èà'¾’úX¯¦À,úƒò`'¾¦óê¯Ô?€úÓñ¯å\0‚K௸¬úCéO…À2út©>¨LO¬¾¢Lïv3ŠàúÒ\0ŠÎ[PΛïlë¬H\nhä²Îlr\$/Àý\0+½Øý\0	»£ž¨	©\r@ ?Kå)<#PøÓîïs\0Žø ” ÂÎ?Kæ@Ì@\0ÃæÏꀱø\0²%,p)?#£îïÄ\$ø\niL€¦¤°3è[Ìå3˜’“îð?²¬ @Ï´O¼\0ªýö°A|P\0™ôD?²N@\$Á,£Ý/ÞÀÿ€\$B?0ýÃø\0‚\$¯²\0Vú’LhÍ…¼Žˆ	èé€ùŒ£é½Ê>¤#6ý+ù€>öR:p¾>«7#÷…½\\Ð³lΓãAoãüÉ<3lø	pe#7ÚA@)À±ðü¯Ü@ÒÔ#ýAV?hýãøƒ	0*ÐZ\0“°*Ð\\AuƒüÐ_>kÃöÐb?>«ïÀ\"…½cæ©#6>ÒBÃö’Òü \"\0ž>Ü\0psÁÒ?ÛDPvA\\#þà(>Ò÷3EPŒ¿>ûÓ:­Â<\n´OÅ\0ˆüd\"ï@A\0ô°Aꎐûð‘Áò”ð”Â5ìÞÁÿ	“ø #¿‡	´ cþ©	“þ€+´@ÃùhØ€ø÷¤€\$\0øŽ‹:M3nø’3cêÞ`ûèØÂ„ÑT+I8¿Bò3@*ÀÆÐø	@'”\\pM¤8Olòüøû¯†‚­»ÝM€Ÿcî#üÂíÄð7B÷h`,	àâ6oŒÂ\\\\.S>¤›DÌÙCù˜ÿ0ŠË´ÐÆ£S\$2ÃòB‚ù«ù@&AŠ>ºLðkù¬4ÎAóÜ­3˜÷Ô°Ð@½;öÍ>pùÐüɤ‡\r¨\n°3|Î\0\nO‹Aø:6ƒô\0¥d7à«@8ýœ%`#Ɉ[ÐÀ=ÚDåÀÐ\n°ýÌÜ3u’LãóC™¢9ÏBCÔ:`£Ž‘\$!hÚ\$Ó“;ÐêB”20uÁ[¬8°ñC×	Ä<ôÃäúó篟ÃëdPŠÃß|=q€2pí€V>˜û°áÃ÷	|*1\0Âç\rÐE\0©dAov´PÎt'?d,P­D*ü@	/Ÿ#6øÔCP‹BO\n¬©8Ä',5ÏÑüE€ ½ËLq\r?m¤Eq\nÂzþC@+¤är60åCê?3ß/¡Ì“ˆ\nP܏ÙlHð•D—ü¯Í¤5\nóü°°ÂÆãói)D°„1(ú£Dƒï£7ƒæÏu>Üà\nà\$Aæüj4Í\0˜?ê4Áª?”ÑLK	Aæ¢>Ͻ?Œü‹û€ÀqDI@³£\$;ð†D®Ž8	 &¾?;°c€—ÄJØ£bÑPû¯ÐÅþ\0	ðBÅ#3í`‚øˆ)ªÁ»ÌOÐ3CMZ50âEO6èÔC¯ì\0ÂÀŒ\\\$èÍÔûp[Ð9BãíÁª#cj<‘1Ä1B;còÅDBhÔ?Ëô@`*€ƒ¬.qbÄÐøX	o?;\0KÜp¤3¥8	ÐRCÌú6/®¤—ˆ\$>lͤpIÀª,!€*\0®+ÜÀ>=÷]±wÅã\nT^pgźú#ó\0ž?\$J@Ä	\0*CÈ*É7Æh\nñj?“ê:pArø”]Y€’ùÔL‹ËDbÑŒàúïBÑ4d@(Dä”ÌcÀEçÛâ@>\$Òà	4¾Ø‘þц©</¶Ð?\n€/ĺ>¬gpŽ>šŒü± ¤I6i8¾;³êÃèÆ‰cÝ1¢AZ6€!Æ}<j±¤D¢¤jÉ(F’?dÀÂÅ'óêït\0†üTeÂØø´1– ú ü£þAv?lnos3˜’„50†#Æ>¼Èòœ_¯«Ûd°©¿³¬UкÁZPú©4DŽ|;Ðr£‘ÃCðñ€ˆø[9£ê¤¥ú5IÇ5²I‘É\0ûEOÜB\0{9q C‡|\"pUÇZÎPû` €²øý´GcœQCëGPúJO‹ñÂ6(ÚBïóÇz>Ú7ðÏFøöÈ0IÂ:¼vOŠÇ‘¢BÏuEäµ·,\\0ŽÇ¸r8îÈûqgA6>ÀýÑ74D÷0qÇG¥ûêÍ>-SE@# ÑÈÎGÒ÷¤.à*\0i\n\\-`*\0q\n\\eñ½Áÿر\"—Œ)qu¤ýÃï³nùô@`>DÔ8	\0/Ä@þ„_±Ú€¤üw#îǍlƒÒG‚>Ô„²¾-+ߐ6¿Wl%°6½·l0®\$5´sÔÅ&Œ\r *\0e!èrÇÿœ€qI” \"ÀæÑ> Ș3EILÅ\"‹â‰94G\$/ñ¦\0—´‚©\0¯ Ñ-2>/„ƒì倘üèÓGg\nà/¿LŒq®BP€\"#7ôzñáHMÔ…O‹ÈO\0̏ &£¶2L‘ƒÁT^P@Zúd¨À=”]Q—=çÌKCïEã\0ŒQO¢Æ\\øôs0¤¤>ƒèq—Czù¬†±—G„>¤†²¿ü	ÌÄ@?Œ0Â?ü\\oÂ¿³–èø4Md1‰9€‰\0¼ÍGò?m\rDÆÑü(Ô´LdòÃ\\KJ8\rE’Ðù-24U 0VAÛ”…R=ÈEäe£þ¤5!Ì2m³qðüÏÓAEÛô²V\$ÆüÏ•ÉâŒØÅI9Óü‘	C&ù\\GÀ)D «ü§½òü4çIç#pú«#ÆøŒ—ññCˆù\\x£ø¿C(\$òƒHÍ:NI(J\0΋ß\"w\0¿,)PØÇ¬‹íÏ‹4<þÔ!òŽ=ÞúœGošÄó‹âP‡¿6üìN±QDë\r[;‹A|KÒ'AAäP\0¥C:šÊ„̉Ñ4Åã*To‘†£ÕD˜F^ÈûÉ‘\$)Ï¢»¬\n«É’àÍ)’(Sà‰\0ò’È(ý\$:ä­@à‚²Y8’‹JÐà#ÅЂë+œ¯\nQ5ß+`a+ ¸iþ`6x𑤪†è: ÚŒà.ÐT‚:‰þa˜\0øŸcv(ƒ^X¨€Â¼H˜O.\"JÊðO\rÎË>ex-¾¨J¸€èKPïû¤rÔ‚-`2²€ÜË_à7€Å-!\"Jؐô¶òÝJêH.²ÚËo-ø.²Ý\$ª<¸BOЀ`> ©dáµ\nêH\"ò؆o+›“§s‚ؐè 3ƒ‘+¢± ©6¿/¡ƒa.Ð\r²ð†nd»²ï˨é’?ˆô£z1\0¥àð‚?‰¨ 7€ˆâà<À?âãø\$Ó\n`+Aw*MQ¼Ã<Pýo¿°?,)#P>”à€šøÌ„\0¦?jŒÞÄ“ÄVqÀ?“£ñ³\$¡	9¯õÆ-üÄ2ŒÌIÄÐîD9̳Lg1h[ÌۏÏ1ŒÄsC1sÞ©9Lz?à	 LWdÈovLŠþ#ðÐ9`ͨ0æ€Þ‰É¦W·–ˆh>\0>¦¢Å/)Dáü²·Lº¢¡ÀÌÀ\$ÍaÀ†¨9*ƒ<:C+àJËìKPJ¸\"—L\\Ã*bÌò 1ÔÀä6ë4ja+\0î%Qf ;KœE¬¹ÀÔš`è> >7¦tÒHw€¾MPn3I:fàD <LÄÊRÈ'¾.\$ðíBO\\²\nû	Ðø5ã86Ä̹D1‰<\r¼³\$Z…œð’ƒ„ï4Š%r̃¬²×àúÌþ\$€ƒ˶§»éo™^Ú\\°È\0øf[z“e…í6|Ö“gŒ&ñ8+M=6È5ˆ³\0Ò1Idì{™^fqd趈s7(|©tM.]HSó[€ø¬Ô ÕÍ;7yC„—šÎ¸mÎÌÞI|A‚Ê:`c †Êß8\rÒ…iÔɃ¤ßÓ@¬‚P`È~\rlËa=M3ã€áf‰<ëÀRå\0Ï!ûÀ@’ØeØ«ríÍdO‘t ¬‰T°³-æXY9A“˜:38áOÊÞadÐ¥ö’gL³fxË=4K\n&€ôu0KòͨÇ,ô³o7¤€ëĆÓ,à½Î3Ë:h|’ÎKbá)AN¬úÄ`ì€Ñ:ØÎŒ€×;´ €Í»*sI&”á«Rsµ>\rX\r!\0\nÀàBsVM63˜KâO×:Ä®ƒƒc5„× úÎæ‰X!AœQ9z%`º{:èHòºDëE€îcv!‚Ν,Èôá“:Xƒ)¬(üº%˜Ë2a&Œ«,ðl3Ó8j1è|’͇É=CRrÍË<â\$óŽ\"KB3äöÁ'9…:|÷)`Oj+îÀ9	}-õSÒ>2¬ëUU5ÜôBUNàóô÷²ÑNÄäìS¾NÄüì«ÈO²äû3±KNìÐŽˆ†¨ ×@:/ç7£ÄQ†¨ç!Ô@.’(&v9ÔédÓøŒ^þ“‡’ج!ï¦[.pGc K#?¸füÐpÝe“Oæçd®€2\0k6)„,\rÿ65GmOFV™dåiÈx,ÿa=O@s³þc6…`¤Ø\rJ\0å;‰³H†(ù*ŽrÅ-Œ¾.íMÛ[ BΠ!(àóM¸LP«bUèÛpJÔ:î1úÞE“»¦º!:¢,ô:‚YB‚ò*KRÞ¤¾rÍ0جLî“a6Å;6+2Æí)èUB`JsV0È:Ô0_B14/ÎúíAOáœNeúÈ)A~\rÚÈ öÃÌ –NPów“,È´C„î3œæ®¹ÌÞ°T3öq9}SQ\$ÄãA‚P“DÐ;!:À!îæ¸YŒÐsÄÎû6Ø“ÑÑRԁŒFt›#C¨Ï€øQ\\`rXr…<í'ò×72ؼ´O-„w9Ó¤ùËb8à5€Å3{¡\0Ä7ø\ra\"ƒ\nh[j·ŸåFÛa)”Ñ+€2Ï<%’´M¢ê|®m¸|\nÀ54pˆþ	&bUQ¨8\0EŽÑ¥4AAN,ˍàì˝FØ•To(ÉG`šO•GA›³êËGlý`:†=è\0<\0Ðëꔃ²ŒTÌNϬ=.û´ 6Ζ(ûSBİô\0,Jð?”.º(é†%“…,Ê?B.<2ðhM΃I`éÎŒá4ô¶*é˯G°ëì'ÙI¸ÛíÊÑ9š¾ôžRX—E%,O\r,ʈs³Ï*•(”}<Ú—@c©öRœj]Dþ`UR÷γ,˜.²÷·d£¥rø¦’	\\·N•ÒÆl¸ÀØRÏ-󓴵˚Üëkô·Q•K„½”¹,ƒIå.ÒíÒêšT·@1\0ÉK 4¼Òý/]04¾K›K\nC¨&•F,¶ô³SF0“ÔµS.-´ÉÊéKÅ2ÔÀRÏLe'ÀìÓ7L…0”ÏËoKõ3TËS.å4T‘:X̾4‰Î9/:WRò9.Í62ôËËJ6ÀŽS	.ðc´¡Sv^ 0®»ËèO|L±MD%3î 4z3Id\n»ö•áú#tPq5h{!7Z‘Û»2 „ÆthÊ !îK€Ñ7YÝó1S³<»áh‹µ©½Ç-<ÎÍpÆø€jéÍÖà<4øÓ¹O˜%@‰OKBø°ôS¶!10Ô‡SÚҐëôõ‚YF…?UR4ÏÁ›ÓÜÇ!•õŒ~ÂXl´=¨ÇH|¶5QHýC&¸\"1M'µ8¯5a`Å?¢SPlõ`0—\\ÝmËÈTM,8'1eQaA&	\nÇTRèI¡ÑGÌ¿´ýÍZxôâ6yQôôñ¼aÀJÀ‹¼üûkU&ÿOXHá‚ÔphQEN†â=Cµ\"ˆLÉ›( ÚçQe@\0;ÐñQ®ÓPÔÅD\"€/—ú\rB༖tãµTžì\r<eÐÔeS}Om¾—EP­P\rüÓ«P5B•4U\rR==õBSÏR}Hã“Tè#µE\0Îô¥U‚=QE‚J<ýSð` Û‚¼1x\0ãU:óéOá/‚¼€+µN J`P!t8Õ\rT¥µ7 SõR58\nc>ÇÆºÈâ!ÊõŒ1{ÀúÓ¼uE€ÚM4{Ö”4TÞíGa;Ž|ðñà5\"SÎÕýNkSä8»DÄÔ?JcU0Õ¯RtB¸{ð5qSåB„Ï,±\0ÆpÐàÔj†!‡\0006K¼1å ƒX@¦D¨V­å_ .Ô(¥_`-Öð`ÆD¼àua .‹•X\rFÃÕöðõRõ…ÐFD½•‚S÷RxhÁª<mXjïb­ÖWù_G\nVšÄ©èS¸ï\00074Ù\0ÒLRÁ\$QíX›pˆÄÓðù ×ê\$°Nó¡Ö&83&a+²€|l³Õ‰ÏÉQsÀA£…CXšú]Î_X]‚\0á+8+UzƒsRPΨQ\0Ü\08Õ™PóOÝMU¶ÔH6!ªVX¤5†˜X…a¤ÇV/kӏVF”ý`‰TŸZ\0D5FÑOS½nákÖóTMSÕ¾U\rTMZÒºBðÍìoÓîÜEgÿWGµfµÅ„-YÁ(µ}V7T0BÀ©œ4Úð’Âòƒ[9‘5ÖX´åm¯ÿXhét>×LU`4\nÍŒTÑõ††o9­vÓ×FÊUm®Ö\"ýu†DÕ€	\rw+Ö˜\r`©V(ýVÏãPËÆÓjô]K⏜4°ìoT.\$mDĵ¶	S’à‚­e@3ÿ×­;@7mŒ:È륥“´dðÈ!õâ¥Zð£ôá»Q[œåõÑ5P•µ7;Sôº/BÖ!McÃG¹ÉT»Wõå(V–ÖÔò䯕<7ó[lÓt…‡^Êô×ø\ri0ÁPÕÐÍa£|VX‰•á̃a[x9Hˆõ]¿õ¬^&m¹‚¼ƒÒ¤ù\0ÙXl㤫Ìú•‚•Þ€»T‹ÐáOXl0£öØ(ô,Ï`€ØoaÈÕu€×ø3½‡U#Îô'0+Ó½8ñ]HT!XX\ryW@è¡\$ÛMQb¹‘-ä)ÓX	oõ†‚\n|Å`-qÎ-bÙ¶U‘VcŠÇÒÖ ‘3N=5vAg\rýŒÀ8<IGPBÔ9O^8.	Xk®ö;+\"Cµü×Z/åÂUUo[i`Ö\$×ïd].âÙ(s¼Ñå“ÔèÕ`-•Öâ½€óqªûe‘-ÂN¿=#[ÖMÙPè…ÅÑO^(B †”6ÍÏ_u–¶2:0mx ­Yg^5”-‘YG8”´AØÝc¯VVßÉdô6Í\">\ra­è™^íÈЮ0õ\"䱿R¤¬–,·3Dä¯Åøß¡2iGÈ5§Í?:\rT!ƒwg„óM[7;[v{ÖªCs\rU9d×`ØÈyh\0h@ØÈ~ŸqT4Ì×_QVÍvÃø•F5ÔPƒs*ÄMc]Ió9Ú1T0m†V)S•ÓXÖ[üâÍ*Œ¨c“dA+Œ1hóbõ:×IhõM@Ýs>P¬ÛÍÞ9ûvuTË>¥Ž‚Ö½`	O5ÙccÛÍöjϏ?QëTmq\$¼¹—=(VÏ6F\rTr¶®~¥šÃ\0Ø|m•CÚ)[Õ‚N¨ÖÆ,dÐ+;µQm™-Ňðê\$µo²B-žsšÚÇRˆ­ÕàN›:’È/8‰>øb.°Û40>‡ÆÚñ,‹.tÚºJ¶\rÛ\rk®•6Û	WMmØ3[Ñx5œËêqÕÉÑìLb´6Í;`•Lm‹ÿ4•Iµ6^d!5`7¤:aOÕh4õµÀÐ-3üÒHÈUm˜€¶Ú’³^_ÀÔNTꍱ²[PHðÙØa=UH\rE µ\rjM¶•”SåPsN6ºMXQ 5Œæ	Ã\r’Û­YKqsþ[¾s-\0Öé®ï]¼aN³d5?ó+—Cf¼ÍÀRe^ø+@Ø[ÓP€5­ËÐGa‹öôÒµoM@w\0QyoKŽõUÛøe}¼Õ[¶_oK’Ž@Ûán»wxVýpEºäùPuo5öR“ñ8c·.¥	Uo5Áw\0ò\n(%ÓNp¤ëVÖ®ˆJàˆ AqtÏ×Zæ#Õˆ³òÜk6””ÜiEÜØV‹R{qü×fØ{3l@äPqH‹r!VS]úÈ6¥Ú'q«Ð@>R=E\0ùêSñ+UjõÊ”øYÓ[źuUÕ¸Õ»rÌÜÇp»6Öõs]h'tË	mJ ¬8ñQUUuD’­m2z›Ð„àˆB¡K”ßÜÝv'P¿l]AAfËchÈ\"RåV«p´ÓXÌü;UË5öÜŽÆåÒcƒÖ°zPTuUQYëõíZ¯5åU¹…ýJen5ÀÜnÞÕovÅs=Hu½ÙÅZõoa‚itÝoUÀÚ»uuH5nÝ=jSÐÀUPZMNÄàˆÿQmobF·A>´]i\\¨G\rTŸvÏÖ‚Ôâ\"•Ä2Ø×v4γ=]¶2åz\n=:¢\rh*s¯×fÅÓw_ÔäÊUt8Å[Ý„8]Ÿ+=•ÐëGÕ×7z=n…Û—JÝòßuè8|«Å4u]ô	caÈÝzà×€YwíÊt]ܪÔÕáÅä^€ˆÎrÌÞ)w­]Œ%‚i,˜¦õí¤e}w—0<Õ3ÕäµnÛLr½å.³Ýiy-Þ7(K&‡\r_;f‰[­Ìˆ\\\rXÃ+Hï…çÔøa=ܳbÞnôc€	,c’!£Õ8\$m“VõvRæJ]g -†W¹OsˆôŽƒR( êÞ5]WHVC\\5@DÝ!s%Î’²^×sdñ%NÐÞ9úÈ7·Öƒ{U™¡+ÜÙI-îÕ¼€ïP\0\"FЈS5…ÒFÞÏ[Òâµz¶Åsk(7ÄEz•Ÿ÷ÇÖ1-å@Ýxñ̹Ú>M³g‡ïWM£âjÔ»n\nÈ ƒ^«tLµ·ÓUc}AÃVRÜúõ™@;ÕX-<sÔ<×t…¹C8^!P}Ì3q´d·\\ζLÄ3uÀÖúÛû\\-\rSlX{sàLÅNlÙåïL™ßŸnà‹¶&ZÅpút6_[\r±¢°¬ƒVÅV÷è„C~ÈIªE…?W%üUöÜ«u…[ÓATAW\rü÷•¦\rdáwøßÅV½ÛkÝù¶þÏh,8£ÅŠÏ”Üí×D×ÈØ»¦Ë­|añ¸6-_1O×Ã`j…ýo?7>\nÀXsôY‘nã^cÑÙ{jÈ7®ÚÄÚÊ:ÈÜ]E\"JVJe~×.ÙQHgžT3r…cÆÙVßBceø“3e^Õ€…9®8¤\nò ™Zð(ä䇪½	;tæzôãՍ#	üq#à\0V.\nÂS/DkÈ");} else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&Ùœƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function
14 20
 connection(){global$e;return$e;}function
15 21
 adminer(){global$b;return$b;}function
16 22
 idf_unescape($Jc){$fd=substr($Jc,-1);return
@@ -20,7 +26,10 @@  discard block
 block discarded – undo
20 26
 number($X){return
21 27
 preg_replace('~[^0-9]+~','',$X);}function
22 28
 remove_slashes($Me,$oc=false){if(get_magic_quotes_gpc()){while(list($z,$X)=each($Me)){foreach($X
23
-as$Zc=>$W){unset($Me[$z][$Zc]);if(is_array($W)){$Me[$z][stripslashes($Zc)]=$W;$Me[]=&$Me[$z][stripslashes($Zc)];}else$Me[$z][stripslashes($Zc)]=($oc?$W:stripslashes($W));}}}}function
29
+as$Zc=>$W){unset($Me[$z][$Zc]);if(is_array($W)){$Me[$z][stripslashes($Zc)]=$W;$Me[]=&$Me[$z][stripslashes($Zc)];} else {
30
+	$Me[$z][stripslashes($Zc)]=($oc?$W:stripslashes($W));
31
+}
32
+}}}}function
24 33
 bracket_escape($Jc,$_a=false){static$mg=array(':'=>':1',']'=>':2','['=>':3');return
25 34
 strtr($Jc,($_a?array_flip($mg):$mg));}function
26 35
 charset($e){return(version_compare($e->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function
@@ -32,53 +41,137 @@  discard block
 block discarded – undo
32 41
 checkbox($F,$Y,$Na,$dd="",$Xd="",$Ra=""){$K="<input type='checkbox' name='$F' value='".h($Y)."'".($Na?" checked":"").($Xd?' onclick="'.h($Xd).'"':'').">";return($dd!=""||$Ra?"<label".($Ra?" class='$Ra'":"").">$K".h($dd)."</label>":$K);}function
33 42
 optionlist($be,$qf=null,$Eg=false){$K="";foreach($be
34 43
 as$Zc=>$W){$ce=array($Zc=>$W);if(is_array($W)){$K.='<optgroup label="'.h($Zc).'">';$ce=$W;}foreach($ce
35
-as$z=>$X)$K.='<option'.($Eg||is_string($z)?' value="'.h($z).'"':'').(($Eg||is_string($z)?(string)$z:$X)===$qf?' selected':'').'>'.h($X);if(is_array($W))$K.='</optgroup>';}return$K;}function
36
-html_select($F,$be,$Y="",$Wd=true){if($Wd)return"<select name='".h($F)."'".(is_string($Wd)?' onchange="'.h($Wd).'"':"").">".optionlist($be,$Y)."</select>";$K="";foreach($be
37
-as$z=>$X)$K.="<label><input type='radio' name='".h($F)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";return$K;}function
44
+as$z=>$X) {
45
+	$K.='<option'.($Eg||is_string($z)?' value="'.h($z).'"':'').(($Eg||is_string($z)?(string)$z:$X)===$qf?' selected':'').'>'.h($X);
46
+}
47
+if(is_array($W)) {
48
+	$K.='</optgroup>';
49
+}
50
+}return$K;}function
51
+html_select($F,$be,$Y="",$Wd=true){if($Wd) {
52
+	return"<select name='".h($F)."'".(is_string($Wd)?' onchange="'.h($Wd).'"':"").">".optionlist($be,$Y)."</select>";
53
+}
54
+$K="";foreach($be
55
+as$z=>$X) {
56
+	$K.="<label><input type='radio' name='".h($F)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>";
57
+}
58
+return$K;}function
38 59
 select_input($wa,$be,$Y="",$_e=""){return($be?"<select$wa><option value=''>$_e".optionlist($be,$Y,true)."</select>":"<input$wa size='10' value='".h($Y)."' placeholder='$_e'>");}function
39 60
 confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function
40 61
 print_fieldset($u,$kd,$Mg=false,$Xd=""){echo"<fieldset><legend><a href='#fieldset-$u' onclick=\"".h($Xd)."return !toggle('fieldset-$u');\">$kd</a></legend><div id='fieldset-$u'".($Mg?"":" class='hidden'").">\n";}function
41 62
 bold($Ga,$Ra=""){return($Ga?" class='active $Ra'":($Ra?" class='$Ra'":""));}function
42
-odd($K=' class="odd"'){static$t=0;if(!$K)$t=-1;return($t++%2?$K:'');}function
63
+odd($K=' class="odd"'){static$t=0;if(!$K) {
64
+	$t=-1;
65
+}
66
+return($t++%2?$K:'');}function
43 67
 js_escape($Gf){return
44 68
 addcslashes($Gf,"\r\n'\\/");}function
45
-json_row($z,$X=null){static$pc=true;if($pc)echo"{";if($z!=""){echo($pc?"":",")."\n\t\"".addcslashes($z,"\r\n\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'undefined');$pc=false;}else{echo"\n}\n";$pc=true;}}function
69
+json_row($z,$X=null){static$pc=true;if($pc) {
70
+	echo"{";
71
+}
72
+if($z!=""){echo($pc?"":",")."\n\t\"".addcslashes($z,"\r\n\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'undefined');$pc=false;} else{echo"\n}\n";$pc=true;}}function
46 73
 ini_bool($Nc){$X=ini_get($Nc);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
47
-sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function
74
+sid(){static$K;if($K===null) {
75
+	$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));
76
+}
77
+return$K;}function
48 78
 set_password($Jg,$O,$V,$we){$_SESSION["pwds"][$Jg][$O][$V]=($_COOKIE["adminer_key"]&&is_string($we)?array(encrypt_string($we,$_COOKIE["adminer_key"])):$we);}function
49
-get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function
79
+get_password(){$K=get_session("pwds");if(is_array($K)) {
80
+	$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);
81
+}
82
+return$K;}function
50 83
 q($Gf){global$e;return$e->quote($Gf);}function
51
-get_vals($I,$c=0){global$e;$K=array();$J=$e->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$c];}return$K;}function
52
-get_key_vals($I,$f=null,$cg=0){global$e;if(!is_object($f))$f=$e;$K=array();$f->timeout=$cg;$J=$f->query($I);$f->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function
53
-get_rows($I,$f=null,$k="<p class='error'>"){global$e;$eb=(is_object($f)?$f:$e);$K=array();$J=$eb->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($f)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function
84
+get_vals($I,$c=0){global$e;$K=array();$J=$e->query($I);if(is_object($J)){while($L=$J->fetch_row()) {
85
+	$K[]=$L[$c];
86
+}
87
+}return$K;}function
88
+get_key_vals($I,$f=null,$cg=0){global$e;if(!is_object($f)) {
89
+	$f=$e;
90
+}
91
+$K=array();$f->timeout=$cg;$J=$f->query($I);$f->timeout=0;if(is_object($J)){while($L=$J->fetch_row()) {
92
+	$K[$L[0]]=$L[1];
93
+}
94
+}return$K;}function
95
+get_rows($I,$f=null,$k="<p class='error'>"){global$e;$eb=(is_object($f)?$f:$e);$K=array();$J=$eb->query($I);if(is_object($J)){while($L=$J->fetch_assoc()) {
96
+	$K[]=$L;
97
+}
98
+} elseif(!$J&&!is_object($f)&&$k&&defined("PAGE_HEADER")) {
99
+	echo$k.error()."\n";
100
+}
101
+return$K;}function
54 102
 unique_array($L,$w){foreach($w
55
-as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$K=array();foreach($v["columns"]as$z){if(!isset($L[$z]))continue
56
-2;$K[$z]=$L[$z];}return$K;}}}function
57
-escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return
103
+as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$K=array();foreach($v["columns"]as$z){if(!isset($L[$z])) {
104
+	continue
105
+2;
106
+}
107
+$K[$z]=$L[$z];}return$K;}}}function
108
+escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C)) {
109
+	return$C[1].idf_escape(idf_unescape($C[2])).$C[3];
110
+}
111
+return
58 112
 idf_escape($z);}function
59
-where($Z,$m=array()){global$e,$y;$K=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$c=escape_key($z);$K[]=$c.(($y=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X))||$y=="mssql"?" LIKE ".q(addcslashes($X,"%_\\")):" = ".unconvert_field($m[$z],q($X)));if($y=="sql"&&preg_match('~char|text~',$m[$z]["type"])&&preg_match("~[^ -@]~",$X))$K[]="$c = ".q($X)." COLLATE ".charset($e)."_bin";}foreach((array)$Z["null"]as$z)$K[]=escape_key($z)." IS NULL";return
113
+where($Z,$m=array()){global$e,$y;$K=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,1);$c=escape_key($z);$K[]=$c.(($y=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X))||$y=="mssql"?" LIKE ".q(addcslashes($X,"%_\\")):" = ".unconvert_field($m[$z],q($X)));if($y=="sql"&&preg_match('~char|text~',$m[$z]["type"])&&preg_match("~[^ -@]~",$X)) {
114
+	$K[]="$c = ".q($X)." COLLATE ".charset($e)."_bin";
115
+}
116
+}foreach((array)$Z["null"]as$z) {
117
+	$K[]=escape_key($z)." IS NULL";
118
+}
119
+return
60 120
 implode(" AND ",$K);}function
61 121
 where_check($X,$m=array()){parse_str($X,$Ma);remove_slashes(array(&$Ma));return
62 122
 where($Ma,$m);}function
63 123
 where_link($t,$c,$Y,$Yd="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($c)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$Yd:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
64 124
 convert_fields($d,$m,$N=array()){$K="";foreach($d
65
-as$z=>$X){if($N&&!in_array(idf_escape($z),$N))continue;$ua=convert_field($m[$z]);if($ua)$K.=", $ua AS ".idf_escape($z);}return$K;}function
66
-cookie($F,$Y,$nd=2592000){global$ba;$pe=array($F,(preg_match("~\n~",$Y)?"":$Y),($nd?time()+$nd:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$pe[]=true;return
125
+as$z=>$X){if($N&&!in_array(idf_escape($z),$N)) {
126
+	continue;
127
+}
128
+$ua=convert_field($m[$z]);if($ua) {
129
+	$K.=", $ua AS ".idf_escape($z);
130
+}
131
+}return$K;}function
132
+cookie($F,$Y,$nd=2592000){global$ba;$pe=array($F,(preg_match("~\n~",$Y)?"":$Y),($nd?time()+$nd:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0) {
133
+	$pe[]=true;
134
+}
135
+return
67 136
 call_user_func_array('setcookie',$pe);}function
68
-restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
69
-stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
137
+restart_session(){if(!ini_bool("session.use_cookies")) {
138
+	session_start();
139
+}
140
+}function
141
+stop_session(){if(!ini_bool("session.use_cookies")) {
142
+	session_write_close();
143
+}
144
+}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
70 145
 set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function
71 146
 auth_url($Jg,$O,$V,$i=null){global$Eb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($Eb))."|username|".($i!==null?"db|":"").session_name()),$C);return"$C[1]?".(sid()?SID."&":"").($Jg!="server"||$O!=""?urlencode($Jg)."=".urlencode($O)."&":"")."username=".urlencode($V).($i!=""?"&db=".urlencode($i):"").($C[2]?"&$C[2]":"");}function
72 147
 is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
73
-redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function
74
-query_redirect($I,$B,$D,$Ue=true,$cc=true,$ic=false,$bg=""){global$e,$k,$b;if($cc){$Cf=microtime(true);$ic=!$e->query($I);$bg=format_time($Cf);}$Bf="";if($I)$Bf=$b->messageQuery($I,$bg);if($ic){$k=error().$Bf;return
75
-false;}if($Ue)redirect($B,$D.$Bf);return
148
+redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="") {
149
+	$B=".";
150
+}
151
+header("Location: $B");exit;}}function
152
+query_redirect($I,$B,$D,$Ue=true,$cc=true,$ic=false,$bg=""){global$e,$k,$b;if($cc){$Cf=microtime(true);$ic=!$e->query($I);$bg=format_time($Cf);}$Bf="";if($I) {
153
+	$Bf=$b->messageQuery($I,$bg);
154
+}
155
+if($ic){$k=error().$Bf;return
156
+false;}if($Ue) {
157
+	redirect($B,$D.$Bf);
158
+}
159
+return
76 160
 true;}function
77
-queries($I){global$e;static$Pe=array();static$Cf;if(!$Cf)$Cf=microtime(true);if($I===null)return
78
-array(implode("\n",$Pe),format_time($Cf));$Pe[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$e->query($I);}function
161
+queries($I){global$e;static$Pe=array();static$Cf;if(!$Cf) {
162
+	$Cf=microtime(true);
163
+}
164
+if($I===null) {
165
+	return
166
+array(implode("\n",$Pe),format_time($Cf));
167
+}
168
+$Pe[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$e->query($I);}function
79 169
 apply_queries($I,$S,$Yb='table'){foreach($S
80
-as$Q){if(!queries("$I ".$Yb($Q)))return
81
-false;}return
170
+as$Q){if(!queries("$I ".$Yb($Q))) {
171
+	return
172
+false;
173
+}
174
+}return
82 175
 true;}function
83 176
 queries_redirect($B,$D,$Ue){list($Pe,$bg)=queries(null);return
84 177
 query_redirect($Pe,$B,$D,$Ue,false,!$Ue,$bg);}function
@@ -87,50 +180,159 @@  discard block
 block discarded – undo
87 180
 remove_from_uri($oe=""){return
88 181
 substr(preg_replace("~(?<=[?&])($oe".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
89 182
 pagination($G,$nb){return" ".($G==$nb?$G+1:'<a href="'.h(remove_from_uri("page").($G?"&page=$G".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($G+1)."</a>");}function
90
-get_file($z,$ub=false){$mc=$_FILES[$z];if(!$mc)return
91
-null;foreach($mc
92
-as$z=>$X)$mc[$z]=(array)$X;$K='';foreach($mc["error"]as$z=>$k){if($k)return$k;$F=$mc["name"][$z];$jg=$mc["tmp_name"][$z];$fb=file_get_contents($ub&&preg_match('~\\.gz$~',$F)?"compress.zlib://$jg":$jg);if($ub){$Cf=substr($fb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Cf,$af))$fb=iconv("utf-16","utf-8",$fb);elseif($Cf=="\xEF\xBB\xBF")$fb=substr($fb,3);$K.=$fb."\n\n";}else$K.=$fb;}return$K;}function
183
+get_file($z,$ub=false){$mc=$_FILES[$z];if(!$mc) {
184
+	return
185
+null;
186
+}
187
+foreach($mc
188
+as$z=>$X) {
189
+	$mc[$z]=(array)$X;
190
+}
191
+$K='';foreach($mc["error"]as$z=>$k){if($k) {
192
+	return$k;
193
+}
194
+$F=$mc["name"][$z];$jg=$mc["tmp_name"][$z];$fb=file_get_contents($ub&&preg_match('~\\.gz$~',$F)?"compress.zlib://$jg":$jg);if($ub){$Cf=substr($fb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Cf,$af)) {
195
+	$fb=iconv("utf-16","utf-8",$fb);
196
+} elseif($Cf=="\xEF\xBB\xBF") {
197
+	$fb=substr($fb,3);
198
+}
199
+$K.=$fb."\n\n";} else {
200
+	$K.=$fb;
201
+}
202
+}return$K;}function
93 203
 upload_error($k){$wd=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($wd?" ".sprintf('Maximum allowed file size is %sB.',$wd):""):'File does not exist.');}function
94 204
 repeat_pattern($ye,$ld){return
95 205
 str_repeat("$ye{0,65535}",$ld/65535)."$ye{0,".($ld%65535)."}";}function
96 206
 is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$X));}function
97
-shorten_utf8($Gf,$ld=80,$Kf=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$ld).")($)?)u",$Gf,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$ld).")($)?)",$Gf,$C);return
207
+shorten_utf8($Gf,$ld=80,$Kf=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$ld).")($)?)u",$Gf,$C)) {
208
+	preg_match("(^(".repeat_pattern("[\t\r\n -~]",$ld).")($)?)",$Gf,$C);
209
+}
210
+return
98 211
 h($C[1]).$Kf.(isset($C[2])?"":"<i>...</i>");}function
99 212
 format_number($X){return
100 213
 strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
101 214
 friendly_url($X){return
102 215
 preg_replace('~[^a-z0-9_]~i','-',$X);}function
103 216
 hidden_fields($Me,$Kc=array()){while(list($z,$X)=each($Me)){if(!in_array($z,$Kc)){if(is_array($X)){foreach($X
104
-as$Zc=>$W)$Me[$z."[$Zc]"]=$W;}else
105
-echo'<input type="hidden" name="'.h($z).'" value="'.h($X).'">';}}}function
217
+as$Zc=>$W) {
218
+	$Me[$z."[$Zc]"]=$W;
219
+}
220
+} else {
221
+	echo'<input type="hidden" name="'.h($z).'" value="'.h($X).'">';
222
+}
223
+}}}function
106 224
 hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
107 225
 table_status1($Q,$jc=false){$K=table_status($Q,$jc);return($K?$K:array("Name"=>$Q));}function
108
-column_foreign_keys($Q){global$b;$K=array();foreach($b->foreignKeys($Q)as$n){foreach($n["source"]as$X)$K[$X][]=$n;}return$K;}function
226
+column_foreign_keys($Q){global$b;$K=array();foreach($b->foreignKeys($Q)as$n){foreach($n["source"]as$X) {
227
+	$K[$X][]=$n;
228
+}
229
+}return$K;}function
109 230
 enum_input($U,$wa,$l,$Y,$Sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);$K=($Sb!==null?"<label><input type='$U'$wa value='$Sb'".((is_array($Y)?in_array($Sb,$Y):$Y===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?$Y==$t+1:(is_array($Y)?in_array($t+1,$Y):$Y===$X));$K.=" <label><input type='$U'$wa value='".($t+1)."'".($Na?' checked':'').'>'.h($b->editVal($X,$l)).'</label>';}return$K;}function
110
-input($l,$Y,$q){global$e,$tg,$b,$y;$F=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$ta=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$ta[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$ta);$q="json";}$cf=($y=="mssql"&&$l["auto_increment"]);if($cf&&!$_POST["save"])$q=null;$xc=(isset($_GET["select"])||$cf?array("orig"=>'original'):array())+$b->editFunctions($l);$wa=" name='fields[$F]'";if($l["type"]=="enum")echo
111
-nbsp($xc[""])."<td>".$b->editInput($_GET["edit"],$l,$wa,$Y);else{$pc=0;foreach($xc
112
-as$z=>$X){if($z===""||!$X)break;$pc++;}$Wd=($pc?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($pc > f.selectedIndex) f.selectedIndex = $pc;\" onkeyup='keyupChange.call(this);'":"");$wa.=$Wd;$Cc=(in_array($q,$xc)||isset($xc[$q]));echo(count($xc)>1?"<select name='function[$F]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($xc,$q===null||$Cc?$q:"")."</select>":nbsp(reset($xc))).'<td>';$Pc=$b->editInput($_GET["edit"],$l,$wa,$Y);if($Pc!="")echo$Pc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$F][$t]' value='".(1<<$t)."'".($Na?' checked':'')."$Wd>".h($b->editVal($X,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$F'$Wd>";elseif(($Zf=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$Y)){if($Zf&&$y!="sqlite")$wa.=" cols='50' rows='12'";else{$M=min(12,substr_count($Y,"\n")+1);$wa.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$wa>".h($Y).'</textarea>';}elseif($q=="json")echo"<textarea$wa cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';else{$yd=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$C)?((preg_match("~binary~",$l["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$l["unsigned"]?1:0)):($tg[$l["type"]]?$tg[$l["type"]]+($l["unsigned"]?0:1):0));if($y=='sql'&&$e->server_info>=5.6&&preg_match('~time~',$l["type"]))$yd+=7;echo"<input".((!$Cc||$q==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($Y)."'".($yd?" maxlength='$yd'":"").(preg_match('~char|binary~',$l["type"])&&$yd>20?" size='40'":"")."$wa>";}}}function
113
-process_input($l){global$b;$Jc=bracket_escape($l["field"]);$q=$_POST["function"][$Jc];$Y=$_POST["fields"][$Jc];if($l["type"]=="enum"){if($Y==-1)return
114
-false;if($Y=="")return"NULL";return+$Y;}if($l["auto_increment"]&&$Y=="")return
115
-null;if($q=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($q=="NULL")return"NULL";if($l["type"]=="set")return
116
-array_sum((array)$Y);if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y))return
117
-false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$mc=get_file("fields-$Jc");if(!is_string($mc))return
118
-false;return
231
+input($l,$Y,$q){global$e,$tg,$b,$y;$F=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$ta=array($Y);if(version_compare(PHP_VERSION,5.4)>=0) {
232
+	$ta[]=JSON_PRETTY_PRINT;
233
+}
234
+$Y=call_user_func_array('json_encode',$ta);$q="json";}$cf=($y=="mssql"&&$l["auto_increment"]);if($cf&&!$_POST["save"]) {
235
+	$q=null;
236
+}
237
+$xc=(isset($_GET["select"])||$cf?array("orig"=>'original'):array())+$b->editFunctions($l);$wa=" name='fields[$F]'";if($l["type"]=="enum") {
238
+	echo
239
+nbsp($xc[""])."<td>".$b->editInput($_GET["edit"],$l,$wa,$Y);
240
+} else{$pc=0;foreach($xc
241
+as$z=>$X){if($z===""||!$X) {
242
+	break;
243
+}
244
+$pc++;}$Wd=($pc?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($pc > f.selectedIndex) f.selectedIndex = $pc;\" onkeyup='keyupChange.call(this);'":"");$wa.=$Wd;$Cc=(in_array($q,$xc)||isset($xc[$q]));echo(count($xc)>1?"<select name='function[$F]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($xc,$q===null||$Cc?$q:"")."</select>":nbsp(reset($xc))).'<td>';$Pc=$b->editInput($_GET["edit"],$l,$wa,$Y);if($Pc!="") {
245
+	echo$Pc;
246
+} elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$rd);foreach($rd[1]as$t=>$X){$X=stripcslashes(str_replace("''","'",$X));$Na=(is_int($Y)?($Y>>$t)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$F][$t]' value='".(1<<$t)."'".($Na?' checked':'')."$Wd>".h($b->editVal($X,$l)).'</label>';}} elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")) {
247
+	echo"<input type='file' name='fields-$F'$Wd>";
248
+} elseif(($Zf=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$Y)){if($Zf&&$y!="sqlite") {
249
+	$wa.=" cols='50' rows='12'";
250
+} else{$M=min(12,substr_count($Y,"\n")+1);$wa.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$wa>".h($Y).'</textarea>';} elseif($q=="json") {
251
+	echo"<textarea$wa cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';
252
+} else{$yd=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$C)?((preg_match("~binary~",$l["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$l["unsigned"]?1:0)):($tg[$l["type"]]?$tg[$l["type"]]+($l["unsigned"]?0:1):0));if($y=='sql'&&$e->server_info>=5.6&&preg_match('~time~',$l["type"])) {
253
+	$yd+=7;
254
+}
255
+echo"<input".((!$Cc||$q==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($Y)."'".($yd?" maxlength='$yd'":"").(preg_match('~char|binary~',$l["type"])&&$yd>20?" size='40'":"")."$wa>";}}}function
256
+process_input($l){global$b;$Jc=bracket_escape($l["field"]);$q=$_POST["function"][$Jc];$Y=$_POST["fields"][$Jc];if($l["type"]=="enum"){if($Y==-1) {
257
+	return
258
+false;
259
+}
260
+if($Y=="") {
261
+	return"NULL";
262
+}
263
+return+$Y;}if($l["auto_increment"]&&$Y=="") {
264
+	return
265
+null;
266
+}
267
+if($q=="orig") {
268
+	return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);
269
+}
270
+if($q=="NULL") {
271
+	return"NULL";
272
+}
273
+if($l["type"]=="set") {
274
+	return
275
+array_sum((array)$Y);
276
+}
277
+if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y)) {
278
+	return
279
+false;
280
+}
281
+return$Y;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$mc=get_file("fields-$Jc");if(!is_string($mc)) {
282
+	return
283
+false;
284
+}
285
+return
119 286
 q($mc);}return$b->processInput($l,$Y,$q);}function
120 287
 fields_from_edit(){global$j;$K=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$F=bracket_escape($z,1);$K[$F]=array("field"=>$F,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($z==$j->primary),);}return$K;}function
121 288
 search_tables(){global$b,$e;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$uc=false;foreach(table_status('',true)as$Q=>$R){$F=$b->tableName($R);if(isset($R["Engine"])&&$F!=""&&(!$_POST["tables"]||in_array($Q,$_POST["tables"]))){$J=$e->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($Q),array())),1));if(!$J||$J->fetch_row()){if(!$uc){echo"<ul>\n";$uc=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$F</a>\n":"$F: <span class='error'>".error()."</span>\n");}}}echo($uc?"</ul>":"<p class='message'>".'No tables.')."\n";}function
122
-dump_headers($Ic,$Ed=false){global$b;$K=$b->dumpHeaders($Ic,$Ed);$me=$_POST["output"];if($me!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Ic).".$K".($me!="file"&&!preg_match('~[^0-9a-z]~',$me)?".$me":""));session_write_close();ob_flush();flush();return$K;}function
289
+dump_headers($Ic,$Ed=false){global$b;$K=$b->dumpHeaders($Ic,$Ed);$me=$_POST["output"];if($me!="text") {
290
+	header("Content-Disposition: attachment; filename=".$b->dumpFilename($Ic).".$K".($me!="file"&&!preg_match('~[^0-9a-z]~',$me)?".$me":""));
291
+}
292
+session_write_close();ob_flush();flush();return$K;}function
123 293
 dump_csv($L){foreach($L
124
-as$z=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$L[$z]='"'.str_replace('"','""',$X).'"';}echo
294
+as$z=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="") {
295
+	$L[$z]='"'.str_replace('"','""',$X).'"';
296
+}
297
+}echo
125 298
 implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function
126 299
 apply_sql_function($q,$c){return($q?($q=="unixepoch"?"DATETIME($c, '$q')":($q=="count distinct"?"COUNT(DISTINCT ":strtoupper("$q("))."$c)"):$c);}function
127
-get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$nc=@tempnam("","");if(!$nc)return
128
-false;$K=dirname($nc);unlink($nc);}}return$K;}function
129
-password_file($g){$nc=get_temp_dir()."/adminer.key";$K=@file_get_contents($nc);if($K||!$g)return$K;$p=@fopen($nc,"w");if($p){chmod($nc,0660);$K=rand_string();fwrite($p,$K);fclose($p);}return$K;}function
300
+get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir')) {
301
+	$K=sys_get_temp_dir();
302
+} else{$nc=@tempnam("","");if(!$nc) {
303
+	return
304
+false;
305
+}
306
+$K=dirname($nc);unlink($nc);}}return$K;}function
307
+password_file($g){$nc=get_temp_dir()."/adminer.key";$K=@file_get_contents($nc);if($K||!$g) {
308
+	return$K;
309
+}
310
+$p=@fopen($nc,"w");if($p){chmod($nc,0660);$K=rand_string();fwrite($p,$K);fclose($p);}return$K;}function
130 311
 rand_string(){return
131 312
 md5(uniqid(mt_rand(),true));}function
132 313
 select_value($X,$A,$l,$ag){global$b,$ba;if(is_array($X)){$K="";foreach($X
133
-as$Zc=>$W)$K.="<tr>".($X!=array_values($X)?"<th>".h($Zc):"")."<td>".select_value($W,$A,$l,$ag);return"<table cellspacing='0'>$K</table>";}if(!$A)$A=$b->selectLink($X,$l);if($A===null){if(is_mail($X))$A="mailto:$X";if($Oe=is_url($X))$A=(($Oe=="http"&&$ba)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$X:"https://www.adminer.org/redirect/?url=".urlencode($X));}$K=$b->editVal($X,$l);if($K!==null){if($K==="")$K="&nbsp;";elseif(!is_utf8($K))$K="\0";elseif($ag!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$ag));else$K=h($K);}return$b->selectVal($K,$A,$l,$X);}function
314
+as$Zc=>$W) {
315
+	$K.="<tr>".($X!=array_values($X)?"<th>".h($Zc):"")."<td>".select_value($W,$A,$l,$ag);
316
+}
317
+return"<table cellspacing='0'>$K</table>";}if(!$A) {
318
+	$A=$b->selectLink($X,$l);
319
+}
320
+if($A===null){if(is_mail($X)) {
321
+	$A="mailto:$X";
322
+}
323
+if($Oe=is_url($X)) {
324
+	$A=(($Oe=="http"&&$ba)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$X:"https://www.adminer.org/redirect/?url=".urlencode($X));
325
+}
326
+}$K=$b->editVal($X,$l);if($K!==null){if($K==="") {
327
+	$K="&nbsp;";
328
+} elseif(!is_utf8($K)) {
329
+	$K="\0";
330
+} elseif($ag!=""&&is_shortable($l)) {
331
+	$K=shorten_utf8($K,max(0,+$ag));
332
+} else {
333
+	$K=h($K);
334
+}
335
+}return$b->selectVal($K,$A,$l,$X);}function
134 336
 is_mail($Pb){$va='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$ye="$va+(\\.$va+)*@($Db?\\.)+$Db";return
135 337
 is_string($Pb)&&preg_match("(^$ye(,\\s*$ye)*\$)i",$Pb);}function
136 338
 is_url($Gf){$Db='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($Db?\\.)+$Db(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Gf,$C)?strtolower($C[1]):"");}function
@@ -143,38 +345,94 @@  discard block
 block discarded – undo
143 345
 	}, \'token=',$T,'&kill=',$bd,'\');
144 346
 }, ',1000*$cg,');
145 347
 </script>
146
-';}else$f=null;ob_flush();flush();$K=@get_key_vals($I,$f,$cg);if($f){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return
348
+';} else {
349
+	$f=null;
350
+}
351
+ob_flush();flush();$K=@get_key_vals($I,$f,$cg);if($f){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return
147 352
 array_keys($K);}function
148 353
 get_token(){$Se=rand(1,1e6);return($Se^$_SESSION["token"]).":$Se";}function
149 354
 verify_token(){list($T,$Se)=explode(":",$_POST["token"]);return($Se^$_SESSION["token"])==$T;}function
150
-lzw_decompress($Da){$_b=256;$Ea=8;$Ta=array();$df=0;$ef=0;for($t=0;$t<strlen($Da);$t++){$df=($df<<8)+ord($Da[$t]);$ef+=8;if($ef>=$Ea){$ef-=$Ea;$Ta[]=$df>>$ef;$df&=(1<<$ef)-1;$_b++;if($_b>>$Ea)$Ea++;}}$zb=range("\0","\xFF");$K="";foreach($Ta
151
-as$t=>$Sa){$Ob=$zb[$Sa];if(!isset($Ob))$Ob=$Qg.$Qg[0];$K.=$Ob;if($t)$zb[]=$Qg.$Ob[0];$Qg=$Ob;}return$K;}function
355
+lzw_decompress($Da){$_b=256;$Ea=8;$Ta=array();$df=0;$ef=0;for($t=0;$t<strlen($Da);$t++){$df=($df<<8)+ord($Da[$t]);$ef+=8;if($ef>=$Ea){$ef-=$Ea;$Ta[]=$df>>$ef;$df&=(1<<$ef)-1;$_b++;if($_b>>$Ea) {
356
+	$Ea++;
357
+}
358
+}}$zb=range("\0","\xFF");$K="";foreach($Ta
359
+as$t=>$Sa){$Ob=$zb[$Sa];if(!isset($Ob)) {
360
+	$Ob=$Qg.$Qg[0];
361
+}
362
+$K.=$Ob;if($t) {
363
+	$zb[]=$Qg.$Ob[0];
364
+}
365
+$Qg=$Ob;}return$K;}function
152 366
 on_help($Za,$xf=0){return" onmouseover='helpMouseover(this, event, ".h($Za).", $xf);' onmouseout='helpMouseout(this, event);'";}function
153
-edit_form($a,$m,$L,$Ag){global$b,$y,$T,$k;$Pf=$b->tableName(table_status1($a,true));page_header(($Ag?'Edit':'Insert'),$k,array("select"=>array($a,$Pf)),$Pf);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form">
154
-';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m
155
-as$F=>$l){echo"<tr><th>".$b->fieldName($l);$vb=$_GET["set"][bracket_escape($F)];if($vb===null){$vb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$vb,$af))$vb=$af[1];}$Y=($L!==null?($L[$F]!=""&&$y=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$F])?array_sum($L[$F]):+$L[$F]):$L[$F]):(!$Ag&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$vb)));if(!$_POST["save"]&&is_string($Y))$Y=$b->editVal($Y,$l);$q=($_POST["save"]?(string)$_POST["function"][$F]:($Ag&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$q="now";}input($l,$Y,$q);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($Ag?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($Ag?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
367
+edit_form($a,$m,$L,$Ag){global$b,$y,$T,$k;$Pf=$b->tableName(table_status1($a,true));page_header(($Ag?'Edit':'Insert'),$k,array("select"=>array($a,$Pf)),$Pf);if($L===false) {
368
+	echo"<p class='error'>".'No rows.'."\n";
369
+}
370
+echo'<form action="" method="post" enctype="multipart/form-data" id="form">
371
+';if(!$m) {
372
+	echo"<p class='error'>".'You have no privileges to update this table.'."\n";
373
+} else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m
374
+as$F=>$l){echo"<tr><th>".$b->fieldName($l);$vb=$_GET["set"][bracket_escape($F)];if($vb===null){$vb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$vb,$af)) {
375
+	$vb=$af[1];
376
+}
377
+}$Y=($L!==null?($L[$F]!=""&&$y=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$F])?array_sum($L[$F]):+$L[$F]):$L[$F]):(!$Ag&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$vb)));if(!$_POST["save"]&&is_string($Y)) {
378
+	$Y=$b->editVal($Y,$l);
379
+}
380
+$q=($_POST["save"]?(string)$_POST["function"][$F]:($Ag&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$q="now";}input($l,$Y,$q);echo"\n";}if(!support("table")) {
381
+	echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";
382
+}
383
+echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"])) {
384
+	echo"<input type='submit' name='insert' value='".($Ag?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";
385
+}
386
+}echo($Ag?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"])) {
387
+	hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));
388
+}
389
+echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
156 390
 <input type="hidden" name="save" value="1">
157 391
 <input type="hidden" name="token" value="',$T,'">
158 392
 </form>
159
-';}global$b,$e,$Eb,$Lb,$Vb,$k,$xc,$_c,$ba,$Oc,$y,$ca,$ed,$Vd,$ze,$Hf,$Dc,$T,$og,$tg,$_g,$ga;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$ba=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$pe=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0)$pe[]=true;call_user_func_array('session_set_cookie_params',$pe);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$oc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function
393
+';}global$b,$e,$Eb,$Lb,$Vb,$k,$xc,$_c,$ba,$Oc,$y,$ca,$ed,$Vd,$ze,$Hf,$Dc,$T,$og,$tg,$_g,$ga;if(!$_SERVER["REQUEST_URI"]) {
394
+	$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];
395
+}
396
+if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="") {
397
+	$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";
398
+}
399
+$ba=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$pe=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$ba);if(version_compare(PHP_VERSION,'5.2.0')>=0) {
400
+	$pe[]=true;
401
+}
402
+call_user_func_array('session_set_cookie_params',$pe);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$oc);if(get_magic_quotes_runtime()) {
403
+	set_magic_quotes_runtime(false);
404
+}
405
+@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function
160 406
 get_lang(){return'en';}function
161 407
 lang($ng,$Md=null){if(is_array($ng)){$Be=($Md==1?0:1);$ng=$ng[$Be];}$ng=str_replace("%d","%s",$ng);$Md=format_number($Md);return
162 408
 sprintf($ng,$Md);}if(extension_loaded('pdo')){class
163 409
 Min_PDO
164 410
 extends
165 411
 PDO{var$_result,$server_info,$affected_rows,$errno,$error;function
166
-__construct(){global$b;$Be=array_search("SQL",$b->operators);if($Be!==false)unset($b->operators[$Be]);}function
167
-dsn($Ib,$V,$we){try{parent::__construct($Ib,$V,$we);}catch(Exception$ac){auth_error($ac->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
412
+__construct(){global$b;$Be=array_search("SQL",$b->operators);if($Be!==false) {
413
+	unset($b->operators[$Be]);
414
+}
415
+}function
416
+dsn($Ib,$V,$we){try{parent::__construct($Ib,$V,$we);} catch(Exception$ac){auth_error($ac->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
168 417
 query($I,$ug=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return
169 418
 false;}$this->store_result($J);return$J;}function
170 419
 multi_query($I){return$this->_result=$this->query($I);}function
171
-store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return
172
-false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
420
+store_result($J=null){if(!$J){$J=$this->_result;if(!$J) {
421
+	return
422
+false;
423
+}
424
+}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
173 425
 true;}function
174
-next_result(){if(!$this->_result)return
175
-false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
176
-result($I,$l=0){$J=$this->query($I);if(!$J)return
177
-false;$L=$J->fetch();return$L[$l];}}class
426
+next_result(){if(!$this->_result) {
427
+	return
428
+false;
429
+}
430
+$this->_result->_offset=0;return@$this->_result->nextRowset();}function
431
+result($I,$l=0){$J=$this->query($I);if(!$J) {
432
+	return
433
+false;
434
+}
435
+$L=$J->fetch();return$L[$l];}}class
178 436
 Min_PDOStatement
179 437
 extends
180 438
 PDOStatement{var$_offset=0,$num_rows;function
@@ -183,11 +441,20 @@  discard block
 block discarded – undo
183 441
 fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$Eb=array();class
184 442
 Min_SQL{var$_conn;function
185 443
 __construct($e){$this->_conn=$e;}function
186
-select($Q,$N,$Z,$s,$de=array(),$_=1,$G=0,$Ie=false){global$b,$y;$Vc=(count($s)<count($N));$I=$b->selectQueryBuild($N,$Z,$s,$de,$_,$G);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):""),($_!=""?+$_:null),($G?$_*$G:0),"\n");$Cf=microtime(true);$K=$this->_conn->query($I);if($Ie)echo$b->selectQuery($I,format_time($Cf));return$K;}function
444
+select($Q,$N,$Z,$s,$de=array(),$_=1,$G=0,$Ie=false){global$b,$y;$Vc=(count($s)<count($N));$I=$b->selectQueryBuild($N,$Z,$s,$de,$_,$G);if(!$I) {
445
+	$I="SELECT".limit(($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):""),($_!=""?+$_:null),($G?$_*$G:0),"\n");
446
+}
447
+$Cf=microtime(true);$K=$this->_conn->query($I);if($Ie) {
448
+	echo$b->selectQuery($I,format_time($Cf));
449
+}
450
+return$K;}function
187 451
 delete($Q,$Qe,$_=0){$I="FROM ".table($Q);return
188 452
 queries("DELETE".($_?limit1($I,$Qe):" $I$Qe"));}function
189 453
 update($Q,$P,$Qe,$_=0,$sf="\n"){$Hg=array();foreach($P
190
-as$z=>$X)$Hg[]="$z = $X";$I=table($Q)." SET$sf".implode(",$sf",$Hg);return
454
+as$z=>$X) {
455
+	$Hg[]="$z = $X";
456
+}
457
+$I=table($Q)." SET$sf".implode(",$sf",$Hg);return
191 458
 queries("UPDATE".($_?limit1($I,$Qe):" $I$Qe"));}function
192 459
 insert($Q,$P){return
193 460
 queries("INSERT INTO ".table($Q).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
@@ -204,15 +471,29 @@  discard block
 block discarded – undo
204 471
 MySQLi{var$extension="MySQLi";function
205 472
 __construct(){parent::init();}function
206 473
 connect($O="",$V="",$we="",$qb=null,$Ae=null,$zf=null){mysqli_report(MYSQLI_REPORT_OFF);list($Gc,$Ae)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$Gc:ini_get("mysqli.default_host")),($O.$V!=""?$V:ini_get("mysqli.default_user")),($O.$V.$we!=""?$we:ini_get("mysqli.default_pw")),$qb,(is_numeric($Ae)?$Ae:ini_get("mysqli.default_port")),(!is_numeric($Ae)?$Ae:$zf));return$K;}function
207
-set_charset($La){if(parent::set_charset($La))return
208
-true;parent::set_charset('utf8');return$this->query("SET NAMES $La");}function
209
-result($I,$l=0){$J=$this->query($I);if(!$J)return
210
-false;$L=$J->fetch_array();return$L[$l];}function
211
-quote($Gf){return"'".$this->escape_string($Gf)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
474
+set_charset($La){if(parent::set_charset($La)) {
475
+	return
476
+true;
477
+}
478
+parent::set_charset('utf8');return$this->query("SET NAMES $La");}function
479
+result($I,$l=0){$J=$this->query($I);if(!$J) {
480
+	return
481
+false;
482
+}
483
+$L=$J->fetch_array();return$L[$l];}function
484
+quote($Gf){return"'".$this->escape_string($Gf)."'";}}} elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
212 485
 Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
213
-connect($O,$V,$we){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$we"!=""?$we:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
214
-set_charset($La){if(function_exists('mysql_set_charset')){if(mysql_set_charset($La,$this->_link))return
215
-true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $La");}function
486
+connect($O,$V,$we){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$V"!=""?$V:ini_get("mysql.default_user")),("$O$V$we"!=""?$we:ini_get("mysql.default_password")),true,131072);if($this->_link) {
487
+	$this->server_info=mysql_get_server_info($this->_link);
488
+} else {
489
+	$this->error=mysql_error();
490
+}
491
+return(bool)$this->_link;}function
492
+set_charset($La){if(function_exists('mysql_set_charset')){if(mysql_set_charset($La,$this->_link)) {
493
+	return
494
+true;
495
+}
496
+mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $La");}function
216 497
 quote($Gf){return"'".mysql_real_escape_string($Gf,$this->_link)."'";}function
217 498
 select_db($qb){return
218 499
 mysql_select_db($qb,$this->_link);}function
@@ -225,8 +506,11 @@  discard block
 block discarded – undo
225 506
 store_result(){return$this->_result;}function
226 507
 next_result(){return
227 508
 false;}function
228
-result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return
229
-false;return
509
+result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows) {
510
+	return
511
+false;
512
+}
513
+return
230 514
 mysql_result($J->_result,0,$l);}}class
231 515
 Min_Result{var$num_rows,$_result,$_offset=0;function
232 516
 __construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function
@@ -235,7 +519,7 @@  discard block
 block discarded – undo
235 519
 fetch_row(){return
236 520
 mysql_fetch_row($this->_result);}function
237 521
 fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function
238
-__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
522
+__destruct(){mysql_free_result($this->_result);}}} elseif(extension_loaded("pdo_mysql")){class
239 523
 Min_DB
240 524
 extends
241 525
 Min_PDO{var$extension="PDO_MySQL";function
@@ -250,27 +534,56 @@  discard block
 block discarded – undo
250 534
 Min_SQL{function
251 535
 insert($Q,$P){return($P?parent::insert($Q,$P):queries("INSERT INTO ".table($Q)." ()\nVALUES ()"));}function
252 536
 insertUpdate($Q,$M,$He){$d=array_keys(reset($M));$Fe="INSERT INTO ".table($Q)." (".implode(", ",$d).") VALUES\n";$Hg=array();foreach($d
253
-as$z)$Hg[$z]="$z = VALUES($z)";$Kf="\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg);$Hg=array();$ld=0;foreach($M
254
-as$P){$Y="(".implode(", ",$P).")";if($Hg&&(strlen($Fe)+$ld+strlen($Y)+strlen($Kf)>1e6)){if(!queries($Fe.implode(",\n",$Hg).$Kf))return
255
-false;$Hg=array();$ld=0;}$Hg[]=$Y;$ld+=strlen($Y)+2;}return
537
+as$z) {
538
+	$Hg[$z]="$z = VALUES($z)";
539
+}
540
+$Kf="\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg);$Hg=array();$ld=0;foreach($M
541
+as$P){$Y="(".implode(", ",$P).")";if($Hg&&(strlen($Fe)+$ld+strlen($Y)+strlen($Kf)>1e6)){if(!queries($Fe.implode(",\n",$Hg).$Kf)) {
542
+	return
543
+false;
544
+}
545
+$Hg=array();$ld=0;}$Hg[]=$Y;$ld+=strlen($Y)+2;}return
256 546
 queries($Fe.implode(",\n",$Hg).$Kf);}}function
257 547
 idf_escape($Jc){return"`".str_replace("`","``",$Jc)."`";}function
258 548
 table($Jc){return
259 549
 idf_escape($Jc);}function
260 550
 connect(){global$b;$e=new
261
-Min_DB;$mb=$b->credentials();if($e->connect($mb[0],$mb[1],$mb[2])){$e->set_charset(charset($e));$e->query("SET sql_quote_show_create = 1, autocommit = 1");return$e;}$K=$e->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($lf=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$lf;return$K;}function
551
+Min_DB;$mb=$b->credentials();if($e->connect($mb[0],$mb[1],$mb[2])){$e->set_charset(charset($e));$e->query("SET sql_quote_show_create = 1, autocommit = 1");return$e;}$K=$e->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($lf=iconv("windows-1250","utf-8",$K))>strlen($K)) {
552
+	$K=$lf;
553
+}
554
+return$K;}function
262 555
 get_databases($qc){global$e;$K=get_session("dbs");if($K===null){$I=($e->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($qc?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function
263 556
 limit($I,$Z,$_,$Od=0,$sf=" "){return" $I$Z".($_!==null?$sf."LIMIT $_".($Od?" OFFSET $Od":""):"");}function
264 557
 limit1($I,$Z){return
265 558
 limit($I,$Z,1);}function
266
-db_collation($i,$Xa){global$e;$K=null;$g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1);if(preg_match('~ COLLATE ([^ ]+)~',$g,$C))$K=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$g,$C))$K=$Xa[$C[1]][-1];return$K;}function
267
-engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function
559
+db_collation($i,$Xa){global$e;$K=null;$g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1);if(preg_match('~ COLLATE ([^ ]+)~',$g,$C)) {
560
+	$K=$C[1];
561
+} elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$g,$C)) {
562
+	$K=$Xa[$C[1]][-1];
563
+}
564
+return$K;}function
565
+engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"])) {
566
+	$K[]=$L["Engine"];
567
+}
568
+}return$K;}function
268 569
 logged_user(){global$e;return$e->result("SELECT USER()");}function
269 570
 tables_list(){global$e;return
270 571
 get_key_vals($e->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
271 572
 count_tables($h){$K=array();foreach($h
272
-as$i)$K[$i]=count(get_vals("SHOW TABLES IN ".idf_escape($i)));return$K;}function
273
-table_status($F="",$jc=false){global$e;$K=array();foreach(get_rows($jc&&$e->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($F!=""?"AND TABLE_NAME = ".q($F):"ORDER BY Name"):"SHOW TABLE STATUS".($F!=""?" LIKE ".q(addcslashes($F,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($F!="")return$L;$K[$L["Name"]]=$L;}return$K;}function
573
+as$i) {
574
+	$K[$i]=count(get_vals("SHOW TABLES IN ".idf_escape($i)));
575
+}
576
+return$K;}function
577
+table_status($F="",$jc=false){global$e;$K=array();foreach(get_rows($jc&&$e->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($F!=""?"AND TABLE_NAME = ".q($F):"ORDER BY Name"):"SHOW TABLE STATUS".($F!=""?" LIKE ".q(addcslashes($F,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB") {
578
+	$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);
579
+}
580
+if(!isset($L["Engine"])) {
581
+	$L["Comment"]="";
582
+}
583
+if($F!="") {
584
+	return$L;
585
+}
586
+$K[$L["Name"]]=$L;}return$K;}function
274 587
 is_view($R){return$R["Engine"]===null;}function
275 588
 fk_support($R){global$e;return
276 589
 preg_match('~InnoDB|IBMDB2I~i',$R["Engine"])||(preg_match('~NDB~i',$R["Engine"])&&version_compare($e->server_info,'5.6')>=0);}function
@@ -280,21 +593,53 @@  discard block
 block discarded – undo
280 593
 as$C){preg_match_all("~$ye~",$C[2],$_f);preg_match_all("~$ye~",$C[5],$Vf);$K[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('idf_unescape',$_f[0]),"target"=>array_map('idf_unescape',$Vf[0]),"on_delete"=>($C[6]?$C[6]:"RESTRICT"),"on_update"=>($C[7]?$C[7]:"RESTRICT"),);}}return$K;}function
281 594
 view($F){global$e;return
282 595
 array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$e->result("SHOW CREATE VIEW ".table($F),1)));}function
283
-collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K
284
-as$z=>$X)asort($K[$z]);return$K;}function
596
+collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"]) {
597
+	$K[$L["Charset"]][-1]=$L["Collation"];
598
+} else {
599
+	$K[$L["Charset"]][]=$L["Collation"];
600
+}
601
+}ksort($K);foreach($K
602
+as$z=>$X) {
603
+	asort($K[$z]);
604
+}
605
+return$K;}function
285 606
 information_schema($i){global$e;return($e->server_info>=5&&$i=="information_schema")||($e->server_info>=5.5&&$i=="performance_schema");}function
286 607
 error(){global$e;return
287 608
 h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$e->error));}function
288 609
 create_database($i,$Wa){return
289 610
 queries("CREATE DATABASE ".idf_escape($i).($Wa?" COLLATE ".q($Wa):""));}function
290 611
 drop_databases($h){$K=apply_queries("DROP DATABASE",$h,'idf_escape');restart_session();set_session("dbs",null);return$K;}function
291
-rename_database($F,$Wa){$K=false;if(create_database($F,$Wa)){$bf=array();foreach(tables_list()as$Q=>$U)$bf[]=table($Q)." TO ".idf_escape($F).".".table($Q);$K=(!$bf||queries("RENAME TABLE ".implode(", ",$bf)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function
292
-auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$za="";break;}if($v["type"]=="PRIMARY")$za=" UNIQUE";}}return" AUTO_INCREMENT$za";}function
612
+rename_database($F,$Wa){$K=false;if(create_database($F,$Wa)){$bf=array();foreach(tables_list()as$Q=>$U) {
613
+	$bf[]=table($Q)." TO ".idf_escape($F).".".table($Q);
614
+}
615
+$K=(!$bf||queries("RENAME TABLE ".implode(", ",$bf)));if($K) {
616
+	queries("DROP DATABASE ".idf_escape(DB));
617
+}
618
+restart_session();set_session("dbs",null);}return$K;}function
619
+auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$za="";break;}if($v["type"]=="PRIMARY") {
620
+	$za=" UNIQUE";
621
+}
622
+}}return" AUTO_INCREMENT$za";}function
293 623
 alter_table($Q,$F,$m,$rc,$bb,$Tb,$Wa,$ya,$te){$sa=array();foreach($m
294
-as$l)$sa[]=($l[1]?($Q!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($Q!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$sa=array_merge($sa,$rc);$Df=($bb!==null?" COMMENT=".q($bb):"").($Tb?" ENGINE=".q($Tb):"").($Wa?" COLLATE ".q($Wa):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($Q=="")return
295
-queries("CREATE TABLE ".table($F)." (\n".implode(",\n",$sa)."\n)$Df$te");if($Q!=$F)$sa[]="RENAME TO ".table($F);if($Df)$sa[]=ltrim($Df);return($sa||$te?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$sa).$te):true);}function
624
+as$l) {
625
+	$sa[]=($l[1]?($Q!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($Q!=""?$l[2]:""):"DROP ".idf_escape($l[0]));
626
+}
627
+$sa=array_merge($sa,$rc);$Df=($bb!==null?" COMMENT=".q($bb):"").($Tb?" ENGINE=".q($Tb):"").($Wa?" COLLATE ".q($Wa):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($Q=="") {
628
+	return
629
+queries("CREATE TABLE ".table($F)." (\n".implode(",\n",$sa)."\n)$Df$te");
630
+}
631
+if($Q!=$F) {
632
+	$sa[]="RENAME TO ".table($F);
633
+}
634
+if($Df) {
635
+	$sa[]=ltrim($Df);
636
+}
637
+return($sa||$te?queries("ALTER TABLE ".table($Q)."\n".implode(",\n",$sa).$te):true);}function
296 638
 alter_indexes($Q,$sa){foreach($sa
297
-as$z=>$X)$sa[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
639
+as$z=>$X) {
640
+	$sa[$z]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");
641
+}
642
+return
298 643
 queries("ALTER TABLE ".table($Q).implode(",",$sa));}function
299 644
 truncate_tables($S){return
300 645
 apply_queries("TRUNCATE TABLE",$S);}function
@@ -302,23 +647,41 @@  discard block
 block discarded – undo
302 647
 queries("DROP VIEW ".implode(", ",array_map('table',$Lg)));}function
303 648
 drop_tables($S){return
304 649
 queries("DROP TABLE ".implode(", ",array_map('table',$S)));}function
305
-move_tables($S,$Lg,$Vf){$bf=array();foreach(array_merge($S,$Lg)as$Q)$bf[]=table($Q)." TO ".idf_escape($Vf).".".table($Q);return
650
+move_tables($S,$Lg,$Vf){$bf=array();foreach(array_merge($S,$Lg)as$Q) {
651
+	$bf[]=table($Q)." TO ".idf_escape($Vf).".".table($Q);
652
+}
653
+return
306 654
 queries("RENAME TABLE ".implode(", ",$bf));}function
307 655
 copy_tables($S,$Lg,$Vf){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($S
308
-as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));if(!queries("\nDROP TABLE IF EXISTS $F")||!queries("CREATE TABLE $F LIKE ".table($Q))||!queries("INSERT INTO $F SELECT * FROM ".table($Q)))return
309
-false;}foreach($Lg
310
-as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));$Kg=view($Q);if(!queries("DROP VIEW IF EXISTS $F")||!queries("CREATE VIEW $F AS $Kg[select]"))return
311
-false;}return
656
+as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));if(!queries("\nDROP TABLE IF EXISTS $F")||!queries("CREATE TABLE $F LIKE ".table($Q))||!queries("INSERT INTO $F SELECT * FROM ".table($Q))) {
657
+	return
658
+false;
659
+}
660
+}foreach($Lg
661
+as$Q){$F=($Vf==DB?table("copy_$Q"):idf_escape($Vf).".".table($Q));$Kg=view($Q);if(!queries("DROP VIEW IF EXISTS $F")||!queries("CREATE VIEW $F AS $Kg[select]")) {
662
+	return
663
+false;
664
+}
665
+}return
312 666
 true;}function
313
-trigger($F){if($F=="")return
314
-array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($F));return
667
+trigger($F){if($F=="") {
668
+	return
669
+array();
670
+}
671
+$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($F));return
315 672
 reset($M);}function
316
-triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function
673
+triggers($Q){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")))as$L) {
674
+	$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);
675
+}
676
+return$K;}function
317 677
 trigger_options(){return
318 678
 array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
319 679
 routine($F,$U){global$e,$Vb,$Oc,$tg;$qa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$sg="((".implode("|",array_merge(array_keys($tg),$qa)).")\\b(?:\\s*\\(((?:[^'\")]|$Vb)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$ye="\\s*(".($U=="FUNCTION"?"":$Oc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$sg";$g=$e->result("SHOW CREATE $U ".idf_escape($F),2);preg_match("~\\(((?:$ye\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$sg\\s+":"")."(.*)~is",$g,$C);$m=array();preg_match_all("~$ye\\s*,?~is",$C[1],$rd,PREG_SET_ORDER);foreach($rd
320
-as$oe){$F=str_replace("``","`",$oe[2]).$oe[3];$m[]=array("field"=>$F,"type"=>strtolower($oe[5]),"length"=>preg_replace_callback("~$Vb~s",'normalize_enum',$oe[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$oe[8] $oe[7]"))),"null"=>1,"full_type"=>$oe[4],"inout"=>strtoupper($oe[1]),"collation"=>strtolower($oe[9]),);}if($U!="FUNCTION")return
321
-array("fields"=>$m,"definition"=>$C[11]);return
680
+as$oe){$F=str_replace("``","`",$oe[2]).$oe[3];$m[]=array("field"=>$F,"type"=>strtolower($oe[5]),"length"=>preg_replace_callback("~$Vb~s",'normalize_enum',$oe[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$oe[8] $oe[7]"))),"null"=>1,"full_type"=>$oe[4],"inout"=>strtoupper($oe[1]),"collation"=>strtolower($oe[9]),);}if($U!="FUNCTION") {
681
+	return
682
+array("fields"=>$m,"definition"=>$C[11]);
683
+}
684
+return
322 685
 array("fields"=>$m,"returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[17],"language"=>"SQL",);}function
323 686
 routines(){return
324 687
 get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
@@ -334,18 +697,42 @@  discard block
 block discarded – undo
334 697
 get_schema(){return"";}function
335 698
 set_schema($nf){return
336 699
 true;}function
337
-create_sql($Q,$ya){global$e;$K=$e->result("SHOW CREATE TABLE ".table($Q),1);if(!$ya)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function
700
+create_sql($Q,$ya){global$e;$K=$e->result("SHOW CREATE TABLE ".table($Q),1);if(!$ya) {
701
+	$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);
702
+}
703
+return$K;}function
338 704
 truncate_sql($Q){return"TRUNCATE ".table($Q);}function
339 705
 use_sql($qb){return"USE ".idf_escape($qb);}function
340
-trigger_sql($Q,$If){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L)$K.="\n".($If=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function
706
+trigger_sql($Q,$If){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($Q,"%_\\")),null,"-- ")as$L) {
707
+	$K.="\n".($If=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";
708
+}
709
+return$K;}function
341 710
 show_variables(){return
342 711
 get_key_vals("SHOW VARIABLES");}function
343 712
 process_list(){return
344 713
 get_rows("SHOW FULL PROCESSLIST");}function
345 714
 show_status(){return
346 715
 get_key_vals("SHOW STATUS");}function
347
-convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function
348
-unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function
716
+convert_field($l){if(preg_match("~binary~",$l["type"])) {
717
+	return"HEX(".idf_escape($l["field"]).")";
718
+}
719
+if($l["type"]=="bit") {
720
+	return"BIN(".idf_escape($l["field"])." + 0)";
721
+}
722
+if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) {
723
+	return"AsWKT(".idf_escape($l["field"]).")";
724
+}
725
+}function
726
+unconvert_field($l,$K){if(preg_match("~binary~",$l["type"])) {
727
+	$K="UNHEX($K)";
728
+}
729
+if($l["type"]=="bit") {
730
+	$K="CONV($K, 2, 10) + 0";
731
+}
732
+if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) {
733
+	$K="GeomFromText($K)";
734
+}
735
+return$K;}function
349 736
 support($kc){global$e;return!preg_match("~scheme|sequence|type|view_trigger".($e->server_info<5.1?"|event|partitioning".($e->server_info<5?"|routine|trigger|view":""):"")."~",$kc);}function
350 737
 kill_process($X){return
351 738
 queries("KILL ".number($X));}function
@@ -379,14 +766,31 @@  discard block
 block discarded – undo
379 766
 focus(document.getElementById(\'username\'));
380 767
 </script>
381 768
 ',"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
382
-login($pd,$we){global$y;if($y=="sqlite")return
383
-sprintf('Implement %s method to use SQLite.','login()');return
769
+login($pd,$we){global$y;if($y=="sqlite") {
770
+	return
771
+sprintf('Implement %s method to use SQLite.','login()');
772
+}
773
+return
384 774
 true;}function
385 775
 tableName($Of){return
386 776
 h($Of["Name"]);}function
387 777
 fieldName($l,$de=0){return'<span title="'.h($l["full_type"]).'">'.h($l["field"]).'</span>';}function
388
-selectLinks($Of,$P=""){echo'<p class="links">';$od=array("select"=>'Select data');if(support("table")||support("indexes"))$od["table"]='Show structure';if(support("table")){if(is_view($Of))$od["view"]='Alter view';else$od["create"]='Alter table';}if($P!==null)$od["edit"]='New item';foreach($od
389
-as$z=>$X)echo" <a href='".h(ME)."$z=".urlencode($Of["Name"]).($z=="edit"?$P:"")."'".bold(isset($_GET[$z])).">$X</a>";echo"\n";}function
778
+selectLinks($Of,$P=""){echo'<p class="links">';$od=array("select"=>'Select data');if(support("table")||support("indexes")) {
779
+	$od["table"]='Show structure';
780
+}
781
+if(support("table")){if(is_view($Of)) {
782
+	$od["view"]='Alter view';
783
+} else {
784
+	$od["create"]='Alter table';
785
+}
786
+}if($P!==null) {
787
+	$od["edit"]='New item';
788
+}
789
+foreach($od
790
+as$z=>$X) {
791
+	echo" <a href='".h(ME)."$z=".urlencode($Of["Name"]).($z=="edit"?$P:"")."'".bold(isset($_GET[$z])).">$X</a>";
792
+}
793
+echo"\n";}function
390 794
 foreignKeys($Q){return
391 795
 foreign_keys($Q);}function
392 796
 backwardKeys($Q,$Nf){return
@@ -396,7 +800,10 @@  discard block
 block discarded – undo
396 800
 rowDescription($Q){return"";}function
397 801
 rowDescriptions($M,$sc){return$M;}function
398 802
 selectLink($X,$l){}function
399
-selectVal($X,$A,$l,$ke){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary~",$l["type"])&&!preg_match("~var~",$l["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$l["type"])&&!is_utf8($X))$K=lang(array('%d byte','%d bytes'),strlen($ke));return($A?"<a href='".h($A)."'".(is_url($A)?" rel='noreferrer'":"").">$K</a>":$K);}function
803
+selectVal($X,$A,$l,$ke){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary~",$l["type"])&&!preg_match("~var~",$l["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$l["type"])&&!is_utf8($X)) {
804
+	$K=lang(array('%d byte','%d bytes'),strlen($ke));
805
+}
806
+return($A?"<a href='".h($A)."'".(is_url($A)?" rel='noreferrer'":"").">$K</a>":$K);}function
400 807
 editVal($X,$l){return$X;}function
401 808
 selectColumnsPrint($N,$d){global$xc,$_c;print_fieldset("select",'Select',$N);$t=0;$N[""]=array();foreach($N
402 809
 as$z=>$X){$X=$_GET["columns"][$z];$c=select_input(" name='columns[$t][col]' onchange='".($z!==""?"selectFieldChange(this.form)":"selectAddRow(this)").";'",$d,$X["col"]);echo"<div>".($xc||$_c?"<select name='columns[$t][fun]' onchange='helpClose();".($z!==""?"":" this.nextSibling.nextSibling.onchange();")."'".on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).">".optionlist(array(-1=>"")+array_filter(array('Functions'=>$xc,'Aggregation'=>$_c)),$X["fun"])."</select>"."($c)":$c)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
@@ -406,42 +813,136 @@  discard block
 block discarded – undo
406 813
 selectLimitPrint($_){echo"<fieldset><legend>".'Limit'."</legend><div>";echo"<input type='number' name='limit' class='size' value='".h($_)."' onchange='selectFieldChange(this.form);'>","</div></fieldset>\n";}function
407 814
 selectLengthPrint($ag){if($ag!==null){echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($ag)."'>","</div></fieldset>\n";}}function
408 815
 selectActionPrint($w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script type='text/javascript'>\n","var indexColumns = ";$d=array();foreach($w
409
-as$v){if($v["type"]!="FULLTEXT")$d[reset($v["columns"])]=1;}$d[""]=1;foreach($d
410
-as$z=>$X)json_row($z);echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}function
816
+as$v){if($v["type"]!="FULLTEXT") {
817
+	$d[reset($v["columns"])]=1;
818
+}
819
+}$d[""]=1;foreach($d
820
+as$z=>$X) {
821
+	json_row($z);
822
+}
823
+echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}function
411 824
 selectCommandPrint(){return!information_schema(DB);}function
412 825
 selectImportPrint(){return!information_schema(DB);}function
413 826
 selectEmailPrint($Qb,$d){}function
414
-selectColumnsProcess($d,$w){global$xc,$_c;$N=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$xc)||in_array($X["fun"],$_c)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$_c))$s[]=$N[$z];}}return
827
+selectColumnsProcess($d,$w){global$xc,$_c;$N=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$xc)||in_array($X["fun"],$_c)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$_c)) {
828
+	$s[]=$N[$z];
829
+}
830
+}}return
415 831
 array($N,$s);}function
416 832
 selectSearchProcess($m,$w){global$e,$y;$K=array();foreach($w
417
-as$t=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$db=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Lc=process_length($X["val"]);$db.=" ".($Lc!=""?$Lc:"(NULL)");}elseif($X["op"]=="SQL")$db=" $X[val]";elseif($X["op"]=="LIKE %%")$db=" LIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$db=" ILIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");elseif(!preg_match('~NULL$~',$X["op"]))$db.=" ".$this->processInput($m[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=idf_escape($X["col"]).$db;else{$Ya=array();foreach($m
833
+as$t=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$t]!="") {
834
+	$K[]="MATCH (".implode(", ",array_map('idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";
835
+}
836
+}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$db=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Lc=process_length($X["val"]);$db.=" ".($Lc!=""?$Lc:"(NULL)");} elseif($X["op"]=="SQL") {
837
+	$db=" $X[val]";
838
+} elseif($X["op"]=="LIKE %%") {
839
+	$db=" LIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");
840
+} elseif($X["op"]=="ILIKE %%") {
841
+	$db=" ILIKE ".$this->processInput($m[$X["col"]],"%$X[val]%");
842
+} elseif(!preg_match('~NULL$~',$X["op"])) {
843
+	$db.=" ".$this->processInput($m[$X["col"]],$X["val"]);
844
+}
845
+if($X["col"]!="") {
846
+	$K[]=idf_escape($X["col"]).$db;
847
+} else{$Ya=array();foreach($m
418 848
 as$F=>$l){$Xc=preg_match('~char|text|enum|set~',$l["type"]);if((is_numeric($X["val"])||!preg_match('~(^|[^o])int|float|double|decimal|bit~',$l["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||$Xc)){$F=idf_escape($F);$Ya[]=($y=="sql"&&$Xc&&!preg_match("~^utf8_~",$l["collation"])?"CONVERT($F USING ".charset($e).")":$F);}}$K[]=($Ya?"(".implode("$db OR ",$Ya)."$db)":"0");}}}return$K;}function
419
-selectOrderProcess($m,$w){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$K;}function
849
+selectOrderProcess($m,$w){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="") {
850
+	$K[]=(preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");
851
+}
852
+}return$K;}function
420 853
 selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
421 854
 selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function
422 855
 selectEmailProcess($Z,$sc){return
423 856
 false;}function
424 857
 selectQueryBuild($N,$Z,$s,$de,$_,$G){return"";}function
425
-messageQuery($I,$bg){global$y;restart_session();$Ec=&get_session("queries");$u="sql-".count($Ec[$_GET["db"]]);if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n...";$Ec[$_GET["db"]][]=array($I,time(),$bg);return" <span class='time'>".@date("H:i:s")."</span> <a href='#$u' onclick=\"return !toggle('$u');\">".'SQL command'."</a>"."<div id='$u' class='hidden'><pre><code class='jush-$y'>".shorten_utf8($I,1000).'</code></pre>'.($bg?" <span class='time'>($bg)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Ec[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
858
+messageQuery($I,$bg){global$y;restart_session();$Ec=&get_session("queries");$u="sql-".count($Ec[$_GET["db"]]);if(strlen($I)>1e6) {
859
+	$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n...";
860
+}
861
+$Ec[$_GET["db"]][]=array($I,time(),$bg);return" <span class='time'>".@date("H:i:s")."</span> <a href='#$u' onclick=\"return !toggle('$u');\">".'SQL command'."</a>"."<div id='$u' class='hidden'><pre><code class='jush-$y'>".shorten_utf8($I,1000).'</code></pre>'.($bg?" <span class='time'>($bg)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Ec[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
426 862
 editFunctions($l){global$Lb;$K=($l["null"]?"NULL/":"");foreach($Lb
427 863
 as$z=>$xc){if(!$z||(!isset($_GET["call"])&&(isset($_GET["select"])||where($_GET)))){foreach($xc
428
-as$ye=>$X){if(!$ye||preg_match("~$ye~",$l["type"]))$K.="/$X";}if($z&&!preg_match('~set|blob|bytea|raw|file~',$l["type"]))$K.="/SQL";}}if($l["auto_increment"]&&!isset($_GET["select"])&&!where($_GET))$K='Auto Increment';return
864
+as$ye=>$X){if(!$ye||preg_match("~$ye~",$l["type"])) {
865
+	$K.="/$X";
866
+}
867
+}if($z&&!preg_match('~set|blob|bytea|raw|file~',$l["type"])) {
868
+	$K.="/SQL";
869
+}
870
+}}if($l["auto_increment"]&&!isset($_GET["select"])&&!where($_GET)) {
871
+	$K='Auto Increment';
872
+}
873
+return
429 874
 explode("/",$K);}function
430
-editInput($Q,$l,$wa,$Y){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$wa value='-1' checked><i>".'original'."</i></label> ":"").($l["null"]?"<label><input type='radio'$wa value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$wa,$l,$Y,0);return"";}function
431
-processInput($l,$Y,$q=""){if($q=="SQL")return$Y;$F=$l["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q))$K="$q()";elseif(preg_match('~^current_(date|timestamp)$~',$q))$K=$q;elseif(preg_match('~^([+-]|\\|\\|)$~',$q))$K=idf_escape($F)." $q $K";elseif(preg_match('~^[+-] interval$~',$q))$K=idf_escape($F)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$q))$K="$q(".idf_escape($F).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q))$K="$q($K)";return
875
+editInput($Q,$l,$wa,$Y){if($l["type"]=="enum") {
876
+	return(isset($_GET["select"])?"<label><input type='radio'$wa value='-1' checked><i>".'original'."</i></label> ":"").($l["null"]?"<label><input type='radio'$wa value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$wa,$l,$Y,0);
877
+}
878
+return"";}function
879
+processInput($l,$Y,$q=""){if($q=="SQL") {
880
+	return$Y;
881
+}
882
+$F=$l["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q)) {
883
+	$K="$q()";
884
+} elseif(preg_match('~^current_(date|timestamp)$~',$q)) {
885
+	$K=$q;
886
+} elseif(preg_match('~^([+-]|\\|\\|)$~',$q)) {
887
+	$K=idf_escape($F)." $q $K";
888
+} elseif(preg_match('~^[+-] interval$~',$q)) {
889
+	$K=idf_escape($F)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$K);
890
+} elseif(preg_match('~^(addtime|subtime|concat)$~',$q)) {
891
+	$K="$q(".idf_escape($F).", $K)";
892
+} elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q)) {
893
+	$K="$q($K)";
894
+}
895
+return
432 896
 unconvert_field($l,$K);}function
433
-dumpOutput(){$K=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function
897
+dumpOutput(){$K=array('text'=>'open','file'=>'save');if(function_exists('gzencode')) {
898
+	$K['gz']='gzip';
899
+}
900
+return$K;}function
434 901
 dumpFormat(){return
435 902
 array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
436 903
 dumpDatabase($i){}function
437
-dumpTable($Q,$If,$Yc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($If)dump_csv(array_keys(fields($Q)));}else{if($Yc==2){$m=array();foreach(fields($Q)as$F=>$l)$m[]=idf_escape($F)." $l[full_type]";$g="CREATE TABLE ".table($Q)." (".implode(", ",$m).")";}else$g=create_sql($Q,$_POST["auto_increment"]);set_utf8mb4($g);if($If&&$g){if($If=="DROP+CREATE"||$Yc==1)echo"DROP ".($Yc==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($Yc==1)$g=remove_definer($g);echo"$g;\n\n";}}}function
438
-dumpData($Q,$If,$I){global$e,$y;$td=($y=="sqlite"?0:1048576);if($If){if($_POST["format"]=="sql"){if($If=="TRUNCATE+INSERT")echo
439
-truncate_sql($Q).";\n";$m=fields($Q);}$J=$e->query($I,1);if($J){$Qc="";$Ia="";$ad=array();$Kf="";$lc=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$lc()){if(!$ad){$Hg=array();foreach($L
440
-as$X){$l=$J->fetch_field();$ad[]=$l->name;$z=idf_escape($l->name);$Hg[]="$z = VALUES($z)";}$Kf=($If=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg):"").";\n";}if($_POST["format"]!="sql"){if($If=="table"){dump_csv($ad);$If="INSERT";}dump_csv($L);}else{if(!$Qc)$Qc="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$ad)).") VALUES";foreach($L
441
-as$z=>$X){$l=$m[$z];$L[$z]=($X!==null?unconvert_field($l,preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&$X!=''?$X:q($X)):"NULL");}$lf=($td?"\n":" ")."(".implode(",\t",$L).")";if(!$Ia)$Ia=$Qc.$lf;elseif(strlen($Ia)+4+strlen($lf)+strlen($Kf)<$td)$Ia.=",$lf";else{echo$Ia.$Kf;$Ia=$Qc.$lf;}}}if($Ia)echo$Ia.$Kf;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$e->error)."\n";}}function
904
+dumpTable($Q,$If,$Yc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($If) {
905
+	dump_csv(array_keys(fields($Q)));
906
+}
907
+} else{if($Yc==2){$m=array();foreach(fields($Q)as$F=>$l) {
908
+	$m[]=idf_escape($F)." $l[full_type]";
909
+}
910
+$g="CREATE TABLE ".table($Q)." (".implode(", ",$m).")";} else {
911
+	$g=create_sql($Q,$_POST["auto_increment"]);
912
+}
913
+set_utf8mb4($g);if($If&&$g){if($If=="DROP+CREATE"||$Yc==1) {
914
+	echo"DROP ".($Yc==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";
915
+}
916
+if($Yc==1) {
917
+	$g=remove_definer($g);
918
+}
919
+echo"$g;\n\n";}}}function
920
+dumpData($Q,$If,$I){global$e,$y;$td=($y=="sqlite"?0:1048576);if($If){if($_POST["format"]=="sql"){if($If=="TRUNCATE+INSERT") {
921
+	echo
922
+truncate_sql($Q).";\n";
923
+}
924
+$m=fields($Q);}$J=$e->query($I,1);if($J){$Qc="";$Ia="";$ad=array();$Kf="";$lc=($Q!=''?'fetch_assoc':'fetch_row');while($L=$J->$lc()){if(!$ad){$Hg=array();foreach($L
925
+as$X){$l=$J->fetch_field();$ad[]=$l->name;$z=idf_escape($l->name);$Hg[]="$z = VALUES($z)";}$Kf=($If=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Hg):"").";\n";}if($_POST["format"]!="sql"){if($If=="table"){dump_csv($ad);$If="INSERT";}dump_csv($L);} else{if(!$Qc) {
926
+	$Qc="INSERT INTO ".table($Q)." (".implode(", ",array_map('idf_escape',$ad)).") VALUES";
927
+}
928
+foreach($L
929
+as$z=>$X){$l=$m[$z];$L[$z]=($X!==null?unconvert_field($l,preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&$X!=''?$X:q($X)):"NULL");}$lf=($td?"\n":" ")."(".implode(",\t",$L).")";if(!$Ia) {
930
+	$Ia=$Qc.$lf;
931
+} elseif(strlen($Ia)+4+strlen($lf)+strlen($Kf)<$td) {
932
+	$Ia.=",$lf";
933
+} else{echo$Ia.$Kf;$Ia=$Qc.$lf;}}}if($Ia) {
934
+	echo$Ia.$Kf;
935
+}
936
+} elseif($_POST["format"]=="sql") {
937
+	echo"-- ".str_replace("\n"," ",$e->error)."\n";
938
+}
939
+}}function
442 940
 dumpFilename($Ic){return
443 941
 friendly_url($Ic!=""?$Ic:(SERVER!=""?SERVER:"localhost"));}function
444
-dumpHeaders($Ic,$Ed=false){$me=$_POST["output"];$gc=(preg_match('~sql~',$_POST["format"])?"sql":($Ed?"tar":"csv"));header("Content-Type: ".($me=="gz"?"application/x-gzip":($gc=="tar"?"application/x-tar":($gc=="sql"||$me!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($me=="gz")ob_start('ob_gzencode',1e6);return$gc;}function
942
+dumpHeaders($Ic,$Ed=false){$me=$_POST["output"];$gc=(preg_match('~sql~',$_POST["format"])?"sql":($Ed?"tar":"csv"));header("Content-Type: ".($me=="gz"?"application/x-gzip":($gc=="tar"?"application/x-tar":($gc=="sql"||$me!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($me=="gz") {
943
+	ob_start('ob_gzencode',1e6);
944
+}
945
+return$gc;}function
445 946
 homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return
446 947
 true;}function
447 948
 navigation($Dd){global$ga,$y,$Eb,$e;echo'<h1>
@@ -450,18 +951,38 @@  discard block
 block discarded – undo
450 951
 </h1>
451 952
 ';if($Dd=="auth"){$pc=true;foreach((array)$_SESSION["pwds"]as$Jg=>$vf){foreach($vf
452 953
 as$O=>$Fg){foreach($Fg
453
-as$V=>$we){if($we!==null){if($pc){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$pc=false;}$tb=$_SESSION["db"][$Jg][$O][$V];foreach(($tb?array_keys($tb):array(""))as$i)echo"<a href='".h(auth_url($Jg,$O,$V,$i))."'>($Eb[$Jg]) ".h($V.($O!=""?"@$O":"").($i!=""?" - $i":""))."</a><br>\n";}}}}}else{if($_GET["ns"]!==""&&!$Dd&&DB!=""){$e->select_db(DB);$S=table_status('',true);}if(support("sql")){echo'<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=jush.js&amp;version=4.2.5&amp;driver=mysql",'"></script>
954
+as$V=>$we){if($we!==null){if($pc){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$pc=false;}$tb=$_SESSION["db"][$Jg][$O][$V];foreach(($tb?array_keys($tb):array(""))as$i) {
955
+	echo"<a href='".h(auth_url($Jg,$O,$V,$i))."'>($Eb[$Jg]) ".h($V.($O!=""?"@$O":"").($i!=""?" - $i":""))."</a><br>\n";
956
+}
957
+}}}}} else{if($_GET["ns"]!==""&&!$Dd&&DB!=""){$e->select_db(DB);$S=table_status('',true);}if(support("sql")){echo'<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=jush.js&amp;version=4.2.5&amp;driver=mysql",'"></script>
454 958
 <script type="text/javascript">
455 959
 ';if($S){$od=array();foreach($S
456
-as$Q=>$U)$od[]=preg_quote($Q,'/');echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$od).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}echo'bodyLoad(\'',(is_object($e)?substr($e->server_info,0,3):""),'\');
960
+as$Q=>$U) {
961
+	$od[]=preg_quote($Q,'/');
962
+}
963
+echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$od).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X) {
964
+	echo"jushLinks.$X = jushLinks.$y;\n";
965
+}
966
+}echo'bodyLoad(\'',(is_object($e)?substr($e->server_info,0,3):""),'\');
457 967
 </script>
458
-';}$this->databasesPrint($Dd);if(DB==""||!$Dd){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>\n":"")."";if(support("dump"))echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>\n";}if($_GET["ns"]!==""&&!$Dd&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>\n";if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function
968
+';}$this->databasesPrint($Dd);if(DB==""||!$Dd){echo"<p class='links'>".(support("sql")?"<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>\n<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>\n":"")."";if(support("dump")) {
969
+	echo"<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>\n";
970
+}
971
+}if($_GET["ns"]!==""&&!$Dd&&DB!=""){echo'<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>\n";if(!$S) {
972
+	echo"<p class='message'>".'No tables.'."\n";
973
+} else {
974
+	$this->tablesPrint($S);
975
+}
976
+}}}function
459 977
 databasesPrint($Dd){global$b,$e;$h=$this->databases();echo'<form action="">
460 978
 <p id="dbs">
461 979
 ';hidden_fields_get();$rb=" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'";echo"<span title='".'database'."'>DB</span>: ".($h?"<select name='db'$rb>".optionlist(array(""=>"")+$h,DB)."</select>":'<input name="db" value="'.h(DB).'" autocapitalize="off">'),"<input type='submit' value='".'Use'."'".($h?" class='hidden'":"").">\n";if($Dd!="db"&&DB!=""&&$e->select_db(DB)){}echo(isset($_GET["sql"])?'<input type="hidden" name="sql" value="">':(isset($_GET["schema"])?'<input type="hidden" name="schema" value="">':(isset($_GET["dump"])?'<input type="hidden" name="dump" value="">':(isset($_GET["privileges"])?'<input type="hidden" name="privileges" value="">':"")))),"</p></form>\n";}function
462 980
 tablesPrint($S){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($S
463 981
 as$Q=>$Df){echo'<a href="'.h(ME).'select='.urlencode($Q).'"'.bold($_GET["select"]==$Q||$_GET["edit"]==$Q,"select").">".'select'."</a> ";$F=$this->tableName($Df);echo(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($Q).'"'.bold(in_array($Q,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(is_view($Df)?"view":""),"structure")." title='".'Show structure'."'>$F</a>":"<span>$F</span>")."<br>\n";}}}$b=(function_exists('adminer_object')?adminer_object():new
464
-Adminer);if($b->operators===null)$b->operators=$Zd;function
982
+Adminer);if($b->operators===null) {
983
+	$b->operators=$Zd;
984
+}
985
+function
465 986
 page_header($eg,$k="",$Ha=array(),$fg=""){global$ca,$ga,$b,$Eb,$y;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$gg=$eg.($fg!=""?": $fg":"");$hg=strip_tags($gg.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
466 987
 <html lang="en" dir="ltr">
467 988
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
@@ -485,10 +1006,27 @@  discard block
 block discarded – undo
485 1006
 <div id="help" class="jush-',$y,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
486 1007
 
487 1008
 <div id="content">
488
-';if($Ha!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$Eb[DRIVER].'</a> &raquo; ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ha===false)echo"$O\n";else{echo"<a href='".($A?h($A):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ha)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';if(is_array($Ha)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';foreach($Ha
489
-as$z=>$X){$xb=(is_array($X)?$X[1]:h($X));if($xb!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$xb</a> &raquo; ";}}echo"$eg\n";}}echo"<h2>$gg</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$h=&get_session("dbs");if(DB!=""&&$h&&!in_array(DB,$h,true))$h=null;stop_session();define("PAGE_HEADER",1);}function
1009
+';if($Ha!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?$A:".").'">'.$Eb[DRIVER].'</a> &raquo; ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ha===false) {
1010
+	echo"$O\n";
1011
+} else{echo"<a href='".($A?h($A):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ha))) {
1012
+	echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';
1013
+}
1014
+if(is_array($Ha)){if($_GET["ns"]!="") {
1015
+	echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';
1016
+}
1017
+foreach($Ha
1018
+as$z=>$X){$xb=(is_array($X)?$X[1]:h($X));if($xb!="") {
1019
+	echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$xb</a> &raquo; ";
1020
+}
1021
+}}echo"$eg\n";}}echo"<h2>$gg</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$h=&get_session("dbs");if(DB!=""&&$h&&!in_array(DB,$h,true)) {
1022
+	$h=null;
1023
+}
1024
+stop_session();define("PAGE_HEADER",1);}function
490 1025
 page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function
491
-page_messages($k){$Bg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Bd=$_SESSION["messages"][$Bg];if($Bd){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Bd)."</div>\n";unset($_SESSION["messages"][$Bg]);}if($k)echo"<div class='error'>$k</div>\n";}function
1026
+page_messages($k){$Bg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Bd=$_SESSION["messages"][$Bg];if($Bd){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Bd)."</div>\n";unset($_SESSION["messages"][$Bg]);}if($k) {
1027
+	echo"<div class='error'>$k</div>\n";
1028
+}
1029
+}function
492 1030
 page_footer($Dd=""){global$b,$T;echo'</div>
493 1031
 
494 1032
 ';if($Dd!="auth"){echo'<form action="" method="post">
@@ -501,41 +1039,140 @@  discard block
 block discarded – undo
501 1039
 ';$b->navigation($Dd);echo'</div>
502 1040
 <script type="text/javascript">setupSubmitHighlight(document);</script>
503 1041
 ';}function
504
-int32($E){while($E>=2147483648)$E-=4294967296;while($E<=-2147483649)$E+=4294967296;return(int)$E;}function
1042
+int32($E){while($E>=2147483648) {
1043
+	$E-=4294967296;
1044
+}
1045
+while($E<=-2147483649) {
1046
+	$E+=4294967296;
1047
+}
1048
+return(int)$E;}function
505 1049
 long2str($W,$Ng){$lf='';foreach($W
506
-as$X)$lf.=pack('V',$X);if($Ng)return
507
-substr($lf,0,end($W));return$lf;}function
508
-str2long($lf,$Ng){$W=array_values(unpack('V*',str_pad($lf,4*ceil(strlen($lf)/4),"\0")));if($Ng)$W[]=strlen($lf);return$W;}function
1050
+as$X) {
1051
+	$lf.=pack('V',$X);
1052
+}
1053
+if($Ng) {
1054
+	return
1055
+substr($lf,0,end($W));
1056
+}
1057
+return$lf;}function
1058
+str2long($lf,$Ng){$W=array_values(unpack('V*',str_pad($lf,4*ceil(strlen($lf)/4),"\0")));if($Ng) {
1059
+	$W[]=strlen($lf);
1060
+}
1061
+return$W;}function
509 1062
 xxtea_mx($Sg,$Rg,$Lf,$Zc){return
510 1063
 int32((($Sg>>5&0x7FFFFFF)^$Rg<<2)+(($Rg>>3&0x1FFFFFFF)^$Sg<<4))^int32(($Lf^$Rg)+($Zc^$Sg));}function
511
-encrypt_string($Ff,$z){if($Ff=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,true);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=0;while($H-->0){$Lf=int32($Lf+0x9E3779B9);$Kb=$Lf>>2&3;for($ne=0;$ne<$E;$ne++){$Rg=$W[$ne+1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$ne]+$Fd);$W[$ne]=$Sg;}$Rg=$W[0];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$E]+$Fd);$W[$E]=$Sg;}return
1064
+encrypt_string($Ff,$z){if($Ff=="") {
1065
+	return"";
1066
+}
1067
+$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,true);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=0;while($H-->0){$Lf=int32($Lf+0x9E3779B9);$Kb=$Lf>>2&3;for($ne=0;$ne<$E;$ne++){$Rg=$W[$ne+1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$ne]+$Fd);$W[$ne]=$Sg;}$Rg=$W[0];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Sg=int32($W[$E]+$Fd);$W[$E]=$Sg;}return
512 1068
 long2str($W,false);}function
513
-decrypt_string($Ff,$z){if($Ff=="")return"";if(!$z)return
514
-false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,false);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=int32($H*0x9E3779B9);while($Lf){$Kb=$Lf>>2&3;for($ne=$E;$ne>0;$ne--){$Sg=$W[$ne-1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[$ne]-$Fd);$W[$ne]=$Rg;}$Sg=$W[$E];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[0]-$Fd);$W[0]=$Rg;$Lf=int32($Lf-0x9E3779B9);}return
515
-long2str($W,true);}$e='';$Dc=$_SESSION["token"];if(!$Dc)$_SESSION["token"]=rand(1,1e6);$T=get_token();$ze=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$ze[$z]=$X;}}function
516
-add_invalid_login(){global$b;$nc=get_temp_dir()."/adminer.invalid";$p=@fopen($nc,"r+");if(!$p){$p=@fopen($nc,"w");if(!$p)return;}flock($p,LOCK_EX);$Tc=unserialize(stream_get_contents($p));$bg=time();if($Tc){foreach($Tc
517
-as$Uc=>$X){if($X[0]<$bg)unset($Tc[$Uc]);}}$Sc=&$Tc[$b->bruteForceKey()];if(!$Sc)$Sc=array($bg+30*60,0);$Sc[1]++;$tf=serialize($Tc);rewind($p);fwrite($p,$tf);ftruncate($p,strlen($tf));flock($p,LOCK_UN);fclose($p);}$xa=$_POST["auth"];if($xa){$Tc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Sc=$Tc[$b->bruteForceKey()];$Kd=($Sc[1]>30?$Sc[0]-time():0);if($Kd>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Kd/60)));session_regenerate_id();$Jg=$xa["driver"];$O=$xa["server"];$V=$xa["username"];$we=(string)$xa["password"];$i=$xa["db"];set_password($Jg,$O,$V,$we);$_SESSION["db"][$Jg][$O][$V][$i]=true;if($xa["permanent"]){$z=base64_encode($Jg)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($i);$Je=$b->permanentLogin(true);$ze[$z]="$z:".base64_encode($Je?encrypt_string($we,$Je):"");cookie("adminer_permanent",implode(" ",$ze));}if(count($_POST)==1||DRIVER!=$Jg||SERVER!=$O||$_GET["username"]!==$V||DB!=$i)redirect(auth_url($Jg,$O,$V,$i));}elseif($_POST["logout"]){if($Dc&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($ze&&!$_SESSION["pwds"]){session_regenerate_id();$Je=$b->permanentLogin();foreach($ze
1069
+decrypt_string($Ff,$z){if($Ff=="") {
1070
+	return"";
1071
+}
1072
+if(!$z) {
1073
+	return
1074
+false;
1075
+}
1076
+$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Ff,false);$E=count($W)-1;$Sg=$W[$E];$Rg=$W[0];$H=floor(6+52/($E+1));$Lf=int32($H*0x9E3779B9);while($Lf){$Kb=$Lf>>2&3;for($ne=$E;$ne>0;$ne--){$Sg=$W[$ne-1];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[$ne]-$Fd);$W[$ne]=$Rg;}$Sg=$W[$E];$Fd=xxtea_mx($Sg,$Rg,$Lf,$z[$ne&3^$Kb]);$Rg=int32($W[0]-$Fd);$W[0]=$Rg;$Lf=int32($Lf-0x9E3779B9);}return
1077
+long2str($W,true);}$e='';$Dc=$_SESSION["token"];if(!$Dc) {
1078
+	$_SESSION["token"]=rand(1,1e6);
1079
+}
1080
+$T=get_token();$ze=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$ze[$z]=$X;}}function
1081
+add_invalid_login(){global$b;$nc=get_temp_dir()."/adminer.invalid";$p=@fopen($nc,"r+");if(!$p){$p=@fopen($nc,"w");if(!$p) {
1082
+	return;
1083
+}
1084
+}flock($p,LOCK_EX);$Tc=unserialize(stream_get_contents($p));$bg=time();if($Tc){foreach($Tc
1085
+as$Uc=>$X){if($X[0]<$bg) {
1086
+	unset($Tc[$Uc]);
1087
+}
1088
+}}$Sc=&$Tc[$b->bruteForceKey()];if(!$Sc) {
1089
+	$Sc=array($bg+30*60,0);
1090
+}
1091
+$Sc[1]++;$tf=serialize($Tc);rewind($p);fwrite($p,$tf);ftruncate($p,strlen($tf));flock($p,LOCK_UN);fclose($p);}$xa=$_POST["auth"];if($xa){$Tc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Sc=$Tc[$b->bruteForceKey()];$Kd=($Sc[1]>30?$Sc[0]-time():0);if($Kd>0) {
1092
+	auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Kd/60)));
1093
+}
1094
+session_regenerate_id();$Jg=$xa["driver"];$O=$xa["server"];$V=$xa["username"];$we=(string)$xa["password"];$i=$xa["db"];set_password($Jg,$O,$V,$we);$_SESSION["db"][$Jg][$O][$V][$i]=true;if($xa["permanent"]){$z=base64_encode($Jg)."-".base64_encode($O)."-".base64_encode($V)."-".base64_encode($i);$Je=$b->permanentLogin(true);$ze[$z]="$z:".base64_encode($Je?encrypt_string($we,$Je):"");cookie("adminer_permanent",implode(" ",$ze));}if(count($_POST)==1||DRIVER!=$Jg||SERVER!=$O||$_GET["username"]!==$V||DB!=$i) {
1095
+	redirect(auth_url($Jg,$O,$V,$i));
1096
+}
1097
+} elseif($_POST["logout"]){if($Dc&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;} else{foreach(array("pwds","db","dbs","queries")as$z) {
1098
+	set_session($z,null);
1099
+}
1100
+unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}} elseif($ze&&!$_SESSION["pwds"]){session_regenerate_id();$Je=$b->permanentLogin();foreach($ze
518 1101
 as$z=>$X){list(,$Qa)=explode(":",$X);list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));set_password($Jg,$O,$V,decrypt_string(base64_decode($Qa),$Je));$_SESSION["db"][$Jg][$O][$V][$i]=true;}}function
519 1102
 unset_permanent(){global$ze;foreach($ze
520
-as$z=>$X){list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));if($Jg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$i==DB)unset($ze[$z]);}cookie("adminer_permanent",implode(" ",$ze));}function
521
-auth_error($k){global$b,$Dc;$k=h($k);$wf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$wf]||$_GET[$wf])&&!$Dc)$k='Session expired, please login again.';else{add_invalid_login();$we=get_password();if($we!==null){if($we===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$wf]&&$_GET[$wf]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$pe=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$pe["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Ee)),false);page_footer("auth");exit;}$e=connect();}$j=new
522
-Min_Driver($e);if(!is_object($e)||($pd=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($e)?$e:(is_string($pd)?$pd:'Invalid credentials.')));if($xa&&$_POST["token"])$_POST["token"]=$T;$k='';if($_POST){if(!verify_token()){$Nc="max_input_vars";$xd=ini_get($Nc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$xd||$X<$xd)){$Nc=$z;$xd=$X;}}}$k=(!$_POST["token"]&&$xd?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Nc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function
523
-select($J,$f=null,$ge=array(),$_=0){global$y;$od=array();$w=array();$d=array();$Fa=array();$tg=array();$K=array();odd('');for($t=0;(!$_||$t<$_)&&($L=$J->fetch_row());$t++){if(!$t){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($x=0;$x<count($L);$x++){$l=$J->fetch_field();$F=$l->name;$fe=$l->orgtable;$ee=$l->orgname;$K[$l->table]=$fe;if($ge&&$y=="sql")$od[$x]=($F=="table"?"table=":($F=="possible_keys"?"indexes=":null));elseif($fe!=""){if(!isset($w[$fe])){$w[$fe]=array();foreach(indexes($fe,$f)as$v){if($v["type"]=="PRIMARY"){$w[$fe]=array_flip($v["columns"]);break;}}$d[$fe]=$w[$fe];}if(isset($d[$fe][$ee])){unset($d[$fe][$ee]);$w[$fe][$ee]=$x;$od[$x]=$fe;}}if($l->charsetnr==63)$Fa[$x]=true;$tg[$x]=$l->type;echo"<th".($fe!=""||$l->name!=$ee?" title='".h(($fe!=""?"$fe.":"").$ee)."'":"").">".h($F).($ge?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($F))):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($L
524
-as$z=>$X){if($X===null)$X="<i>NULL</i>";elseif($Fa[$z]&&!is_utf8($X))$X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>";elseif(!strlen($X))$X="&nbsp;";else{$X=h($X);if($tg[$z]==254)$X="<code>$X</code>";}if(isset($od[$z])&&!$d[$od[$z]]){if($ge&&$y=="sql"){$Q=$L[array_search("table=",$od)];$A=$od[$z].urlencode($ge[$Q]!=""?$ge[$Q]:$Q);}else{$A="edit=".urlencode($od[$z]);foreach($w[$od[$z]]as$Ua=>$x)$A.="&where".urlencode("[".bracket_escape($Ua)."]")."=".urlencode($L[$x]);}$X="<a href='".h(ME.$A)."'>$X</a>";}echo"<td>$X";}}echo($t?"</table>":"<p class='message'>".'No rows.')."\n";return$K;}function
1103
+as$z=>$X){list($Jg,$O,$V,$i)=array_map('base64_decode',explode("-",$z));if($Jg==DRIVER&&$O==SERVER&&$V==$_GET["username"]&&$i==DB) {
1104
+	unset($ze[$z]);
1105
+}
1106
+}cookie("adminer_permanent",implode(" ",$ze));}function
1107
+auth_error($k){global$b,$Dc;$k=h($k);$wf=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$wf]||$_GET[$wf])&&!$Dc) {
1108
+	$k='Session expired, please login again.';
1109
+} else{add_invalid_login();$we=get_password();if($we!==null){if($we===false) {
1110
+	$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');
1111
+}
1112
+set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$wf]&&$_GET[$wf]&&ini_bool("session.use_only_cookies")) {
1113
+	$k='Session support must be enabled.';
1114
+}
1115
+$pe=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$pe["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Ee)),false);page_footer("auth");exit;}$e=connect();}$j=new
1116
+Min_Driver($e);if(!is_object($e)||($pd=$b->login($_GET["username"],get_password()))!==true) {
1117
+	auth_error((is_string($e)?$e:(is_string($pd)?$pd:'Invalid credentials.')));
1118
+}
1119
+if($xa&&$_POST["token"]) {
1120
+	$_POST["token"]=$T;
1121
+}
1122
+$k='';if($_POST){if(!verify_token()){$Nc="max_input_vars";$xd=ini_get($Nc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$xd||$X<$xd)){$Nc=$z;$xd=$X;}}}$k=(!$_POST["token"]&&$xd?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Nc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}} elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"])) {
1123
+	$k.=' '.'You can upload a big SQL file via FTP and import it from server.';
1124
+}
1125
+}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false) {
1126
+	session_write_close();
1127
+}
1128
+function
1129
+select($J,$f=null,$ge=array(),$_=0){global$y;$od=array();$w=array();$d=array();$Fa=array();$tg=array();$K=array();odd('');for($t=0;(!$_||$t<$_)&&($L=$J->fetch_row());$t++){if(!$t){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($x=0;$x<count($L);$x++){$l=$J->fetch_field();$F=$l->name;$fe=$l->orgtable;$ee=$l->orgname;$K[$l->table]=$fe;if($ge&&$y=="sql") {
1130
+	$od[$x]=($F=="table"?"table=":($F=="possible_keys"?"indexes=":null));
1131
+} elseif($fe!=""){if(!isset($w[$fe])){$w[$fe]=array();foreach(indexes($fe,$f)as$v){if($v["type"]=="PRIMARY"){$w[$fe]=array_flip($v["columns"]);break;}}$d[$fe]=$w[$fe];}if(isset($d[$fe][$ee])){unset($d[$fe][$ee]);$w[$fe][$ee]=$x;$od[$x]=$fe;}}if($l->charsetnr==63) {
1132
+	$Fa[$x]=true;
1133
+}
1134
+$tg[$x]=$l->type;echo"<th".($fe!=""||$l->name!=$ee?" title='".h(($fe!=""?"$fe.":"").$ee)."'":"").">".h($F).($ge?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($F))):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($L
1135
+as$z=>$X){if($X===null) {
1136
+	$X="<i>NULL</i>";
1137
+} elseif($Fa[$z]&&!is_utf8($X)) {
1138
+	$X="<i>".lang(array('%d byte','%d bytes'),strlen($X))."</i>";
1139
+} elseif(!strlen($X)) {
1140
+	$X="&nbsp;";
1141
+} else{$X=h($X);if($tg[$z]==254) {
1142
+	$X="<code>$X</code>";
1143
+}
1144
+}if(isset($od[$z])&&!$d[$od[$z]]){if($ge&&$y=="sql"){$Q=$L[array_search("table=",$od)];$A=$od[$z].urlencode($ge[$Q]!=""?$ge[$Q]:$Q);} else{$A="edit=".urlencode($od[$z]);foreach($w[$od[$z]]as$Ua=>$x) {
1145
+	$A.="&where".urlencode("[".bracket_escape($Ua)."]")."=".urlencode($L[$x]);
1146
+}
1147
+}$X="<a href='".h(ME.$A)."'>$X</a>";}echo"<td>$X";}}echo($t?"</table>":"<p class='message'>".'No rows.')."\n";return$K;}function
525 1148
 referencable_primary($rf){$K=array();foreach(table_status('',true)as$Pf=>$Q){if($Pf!=$rf&&fk_support($Q)){foreach(fields($Pf)as$l){if($l["primary"]){if($K[$Pf]){unset($K[$Pf]);break;}$K[$Pf]=$l;}}}}return$K;}function
526 1149
 textarea($F,$Y,$M=10,$Ya=80){global$y;echo"<textarea name='$F' rows='$M' cols='$Ya' class='sqlarea jush-$y' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
527
-as$X)echo
528
-h($X[0])."\n\n\n";}else
1150
+as$X) {
1151
+	echo
1152
+h($X[0])."\n\n\n";
1153
+}
1154
+} else {
1155
+	echo
1156
+h($Y);
1157
+}
1158
+echo"</textarea>";}function
1159
+edit_type($z,$l,$Xa,$o=array()){global$Hf,$tg,$_g,$Vd;$U=$l["type"];echo'<td><select name="',h($z),'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',on_help("getTarget(event).value",1),'>';if($U&&!isset($tg[$U])&&!isset($o[$U])) {
1160
+	array_unshift($Hf,$U);
1161
+}
1162
+if($o) {
1163
+	$Hf['Foreign keys']=$o;
1164
+}
529 1165
 echo
530
-h($Y);echo"</textarea>";}function
531
-edit_type($z,$l,$Xa,$o=array()){global$Hf,$tg,$_g,$Vd;$U=$l["type"];echo'<td><select name="',h($z),'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',on_help("getTarget(event).value",1),'>';if($U&&!isset($tg[$U])&&!isset($o[$U]))array_unshift($Hf,$U);if($o)$Hf['Foreign keys']=$o;echo
532 1166
 optionlist($Hf,$U),'</select>
533 1167
 <td><input name="',h($z),'[length]" value="',h($l["length"]),'" size="3" onfocus="editingLengthFocus(this);"',(!$l["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":""),' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">';echo"<select name='".h($z)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'").'><option value="">('.'collation'.')'.optionlist($Xa,$l["collation"]).'</select>',($_g?"<select name='".h($z)."[unsigned]'".(!$U||preg_match('~((^|[^o])int|float|double|decimal)$~',$U)?"":" class='hidden'").'><option>'.optionlist($_g,$l["unsigned"]).'</select>':''),(isset($l['on_update'])?"<select name='".h($z)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),$l["on_update"]).'</select>':''),($o?"<select name='".h($z)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",$Vd),$l["on_delete"])."</select> ":" ");}function
534 1168
 process_length($ld){global$Vb;return(preg_match("~^\\s*\\(?\\s*$Vb(?:\\s*,\\s*$Vb)*+\\s*\\)?\\s*\$~",$ld)&&preg_match_all("~$Vb~",$ld,$rd)?"(".implode(",",$rd[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$ld)));}function
535 1169
 process_type($l,$Va="COLLATE"){global$_g;return" $l[type]".process_length($l["length"]).(preg_match('~(^|[^o])int|float|double|decimal~',$l["type"])&&in_array($l["unsigned"],$_g)?" $l[unsigned]":"").(preg_match('~char|text|enum|set~',$l["type"])&&$l["collation"]?" $Va ".q($l["collation"]):"");}function
536 1170
 process_field($l,$rg){global$y;$vb=$l["default"];return
537 1171
 array(idf_escape(trim($l["field"])),process_type($rg),($l["null"]?" NULL":" NOT NULL"),(isset($vb)?" DEFAULT ".((preg_match('~time~',$l["type"])&&preg_match('~^CURRENT_TIMESTAMP$~i',$vb))||($y=="sqlite"&&preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i',$vb))||($l["type"]=="bit"&&preg_match("~^([0-9]+|b'[0-1]+')\$~",$vb))||($y=="pgsql"&&preg_match("~^[a-z]+\\(('[^']*')+\\)\$~",$vb))?$vb:q($vb)):""),(preg_match('~timestamp|datetime~',$l["type"])&&$l["on_update"]?" ON UPDATE $l[on_update]":""),(support("comment")&&$l["comment"]!=""?" COMMENT ".q($l["comment"]):""),($l["auto_increment"]?auto_increment():null),);}function
538
-type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$U))return" class='$z'";}}function
1172
+type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$U)) {
1173
+	return" class='$z'";
1174
+}
1175
+}}function
539 1176
 edit_fields($m,$Xa,$U="TABLE",$o=array(),$cb=false){global$e,$Oc;$m=array_values($m);echo'<thead><tr class="wrap">
540 1177
 ';if($U=="PROCEDURE"){echo'<td>&nbsp;';}echo'<th>',($U=="TABLE"?'Column name':'Parameter name'),'<td>Type<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
541 1178
 <td>Length
@@ -553,42 +1190,122 @@  discard block
 block discarded – undo
553 1190
 checkbox("fields[$t][has_default]",1,$l["has_default"]),'<input name="fields[',$t,'][default]" value="',h($l["default"]),'" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;">
554 1191
 ',(support("comment")?"<td".($cb?"":" class='hidden'")."><input name='fields[$t][comment]' value='".h($l["comment"])."' maxlength='".($e->server_info>=5.5?1024:255)."'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='".'Add next'."' onclick='return !editingAddRow(this, 1);'>&nbsp;"."<input type='image' class='icon' name='up[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=up.gif&amp;version=4.2.5&amp;driver=mysql' alt='^' title='".'Move up'."'>&nbsp;"."<input type='image' class='icon' name='down[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=down.gif&amp;version=4.2.5&amp;driver=mysql' alt='v' title='".'Move down'."'>&nbsp;":""),($he==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$t]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&amp;version=4.2.5&amp;driver=mysql' alt='x' title='".'Remove'."' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">":""),"\n";}}function
555 1192
 process_fields(&$m){ksort($m);$Od=0;if($_POST["up"]){$fd=0;foreach($m
556
-as$z=>$l){if(key($_POST["up"])==$z){unset($m[$z]);array_splice($m,$fd,0,array($l));break;}if(isset($l["field"]))$fd=$Od;$Od++;}}elseif($_POST["down"]){$uc=false;foreach($m
557
-as$z=>$l){if(isset($l["field"])&&$uc){unset($m[key($_POST["down"])]);array_splice($m,$Od,0,array($uc));break;}if(key($_POST["down"])==$z)$uc=$l;$Od++;}}elseif($_POST["add"]){$m=array_values($m);array_splice($m,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
558
-false;return
1193
+as$z=>$l){if(key($_POST["up"])==$z){unset($m[$z]);array_splice($m,$fd,0,array($l));break;}if(isset($l["field"])) {
1194
+	$fd=$Od;
1195
+}
1196
+$Od++;}} elseif($_POST["down"]){$uc=false;foreach($m
1197
+as$z=>$l){if(isset($l["field"])&&$uc){unset($m[key($_POST["down"])]);array_splice($m,$Od,0,array($uc));break;}if(key($_POST["down"])==$z) {
1198
+	$uc=$l;
1199
+}
1200
+$Od++;}} elseif($_POST["add"]){$m=array_values($m);array_splice($m,key($_POST["add"]),0,array(array()));} elseif(!$_POST["drop_col"]) {
1201
+	return
1202
+false;
1203
+}
1204
+return
559 1205
 true;}function
560 1206
 normalize_enum($C){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),'\\'))."'";}function
561
-grant($r,$Le,$d,$Ud){if(!$Le)return
562
-true;if($Le==array("ALL PRIVILEGES","GRANT OPTION"))return($r=="GRANT"?queries("$r ALL PRIVILEGES$Ud WITH GRANT OPTION"):queries("$r ALL PRIVILEGES$Ud")&&queries("$r GRANT OPTION$Ud"));return
1207
+grant($r,$Le,$d,$Ud){if(!$Le) {
1208
+	return
1209
+true;
1210
+}
1211
+if($Le==array("ALL PRIVILEGES","GRANT OPTION")) {
1212
+	return($r=="GRANT"?queries("$r ALL PRIVILEGES$Ud WITH GRANT OPTION"):queries("$r ALL PRIVILEGES$Ud")&&queries("$r GRANT OPTION$Ud"));
1213
+}
1214
+return
563 1215
 queries("$r ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$d, ",$Le).$d).$Ud);}function
564
-drop_create($Fb,$g,$Gb,$Yf,$Hb,$B,$Ad,$zd,$_d,$Rd,$Id){if($_POST["drop"])query_redirect($Fb,$B,$Ad);elseif($Rd=="")query_redirect($g,$B,$_d);elseif($Rd!=$Id){$lb=queries($g);queries_redirect($B,$zd,$lb&&queries($Fb));if($lb)queries($Gb);}else
565
-queries_redirect($B,$zd,queries($Yf)&&queries($Hb)&&queries($Fb)&&queries($g));}function
1216
+drop_create($Fb,$g,$Gb,$Yf,$Hb,$B,$Ad,$zd,$_d,$Rd,$Id){if($_POST["drop"]) {
1217
+	query_redirect($Fb,$B,$Ad);
1218
+} elseif($Rd=="") {
1219
+	query_redirect($g,$B,$_d);
1220
+} elseif($Rd!=$Id){$lb=queries($g);queries_redirect($B,$zd,$lb&&queries($Fb));if($lb) {
1221
+	queries($Gb);
1222
+}
1223
+} else {
1224
+	queries_redirect($B,$zd,queries($Yf)&&queries($Hb)&&queries($Fb)&&queries($g));
1225
+}
1226
+}function
566 1227
 create_trigger($Ud,$L){global$y;$dg=" $L[Timing] $L[Event]".($L["Event"]=="UPDATE OF"?" ".idf_escape($L["Of"]):"");return"CREATE TRIGGER ".idf_escape($L["Trigger"]).($y=="mssql"?$Ud.$dg:$dg.$Ud).rtrim(" $L[Type]\n$L[Statement]",";").";";}function
567 1228
 create_routine($if,$L){global$Oc;$P=array();$m=(array)$L["fields"];ksort($m);foreach($m
568
-as$l){if($l["field"]!="")$P[]=(preg_match("~^($Oc)\$~",$l["inout"])?"$l[inout] ":"").idf_escape($l["field"]).process_type($l,"CHARACTER SET");}return"CREATE $if ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").rtrim("\n$L[definition]",";").";";}function
1229
+as$l){if($l["field"]!="") {
1230
+	$P[]=(preg_match("~^($Oc)\$~",$l["inout"])?"$l[inout] ":"").idf_escape($l["field"]).process_type($l,"CHARACTER SET");
1231
+}
1232
+}return"CREATE $if ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").rtrim("\n$L[definition]",";").";";}function
569 1233
 remove_definer($I){return
570 1234
 preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$I);}function
571 1235
 format_foreign_key($n){global$Vd;return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$n["source"])).") REFERENCES ".table($n["table"])." (".implode(", ",array_map('idf_escape',$n["target"])).")".(preg_match("~^($Vd)\$~",$n["on_delete"])?" ON DELETE $n[on_delete]":"").(preg_match("~^($Vd)\$~",$n["on_update"])?" ON UPDATE $n[on_update]":"");}function
572
-tar_file($nc,$ig){$K=pack("a100a8a8a8a12a12",$nc,644,0,0,decoct($ig->size),decoct(time()));$Pa=8*32;for($t=0;$t<strlen($K);$t++)$Pa+=ord($K[$t]);$K.=sprintf("%06o",$Pa)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$ig->send();echo
1236
+tar_file($nc,$ig){$K=pack("a100a8a8a8a12a12",$nc,644,0,0,decoct($ig->size),decoct(time()));$Pa=8*32;for($t=0;$t<strlen($K);$t++) {
1237
+	$Pa+=ord($K[$t]);
1238
+}
1239
+$K.=sprintf("%06o",$Pa)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$ig->send();echo
573 1240
 str_repeat("\0",511-($ig->size+511)%512);}function
574 1241
 ini_bytes($Nc){$X=ini_get($Nc);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
575 1242
 doc_link($xe){global$y,$e;$Cg=array('sql'=>"http://dev.mysql.com/doc/refman/".substr($e->server_info,0,3)."/en/",'sqlite'=>"http://www.sqlite.org/",'pgsql'=>"http://www.postgresql.org/docs/".substr($e->server_info,0,3)."/static/",'mssql'=>"http://msdn.microsoft.com/library/",'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);return($xe[$y]?"<a href='$Cg[$y]$xe[$y]' target='_blank' rel='noreferrer'><sup>?</sup></a>":"");}function
576 1243
 ob_gzencode($Gf){return
577 1244
 gzencode($Gf);}function
578
-db_size($i){global$e;if(!$e->select_db($i))return"?";$K=0;foreach(table_status()as$R)$K+=$R["Data_length"]+$R["Index_length"];return
1245
+db_size($i){global$e;if(!$e->select_db($i)) {
1246
+	return"?";
1247
+}
1248
+$K=0;foreach(table_status()as$R) {
1249
+	$K+=$R["Data_length"]+$R["Index_length"];
1250
+}
1251
+return
579 1252
 format_number($K);}function
580 1253
 set_utf8mb4($g){global$e;static$P=false;if(!$P&&preg_match('~\butf8mb4~i',$g)){$P=true;echo"SET NAMES ".charset($e).";\n\n";}}function
581
-connect_error(){global$b,$e,$T,$k,$Eb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$k)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$k,false);echo"<p class='links'>\n";foreach(array('database'=>'Create new database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$z=>$X){if(support($z))echo"<a href='".h(ME)."$z='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',$Eb[DRIVER],"<b>".h($e->server_info)."</b>","<b>$e->extension</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$h=$b->databases();if($h){$of=support("scheme");$Xa=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(support("database")?"<td>&nbsp;":"")."<th>".'Database'." - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>"."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1' onclick=\"return !ajaxSetHtml('".h(js_escape(ME))."script=connect');\">".'Compute'."</a>"."</thead>\n";$h=($_GET["dbsize"]?count_tables($h):array_flip($h));foreach($h
582
-as$i=>$S){$hf=h(ME)."db=".urlencode($i);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$i,in_array($i,(array)$_POST["db"])):""),"<th><a href='$hf'>".h($i)."</a>";$Wa=nbsp(db_collation($i,$Xa));echo"<td>".(support("database")?"<a href='$hf".($of?"&amp;ns=":"")."&amp;database=' title='".'Alter database'."'>$Wa</a>":$Wa),"<td align='right'><a href='$hf&amp;schema=' id='tables-".h($i)."' title='".'Database schema'."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($i)."'>".($_GET["dbsize"]?db_size($i):"?"),"\n";}echo"</table>\n",(support("database")?"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n"."<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$e->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Vd="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
1254
+connect_error(){global$b,$e,$T,$k,$Eb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);} else{if($_POST["db"]&&!$k) {
1255
+	queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));
1256
+}
1257
+page_header('Select database',$k,false);echo"<p class='links'>\n";foreach(array('database'=>'Create new database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$z=>$X){if(support($z)) {
1258
+	echo"<a href='".h(ME)."$z='>$X</a>\n";
1259
+}
1260
+}echo"<p>".sprintf('%s version: %s through PHP extension %s',$Eb[DRIVER],"<b>".h($e->server_info)."</b>","<b>$e->extension</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$h=$b->databases();if($h){$of=support("scheme");$Xa=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(support("database")?"<td>&nbsp;":"")."<th>".'Database'." - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>"."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1' onclick=\"return !ajaxSetHtml('".h(js_escape(ME))."script=connect');\">".'Compute'."</a>"."</thead>\n";$h=($_GET["dbsize"]?count_tables($h):array_flip($h));foreach($h
1261
+as$i=>$S){$hf=h(ME)."db=".urlencode($i);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$i,in_array($i,(array)$_POST["db"])):""),"<th><a href='$hf'>".h($i)."</a>";$Wa=nbsp(db_collation($i,$Xa));echo"<td>".(support("database")?"<a href='$hf".($of?"&amp;ns=":"")."&amp;database=' title='".'Alter database'."'>$Wa</a>":$Wa),"<td align='right'><a href='$hf&amp;schema=' id='tables-".h($i)."' title='".'Database schema'."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($i)."'>".($_GET["dbsize"]?db_size($i):"?"),"\n";}echo"</table>\n",(support("database")?"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n"."<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}}page_footer("db");}if(isset($_GET["status"])) {
1262
+	$_GET["variables"]=$_GET["status"];
1263
+}
1264
+if(isset($_GET["import"])) {
1265
+	$_GET["sql"]=$_GET["import"];
1266
+}
1267
+if(!(DB!=""?$e->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Vd="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
583 1268
 TmpFile{var$handler;var$size;function
584 1269
 __construct(){$this->handler=tmpfile();}function
585 1270
 write($gb){$this->size+=strlen($gb);fwrite($this->handler,$gb);}function
586
-send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Vb="'(?:''|[^'\\\\]|\\\\.)*'";$Oc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$j->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$m=fields($a);if(!$m)$k=error();$R=table_status1($a,true);page_header(($m&&is_view($R)?'View':'Table').": ".h($a),$k);$b->selectLinks($R);$bb=$R["Comment"];if($bb!="")echo"<p>".'Comment'.": ".h($bb)."\n";if($m){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";foreach($m
1271
+send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Vb="'(?:''|[^'\\\\]|\\\\.)*'";$Oc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"]) {
1272
+	$_GET["edit"]=$_GET["select"];
1273
+}
1274
+if(isset($_GET["callf"])) {
1275
+	$_GET["call"]=$_GET["callf"];
1276
+}
1277
+if(isset($_GET["function"])) {
1278
+	$_GET["procedure"]=$_GET["function"];
1279
+}
1280
+if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$j->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;} elseif(isset($_GET["table"])){$a=$_GET["table"];$m=fields($a);if(!$m) {
1281
+	$k=error();
1282
+}
1283
+$R=table_status1($a,true);page_header(($m&&is_view($R)?'View':'Table').": ".h($a),$k);$b->selectLinks($R);$bb=$R["Comment"];if($bb!="") {
1284
+	echo"<p>".'Comment'.": ".h($bb)."\n";
1285
+}
1286
+if($m){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";foreach($m
587 1287
 as$l){echo"<tr".odd()."><th>".h($l["field"]),"<td><span title='".h($l["collation"])."'>".h($l["full_type"])."</span>",($l["null"]?" <i>NULL</i>":""),($l["auto_increment"]?" <i>".'Auto Increment'."</i>":""),(isset($l["default"])?" <span title='".'Default value'."'>[<b>".h($l["default"])."</b>]</span>":""),(support("comment")?"<td>".nbsp($l["comment"]):""),"\n";}echo"</table>\n";}if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w){echo"<table cellspacing='0'>\n";foreach($w
588
-as$F=>$v){ksort($v["columns"]);$Ie=array();foreach($v["columns"]as$z=>$X)$Ie[]="<i>".h($X)."</i>".($v["lengths"][$z]?"(".$v["lengths"][$z].")":"").($v["descs"][$z]?" DESC":"");echo"<tr title='".h($F)."'><th>$v[type]<td>".implode(", ",$Ie)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$o=foreign_keys($a);if($o){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td>&nbsp;</thead>\n";foreach($o
1288
+as$F=>$v){ksort($v["columns"]);$Ie=array();foreach($v["columns"]as$z=>$X) {
1289
+	$Ie[]="<i>".h($X)."</i>".($v["lengths"][$z]?"(".$v["lengths"][$z].")":"").($v["descs"][$z]?" DESC":"");
1290
+}
1291
+echo"<tr title='".h($F)."'><th>$v[type]<td>".implode(", ",$Ie)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$o=foreign_keys($a);if($o){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td>&nbsp;</thead>\n";foreach($o
589 1292
 as$F=>$n){echo"<tr title='".h($F)."'>","<th><i>".implode("</i>, <i>",array_map('h',$n["source"]))."</i>","<td><a href='".h($n["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($n["db"]),ME):($n["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($n["ns"]),ME):ME))."table=".urlencode($n["table"])."'>".($n["db"]!=""?"<b>".h($n["db"])."</b>.":"").($n["ns"]!=""?"<b>".h($n["ns"])."</b>.":"").h($n["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$n["target"]))."</i>)","<td>".nbsp($n["on_delete"])."\n","<td>".nbsp($n["on_update"])."\n",'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($F)).'">'.'Alter'.'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$qg=triggers($a);if($qg){echo"<table cellspacing='0'>\n";foreach($qg
590
-as$z=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Qf=array();$Rf=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$rd,PREG_SET_ORDER);foreach($rd
591
-as$t=>$C){$Qf[$C[1]]=array($C[2],$C[3]);$Rf[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$kg=0;$Ca=-1;$nf=array();$Ye=array();$jd=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$Be=0;$nf[$Q]["fields"]=array();foreach(fields($Q)as$F=>$l){$Be+=1.25;$l["pos"]=$Be;$nf[$Q]["fields"][$F]=$l;}$nf[$Q]["pos"]=($Qf[$Q]?$Qf[$Q]:array($kg,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$hd=$Ca;if($Qf[$Q][1]||$Qf[$X["table"]][1])$hd=min(floatval($Qf[$Q][1]),floatval($Qf[$X["table"]][1]))-1;else$Ca-=.1;while($jd[(string)$hd])$hd-=.0001;$nf[$Q]["references"][$X["table"]][(string)$hd]=array($X["source"],$X["target"]);$Ye[$X["table"]][$Q][(string)$hd]=$X["target"];$jd[(string)$hd]=true;}}$kg=max($kg,$nf[$Q]["pos"][0]+2.5+$Be);}echo'<div id="schema" style="height: ',$kg,'em;" onselectstart="return false;">
1293
+as$z=>$X) {
1294
+	echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($z)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($z))."'>".'Alter'."</a>\n";
1295
+}
1296
+echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}} elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Qf=array();$Rf=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$rd,PREG_SET_ORDER);foreach($rd
1297
+as$t=>$C){$Qf[$C[1]]=array($C[2],$C[3]);$Rf[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$kg=0;$Ca=-1;$nf=array();$Ye=array();$jd=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R)) {
1298
+	continue;
1299
+}
1300
+$Be=0;$nf[$Q]["fields"]=array();foreach(fields($Q)as$F=>$l){$Be+=1.25;$l["pos"]=$Be;$nf[$Q]["fields"][$F]=$l;}$nf[$Q]["pos"]=($Qf[$Q]?$Qf[$Q]:array($kg,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$hd=$Ca;if($Qf[$Q][1]||$Qf[$X["table"]][1]) {
1301
+	$hd=min(floatval($Qf[$Q][1]),floatval($Qf[$X["table"]][1]))-1;
1302
+} else {
1303
+	$Ca-=.1;
1304
+}
1305
+while($jd[(string)$hd]) {
1306
+	$hd-=.0001;
1307
+}
1308
+$nf[$Q]["references"][$X["table"]][(string)$hd]=array($X["source"],$X["target"]);$Ye[$X["table"]][$Q][(string)$hd]=$X["target"];$jd[(string)$hd]=true;}}$kg=max($kg,$nf[$Q]["pos"][0]+2.5+$Be);}echo'<div id="schema" style="height: ',$kg,'em;" onselectstart="return false;">
592 1309
 <script type="text/javascript">
593 1310
 var tablePos = {',implode(",",$Rf)."\n",'};
594 1311
 var em = document.getElementById(\'schema\').offsetHeight / ',$kg,';
@@ -599,50 +1316,235 @@  discard block
 block discarded – undo
599 1316
 </script>
600 1317
 ';foreach($nf
601 1318
 as$F=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;' onmousedown='schemaMousedown(this, event);'>",'<a href="'.h(ME).'table='.urlencode($F).'"><b>'.h($F)."</b></a>";foreach($Q["fields"]as$l){$X='<span'.type_class($l["type"]).' title="'.h($l["full_type"].($l["null"]?" NULL":'')).'">'.h($l["field"]).'</span>';echo"<br>".($l["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$Wf=>$Ze){foreach($Ze
602
-as$hd=>$Ve){$id=$hd-$Qf[$F][1];$t=0;foreach($Ve[0]as$_f)echo"\n<div class='references' title='".h($Wf)."' id='refs$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$_f]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$id)."em;'></div></div>";}}foreach((array)$Ye[$F]as$Wf=>$Ze){foreach($Ze
1319
+as$hd=>$Ve){$id=$hd-$Qf[$F][1];$t=0;foreach($Ve[0]as$_f) {
1320
+	echo"\n<div class='references' title='".h($Wf)."' id='refs$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$_f]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$id)."em;'></div></div>";
1321
+}
1322
+}}foreach((array)$Ye[$F]as$Wf=>$Ze){foreach($Ze
603 1323
 as$hd=>$d){$id=$hd-$Qf[$F][1];$t=0;foreach($d
604
-as$Vf)echo"\n<div class='references' title='".h($Wf)."' id='refd$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$Vf]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&amp;version=4.2.5&amp;driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$id)."em;'></div></div>";}}echo"\n</div>\n";}foreach($nf
1324
+as$Vf) {
1325
+	echo"\n<div class='references' title='".h($Wf)."' id='refd$hd-".($t++)."' style='left: $id"."em; top: ".$Q["fields"][$Vf]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&amp;version=4.2.5&amp;driver=mysql'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$id)."em;'></div></div>";
1326
+}
1327
+}}echo"\n</div>\n";}foreach($nf
605 1328
 as$F=>$Q){foreach((array)$Q["references"]as$Wf=>$Ze){foreach($Ze
606 1329
 as$hd=>$Ve){$Cd=$kg;$vd=-10;foreach($Ve[0]as$z=>$_f){$Ce=$Q["pos"][0]+$Q["fields"][$_f]["pos"];$De=$nf[$Wf]["pos"][0]+$nf[$Wf]["fields"][$Ve[1][$z]]["pos"];$Cd=min($Cd,$Ce,$De);$vd=max($vd,$Ce,$De);}echo"<div class='references' id='refl$hd' style='left: $hd"."em; top: $Cd"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($vd-$Cd)."em;'></div></div>\n";}}}echo'</div>
607 1330
 <p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">Permanent link</a>
608
-';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$k){$jb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z)$jb.="&$z=".urlencode($_POST[$z]);cookie("adminer_export",substr($jb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$gc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Wc=preg_match('~sql~',$_POST["format"]);if($Wc){echo"-- Adminer $ga ".$Eb[DRIVER]." dump\n\n";if($y=="sql"){echo"SET NAMES utf8;
1331
+';} elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$k){$jb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$z) {
1332
+	$jb.="&$z=".urlencode($_POST[$z]);
1333
+}
1334
+cookie("adminer_export",substr($jb,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$gc=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Wc=preg_match('~sql~',$_POST["format"]);if($Wc){echo"-- Adminer $ga ".$Eb[DRIVER]." dump\n\n";if($y=="sql"){echo"SET NAMES utf8;
609 1335
 SET time_zone = '+00:00';
610 1336
 ".($_POST["data_style"]?"SET foreign_key_checks = 0;
611 1337
 SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
612 1338
 ":"")."
613
-";$e->query("SET time_zone = '+00:00';");}}$If=$_POST["db_style"];$h=array(DB);if(DB==""){$h=$_POST["databases"];if(is_string($h))$h=explode("\n",rtrim(str_replace("\r","",$h),"\n"));}foreach((array)$h
614
-as$i){$b->dumpDatabase($i);if($e->select_db($i)){if($Wc&&preg_match('~CREATE~',$If)&&($g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1))){set_utf8mb4($g);if($If=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($i).";\n";echo"$g;\n";}if($Wc){if($If)echo
615
-use_sql($i).";\n\n";$le="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$if){foreach(get_rows("SHOW $if STATUS WHERE Db = ".q($i),null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE $if ".idf_escape($L["Name"]),2));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP $if IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}if($le)echo"DELIMITER ;;\n\n$le"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Lg=array();foreach(table_status('',true)as$F=>$R){$Q=(DB==""||in_array($F,(array)$_POST["tables"]));$ob=(DB==""||in_array($F,(array)$_POST["data"]));if($Q||$ob){if($gc=="tar"){$ig=new
616
-TmpFile;ob_start(array($ig,'write'),1e5);}$b->dumpTable($F,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Lg[]=$F;elseif($ob){$m=fields($F);$b->dumpData($F,$_POST["data_style"],"SELECT *".convert_fields($m,$m)." FROM ".table($F));}if($Wc&&$_POST["triggers"]&&$Q&&($qg=trigger_sql($F,$_POST["table_style"])))echo"\nDELIMITER ;;\n$qg\nDELIMITER ;\n";if($gc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$i/")."$F.csv",$ig);}elseif($Wc)echo"\n";}}foreach($Lg
617
-as$Kg)$b->dumpTable($Kg,$_POST["table_style"],1);if($gc=="tar")echo
618
-pack("x512");}}}if($Wc)echo"-- ".$e->result("SELECT NOW()")."\n";exit;}page_header('Export',$k,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
1339
+";$e->query("SET time_zone = '+00:00';");}}$If=$_POST["db_style"];$h=array(DB);if(DB==""){$h=$_POST["databases"];if(is_string($h)) {
1340
+	$h=explode("\n",rtrim(str_replace("\r","",$h),"\n"));
1341
+}
1342
+}foreach((array)$h
1343
+as$i){$b->dumpDatabase($i);if($e->select_db($i)){if($Wc&&preg_match('~CREATE~',$If)&&($g=$e->result("SHOW CREATE DATABASE ".idf_escape($i),1))){set_utf8mb4($g);if($If=="DROP+CREATE") {
1344
+	echo"DROP DATABASE IF EXISTS ".idf_escape($i).";\n";
1345
+}
1346
+echo"$g;\n";}if($Wc){if($If) {
1347
+	echo
1348
+use_sql($i).";\n\n";
1349
+}
1350
+$le="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$if){foreach(get_rows("SHOW $if STATUS WHERE Db = ".q($i),null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE $if ".idf_escape($L["Name"]),2));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP $if IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$L){$g=remove_definer($e->result("SHOW CREATE EVENT ".idf_escape($L["Name"]),3));set_utf8mb4($g);$le.=($If!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($L["Name"]).";;\n":"")."$g;;\n\n";}}if($le) {
1351
+	echo"DELIMITER ;;\n\n$le"."DELIMITER ;\n\n";
1352
+}
1353
+}if($_POST["table_style"]||$_POST["data_style"]){$Lg=array();foreach(table_status('',true)as$F=>$R){$Q=(DB==""||in_array($F,(array)$_POST["tables"]));$ob=(DB==""||in_array($F,(array)$_POST["data"]));if($Q||$ob){if($gc=="tar"){$ig=new
1354
+TmpFile;ob_start(array($ig,'write'),1e5);}$b->dumpTable($F,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R)) {
1355
+	$Lg[]=$F;
1356
+} elseif($ob){$m=fields($F);$b->dumpData($F,$_POST["data_style"],"SELECT *".convert_fields($m,$m)." FROM ".table($F));}if($Wc&&$_POST["triggers"]&&$Q&&($qg=trigger_sql($F,$_POST["table_style"]))) {
1357
+	echo"\nDELIMITER ;;\n$qg\nDELIMITER ;\n";
1358
+}
1359
+if($gc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$i/")."$F.csv",$ig);} elseif($Wc) {
1360
+	echo"\n";
1361
+}
1362
+}}foreach($Lg
1363
+as$Kg) {
1364
+	$b->dumpTable($Kg,$_POST["table_style"],1);
1365
+}
1366
+if($gc=="tar") {
1367
+	echo
1368
+pack("x512");
1369
+}
1370
+}}}if($Wc) {
1371
+	echo"-- ".$e->result("SELECT NOW()")."\n";
1372
+}
1373
+exit;}page_header('Export',$k,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
619 1374
 <form action="" method="post">
620 1375
 <table cellspacing="0">
621
-';$sb=array('','USE','DROP+CREATE','CREATE');$Sf=array('','DROP+CREATE','CREATE');$pb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql")$pb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".'Output'."<td>".html_select("output",$b->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".'Format'."<td>".html_select("format",$b->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$sb,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],'Routines'):"").(support("event")?checkbox("events",1,$L["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$Sf,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$L["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$pb,$L["data_style"]),'</table>
1376
+';$sb=array('','USE','DROP+CREATE','CREATE');$Sf=array('','DROP+CREATE','CREATE');$pb=array('','TRUNCATE+INSERT','INSERT');if($y=="sql") {
1377
+	$pb[]='INSERT+UPDATE';
1378
+}
1379
+parse_str($_COOKIE["adminer_export"],$L);if(!$L) {
1380
+	$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");
1381
+}
1382
+if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".'Output'."<td>".html_select("output",$b->dumpOutput(),$L["output"],0)."\n";echo"<tr><th>".'Format'."<td>".html_select("format",$b->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$sb,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],'Routines'):"").(support("event")?checkbox("events",1,$L["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$Sf,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$L["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$pb,$L["data_style"]),'</table>
622 1383
 <p><input type="submit" value="Export">
623 1384
 <input type="hidden" name="token" value="',$T,'">
624 1385
 
625 1386
 <table cellspacing="0">
626 1387
 ';$Ge=array();if(DB!=""){$Na=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Na onclick='formCheck(this, /^tables\\[/);'>".'Tables'."</label>","<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Na onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Lg="";$Tf=tables_list();foreach($Tf
627
-as$F=>$U){$Fe=preg_replace('~_.*~','',$F);$Na=($a==""||$a==(substr($a,-1)=="%"?"$Fe%":$F));$Ie="<tr><td>".checkbox("tables[]",$F,$Na,$F,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U))$Lg.="$Ie\n";else
628
-echo"$Ie<td align='right'><label class='block'><span id='Rows-".h($F)."'></span>".checkbox("data[]",$F,$Na,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";$Ge[$Fe]++;}echo$Lg;if($Tf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".'Database'."</label></thead>\n";$h=$b->databases();if($h){foreach($h
629
-as$i){if(!information_schema($i)){$Fe=preg_replace('~_.*~','',$i);echo"<tr><td>".checkbox("databases[]",$i,$a==""||$a=="$Fe%",$i,"formUncheck('check-databases');","block")."\n";$Ge[$Fe]++;}}}else
630
-echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
1388
+as$F=>$U){$Fe=preg_replace('~_.*~','',$F);$Na=($a==""||$a==(substr($a,-1)=="%"?"$Fe%":$F));$Ie="<tr><td>".checkbox("tables[]",$F,$Na,$F,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U)) {
1389
+	$Lg.="$Ie\n";
1390
+} else {
1391
+	echo"$Ie<td align='right'><label class='block'><span id='Rows-".h($F)."'></span>".checkbox("data[]",$F,$Na,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";
1392
+}
1393
+$Ge[$Fe]++;}echo$Lg;if($Tf) {
1394
+	echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";
1395
+}
1396
+} else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".'Database'."</label></thead>\n";$h=$b->databases();if($h){foreach($h
1397
+as$i){if(!information_schema($i)){$Fe=preg_replace('~_.*~','',$i);echo"<tr><td>".checkbox("databases[]",$i,$a==""||$a=="$Fe%",$i,"formUncheck('check-databases');","block")."\n";$Ge[$Fe]++;}}} else {
1398
+	echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";
1399
+}
1400
+}echo'</table>
631 1401
 </form>
632 1402
 ';$pc=true;foreach($Ge
633
-as$z=>$X){if($z!=""&&$X>1){echo($pc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$pc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');$J=$e->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$r=$J;if(!$J)$J=$e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($r?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th>&nbsp;</thead>\n";while($L=$J->fetch_assoc())echo'<tr'.odd().'><td>'.h($L["User"])."<td>".h($L["Host"]).'<td><a href="'.h(ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.'Edit'."</a>\n";if(!$r||DB!="")echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n",'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";}elseif(isset($_GET["sql"])){if(!$k&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Fc=&get_session("queries");$Ec=&$Fc[DB];if(!$k&&$_POST["clear"]){$Ec=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$k);if(!$k&&$_POST){$p=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$p=@fopen((file_exists("adminer.sql")?"adminer.sql":"compress.zlib://adminer.sql.gz"),"rb");$I=($p?fread($p,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Ec||reset(end($Ec))!=$H){restart_session();$Ec[]=array($H,time());set_session("queries",$Fc);stop_session();}}$Af="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$wb=";";$Od=0;$Sb=true;$f=connect();if(is_object($f)&&DB!="")$f->select_db(DB);$ab=0;$Xb=array();$qe='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\\*|-- |$'.($y=="pgsql"?'|\\$[^$]*\\$':'');$lg=microtime(true);parse_str($_COOKIE["adminer_export"],$la);$Jb=$b->dumpFormat();unset($Jb["sql"]);while($I!=""){if(!$Od&&preg_match("~^$Af*+DELIMITER\\s+(\\S+)~i",$I,$C)){$wb=$C[1];$I=substr($I,strlen($C[0]));}else{preg_match('('.preg_quote($wb)."\\s*|$qe)",$I,$C,PREG_OFFSET_CAPTURE,$Od);list($uc,$Be)=$C[0];if(!$uc&&$p&&!feof($p))$I.=fread($p,1e5);else{if(!$uc&&rtrim($I)=="")break;$Od=$Be+strlen($uc);if($uc&&rtrim($uc)!=$wb){while(preg_match('('.($uc=='/*'?'\\*/':($uc=='['?']':(preg_match('~^-- |^#~',$uc)?"\n":preg_quote($uc)."|\\\\."))).'|$)s',$I,$C,PREG_OFFSET_CAPTURE,$Od)){$lf=$C[0][0];if(!$lf&&$p&&!feof($p))$I.=fread($p,1e5);else{$Od=$C[0][1]+strlen($lf);if($lf[0]!="\\")break;}}}else{$Sb=false;$H=substr($I,0,$Be);$ab++;$Ie="<pre id='sql-$ab'><code class='jush-$y'>".shorten_utf8(trim($H),1000)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$Af*+ATTACH\\b~i",$H,$C)){echo$Ie,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Ie;ob_flush();flush();}$Cf=microtime(true);if($e->multi_query($H)&&is_object($f)&&preg_match("~^$Af*+USE\\b~i",$H))$f->query($H);do{$J=$e->store_result();$bg=" <span class='time'>(".format_time($Cf).")</span>".(strlen($H)<1000?" <a href='".h(ME)."sql=".urlencode(trim($H))."'>".'Edit'."</a>":"");if($e->error){echo($_POST["only_errors"]?$Ie:""),"<p class='error'>".'Error in query'.($e->errno?" ($e->errno)":"").": ".error()."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"])break
634
-2;}elseif(is_object($J)){$_=$_POST["limit"];$ge=select($J,$f,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Ld=$J->num_rows;echo"<p>".($Ld?($_&&$Ld>$_?sprintf('%d / ',$_):"").lang(array('%d row','%d rows'),$Ld):""),$bg;$u="export-$ab";$fc=", <a href='#$u' onclick=\"return !toggle('$u');\">".'Export'."</a><span id='$u' class='hidden'>: ".html_select("output",$b->dumpOutput(),$la["output"])." ".html_select("format",$Jb,$la["format"])."<input type='hidden' name='query' value='".h($H)."'>"." <input type='submit' name='export' value='".'Export'."'><input type='hidden' name='token' value='$T'></span>\n";if($f&&preg_match("~^($Af|\\()*+SELECT\\b~i",$H)&&($ec=explain($f,$H))){$u="explain-$ab";echo", <a href='#$u' onclick=\"return !toggle('$u');\">EXPLAIN</a>$fc","<div id='$u' class='hidden'>\n";select($ec,$f,$ge);echo"</div>\n";}else
635
-echo$fc;echo"</form>\n";}}else{if(preg_match("~^$Af*+(CREATE|DROP|ALTER)$Af++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($e->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$e->affected_rows)."$bg\n";}$Cf=microtime(true);}while($e->next_result());}$I=substr($I,$Od);$Od=0;}}}}if($Sb)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$ab-count($Xb))," <span class='time'>(".format_time($lg).")</span>\n";}elseif($Xb&&$ab>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Xb)."\n";}else
636
-echo"<p class='error'>".upload_error($I)."\n";}echo'
1403
+as$z=>$X){if($z!=""&&$X>1){echo($pc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$pc=false;}}} elseif(isset($_GET["privileges"])){page_header('Privileges');$J=$e->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$r=$J;if(!$J) {
1404
+	$J=$e->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");
1405
+}
1406
+echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($r?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th>&nbsp;</thead>\n";while($L=$J->fetch_assoc()) {
1407
+	echo'<tr'.odd().'><td>'.h($L["User"])."<td>".h($L["Host"]).'<td><a href="'.h(ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.'Edit'."</a>\n";
1408
+}
1409
+if(!$r||DB!="") {
1410
+	echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";
1411
+}
1412
+echo"</table>\n","</form>\n",'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";} elseif(isset($_GET["sql"])){if(!$k&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Fc=&get_session("queries");$Ec=&$Fc[DB];if(!$k&&$_POST["clear"]){$Ec=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$k);if(!$k&&$_POST){$p=false;if(!isset($_GET["import"])) {
1413
+	$I=$_POST["query"];
1414
+} elseif($_POST["webfile"]){$p=@fopen((file_exists("adminer.sql")?"adminer.sql":"compress.zlib://adminer.sql.gz"),"rb");$I=($p?fread($p,1e6):false);} else {
1415
+	$I=get_file("sql_file",true);
1416
+}
1417
+if(is_string($I)){if(function_exists('memory_get_usage')) {
1418
+	@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));
1419
+}
1420
+if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Ec||reset(end($Ec))!=$H){restart_session();$Ec[]=array($H,time());set_session("queries",$Fc);stop_session();}}$Af="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$wb=";";$Od=0;$Sb=true;$f=connect();if(is_object($f)&&DB!="") {
1421
+	$f->select_db(DB);
1422
+}
1423
+$ab=0;$Xb=array();$qe='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\\*|-- |$'.($y=="pgsql"?'|\\$[^$]*\\$':'');$lg=microtime(true);parse_str($_COOKIE["adminer_export"],$la);$Jb=$b->dumpFormat();unset($Jb["sql"]);while($I!=""){if(!$Od&&preg_match("~^$Af*+DELIMITER\\s+(\\S+)~i",$I,$C)){$wb=$C[1];$I=substr($I,strlen($C[0]));} else{preg_match('('.preg_quote($wb)."\\s*|$qe)",$I,$C,PREG_OFFSET_CAPTURE,$Od);list($uc,$Be)=$C[0];if(!$uc&&$p&&!feof($p)) {
1424
+	$I.=fread($p,1e5);
1425
+} else{if(!$uc&&rtrim($I)=="") {
1426
+	break;
1427
+}
1428
+$Od=$Be+strlen($uc);if($uc&&rtrim($uc)!=$wb){while(preg_match('('.($uc=='/*'?'\\*/':($uc=='['?']':(preg_match('~^-- |^#~',$uc)?"\n":preg_quote($uc)."|\\\\."))).'|$)s',$I,$C,PREG_OFFSET_CAPTURE,$Od)){$lf=$C[0][0];if(!$lf&&$p&&!feof($p)) {
1429
+	$I.=fread($p,1e5);
1430
+} else{$Od=$C[0][1]+strlen($lf);if($lf[0]!="\\") {
1431
+	break;
1432
+}
1433
+}}} else{$Sb=false;$H=substr($I,0,$Be);$ab++;$Ie="<pre id='sql-$ab'><code class='jush-$y'>".shorten_utf8(trim($H),1000)."</code></pre>\n";if($y=="sqlite"&&preg_match("~^$Af*+ATTACH\\b~i",$H,$C)){echo$Ie,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"]) {
1434
+	break;
1435
+}
1436
+} else{if(!$_POST["only_errors"]){echo$Ie;ob_flush();flush();}$Cf=microtime(true);if($e->multi_query($H)&&is_object($f)&&preg_match("~^$Af*+USE\\b~i",$H)) {
1437
+	$f->query($H);
1438
+}
1439
+do{$J=$e->store_result();$bg=" <span class='time'>(".format_time($Cf).")</span>".(strlen($H)<1000?" <a href='".h(ME)."sql=".urlencode(trim($H))."'>".'Edit'."</a>":"");if($e->error){echo($_POST["only_errors"]?$Ie:""),"<p class='error'>".'Error in query'.($e->errno?" ($e->errno)":"").": ".error()."\n";$Xb[]=" <a href='#sql-$ab'>$ab</a>";if($_POST["error_stops"]) {
1440
+	break
1441
+2;
1442
+}
1443
+} elseif(is_object($J)){$_=$_POST["limit"];$ge=select($J,$f,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Ld=$J->num_rows;echo"<p>".($Ld?($_&&$Ld>$_?sprintf('%d / ',$_):"").lang(array('%d row','%d rows'),$Ld):""),$bg;$u="export-$ab";$fc=", <a href='#$u' onclick=\"return !toggle('$u');\">".'Export'."</a><span id='$u' class='hidden'>: ".html_select("output",$b->dumpOutput(),$la["output"])." ".html_select("format",$Jb,$la["format"])."<input type='hidden' name='query' value='".h($H)."'>"." <input type='submit' name='export' value='".'Export'."'><input type='hidden' name='token' value='$T'></span>\n";if($f&&preg_match("~^($Af|\\()*+SELECT\\b~i",$H)&&($ec=explain($f,$H))){$u="explain-$ab";echo", <a href='#$u' onclick=\"return !toggle('$u');\">EXPLAIN</a>$fc","<div id='$u' class='hidden'>\n";select($ec,$f,$ge);echo"</div>\n";} else {
1444
+	echo$fc;
1445
+}
1446
+echo"</form>\n";}} else{if(preg_match("~^$Af*+(CREATE|DROP|ALTER)$Af++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"]) {
1447
+	echo"<p class='message' title='".h($e->info)."'>".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$e->affected_rows)."$bg\n";
1448
+}
1449
+}$Cf=microtime(true);}while($e->next_result());}$I=substr($I,$Od);$Od=0;}}}}if($Sb) {
1450
+	echo"<p class='message'>".'No commands to execute.'."\n";
1451
+} elseif($_POST["only_errors"]){echo"<p class='message'>".lang(array('%d query executed OK.','%d queries executed OK.'),$ab-count($Xb))," <span class='time'>(".format_time($lg).")</span>\n";} elseif($Xb&&$ab>1) {
1452
+	echo"<p class='error'>".'Error in query'.": ".implode("",$Xb)."\n";
1453
+}
1454
+} else {
1455
+	echo"<p class='error'>".upload_error($I)."\n";
1456
+}
1457
+}echo'
637 1458
 <form action="" method="post" enctype="multipart/form-data" id="form">
638
-';$cc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$Ec;elseif($_GET["history"]!="")$H=$Ec[$_GET["history"]][0];echo"<p>";textarea("query",$H,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$cc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>",(ini_bool("file_uploads")?"SQL (&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$cc":'File uploads are disabled.'),"</div></fieldset>\n","<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>adminer.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n","<p>";}echo
1459
+';$cc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST) {
1460
+	$H=$_POST["query"];
1461
+} elseif($_GET["history"]=="all") {
1462
+	$H=$Ec;
1463
+} elseif($_GET["history"]!="") {
1464
+	$H=$Ec[$_GET["history"]][0];
1465
+}
1466
+echo"<p>";textarea("query",$H,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$cc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";} else{echo"<fieldset><legend>".'File upload'."</legend><div>",(ini_bool("file_uploads")?"SQL (&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$cc":'File uploads are disabled.'),"</div></fieldset>\n","<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>adminer.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n","<p>";}echo
639 1467
 checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),'Show only errors')."\n","<input type='hidden' name='token' value='$T'>\n";if(!isset($_GET["import"])&&$Ec){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Ec);$X;$X=prev($Ec)){$z=key($Ec);list($H,$bg,$Nb)=$X;echo'<a href="'.h(ME."sql=&history=$z").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$bg)."'>".@date("H:i:s",$bg)."</span>"." <code class='jush-$y'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"</code>").($Nb?" <span class='time'>($Nb)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form>
640
-';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$Ag=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($m
641
-as$F=>$l){if(!isset($l["privileges"][$Ag?"update":"insert"])||$b->fieldName($l)=="")unset($m[$F]);}if($_POST&&!$k&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Ag?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$w=indexes($a);$wg=unique_array($_GET["where"],$w);$Re="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,'Item has been deleted.',$j->delete($a,$Re,!$wg));else{$P=array();foreach($m
642
-as$F=>$l){$X=process_input($l);if($X!==false&&$X!==null)$P[idf_escape($F)]=$X;}if($Ag){if(!$P)redirect($B);queries_redirect($B,'Item has been updated.',$j->update($a,$P,$Re,!$wg));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$j->insert($a,$P);$gd=($J?last_id():0);queries_redirect($B,sprintf('Item%s has been inserted.',($gd?" $gd":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($m
643
-as$F=>$l){if(isset($l["privileges"]["select"])){$ua=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$ua="''";if($y=="sql"&&preg_match("~enum|set~",$l["type"]))$ua="1*".idf_escape($F);$N[]=($ua?"$ua AS ":"").idf_escape($F);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$j->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Z){$J=$j->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($j->primary=>"");}if($L){foreach($L
644
-as$z=>$X){if(!$Z)$L[$z]=null;$m[$z]=array("field"=>$z,"null"=>($z!=$j->primary),"auto_increment"=>($z==$j->primary));}}}edit_form($a,$m,$L,$Ag);}elseif(isset($_GET["create"])){$a=$_GET["create"];$re=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$re[$z]=$z;$Xe=referencable_primary($a);$o=array();foreach($Xe
645
-as$Pf=>$l)$o[str_replace("`","``",$Pf)."`".str_replace("`","``",$l["field"])]=$Pf;$je=array();$R=array();if($a!=""){$je=fields($a);$R=table_status($a);if(!$R)$k='No tables.';}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!process_fields($L["fields"])&&!$k){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$m=array();$ra=array();$Dg=false;$rc=array();ksort($L["fields"]);$ie=reset($je);$pa=" FIRST";foreach($L["fields"]as$z=>$l){$n=$o[$l["type"]];$rg=($n!==null?$Xe[$n]:$l);if($l["field"]!=""){if(!$l["has_default"])$l["default"]=null;if($z==$L["auto_increment_col"])$l["auto_increment"]=true;$Ne=process_field($l,$rg);$ra[]=array($l["orig"],$Ne,$pa);if($Ne!=process_field($ie,$ie)){$m[]=array($l["orig"],$Ne,$pa);if($l["orig"]!=""||$pa)$Dg=true;}if($n!==null)$rc[idf_escape($l["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$o[$l["type"]],'source'=>array($l["field"]),'target'=>array($rg["field"]),'on_delete'=>$l["on_delete"],));$pa=" AFTER ".idf_escape($l["field"]);}elseif($l["orig"]!=""){$Dg=true;$m[]=array($l["orig"]);}if($l["orig"]!=""){$ie=next($je);if(!$ie)$pa="";}}$te="";if($re[$L["partition_by"]]){$ue=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$z=>$X){$Y=$L["partition_values"][$z];$ue[]="\n  PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$te.="\nPARTITION BY $L[partition_by]($L[partition])".($ue?" (".implode(",",$ue)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$te.="\nREMOVE PARTITIONING";$D='Table has been altered.';if($a==""){cookie("adminer_engine",$L["Engine"]);$D='Table has been created.';}$F=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($F),$D,alter_table($a,$F,($y=="sqlite"&&($Dg||$rc)?$ra:$m),$rc,($L["Comment"]!=$R["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$te));}}page_header(($a!=""?'Alter table':'Create table'),$k,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($tg["int"])?"int":(isset($tg["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$L=$R;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($je
1468
+';} elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$Ag=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($m
1469
+as$F=>$l){if(!isset($l["privileges"][$Ag?"update":"insert"])||$b->fieldName($l)=="") {
1470
+	unset($m[$F]);
1471
+}
1472
+}if($_POST&&!$k&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"]) {
1473
+	$B=($Ag?null:$_SERVER["REQUEST_URI"]);
1474
+} elseif(!preg_match('~^.+&select=.+$~',$B)) {
1475
+	$B=ME."select=".urlencode($a);
1476
+}
1477
+$w=indexes($a);$wg=unique_array($_GET["where"],$w);$Re="\nWHERE $Z";if(isset($_POST["delete"])) {
1478
+	queries_redirect($B,'Item has been deleted.',$j->delete($a,$Re,!$wg));
1479
+} else{$P=array();foreach($m
1480
+as$F=>$l){$X=process_input($l);if($X!==false&&$X!==null) {
1481
+	$P[idf_escape($F)]=$X;
1482
+}
1483
+}if($Ag){if(!$P) {
1484
+	redirect($B);
1485
+}
1486
+queries_redirect($B,'Item has been updated.',$j->update($a,$P,$Re,!$wg));if(is_ajax()){page_headers();page_messages($k);exit;}} else{$J=$j->insert($a,$P);$gd=($J?last_id():0);queries_redirect($B,sprintf('Item%s has been inserted.',($gd?" $gd":"")),$J);}}}$L=null;if($_POST["save"]) {
1487
+	$L=(array)$_POST["fields"];
1488
+} elseif($Z){$N=array();foreach($m
1489
+as$F=>$l){if(isset($l["privileges"]["select"])){$ua=convert_field($l);if($_POST["clone"]&&$l["auto_increment"]) {
1490
+	$ua="''";
1491
+}
1492
+if($y=="sql"&&preg_match("~enum|set~",$l["type"])) {
1493
+	$ua="1*".idf_escape($F);
1494
+}
1495
+$N[]=($ua?"$ua AS ":"").idf_escape($F);}}$L=array();if(!support("table")) {
1496
+	$N=array("*");
1497
+}
1498
+if($N){$J=$j->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L) {
1499
+	$L=false;
1500
+}
1501
+if(isset($_GET["select"])&&(!$L||$J->fetch_assoc())) {
1502
+	$L=null;
1503
+}
1504
+}}if(!support("table")&&!$m){if(!$Z){$J=$j->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L) {
1505
+	$L=array($j->primary=>"");
1506
+}
1507
+}if($L){foreach($L
1508
+as$z=>$X){if(!$Z) {
1509
+	$L[$z]=null;
1510
+}
1511
+$m[$z]=array("field"=>$z,"null"=>($z!=$j->primary),"auto_increment"=>($z==$j->primary));}}}edit_form($a,$m,$L,$Ag);} elseif(isset($_GET["create"])){$a=$_GET["create"];$re=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z) {
1512
+	$re[$z]=$z;
1513
+}
1514
+$Xe=referencable_primary($a);$o=array();foreach($Xe
1515
+as$Pf=>$l) {
1516
+	$o[str_replace("`","``",$Pf)."`".str_replace("`","``",$l["field"])]=$Pf;
1517
+}
1518
+$je=array();$R=array();if($a!=""){$je=fields($a);$R=table_status($a);if(!$R) {
1519
+	$k='No tables.';
1520
+}
1521
+}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"]) {
1522
+	$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;
1523
+}
1524
+if($_POST&&!process_fields($L["fields"])&&!$k){if($_POST["drop"]) {
1525
+	queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));
1526
+} else{$m=array();$ra=array();$Dg=false;$rc=array();ksort($L["fields"]);$ie=reset($je);$pa=" FIRST";foreach($L["fields"]as$z=>$l){$n=$o[$l["type"]];$rg=($n!==null?$Xe[$n]:$l);if($l["field"]!=""){if(!$l["has_default"]) {
1527
+	$l["default"]=null;
1528
+}
1529
+if($z==$L["auto_increment_col"]) {
1530
+	$l["auto_increment"]=true;
1531
+}
1532
+$Ne=process_field($l,$rg);$ra[]=array($l["orig"],$Ne,$pa);if($Ne!=process_field($ie,$ie)){$m[]=array($l["orig"],$Ne,$pa);if($l["orig"]!=""||$pa) {
1533
+	$Dg=true;
1534
+}
1535
+}if($n!==null) {
1536
+	$rc[idf_escape($l["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$o[$l["type"]],'source'=>array($l["field"]),'target'=>array($rg["field"]),'on_delete'=>$l["on_delete"],));
1537
+}
1538
+$pa=" AFTER ".idf_escape($l["field"]);} elseif($l["orig"]!=""){$Dg=true;$m[]=array($l["orig"]);}if($l["orig"]!=""){$ie=next($je);if(!$ie) {
1539
+	$pa="";
1540
+}
1541
+}}$te="";if($re[$L["partition_by"]]){$ue=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$z=>$X){$Y=$L["partition_values"][$z];$ue[]="\n  PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$te.="\nPARTITION BY $L[partition_by]($L[partition])".($ue?" (".implode(",",$ue)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));} elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"])) {
1542
+	$te.="\nREMOVE PARTITIONING";
1543
+}
1544
+$D='Table has been altered.';if($a==""){cookie("adminer_engine",$L["Engine"]);$D='Table has been created.';}$F=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($F),$D,alter_table($a,$F,($y=="sqlite"&&($Dg||$rc)?$ra:$m),$rc,($L["Comment"]!=$R["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$R["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$R["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$te));}}page_header(($a!=""?'Alter table':'Create table'),$k,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($tg["int"])?"int":(isset($tg["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$L=$R;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"]) {
1545
+	$L["Auto_increment"]="";
1546
+}
1547
+foreach($je
646 1548
 as$l){$l["has_default"]=isset($l["default"]);$L["fields"][]=$l;}if(support("partitioning")){$wc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$J=$e->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $wc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($L["partition_by"],$L["partitions"],$L["partition"])=$J->fetch_row();$ue=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $wc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$ue[""]="";$L["partition_names"]=array_keys($ue);$L["partition_values"]=array_values($ue);}}}$Xa=collations();$Ub=engines();foreach($Ub
647 1549
 as$Tb){if(!strcasecmp($Tb,$L["Engine"])){$L["Engine"]=$Tb;break;}}echo'
648 1550
 <form action="" method="post" id="form">
@@ -666,8 +1568,23 @@  discard block
 block discarded – undo
666 1568
 </div></fieldset>
667 1569
 ';}echo'<input type="hidden" name="token" value="',$T,'">
668 1570
 </form>
669
-';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Mc=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.($e->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"]))$Mc[]="FULLTEXT";$w=indexes($a);$He=array();if($y=="mongo"){$He=$w["_id_"];unset($Mc[0]);unset($w["_id_"]);}$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]){$sa=array();foreach($L["indexes"]as$v){$F=$v["name"];if(in_array($v["type"],$Mc)){$d=array();$md=array();$yb=array();$P=array();ksort($v["columns"]);foreach($v["columns"]as$z=>$c){if($c!=""){$ld=$v["lengths"][$z];$xb=$v["descs"][$z];$P[]=idf_escape($c).($ld?"(".(+$ld).")":"").($xb?" DESC":"");$d[]=$c;$md[]=($ld?$ld:null);$yb[]=$xb;}}if($d){$dc=$w[$F];if($dc){ksort($dc["columns"]);ksort($dc["lengths"]);ksort($dc["descs"]);if($v["type"]==$dc["type"]&&array_values($dc["columns"])===$d&&(!$dc["lengths"]||array_values($dc["lengths"])===$md)&&array_values($dc["descs"])===$yb){unset($w[$F]);continue;}}$sa[]=array($v["type"],$F,$P);}}}foreach($w
670
-as$F=>$dc)$sa[]=array($dc["type"],$F,"DROP");if(!$sa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$sa));}page_header('Indexes',$k,array("table"=>$a),h($a));$m=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$z=>$v){if($v["columns"][count($v["columns"])]!="")$L["indexes"][$z]["columns"][]="";}$v=end($L["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($w
1571
+';} elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Mc=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.($e->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"])) {
1572
+	$Mc[]="FULLTEXT";
1573
+}
1574
+$w=indexes($a);$He=array();if($y=="mongo"){$He=$w["_id_"];unset($Mc[0]);unset($w["_id_"]);}$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["drop_col"]){$sa=array();foreach($L["indexes"]as$v){$F=$v["name"];if(in_array($v["type"],$Mc)){$d=array();$md=array();$yb=array();$P=array();ksort($v["columns"]);foreach($v["columns"]as$z=>$c){if($c!=""){$ld=$v["lengths"][$z];$xb=$v["descs"][$z];$P[]=idf_escape($c).($ld?"(".(+$ld).")":"").($xb?" DESC":"");$d[]=$c;$md[]=($ld?$ld:null);$yb[]=$xb;}}if($d){$dc=$w[$F];if($dc){ksort($dc["columns"]);ksort($dc["lengths"]);ksort($dc["descs"]);if($v["type"]==$dc["type"]&&array_values($dc["columns"])===$d&&(!$dc["lengths"]||array_values($dc["lengths"])===$md)&&array_values($dc["descs"])===$yb){unset($w[$F]);continue;}}$sa[]=array($v["type"],$F,$P);}}}foreach($w
1575
+as$F=>$dc) {
1576
+	$sa[]=array($dc["type"],$F,"DROP");
1577
+}
1578
+if(!$sa) {
1579
+	redirect(ME."table=".urlencode($a));
1580
+}
1581
+queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$sa));}page_header('Indexes',$k,array("table"=>$a),h($a));$m=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$z=>$v){if($v["columns"][count($v["columns"])]!="") {
1582
+	$L["indexes"][$z]["columns"][]="";
1583
+}
1584
+}$v=end($L["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen')) {
1585
+	$L["indexes"][]=array("columns"=>array(1=>""));
1586
+}
1587
+}if(!$L){foreach($w
671 1588
 as$z=>$v){$w[$z]["name"]=$z;$w[$z]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$L["indexes"]=$w;}?>
672 1589
 
673 1590
 <form action="" method="post">
@@ -685,25 +1602,82 @@  discard block
 block discarded – undo
685 1602
 <input type="submit" value="Save">
686 1603
 <input type="hidden" name="token" value="',$T,'">
687 1604
 </form>
688
-';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$k&&!isset($_POST["add_x"])){$F=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$F){if(DB!=""){$_GET["db"]=$F;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($F),'Database has been renamed.',rename_database($F,$L["collation"]));}else{$h=explode("\n",str_replace("\r","",$F));$Jf=true;$fd="";foreach($h
689
-as$i){if(count($h)==1||$i!=""){if(!create_database($i,$L["collation"]))$Jf=false;$fd=$i;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($fd),'Database has been created.',$Jf);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($F).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$k,array(),h(DB));$Xa=collations();$F=DB;if($_POST)$F=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$Xa);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$r){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$r,$C)&&$C[1]){$F=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'
1605
+';} elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$k&&!isset($_POST["add_x"])){$F=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));} elseif(DB!==$F){if(DB!=""){$_GET["db"]=$F;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($F),'Database has been renamed.',rename_database($F,$L["collation"]));} else{$h=explode("\n",str_replace("\r","",$F));$Jf=true;$fd="";foreach($h
1606
+as$i){if(count($h)==1||$i!=""){if(!create_database($i,$L["collation"])) {
1607
+	$Jf=false;
1608
+}
1609
+$fd=$i;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($fd),'Database has been created.',$Jf);}} else{if(!$L["collation"]) {
1610
+	redirect(substr(ME,0,-1));
1611
+}
1612
+query_redirect("ALTER DATABASE ".idf_escape($F).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$k,array(),h(DB));$Xa=collations();$F=DB;if($_POST) {
1613
+	$F=$L["name"];
1614
+} elseif(DB!="") {
1615
+	$L["collation"]=db_collation(DB,$Xa);
1616
+} elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$r){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$r,$C)&&$C[1]){$F=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'
690 1617
 <form action="" method="post">
691 1618
 <p>
692 1619
 ',($_POST["add_x"]||strpos($F,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($F).'</textarea><br>':'<input name="name" id="name" value="'.h($F).'" maxlength="64" autocapitalize="off">')."\n".($Xa?html_select("collation",array(""=>"(".'collation'.")")+$Xa,$L["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mssql'=>"ms187963.aspx",)):"");?>
693 1620
 <script type='text/javascript'>focus(document.getElementById('name'));</script>
694 1621
 <input type="submit" value="Save">
695 1622
 <?php
696
-if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='".'Add next'."'>\n";echo'<input type="hidden" name="token" value="',$T,'">
1623
+if(DB!="") {
1624
+	echo"<input type='submit' name='drop' value='".'Drop'."'".confirm().">\n";
1625
+} elseif(!$_POST["add_x"]&&$_GET["db"]=="") {
1626
+	echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&amp;version=4.2.5&amp;driver=mysql' alt='+' title='".'Add next'."'>\n";
1627
+}
1628
+echo'<input type="hidden" name="token" value="',$T,'">
697 1629
 </form>
698
-';}elseif(isset($_GET["call"])){$da=$_GET["call"];page_header('Call'.": ".h($da),$k);$if=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Lc=array();$le=array();foreach($if["fields"]as$t=>$l){if(substr($l["inout"],-3)=="OUT")$le[$t]="@".idf_escape($l["field"])." AS ".idf_escape($l["field"]);if(!$l["inout"]||substr($l["inout"],0,2)=="IN")$Lc[]=$t;}if(!$k&&$_POST){$Ja=array();foreach($if["fields"]as$z=>$l){if(in_array($z,$Lc)){$X=process_input($l);if($X===false)$X="''";if(isset($le[$z]))$e->query("SET @".idf_escape($l["field"])." = $X");}$Ja[]=(isset($le[$z])?"@".idf_escape($l["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ja).")";echo"<p><code class='jush-$y'>".h($I)."</code> <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>\n";if(!$e->multi_query($I))echo"<p class='error'>".error()."\n";else{$f=connect();if(is_object($f))$f->select_db(DB);do{$J=$e->store_result();if(is_object($J))select($J,$f);else
699
-echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$e->affected_rows)."\n";}while($e->next_result());if($le)select($e->query("SELECT ".implode(", ",$le)));}}echo'
1630
+';} elseif(isset($_GET["call"])){$da=$_GET["call"];page_header('Call'.": ".h($da),$k);$if=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Lc=array();$le=array();foreach($if["fields"]as$t=>$l){if(substr($l["inout"],-3)=="OUT") {
1631
+	$le[$t]="@".idf_escape($l["field"])." AS ".idf_escape($l["field"]);
1632
+}
1633
+if(!$l["inout"]||substr($l["inout"],0,2)=="IN") {
1634
+	$Lc[]=$t;
1635
+}
1636
+}if(!$k&&$_POST){$Ja=array();foreach($if["fields"]as$z=>$l){if(in_array($z,$Lc)){$X=process_input($l);if($X===false) {
1637
+	$X="''";
1638
+}
1639
+if(isset($le[$z])) {
1640
+	$e->query("SET @".idf_escape($l["field"])." = $X");
1641
+}
1642
+}$Ja[]=(isset($le[$z])?"@".idf_escape($l["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ja).")";echo"<p><code class='jush-$y'>".h($I)."</code> <a href='".h(ME)."sql=".urlencode($I)."'>".'Edit'."</a>\n";if(!$e->multi_query($I)) {
1643
+	echo"<p class='error'>".error()."\n";
1644
+} else{$f=connect();if(is_object($f)) {
1645
+	$f->select_db(DB);
1646
+}
1647
+do{$J=$e->store_result();if(is_object($J)) {
1648
+	select($J,$f);
1649
+} else {
1650
+	echo"<p class='message'>".lang(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$e->affected_rows)."\n";
1651
+}
1652
+}while($e->next_result());if($le) {
1653
+	select($e->query("SELECT ".implode(", ",$le)));
1654
+}
1655
+}}echo'
700 1656
 <form action="" method="post">
701 1657
 ';if($Lc){echo"<table cellspacing='0'>\n";foreach($Lc
702
-as$z){$l=$if["fields"][$z];$F=$l["field"];echo"<tr><th>".$b->fieldName($l);$Y=$_POST["fields"][$F];if($Y!=""){if($l["type"]=="enum")$Y=+$Y;if($l["type"]=="set")$Y=array_sum($Y);}input($l,$Y,(string)$_POST["function"][$F]);echo"\n";}echo"</table>\n";}echo'<p>
1658
+as$z){$l=$if["fields"][$z];$F=$l["field"];echo"<tr><th>".$b->fieldName($l);$Y=$_POST["fields"][$F];if($Y!=""){if($l["type"]=="enum") {
1659
+	$Y=+$Y;
1660
+}
1661
+if($l["type"]=="set") {
1662
+	$Y=array_sum($Y);
1663
+}
1664
+}input($l,$Y,(string)$_POST["function"][$F]);echo"\n";}echo"</table>\n";}echo'<p>
703 1665
 <input type="submit" value="Call">
704 1666
 <input type="hidden" name="token" value="',$T,'">
705 1667
 </form>
706
-';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$F=$_GET["name"];$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?'Foreign key has been dropped.':($F!=""?'Foreign key has been altered.':'Foreign key has been created.'));$B=ME."table=".urlencode($a);$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Vf=array();foreach($L["source"]as$z=>$X)$Vf[$z]=$L["target"][$z];$L["target"]=$Vf;if($y=="sqlite")queries_redirect($B,$D,recreate_table($a,$a,array(),array(),array(" $F"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$sa="ALTER TABLE ".table($a);$Fb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($F);if($_POST["drop"])query_redirect($sa.$Fb,$B,$D);else{query_redirect($sa.($F!=""?"$Fb,":"")."\nADD".format_foreign_key($L),$B,$D);$k='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."<br>$k";}}}page_header('Foreign key',$k,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($F!=""){$o=foreign_keys($a);$L=$o[$F];$L["source"][]="";}else{$L["table"]=$a;$L["source"]=array("");}$_f=array_keys(fields($a));$Vf=($a===$L["table"]?$_f:array_keys(fields($L["table"])));$We=array_keys(array_filter(table_status('',true),'fk_support'));echo'
1668
+';} elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$F=$_GET["name"];$L=$_POST;if($_POST&&!$k&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?'Foreign key has been dropped.':($F!=""?'Foreign key has been altered.':'Foreign key has been created.'));$B=ME."table=".urlencode($a);$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Vf=array();foreach($L["source"]as$z=>$X) {
1669
+	$Vf[$z]=$L["target"][$z];
1670
+}
1671
+$L["target"]=$Vf;if($y=="sqlite") {
1672
+	queries_redirect($B,$D,recreate_table($a,$a,array(),array(),array(" $F"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));
1673
+} else{$sa="ALTER TABLE ".table($a);$Fb="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($F);if($_POST["drop"]) {
1674
+	query_redirect($sa.$Fb,$B,$D);
1675
+} else{query_redirect($sa.($F!=""?"$Fb,":"")."\nADD".format_foreign_key($L),$B,$D);$k='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."<br>$k";}}}page_header('Foreign key',$k,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"]) {
1676
+	$L["source"][]="";
1677
+} elseif($_POST["change"]||$_POST["change-js"]) {
1678
+	$L["target"]=array();
1679
+}
1680
+} elseif($F!=""){$o=foreign_keys($a);$L=$o[$F];$L["source"][]="";} else{$L["table"]=$a;$L["source"]=array("");}$_f=array_keys(fields($a));$Vf=($a===$L["table"]?$_f:array_keys(fields($L["table"])));$We=array_keys(array_filter(table_status('',true),'fk_support'));echo'
707 1681
 <form action="" method="post">
708 1682
 <p>
709 1683
 ';if($L["db"]==""&&$L["ns"]==""){echo'Target table:
@@ -718,14 +1692,23 @@  discard block
 block discarded – undo
718 1692
 <noscript><p><input type="submit" name="add" value="Add column"></noscript>
719 1693
 ';}if($F!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
720 1694
 </form>
721
-';}elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;if($_POST&&!$k){$F=trim($L["name"]);$ua=" AS\n$L[select]";$B=ME."table=".urlencode($F);$D='View has been altered.';if($_GET["materialized"])$U="MATERIALIZED VIEW";else{$U="VIEW";if($y=="pgsql"){$Df=table_status($F);$U=($Df?strtoupper($Df["Engine"]):$U);}}if(!$_POST["drop"]&&$a==$F&&$y!="sqlite"&&$U!="MATERIALIZED VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($F).$ua,$B,$D);else{$Xf=$F."_adminer_".uniqid();drop_create("DROP $U ".table($a),"CREATE $U ".table($F).$ua,"DROP $U ".table($F),"CREATE $U ".table($Xf).$ua,"DROP $U ".table($Xf),($_POST["drop"]?substr(ME,0,-1):$B),'View has been dropped.',$D,'View has been created.',$a,$F);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;if(!$k)$k=error();}page_header(($a!=""?'Alter view':'Create view'),$k,array("table"=>$a),h($a));echo'
1695
+';} elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;if($_POST&&!$k){$F=trim($L["name"]);$ua=" AS\n$L[select]";$B=ME."table=".urlencode($F);$D='View has been altered.';if($_GET["materialized"]) {
1696
+	$U="MATERIALIZED VIEW";
1697
+} else{$U="VIEW";if($y=="pgsql"){$Df=table_status($F);$U=($Df?strtoupper($Df["Engine"]):$U);}}if(!$_POST["drop"]&&$a==$F&&$y!="sqlite"&&$U!="MATERIALIZED VIEW") {
1698
+	query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($F).$ua,$B,$D);
1699
+} else{$Xf=$F."_adminer_".uniqid();drop_create("DROP $U ".table($a),"CREATE $U ".table($F).$ua,"DROP $U ".table($F),"CREATE $U ".table($Xf).$ua,"DROP $U ".table($Xf),($_POST["drop"]?substr(ME,0,-1):$B),'View has been dropped.',$D,'View has been created.',$a,$F);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;if(!$k) {
1700
+	$k=error();
1701
+}
1702
+}page_header(($a!=""?'Alter view':'Create view'),$k,array("table"=>$a),h($a));echo'
722 1703
 <form action="" method="post">
723 1704
 <p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off">
724 1705
 <p>';textarea("select",$L["select"]);echo'<p>
725 1706
 <input type="submit" value="Save">
726 1707
 ';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
727 1708
 </form>
728
-';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Rc=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ef=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$k){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($L["INTERVAL_FIELD"],$Rc)&&isset($Ef[$L["STATUS"]])){$mf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$mf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$mf)."\n".$Ef[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$k);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo'
1709
+';} elseif(isset($_GET["event"])){$aa=$_GET["event"];$Rc=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ef=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$k){if($_POST["drop"]) {
1710
+	query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');
1711
+} elseif(in_array($L["INTERVAL_FIELD"],$Rc)&&isset($Ef[$L["STATUS"]])){$mf="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".q($L["ENDS"]):""):"AT ".q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$mf.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($L["EVENT_NAME"]).$mf)."\n".$Ef[$L["STATUS"]]." COMMENT ".q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$k);if(!$L&&$aa!=""){$M=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$L=reset($M);}echo'
729 1712
 <form action="" method="post">
730 1713
 <table cellspacing="0">
731 1714
 <tr><th>Name<td><input name="EVENT_NAME" value="',h($L["EVENT_NAME"]),'" maxlength="64" autocapitalize="off">
@@ -737,7 +1720,7 @@  discard block
 block discarded – undo
737 1720
 <input type="submit" value="Save">
738 1721
 ';if($aa!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
739 1722
 </form>
740
-';}elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$if=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$k){$Xf="$L[name]_adminer_".uniqid();drop_create("DROP $if ".idf_escape($da),create_routine($if,$L),"DROP $if ".idf_escape($L["name"]),create_routine($if,array("name"=>$Xf)+$L),"DROP $if ".idf_escape($Xf),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$L["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$k);if(!$_POST&&$da!=""){$L=routine($da,$if);$L["name"]=$da;}$Xa=get_vals("SHOW CHARACTER SET");sort($Xa);$jf=routine_languages();echo'
1723
+';} elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$if=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!process_fields($L["fields"])&&!$k){$Xf="$L[name]_adminer_".uniqid();drop_create("DROP $if ".idf_escape($da),create_routine($if,$L),"DROP $if ".idf_escape($L["name"]),create_routine($if,array("name"=>$Xf)+$L),"DROP $if ".idf_escape($Xf),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$da,$L["name"]);}page_header(($da!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($da):(isset($_GET["function"])?'Create function':'Create procedure')),$k);if(!$_POST&&$da!=""){$L=routine($da,$if);$L["name"]=$da;}$Xa=get_vals("SHOW CHARACTER SET");sort($Xa);$jf=routine_languages();echo'
741 1724
 <form action="" method="post" id="form">
742 1725
 <p>Name: <input name="name" value="',h($L["name"]),'" maxlength="64" autocapitalize="off">
743 1726
 ',($jf?'Language'.": ".html_select("language",$jf,$L["language"]):""),'<input type="submit" value="Save">
@@ -747,7 +1730,15 @@  discard block
 block discarded – undo
747 1730
 <input type="submit" value="Save">
748 1731
 ';if($da!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
749 1732
 </form>
750
-';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$F=$_GET["name"];$pg=trigger_options();$L=(array)trigger($F)+array("Trigger"=>$a."_bi");if($_POST){if(!$k&&in_array($_POST["Timing"],$pg["Timing"])&&in_array($_POST["Event"],$pg["Event"])&&in_array($_POST["Type"],$pg["Type"])){$Ud=" ON ".table($a);$Fb="DROP TRIGGER ".idf_escape($F).($y=="pgsql"?$Ud:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Fb,$B,'Trigger has been dropped.');else{if($F!="")queries($Fb);queries_redirect($B,($F!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Ud,$_POST)));if($F!="")queries(create_trigger($Ud,$L+array("Type"=>reset($pg["Type"]))));}}$L=$_POST;}page_header(($F!=""?'Alter trigger'.": ".h($F):'Create trigger'),$k,array("table"=>$a));echo'
1733
+';} elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$F=$_GET["name"];$pg=trigger_options();$L=(array)trigger($F)+array("Trigger"=>$a."_bi");if($_POST){if(!$k&&in_array($_POST["Timing"],$pg["Timing"])&&in_array($_POST["Event"],$pg["Event"])&&in_array($_POST["Type"],$pg["Type"])){$Ud=" ON ".table($a);$Fb="DROP TRIGGER ".idf_escape($F).($y=="pgsql"?$Ud:"");$B=ME."table=".urlencode($a);if($_POST["drop"]) {
1734
+	query_redirect($Fb,$B,'Trigger has been dropped.');
1735
+} else{if($F!="") {
1736
+	queries($Fb);
1737
+}
1738
+queries_redirect($B,($F!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Ud,$_POST)));if($F!="") {
1739
+	queries(create_trigger($Ud,$L+array("Type"=>reset($pg["Type"]))));
1740
+}
1741
+}}$L=$_POST;}page_header(($F!=""?'Alter trigger'.": ".h($F):'Create trigger'),$k,array("table"=>$a));echo'
751 1742
 <form action="" method="post" id="form">
752 1743
 <table cellspacing="0">
753 1744
 <tr><th>Time<td>',html_select("Timing",$pg["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$pg["Event"],$L["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$pg["Event"])?" <input name='Of' value='".h($L["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$pg["Type"],$L["Type"]),'</table>
@@ -757,10 +1748,52 @@  discard block
 block discarded – undo
757 1748
 <input type="submit" value="Save">
758 1749
 ';if($F!=""){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
759 1750
 </form>
760
-';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Le=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$hb)$Le[$hb][$L["Privilege"]]=$L["Comment"];}$Le["Server Admin"]+=$Le["File access on server"];$Le["Databases"]["Create routine"]=$Le["Procedures"]["Create routine"];unset($Le["Procedures"]["Create routine"]);$Le["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Le["Columns"][$X]=$Le["Tables"][$X];unset($Le["Server Admin"]["Usage"]);foreach($Le["Tables"]as$z=>$X)unset($Le["Databases"][$z]);$Hd=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Hd[$X]=(array)$Hd[$X]+(array)$_POST["grants"][$z];}$yc=array();$Sd="";if(isset($_GET["host"])&&($J=$e->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$C[1],$rd,PREG_SET_ORDER)){foreach($rd
761
-as$X){if($X[1]!="USAGE")$yc["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$L[0]))$yc["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$C))$Sd=$C[1];}}if($_POST&&!$k){$Td=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Td",ME."privileges=",'User has been dropped.');else{$Jd=q($_POST["user"])."@".q($_POST["host"]);$ve=$_POST["pass"];if($ve!=''&&!$_POST["hashed"]){$ve=$e->result("SELECT PASSWORD(".q($ve).")");$k=!$ve;}$lb=false;if(!$k){if($Td!=$Jd){$lb=queries(($e->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Jd IDENTIFIED BY PASSWORD ".q($ve));$k=!$lb;}elseif($ve!=$Sd)queries("SET PASSWORD FOR $Jd = ".q($ve));}if(!$k){$ff=array();foreach($Hd
762
-as$Nd=>$r){if(isset($_GET["grant"]))$r=array_filter($r);$r=array_keys($r);if(isset($_GET["grant"]))$ff=array_diff(array_keys(array_filter($Hd[$Nd],'strlen')),$r);elseif($Td==$Jd){$Qd=array_keys((array)$yc[$Nd]);$ff=array_diff($Qd,$r);$r=array_diff($r,$Qd);unset($yc[$Nd]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Nd,$C)&&(!grant("REVOKE",$ff,$C[2]," ON $C[1] FROM $Jd")||!grant("GRANT",$r,$C[2]," ON $C[1] TO $Jd"))){$k=true;break;}}}if(!$k&&isset($_GET["host"])){if($Td!=$Jd)queries("DROP USER $Td");elseif(!isset($_GET["grant"])){foreach($yc
763
-as$Nd=>$ff){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Nd,$C))grant("REVOKE",array_keys($ff),$C[2]," ON $C[1] FROM $Jd");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$k);if($lb)$e->query("DROP USER $Jd");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$k,array("privileges"=>array('','Privileges')));if($_POST){$L=$_POST;$yc=$Hd;}else{$L=$_GET+array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$Sd;if($Sd!="")$L["hashed"]=true;$yc[(DB==""||$yc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
1751
+';} elseif(isset($_GET["user"])){$fa=$_GET["user"];$Le=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$hb) {
1752
+	$Le[$hb][$L["Privilege"]]=$L["Comment"];
1753
+}
1754
+}$Le["Server Admin"]+=$Le["File access on server"];$Le["Databases"]["Create routine"]=$Le["Procedures"]["Create routine"];unset($Le["Procedures"]["Create routine"]);$Le["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X) {
1755
+	$Le["Columns"][$X]=$Le["Tables"][$X];
1756
+}
1757
+unset($Le["Server Admin"]["Usage"]);foreach($Le["Tables"]as$z=>$X) {
1758
+	unset($Le["Databases"][$z]);
1759
+}
1760
+$Hd=array();if($_POST){foreach($_POST["objects"]as$z=>$X) {
1761
+	$Hd[$X]=(array)$Hd[$X]+(array)$_POST["grants"][$z];
1762
+}
1763
+}$yc=array();$Sd="";if(isset($_GET["host"])&&($J=$e->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$C[1],$rd,PREG_SET_ORDER)){foreach($rd
1764
+as$X){if($X[1]!="USAGE") {
1765
+	$yc["$C[2]$X[2]"][$X[1]]=true;
1766
+}
1767
+if(preg_match('~ WITH GRANT OPTION~',$L[0])) {
1768
+	$yc["$C[2]$X[2]"]["GRANT OPTION"]=true;
1769
+}
1770
+}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$C)) {
1771
+	$Sd=$C[1];
1772
+}
1773
+}}if($_POST&&!$k){$Td=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"]) {
1774
+	query_redirect("DROP USER $Td",ME."privileges=",'User has been dropped.');
1775
+} else{$Jd=q($_POST["user"])."@".q($_POST["host"]);$ve=$_POST["pass"];if($ve!=''&&!$_POST["hashed"]){$ve=$e->result("SELECT PASSWORD(".q($ve).")");$k=!$ve;}$lb=false;if(!$k){if($Td!=$Jd){$lb=queries(($e->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Jd IDENTIFIED BY PASSWORD ".q($ve));$k=!$lb;} elseif($ve!=$Sd) {
1776
+	queries("SET PASSWORD FOR $Jd = ".q($ve));
1777
+}
1778
+}if(!$k){$ff=array();foreach($Hd
1779
+as$Nd=>$r){if(isset($_GET["grant"])) {
1780
+	$r=array_filter($r);
1781
+}
1782
+$r=array_keys($r);if(isset($_GET["grant"])) {
1783
+	$ff=array_diff(array_keys(array_filter($Hd[$Nd],'strlen')),$r);
1784
+} elseif($Td==$Jd){$Qd=array_keys((array)$yc[$Nd]);$ff=array_diff($Qd,$r);$r=array_diff($r,$Qd);unset($yc[$Nd]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Nd,$C)&&(!grant("REVOKE",$ff,$C[2]," ON $C[1] FROM $Jd")||!grant("GRANT",$r,$C[2]," ON $C[1] TO $Jd"))){$k=true;break;}}}if(!$k&&isset($_GET["host"])){if($Td!=$Jd) {
1785
+	queries("DROP USER $Td");
1786
+} elseif(!isset($_GET["grant"])){foreach($yc
1787
+as$Nd=>$ff){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Nd,$C)) {
1788
+	grant("REVOKE",array_keys($ff),$C[2]," ON $C[1] FROM $Jd");
1789
+}
1790
+}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$k);if($lb) {
1791
+	$e->query("DROP USER $Jd");
1792
+}
1793
+}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$k,array("privileges"=>array('','Privileges')));if($_POST){$L=$_POST;$yc=$Hd;} else{$L=$_GET+array("host"=>$e->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$Sd;if($Sd!="") {
1794
+	$L["hashed"]=true;
1795
+}
1796
+$yc[(DB==""||$yc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
764 1797
 <table cellspacing="0">
765 1798
 <tr><th>Server<td><input name="host" maxlength="60" value="',h($L["host"]),'" autocapitalize="off">
766 1799
 <tr><th>Username<td><input name="user" maxlength="16" value="',h($L["user"]),'" autocapitalize="off">
@@ -770,36 +1803,167 @@  discard block
 block discarded – undo
770 1803
 
771 1804
 ';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($yc
772 1805
 as$Nd=>$r){echo'<th>'.($Nd!="*.*"?"<input name='objects[$t]' value='".h($Nd)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$t]' value='*.*' size='10'>*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$hb=>$xb){foreach((array)$Le[$hb]as$Ke=>$bb){echo"<tr".odd()."><td".($xb?">$xb<td":" colspan='2'").' lang="en" title="'.h($bb).'">'.h($Ke);$t=0;foreach($yc
773
-as$Nd=>$r){$F="'grants[$t][".h(strtoupper($Ke))."]'";$Y=$r[strtoupper($Ke)];if($hb=="Server Admin"&&$Nd!=(isset($yc["*.*"])?"*.*":".*"))echo"<td>&nbsp;";elseif(isset($_GET["grant"]))echo"<td><select name=$F><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else
774
-echo"<td align='center'><label class='block'><input type='checkbox' name=$F value='1'".($Y?" checked":"").($Ke=="All privileges"?" id='grants-$t-all'":($Ke=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$t-all');\""))."></label>";$t++;}}}echo"</table>\n",'<p>
1806
+as$Nd=>$r){$F="'grants[$t][".h(strtoupper($Ke))."]'";$Y=$r[strtoupper($Ke)];if($hb=="Server Admin"&&$Nd!=(isset($yc["*.*"])?"*.*":".*")) {
1807
+	echo"<td>&nbsp;";
1808
+} elseif(isset($_GET["grant"])) {
1809
+	echo"<td><select name=$F><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";
1810
+} else {
1811
+	echo"<td align='center'><label class='block'><input type='checkbox' name=$F value='1'".($Y?" checked":"").($Ke=="All privileges"?" id='grants-$t-all'":($Ke=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$t-all');\""))."></label>";
1812
+}
1813
+$t++;}}}echo"</table>\n",'<p>
775 1814
 <input type="submit" value="Save">
776 1815
 ';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="Drop"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
777 1816
 </form>
778
-';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$k){$cd=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$cd++;}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$cd),$cd||!$_POST["kill"]);}page_header('Process list',$k);echo'
1817
+';} elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$k){$cd=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X)) {
1818
+	$cd++;
1819
+}
1820
+}queries_redirect(ME."processlist=",lang(array('%d process has been killed.','%d processes have been killed.'),$cd),$cd||!$_POST["kill"]);}page_header('Process list',$k);echo'
779 1821
 <form action="" method="post">
780 1822
 <table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable">
781 1823
 ';$t=-1;foreach(process_list()as$t=>$L){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th>&nbsp;":"");foreach($L
782
-as$z=>$X)echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$L[$y=="sql"?"Id":"pid"],0):"");foreach($L
783
-as$z=>$X)echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$y'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':nbsp($X));echo"\n";}echo'</table>
1824
+as$z=>$X) {
1825
+	echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",));
1826
+}
1827
+echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$L[$y=="sql"?"Id":"pid"],0):"");foreach($L
1828
+as$z=>$X) {
1829
+	echo"<td>".(($y=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($y=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||($y=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-$y'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':nbsp($X));
1830
+}
1831
+echo"\n";}echo'</table>
784 1832
 <script type=\'text/javascript\'>tableCheck();</script>
785 1833
 <p>
786 1834
 ';if(support("kill")){echo($t+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";}echo'<input type="hidden" name="token" value="',$T,'">
787 1835
 </form>
788
-';}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$w=indexes($a);$m=fields($a);$o=column_foreign_keys($a);$Pd="";if($R["Oid"]){$Pd=($y=="sqlite"?"rowid":"oid");$w[]=array("type"=>"PRIMARY","columns"=>array($Pd));}parse_str($_COOKIE["adminer_import"],$ma);$gf=array();$d=array();$ag=null;foreach($m
789
-as$z=>$l){$F=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$F!=""){$d[$z]=html_entity_decode(strip_tags($F),ENT_QUOTES);if(is_shortable($l))$ag=$b->selectLengthProcess();}$gf+=$l["privileges"];}list($N,$s)=$b->selectColumnsProcess($d,$w);$Vc=count($s)<count($N);$Z=$b->selectSearchProcess($m,$w);$de=$b->selectOrderProcess($m,$w);$_=$b->selectLimitProcess();$wc=($N?implode(", ",$N):"*".($Pd?", $Pd":"")).convert_fields($d,$m,$N)."\nFROM ".table($a);$zc=($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$xg=>$L){$ua=convert_field($m[key($L)]);$N=array($ua?$ua:idf_escape(key($L)));$Z[]=where_check($xg,$m);$K=$j->select($a,$N,$Z,$N);if($K)echo
790
-reset($K->fetch_row());}exit;}if($_POST&&!$k){$Pg=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Oa=array();foreach($_POST["check"]as$Ma)$Oa[]=where_check($Ma,$m);$Pg[]="((".implode(") OR (",$Oa)."))";}$Pg=($Pg?"\nWHERE ".implode(" AND ",$Pg):"");$He=$zg=null;foreach($w
1836
+';} elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$w=indexes($a);$m=fields($a);$o=column_foreign_keys($a);$Pd="";if($R["Oid"]){$Pd=($y=="sqlite"?"rowid":"oid");$w[]=array("type"=>"PRIMARY","columns"=>array($Pd));}parse_str($_COOKIE["adminer_import"],$ma);$gf=array();$d=array();$ag=null;foreach($m
1837
+as$z=>$l){$F=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$F!=""){$d[$z]=html_entity_decode(strip_tags($F),ENT_QUOTES);if(is_shortable($l)) {
1838
+	$ag=$b->selectLengthProcess();
1839
+}
1840
+}$gf+=$l["privileges"];}list($N,$s)=$b->selectColumnsProcess($d,$w);$Vc=count($s)<count($N);$Z=$b->selectSearchProcess($m,$w);$de=$b->selectOrderProcess($m,$w);$_=$b->selectLimitProcess();$wc=($N?implode(", ",$N):"*".($Pd?", $Pd":"")).convert_fields($d,$m,$N)."\nFROM ".table($a);$zc=($s&&$Vc?"\nGROUP BY ".implode(", ",$s):"").($de?"\nORDER BY ".implode(", ",$de):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$xg=>$L){$ua=convert_field($m[key($L)]);$N=array($ua?$ua:idf_escape(key($L)));$Z[]=where_check($xg,$m);$K=$j->select($a,$N,$Z,$N);if($K) {
1841
+	echo
1842
+reset($K->fetch_row());
1843
+}
1844
+}exit;}if($_POST&&!$k){$Pg=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Oa=array();foreach($_POST["check"]as$Ma) {
1845
+	$Oa[]=where_check($Ma,$m);
1846
+}
1847
+$Pg[]="((".implode(") OR (",$Oa)."))";}$Pg=($Pg?"\nWHERE ".implode(" AND ",$Pg):"");$He=$zg=null;foreach($w
791 1848
 as$v){if($v["type"]=="PRIMARY"){$He=array_flip($v["columns"]);$zg=($N?$He:array());break;}}foreach((array)$zg
792
-as$z=>$X){if(in_array(idf_escape($z),$N))unset($zg[$z]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$zg===array())$I="SELECT $wc$Pg$zc";else{$vg=array();foreach($_POST["check"]as$X)$vg[]="(SELECT".limit($wc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m).$zc,1).")";$I=implode(" UNION ALL ",$vg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$o)){if($_POST["save"]||$_POST["delete"]){$J=true;$na=0;$P=array();if(!$_POST["delete"]){foreach($d
793
-as$F=>$X){$X=process_input($m[$F]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($F)]=($X!==false?$X:idf_escape($F));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($zg===array()&&is_array($_POST["check"]))||$Vc){$J=($_POST["delete"]?$j->delete($a,$Pg):($_POST["clone"]?queries("INSERT $I$Pg"):$j->update($a,$P,$Pg)));$na=$e->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Og="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m);$J=($_POST["delete"]?$j->delete($a,$Og,1):($_POST["clone"]?queries("INSERT".limit1($I,$Og)):$j->update($a,$P,$Og)));if(!$J)break;$na+=$e->affected_rows;}}}$D=lang(array('%d item has been affected.','%d items have been affected.'),$na);if($_POST["clone"]&&$J&&$na==1){$gd=last_id();if($gd)$D=sprintf('Item%s has been inserted.'," $gd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$na=0;foreach($_POST["val"]as$xg=>$L){$P=array();foreach($L
794
-as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$m[$z]["type"])||$X!=""?$b->processInput($m[$z],$X):"NULL");}$J=$j->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($xg,$m),!($Vc||$zg===array())," ");if(!$J)break;$na+=$e->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$na),$J);}}elseif(!is_string($mc=get_file("csv_file",true)))$k=upload_error($mc);elseif(!preg_match('~~u',$mc))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ma["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Ya=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$mc,$rd);$na=count($rd[0]);$j->begin();$sf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($rd[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$sf]*)$sf~",$X.$sf,$sd);if(!$z&&!array_diff($sd[1],$Ya)){$Ya=$sd[1];$na--;}else{$P=array();foreach($sd[1]as$t=>$Ua)$P[idf_escape($Ya[$t])]=($Ua==""&&$m[$Ya[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ua))));$M[]=$P;}}$J=(!$M||$j->insertUpdate($a,$M,$He));if($J)$j->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$na),$J);$j->rollback();}}}$Pf=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
795
-page_header('Select'.": $Pf",$k);$P=null;if(isset($gf["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if(count($o[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$P);if(!$d&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$d);$b->selectSearchPrint($Z,$d,$w);$b->selectOrderPrint($de,$d,$w);$b->selectLimitPrint($_);$b->selectLengthPrint($ag);$b->selectActionPrint($w);echo"</form>\n";$G=$_GET["page"];if($G=="last"){$vc=$e->result(count_rows($a,$Z,$Vc,$s));$G=floor(max(0,$vc-1)/$_);}$pf=$N;if(!$pf){$pf[]="*";if($Pd)$pf[]=$Pd;}$ib=convert_fields($d,$m,$N);if($ib)$pf[]=substr($ib,2);$J=$j->select($a,$pf,$Z,$s,$de,$_,$G,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($y=="mssql"&&$G)$J->seek($_*$G);$Rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql")$vc=$e->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$Ba=$b->backwardKeys($a,$Pf);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$s&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Gd=array();$xc=array();reset($N);$Te=1;foreach($M[0]as$z=>$X){if($z!=$Pd){$X=$_GET["columns"][key($N)];$l=$m[$N?($X?$X["col"]:current($N)):$z];$F=($l?$b->fieldName($l,$Te):($X["fun"]?"*":$z));if($F!=""){$Te++;$Gd[$z]=$F;$c=idf_escape($z);$Hc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$xb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($Hc.($de[0]==$c||$de[0]==$z||(!$de&&$Vc&&$s[0]==$c)?$xb:'')).'">';echo
796
-apply_sql_function($X["fun"],$F)."</a>";echo"<span class='column hidden'>","<a href='".h($Hc.$xb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($z)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$xc[$z]=$X["fun"];next($N);}}$md=array();if($_GET["modify"]){foreach($M
1849
+as$z=>$X){if(in_array(idf_escape($z),$N)) {
1850
+	unset($zg[$z]);
1851
+}
1852
+}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$zg===array()) {
1853
+	$I="SELECT $wc$Pg$zc";
1854
+} else{$vg=array();foreach($_POST["check"]as$X) {
1855
+	$vg[]="(SELECT".limit($wc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m).$zc,1).")";
1856
+}
1857
+$I=implode(" UNION ALL ",$vg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$o)){if($_POST["save"]||$_POST["delete"]){$J=true;$na=0;$P=array();if(!$_POST["delete"]){foreach($d
1858
+as$F=>$X){$X=process_input($m[$F]);if($X!==null&&($_POST["clone"]||$X!==false)) {
1859
+	$P[idf_escape($F)]=($X!==false?$X:idf_escape($F));
1860
+}
1861
+}}if($_POST["delete"]||$P){if($_POST["clone"]) {
1862
+	$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);
1863
+}
1864
+if($_POST["all"]||($zg===array()&&is_array($_POST["check"]))||$Vc){$J=($_POST["delete"]?$j->delete($a,$Pg):($_POST["clone"]?queries("INSERT $I$Pg"):$j->update($a,$P,$Pg)));$na=$e->affected_rows;} else{foreach((array)$_POST["check"]as$X){$Og="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$m);$J=($_POST["delete"]?$j->delete($a,$Og,1):($_POST["clone"]?queries("INSERT".limit1($I,$Og)):$j->update($a,$P,$Og)));if(!$J) {
1865
+	break;
1866
+}
1867
+$na+=$e->affected_rows;}}}$D=lang(array('%d item has been affected.','%d items have been affected.'),$na);if($_POST["clone"]&&$J&&$na==1){$gd=last_id();if($gd) {
1868
+	$D=sprintf('Item%s has been inserted.'," $gd");
1869
+}
1870
+}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}} elseif(!$_POST["import"]){if(!$_POST["val"]) {
1871
+	$k='Ctrl+click on a value to modify it.';
1872
+} else{$J=true;$na=0;foreach($_POST["val"]as$xg=>$L){$P=array();foreach($L
1873
+as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$m[$z]["type"])||$X!=""?$b->processInput($m[$z],$X):"NULL");}$J=$j->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($xg,$m),!($Vc||$zg===array())," ");if(!$J) {
1874
+	break;
1875
+}
1876
+$na+=$e->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$na),$J);}} elseif(!is_string($mc=get_file("csv_file",true))) {
1877
+	$k=upload_error($mc);
1878
+} elseif(!preg_match('~~u',$mc)) {
1879
+	$k='File must be in UTF-8 encoding.';
1880
+} else{cookie("adminer_import","output=".urlencode($ma["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Ya=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$mc,$rd);$na=count($rd[0]);$j->begin();$sf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($rd[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$sf]*)$sf~",$X.$sf,$sd);if(!$z&&!array_diff($sd[1],$Ya)){$Ya=$sd[1];$na--;} else{$P=array();foreach($sd[1]as$t=>$Ua) {
1881
+	$P[idf_escape($Ya[$t])]=($Ua==""&&$m[$Ya[$t]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ua))));
1882
+}
1883
+$M[]=$P;}}$J=(!$M||$j->insertUpdate($a,$M,$He));if($J) {
1884
+	$j->commit();
1885
+}
1886
+queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$na),$J);$j->rollback();}}}$Pf=$b->tableName($R);if(is_ajax()){page_headers();ob_start();} else {
1887
+	page_header('Select'.": $Pf",$k);
1888
+}
1889
+$P=null;if(isset($gf["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if(count($o[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"])))) {
1890
+	$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);
1891
+}
1892
+}}$b->selectLinks($R,$P);if(!$d&&support("table")) {
1893
+	echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";
1894
+} else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$d);$b->selectSearchPrint($Z,$d,$w);$b->selectOrderPrint($de,$d,$w);$b->selectLimitPrint($_);$b->selectLengthPrint($ag);$b->selectActionPrint($w);echo"</form>\n";$G=$_GET["page"];if($G=="last"){$vc=$e->result(count_rows($a,$Z,$Vc,$s));$G=floor(max(0,$vc-1)/$_);}$pf=$N;if(!$pf){$pf[]="*";if($Pd) {
1895
+	$pf[]=$Pd;
1896
+}
1897
+}$ib=convert_fields($d,$m,$N);if($ib) {
1898
+	$pf[]=substr($ib,2);
1899
+}
1900
+$J=$j->select($a,$pf,$Z,$s,$de,$_,$G,true);if(!$J) {
1901
+	echo"<p class='error'>".error()."\n";
1902
+} else{if($y=="mssql"&&$G) {
1903
+	$J->seek($_*$G);
1904
+}
1905
+$Rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle") {
1906
+	unset($L["RNUM"]);
1907
+}
1908
+$M[]=$L;}if($_GET["page"]!="last"&&+$_&&$s&&$Vc&&$y=="sql") {
1909
+	$vc=$e->result(" SELECT FOUND_ROWS()");
1910
+}
1911
+if(!$M) {
1912
+	echo"<p class='message'>".'No rows.'."\n";
1913
+} else{$Ba=$b->backwardKeys($a,$Pf);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$s&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Gd=array();$xc=array();reset($N);$Te=1;foreach($M[0]as$z=>$X){if($z!=$Pd){$X=$_GET["columns"][key($N)];$l=$m[$N?($X?$X["col"]:current($N)):$z];$F=($l?$b->fieldName($l,$Te):($X["fun"]?"*":$z));if($F!=""){$Te++;$Gd[$z]=$F;$c=idf_escape($z);$Hc=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$xb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($Hc.($de[0]==$c||$de[0]==$z||(!$de&&$Vc&&$s[0]==$c)?$xb:'')).'">';echo
1914
+apply_sql_function($X["fun"],$F)."</a>";echo"<span class='column hidden'>","<a href='".h($Hc.$xb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]) {
1915
+	echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($z)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';
1916
+}
1917
+echo"</span>";}$xc[$z]=$X["fun"];next($N);}}$md=array();if($_GET["modify"]){foreach($M
797 1918
 as$L){foreach($L
798
-as$z=>$X)$md[$z]=max($md[$z],min(40,strlen(utf8_decode($X))));}}echo($Ba?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($_%2==1&&$G%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$o)as$E=>$L){$wg=unique_array($M[$E],$w);if(!$wg){$wg=array();foreach($M[$E]as$z=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$z))$wg[$z]=$X;}}$xg="";foreach($wg
1919
+as$z=>$X) {
1920
+	$md[$z]=max($md[$z],min(40,strlen(utf8_decode($X))));
1921
+}
1922
+}}echo($Ba?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($_%2==1&&$G%2==1) {
1923
+	odd();
1924
+}
1925
+ob_end_clean();}foreach($b->rowDescriptions($M,$o)as$E=>$L){$wg=unique_array($M[$E],$w);if(!$wg){$wg=array();foreach($M[$E]as$z=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$z)) {
1926
+	$wg[$z]=$X;
1927
+}
1928
+}}$xg="";foreach($wg
799 1929
 as$z=>$X){if(($y=="sql"||$y=="pgsql")&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".($y=='sql'&&preg_match("~^utf8_~",$m[$z]["collation"])?$z:"CONVERT($z USING ".charset($e).")").")";$X=md5($X);}$xg.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X):"null%5B%5D=".urlencode($z));}echo"<tr".odd().">".(!$s&&$N?"":"<td>".checkbox("check[]",substr($xg,1),in_array(substr($xg,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Vc||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$xg)."'>".'edit'."</a>"));foreach($L
800
-as$z=>$X){if(isset($Gd[$z])){$l=$m[$z];if($X!=""&&(!isset($Rb[$z])||$Rb[$z]!=""))$Rb[$z]=(is_mail($X)?$Gd[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$xg;if(!$A&&$X!==null){foreach((array)$o[$z]as$n){if(count($o[$z])==1||end($n["source"])==$z){$A="";foreach($n["source"]as$t=>$_f)$A.=where_link($t,$n["target"][$t],$M[$E][$_f]);$A=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$A;if(count($n["source"])==1)break;}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$wg))$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($wg
801
-as$Zc=>$W)$A.=where_link($t++,$Zc,$W);}$X=select_value($X,$A,$l,$ag);$u=h("val[$xg][".bracket_escape($z)."]");$Y=$_POST["val"][$xg][bracket_escape($z)];$Mb=!is_array($L[$z])&&is_utf8($X)&&$M[$E][$z]==$L[$z]&&!$xc[$z];$Zf=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$Mb)||$Y!==null){$Ac=h($Y!==null?$Y:$L[$z]);echo"<td>".($Zf?"<textarea name='$u' cols='30' rows='".(substr_count($L[$z],"\n")+1)."'>$Ac</textarea>":"<input name='$u' value='$Ac' size='$md[$z]'>");}else{$qd=strpos($X,"<i>...</i>");echo"<td id='$u' onclick=\"selectClick(this, event, ".($qd?2:($Zf?1:0)).($Mb?"":", '".h('Use edit link to modify this value.')."'").");\">$X";}}}if($Ba)echo"<td>";$b->backwardKeysPrint($Ba,$M[$E]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$G)&&!is_ajax()){$bc=true;if($_GET["page"]!="last"){if(!+$_)$vc=count($M);elseif($y!="sql"||!$Vc){$vc=($Vc?false:found_rows($R,$Z));if($vc<max(1e4,2*($G+1)*$_))$vc=reset(slow_query(count_rows($a,$Z,$Vc,$s)));else$bc=false;}}if(+$_&&($vc===false||$vc>$_||$G)){echo"<p class='pages'>";$ud=($vc===false?$G+(count($M)>=$_?2:1):floor(($vc-1)/$_));if($y!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($G+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$G).($G>5?" ...":"");for($t=max(1,$G-4);$t<min($ud,$G+5);$t++)echo
802
-pagination($t,$G);if($ud>0){echo($G+5<$ud?" ...":""),($bc&&$vc!==false?pagination($ud,$G):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ud'>".'last'."</a>");}echo(($vc===false?count($M)+1:$vc-$G*$_)>$_?' <a href="'.h(remove_from_uri("page")."&page=".($G+1)).'" onclick="return !selectLoadMore(this, '.(+$_).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$G).($G>1?" ...":""),($G?pagination($G,$G):""),($ud>$G?pagination($G+1,$G).($ud>$G+1?" ...":""):"");}}echo"<p class='count'>\n",($vc!==false?"(".($bc?"":"~ ").lang(array('%d row','%d rows'),$vc).") ":"");$Bb=($bc?"":"~ ").$vc;echo
1930
+as$z=>$X){if(isset($Gd[$z])){$l=$m[$z];if($X!=""&&(!isset($Rb[$z])||$Rb[$z]!="")) {
1931
+	$Rb[$z]=(is_mail($X)?$Gd[$z]:"");
1932
+}
1933
+$A="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$X!="") {
1934
+	$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$xg;
1935
+}
1936
+if(!$A&&$X!==null){foreach((array)$o[$z]as$n){if(count($o[$z])==1||end($n["source"])==$z){$A="";foreach($n["source"]as$t=>$_f) {
1937
+	$A.=where_link($t,$n["target"][$t],$M[$E][$_f]);
1938
+}
1939
+$A=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$A;if(count($n["source"])==1) {
1940
+	break;
1941
+}
1942
+}}}if($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$wg)) {
1943
+	$A.=where_link($t++,$W["col"],$W["val"],$W["op"]);
1944
+}
1945
+}foreach($wg
1946
+as$Zc=>$W) {
1947
+	$A.=where_link($t++,$Zc,$W);
1948
+}
1949
+}$X=select_value($X,$A,$l,$ag);$u=h("val[$xg][".bracket_escape($z)."]");$Y=$_POST["val"][$xg][bracket_escape($z)];$Mb=!is_array($L[$z])&&is_utf8($X)&&$M[$E][$z]==$L[$z]&&!$xc[$z];$Zf=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$Mb)||$Y!==null){$Ac=h($Y!==null?$Y:$L[$z]);echo"<td>".($Zf?"<textarea name='$u' cols='30' rows='".(substr_count($L[$z],"\n")+1)."'>$Ac</textarea>":"<input name='$u' value='$Ac' size='$md[$z]'>");} else{$qd=strpos($X,"<i>...</i>");echo"<td id='$u' onclick=\"selectClick(this, event, ".($qd?2:($Zf?1:0)).($Mb?"":", '".h('Use edit link to modify this value.')."'").");\">$X";}}}if($Ba) {
1950
+	echo"<td>";
1951
+}
1952
+$b->backwardKeysPrint($Ba,$M[$E]);echo"</tr>\n";}if(is_ajax()) {
1953
+	exit;
1954
+}
1955
+echo"</table>\n";}if(($M||$G)&&!is_ajax()){$bc=true;if($_GET["page"]!="last"){if(!+$_) {
1956
+	$vc=count($M);
1957
+} elseif($y!="sql"||!$Vc){$vc=($Vc?false:found_rows($R,$Z));if($vc<max(1e4,2*($G+1)*$_)) {
1958
+	$vc=reset(slow_query(count_rows($a,$Z,$Vc,$s)));
1959
+} else {
1960
+	$bc=false;
1961
+}
1962
+}}if(+$_&&($vc===false||$vc>$_||$G)){echo"<p class='pages'>";$ud=($vc===false?$G+(count($M)>=$_?2:1):floor(($vc-1)/$_));if($y!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($G+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$G).($G>5?" ...":"");for($t=max(1,$G-4);$t<min($ud,$G+5);$t++) {
1963
+	echo
1964
+pagination($t,$G);
1965
+}
1966
+if($ud>0){echo($G+5<$ud?" ...":""),($bc&&$vc!==false?pagination($ud,$G):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ud'>".'last'."</a>");}echo(($vc===false?count($M)+1:$vc-$G*$_)>$_?' <a href="'.h(remove_from_uri("page")."&page=".($G+1)).'" onclick="return !selectLoadMore(this, '.(+$_).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');} else{echo'Page'.":",pagination(0,$G).($G>1?" ...":""),($G?pagination($G,$G):""),($ud>$G?pagination($G+1,$G).($ud>$G+1?" ...":""):"");}}echo"<p class='count'>\n",($vc!==false?"(".($bc?"":"~ ").lang(array('%d row','%d rows'),$vc).") ":"");$Bb=($bc?"":"~ ").$vc;echo
803 1967
 checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Bb' : checked); selectCount('selected2', this.checked || !checked ? '$Bb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
804 1968
 <input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
805 1969
 </div></fieldset>
@@ -808,9 +1972,56 @@  discard block
 block discarded – undo
808 1972
 <input type="submit" name="clone" value="Clone">
809 1973
 <input type="submit" name="delete" value="Delete"',confirm(),'>
810 1974
 </div></fieldset>
811
-';}$tc=$b->dumpFormat();foreach((array)$_GET["columns"]as$c){if($c["fun"]){unset($tc['sql']);break;}}if($tc){print_fieldset("export",'Export'." <span id='selected2'></span>");$me=$b->dumpOutput();echo($me?html_select("output",$me,$ma["output"])." ":""),html_select("format",$tc,$ma["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$s&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ma["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Rb,'strlen'),$d);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$Df=isset($_GET["status"]);page_header($Df?'Status':'Variables');$Ig=($Df?show_status():show_variables());if(!$Ig)echo"<p class='message'>".'No rows.'."\n";else{echo"<table cellspacing='0'>\n";foreach($Ig
812
-as$z=>$X){echo"<tr>","<th><code class='jush-".$y.($Df?"status":"set")."'>".h($z)."</code>","<td>".nbsp($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Mf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$F=>$R){json_row("Comment-$F",nbsp($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z)json_row("$z-$F",nbsp($R[$z]));foreach($Mf+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$F",($z=="Rows"&&$X&&$R["Engine"]==($Bf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Mf[$z]))$Mf[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);}elseif(array_key_exists($z,$R))json_row("$z-$F");}}}foreach($Mf
813
-as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$e->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$i=>$X){json_row("tables-$i",$X);json_row("size-$i",db_size($i));}json_row("");}exit;}else{$Uf=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Uf&&!$k&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=truncate_tables($_POST["tables"]);$D='Tables have been truncated.';}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been moved.';}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$D='Tables have been dropped.';}elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tables have been optimized.';}elseif(!$_POST["tables"])$D='No tables.';elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="<b>".h($L["Table"])."</b>: ".h($L["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$k,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Tf=tables_list();if(!$Tf)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!="")search_tables();}echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';$Cb=doc_link(array('sql'=>'show-table-status.html'));echo'<th>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-mysql.html')),'<td>'.'Data Length'.$Cb,'<td>'.'Index Length'.$Cb,'<td>'.'Data Free'.$Cb,'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html')),'<td>'.'Rows'.$Cb,(support("comment")?'<td>'.'Comment'.$Cb:''),"</thead>\n";$S=0;foreach($Tf
814
-as$F=>$U){$Kg=($U!==null&&!preg_match('~table~i',$U));echo'<tr'.odd().'><td>'.checkbox(($Kg?"views[]":"tables[]"),$F,in_array($F,$Uf,true),"","formUncheck('check-all');"),'<th>'.(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($F).'" title="'.'Show structure'.'">'.h($F).'</a>':h($F));if($Kg){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($F).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized View':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($F).'" title="'.'Select data'.'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$z=>$A){$u=" id='$z-".h($F)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($F)."'$u title='$A[1]'>?</a>":"<span$u>?</span>"):"<td id='$z-".h($F)."'>&nbsp;");}$S++;}echo(support("comment")?"<td id='Comment-".h($F)."'>&nbsp;":"");}echo"<tr><td>&nbsp;<th>".sprintf('%d in total',count($Tf)),"<td>".nbsp($y=="sql"?$e->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"<td align='right' id='sum-$z'>&nbsp;";echo"</table>\n";if(!information_schema(DB)){$Gg="<input type='submit' value='".'Vacuum'."'".on_help("'VACUUM'")."> ";$ae="<input type='submit' name='optimize' value='".'Optimize'."'".on_help($y=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".($y=="sqlite"?$Gg:($y=="pgsql"?$Gg.$ae:($y=="sql"?"<input type='submit' value='".'Analyze'."'".on_help("'ANALYZE TABLE'")."> ".$ae."<input type='submit' name='check' value='".'Check'."'".on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".'Repair'."'".on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".'Truncate'."'".confirm().on_help($y=="sqlite"?"'DELETE'":"'TRUNCATE".($y=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".'Drop'."'".confirm().on_help("'DROP TABLE'").">\n";$h=(support("scheme")?$b->schemas():$b->databases());if(count($h)!=1&&$y!="sqlite"){$i=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($h?html_select("target",$h,$i):'<input name="target" value="'.h($i).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.h(ME).'create=">'.'Create table'."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.'Create view'."</a>\n":""),(support("materializedview")?'<a href="'.h(ME).'view=&amp;materialized=1">'.'Create materialized view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$kf=routines();if($kf){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td>&nbsp;</thead>\n";odd('');foreach($kf
1975
+';}$tc=$b->dumpFormat();foreach((array)$_GET["columns"]as$c){if($c["fun"]){unset($tc['sql']);break;}}if($tc){print_fieldset("export",'Export'." <span id='selected2'></span>");$me=$b->dumpOutput();echo($me?html_select("output",$me,$ma["output"])." ":""),html_select("format",$tc,$ma["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$s&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ma["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($Rb,'strlen'),$d);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}} elseif(isset($_GET["variables"])){$Df=isset($_GET["status"]);page_header($Df?'Status':'Variables');$Ig=($Df?show_status():show_variables());if(!$Ig) {
1976
+	echo"<p class='message'>".'No rows.'."\n";
1977
+} else{echo"<table cellspacing='0'>\n";foreach($Ig
1978
+as$z=>$X){echo"<tr>","<th><code class='jush-".$y.($Df?"status":"set")."'>".h($z)."</code>","<td>".nbsp($X);}echo"</table>\n";}} elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Mf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$F=>$R){json_row("Comment-$F",nbsp($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$z) {
1979
+	json_row("$z-$F",nbsp($R[$z]));
1980
+}
1981
+foreach($Mf+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($R[$z]!=""){$X=format_number($R[$z]);json_row("$z-$F",($z=="Rows"&&$X&&$R["Engine"]==($Bf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Mf[$z])) {
1982
+	$Mf[$z]+=($R["Engine"]!="InnoDB"||$z!="Data_free"?$R[$z]:0);
1983
+}
1984
+} elseif(array_key_exists($z,$R)) {
1985
+	json_row("$z-$F");
1986
+}
1987
+}}}foreach($Mf
1988
+as$z=>$X) {
1989
+	json_row("sum-$z",format_number($X));
1990
+}
1991
+json_row("");} elseif($_GET["script"]=="kill") {
1992
+	$e->query("KILL ".number($_POST["kill"]));
1993
+} else{foreach(count_tables($b->databases())as$i=>$X){json_row("tables-$i",$X);json_row("size-$i",db_size($i));}json_row("");}exit;} else{$Uf=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Uf&&!$k&&!$_POST["search"]){$J=true;$D="";if($y=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"])) {
1994
+	queries("SET foreign_key_checks = 0");
1995
+}
1996
+if($_POST["truncate"]){if($_POST["tables"]) {
1997
+	$J=truncate_tables($_POST["tables"]);
1998
+}
1999
+$D='Tables have been truncated.';} elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been moved.';} elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been copied.';} elseif($_POST["drop"]){if($_POST["views"]) {
2000
+	$J=drop_views($_POST["views"]);
2001
+}
2002
+if($J&&$_POST["tables"]) {
2003
+	$J=drop_tables($_POST["tables"]);
2004
+}
2005
+$D='Tables have been dropped.';} elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tables have been optimized.';} elseif(!$_POST["tables"]) {
2006
+	$D='No tables.';
2007
+} elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc()) {
2008
+	$D.="<b>".h($L["Table"])."</b>: ".h($L["Msg_text"])."<br>";
2009
+}
2010
+}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$k,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$Tf=tables_list();if(!$Tf) {
2011
+	echo"<p class='message'>".'No tables.'."\n";
2012
+} else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!="") {
2013
+	search_tables();
2014
+}
2015
+}echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';$Cb=doc_link(array('sql'=>'show-table-status.html'));echo'<th>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-mysql.html')),'<td>'.'Data Length'.$Cb,'<td>'.'Index Length'.$Cb,'<td>'.'Data Free'.$Cb,'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html')),'<td>'.'Rows'.$Cb,(support("comment")?'<td>'.'Comment'.$Cb:''),"</thead>\n";$S=0;foreach($Tf
2016
+as$F=>$U){$Kg=($U!==null&&!preg_match('~table~i',$U));echo'<tr'.odd().'><td>'.checkbox(($Kg?"views[]":"tables[]"),$F,in_array($F,$Uf,true),"","formUncheck('check-all');"),'<th>'.(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($F).'" title="'.'Show structure'.'">'.h($F).'</a>':h($F));if($Kg){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($F).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized View':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($F).'" title="'.'Select data'.'">?</a>';} else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$z=>$A){$u=" id='$z-".h($F)."'";echo($A?"<td align='right'>".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"<a href='".h(ME."$A[0]=").urlencode($F)."'$u title='$A[1]'>?</a>":"<span$u>?</span>"):"<td id='$z-".h($F)."'>&nbsp;");}$S++;}echo(support("comment")?"<td id='Comment-".h($F)."'>&nbsp;":"");}echo"<tr><td>&nbsp;<th>".sprintf('%d in total',count($Tf)),"<td>".nbsp($y=="sql"?$e->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z) {
2017
+	echo"<td align='right' id='sum-$z'>&nbsp;";
2018
+}
2019
+echo"</table>\n";if(!information_schema(DB)){$Gg="<input type='submit' value='".'Vacuum'."'".on_help("'VACUUM'")."> ";$ae="<input type='submit' name='optimize' value='".'Optimize'."'".on_help($y=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".($y=="sqlite"?$Gg:($y=="pgsql"?$Gg.$ae:($y=="sql"?"<input type='submit' value='".'Analyze'."'".on_help("'ANALYZE TABLE'")."> ".$ae."<input type='submit' name='check' value='".'Check'."'".on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".'Repair'."'".on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".'Truncate'."'".confirm().on_help($y=="sqlite"?"'DELETE'":"'TRUNCATE".($y=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".'Drop'."'".confirm().on_help("'DROP TABLE'").">\n";$h=(support("scheme")?$b->schemas():$b->databases());if(count($h)!=1&&$y!="sqlite"){$i=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".'Move to other database'.": ",($h?html_select("target",$h,$i):'<input name="target" value="'.h($i).'" autocapitalize="off">')," <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.h(ME).'create=">'.'Create table'."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.'Create view'."</a>\n":""),(support("materializedview")?'<a href="'.h(ME).'view=&amp;materialized=1">'.'Create materialized view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$kf=routines();if($kf){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td>&nbsp;</thead>\n";odd('');foreach($kf
815 2020
 as$L){echo'<tr'.odd().'>','<th><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($L["ROUTINE_NAME"]).'">'.h($L["ROUTINE_NAME"]).'</a>','<td>'.h($L["ROUTINE_TYPE"]),'<td>'.h($L["DTD_IDENTIFIER"]),'<td><a href="'.h(ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($L["ROUTINE_NAME"]).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$M=get_rows("SHOW EVENTS");if($M){echo"<table cellspacing='0'>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($M
816
-as$L){echo"<tr>","<th>".h($L["Name"]),"<td>".($L["Execute at"]?'At given time'."<td>".$L["Execute at"]:'Every'." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.h(ME).'event='.urlencode($L["Name"]).'">'.'Alter'.'</a>';}echo"</table>\n";$Zb=$e->result("SELECT @@event_scheduler");if($Zb&&$Zb!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Zb)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Tf)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}}}page_footer();
817 2021
\ No newline at end of file
2022
+as$L){echo"<tr>","<th>".h($L["Name"]),"<td>".($L["Execute at"]?'At given time'."<td>".$L["Execute at"]:'Every'." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.h(ME).'event='.urlencode($L["Name"]).'">'.'Alter'.'</a>';}echo"</table>\n";$Zb=$e->result("SELECT @@event_scheduler");if($Zb&&$Zb!="ON") {
2023
+	echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Zb)."\n";
2024
+}
2025
+}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($Tf) {
2026
+	echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";
2027
+}
2028
+}}}page_footer();
818 2029
\ No newline at end of file
Please login to merge, or discard this patch.
include/editor.php 2 patches
Spacing   +500 added lines, -500 removed lines patch added patch discarded remove patch
@@ -6,551 +6,551 @@
 block discarded – undo
6 6
 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
7 7
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
8 8
 * @version 4.2.5
9
-*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae)$$V=$Ae;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
10
-lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
11
-lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ	ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›­æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š	Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8А­£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü­’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤	l^íZ6˜ej…Á­³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxl֍ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù	€‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò	'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,E͝`T¦É6Ûˆ-“Åì¾ÅÚŽT[ѐªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø	•ÿš´hìÁ{Ü£•î ËԐ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV­‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØ͇Т©‰‚êcâ¡óB’—}Ø&`ˆîr+E­“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼	ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡	³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
12
-lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s>	)â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n	\ræs<ŒPi2INƐ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(ҝm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå	 Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ­˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§­ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$	CAƠ䄤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t	Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬­ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AK㝡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(­#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J	A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…):	ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDù­Ñ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8­ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æڌڇŸ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/؝X ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éPÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðȍôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEЀÔøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6â†¬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F	4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀΠt]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e­¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ	1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î	 ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*­/¹UÖVû‰¤þ­pì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Ɓ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·>	—BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ	¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6ChÂº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ߍ§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)א…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üà倠ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤	(€\r¹öGFžª@ؼÃúÙ­Àß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷È½à¸à\\P’,\"ª-rCÉrVäæYם·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’­ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/­ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê	‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rԁ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx	ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔĝ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã	ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„⢏ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ	€ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní	äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;S­Ç]ãñ@ËÇè:Ââ“­÷I~Û‘•ÙùҝÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}ϝ:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð­‰)¯i4Ñu•sÁ­ÇˆXÁMP¬‚^«ä5¹O’¥	bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE%	dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð­8=㐂ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰˦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr–	DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´­ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ҐÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±­OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
13
-lzw_decompress(compile_file('','minify_js'));}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&Ùœƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function
14
-connection(){global$f;return$f;}function
15
-adminer(){global$b;return$b;}function
16
-idf_unescape($gc){$uc=substr($gc,-1);return
17
-str_replace($uc.$uc,$uc,substr($gc,1,-1));}function
18
-escape_string($V){return
19
-substr(q($V),1,-1);}function
20
-number($V){return
21
-preg_replace('~[^0-9]+~','',$V);}function
22
-remove_slashes($pd,$Hb=false){if(get_magic_quotes_gpc()){while(list($x,$V)=each($pd)){foreach($V
23
-as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];}else$pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U));}}}}function
24
-bracket_escape($gc,$ua=false){static$re=array(':'=>':1',']'=>':2','['=>':3');return
25
-strtr($gc,($ua?array_flip($re):$re));}function
26
-charset($f){return(version_compare($f->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function
27
-h($Q){return
28
-str_replace("\0","&#0;",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
29
-nbsp($Q){return(trim($Q)!=""?h($Q):"&nbsp;");}function
30
-nl_br($Q){return
31
-str_replace("\n","<br>",$Q);}function
32
-checkbox($D,$W,$Fa,$sc="",$Tc="",$Ia=""){$K="<input type='checkbox' name='$D' value='".h($W)."'".($Fa?" checked":"").($Tc?' onclick="'.h($Tc).'"':'').">";return($sc!=""||$Ia?"<label".($Ia?" class='$Ia'":"").">$K".h($sc)."</label>":$K);}function
33
-optionlist($Xc,$Id=null,$Fe=false){$K="";foreach($Xc
34
-as$w=>$U){$Yc=array($w=>$U);if(is_array($U)){$K.='<optgroup label="'.h($w).'">';$Yc=$U;}foreach($Yc
35
-as$x=>$V)$K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V);if(is_array($U))$K.='</optgroup>';}return$K;}function
36
-html_select($D,$Xc,$W="",$Sc=true){if($Sc)return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>";$K="";foreach($Xc
37
-as$x=>$V)$K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>";return$K;}function
38
-select_input($c,$Xc,$W="",$hd=""){return($Xc?"<select$c><option value=''>$hd".optionlist($Xc,$W,true)."</select>":"<input$c size='10' value='".h($W)."' placeholder='$hd'>");}function
39
-confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function
40
-print_fieldset($r,$wc,$Je=false,$Tc=""){echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"".h($Tc)."return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'".($Je?"":" class='hidden'").">\n";}function
41
-bold($Aa,$Ia=""){return($Aa?" class='active $Ia'":($Ia?" class='$Ia'":""));}function
42
-odd($K=' class="odd"'){static$q=0;if(!$K)$q=-1;return($q++%2?$K:'');}function
43
-js_escape($Q){return
44
-addcslashes($Q,"\r\n'\\/");}function
45
-json_row($x,$V=null){static$Ib=true;if($Ib)echo"{";if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;}else{echo"\n}\n";$Ib=true;}}function
46
-ini_bool($kc){$V=ini_get($kc);return(preg_match('~^(on|true|yes)$~i',$V)||(int)$V);}function
47
-sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function
48
-set_password($X,$O,$T,$G){$_SESSION["pwds"][$X][$O][$T]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function
49
-get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function
50
-q($Q){global$f;return$f->quote($Q);}function
51
-get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$d];}return$K;}function
52
-get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g))$g=$f;$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function
53
-get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function
54
-unique_array($L,$t){foreach($t
55
-as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x]))continue
56
-2;$K[$x]=$L[$x];}return$K;}}}function
57
-escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return
58
-idf_escape($x);}function
59
-where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V))$K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin";}foreach((array)$Y["null"]as$x)$K[]=escape_key($x)." IS NULL";return
60
-implode(" AND ",$K);}function
61
-where_check($V,$m=array()){parse_str($V,$Ea);remove_slashes(array(&$Ea));return
62
-where($Ea,$m);}function
63
-where_link($q,$d,$W,$Vc="="){return"&where%5B$q%5D%5Bcol%5D=".urlencode($d)."&where%5B$q%5D%5Bop%5D=".urlencode(($W!==null?$Vc:"IS NULL"))."&where%5B$q%5D%5Bval%5D=".urlencode($W);}function
64
-convert_fields($e,$m,$N=array()){$K="";foreach($e
65
-as$x=>$V){if($N&&!in_array(idf_escape($x),$N))continue;$oa=convert_field($m[$x]);if($oa)$K.=", $oa AS ".idf_escape($x);}return$K;}function
66
-cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;return
67
-call_user_func_array('setcookie',$ed);}function
68
-restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
69
-stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
70
-set_session($x,$V){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$V;}function
71
-auth_url($X,$O,$T,$h=null){global$jb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($jb))."|username|".($h!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($X!="server"||$O!=""?urlencode($X)."=".urlencode($O)."&":"")."username=".urlencode($T).($h!=""?"&db=".urlencode($h):"").($A[2]?"&$A[2]":"");}function
72
-is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
73
-redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="")$_=".";header("Location: $_");exit;}}function
74
-query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I)$Sd=$b->messageQuery($I,$je);if($Bb){$k=error().$Sd;return
75
-false;}if($xd)redirect($_,$B.$Sd);return
76
-true;}function
77
-queries($I){global$f;static$sd=array();static$Td;if(!$Td)$Td=microtime(true);if($I===null)return
78
-array(implode("\n",$sd),format_time($Td));$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function
79
-apply_queries($I,$ee,$wb='table'){foreach($ee
80
-as$R){if(!queries("$I ".$wb($R)))return
81
-false;}return
82
-true;}function
83
-queries_redirect($_,$B,$xd){list($sd,$je)=queries(null);return
84
-query_redirect($sd,$_,$B,$xd,false,!$xd,$je);}function
85
-format_time($Td){return
86
-sprintf('%.3f s',max(0,microtime(true)-$Td));}function
87
-remove_from_uri($dd=""){return
88
-substr(preg_replace("~(?<=[?&])($dd".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
89
-pagination($F,$Ya){return" ".($F==$Ya?$F+1:'<a href="'.h(remove_from_uri("page").($F?"&page=$F".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($F+1)."</a>");}function
90
-get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb)return
91
-null;foreach($Eb
92
-as$x=>$V)$Eb[$x]=(array)$V;$K='';foreach($Eb["error"]as$x=>$k){if($k)return$k;$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd))$Ta=iconv("utf-16","utf-8",$Ta);elseif($Td=="\xEF\xBB\xBF")$Ta=substr($Ta,3);$K.=$Ta."\n\n";}else$K.=$Ta;}return$K;}function
93
-upload_error($k){$Ec=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($Ec?" ".sprintf('Maximum allowed file size is %sB.',$Ec):""):'File does not exist.');}function
94
-repeat_pattern($H,$xc){return
95
-str_repeat("$H{0,65535}",$xc/65535)."$H{0,".($xc%65535)."}";}function
96
-is_utf8($V){return(preg_match('~~u',$V)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$V));}function
97
-shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A);return
98
-h($A[1]).$Zd.(isset($A[2])?"":"<i>...</i>");}function
99
-format_number($V){return
100
-strtr(number_format($V,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
101
-friendly_url($V){return
102
-preg_replace('~[^a-z0-9_]~i','-',$V);}function
103
-hidden_fields($pd,$ic=array()){while(list($x,$V)=each($pd)){if(!in_array($x,$ic)){if(is_array($V)){foreach($V
104
-as$w=>$U)$pd[$x."[$w]"]=$U;}else
105
-echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">';}}}function
106
-hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
107
-table_status1($R,$Cb=false){$K=table_status($R,$Cb);return($K?$K:array("Name"=>$R));}function
108
-column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V)$K[$V][]=$Nb;}return$K;}function
109
-enum_input($ue,$c,$l,$W,$sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);$K=($sb!==null?"<label><input type='$ue'$c value='$sb'".((is_array($W)?in_array($sb,$W):$W===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?$W==$q+1:(is_array($W)?in_array($q+1,$W):$W===$V));$K.=" <label><input type='$ue'$c value='".($q+1)."'".($Fa?' checked':'').'>'.h($b->editVal($V,$l)).'</label>';}return$K;}function
110
-input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0)$na[]=JSON_PRETTY_PRINT;$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"])$o=null;$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum")echo
111
-nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W);else{$Ib=0;foreach($Tb
112
-as$x=>$V){if($x===""||!$V)break;$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="")echo$mc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>";elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite")$c.=" cols='50' rows='12'";else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';}elseif($o=="json")echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>';else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"]))$Gc+=7;echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function
113
-process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1)return
114
-false;if($W=="")return"NULL";return+$W;}if($l["auto_increment"]&&$W=="")return
115
-null;if($o=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($o=="NULL")return"NULL";if($l["type"]=="set")return
116
-array_sum((array)$W);if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W))return
117
-false;return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb))return
118
-false;return
119
-q($Eb);}return$b->processInput($l,$W,$o);}function
120
-fields_from_edit(){global$i;$K=array();foreach((array)$_POST["field_keys"]as$x=>$V){if($V!=""){$V=bracket_escape($V);$_POST["function"][$V]=$_POST["field_funs"][$x];$_POST["fields"][$V]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$V){$D=bracket_escape($x,1);$K[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($x==$i->primary),);}return$K;}function
121
-search_tables(){global$b,$f;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$Qb=false;foreach(table_status('',true)as$R=>$S){$D=$b->tableName($S);if(isset($S["Engine"])&&$D!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$J=$f->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$J||$J->fetch_row()){if(!$Qb){echo"<ul>\n";$Qb=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$D</a>\n":"$D: <span class='error'>".error()."</span>\n");}}}echo($Qb?"</ul>":"<p class='message'>".'No tables.')."\n";}function
122
-dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":""));session_write_close();ob_flush();flush();return$K;}function
123
-dump_csv($L){foreach($L
124
-as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="")$L[$x]='"'.str_replace('"','""',$V).'"';}echo
125
-implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function
126
-apply_sql_function($o,$d){return($o?($o=="unixepoch"?"DATETIME($d, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$d)"):$d);}function
127
-get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$Fb=@tempnam("","");if(!$Fb)return
128
-false;$K=dirname($Fb);unlink($Fb);}}return$K;}function
129
-password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va)return$K;$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function
130
-rand_string(){return
131
-md5(uniqid(mt_rand(),true));}function
132
-select_value($V,$z,$l,$he){global$b,$aa;if(is_array($V)){$K="";foreach($V
133
-as$w=>$U)$K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he);return"<table cellspacing='0'>$K</table>";}if(!$z)$z=$b->selectLink($V,$l);if($z===null){if(is_mail($V))$z="mailto:$V";if($qd=is_url($V))$z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V));}$K=$b->editVal($V,$l);if($K!==null){if($K==="")$K="&nbsp;";elseif(!is_utf8($K))$K="\0";elseif($he!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$he));else$K=h($K);}return$b->selectVal($K,$z,$l,$V);}function
134
-is_mail($pb){$pa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$H="$pa+(\\.$pa+)*@($ib?\\.)+$ib";return
135
-is_string($pb)&&preg_match("(^$H(,\\s*$H)*\$)i",$pb);}function
136
-is_url($Q){$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q,$A)?strtolower($A[1]):"");}function
137
-is_shortable($l){return
138
-preg_match('~char|text|lob|geometry|point|linestring|polygon|string~',$l["type"]);}function
139
-count_rows($R,$Y,$u,$p){global$v;$I=" FROM ".table($R).($Y?" WHERE ".implode(" AND ",$Y):"");return($u&&($v=="sql"||count($p)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$p).")$I":"SELECT COUNT(*)".($u?" FROM (SELECT 1$I$Ub) x":$I));}function
140
-slow_query($I){global$b,$qe;$h=$b->database();$ke=$b->queryTimeout();if(support("kill")&&is_object($g=connect())&&($h==""||$g->select_db($h))){$rc=$g->result("SELECT CONNECTION_ID()");echo'<script type="text/javascript">
9
+*/error_reporting(6135); $Hb = !preg_match('~^(unsafe_raw)?$~', ini_get("filter.default")); if ($Hb || ini_get("filter.default_flags")) {foreach (array('_GET', '_POST', '_COOKIE', '_SERVER')as$V) {$Ae = filter_input_array(constant("INPUT$V"), FILTER_UNSAFE_RAW); if ($Ae)$$V = $Ae; }}if (function_exists("mb_internal_encoding"))mb_internal_encoding("8bit"); if (isset($_GET["file"])) {if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {header("HTTP/1.1 304 Not Modified"); exit; }header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365 * 24 * 60 * 60) . " GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); if ($_GET["file"] == "favicon.ico") {header("Content-Type: image/x-icon"); echo
10
+lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0"); }elseif ($_GET["file"] == "default.css") {header("Content-Type: text/css; charset=utf-8"); echo
11
+lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ	ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›­æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š	Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8А­£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü­’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤	l^íZ6˜ej…Á­³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxl֍ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù	€‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò	'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,E͝`T¦É6Ûˆ-“Åì¾ÅÚŽT[ѐªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø	•ÿš´hìÁ{Ü£•î ËԐ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV­‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØ͇Т©‰‚êcâ¡óB’—}Ø&`ˆîr+E­“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼	ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡	³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}"); }elseif ($_GET["file"] == "functions.js") {header("Content-Type: text/javascript; charset=utf-8"); echo
12
+lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s>	)â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n	\ræs<ŒPi2INƐ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(ҝm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå	 Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ­˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§­ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$	CAƠ䄤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t	Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬­ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AK㝡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(­#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J	A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…):	ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDù­Ñ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8­ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æڌڇŸ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/؝X ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éPÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðȍôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEЀÔøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6â†¬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F	4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀΠt]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e­¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ	1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î	 ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*­/¹UÖVû‰¤þ­pì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Ɓ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·>	—BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ	¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6ChÂº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ߍ§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)א…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üà倠ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤	(€\r¹öGFžª@ؼÃúÙ­Àß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷È½à¸à\\P’,\"ª-rCÉrVäæYם·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’­ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/­ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê	‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rԁ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx	ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔĝ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã	ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„⢏ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ	€ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní	äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;S­Ç]ãñ@ËÇè:Ââ“­÷I~Û‘•ÙùҝÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}ϝ:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð­‰)¯i4Ñu•sÁ­ÇˆXÁMP¬‚^«ä5¹O’¥	bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE%	dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð­8=㐂ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰˦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr–	DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´­ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ҐÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±­OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ"); }elseif ($_GET["file"] == "jush.js") {header("Content-Type: text/javascript; charset=utf-8"); echo
13
+lzw_decompress(compile_file('', 'minify_js')); } else {header("Content-Type: image/gif"); switch ($_GET["file"]) {case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;"; break; case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;"; break; case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;"; break; case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&Ùœƶ•\0Çò\0;"; break; case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;"; break; }}exit; }function
14
+connection() {global$f; return$f; }function
15
+adminer() {global$b; return$b; }function
16
+idf_unescape($gc) {$uc = substr($gc, -1); return
17
+str_replace($uc . $uc, $uc, substr($gc, 1, -1)); }function
18
+escape_string($V) {return
19
+substr(q($V), 1, -1); }function
20
+number($V) {return
21
+preg_replace('~[^0-9]+~', '', $V); }function
22
+remove_slashes($pd, $Hb = false) {if (get_magic_quotes_gpc()) {while (list($x, $V) = each($pd)) {foreach ($V
23
+as$w=>$U) {unset($pd[$x][$w]); if (is_array($U)) {$pd[$x][stripslashes($w)] = $U; $pd[] = &$pd[$x][stripslashes($w)]; } else$pd[$x][stripslashes($w)] = ($Hb ? $U : stripslashes($U)); }}}}function
24
+bracket_escape($gc, $ua = false) {static$re = array(':'=>':1', ']'=>':2', '['=>':3'); return
25
+strtr($gc, ($ua ? array_flip($re) : $re)); }function
26
+charset($f) {return(version_compare($f->server_info, "5.5.3") >= 0 ? "utf8mb4" : "utf8"); }function
27
+h($Q) {return
28
+str_replace("\0", "&#0;", htmlspecialchars($Q, ENT_QUOTES, 'utf-8')); }function
29
+nbsp($Q) {return(trim($Q) != "" ? h($Q) : "&nbsp;"); }function
30
+nl_br($Q) {return
31
+str_replace("\n", "<br>", $Q); }function
32
+checkbox($D, $W, $Fa, $sc = "", $Tc = "", $Ia = "") {$K = "<input type='checkbox' name='$D' value='" . h($W) . "'" . ($Fa ? " checked" : "") . ($Tc ? ' onclick="' . h($Tc) . '"' : '') . ">"; return($sc != "" || $Ia ? "<label" . ($Ia ? " class='$Ia'" : "") . ">$K" . h($sc) . "</label>" : $K); }function
33
+optionlist($Xc, $Id = null, $Fe = false) {$K = ""; foreach ($Xc
34
+as$w=>$U) {$Yc = array($w=>$U); if (is_array($U)) {$K .= '<optgroup label="' . h($w) . '">'; $Yc = $U; }foreach ($Yc
35
+as$x=>$V)$K .= '<option' . ($Fe || is_string($x) ? ' value="' . h($x) . '"' : '') . (($Fe || is_string($x) ? (string) $x : $V) === $Id ? ' selected' : '') . '>' . h($V); if (is_array($U))$K .= '</optgroup>'; }return$K; }function
36
+html_select($D, $Xc, $W = "", $Sc = true) {if ($Sc)return"<select name='" . h($D) . "'" . (is_string($Sc) ? ' onchange="' . h($Sc) . '"' : "") . ">" . optionlist($Xc, $W) . "</select>"; $K = ""; foreach ($Xc
37
+as$x=>$V)$K .= "<label><input type='radio' name='" . h($D) . "' value='" . h($x) . "'" . ($x == $W ? " checked" : "") . ">" . h($V) . "</label>"; return$K; }function
38
+select_input($c, $Xc, $W = "", $hd = "") {return($Xc ? "<select$c><option value=''>$hd" . optionlist($Xc, $W, true) . "</select>" : "<input$c size='10' value='" . h($W) . "' placeholder='$hd'>"); }function
39
+confirm() {return" onclick=\"return confirm('" . 'Are you sure?' . "');\""; }function
40
+print_fieldset($r, $wc, $Je = false, $Tc = "") {echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"" . h($Tc) . "return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'" . ($Je ? "" : " class='hidden'") . ">\n"; }function
41
+bold($Aa, $Ia = "") {return($Aa ? " class='active $Ia'" : ($Ia ? " class='$Ia'" : "")); }function
42
+odd($K = ' class="odd"') {static$q = 0; if (!$K)$q = -1; return($q++ % 2 ? $K : ''); }function
43
+js_escape($Q) {return
44
+addcslashes($Q, "\r\n'\\/"); }function
45
+json_row($x, $V = null) {static$Ib = true; if ($Ib)echo"{"; if ($x != "") {echo($Ib ? "" : ",") . "\n\t\"" . addcslashes($x, "\r\n\"\\/") . '": ' . ($V !== null ? '"' . addcslashes($V, "\r\n\"\\/") . '"' : 'undefined'); $Ib = false; } else {echo"\n}\n"; $Ib = true; }}function
46
+ini_bool($kc) {$V = ini_get($kc); return(preg_match('~^(on|true|yes)$~i', $V) || (int) $V); }function
47
+sid() {static$K; if ($K === null)$K = (SID && !($_COOKIE && ini_bool("session.use_cookies"))); return$K; }function
48
+set_password($X, $O, $T, $G) {$_SESSION["pwds"][$X][$O][$T] = ($_COOKIE["adminer_key"] && is_string($G) ? array(encrypt_string($G, $_COOKIE["adminer_key"])) : $G); }function
49
+get_password() {$K = get_session("pwds"); if (is_array($K))$K = ($_COOKIE["adminer_key"] ? decrypt_string($K[0], $_COOKIE["adminer_key"]) : false); return$K; }function
50
+q($Q) {global$f; return$f->quote($Q); }function
51
+get_vals($I, $d = 0) {global$f; $K = array(); $J = $f->query($I); if (is_object($J)) {while ($L = $J->fetch_row())$K[] = $L[$d]; }return$K; }function
52
+get_key_vals($I, $g = null, $ke = 0) {global$f; if (!is_object($g))$g = $f; $K = array(); $g->timeout = $ke; $J = $g->query($I); $g->timeout = 0; if (is_object($J)) {while ($L = $J->fetch_row())$K[$L[0]] = $L[1]; }return$K; }function
53
+get_rows($I, $g = null, $k = "<p class='error'>") {global$f; $Sa = (is_object($g) ? $g : $f); $K = array(); $J = $Sa->query($I); if (is_object($J)) {while ($L = $J->fetch_assoc())$K[] = $L; }elseif (!$J && !is_object($g) && $k && defined("PAGE_HEADER"))echo$k . error() . "\n"; return$K; }function
54
+unique_array($L, $t) {foreach ($t
55
+as$s) {if (preg_match("~PRIMARY|UNIQUE~", $s["type"])) {$K = array(); foreach ($s["columns"]as$x) {if (!isset($L[$x]))continue
56
+2; $K[$x] = $L[$x]; }return$K; }}}function
57
+escape_key($x) {if (preg_match('(^([\w(]+)(' . str_replace("_", ".*", preg_quote(idf_escape("_"))) . ')([ \w)]+)$)', $x, $A))return$A[1] . idf_escape(idf_unescape($A[2])) . $A[3]; return
58
+idf_escape($x); }function
59
+where($Y, $m = array()) {global$f, $v; $K = array(); foreach ((array) $Y["where"]as$x=>$V) {$x = bracket_escape($x, 1); $d = escape_key($x); $K[] = $d . (($v == "sql" && preg_match('~^[0-9]*\\.[0-9]*$~', $V)) || $v == "mssql" ? " LIKE " . q(addcslashes($V, "%_\\")) : " = " . unconvert_field($m[$x], q($V))); if ($v == "sql" && preg_match('~char|text~', $m[$x]["type"]) && preg_match("~[^ -@]~", $V))$K[] = "$d = " . q($V) . " COLLATE " . charset($f) . "_bin"; }foreach ((array) $Y["null"]as$x)$K[] = escape_key($x) . " IS NULL"; return
60
+implode(" AND ", $K); }function
61
+where_check($V, $m = array()) {parse_str($V, $Ea); remove_slashes(array(&$Ea)); return
62
+where($Ea, $m); }function
63
+where_link($q, $d, $W, $Vc = "=") {return"&where%5B$q%5D%5Bcol%5D=" . urlencode($d) . "&where%5B$q%5D%5Bop%5D=" . urlencode(($W !== null ? $Vc : "IS NULL")) . "&where%5B$q%5D%5Bval%5D=" . urlencode($W); }function
64
+convert_fields($e, $m, $N = array()) {$K = ""; foreach ($e
65
+as$x=>$V) {if ($N && !in_array(idf_escape($x), $N))continue; $oa = convert_field($m[$x]); if ($oa)$K .= ", $oa AS " . idf_escape($x); }return$K; }function
66
+cookie($D, $W, $zc = 2592000) {global$aa; $ed = array($D, (preg_match("~\n~", $W) ? "" : $W), ($zc ? time() + $zc : 0), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $aa); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$ed[] = true; return
67
+call_user_func_array('setcookie', $ed); }function
68
+restart_session() {if (!ini_bool("session.use_cookies"))session_start(); }function
69
+stop_session() {if (!ini_bool("session.use_cookies"))session_write_close(); }function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]; }function
70
+set_session($x, $V) {$_SESSION[$x][DRIVER][SERVER][$_GET["username"]] = $V; }function
71
+auth_url($X, $O, $T, $h = null) {global$jb; preg_match('~([^?]*)\\??(.*)~', remove_from_uri(implode("|", array_keys($jb)) . "|username|" . ($h !== null ? "db|" : "") . session_name()), $A); return"$A[1]?" . (sid() ? SID . "&" : "") . ($X != "server" || $O != "" ? urlencode($X) . "=" . urlencode($O) . "&" : "") . "username=" . urlencode($T) . ($h != "" ? "&db=" . urlencode($h) : "") . ($A[2] ? "&$A[2]" : ""); }function
72
+is_ajax() {return($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"); }function
73
+redirect($_, $B = null) {if ($B !== null) {restart_session(); $_SESSION["messages"][preg_replace('~^[^?]*~', '', ($_ !== null ? $_ : $_SERVER["REQUEST_URI"]))][] = $B; }if ($_ !== null) {if ($_ == "")$_ = "."; header("Location: $_"); exit; }}function
74
+query_redirect($I, $_, $B, $xd = true, $zb = true, $Bb = false, $je = "") {global$f, $k, $b; if ($zb) {$Td = microtime(true); $Bb = !$f->query($I); $je = format_time($Td); }$Sd = ""; if ($I)$Sd = $b->messageQuery($I, $je); if ($Bb) {$k = error() . $Sd; return
75
+false; }if ($xd)redirect($_, $B . $Sd); return
76
+true; }function
77
+queries($I) {global$f; static$sd = array(); static$Td; if (!$Td)$Td = microtime(true); if ($I === null)return
78
+array(implode("\n", $sd), format_time($Td)); $sd[] = (preg_match('~;$~', $I) ? "DELIMITER ;;\n$I;\nDELIMITER " : $I) . ";"; return$f->query($I); }function
79
+apply_queries($I, $ee, $wb = 'table') {foreach ($ee
80
+as$R) {if (!queries("$I " . $wb($R)))return
81
+false; }return
82
+true; }function
83
+queries_redirect($_, $B, $xd) {list($sd, $je) = queries(null); return
84
+query_redirect($sd, $_, $B, $xd, false, !$xd, $je); }function
85
+format_time($Td) {return
86
+sprintf('%.3f s', max(0, microtime(true) - $Td)); }function
87
+remove_from_uri($dd = "") {return
88
+substr(preg_replace("~(?<=[?&])($dd" . (SID ? "" : "|" . session_name()) . ")=[^&]*&~", '', "$_SERVER[REQUEST_URI]&"), 0, -1); }function
89
+pagination($F, $Ya) {return" " . ($F == $Ya ? $F + 1 : '<a href="' . h(remove_from_uri("page") . ($F ? "&page=$F" . ($_GET["next"] ? "&next=" . urlencode($_GET["next"]) : "") : "")) . '">' . ($F + 1) . "</a>"); }function
90
+get_file($x, $bb = false) {$Eb = $_FILES[$x]; if (!$Eb)return
91
+null; foreach ($Eb
92
+as$x=>$V)$Eb[$x] = (array) $V; $K = ''; foreach ($Eb["error"]as$x=>$k) {if ($k)return$k; $D = $Eb["name"][$x]; $pe = $Eb["tmp_name"][$x]; $Ta = file_get_contents($bb && preg_match('~\\.gz$~', $D) ? "compress.zlib://$pe" : $pe); if ($bb) {$Td = substr($Ta, 0, 3); if (function_exists("iconv") && preg_match("~^\xFE\xFF|^\xFF\xFE~", $Td, $yd))$Ta = iconv("utf-16", "utf-8", $Ta); elseif ($Td == "\xEF\xBB\xBF")$Ta = substr($Ta, 3); $K .= $Ta . "\n\n"; } else$K .= $Ta; }return$K; }function
93
+upload_error($k) {$Ec = ($k == UPLOAD_ERR_INI_SIZE ? ini_get("upload_max_filesize") : 0); return($k ? 'Unable to upload a file.' . ($Ec ? " " . sprintf('Maximum allowed file size is %sB.', $Ec) : "") : 'File does not exist.'); }function
94
+repeat_pattern($H, $xc) {return
95
+str_repeat("$H{0,65535}", $xc / 65535) . "$H{0," . ($xc % 65535) . "}"; }function
96
+is_utf8($V) {return(preg_match('~~u', $V) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $V)); }function
97
+shorten_utf8($Q, $xc = 80, $Zd = "") {if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{FFFF}]", $xc) . ")($)?)u", $Q, $A))preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $xc) . ")($)?)", $Q, $A); return
98
+h($A[1]) . $Zd . (isset($A[2]) ? "" : "<i>...</i>"); }function
99
+format_number($V) {return
100
+strtr(number_format($V, 0, ".", ','), preg_split('~~u', '0123456789', -1, PREG_SPLIT_NO_EMPTY)); }function
101
+friendly_url($V) {return
102
+preg_replace('~[^a-z0-9_]~i', '-', $V); }function
103
+hidden_fields($pd, $ic = array()) {while (list($x, $V) = each($pd)) {if (!in_array($x, $ic)) {if (is_array($V)) {foreach ($V
104
+as$w=>$U)$pd[$x . "[$w]"] = $U; } else
105
+echo'<input type="hidden" name="' . h($x) . '" value="' . h($V) . '">'; }}}function
106
+hidden_fields_get() {echo(sid() ? '<input type="hidden" name="' . session_name() . '" value="' . h(session_id()) . '">' : ''), (SERVER !== null ? '<input type="hidden" name="' . DRIVER . '" value="' . h(SERVER) . '">' : ""), '<input type="hidden" name="username" value="' . h($_GET["username"]) . '">'; }function
107
+table_status1($R, $Cb = false) {$K = table_status($R, $Cb); return($K ? $K : array("Name"=>$R)); }function
108
+column_foreign_keys($R) {global$b; $K = array(); foreach ($b->foreignKeys($R)as$Nb) {foreach ($Nb["source"]as$V)$K[$V][] = $Nb; }return$K; }function
109
+enum_input($ue, $c, $l, $W, $sb = null) {global$b; preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $Bc); $K = ($sb !== null ? "<label><input type='$ue'$c value='$sb'" . ((is_array($W) ? in_array($sb, $W) : $W === 0) ? " checked" : "") . "><i>" . 'empty' . "</i></label>" : ""); foreach ($Bc[1]as$q=>$V) {$V = stripcslashes(str_replace("''", "'", $V)); $Fa = (is_int($W) ? $W == $q + 1 : (is_array($W) ? in_array($q + 1, $W) : $W === $V)); $K .= " <label><input type='$ue'$c value='" . ($q + 1) . "'" . ($Fa ? ' checked' : '') . '>' . h($b->editVal($V, $l)) . '</label>'; }return$K; }function
110
+input($l, $W, $o) {global$f, $we, $b, $v; $D = h(bracket_escape($l["field"])); echo"<td class='function'>"; if (is_array($W) && !$o) {$na = array($W); if (version_compare(PHP_VERSION, 5.4) >= 0)$na[] = JSON_PRETTY_PRINT; $W = call_user_func_array('json_encode', $na); $o = "json"; }$Ad = ($v == "mssql" && $l["auto_increment"]); if ($Ad && !$_POST["save"])$o = null; $Tb = (isset($_GET["select"]) || $Ad ? array("orig"=>'original') : array()) + $b->editFunctions($l); $c = " name='fields[$D]'"; if ($l["type"] == "enum")echo
111
+nbsp($Tb[""]) . "<td>" . $b->editInput($_GET["edit"], $l, $c, $W); else {$Ib = 0; foreach ($Tb
112
+as$x=>$V) {if ($x === "" || !$V)break; $Ib++; }$Sc = ($Ib ? " onchange=\"var f = this.form['function[" . h(js_escape(bracket_escape($l["field"]))) . "]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'" : ""); $c .= $Sc; $Yb = (in_array($o, $Tb) || isset($Tb[$o])); echo(count($Tb) > 1 ? "<select name='function[$D]' onchange='functionChange(this);'" . on_help("getTarget(event).value.replace(/^SQL\$/, '')", 1) . ">" . optionlist($Tb, $o === null || $Yb ? $o : "") . "</select>" : nbsp(reset($Tb))) . '<td>'; $mc = $b->editInput($_GET["edit"], $l, $c, $W); if ($mc != "")echo$mc; elseif ($l["type"] == "set") {preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $Bc); foreach ($Bc[1]as$q=>$V) {$V = stripcslashes(str_replace("''", "'", $V)); $Fa = (is_int($W) ? ($W >> $q) & 1 : in_array($V, explode(",", $W), true)); echo" <label><input type='checkbox' name='fields[$D][$q]' value='" . (1 << $q) . "'" . ($Fa ? ' checked' : '') . "$Sc>" . h($b->editVal($V, $l)) . '</label>'; }}elseif (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>"; elseif (($ge = preg_match('~text|lob~', $l["type"])) || preg_match("~\n~", $W)) {if ($ge && $v != "sqlite")$c .= " cols='50' rows='12'"; else {$M = min(12, substr_count($W, "\n") + 1); $c .= " cols='30' rows='$M'" . ($M == 1 ? " style='height: 1.2em;'" : ""); }echo"<textarea$c>" . h($W) . '</textarea>'; }elseif ($o == "json")echo"<textarea$c cols='50' rows='12' class='jush-js'>" . h($W) . '</textarea>'; else {$Gc = (!preg_match('~int~', $l["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $l["length"], $A) ? ((preg_match("~binary~", $l["type"]) ? 2 : 1) * $A[1] + ($A[3] ? 1 : 0) + ($A[2] && !$l["unsigned"] ? 1 : 0)) : ($we[$l["type"]] ? $we[$l["type"]] + ($l["unsigned"] ? 0 : 1) : 0)); if ($v == 'sql' && $f->server_info >= 5.6 && preg_match('~time~', $l["type"]))$Gc += 7; echo"<input" . ((!$Yb || $o === "") && preg_match('~(?<!o)int~', $l["type"]) ? " type='number'" : "") . " value='" . h($W) . "'" . ($Gc ? " maxlength='$Gc'" : "") . (preg_match('~char|binary~', $l["type"]) && $Gc > 20 ? " size='40'" : "") . "$c>"; }}}function
113
+process_input($l) {global$b; $gc = bracket_escape($l["field"]); $o = $_POST["function"][$gc]; $W = $_POST["fields"][$gc]; if ($l["type"] == "enum") {if ($W == -1)return
114
+false; if ($W == "")return"NULL"; return+$W; }if ($l["auto_increment"] && $W == "")return
115
+null; if ($o == "orig")return($l["on_update"] == "CURRENT_TIMESTAMP" ? idf_escape($l["field"]) : false); if ($o == "NULL")return"NULL"; if ($l["type"] == "set")return
116
+array_sum((array) $W); if ($o == "json") {$o = ""; $W = json_decode($W, true); if (!is_array($W))return
117
+false; return$W; }if (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads")) {$Eb = get_file("fields-$gc"); if (!is_string($Eb))return
118
+false; return
119
+q($Eb); }return$b->processInput($l, $W, $o); }function
120
+fields_from_edit() {global$i; $K = array(); foreach ((array) $_POST["field_keys"]as$x=>$V) {if ($V != "") {$V = bracket_escape($V); $_POST["function"][$V] = $_POST["field_funs"][$x]; $_POST["fields"][$V] = $_POST["field_vals"][$x]; }}foreach ((array) $_POST["fields"]as$x=>$V) {$D = bracket_escape($x, 1); $K[$D] = array("field"=>$D, "privileges"=>array("insert"=>1, "update"=>1), "null"=>1, "auto_increment"=>($x == $i->primary),); }return$K; }function
121
+search_tables() {global$b, $f; $_GET["where"][0]["op"] = "LIKE %%"; $_GET["where"][0]["val"] = $_POST["query"]; $Qb = false; foreach (table_status('', true)as$R=>$S) {$D = $b->tableName($S); if (isset($S["Engine"]) && $D != "" && (!$_POST["tables"] || in_array($R, $_POST["tables"]))) {$J = $f->query("SELECT" . limit("1 FROM " . table($R), " WHERE " . implode(" AND ", $b->selectSearchProcess(fields($R), array())), 1)); if (!$J || $J->fetch_row()) {if (!$Qb) {echo"<ul>\n"; $Qb = true; }echo"<li>" . ($J ? "<a href='" . h(ME . "select=" . urlencode($R) . "&where[0][op]=" . urlencode($_GET["where"][0]["op"]) . "&where[0][val]=" . urlencode($_GET["where"][0]["val"])) . "'>$D</a>\n" : "$D: <span class='error'>" . error() . "</span>\n"); }}}echo($Qb ? "</ul>" : "<p class='message'>" . 'No tables.') . "\n"; }function
122
+dump_headers($fc, $Jc = false) {global$b; $K = $b->dumpHeaders($fc, $Jc); $bd = $_POST["output"]; if ($bd != "text")header("Content-Disposition: attachment; filename=" . $b->dumpFilename($fc) . ".$K" . ($bd != "file" && !preg_match('~[^0-9a-z]~', $bd) ? ".$bd" : "")); session_write_close(); ob_flush(); flush(); return$K; }function
123
+dump_csv($L) {foreach ($L
124
+as$x=>$V) {if (preg_match("~[\"\n,;\t]~", $V) || $V === "")$L[$x] = '"' . str_replace('"', '""', $V) . '"'; }echo
125
+implode(($_POST["format"] == "csv" ? "," : ($_POST["format"] == "tsv" ? "\t" : ";")), $L) . "\r\n"; }function
126
+apply_sql_function($o, $d) {return($o ? ($o == "unixepoch" ? "DATETIME($d, '$o')" : ($o == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$o(")) . "$d)") : $d); }function
127
+get_temp_dir() {$K = ini_get("upload_tmp_dir"); if (!$K) {if (function_exists('sys_get_temp_dir'))$K = sys_get_temp_dir(); else {$Fb = @tempnam("", ""); if (!$Fb)return
128
+false; $K = dirname($Fb); unlink($Fb); }}return$K; }function
129
+password_file($Va) {$Fb = get_temp_dir() . "/adminer.key"; $K = @file_get_contents($Fb); if ($K || !$Va)return$K; $Rb = @fopen($Fb, "w"); if ($Rb) {chmod($Fb, 0660); $K = rand_string(); fwrite($Rb, $K); fclose($Rb); }return$K; }function
130
+rand_string() {return
131
+md5(uniqid(mt_rand(), true)); }function
132
+select_value($V, $z, $l, $he) {global$b, $aa; if (is_array($V)) {$K = ""; foreach ($V
133
+as$w=>$U)$K .= "<tr>" . ($V != array_values($V) ? "<th>" . h($w) : "") . "<td>" . select_value($U, $z, $l, $he); return"<table cellspacing='0'>$K</table>"; }if (!$z)$z = $b->selectLink($V, $l); if ($z === null) {if (is_mail($V))$z = "mailto:$V"; if ($qd = is_url($V))$z = (($qd == "http" && $aa) || preg_match('~WebKit~i', $_SERVER["HTTP_USER_AGENT"]) ? $V : "https://www.adminer.org/redirect/?url=" . urlencode($V)); }$K = $b->editVal($V, $l); if ($K !== null) {if ($K === "")$K = "&nbsp;"; elseif (!is_utf8($K))$K = "\0"; elseif ($he != "" && is_shortable($l))$K = shorten_utf8($K, max(0, +$he)); else$K = h($K); }return$b->selectVal($K, $z, $l, $V); }function
134
+is_mail($pb) {$pa = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; $ib = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; $H = "$pa+(\\.$pa+)*@($ib?\\.)+$ib"; return
135
+is_string($pb) && preg_match("(^$H(,\\s*$H)*\$)i", $pb); }function
136
+is_url($Q) {$ib = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $Q, $A) ? strtolower($A[1]) : ""); }function
137
+is_shortable($l) {return
138
+preg_match('~char|text|lob|geometry|point|linestring|polygon|string~', $l["type"]); }function
139
+count_rows($R, $Y, $u, $p) {global$v; $I = " FROM " . table($R) . ($Y ? " WHERE " . implode(" AND ", $Y) : ""); return($u && ($v == "sql" || count($p) == 1) ? "SELECT COUNT(DISTINCT " . implode(", ", $p) . ")$I" : "SELECT COUNT(*)" . ($u ? " FROM (SELECT 1$I$Ub) x" : $I)); }function
140
+slow_query($I) {global$b, $qe; $h = $b->database(); $ke = $b->queryTimeout(); if (support("kill") && is_object($g = connect()) && ($h == "" || $g->select_db($h))) {$rc = $g->result("SELECT CONNECTION_ID()"); echo'<script type="text/javascript">
141 141
 var timeout = setTimeout(function () {
142
-	ajax(\'',js_escape(ME),'script=kill\', function () {
143
-	}, \'token=',$qe,'&kill=',$rc,'\');
144
-}, ',1000*$ke,');
142
+	ajax(\'',js_escape(ME), 'script=kill\', function () {
143
+	}, \'token=',$qe, '&kill=', $rc, '\');
144
+}, ',1000 * $ke, ');
145 145
 </script>
146
-';}else$g=null;ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return
147
-array_keys($K);}function
148
-get_token(){$vd=rand(1,1e6);return($vd^$_SESSION["token"]).":$vd";}function
149
-verify_token(){list($qe,$vd)=explode(":",$_POST["token"]);return($vd^$_SESSION["token"])==$qe;}function
150
-lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a)$_a++;}}$fb=range("\0","\xFF");$K="";foreach($Ka
151
-as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob))$ob=$Ne.$Ne[0];$K.=$ob;if($q)$fb[]=$Ne.$ob[0];$Ne=$ob;}return$K;}function
152
-on_help($Pa,$Pd=0){return" onmouseover='helpMouseover(this, event, ".h($Pa).", $Pd);' onmouseout='helpMouseout(this, event);'";}function
153
-edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form">
154
-';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m
155
-as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd))$cb=$yd[1];}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W))$W=$b->editVal($W,$l);$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
146
+';} else$g = null; ob_flush(); flush(); $K = @get_key_vals($I, $g, $ke); if ($g) {echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n"; ob_flush(); flush(); }return
147
+array_keys($K); }function
148
+get_token() {$vd = rand(1, 1e6); return($vd ^ $_SESSION["token"]) . ":$vd"; }function
149
+verify_token() {list($qe, $vd) = explode(":", $_POST["token"]); return($vd ^ $_SESSION["token"]) == $qe; }function
150
+lzw_decompress($za) {$gb = 256; $_a = 8; $Ka = array(); $Bd = 0; $Cd = 0; for ($q = 0; $q < strlen($za); $q++) {$Bd = ($Bd << 8) + ord($za[$q]); $Cd += 8; if ($Cd >= $_a) {$Cd -= $_a; $Ka[] = $Bd >> $Cd; $Bd &= (1 << $Cd) - 1; $gb++; if ($gb >> $_a)$_a++; }}$fb = range("\0", "\xFF"); $K = ""; foreach ($Ka
151
+as$q=>$Ja) {$ob = $fb[$Ja]; if (!isset($ob))$ob = $Ne . $Ne[0]; $K .= $ob; if ($q)$fb[] = $Ne . $ob[0]; $Ne = $ob; }return$K; }function
152
+on_help($Pa, $Pd = 0) {return" onmouseover='helpMouseover(this, event, " . h($Pa) . ", $Pd);' onmouseout='helpMouseout(this, event);'"; }function
153
+edit_form($a, $m, $L, $De) {global$b, $v, $qe, $k; $de = $b->tableName(table_status1($a, true)); page_header(($De ? 'Edit' : 'Insert'), $k, array("select"=>array($a, $de)), $de); if ($L === false)echo"<p class='error'>" . 'No rows.' . "\n"; echo'<form action="" method="post" enctype="multipart/form-data" id="form">
154
+';if (!$m)echo"<p class='error'>" . 'You have no privileges to update this table.' . "\n"; else {echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n"; foreach ($m
155
+as$D=>$l) {echo"<tr><th>" . $b->fieldName($l); $cb = $_GET["set"][bracket_escape($D)]; if ($cb === null) {$cb = $l["default"]; if ($l["type"] == "bit" && preg_match("~^b'([01]*)'\$~", $cb, $yd))$cb = $yd[1]; }$W = ($L !== null ? ($L[$D] != "" && $v == "sql" && preg_match("~enum|set~", $l["type"]) ? (is_array($L[$D]) ? array_sum($L[$D]) : +$L[$D]) : $L[$D]) : (!$De && $l["auto_increment"] ? "" : (isset($_GET["select"]) ? false : $cb))); if (!$_POST["save"] && is_string($W))$W = $b->editVal($W, $l); $o = ($_POST["save"] ? (string) $_POST["function"][$D] : ($De && $l["on_update"] == "CURRENT_TIMESTAMP" ? "now" : ($W === false ? null : ($W !== null ? '' : 'NULL')))); if (preg_match("~time~", $l["type"]) && $W == "CURRENT_TIMESTAMP") {$W = ""; $o = "now"; }input($l, $W, $o); echo"\n"; }if (!support("table"))echo"<tr>" . "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>" . "<td class='function'>" . html_select("field_funs[]", $b->editFunctions(array("null"=>isset($_GET["select"])))) . "<td><input name='field_vals[]'>" . "\n"; echo"</table>\n"; }echo"<p>\n"; if ($m) {echo"<input type='submit' value='" . 'Save' . "'>\n"; if (!isset($_GET["select"]))echo"<input type='submit' name='insert' value='" . ($De ? 'Save and continue edit' . "' onclick='return !ajaxForm(this.form, \"" . 'Saving' . '...", this)' : 'Save and insert next') . "' title='Ctrl+Shift+Enter'>\n"; }echo($De ? "<input type='submit' name='delete' value='" . 'Delete' . "'" . confirm() . ">\n" : ($_POST || !$m ? "" : "<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n")); if (isset($_GET["select"]))hidden_fields(array("check"=>(array) $_POST["check"], "clone"=>$_POST["clone"], "all"=>$_POST["all"])); echo'<input type="hidden" name="referer" value="', h(isset($_POST["referer"]) ? $_POST["referer"] : $_SERVER["HTTP_REFERER"]), '">
156 156
 <input type="hidden" name="save" value="1">
157
-<input type="hidden" name="token" value="',$qe,'">
157
+<input type="hidden" name="token" value="',$qe, '">
158 158
 </form>
159
-';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function
160
-get_lang(){return'en';}function
161
-lang($se,$Oc=null){if(is_array($se)){$jd=($Oc==1?0:1);$se=$se[$jd];}$se=str_replace("%d","%s",$se);$Oc=format_number($Oc);return
162
-sprintf($se,$Oc);}if(extension_loaded('pdo')){class
159
+';}global$b, $f, $jb, $mb, $ub, $k, $Tb, $Vb, $aa, $lc, $v, $ba, $tc, $Rc, $gd, $Wd, $Zb, $qe, $te, $we, $Ce, $ca; if (!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"]; if (!strpos($_SERVER["REQUEST_URI"], '?') && $_SERVER["QUERY_STRING"] != "")$_SERVER["REQUEST_URI"] .= "?$_SERVER[QUERY_STRING]"; $aa = $_SERVER["HTTPS"] && strcasecmp($_SERVER["HTTPS"], "off"); @ini_set("session.use_trans_sid", false); session_cache_limiter(""); if (!defined("SID")) {session_name("adminer_sid"); $ed = array(0, preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $aa); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$ed[] = true; call_user_func_array('session_set_cookie_params', $ed); session_start(); }remove_slashes(array(&$_GET, &$_POST, &$_COOKIE), $Hb); if (get_magic_quotes_runtime())set_magic_quotes_runtime(false); @set_time_limit(0); @ini_set("zend.ze1_compatibility_mode", false); @ini_set("precision", 20); function
160
+get_lang() {return'en'; }function
161
+lang($se, $Oc = null) {if (is_array($se)) {$jd = ($Oc == 1 ? 0 : 1); $se = $se[$jd]; }$se = str_replace("%d", "%s", $se); $Oc = format_number($Oc); return
162
+sprintf($se, $Oc); }if (extension_loaded('pdo')) {class
163 163
 Min_PDO
164 164
 extends
165
-PDO{var$_result,$server_info,$affected_rows,$errno,$error;function
166
-__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false)unset($b->operators[$jd]);}function
167
-dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);}catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
168
-query($I,$xe=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return
169
-false;}$this->store_result($J);return$J;}function
170
-multi_query($I){return$this->_result=$this->query($I);}function
171
-store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return
172
-false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
173
-true;}function
174
-next_result(){if(!$this->_result)return
175
-false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
176
-result($I,$l=0){$J=$this->query($I);if(!$J)return
177
-false;$L=$J->fetch();return$L[$l];}}class
165
+PDO {var$_result, $server_info, $affected_rows, $errno, $error; function
166
+__construct() {global$b; $jd = array_search("SQL", $b->operators); if ($jd !== false)unset($b->operators[$jd]); }function
167
+dsn($kb, $T, $G) {try {parent::__construct($kb, $T, $G); } catch (Exception$xb) {auth_error($xb->getMessage()); }$this->setAttribute(13, array('Min_PDOStatement')); $this->server_info = $this->getAttribute(4); }function
168
+query($I, $xe = false) {$J = parent::query($I); $this->error = ""; if (!$J) {list(,$this->errno, $this->error) = $this->errorInfo(); return
169
+false; }$this->store_result($J); return$J; }function
170
+multi_query($I) {return$this->_result = $this->query($I); }function
171
+store_result($J = null) {if (!$J) {$J = $this->_result; if (!$J)return
172
+false; }if ($J->columnCount()) {$J->num_rows = $J->rowCount(); return$J; }$this->affected_rows = $J->rowCount(); return
173
+true; }function
174
+next_result() {if (!$this->_result)return
175
+false; $this->_result->_offset = 0; return@$this->_result->nextRowset(); }function
176
+result($I, $l = 0) {$J = $this->query($I); if (!$J)return
177
+false; $L = $J->fetch(); return$L[$l]; }}class
178 178
 Min_PDOStatement
179 179
 extends
180
-PDOStatement{var$_offset=0,$num_rows;function
181
-fetch_assoc(){return$this->fetch(2);}function
182
-fetch_row(){return$this->fetch(3);}function
183
-fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$jb=array();class
184
-Min_SQL{var$_conn;function
185
-__construct($f){$this->_conn=$f;}function
186
-select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n");$Td=microtime(true);$K=$this->_conn->query($I);if($nd)echo$b->selectQuery($I,format_time($Td));return$K;}function
187
-delete($R,$td,$y=0){$I="FROM ".table($R);return
188
-queries("DELETE".($y?limit1($I,$td):" $I$td"));}function
189
-update($R,$P,$td,$y=0,$Kd="\n"){$Ge=array();foreach($P
190
-as$x=>$V)$Ge[]="$x = $V";$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return
191
-queries("UPDATE".($y?limit1($I,$td):" $I$td"));}function
192
-insert($R,$P){return
193
-queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
194
-insertUpdate($R,$M,$md){return
195
-false;}function
196
-begin(){return
197
-queries("BEGIN");}function
198
-commit(){return
199
-queries("COMMIT");}function
200
-rollback(){return
201
-queries("ROLLBACK");}}$jb=array("server"=>"MySQL")+$jb;if(!defined("DRIVER")){$kd=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class
180
+PDOStatement {var$_offset = 0, $num_rows; function
181
+fetch_assoc() {return$this->fetch(2); }function
182
+fetch_row() {return$this->fetch(3); }function
183
+fetch_field() {$L = (object) $this->getColumnMeta($this->_offset++); $L->orgtable = $L->table; $L->orgname = $L->name; $L->charsetnr = (in_array("blob", (array) $L->flags) ? 63 : 0); return$L; }}}$jb = array(); class
184
+Min_SQL {var$_conn; function
185
+__construct($f) {$this->_conn = $f; }function
186
+select($R, $N, $Y, $p, $E = array(), $y = 1, $F = 0, $nd = false) {global$b, $v; $u = (count($p) < count($N)); $I = $b->selectQueryBuild($N, $Y, $p, $E, $y, $F); if (!$I)$I = "SELECT" . limit(($_GET["page"] != "last" && +$y && $p && $u && $v == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $N) . "\nFROM " . table($R), ($Y ? "\nWHERE " . implode(" AND ", $Y) : "") . ($p && $u ? "\nGROUP BY " . implode(", ", $p) : "") . ($E ? "\nORDER BY " . implode(", ", $E) : ""), ($y != "" ?+$y : null), ($F ? $y * $F : 0), "\n"); $Td = microtime(true); $K = $this->_conn->query($I); if ($nd)echo$b->selectQuery($I, format_time($Td)); return$K; }function
187
+delete($R, $td, $y = 0) {$I = "FROM " . table($R); return
188
+queries("DELETE" . ($y ? limit1($I, $td) : " $I$td")); }function
189
+update($R, $P, $td, $y = 0, $Kd = "\n") {$Ge = array(); foreach ($P
190
+as$x=>$V)$Ge[] = "$x = $V"; $I = table($R) . " SET$Kd" . implode(",$Kd", $Ge); return
191
+queries("UPDATE" . ($y ? limit1($I, $td) : " $I$td")); }function
192
+insert($R, $P) {return
193
+queries("INSERT INTO " . table($R) . ($P ? " (" . implode(", ", array_keys($P)) . ")\nVALUES (" . implode(", ", $P) . ")" : " DEFAULT VALUES")); }function
194
+insertUpdate($R, $M, $md) {return
195
+false; }function
196
+begin() {return
197
+queries("BEGIN"); }function
198
+commit() {return
199
+queries("COMMIT"); }function
200
+rollback() {return
201
+queries("ROLLBACK"); }}$jb = array("server"=>"MySQL") + $jb; if (!defined("DRIVER")) {$kd = array("MySQLi", "MySQL", "PDO_MySQL"); define("DRIVER", "server"); if (extension_loaded("mysqli")) {class
202 202
 Min_DB
203 203
 extends
204
-MySQLi{var$extension="MySQLi";function
205
-__construct(){parent::init();}function
206
-connect($O="",$T="",$G="",$Za=null,$id=null,$Qd=null){mysqli_report(MYSQLI_REPORT_OFF);list($dc,$id)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$dc:ini_get("mysqli.default_host")),($O.$T!=""?$T:ini_get("mysqli.default_user")),($O.$T.$G!=""?$G:ini_get("mysqli.default_pw")),$Za,(is_numeric($id)?$id:ini_get("mysqli.default_port")),(!is_numeric($id)?$id:$Qd));return$K;}function
207
-set_charset($Da){if(parent::set_charset($Da))return
208
-true;parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function
209
-result($I,$l=0){$J=$this->query($I);if(!$J)return
210
-false;$L=$J->fetch_array();return$L[$l];}function
211
-quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
212
-Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
213
-connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
214
-set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link))return
215
-true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function
216
-quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function
217
-select_db($Za){return
218
-mysql_select_db($Za,$this->_link);}function
219
-query($I,$xe=false){$J=@($xe?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
220
-false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
221
-true;}return
204
+MySQLi {var$extension = "MySQLi"; function
205
+__construct() {parent::init(); }function
206
+connect($O = "", $T = "", $G = "", $Za = null, $id = null, $Qd = null) {mysqli_report(MYSQLI_REPORT_OFF); list($dc, $id) = explode(":", $O, 2); $K = @$this->real_connect(($O != "" ? $dc : ini_get("mysqli.default_host")), ($O . $T != "" ? $T : ini_get("mysqli.default_user")), ($O . $T . $G != "" ? $G : ini_get("mysqli.default_pw")), $Za, (is_numeric($id) ? $id : ini_get("mysqli.default_port")), (!is_numeric($id) ? $id : $Qd)); return$K; }function
207
+set_charset($Da) {if (parent::set_charset($Da))return
208
+true; parent::set_charset('utf8'); return$this->query("SET NAMES $Da"); }function
209
+result($I, $l = 0) {$J = $this->query($I); if (!$J)return
210
+false; $L = $J->fetch_array(); return$L[$l]; }function
211
+quote($Q) {return"'" . $this->escape_string($Q) . "'"; }}}elseif (extension_loaded("mysql") && !(ini_get("sql.safe_mode") && extension_loaded("pdo_mysql"))) {class
212
+Min_DB {var$extension = "MySQL", $server_info, $affected_rows, $errno, $error, $_link, $_result; function
213
+connect($O, $T, $G) {$this->_link = @mysql_connect(($O != "" ? $O : ini_get("mysql.default_host")), ("$O$T" != "" ? $T : ini_get("mysql.default_user")), ("$O$T$G" != "" ? $G : ini_get("mysql.default_password")), true, 131072); if ($this->_link)$this->server_info = mysql_get_server_info($this->_link); else$this->error = mysql_error(); return(bool) $this->_link; }function
214
+set_charset($Da) {if (function_exists('mysql_set_charset')) {if (mysql_set_charset($Da, $this->_link))return
215
+true; mysql_set_charset('utf8', $this->_link); }return$this->query("SET NAMES $Da"); }function
216
+quote($Q) {return"'" . mysql_real_escape_string($Q, $this->_link) . "'"; }function
217
+select_db($Za) {return
218
+mysql_select_db($Za, $this->_link); }function
219
+query($I, $xe = false) {$J = @($xe ? mysql_unbuffered_query($I, $this->_link) : mysql_query($I, $this->_link)); $this->error = ""; if (!$J) {$this->errno = mysql_errno($this->_link); $this->error = mysql_error($this->_link); return
220
+false; }if ($J === true) {$this->affected_rows = mysql_affected_rows($this->_link); $this->info = mysql_info($this->_link); return
221
+true; }return
222 222
 new
223
-Min_Result($J);}function
224
-multi_query($I){return$this->_result=$this->query($I);}function
225
-store_result(){return$this->_result;}function
226
-next_result(){return
227
-false;}function
228
-result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return
229
-false;return
230
-mysql_result($J->_result,0,$l);}}class
231
-Min_Result{var$num_rows,$_result,$_offset=0;function
232
-__construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function
233
-fetch_assoc(){return
234
-mysql_fetch_assoc($this->_result);}function
235
-fetch_row(){return
236
-mysql_fetch_row($this->_result);}function
237
-fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function
238
-__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
223
+Min_Result($J); }function
224
+multi_query($I) {return$this->_result = $this->query($I); }function
225
+store_result() {return$this->_result; }function
226
+next_result() {return
227
+false; }function
228
+result($I, $l = 0) {$J = $this->query($I); if (!$J || !$J->num_rows)return
229
+false; return
230
+mysql_result($J->_result, 0, $l); }}class
231
+Min_Result {var$num_rows, $_result, $_offset = 0; function
232
+__construct($J) {$this->_result = $J; $this->num_rows = mysql_num_rows($J); }function
233
+fetch_assoc() {return
234
+mysql_fetch_assoc($this->_result); }function
235
+fetch_row() {return
236
+mysql_fetch_row($this->_result); }function
237
+fetch_field() {$K = mysql_fetch_field($this->_result, $this->_offset++); $K->orgtable = $K->table; $K->orgname = $K->name; $K->charsetnr = ($K->blob ? 63 : 0); return$K; }function
238
+__destruct() {mysql_free_result($this->_result); }}}elseif (extension_loaded("pdo_mysql")) {class
239 239
 Min_DB
240 240
 extends
241
-Min_PDO{var$extension="PDO_MySQL";function
242
-connect($O,$T,$G){$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$O)),$T,$G);return
243
-true;}function
244
-set_charset($Da){$this->query("SET NAMES $Da");}function
245
-select_db($Za){return$this->query("USE ".idf_escape($Za));}function
246
-query($I,$xe=false){$this->setAttribute(1000,!$xe);return
247
-parent::query($I,$xe);}}}class
241
+Min_PDO {var$extension = "PDO_MySQL"; function
242
+connect($O, $T, $G) {$this->dsn("mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $O)), $T, $G); return
243
+true; }function
244
+set_charset($Da) {$this->query("SET NAMES $Da"); }function
245
+select_db($Za) {return$this->query("USE " . idf_escape($Za)); }function
246
+query($I, $xe = false) {$this->setAttribute(1000, !$xe); return
247
+parent::query($I, $xe); }}}class
248 248
 Min_Driver
249 249
 extends
250
-Min_SQL{function
251
-insert($R,$P){return($P?parent::insert($R,$P):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
252
-insertUpdate($R,$M,$md){$e=array_keys(reset($M));$ld="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ge=array();foreach($e
253
-as$x)$Ge[$x]="$x = VALUES($x)";$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M
254
-as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd))return
255
-false;$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return
256
-queries($ld.implode(",\n",$Ge).$Zd);}}function
257
-idf_escape($gc){return"`".str_replace("`","``",$gc)."`";}function
258
-table($gc){return
259
-idf_escape($gc);}function
260
-connect(){global$b;$f=new
261
-Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$Ed;return$K;}function
262
-get_databases($Jb){global$f;$K=get_session("dbs");if($K===null){$I=($f->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($Jb?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function
263
-limit($I,$Y,$y,$Pc=0,$Kd=" "){return" $I$Y".($y!==null?$Kd."LIMIT $y".($Pc?" OFFSET $Pc":""):"");}function
264
-limit1($I,$Y){return
265
-limit($I,$Y,1);}function
266
-db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A))$K=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A))$K=$Na[$A[1]][-1];return$K;}function
267
-engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function
268
-logged_user(){global$f;return$f->result("SELECT USER()");}function
269
-tables_list(){global$f;return
270
-get_key_vals($f->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
271
-count_tables($ab){$K=array();foreach($ab
272
-as$h)$K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));return$K;}function
273
-table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($D!="")return$L;$K[$L["Name"]]=$L;}return$K;}function
274
-is_view($S){return$S["Engine"]===null;}function
275
-fk_support($S){global$f;return
276
-preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&version_compare($f->server_info,'5.6')>=0);}function
277
-fields($R){$K=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($R))as$L){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$L["Type"],$A);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$A[1],"length"=>$A[2],"unsigned"=>ltrim($A[3].$A[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$A[1])?$L["Default"]:null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$A)?$A[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),);}return$K;}function
278
-indexes($R,$g=null){$K=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$L){$K[$L["Key_name"]]["type"]=($L["Key_name"]=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?"INDEX":"UNIQUE")));$K[$L["Key_name"]]["columns"][]=$L["Column_name"];$K[$L["Key_name"]]["lengths"][]=$L["Sub_part"];$K[$L["Key_name"]]["descs"][]=null;}return$K;}function
279
-foreign_keys($R){global$f,$Rc;static$H='`(?:[^`]|``)+`';$K=array();$Wa=$f->result("SHOW CREATE TABLE ".table($R),1);if($Wa){preg_match_all("~CONSTRAINT ($H) FOREIGN KEY ?\\(((?:$H,? ?)+)\\) REFERENCES ($H)(?:\\.($H))? \\(((?:$H,? ?)+)\\)(?: ON DELETE ($Rc))?(?: ON UPDATE ($Rc))?~",$Wa,$Bc,PREG_SET_ORDER);foreach($Bc
280
-as$A){preg_match_all("~$H~",$A[2],$Rd);preg_match_all("~$H~",$A[5],$fe);$K[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('idf_unescape',$Rd[0]),"target"=>array_map('idf_unescape',$fe[0]),"on_delete"=>($A[6]?$A[6]:"RESTRICT"),"on_update"=>($A[7]?$A[7]:"RESTRICT"),);}}return$K;}function
281
-view($D){global$f;return
282
-array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$f->result("SHOW CREATE VIEW ".table($D),1)));}function
283
-collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K
284
-as$x=>$V)asort($K[$x]);return$K;}function
285
-information_schema($h){global$f;return($f->server_info>=5&&$h=="information_schema")||($f->server_info>=5.5&&$h=="performance_schema");}function
286
-error(){global$f;return
287
-h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$f->error));}function
288
-create_database($h,$Ma){return
289
-queries("CREATE DATABASE ".idf_escape($h).($Ma?" COLLATE ".q($Ma):""));}function
290
-drop_databases($ab){$K=apply_queries("DROP DATABASE",$ab,'idf_escape');restart_session();set_session("dbs",null);return$K;}function
291
-rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue)$zd[]=table($R)." TO ".idf_escape($D).".".table($R);$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function
292
-auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY")$ta=" UNIQUE";}}return" AUTO_INCREMENT$ta";}function
293
-alter_table($R,$D,$m,$Kb,$Qa,$tb,$Ma,$sa,$fd){$ma=array();foreach($m
294
-as$l)$ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="")return
295
-queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd");if($R!=$D)$ma[]="RENAME TO ".table($D);if($Ud)$ma[]=ltrim($Ud);return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function
296
-alter_indexes($R,$ma){foreach($ma
297
-as$x=>$V)$ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")");return
298
-queries("ALTER TABLE ".table($R).implode(",",$ma));}function
299
-truncate_tables($ee){return
300
-apply_queries("TRUNCATE TABLE",$ee);}function
301
-drop_views($Ie){return
302
-queries("DROP VIEW ".implode(", ",array_map('table',$Ie)));}function
303
-drop_tables($ee){return
304
-queries("DROP TABLE ".implode(", ",array_map('table',$ee)));}function
305
-move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R)$zd[]=table($R)." TO ".idf_escape($fe).".".table($R);return
306
-queries("RENAME TABLE ".implode(", ",$zd));}function
307
-copy_tables($ee,$Ie,$fe){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($ee
308
-as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return
309
-false;}foreach($Ie
310
-as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]"))return
311
-false;}return
312
-true;}function
313
-trigger($D){if($D=="")return
314
-array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return
315
-reset($M);}function
316
-triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function
317
-trigger_options(){return
318
-array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
319
-routine($D,$ue){global$f,$ub,$lc,$we;$la=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ve="((".implode("|",array_merge(array_keys($we),$la)).")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$H="\\s*(".($ue=="FUNCTION"?"":$lc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve";$Va=$f->result("SHOW CREATE $ue ".idf_escape($D),2);preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*".($ue=="FUNCTION"?"RETURNS\\s+$ve\\s+":"")."(.*)~is",$Va,$A);$m=array();preg_match_all("~$H\\s*,?~is",$A[1],$Bc,PREG_SET_ORDER);foreach($Bc
320
-as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION")return
321
-array("fields"=>$m,"definition"=>$A[11]);return
322
-array("fields"=>$m,"returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",);}function
323
-routines(){return
324
-get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
325
-routine_languages(){return
326
-array();}function
327
-last_id(){global$f;return$f->result("SELECT LAST_INSERT_ID()");}function
328
-explain($f,$I){return$f->query("EXPLAIN ".($f->server_info>=5.1?"PARTITIONS ":"").$I);}function
329
-found_rows($S,$Y){return($Y||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
330
-types(){return
331
-array();}function
332
-schemas(){return
333
-array();}function
334
-get_schema(){return"";}function
335
-set_schema($Fd){return
336
-true;}function
337
-create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function
338
-truncate_sql($R){return"TRUNCATE ".table($R);}function
339
-use_sql($Za){return"USE ".idf_escape($Za);}function
340
-trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L)$K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function
341
-show_variables(){return
342
-get_key_vals("SHOW VARIABLES");}function
343
-process_list(){return
344
-get_rows("SHOW FULL PROCESSLIST");}function
345
-show_status(){return
346
-get_key_vals("SHOW STATUS");}function
347
-convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function
348
-unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function
349
-support($Db){global$f;return!preg_match("~scheme|sequence|type|view_trigger".($f->server_info<5.1?"|event|partitioning".($f->server_info<5?"|routine|trigger|view":""):"")."~",$Db);}function
350
-kill_process($V){return
351
-queries("KILL ".number($V));}function
352
-max_connections(){global$f;return$f->result("SELECT @@max_connections");}$v="sql";$we=array();$Wd=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$x=>$V){$we+=$V;$Wd[$x]=array_keys($V);}$Ce=array("unsigned","zerofill","unsigned zerofill");$Wc=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$Tb=array("char_length","date","from_unixtime","lower","round","sec_to_time","time_to_sec","upper");$Vb=array("avg","count","count distinct","group_concat","max","min","sum");$mb=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array("(^|[^o])int|float|double|decimal"=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\\1',$_SERVER["REQUEST_URI"]).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$ca="4.2.5";class
353
-Adminer{var$operators=array("<=",">=");var$_values=array();function
354
-name(){return"<a href='https://www.adminer.org/editor/' target='_blank' id='h1'>".'Editor'."</a>";}function
355
-credentials(){return
356
-array(SERVER,$_GET["username"],get_password());}function
357
-permanentLogin($Va=false){return
358
-password_file($Va);}function
359
-bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
360
-database(){global$f;if($f){$ab=$this->databases(false);return(!$ab?$f->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)"):$ab[(information_schema($ab[0])?1:0)]);}}function
361
-schemas(){return
362
-schemas();}function
363
-databases($Jb=true){return
364
-get_databases($Jb);}function
365
-queryTimeout(){return
366
-5;}function
367
-headers(){return
368
-true;}function
369
-head(){return
370
-true;}function
371
-loginForm(){echo'<table cellspacing="0">
372
-<tr><th>Username<td><input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="',h($_GET["username"]),'" autocapitalize="off">
250
+Min_SQL {function
251
+insert($R, $P) {return($P ? parent::insert($R, $P) : queries("INSERT INTO " . table($R) . " ()\nVALUES ()")); }function
252
+insertUpdate($R, $M, $md) {$e = array_keys(reset($M)); $ld = "INSERT INTO " . table($R) . " (" . implode(", ", $e) . ") VALUES\n"; $Ge = array(); foreach ($e
253
+as$x)$Ge[$x] = "$x = VALUES($x)"; $Zd = "\nON DUPLICATE KEY UPDATE " . implode(", ", $Ge); $Ge = array(); $xc = 0; foreach ($M
254
+as$P) {$W = "(" . implode(", ", $P) . ")"; if ($Ge && (strlen($ld) + $xc + strlen($W) + strlen($Zd) > 1e6)) {if (!queries($ld . implode(",\n", $Ge) . $Zd))return
255
+false; $Ge = array(); $xc = 0; }$Ge[] = $W; $xc += strlen($W) + 2; }return
256
+queries($ld . implode(",\n", $Ge) . $Zd); }}function
257
+idf_escape($gc) {return"`" . str_replace("`", "``", $gc) . "`"; }function
258
+table($gc) {return
259
+idf_escape($gc); }function
260
+connect() {global$b; $f = new
261
+Min_DB; $Xa = $b->credentials(); if ($f->connect($Xa[0], $Xa[1], $Xa[2])) {$f->set_charset(charset($f)); $f->query("SET sql_quote_show_create = 1, autocommit = 1"); return$f; }$K = $f->error; if (function_exists('iconv') && !is_utf8($K) && strlen($Ed = iconv("windows-1250", "utf-8", $K)) > strlen($K))$K = $Ed; return$K; }function
262
+get_databases($Jb) {global$f; $K = get_session("dbs"); if ($K === null) {$I = ($f->server_info >= 5 ? "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA" : "SHOW DATABASES"); $K = ($Jb ? slow_query($I) : get_vals($I)); restart_session(); set_session("dbs", $K); stop_session(); }return$K; }function
263
+limit($I, $Y, $y, $Pc = 0, $Kd = " ") {return" $I$Y" . ($y !== null ? $Kd . "LIMIT $y" . ($Pc ? " OFFSET $Pc" : "") : ""); }function
264
+limit1($I, $Y) {return
265
+limit($I, $Y, 1); }function
266
+db_collation($h, $Na) {global$f; $K = null; $Va = $f->result("SHOW CREATE DATABASE " . idf_escape($h), 1); if (preg_match('~ COLLATE ([^ ]+)~', $Va, $A))$K = $A[1]; elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $Va, $A))$K = $Na[$A[1]][-1]; return$K; }function
267
+engines() {$K = array(); foreach (get_rows("SHOW ENGINES")as$L) {if (preg_match("~YES|DEFAULT~", $L["Support"]))$K[] = $L["Engine"]; }return$K; }function
268
+logged_user() {global$f; return$f->result("SELECT USER()"); }function
269
+tables_list() {global$f; return
270
+get_key_vals($f->server_info >= 5 ? "SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME" : "SHOW TABLES"); }function
271
+count_tables($ab) {$K = array(); foreach ($ab
272
+as$h)$K[$h] = count(get_vals("SHOW TABLES IN " . idf_escape($h))); return$K; }function
273
+table_status($D = "", $Cb = false) {global$f; $K = array(); foreach (get_rows($Cb && $f->server_info >= 5 ? "SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($D != "" ? "AND TABLE_NAME = " . q($D) : "ORDER BY Name") : "SHOW TABLE STATUS" . ($D != "" ? " LIKE " . q(addcslashes($D, "%_\\")) : ""))as$L) {if ($L["Engine"] == "InnoDB")$L["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $L["Comment"]); if (!isset($L["Engine"]))$L["Comment"] = ""; if ($D != "")return$L; $K[$L["Name"]] = $L; }return$K; }function
274
+is_view($S) {return$S["Engine"] === null; }function
275
+fk_support($S) {global$f; return
276
+preg_match('~InnoDB|IBMDB2I~i', $S["Engine"]) || (preg_match('~NDB~i', $S["Engine"]) && version_compare($f->server_info, '5.6') >= 0); }function
277
+fields($R) {$K = array(); foreach (get_rows("SHOW FULL COLUMNS FROM " . table($R))as$L) {preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $L["Type"], $A); $K[$L["Field"]] = array("field"=>$L["Field"], "full_type"=>$L["Type"], "type"=>$A[1], "length"=>$A[2], "unsigned"=>ltrim($A[3] . $A[4]), "default"=>($L["Default"] != "" || preg_match("~char|set~", $A[1]) ? $L["Default"] : null), "null"=>($L["Null"] == "YES"), "auto_increment"=>($L["Extra"] == "auto_increment"), "on_update"=>(preg_match('~^on update (.+)~i', $L["Extra"], $A) ? $A[1] : ""), "collation"=>$L["Collation"], "privileges"=>array_flip(preg_split('~, *~', $L["Privileges"])), "comment"=>$L["Comment"], "primary"=>($L["Key"] == "PRI"),); }return$K; }function
278
+indexes($R, $g = null) {$K = array(); foreach (get_rows("SHOW INDEX FROM " . table($R), $g)as$L) {$K[$L["Key_name"]]["type"] = ($L["Key_name"] == "PRIMARY" ? "PRIMARY" : ($L["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($L["Non_unique"] ? "INDEX" : "UNIQUE"))); $K[$L["Key_name"]]["columns"][] = $L["Column_name"]; $K[$L["Key_name"]]["lengths"][] = $L["Sub_part"]; $K[$L["Key_name"]]["descs"][] = null; }return$K; }function
279
+foreign_keys($R) {global$f, $Rc; static$H = '`(?:[^`]|``)+`'; $K = array(); $Wa = $f->result("SHOW CREATE TABLE " . table($R), 1); if ($Wa) {preg_match_all("~CONSTRAINT ($H) FOREIGN KEY ?\\(((?:$H,? ?)+)\\) REFERENCES ($H)(?:\\.($H))? \\(((?:$H,? ?)+)\\)(?: ON DELETE ($Rc))?(?: ON UPDATE ($Rc))?~", $Wa, $Bc, PREG_SET_ORDER); foreach ($Bc
280
+as$A) {preg_match_all("~$H~", $A[2], $Rd); preg_match_all("~$H~", $A[5], $fe); $K[idf_unescape($A[1])] = array("db"=>idf_unescape($A[4] != "" ? $A[3] : $A[4]), "table"=>idf_unescape($A[4] != "" ? $A[4] : $A[3]), "source"=>array_map('idf_unescape', $Rd[0]), "target"=>array_map('idf_unescape', $fe[0]), "on_delete"=>($A[6] ? $A[6] : "RESTRICT"), "on_update"=>($A[7] ? $A[7] : "RESTRICT"),); }}return$K; }function
281
+view($D) {global$f; return
282
+array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $f->result("SHOW CREATE VIEW " . table($D), 1))); }function
283
+collations() {$K = array(); foreach (get_rows("SHOW COLLATION")as$L) {if ($L["Default"])$K[$L["Charset"]][-1] = $L["Collation"]; else$K[$L["Charset"]][] = $L["Collation"]; }ksort($K); foreach ($K
284
+as$x=>$V)asort($K[$x]); return$K; }function
285
+information_schema($h) {global$f; return($f->server_info >= 5 && $h == "information_schema") || ($f->server_info >= 5.5 && $h == "performance_schema"); }function
286
+error() {global$f; return
287
+h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $f->error)); }function
288
+create_database($h, $Ma) {return
289
+queries("CREATE DATABASE " . idf_escape($h) . ($Ma ? " COLLATE " . q($Ma) : "")); }function
290
+drop_databases($ab) {$K = apply_queries("DROP DATABASE", $ab, 'idf_escape'); restart_session(); set_session("dbs", null); return$K; }function
291
+rename_database($D, $Ma) {$K = false; if (create_database($D, $Ma)) {$zd = array(); foreach (tables_list()as$R=>$ue)$zd[] = table($R) . " TO " . idf_escape($D) . "." . table($R); $K = (!$zd || queries("RENAME TABLE " . implode(", ", $zd))); if ($K)queries("DROP DATABASE " . idf_escape(DB)); restart_session(); set_session("dbs", null); }return$K; }function
292
+auto_increment() {$ta = " PRIMARY KEY"; if ($_GET["create"] != "" && $_POST["auto_increment_col"]) {foreach (indexes($_GET["create"])as$s) {if (in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"], $s["columns"], true)) {$ta = ""; break; }if ($s["type"] == "PRIMARY")$ta = " UNIQUE"; }}return" AUTO_INCREMENT$ta"; }function
293
+alter_table($R, $D, $m, $Kb, $Qa, $tb, $Ma, $sa, $fd) {$ma = array(); foreach ($m
294
+as$l)$ma[] = ($l[1] ? ($R != "" ? ($l[0] != "" ? "CHANGE " . idf_escape($l[0]) : "ADD") : " ") . " " . implode($l[1]) . ($R != "" ? $l[2] : "") : "DROP " . idf_escape($l[0])); $ma = array_merge($ma, $Kb); $Ud = ($Qa !== null ? " COMMENT=" . q($Qa) : "") . ($tb ? " ENGINE=" . q($tb) : "") . ($Ma ? " COLLATE " . q($Ma) : "") . ($sa != "" ? " AUTO_INCREMENT=$sa" : ""); if ($R == "")return
295
+queries("CREATE TABLE " . table($D) . " (\n" . implode(",\n", $ma) . "\n)$Ud$fd"); if ($R != $D)$ma[] = "RENAME TO " . table($D); if ($Ud)$ma[] = ltrim($Ud); return($ma || $fd ? queries("ALTER TABLE " . table($R) . "\n" . implode(",\n", $ma) . $fd) : true); }function
296
+alter_indexes($R, $ma) {foreach ($ma
297
+as$x=>$V)$ma[$x] = ($V[2] == "DROP" ? "\nDROP INDEX " . idf_escape($V[1]) : "\nADD $V[0] " . ($V[0] == "PRIMARY" ? "KEY " : "") . ($V[1] != "" ? idf_escape($V[1]) . " " : "") . "(" . implode(", ", $V[2]) . ")"); return
298
+queries("ALTER TABLE " . table($R) . implode(",", $ma)); }function
299
+truncate_tables($ee) {return
300
+apply_queries("TRUNCATE TABLE", $ee); }function
301
+drop_views($Ie) {return
302
+queries("DROP VIEW " . implode(", ", array_map('table', $Ie))); }function
303
+drop_tables($ee) {return
304
+queries("DROP TABLE " . implode(", ", array_map('table', $ee))); }function
305
+move_tables($ee, $Ie, $fe) {$zd = array(); foreach (array_merge($ee, $Ie)as$R)$zd[] = table($R) . " TO " . idf_escape($fe) . "." . table($R); return
306
+queries("RENAME TABLE " . implode(", ", $zd)); }function
307
+copy_tables($ee, $Ie, $fe) {queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'"); foreach ($ee
308
+as$R) {$D = ($fe == DB ? table("copy_$R") : idf_escape($fe) . "." . table($R)); if (!queries("\nDROP TABLE IF EXISTS $D") || !queries("CREATE TABLE $D LIKE " . table($R)) || !queries("INSERT INTO $D SELECT * FROM " . table($R)))return
309
+false; }foreach ($Ie
310
+as$R) {$D = ($fe == DB ? table("copy_$R") : idf_escape($fe) . "." . table($R)); $He = view($R); if (!queries("DROP VIEW IF EXISTS $D") || !queries("CREATE VIEW $D AS $He[select]"))return
311
+false; }return
312
+true; }function
313
+trigger($D) {if ($D == "")return
314
+array(); $M = get_rows("SHOW TRIGGERS WHERE `Trigger` = " . q($D)); return
315
+reset($M); }function
316
+triggers($R) {$K = array(); foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($R, "%_\\")))as$L)$K[$L["Trigger"]] = array($L["Timing"], $L["Event"]); return$K; }function
317
+trigger_options() {return
318
+array("Timing"=>array("BEFORE", "AFTER"), "Event"=>array("INSERT", "UPDATE", "DELETE"), "Type"=>array("FOR EACH ROW"),); }function
319
+routine($D, $ue) {global$f, $ub, $lc, $we; $la = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar"); $ve = "((" . implode("|", array_merge(array_keys($we), $la)) . ")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?"; $H = "\\s*(" . ($ue == "FUNCTION" ? "" : $lc) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve"; $Va = $f->result("SHOW CREATE $ue " . idf_escape($D), 2); preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*" . ($ue == "FUNCTION" ? "RETURNS\\s+$ve\\s+" : "") . "(.*)~is", $Va, $A); $m = array(); preg_match_all("~$H\\s*,?~is", $A[1], $Bc, PREG_SET_ORDER); foreach ($Bc
320
+as$dd) {$D = str_replace("``", "`", $dd[2]) . $dd[3]; $m[] = array("field"=>$D, "type"=>strtolower($dd[5]), "length"=>preg_replace_callback("~$ub~s", 'normalize_enum', $dd[6]), "unsigned"=>strtolower(preg_replace('~\\s+~', ' ', trim("$dd[8] $dd[7]"))), "null"=>1, "full_type"=>$dd[4], "inout"=>strtoupper($dd[1]), "collation"=>strtolower($dd[9]),); }if ($ue != "FUNCTION")return
321
+array("fields"=>$m, "definition"=>$A[11]); return
322
+array("fields"=>$m, "returns"=>array("type"=>$A[12], "length"=>$A[13], "unsigned"=>$A[15], "collation"=>$A[16]), "definition"=>$A[17], "language"=>"SQL",); }function
323
+routines() {return
324
+get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB)); }function
325
+routine_languages() {return
326
+array(); }function
327
+last_id() {global$f; return$f->result("SELECT LAST_INSERT_ID()"); }function
328
+explain($f, $I) {return$f->query("EXPLAIN " . ($f->server_info >= 5.1 ? "PARTITIONS " : "") . $I); }function
329
+found_rows($S, $Y) {return($Y || $S["Engine"] != "InnoDB" ? null : $S["Rows"]); }function
330
+types() {return
331
+array(); }function
332
+schemas() {return
333
+array(); }function
334
+get_schema() {return""; }function
335
+set_schema($Fd) {return
336
+true; }function
337
+create_sql($R, $sa) {global$f; $K = $f->result("SHOW CREATE TABLE " . table($R), 1); if (!$sa)$K = preg_replace('~ AUTO_INCREMENT=\\d+~', '', $K); return$K; }function
338
+truncate_sql($R) {return"TRUNCATE " . table($R); }function
339
+use_sql($Za) {return"USE " . idf_escape($Za); }function
340
+trigger_sql($R, $Xd) {$K = ""; foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($R, "%_\\")), null, "-- ")as$L)$K .= "\n" . ($Xd == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($L["Trigger"]) . ";;\n" : "") . "CREATE TRIGGER " . idf_escape($L["Trigger"]) . " $L[Timing] $L[Event] ON " . table($L["Table"]) . " FOR EACH ROW\n$L[Statement];;\n"; return$K; }function
341
+show_variables() {return
342
+get_key_vals("SHOW VARIABLES"); }function
343
+process_list() {return
344
+get_rows("SHOW FULL PROCESSLIST"); }function
345
+show_status() {return
346
+get_key_vals("SHOW STATUS"); }function
347
+convert_field($l) {if (preg_match("~binary~", $l["type"]))return"HEX(" . idf_escape($l["field"]) . ")"; if ($l["type"] == "bit")return"BIN(" . idf_escape($l["field"]) . " + 0)"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))return"AsWKT(" . idf_escape($l["field"]) . ")"; }function
348
+unconvert_field($l, $K) {if (preg_match("~binary~", $l["type"]))$K = "UNHEX($K)"; if ($l["type"] == "bit")$K = "CONV($K, 2, 10) + 0"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))$K = "GeomFromText($K)"; return$K; }function
349
+support($Db) {global$f; return!preg_match("~scheme|sequence|type|view_trigger" . ($f->server_info < 5.1 ? "|event|partitioning" . ($f->server_info < 5 ? "|routine|trigger|view" : "") : "") . "~", $Db); }function
350
+kill_process($V) {return
351
+queries("KILL " . number($V)); }function
352
+max_connections() {global$f; return$f->result("SELECT @@max_connections"); }$v = "sql"; $we = array(); $Wd = array(); foreach (array('Numbers'=>array("tinyint"=>3, "smallint"=>5, "mediumint"=>8, "int"=>10, "bigint"=>20, "decimal"=>66, "float"=>12, "double"=>21), 'Date and time'=>array("date"=>10, "datetime"=>19, "timestamp"=>19, "time"=>10, "year"=>4), 'Strings'=>array("char"=>255, "varchar"=>65535, "tinytext"=>255, "text"=>65535, "mediumtext"=>16777215, "longtext"=>4294967295), 'Lists'=>array("enum"=>65535, "set"=>64), 'Binary'=>array("bit"=>20, "binary"=>255, "varbinary"=>65535, "tinyblob"=>255, "blob"=>65535, "mediumblob"=>16777215, "longblob"=>4294967295), 'Geometry'=>array("geometry"=>0, "point"=>0, "linestring"=>0, "polygon"=>0, "multipoint"=>0, "multilinestring"=>0, "multipolygon"=>0, "geometrycollection"=>0),)as$x=>$V) {$we += $V; $Wd[$x] = array_keys($V); }$Ce = array("unsigned", "zerofill", "unsigned zerofill"); $Wc = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"); $Tb = array("char_length", "date", "from_unixtime", "lower", "round", "sec_to_time", "time_to_sec", "upper"); $Vb = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); $mb = array(array("char"=>"md5/sha1/password/encrypt/uuid", "binary"=>"md5/sha1", "date|time"=>"now",), array("(^|[^o])int|float|double|decimal"=>"+/-", "date"=>"+ interval/- interval", "time"=>"addtime/subtime", "char|text"=>"concat",)); }define("SERVER", $_GET[DRIVER]); define("DB", $_GET["db"]); define("ME", preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_URI"]) . '?' . (sid() ? SID . '&' : '') . (SERVER !== null ? DRIVER . "=" . urlencode(SERVER) . '&' : '') . (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '') . (DB != "" ? 'db=' . urlencode(DB) . '&' . (isset($_GET["ns"]) ? "ns=" . urlencode($_GET["ns"]) . "&" : "") : '')); $ca = "4.2.5"; class
353
+Adminer {var$operators = array("<=", ">="); var$_values = array(); function
354
+name() {return"<a href='https://www.adminer.org/editor/' target='_blank' id='h1'>" . 'Editor' . "</a>"; }function
355
+credentials() {return
356
+array(SERVER, $_GET["username"], get_password()); }function
357
+permanentLogin($Va = false) {return
358
+password_file($Va); }function
359
+bruteForceKey() {return$_SERVER["REMOTE_ADDR"]; }function
360
+database() {global$f; if ($f) {$ab = $this->databases(false); return(!$ab ? $f->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)") : $ab[(information_schema($ab[0]) ? 1 : 0)]); }}function
361
+schemas() {return
362
+schemas(); }function
363
+databases($Jb = true) {return
364
+get_databases($Jb); }function
365
+queryTimeout() {return
366
+5; }function
367
+headers() {return
368
+true; }function
369
+head() {return
370
+true; }function
371
+loginForm() {echo'<table cellspacing="0">
372
+<tr><th>Username<td><input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="',h($_GET["username"]), '" autocapitalize="off">
373 373
 <tr><th>Password<td><input type="password" name="auth[password]">
374 374
 </table>
375 375
 <script type="text/javascript">
376 376
 focus(document.getElementById(\'username\'));
377 377
 </script>
378
-',"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
379
-login($_c,$G){global$f;$f->query("SET time_zone = ".q(substr_replace(@date("O"),":",-2,0)));return
380
-true;}function
381
-tableName($ce){return
382
-h($ce["Comment"]!=""?$ce["Comment"]:$ce["Name"]);}function
383
-fieldName($l,$E=0){return
384
-h($l["comment"]!=""?$l["comment"]:$l["field"]);}function
385
-selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";}function
386
-foreignKeys($R){return
387
-foreign_keys($R);}function
388
-backwardKeys($R,$be){$K=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME
378
+',"<p><input type='submit' value='" . 'Login' . "'>\n", checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], 'Permanent login') . "\n"; }function
379
+login($_c, $G) {global$f; $f->query("SET time_zone = " . q(substr_replace(@date("O"), ":", -2, 0))); return
380
+true; }function
381
+tableName($ce) {return
382
+h($ce["Comment"] != "" ? $ce["Comment"] : $ce["Name"]); }function
383
+fieldName($l, $E = 0) {return
384
+h($l["comment"] != "" ? $l["comment"] : $l["field"]); }function
385
+selectLinks($ce, $P = "") {$a = $ce["Name"]; if ($P !== null)echo'<p class="tabs"><a href="' . h(ME . 'edit=' . urlencode($a) . $P) . '">' . 'New item' . "</a>\n"; }function
386
+foreignKeys($R) {return
387
+foreign_keys($R); }function
388
+backwardKeys($R, $be) {$K = array(); foreach (get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME
389 389
 FROM information_schema.KEY_COLUMN_USAGE
390
-WHERE TABLE_SCHEMA = ".q($this->database())."
391
-AND REFERENCED_TABLE_SCHEMA = ".q($this->database())."
392
-AND REFERENCED_TABLE_NAME = ".q($R)."
393
-ORDER BY ORDINAL_POSITION",null,"")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"];foreach($K
394
-as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);}else
395
-unset($K[$x]);}return$K;}function
396
-backwardKeysPrint($wa,$L){foreach($wa
397
-as$R=>$va){foreach($va["keys"]as$Oa){$z=ME.'select='.urlencode($R);$q=0;foreach($Oa
398
-as$d=>$V)$z.=where_link($q++,$d,$L[$V]);echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa
399
-as$d=>$V)$z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]);echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function
400
-selectQuery($I,$je){return"<!--\n".str_replace("--","--><!-- ",$I)."\n($je)\n-->\n";}function
401
-rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"]))return
402
-idf_escape($l["field"]);}return"";}function
403
-rowDescriptions($M,$Mb){$K=$M;foreach($M[0]as$x=>$V){if(list($R,$r,$D)=$this->_foreignColumn($Mb,$x)){$hc=array();foreach($M
404
-as$L)$hc[$L[$x]]=q($L[$x]);$eb=$this->_values[$R];if(!$eb)$eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")");foreach($M
405
-as$C=>$L){if(isset($L[$x]))$K[$C][$x]=(string)$eb[$L[$x]];}}}return$K;}function
406
-selectLink($V,$l){}function
407
-selectVal($V,$z,$l,$ad){$K=($V===null?"&nbsp;":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad))$K="<img src='$z' alt='$K'>";}if(like_bool($l)&&$K!="&nbsp;")$K=($V?'yes':'no');if($z)$K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>";if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"]))$K="<div class='number'>$K</div>";elseif(preg_match('~date~',$l["type"]))$K="<div class='datetime'>$K</div>";return$K;}function
408
-editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null)return
409
-preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V);return$V;}function
410
-selectColumnsPrint($N,$e){}function
411
-selectSearchPrint($Y,$e,$t){$Y=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Search'."</legend><div>\n";$qc=array();foreach($Y
412
-as$x=>$V)$qc[$V["col"]]=$x;$q=0;$m=fields($_GET["select"]);foreach($e
413
-as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);}elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"])$Xc[0]='('.'empty'.')';$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y
414
-as$V){if(($V["col"]==""||$e[$V["col"]])&&"$V[col]$V[val]"!=""){echo"<div><select name='where[$q][col]'><option value=''>(".'anywhere'.")".optionlist($e,$V["col"],true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators,$V["op"]),"<input type='search' name='where[$q][val]' value='".h($V["val"])."' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";$q++;}}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(".'anywhere'.")".optionlist($e,null,true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators),"<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n","</div></fieldset>\n";}function
415
-selectOrderPrint($E,$e,$t){$Zc=array();foreach($t
416
-as$x=>$s){$E=array();foreach($s["columns"]as$V)$E[]=$e[$V];if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY")$Zc[$x]=implode(", ",$E);}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"])echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function
417
-selectLimitPrint($y){echo"<fieldset><legend>".'Limit'."</legend><div>";echo
418
-html_select("limit",array("","50","100"),$y),"</div></fieldset>\n";}function
419
-selectLengthPrint($he){}function
420
-selectActionPrint($t){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>","</div></fieldset>\n";}function
421
-selectCommandPrint(){return
422
-true;}function
423
-selectImportPrint(){return
424
-true;}function
425
-selectEmailPrint($qb,$e){if($qb){print_fieldset("email",'E-mail',$_POST["email_append"]);echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n","<p>".'From'.": <input name='email_from' value='".h($_POST?$_POST["email_from"]:$_COOKIE["adminer_email"])."'>\n",'Subject'.": <input name='email_subject' value='".h($_POST["email_subject"])."'>\n","<p><textarea name='email_message' rows='15' cols='75'>".h($_POST["email_message"].($_POST["email_append"]?'{$'."$_POST[email_addition]}":""))."</textarea>\n","<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">".html_select("email_addition",$e,$_POST["email_addition"])."<input type='submit' name='email_append' value='".'Insert'."'>\n";echo"<p>".'Attachments'.": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">","<p>".(count($qb)==1?'<input type="hidden" name="email_field" value="'.h(key($qb)).'">':html_select("email_field",$qb)),"<input type='submit' name='email' value='".'Send'."' onclick=\"return this.form['delete'].onclick();\">\n","</div>\n","</div></fieldset>\n";}}function
426
-selectColumnsProcess($e,$t){return
427
-array(array(),array());}function
428
-selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum")$Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")";else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0")$Ra[]="$D IS NULL";}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function
429
-selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="")unset($_GET["order"][1]);if($_GET["order"])return
430
-array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V)$K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":"");return$K;}}return
431
-array();}function
432
-selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
433
-selectLengthProcess(){return"100";}function
434
-selectEmailProcess($Y,$Mb){if($_POST["email_append"])return
435
-true;if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V)$_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]);$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"]))$Jd++;}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return
436
-false;}function
437
-selectQueryBuild($N,$Y,$p,$E,$y,$F){return"";}function
438
-messageQuery($I,$je){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$I)."\n".($je?"($je)\n":"")."-->";}function
439
-editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"]))$K["NULL"]='empty';$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"]))$K["now"]='now';if(preg_match('~_(md5|sha1)$~i',$l["field"],$A))$K[]=strtolower($A[1]);return$K;}function
440
-editInput($R,$l,$c,$W){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null));$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null)return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>");if(like_bool($l))return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>";$cc="";if(preg_match('~time~',$l["type"]))$cc='HH:MM:SS';if(preg_match('~date|timestamp~',$l["type"]))$cc='[yyyy]-mm-dd'.($cc?" [$cc]":"");if($cc)return"<input value='".h($W)."'$c> ($cc)";if(preg_match('~_(md5|sha1)$~i',$l["field"]))return"<input type='password' value='".h($W)."'$c>";return'';}function
441
-processInput($l,$W,$o=""){if($o=="now")return"$o()";$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A))$K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A);$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l))$K="0";elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"])))$K="NULL";elseif(preg_match('~^(md5|sha1)$~',$o))$K="$o($K)";return
442
-unconvert_field($l,$K);}function
443
-dumpOutput(){return
444
-array();}function
445
-dumpFormat(){return
446
-array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
447
-dumpDatabase($h){}function
448
-dumpTable(){echo"\xef\xbb\xbf";}function
449
-dumpData($R,$Xd,$I){global$f;$J=$f->query($I,1);if($J){while($L=$J->fetch_assoc()){if($Xd=="table"){dump_csv(array_keys($L));$Xd="INSERT";}dump_csv($L);}}}function
450
-dumpFilename($fc){return
451
-friendly_url($fc);}function
452
-dumpHeaders($fc,$Jc=false){$_b="csv";header("Content-Type: text/csv; charset=utf-8");return$_b;}function
453
-homepage(){return
454
-true;}function
455
-navigation($Ic){global$ca;echo'<h1>
456
-',$this->name(),' <span class="version">',$ca,'</span>
457
-<a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
390
+WHERE TABLE_SCHEMA = ".q($this->database()) . "
391
+AND REFERENCED_TABLE_SCHEMA = ".q($this->database()) . "
392
+AND REFERENCED_TABLE_NAME = ".q($R) . "
393
+ORDER BY ORDINAL_POSITION",null, "")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]] = $L["REFERENCED_COLUMN_NAME"]; foreach ($K
394
+as$x=>$V) {$D = $this->tableName(table_status($x, true)); if ($D != "") {$Gd = preg_quote($be); $Kd = "(:|\\s*-)?\\s+"; $K[$x]["name"] = (preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu", $D, $A) ? $A[2] . $A[3] : $D); } else
395
+unset($K[$x]); }return$K; }function
396
+backwardKeysPrint($wa, $L) {foreach ($wa
397
+as$R=>$va) {foreach ($va["keys"]as$Oa) {$z = ME . 'select=' . urlencode($R); $q = 0; foreach ($Oa
398
+as$d=>$V)$z .= where_link($q++, $d, $L[$V]); echo"<a href='" . h($z) . "'>" . h($va["name"]) . "</a>"; $z = ME . 'edit=' . urlencode($R); foreach ($Oa
399
+as$d=>$V)$z .= "&set" . urlencode("[" . bracket_escape($d) . "]") . "=" . urlencode($L[$V]); echo"<a href='" . h($z) . "' title='" . 'New item' . "'>+</a> "; }}}function
400
+selectQuery($I, $je) {return"<!--\n" . str_replace("--", "--><!-- ", $I) . "\n($je)\n-->\n"; }function
401
+rowDescription($R) {foreach (fields($R)as$l) {if (preg_match("~varchar|character varying~", $l["type"]))return
402
+idf_escape($l["field"]); }return""; }function
403
+rowDescriptions($M, $Mb) {$K = $M; foreach ($M[0]as$x=>$V) {if (list($R, $r, $D) = $this->_foreignColumn($Mb, $x)) {$hc = array(); foreach ($M
404
+as$L)$hc[$L[$x]] = q($L[$x]); $eb = $this->_values[$R]; if (!$eb)$eb = get_key_vals("SELECT $r, $D FROM " . table($R) . " WHERE $r IN (" . implode(", ", $hc) . ")"); foreach ($M
405
+as$C=>$L) {if (isset($L[$x]))$K[$C][$x] = (string) $eb[$L[$x]]; }}}return$K; }function
406
+selectLink($V, $l) {}function
407
+selectVal($V, $z, $l, $ad) {$K = ($V === null ? "&nbsp;" : $V); $z = h($z); if (preg_match('~blob|bytea~', $l["type"]) && !is_utf8($V)) {$K = lang(array('%d byte', '%d bytes'), strlen($ad)); if (preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~", $ad))$K = "<img src='$z' alt='$K'>"; }if (like_bool($l) && $K != "&nbsp;")$K = ($V ? 'yes' : 'no'); if ($z)$K = "<a href='$z'" . (is_url($z) ? " rel='noreferrer'" : "") . ">$K</a>"; if (!$z && !like_bool($l) && preg_match('~int|float|double|decimal~', $l["type"]))$K = "<div class='number'>$K</div>"; elseif (preg_match('~date~', $l["type"]))$K = "<div class='datetime'>$K</div>"; return$K; }function
408
+editVal($V, $l) {if (preg_match('~date|timestamp~', $l["type"]) && $V !== null)return
409
+preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~', '$1-$3-$5', $V); return$V; }function
410
+selectColumnsPrint($N, $e) {}function
411
+selectSearchPrint($Y, $e, $t) {$Y = (array) $_GET["where"]; echo'<fieldset id="fieldset-search"><legend>' . 'Search' . "</legend><div>\n"; $qc = array(); foreach ($Y
412
+as$x=>$V)$qc[$V["col"]] = $x; $q = 0; $m = fields($_GET["select"]); foreach ($e
413
+as$D=>$db) {$l = $m[$D]; if (preg_match("~enum~", $l["type"]) || like_bool($l)) {$x = $qc[$D]; $q--; echo"<div>" . h($db) . "<input type='hidden' name='where[$q][col]' value='" . h($D) . "'>:", (like_bool($l) ? " <select name='where[$q][val]'>" . optionlist(array(""=>"", 'no', 'yes'), $Y[$x]["val"], true) . "</select>" : enum_input("checkbox", " name='where[$q][val][]'", $l, (array) $Y[$x]["val"], ($l["null"] ? 0 : null))), "</div>\n"; unset($e[$D]); }elseif (is_array($Xc = $this->_foreignKeyOptions($_GET["select"], $D))) {if ($m[$D]["null"])$Xc[0] = '(' . 'empty' . ')'; $x = $qc[$D]; $q--; echo"<div>" . h($db) . "<input type='hidden' name='where[$q][col]' value='" . h($D) . "'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>" . optionlist($Xc, $Y[$x]["val"], true) . "</select></div>\n"; unset($e[$D]); }}$q = 0; foreach ($Y
414
+as$V) {if (($V["col"] == "" || $e[$V["col"]]) && "$V[col]$V[val]" != "") {echo"<div><select name='where[$q][col]'><option value=''>(" . 'anywhere' . ")" . optionlist($e, $V["col"], true) . "</select>", html_select("where[$q][op]", array(-1=>"") + $this->operators, $V["op"]), "<input type='search' name='where[$q][val]' value='" . h($V["val"]) . "' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n"; $q++; }}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(" . 'anywhere' . ")" . optionlist($e, null, true) . "</select>", html_select("where[$q][op]", array(-1=>"") + $this->operators), "<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n", "</div></fieldset>\n"; }function
415
+selectOrderPrint($E, $e, $t) {$Zc = array(); foreach ($t
416
+as$x=>$s) {$E = array(); foreach ($s["columns"]as$V)$E[] = $e[$V]; if (count(array_filter($E, 'strlen')) > 1 && $x != "PRIMARY")$Zc[$x] = implode(", ", $E); }if ($Zc) {echo'<fieldset><legend>' . 'Sort' . "</legend><div>", "<select name='index_order'>" . optionlist(array(""=>"") + $Zc, ($_GET["order"][0] != "" ? "" : $_GET["index_order"]), true) . "</select>", "</div></fieldset>\n"; }if ($_GET["order"])echo"<div style='display: none;'>" . hidden_fields(array("order"=>array(1=>reset($_GET["order"])), "desc"=>($_GET["desc"] ? array(1=>1) : array()),)) . "</div>\n"; }function
417
+selectLimitPrint($y) {echo"<fieldset><legend>" . 'Limit' . "</legend><div>"; echo
418
+html_select("limit", array("", "50", "100"), $y), "</div></fieldset>\n"; }function
419
+selectLengthPrint($he) {}function
420
+selectActionPrint($t) {echo"<fieldset><legend>" . 'Action' . "</legend><div>", "<input type='submit' value='" . 'Select' . "'>", "</div></fieldset>\n"; }function
421
+selectCommandPrint() {return
422
+true; }function
423
+selectImportPrint() {return
424
+true; }function
425
+selectEmailPrint($qb, $e) {if ($qb) {print_fieldset("email", 'E-mail', $_POST["email_append"]); echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n", "<p>" . 'From' . ": <input name='email_from' value='" . h($_POST ? $_POST["email_from"] : $_COOKIE["adminer_email"]) . "'>\n", 'Subject' . ": <input name='email_subject' value='" . h($_POST["email_subject"]) . "'>\n", "<p><textarea name='email_message' rows='15' cols='75'>" . h($_POST["email_message"] . ($_POST["email_append"] ? '{$' . "$_POST[email_addition]}" : "")) . "</textarea>\n", "<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">" . html_select("email_addition", $e, $_POST["email_addition"]) . "<input type='submit' name='email_append' value='" . 'Insert' . "'>\n"; echo"<p>" . 'Attachments' . ": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">", "<p>" . (count($qb) == 1 ? '<input type="hidden" name="email_field" value="' . h(key($qb)) . '">' : html_select("email_field", $qb)), "<input type='submit' name='email' value='" . 'Send' . "' onclick=\"return this.form['delete'].onclick();\">\n", "</div>\n", "</div></fieldset>\n"; }}function
426
+selectColumnsProcess($e, $t) {return
427
+array(array(), array()); }function
428
+selectSearchProcess($m, $t) {$K = array(); foreach ((array) $_GET["where"]as$x=>$Y) {$La = $Y["col"]; $Uc = $Y["op"]; $V = $Y["val"]; if (($x < 0 ? "" : $La) . $V != "") {$Ra = array(); foreach (($La != "" ? array($La=>$m[$La]) : $m)as$D=>$l) {if ($La != "" || is_numeric($V) || !preg_match('~int|float|double|decimal~', $l["type"])) {$D = idf_escape($D); if ($La != "" && $l["type"] == "enum")$Ra[] = (in_array(0, $V) ? "$D IS NULL OR " : "") . "$D IN (" . implode(", ", array_map('intval', $V)) . ")"; else {$ie = preg_match('~char|text|enum|set~', $l["type"]); $W = $this->processInput($l, (!$Uc && $ie && preg_match('~^[^%]+$~', $V) ? "%$V%" : $V)); $Ra[] = $D . ($W == "NULL" ? " IS" . ($Uc == ">=" ? " NOT" : "") . " $W" : (in_array($Uc, $this->operators) || $Uc == "=" ? " $Uc $W" : ($ie ? " LIKE $W" : " IN (" . str_replace(",", "', '", $W) . ")"))); if ($x < 0 && $V == "0")$Ra[] = "$D IS NULL"; }}}$K[] = ($Ra ? "(" . implode(" OR ", $Ra) . ")" : "0"); }}return$K; }function
429
+selectOrderProcess($m, $t) {$jc = $_GET["index_order"]; if ($jc != "")unset($_GET["order"][1]); if ($_GET["order"])return
430
+array(idf_escape(reset($_GET["order"])) . ($_GET["desc"] ? " DESC" : "")); foreach (($jc != "" ? array($t[$jc]) : $t)as$s) {if ($jc != "" || $s["type"] == "INDEX") {$Xb = array_filter($s["descs"]); $db = false; foreach ($s["columns"]as$V) {if (preg_match('~date|timestamp~', $m[$V]["type"])) {$db = true; break; }}$K = array(); foreach ($s["columns"]as$x=>$V)$K[] = idf_escape($V) . (($Xb ? $s["descs"][$x] : $db) ? " DESC" : ""); return$K; }}return
431
+array(); }function
432
+selectLimitProcess() {return(isset($_GET["limit"]) ? $_GET["limit"] : "50"); }function
433
+selectLengthProcess() {return"100"; }function
434
+selectEmailProcess($Y, $Mb) {if ($_POST["email_append"])return
435
+true; if ($_POST["email"]) {$Jd = 0; if ($_POST["all"] || $_POST["check"]) {$l = idf_escape($_POST["email_field"]); $Yd = $_POST["email_subject"]; $B = $_POST["email_message"]; preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i', "$Yd.$B", $Bc); $M = get_rows("SELECT DISTINCT $l" . ($Bc[1] ? ", " . implode(", ", array_map('idf_escape', array_unique($Bc[1]))) : "") . " FROM " . table($_GET["select"]) . " WHERE $l IS NOT NULL AND $l != ''" . ($Y ? " AND " . implode(" AND ", $Y) : "") . ($_POST["all"] ? "" : " AND ((" . implode(") OR (", array_map('where_check', (array) $_POST["check"])) . "))")); $m = fields($_GET["select"]); foreach ($this->rowDescriptions($M, $Mb)as$L) {$_d = array('{\\'=>'{'); foreach ($Bc[1]as$V)$_d['{$' . "$V}"] = $this->editVal($L[$V], $m[$V]); $pb = $L[$_POST["email_field"]]; if (is_mail($pb) && send_mail($pb, strtr($Yd, $_d), strtr($B, $_d), $_POST["email_from"], $_FILES["email_files"]))$Jd++; }}cookie("adminer_email", $_POST["email_from"]); redirect(remove_from_uri(), lang(array('%d e-mail has been sent.', '%d e-mails have been sent.'), $Jd)); }return
436
+false; }function
437
+selectQueryBuild($N, $Y, $p, $E, $y, $F) {return""; }function
438
+messageQuery($I, $je) {return" <span class='time'>" . @date("H:i:s") . "</span><!--\n" . str_replace("--", "--><!-- ", $I) . "\n" . ($je ? "($je)\n" : "") . "-->"; }function
439
+editFunctions($l) {$K = array(); if ($l["null"] && preg_match('~blob~', $l["type"]))$K["NULL"] = 'empty'; $K[""] = ($l["null"] || $l["auto_increment"] || like_bool($l) ? "" : "*"); if (preg_match('~date|time~', $l["type"]))$K["now"] = 'now'; if (preg_match('~_(md5|sha1)$~i', $l["field"], $A))$K[] = strtolower($A[1]); return$K; }function
440
+editInput($R, $l, $c, $W) {if ($l["type"] == "enum")return(isset($_GET["select"]) ? "<label><input type='radio'$c value='-1' checked><i>" . 'original' . "</i></label> " : "") . enum_input("radio", $c, $l, ($W || isset($_GET["select"]) ? $W : 0), ($l["null"] ? "" : null)); $Xc = $this->_foreignKeyOptions($R, $l["field"], $W); if ($Xc !== null)return(is_array($Xc) ? "<select$c>" . optionlist($Xc, $W, true) . "</select>" : "<input value='" . h($W) . "'$c class='hidden'><input value='" . h($Xc) . "' class='jsonly' onkeyup=\"whisper('" . h(ME . "script=complete&source=" . urlencode($R) . "&field=" . urlencode($l["field"])) . "&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>"); if (like_bool($l))return'<input type="checkbox" value="' . h($W ? $W : 1) . '"' . ($W ? ' checked' : '') . "$c>"; $cc = ""; if (preg_match('~time~', $l["type"]))$cc = 'HH:MM:SS'; if (preg_match('~date|timestamp~', $l["type"]))$cc = '[yyyy]-mm-dd' . ($cc ? " [$cc]" : ""); if ($cc)return"<input value='" . h($W) . "'$c> ($cc)"; if (preg_match('~_(md5|sha1)$~i', $l["field"]))return"<input type='password' value='" . h($W) . "'$c>"; return''; }function
441
+processInput($l, $W, $o = "") {if ($o == "now")return"$o()"; $K = $W; if (preg_match('~date|timestamp~', $l["type"]) && preg_match('(^' . str_replace('\\$1', '(?P<p1>\\d*)', preg_replace('~(\\\\\\$([2-6]))~', '(?P<p\\2>\\d{1,2})', preg_quote('$1-$3-$5'))) . '(.*))', $W, $A))$K = ($A["p1"] != "" ? $A["p1"] : ($A["p2"] != "" ? ($A["p2"] < 70 ? 20 : 19) . $A["p2"] : gmdate("Y"))) . "-$A[p3]$A[p4]-$A[p5]$A[p6]" . end($A); $K = ($l["type"] == "bit" && preg_match('~^[0-9]+$~', $W) ? $K : q($K)); if ($W == "" && like_bool($l))$K = "0"; elseif ($W == "" && ($l["null"] || !preg_match('~char|text~', $l["type"])))$K = "NULL"; elseif (preg_match('~^(md5|sha1)$~', $o))$K = "$o($K)"; return
442
+unconvert_field($l, $K); }function
443
+dumpOutput() {return
444
+array(); }function
445
+dumpFormat() {return
446
+array('csv'=>'CSV,', 'csv;'=>'CSV;', 'tsv'=>'TSV'); }function
447
+dumpDatabase($h) {}function
448
+dumpTable() {echo"\xef\xbb\xbf"; }function
449
+dumpData($R, $Xd, $I) {global$f; $J = $f->query($I, 1); if ($J) {while ($L = $J->fetch_assoc()) {if ($Xd == "table") {dump_csv(array_keys($L)); $Xd = "INSERT"; }dump_csv($L); }}}function
450
+dumpFilename($fc) {return
451
+friendly_url($fc); }function
452
+dumpHeaders($fc, $Jc = false) {$_b = "csv"; header("Content-Type: text/csv; charset=utf-8"); return$_b; }function
453
+homepage() {return
454
+true; }function
455
+navigation($Ic) {global$ca; echo'<h1>
456
+',$this->name(), ' <span class="version">', $ca, '</span>
457
+<a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""), '</a>
458 458
 </h1>
459
-';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}}else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function
460
-databasesPrint($Ic){}function
461
-tablesPrint($ee){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($ee
462
-as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="")echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n";}}function
463
-_foreignColumn($Mb,$d){foreach((array)$Mb[$d]as$Lb){if(count($Lb["source"])==1){$D=$this->rowDescription($Lb["table"]);if($D!=""){$r=idf_escape($Lb["target"][0]);return
464
-array($Lb["table"],$r,$D);}}}}function
465
-_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null)return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W));return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new
466
-Adminer);function
467
-page_header($le,$k="",$Ca=array(),$me=""){global$ba,$ca,$b,$jb,$v;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$ne=$le.($me!=""?": $me":"");$oe=strip_tags($ne.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
459
+';if ($Ic == "auth") {$Ib = true; foreach ((array) $_SESSION["pwds"]as$X=>$Nd) {foreach ($Nd[""]as$T=>$G) {if ($G !== null) {if ($Ib) {echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; $Ib = false; }echo"<a href='" . h(auth_url($X, "", $T)) . "'>" . ($T != "" ? h($T) : "<i>" . 'empty' . "</i>") . "</a><br>\n"; }}}} else {$this->databasesPrint($Ic); if ($Ic != "db" && $Ic != "ns") {$S = table_status('', true); if (!$S)echo"<p class='message'>" . 'No tables.' . "\n"; else$this->tablesPrint($S); }}}function
460
+databasesPrint($Ic) {}function
461
+tablesPrint($ee) {echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; foreach ($ee
462
+as$L) {$D = $this->tableName($L); if (isset($L["Engine"]) && $D != "")echo"<a href='" . h(ME) . 'select=' . urlencode($L["Name"]) . "'" . bold($_GET["select"] == $L["Name"] || $_GET["edit"] == $L["Name"], "select") . " title='" . 'Select data' . "'>$D</a><br>\n"; }}function
463
+_foreignColumn($Mb, $d) {foreach ((array) $Mb[$d]as$Lb) {if (count($Lb["source"]) == 1) {$D = $this->rowDescription($Lb["table"]); if ($D != "") {$r = idf_escape($Lb["target"][0]); return
464
+array($Lb["table"], $r, $D); }}}}function
465
+_foreignKeyOptions($R, $d, $W = null) {global$f; if (list($fe, $r, $D) = $this->_foreignColumn(column_foreign_keys($R), $d)) {$K = &$this->_values[$fe]; if ($K === null) {$S = table_status($fe); $K = ($S["Rows"] > 1000 ? "" : array(""=>"") + get_key_vals("SELECT $r, $D FROM " . table($fe) . " ORDER BY 2")); }if (!$K && $W !== null)return$f->result("SELECT $D FROM " . table($fe) . " WHERE $r = " . q($W)); return$K; }}}$b = (function_exists('adminer_object') ? adminer_object() : new
466
+Adminer); function
467
+page_header($le, $k = "", $Ca = array(), $me = "") {global$ba, $ca, $b, $jb, $v; page_headers(); if (is_ajax() && $k) {page_messages($k); exit; }$ne = $le . ($me != "" ? ": $me" : ""); $oe = strip_tags($ne . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $b->name()); echo'<!DOCTYPE html>
468 468
 <html lang="en" dir="ltr">
469 469
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
470 470
 <meta http-equiv="Content-Script-Type" content="text/javascript">
471 471
 <meta name="robots" content="noindex">
472 472
 <meta name="referrer" content="origin-when-crossorigin">
473
-<title>',$oe,'</title>
474
-<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME))."?file=default.css&amp;version=4.2.5&amp;driver=mysql",'">
475
-<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=functions.js&amp;version=4.2.5&amp;driver=mysql",'"></script>
476
-';if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&amp;version=4.2.5&amp;driver=mysql",'">
477
-<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&amp;version=4.2.5&amp;driver=mysql",'">
478
-';if(file_exists("adminer.css")){echo'<link rel="stylesheet" type="text/css" href="adminer.css">
473
+<title>',$oe, '</title>
474
+<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=default.css&amp;version=4.2.5&amp;driver=mysql", '">
475
+<script type="text/javascript" src="',h(preg_replace("~\\?.*~", "", ME)) . "?file=functions.js&amp;version=4.2.5&amp;driver=mysql", '"></script>
476
+';if ($b->head()) {echo'<link rel="shortcut icon" type="image/x-icon" href="', h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&amp;version=4.2.5&amp;driver=mysql", '">
477
+<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&amp;version=4.2.5&amp;driver=mysql", '">
478
+';if (file_exists("adminer.css")) {echo'<link rel="stylesheet" type="text/css" href="adminer.css">
479 479
 ';}}echo'
480
-<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"])?"":" onload=\"verifyVersion('$ca');\"");?>>
480
+<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"]) ? "" : " onload=\"verifyVersion('$ca');\""); ?>>
481 481
 <script type="text/javascript">
482 482
 document.body.className = document.body.className.replace(/ nojs/, ' js');
483 483
 var offlineMessage = '<?php echo
484
-js_escape('You are offline.'),'\';
484
+js_escape('You are offline.'), '\';
485 485
 </script>
486 486
 
487
-<div id="help" class="jush-',$v,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
487
+<div id="help" class="jush-',$v, ' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
488 488
 
489 489
 <div id="content">
490
-';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> &raquo; ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false)echo"$O\n";else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca)))echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';if(is_array($Ca)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';foreach($Ca
491
-as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="")echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> &raquo; ";}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true))$ab=null;stop_session();define("PAGE_HEADER",1);}function
492
-page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function
493
-page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k)echo"<div class='error'>$k</div>\n";}function
494
-page_footer($Ic=""){global$b,$qe;echo'</div>
490
+';if ($Ca !== null) {$z = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1); echo'<p id="breadcrumb"><a href="' . h($z ? $z : ".") . '">' . $jb[DRIVER] . '</a> &raquo; '; $z = substr(preg_replace('~\b(db|ns)=[^&]*&~', '', ME), 0, -1); $O = (SERVER != "" ? h(SERVER) : 'Server'); if ($Ca === false)echo"$O\n"; else {echo"<a href='" . ($z ? h($z) : ".") . "' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; "; if ($_GET["ns"] != "" || (DB != "" && is_array($Ca)))echo'<a href="' . h($z . "&db=" . urlencode(DB) . (support("scheme") ? "&ns=" : "")) . '">' . h(DB) . '</a> &raquo; '; if (is_array($Ca)) {if ($_GET["ns"] != "")echo'<a href="' . h(substr(ME, 0, -1)) . '">' . h($_GET["ns"]) . '</a> &raquo; '; foreach ($Ca
491
+as$x=>$V) {$db = (is_array($V) ? $V[1] : h($V)); if ($db != "")echo"<a href='" . h(ME . "$x=") . urlencode(is_array($V) ? $V[0] : $V) . "'>$db</a> &raquo; "; }}echo"$le\n"; }}echo"<h2>$ne</h2>\n", "<div id='ajaxstatus' class='jsonly hidden'></div>\n"; restart_session(); page_messages($k); $ab = &get_session("dbs"); if (DB != "" && $ab && !in_array(DB, $ab, true))$ab = null; stop_session(); define("PAGE_HEADER", 1); }function
492
+page_headers() {global$b; header("Content-Type: text/html; charset=utf-8"); header("Cache-Control: no-cache"); if ($b->headers()) {header("X-Frame-Options: deny"); header("X-XSS-Protection: 0"); }}function
493
+page_messages($k) {$Ee = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]); $Hc = $_SESSION["messages"][$Ee]; if ($Hc) {echo"<div class='message'>" . implode("</div>\n<div class='message'>", $Hc) . "</div>\n"; unset($_SESSION["messages"][$Ee]); }if ($k)echo"<div class='error'>$k</div>\n"; }function
494
+page_footer($Ic = "") {global$b, $qe; echo'</div>
495 495
 
496
-';if($Ic!="auth"){echo'<form action="" method="post">
496
+';if ($Ic != "auth") {echo'<form action="" method="post">
497 497
 <p class="logout">
498 498
 <input type="submit" name="logout" value="Logout" id="logout">
499
-<input type="hidden" name="token" value="',$qe,'">
499
+<input type="hidden" name="token" value="',$qe, '">
500 500
 </p>
501 501
 </form>
502 502
 ';}echo'<div id="menu">
503
-';$b->navigation($Ic);echo'</div>
503
+';$b->navigation($Ic); echo'</div>
504 504
 <script type="text/javascript">setupSubmitHighlight(document);</script>
505 505
 ';}function
506
-int32($C){while($C>=2147483648)$C-=4294967296;while($C<=-2147483649)$C+=4294967296;return(int)$C;}function
507
-long2str($U,$Ke){$Ed='';foreach($U
508
-as$V)$Ed.=pack('V',$V);if($Ke)return
509
-substr($Ed,0,end($U));return$Ed;}function
510
-str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke)$U[]=strlen($Ed);return$U;}function
511
-xxtea_mx($Z,$Oe,$ae,$w){return
512
-int32((($Z>>5&0x7FFFFFF)^$Oe<<2)+(($Oe>>3&0x1FFFFFFF)^$Z<<4))^int32(($ae^$Oe)+($w^$Z));}function
513
-encrypt_string($Vd,$x){if($Vd=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return
514
-long2str($U,false);}function
515
-decrypt_string($Vd,$x){if($Vd=="")return"";if(!$x)return
516
-false;$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return
517
-long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb)$_SESSION["token"]=rand(1,1e6);$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function
518
-add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb)return;}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc
519
-as$pc=>$V){if($V[0]<$je)unset($oc[$pc]);}}$nc=&$oc[$b->bruteForceKey()];if(!$nc)$nc=array($je+30*60,0);$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60)));session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h)redirect(auth_url($X,$O,$T,$h));}elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd
520
-as$x=>$V){list(,$Ha)=explode(":",$V);list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));set_password($X,$O,$T,decrypt_string(base64_decode($Ha),$od));$_SESSION["db"][$X][$O][$T][$h]=true;}}function
521
-unset_permanent(){global$gd;foreach($gd
522
-as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB)unset($gd[$x]);}cookie("adminer_permanent",implode(" ",$gd));}function
523
-auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb)$k='Session expired, please login again.';else{add_invalid_login();$G=get_password();if($G!==null){if($G===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new
524
-Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.')));if($ra&&$_POST["token"])$_POST["token"]=$qe;$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function
525
-email_header($ac){return"=?UTF-8?B?".base64_encode($ac)."?=";}function
526
-send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V)$qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j;}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return
527
-mail($pb,email_header($Yd),$ya.$B.$qa,$bc);}function
528
-like_bool($l){return
529
-preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m
530
-as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="")unset($m[$D]);}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"])$_=($De?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$_))$_=ME."select=".urlencode($a);$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"]))queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze));else{$P=array();foreach($m
531
-as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null)$P[idf_escape($D)]=$V;}if($De){if(!$P)redirect($_);queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Y){$N=array();foreach($m
532
-as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$oa="''";if($v=="sql"&&preg_match("~enum|set~",$l["type"]))$oa="1*".idf_escape($D);$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($i->primary=>"");}if($L){foreach($L
533
-as$x=>$V){if(!$Y)$L[$x]=null;$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m
534
-as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l))$he=$b->selectLengthProcess();}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K)echo
535
-reset($K->fetch_row());}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea)$Ga[]=where_check($Ea,$m);$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t
536
-as$s){if($s["type"]=="PRIMARY"){$md=array_flip($s["columns"]);$Be=($N?$md:array());break;}}foreach((array)$Be
537
-as$x=>$V){if(in_array(idf_escape($x),$N))unset($Be[$x]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array())$I="SELECT $Sb$Me$Ub";else{$ye=array();foreach($_POST["check"]as$V)$ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")";$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e
538
-as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false))$P[idf_escape($D)]=($V!==false?$V:idf_escape($D));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;}else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J)break;$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc)$B=sprintf('Item%s has been inserted.'," $vc");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L
539
-as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J)break;$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}}elseif(!is_string($Eb=get_file("csv_file",true)))$k=upload_error($Eb);elseif(!preg_match('~~u',$Eb))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;}else{$P=array();foreach($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La))));$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J)$i->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else
540
-page_header('Select'.": $de",$k);$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"]))))$P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]);}}$b->selectLinks($S,$P);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc)$Hd[]=$Qc;}$Ua=convert_fields($e,$m,$N);if($Ua)$Hd[]=substr($Ua,2);$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($v=="mssql"&&$F)$J->seek($y*$F);$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql")$n=$f->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo
541
-apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M
542
-as$L){foreach($L
543
-as$x=>$V)$yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V))));}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x))$ze[$x]=$V;}}$_e="";foreach($ze
544
-as$x=>$V){if(($v=="sql"||$v=="pgsql")&&strlen($V)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($v=='sql'&&preg_match("~^utf8_~",$m[$x]["collation"])?$x:"CONVERT($x USING ".charset($f).")").")";$V=md5($V);}$_e.="&".($V!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($V):"null%5B%5D=".urlencode($x));}echo"<tr".odd().">".(!$p&&$N?"":"<td>".checkbox("check[]",substr($_e,1),in_array(substr($_e,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($u||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$_e)."'>".'edit'."</a>"));foreach($L
545
-as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!=""))$rb[$x]=(is_mail($V)?$Lc[$x]:"");$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="")$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e;if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd)$z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]);$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1)break;}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze))$z.=where_link($q++,$U["col"],$U["val"],$U["op"]);}foreach($ze
546
-as$w=>$U)$z.=where_link($q++,$w,$U);}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");}else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa)echo"<td>";$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y)$n=count($M);elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y))$n=reset(slow_query(count_rows($a,$Y,$u,$p)));else$yb=false;}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++)echo
547
-pagination($q,$F);if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo
548
-checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
549
-<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
506
+int32($C) {while ($C >= 2147483648)$C -= 4294967296; while ($C <= -2147483649)$C += 4294967296; return(int) $C; }function
507
+long2str($U, $Ke) {$Ed = ''; foreach ($U
508
+as$V)$Ed .= pack('V', $V); if ($Ke)return
509
+substr($Ed, 0, end($U)); return$Ed; }function
510
+str2long($Ed, $Ke) {$U = array_values(unpack('V*', str_pad($Ed, 4 * ceil(strlen($Ed) / 4), "\0"))); if ($Ke)$U[] = strlen($Ed); return$U; }function
511
+xxtea_mx($Z, $Oe, $ae, $w) {return
512
+int32((($Z >> 5 & 0x7FFFFFF) ^ $Oe << 2) + (($Oe >> 3 & 0x1FFFFFFF) ^ $Z << 4)) ^ int32(($ae ^ $Oe) + ($w ^ $Z)); }function
513
+encrypt_string($Vd, $x) {if ($Vd == "")return""; $x = array_values(unpack("V*", pack("H*", md5($x)))); $U = str2long($Vd, true); $C = count($U) - 1; $Z = $U[$C]; $Oe = $U[0]; $rd = floor(6 + 52 / ($C + 1)); $ae = 0; while ($rd-- > 0) {$ae = int32($ae + 0x9E3779B9); $lb = $ae >> 2 & 3; for ($cd = 0; $cd < $C; $cd++) {$Oe = $U[$cd + 1]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Z = int32($U[$cd] + $Kc); $U[$cd] = $Z; }$Oe = $U[0]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Z = int32($U[$C] + $Kc); $U[$C] = $Z; }return
514
+long2str($U, false); }function
515
+decrypt_string($Vd, $x) {if ($Vd == "")return""; if (!$x)return
516
+false; $x = array_values(unpack("V*", pack("H*", md5($x)))); $U = str2long($Vd, false); $C = count($U) - 1; $Z = $U[$C]; $Oe = $U[0]; $rd = floor(6 + 52 / ($C + 1)); $ae = int32($rd * 0x9E3779B9); while ($ae) {$lb = $ae >> 2 & 3; for ($cd = $C; $cd > 0; $cd--) {$Z = $U[$cd - 1]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Oe = int32($U[$cd] - $Kc); $U[$cd] = $Oe; }$Z = $U[$C]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Oe = int32($U[0] - $Kc); $U[0] = $Oe; $ae = int32($ae - 0x9E3779B9); }return
517
+long2str($U, true); }$f = ''; $Zb = $_SESSION["token"]; if (!$Zb)$_SESSION["token"] = rand(1, 1e6); $qe = get_token(); $gd = array(); if ($_COOKIE["adminer_permanent"]) {foreach (explode(" ", $_COOKIE["adminer_permanent"])as$V) {list($x) = explode(":", $V); $gd[$x] = $V; }}function
518
+add_invalid_login() {global$b; $Fb = get_temp_dir() . "/adminer.invalid"; $Rb = @fopen($Fb, "r+"); if (!$Rb) {$Rb = @fopen($Fb, "w"); if (!$Rb)return; }flock($Rb, LOCK_EX); $oc = unserialize(stream_get_contents($Rb)); $je = time(); if ($oc) {foreach ($oc
519
+as$pc=>$V) {if ($V[0] < $je)unset($oc[$pc]); }}$nc = &$oc[$b->bruteForceKey()]; if (!$nc)$nc = array($je + 30 * 60, 0); $nc[1]++; $Ld = serialize($oc); rewind($Rb); fwrite($Rb, $Ld); ftruncate($Rb, strlen($Ld)); flock($Rb, LOCK_UN); fclose($Rb); }$ra = $_POST["auth"]; if ($ra) {$oc = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); $nc = $oc[$b->bruteForceKey()]; $Mc = ($nc[1] > 30 ? $nc[0] - time() : 0); if ($Mc > 0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.', 'Too many unsuccessful logins, try again in %d minutes.'), ceil($Mc / 60))); session_regenerate_id(); $X = $ra["driver"]; $O = $ra["server"]; $T = $ra["username"]; $G = (string) $ra["password"]; $h = $ra["db"]; set_password($X, $O, $T, $G); $_SESSION["db"][$X][$O][$T][$h] = true; if ($ra["permanent"]) {$x = base64_encode($X) . "-" . base64_encode($O) . "-" . base64_encode($T) . "-" . base64_encode($h); $od = $b->permanentLogin(true); $gd[$x] = "$x:" . base64_encode($od ? encrypt_string($G, $od) : ""); cookie("adminer_permanent", implode(" ", $gd)); }if (count($_POST) == 1 || DRIVER != $X || SERVER != $O || $_GET["username"] !== $T || DB != $h)redirect(auth_url($X, $O, $T, $h)); }elseif ($_POST["logout"]) {if ($Zb && !verify_token()) {page_header('Logout', 'Invalid CSRF token. Send the form again.'); page_footer("db"); exit; } else {foreach (array("pwds", "db", "dbs", "queries")as$x)set_session($x, null); unset_permanent(); redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), 'Logout successful.'); }}elseif ($gd && !$_SESSION["pwds"]) {session_regenerate_id(); $od = $b->permanentLogin(); foreach ($gd
520
+as$x=>$V) {list(,$Ha) = explode(":", $V); list($X, $O, $T, $h) = array_map('base64_decode', explode("-", $x)); set_password($X, $O, $T, decrypt_string(base64_decode($Ha), $od)); $_SESSION["db"][$X][$O][$T][$h] = true; }}function
521
+unset_permanent() {global$gd; foreach ($gd
522
+as$x=>$V) {list($X, $O, $T, $h) = array_map('base64_decode', explode("-", $x)); if ($X == DRIVER && $O == SERVER && $T == $_GET["username"] && $h == DB)unset($gd[$x]); }cookie("adminer_permanent", implode(" ", $gd)); }function
523
+auth_error($k) {global$b, $Zb; $k = h($k); $Od = session_name(); if (isset($_GET["username"])) {header("HTTP/1.1 403 Forbidden"); if (($_COOKIE[$Od] || $_GET[$Od]) && !$Zb)$k = 'Session expired, please login again.'; else {add_invalid_login(); $G = get_password(); if ($G !== null) {if ($G === false)$k .= '<br>' . sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.', '<code>permanentLogin()</code>'); set_password(DRIVER, SERVER, $_GET["username"], null); }unset_permanent(); }}if (!$_COOKIE[$Od] && $_GET[$Od] && ini_bool("session.use_only_cookies"))$k = 'Session support must be enabled.'; $ed = session_get_cookie_params(); cookie("adminer_key", ($_COOKIE["adminer_key"] ? $_COOKIE["adminer_key"] : rand_string()), $ed["lifetime"]); page_header('Login', $k, null); echo"<form action='' method='post'>\n"; $b->loginForm(); echo"<div>"; hidden_fields($_POST, array("auth")); echo"</div>\n", "</form>\n"; page_footer("auth"); exit; }if (isset($_GET["username"])) {if (!class_exists("Min_DB")) {unset($_SESSION["pwds"][DRIVER]); unset_permanent(); page_header('No extension', sprintf('None of the supported PHP extensions (%s) are available.', implode(", ", $kd)), false); page_footer("auth"); exit; }$f = connect(); }$i = new
524
+Min_Driver($f); if (!is_object($f) || ($_c = $b->login($_GET["username"], get_password())) !== true)auth_error((is_string($f) ? $f : (is_string($_c) ? $_c : 'Invalid credentials.'))); if ($ra && $_POST["token"])$_POST["token"] = $qe; $k = ''; if ($_POST) {if (!verify_token()) {$kc = "max_input_vars"; $Fc = ini_get($kc); if (extension_loaded("suhosin")) {foreach (array("suhosin.request.max_vars", "suhosin.post.max_vars")as$x) {$V = ini_get($x); if ($V && (!$Fc || $V < $Fc)) {$kc = $x; $Fc = $V; }}}$k = (!$_POST["token"] && $Fc ? sprintf('Maximum number of allowed fields exceeded. Please increase %s.', "'$kc'") : 'Invalid CSRF token. Send the form again.' . ' ' . 'If you did not send this request from Adminer then close this page.'); }}elseif ($_SERVER["REQUEST_METHOD"] == "POST") {$k = sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.', "'post_max_size'"); if (isset($_GET["sql"]))$k .= ' ' . 'You can upload a big SQL file via FTP and import it from server.'; }if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !== false)session_write_close(); function
525
+email_header($ac) {return"=?UTF-8?B?" . base64_encode($ac) . "?="; }function
526
+send_mail($pb, $Yd, $B, $Sb = "", $Gb = array()) {$j = (DIRECTORY_SEPARATOR == "/" ? "\n" : "\r\n"); $B = str_replace("\n", $j, wordwrap(str_replace("\r", "", "$B\n"))); $Ba = uniqid("boundary"); $qa = ""; foreach ((array) $Gb["error"]as$x=>$V) {if (!$V)$qa .= "--$Ba$j" . "Content-Type: " . str_replace("\n", "", $Gb["type"][$x]) . $j . "Content-Disposition: attachment; filename=\"" . preg_replace('~["\\n]~', '', $Gb["name"][$x]) . "\"$j" . "Content-Transfer-Encoding: base64$j$j" . chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])), 76, $j) . $j; }$ya = ""; $bc = "Content-Type: text/plain; charset=utf-8$j" . "Content-Transfer-Encoding: 8bit"; if ($qa) {$qa .= "--$Ba--$j"; $ya = "--$Ba$j$bc$j$j"; $bc = "Content-Type: multipart/mixed; boundary=\"$Ba\""; }$bc .= $j . "MIME-Version: 1.0$j" . "X-Mailer: Adminer Editor" . ($Sb ? $j . "From: " . str_replace("\n", "", $Sb) : ""); return
527
+mail($pb, email_header($Yd), $ya . $B . $qa, $bc); }function
528
+like_bool($l) {return
529
+preg_match("~bool|(tinyint|bit)\\(1\\)~", $l["full_type"]); }$f->select_db($b->database()); $Rc = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; $jb[DRIVER] = 'Login'; if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"])$_GET["edit"] = $_GET["select"]; if (isset($_GET["download"])) {$a = $_GET["download"]; $m = fields($a); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . friendly_url("$a-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"])); $N = array(idf_escape($_GET["field"])); $J = $i->select($a, $N, array(where($_GET, $m)), $N); $L = ($J ? $J->fetch_row() : array()); echo$L[0]; exit; }elseif (isset($_GET["edit"])) {$a = $_GET["edit"]; $m = fields($a); $Y = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0], $m) : "") : where($_GET, $m)); $De = (isset($_GET["select"]) ? $_POST["edit"] : $Y); foreach ($m
530
+as$D=>$l) {if (!isset($l["privileges"][$De ? "update" : "insert"]) || $b->fieldName($l) == "")unset($m[$D]); }if ($_POST && !$k && !isset($_GET["select"])) {$_ = $_POST["referer"]; if ($_POST["insert"])$_ = ($De ? null : $_SERVER["REQUEST_URI"]); elseif (!preg_match('~^.+&select=.+$~', $_))$_ = ME . "select=" . urlencode($a); $t = indexes($a); $ze = unique_array($_GET["where"], $t); $ud = "\nWHERE $Y"; if (isset($_POST["delete"]))queries_redirect($_, 'Item has been deleted.', $i->delete($a, $ud, !$ze)); else {$P = array(); foreach ($m
531
+as$D=>$l) {$V = process_input($l); if ($V !== false && $V !== null)$P[idf_escape($D)] = $V; }if ($De) {if (!$P)redirect($_); queries_redirect($_, 'Item has been updated.', $i->update($a, $P, $ud, !$ze)); if (is_ajax()) {page_headers(); page_messages($k); exit; }} else {$J = $i->insert($a, $P); $vc = ($J ? last_id() : 0); queries_redirect($_, sprintf('Item%s has been inserted.', ($vc ? " $vc" : "")), $J); }}}$L = null; if ($_POST["save"])$L = (array) $_POST["fields"]; elseif ($Y) {$N = array(); foreach ($m
532
+as$D=>$l) {if (isset($l["privileges"]["select"])) {$oa = convert_field($l); if ($_POST["clone"] && $l["auto_increment"])$oa = "''"; if ($v == "sql" && preg_match("~enum|set~", $l["type"]))$oa = "1*" . idf_escape($D); $N[] = ($oa ? "$oa AS " : "") . idf_escape($D); }}$L = array(); if (!support("table"))$N = array("*"); if ($N) {$J = $i->select($a, $N, array($Y), $N, array(), (isset($_GET["select"]) ? 2 : 1)); $L = $J->fetch_assoc(); if (!$L)$L = false; if (isset($_GET["select"]) && (!$L || $J->fetch_assoc()))$L = null; }}if (!support("table") && !$m) {if (!$Y) {$J = $i->select($a, array("*"), $Y, array("*")); $L = ($J ? $J->fetch_assoc() : false); if (!$L)$L = array($i->primary=>""); }if ($L) {foreach ($L
533
+as$x=>$V) {if (!$Y)$L[$x] = null; $m[$x] = array("field"=>$x, "null"=>($x != $i->primary), "auto_increment"=>($x == $i->primary)); }}}edit_form($a, $m, $L, $De); }elseif (isset($_GET["select"])) {$a = $_GET["select"]; $S = table_status1($a); $t = indexes($a); $m = fields($a); $Ob = column_foreign_keys($a); $Qc = ""; if ($S["Oid"]) {$Qc = ($v == "sqlite" ? "rowid" : "oid"); $t[] = array("type"=>"PRIMARY", "columns"=>array($Qc)); }parse_str($_COOKIE["adminer_import"], $ia); $Dd = array(); $e = array(); $he = null; foreach ($m
534
+as$x=>$l) {$D = $b->fieldName($l); if (isset($l["privileges"]["select"]) && $D != "") {$e[$x] = html_entity_decode(strip_tags($D), ENT_QUOTES); if (is_shortable($l))$he = $b->selectLengthProcess(); }$Dd += $l["privileges"]; }list($N, $p) = $b->selectColumnsProcess($e, $t); $u = count($p) < count($N); $Y = $b->selectSearchProcess($m, $t); $E = $b->selectOrderProcess($m, $t); $y = $b->selectLimitProcess(); $Sb = ($N ? implode(", ", $N) : "*" . ($Qc ? ", $Qc" : "")) . convert_fields($e, $m, $N) . "\nFROM " . table($a); $Ub = ($p && $u ? "\nGROUP BY " . implode(", ", $p) : "") . ($E ? "\nORDER BY " . implode(", ", $E) : ""); if ($_GET["val"] && is_ajax()) {header("Content-Type: text/plain; charset=utf-8"); foreach ($_GET["val"]as$_e=>$L) {$oa = convert_field($m[key($L)]); $N = array($oa ? $oa : idf_escape(key($L))); $Y[] = where_check($_e, $m); $K = $i->select($a, $N, $Y, $N); if ($K)echo
535
+reset($K->fetch_row()); }exit; }if ($_POST && !$k) {$Me = $Y; if (!$_POST["all"] && is_array($_POST["check"])) {$Ga = array(); foreach ($_POST["check"]as$Ea)$Ga[] = where_check($Ea, $m); $Me[] = "((" . implode(") OR (", $Ga) . "))"; }$Me = ($Me ? "\nWHERE " . implode(" AND ", $Me) : ""); $md = $Be = null; foreach ($t
536
+as$s) {if ($s["type"] == "PRIMARY") {$md = array_flip($s["columns"]); $Be = ($N ? $md : array()); break; }}foreach ((array) $Be
537
+as$x=>$V) {if (in_array(idf_escape($x), $N))unset($Be[$x]); }if ($_POST["export"]) {cookie("adminer_import", "output=" . urlencode($_POST["output"]) . "&format=" . urlencode($_POST["format"])); dump_headers($a); $b->dumpTable($a, ""); if (!is_array($_POST["check"]) || $Be === array())$I = "SELECT $Sb$Me$Ub"; else {$ye = array(); foreach ($_POST["check"]as$V)$ye[] = "(SELECT" . limit($Sb, "\nWHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($V, $m) . $Ub, 1) . ")"; $I = implode(" UNION ALL ", $ye); }$b->dumpData($a, "table", $I); exit; }if (!$b->selectEmailProcess($Y, $Ob)) {if ($_POST["save"] || $_POST["delete"]) {$J = true; $ja = 0; $P = array(); if (!$_POST["delete"]) {foreach ($e
538
+as$D=>$V) {$V = process_input($m[$D]); if ($V !== null && ($_POST["clone"] || $V !== false))$P[idf_escape($D)] = ($V !== false ? $V : idf_escape($D)); }}if ($_POST["delete"] || $P) {if ($_POST["clone"])$I = "INTO " . table($a) . " (" . implode(", ", array_keys($P)) . ")\nSELECT " . implode(", ", $P) . "\nFROM " . table($a); if ($_POST["all"] || ($Be === array() && is_array($_POST["check"])) || $u) {$J = ($_POST["delete"] ? $i->delete($a, $Me) : ($_POST["clone"] ? queries("INSERT $I$Me") : $i->update($a, $P, $Me))); $ja = $f->affected_rows; } else {foreach ((array) $_POST["check"]as$V) {$Le = "\nWHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($V, $m); $J = ($_POST["delete"] ? $i->delete($a, $Le, 1) : ($_POST["clone"] ? queries("INSERT" . limit1($I, $Le)) : $i->update($a, $P, $Le))); if (!$J)break; $ja += $f->affected_rows; }}}$B = lang(array('%d item has been affected.', '%d items have been affected.'), $ja); if ($_POST["clone"] && $J && $ja == 1) {$vc = last_id(); if ($vc)$B = sprintf('Item%s has been inserted.', " $vc"); }queries_redirect(remove_from_uri($_POST["all"] && $_POST["delete"] ? "page" : ""), $B, $J); if (!$_POST["delete"]) {edit_form($a, $m, (array) $_POST["fields"], !$_POST["clone"]); page_footer(); exit; }}elseif (!$_POST["import"]) {if (!$_POST["val"])$k = 'Ctrl+click on a value to modify it.'; else {$J = true; $ja = 0; foreach ($_POST["val"]as$_e=>$L) {$P = array(); foreach ($L
539
+as$x=>$V) {$x = bracket_escape($x, 1); $P[idf_escape($x)] = (preg_match('~char|text~', $m[$x]["type"]) || $V != "" ? $b->processInput($m[$x], $V) : "NULL"); }$J = $i->update($a, $P, " WHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($_e, $m), !($u || $Be === array()), " "); if (!$J)break; $ja += $f->affected_rows; }queries_redirect(remove_from_uri(), lang(array('%d item has been affected.', '%d items have been affected.'), $ja), $J); }}elseif (!is_string($Eb = get_file("csv_file", true)))$k = upload_error($Eb); elseif (!preg_match('~~u', $Eb))$k = 'File must be in UTF-8 encoding.'; else {cookie("adminer_import", "output=" . urlencode($ia["output"]) . "&format=" . urlencode($_POST["separator"])); $J = true; $Oa = array_keys($m); preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $Eb, $Bc); $ja = count($Bc[0]); $i->begin(); $Kd = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";")); $M = array(); foreach ($Bc[0]as$x=>$V) {preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~", $V . $Kd, $Cc); if (!$x && !array_diff($Cc[1], $Oa)) {$Oa = $Cc[1]; $ja--; } else {$P = array(); foreach ($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])] = ($La == "" && $m[$Oa[$q]]["null"] ? "NULL" : q(str_replace('""', '"', preg_replace('~^"|"$~', '', $La)))); $M[] = $P; }}$J = (!$M || $i->insertUpdate($a, $M, $md)); if ($J)$i->commit(); queries_redirect(remove_from_uri("page"), lang(array('%d row has been imported.', '%d rows have been imported.'), $ja), $J); $i->rollback(); }}}$de = $b->tableName($S); if (is_ajax()) {page_headers(); ob_start(); } else
540
+page_header('Select' . ": $de", $k); $P = null; if (isset($Dd["insert"]) || !support("table")) {$P = ""; foreach ((array) $_GET["where"]as$V) {if (count($Ob[$V["col"]]) == 1 && ($V["op"] == "=" || (!$V["op"] && !preg_match('~[_%]~', $V["val"]))))$P .= "&set" . urlencode("[" . bracket_escape($V["col"]) . "]") . "=" . urlencode($V["val"]); }}$b->selectLinks($S, $P); if (!$e && support("table"))echo"<p class='error'>" . 'Unable to select the table' . ($m ? "." : ": " . error()) . "\n"; else {echo"<form action='' id='form'>\n", "<div style='display: none;'>"; hidden_fields_get(); echo(DB != "" ? '<input type="hidden" name="db" value="' . h(DB) . '">' . (isset($_GET["ns"]) ? '<input type="hidden" name="ns" value="' . h($_GET["ns"]) . '">' : "") : ""); echo'<input type="hidden" name="select" value="' . h($a) . '">', "</div>\n"; $b->selectColumnsPrint($N, $e); $b->selectSearchPrint($Y, $e, $t); $b->selectOrderPrint($E, $e, $t); $b->selectLimitPrint($y); $b->selectLengthPrint($he); $b->selectActionPrint($t); echo"</form>\n"; $F = $_GET["page"]; if ($F == "last") {$n = $f->result(count_rows($a, $Y, $u, $p)); $F = floor(max(0, $n - 1) / $y); }$Hd = $N; if (!$Hd) {$Hd[] = "*"; if ($Qc)$Hd[] = $Qc; }$Ua = convert_fields($e, $m, $N); if ($Ua)$Hd[] = substr($Ua, 2); $J = $i->select($a, $Hd, $Y, $p, $E, $y, $F, true); if (!$J)echo"<p class='error'>" . error() . "\n"; else {if ($v == "mssql" && $F)$J->seek($y * $F); $rb = array(); echo"<form action='' method='post' enctype='multipart/form-data'>\n"; $M = array(); while ($L = $J->fetch_assoc()) {if ($F && $v == "oracle")unset($L["RNUM"]); $M[] = $L; }if ($_GET["page"] != "last" && +$y && $p && $u && $v == "sql")$n = $f->result(" SELECT FOUND_ROWS()"); if (!$M)echo"<p class='message'>" . 'No rows.' . "\n"; else {$xa = $b->backwardKeys($a, $de); echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n", "<thead><tr>" . (!$p && $N ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . 'Modify' . "</a>"); $Lc = array(); $Tb = array(); reset($N); $wd = 1; foreach ($M[0]as$x=>$V) {if ($x != $Qc) {$V = $_GET["columns"][key($N)]; $l = $m[$N ? ($V ? $V["col"] : current($N)) : $x]; $D = ($l ? $b->fieldName($l, $wd) : ($V["fun"] ? "*" : $x)); if ($D != "") {$wd++; $Lc[$x] = $D; $d = idf_escape($x); $ec = remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($x); $db = "&desc%5B0%5D=1"; echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">', '<a href="' . h($ec . ($E[0] == $d || $E[0] == $x || (!$E && $u && $p[0] == $d) ? $db : '')) . '">'; echo
541
+apply_sql_function($V["fun"], $D) . "</a>"; echo"<span class='column hidden'>", "<a href='" . h($ec . $db) . "' title='" . 'descending' . "' class='text'> ↓</a>"; if (!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\'' . h(js_escape($x)) . '\'); return false;" title="' . 'Search' . '" class="text jsonly"> =</a>'; echo"</span>"; }$Tb[$x] = $V["fun"]; next($N); }}$yc = array(); if ($_GET["modify"]) {foreach ($M
542
+as$L) {foreach ($L
543
+as$x=>$V)$yc[$x] = max($yc[$x], min(40, strlen(utf8_decode($V)))); }}echo($xa ? "<th>" . 'Relations' : "") . "</thead>\n"; if (is_ajax()) {if ($y % 2 == 1 && $F % 2 == 1)odd(); ob_end_clean(); }foreach ($b->rowDescriptions($M, $Ob)as$C=>$L) {$ze = unique_array($M[$C], $t); if (!$ze) {$ze = array(); foreach ($M[$C]as$x=>$V) {if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~', $x))$ze[$x] = $V; }}$_e = ""; foreach ($ze
544
+as$x=>$V) {if (($v == "sql" || $v == "pgsql") && strlen($V) > 64) {$x = (strpos($x, '(') ? $x : idf_escape($x)); $x = "MD5(" . ($v == 'sql' && preg_match("~^utf8_~", $m[$x]["collation"]) ? $x : "CONVERT($x USING " . charset($f) . ")") . ")"; $V = md5($V); }$_e .= "&" . ($V !== null ? urlencode("where[" . bracket_escape($x) . "]") . "=" . urlencode($V) : "null%5B%5D=" . urlencode($x)); }echo"<tr" . odd() . ">" . (!$p && $N ? "" : "<td>" . checkbox("check[]", substr($_e, 1), in_array(substr($_e, 1), (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . ($u || information_schema(DB) ? "" : " <a href='" . h(ME . "edit=" . urlencode($a) . $_e) . "'>" . 'edit' . "</a>")); foreach ($L
545
+as$x=>$V) {if (isset($Lc[$x])) {$l = $m[$x]; if ($V != "" && (!isset($rb[$x]) || $rb[$x] != ""))$rb[$x] = (is_mail($V) ? $Lc[$x] : ""); $z = ""; if (preg_match('~blob|bytea|raw|file~', $l["type"]) && $V != "")$z = ME . 'download=' . urlencode($a) . '&field=' . urlencode($x) . $_e; if (!$z && $V !== null) {foreach ((array) $Ob[$x]as$Nb) {if (count($Ob[$x]) == 1 || end($Nb["source"]) == $x) {$z = ""; foreach ($Nb["source"]as$q=>$Rd)$z .= where_link($q, $Nb["target"][$q], $M[$C][$Rd]); $z = ($Nb["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($Nb["db"]), ME) : ME) . 'select=' . urlencode($Nb["table"]) . $z; if (count($Nb["source"]) == 1)break; }}}if ($x == "COUNT(*)") {$z = ME . "select=" . urlencode($a); $q = 0; foreach ((array) $_GET["where"]as$U) {if (!array_key_exists($U["col"], $ze))$z .= where_link($q++, $U["col"], $U["val"], $U["op"]); }foreach ($ze
546
+as$w=>$U)$z .= where_link($q++, $w, $U); }$V = select_value($V, $z, $l, $he); $r = h("val[$_e][" . bracket_escape($x) . "]"); $W = $_POST["val"][$_e][bracket_escape($x)]; $nb = !is_array($L[$x]) && is_utf8($V) && $M[$C][$x] == $L[$x] && !$Tb[$x]; $ge = preg_match('~text|lob~', $l["type"]); if (($_GET["modify"] && $nb) || $W !== null) {$Wb = h($W !== null ? $W : $L[$x]); echo"<td>" . ($ge ? "<textarea name='$r' cols='30' rows='" . (substr_count($L[$x], "\n") + 1) . "'>$Wb</textarea>" : "<input name='$r' value='$Wb' size='$yc[$x]'>"); } else {$Ac = strpos($V, "<i>...</i>"); echo"<td id='$r' onclick=\"selectClick(this, event, " . ($Ac ? 2 : ($ge ? 1 : 0)) . ($nb ? "" : ", '" . h('Use edit link to modify this value.') . "'") . ");\">$V"; }}}if ($xa)echo"<td>"; $b->backwardKeysPrint($xa, $M[$C]); echo"</tr>\n"; }if (is_ajax())exit; echo"</table>\n"; }if (($M || $F) && !is_ajax()) {$yb = true; if ($_GET["page"] != "last") {if (!+$y)$n = count($M); elseif ($v != "sql" || !$u) {$n = ($u ? false : found_rows($S, $Y)); if ($n < max(1e4, 2 * ($F + 1) * $y))$n = reset(slow_query(count_rows($a, $Y, $u, $p))); else$yb = false; }}if (+$y && ($n === false || $n > $y || $F)) {echo"<p class='pages'>"; $Dc = ($n === false ? $F + (count($M) >= $y ? 2 : 1) : floor(($n - 1) / $y)); if ($v != "simpledb") {echo'<a href="' . h(remove_from_uri("page")) . "\" onclick=\"pageClick(this.href, +prompt('" . 'Page' . "', '" . ($F + 1) . "'), event); return false;\">" . 'Page' . "</a>:", pagination(0, $F) . ($F > 5 ? " ..." : ""); for ($q = max(1, $F - 4); $q < min($Dc, $F + 5); $q++)echo
547
+pagination($q, $F); if ($Dc > 0) {echo($F + 5 < $Dc ? " ..." : ""), ($yb && $n !== false ? pagination($Dc, $F) : " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$Dc'>" . 'last' . "</a>"); }echo(($n === false ? count($M) + 1 : $n - $F * $y) > $y ? ' <a href="' . h(remove_from_uri("page") . "&page=" . ($F + 1)) . '" onclick="return !selectLoadMore(this, ' . (+$y) . ', \'' . 'Loading' . '...\');" class="loadmore">' . 'Load more data' . '</a>' : ''); } else {echo'Page' . ":", pagination(0, $F) . ($F > 1 ? " ..." : ""), ($F ? pagination($F, $F) : ""), ($Dc > $F ? pagination($F + 1, $F) . ($Dc > $F + 1 ? " ..." : "") : ""); }}echo"<p class='count'>\n", ($n !== false ? "(" . ($yb ? "" : "~ ") . lang(array('%d row', '%d rows'), $n) . ") " : ""); $hb = ($yb ? "" : "~ ") . $n; echo
548
+checkbox("all", 1, 0, 'whole result', "var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);") . "\n"; if ($b->selectCommandPrint()) {echo'<fieldset', ($_GET["modify"] ? '' : ' class="jsonly"'), '><legend>Modify</legend><div>
549
+<input type="submit" value="Save"',($_GET["modify"] ? '' : ' title="' . 'Ctrl+click on a value to modify it.' . '"'), '>
550 550
 </div></fieldset>
551 551
 <fieldset><legend>Selected <span id="selected"></span></legend><div>
552 552
 <input type="submit" name="edit" value="Edit">
553 553
 <input type="submit" name="clone" value="Clone">
554
-<input type="submit" name="delete" value="Delete"',confirm(),'>
554
+<input type="submit" name="delete" value="Delete"',confirm(), '>
555 555
 </div></fieldset>
556
-';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++)echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n";if($L)echo"...\n";}exit;}else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer();
557 556
\ No newline at end of file
557
+';}$Pb = $b->dumpFormat(); foreach ((array) $_GET["columns"]as$d) {if ($d["fun"]) {unset($Pb['sql']); break; }}if ($Pb) {print_fieldset("export", 'Export' . " <span id='selected2'></span>"); $bd = $b->dumpOutput(); echo($bd ? html_select("output", $bd, $ia["output"]) . " " : ""), html_select("format", $Pb, $ia["format"]), " <input type='submit' name='export' value='" . 'Export' . "'>\n", "</div></fieldset>\n"; }echo(!$p && $N ? "" : "<script type='text/javascript'>tableCheck();</script>\n"); }if ($b->selectImportPrint()) {print_fieldset("import", 'Import', !$M); echo"<input type='file' name='csv_file'> ", html_select("separator", array("csv"=>"CSV,", "csv;"=>"CSV;", "tsv"=>"TSV"), $ia["format"], 1); echo" <input type='submit' name='import' value='" . 'Import' . "'>", "</div></fieldset>\n"; }$b->selectEmailPrint(array_filter($rb, 'strlen'), $e); echo"<p><input type='hidden' name='token' value='$qe'></p>\n", "</form>\n"; }}if (is_ajax()) {ob_end_clean(); exit; }}elseif (isset($_GET["script"])) {if ($_GET["script"] == "kill")$f->query("KILL " . number($_POST["kill"])); elseif (list($R, $r, $D) = $b->_foreignColumn(column_foreign_keys($_GET["source"]), $_GET["field"])) {$y = 11; $J = $f->query("SELECT $r, $D FROM " . table($R) . " WHERE " . (preg_match('~^[0-9]+$~', $_GET["value"]) ? "$r = $_GET[value] OR " : "") . "$D LIKE " . q("$_GET[value]%") . " ORDER BY 2 LIMIT $y"); for ($q = 1; ($L = $J->fetch_row()) && $q < $y; $q++)echo"<a href='" . h(ME . "edit=" . urlencode($R) . "&where" . urlencode("[" . bracket_escape(idf_unescape($r)) . "]") . "=" . urlencode($L[0])) . "'>" . h($L[1]) . "</a><br>\n"; if ($L)echo"...\n"; }exit; } else {page_header('Server', "", false); if ($b->homepage()) {echo"<form action='' method='post'>\n", "<p>" . 'Search data in tables' . ": <input name='query' value='" . h($_POST["query"]) . "'> <input type='submit' value='" . 'Search' . "'>\n"; if ($_POST["query"] != "")search_tables(); echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n", '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>' . 'Table' . '<td>' . 'Rows' . "</thead>\n"; foreach (table_status()as$R=>$L) {$D = $b->tableName($L); if (isset($L["Engine"]) && $D != "") {echo'<tr' . odd() . '><td>' . checkbox("tables[]", $R, in_array($R, (array) $_POST["tables"], true), "", "formUncheck('check-all');"), "<th><a href='" . h(ME) . 'select=' . urlencode($R) . "'>$D</a>"; $V = format_number($L["Rows"]); echo"<td align='right'><a href='" . h(ME . "edit=") . urlencode($R) . "'>" . ($L["Engine"] == "InnoDB" && $V ? "~ $V" : $V) . "</a>"; }}echo"</table>\n", "<script type='text/javascript'>tableCheck();</script>\n", "</form>\n"; }}page_footer();
558 558
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +950 added lines, -171 removed lines patch added patch discarded remove patch
@@ -6,11 +6,17 @@  discard block
 block discarded – undo
6 6
 * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
7 7
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
8 8
 * @version 4.2.5
9
-*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae)$$V=$Ae;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
10
-lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
11
-lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ	ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›­æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š	Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8А­£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü­’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤	l^íZ6˜ej…Á­³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxl֍ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù	€‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò	'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,E͝`T¦É6Ûˆ-“Åì¾ÅÚŽT[ѐªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø	•ÿš´hìÁ{Ü£•î ËԐ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV­‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØ͇Т©‰‚êcâ¡óB’—}Ø&`ˆîr+E­“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼	ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡	³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
12
-lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s>	)â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n	\ræs<ŒPi2INƐ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(ҝm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå	 Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ­˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§­ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$	CAƠ䄤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t	Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬­ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AK㝡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(­#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J	A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…):	ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDù­Ñ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8­ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æڌڇŸ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/؝X ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éPÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðȍôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEЀÔøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6â†¬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F	4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀΠt]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e­¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ	1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î	 ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*­/¹UÖVû‰¤þ­pì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Ɓ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·>	—BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ	¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6ChÂº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ߍ§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)א…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üà倠ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤	(€\r¹öGFžª@ؼÃúÙ­Àß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷È½à¸à\\P’,\"ª-rCÉrVäæYם·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’­ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/­ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê	‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rԁ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx	ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔĝ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã	ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„⢏ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ	€ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní	äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;S­Ç]ãñ@ËÇè:Ââ“­÷I~Û‘•ÙùҝÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}ϝ:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð­‰)¯i4Ñu•sÁ­ÇˆXÁMP¬‚^«ä5¹O’¥	bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE%	dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð­8=㐂ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰˦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr–	DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´­ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ҐÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±­OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
13
-lzw_decompress(compile_file('','minify_js'));}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&Ùœƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function
9
+*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae) {
10
+	$$V=$Ae;
11
+}
12
+}}if(function_exists("mb_internal_encoding")) {
13
+	mb_internal_encoding("8bit");
14
+}
15
+if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo
16
+lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");} elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
17
+lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ	ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›­æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š	Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8А­£’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü­’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤	l^íZ6˜ej…Á­³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxl֍ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù	€‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò	'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,E͝`T¦É6Ûˆ-“Åì¾ÅÚŽT[ѐªz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø	•ÿš´hìÁ{Ü£•î ËԐ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV­‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØ͇Т©‰‚êcâ¡óB’—}Ø&`ˆîr+E­“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼	ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡	³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");} elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
18
+lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s>	)â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n	\ræs<ŒPi2INƐ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(ҝm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå	 Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ­˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§­ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$	CAƠ䄤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t	Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬­ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AK㝡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(­#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J	A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…):	ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDù­Ñ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8­ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æڌڇŸ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/؝X ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éPÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðȍôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEЀÔøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6â†¬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F	4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀΠt]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e­¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ	1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î	 ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*­/¹UÖVû‰¤þ­pì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Ɓ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·>	—BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ	¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6ChÂº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ߍ§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)א…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üà倠ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤	(€\r¹öGFžª@ؼÃúÙ­Àß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷È½à¸à\\P’,\"ª-rCÉrVäæYם·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’­ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/­ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê	‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rԁ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx	ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔĝ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã	ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„⢏ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ	€ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní	äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;S­Ç]ãñ@ËÇè:Ââ“­÷I~Û‘•ÙùҝÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}ϝ:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð­‰)¯i4Ñu•sÁ­ÇˆXÁMP¬‚^«ä5¹O’¥	bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE%	dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð­8=㐂ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰˦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr–	DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´­ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ҐÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±­OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");} elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
19
+lzw_decompress(compile_file('','minify_js'));} else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&Ùœƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function
14 20
 connection(){global$f;return$f;}function
15 21
 adminer(){global$b;return$b;}function
16 22
 idf_unescape($gc){$uc=substr($gc,-1);return
@@ -20,7 +26,10 @@  discard block
 block discarded – undo
20 26
 number($V){return
21 27
 preg_replace('~[^0-9]+~','',$V);}function
22 28
 remove_slashes($pd,$Hb=false){if(get_magic_quotes_gpc()){while(list($x,$V)=each($pd)){foreach($V
23
-as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];}else$pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U));}}}}function
29
+as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];} else {
30
+	$pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U));
31
+}
32
+}}}}function
24 33
 bracket_escape($gc,$ua=false){static$re=array(':'=>':1',']'=>':2','['=>':3');return
25 34
 strtr($gc,($ua?array_flip($re):$re));}function
26 35
 charset($f){return(version_compare($f->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function
@@ -32,53 +41,137 @@  discard block
 block discarded – undo
32 41
 checkbox($D,$W,$Fa,$sc="",$Tc="",$Ia=""){$K="<input type='checkbox' name='$D' value='".h($W)."'".($Fa?" checked":"").($Tc?' onclick="'.h($Tc).'"':'').">";return($sc!=""||$Ia?"<label".($Ia?" class='$Ia'":"").">$K".h($sc)."</label>":$K);}function
33 42
 optionlist($Xc,$Id=null,$Fe=false){$K="";foreach($Xc
34 43
 as$w=>$U){$Yc=array($w=>$U);if(is_array($U)){$K.='<optgroup label="'.h($w).'">';$Yc=$U;}foreach($Yc
35
-as$x=>$V)$K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V);if(is_array($U))$K.='</optgroup>';}return$K;}function
36
-html_select($D,$Xc,$W="",$Sc=true){if($Sc)return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>";$K="";foreach($Xc
37
-as$x=>$V)$K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>";return$K;}function
44
+as$x=>$V) {
45
+	$K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V);
46
+}
47
+if(is_array($U)) {
48
+	$K.='</optgroup>';
49
+}
50
+}return$K;}function
51
+html_select($D,$Xc,$W="",$Sc=true){if($Sc) {
52
+	return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>";
53
+}
54
+$K="";foreach($Xc
55
+as$x=>$V) {
56
+	$K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>";
57
+}
58
+return$K;}function
38 59
 select_input($c,$Xc,$W="",$hd=""){return($Xc?"<select$c><option value=''>$hd".optionlist($Xc,$W,true)."</select>":"<input$c size='10' value='".h($W)."' placeholder='$hd'>");}function
39 60
 confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function
40 61
 print_fieldset($r,$wc,$Je=false,$Tc=""){echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"".h($Tc)."return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'".($Je?"":" class='hidden'").">\n";}function
41 62
 bold($Aa,$Ia=""){return($Aa?" class='active $Ia'":($Ia?" class='$Ia'":""));}function
42
-odd($K=' class="odd"'){static$q=0;if(!$K)$q=-1;return($q++%2?$K:'');}function
63
+odd($K=' class="odd"'){static$q=0;if(!$K) {
64
+	$q=-1;
65
+}
66
+return($q++%2?$K:'');}function
43 67
 js_escape($Q){return
44 68
 addcslashes($Q,"\r\n'\\/");}function
45
-json_row($x,$V=null){static$Ib=true;if($Ib)echo"{";if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;}else{echo"\n}\n";$Ib=true;}}function
69
+json_row($x,$V=null){static$Ib=true;if($Ib) {
70
+	echo"{";
71
+}
72
+if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;} else{echo"\n}\n";$Ib=true;}}function
46 73
 ini_bool($kc){$V=ini_get($kc);return(preg_match('~^(on|true|yes)$~i',$V)||(int)$V);}function
47
-sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function
74
+sid(){static$K;if($K===null) {
75
+	$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));
76
+}
77
+return$K;}function
48 78
 set_password($X,$O,$T,$G){$_SESSION["pwds"][$X][$O][$T]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function
49
-get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function
79
+get_password(){$K=get_session("pwds");if(is_array($K)) {
80
+	$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);
81
+}
82
+return$K;}function
50 83
 q($Q){global$f;return$f->quote($Q);}function
51
-get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$d];}return$K;}function
52
-get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g))$g=$f;$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function
53
-get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function
84
+get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row()) {
85
+	$K[]=$L[$d];
86
+}
87
+}return$K;}function
88
+get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g)) {
89
+	$g=$f;
90
+}
91
+$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row()) {
92
+	$K[$L[0]]=$L[1];
93
+}
94
+}return$K;}function
95
+get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc()) {
96
+	$K[]=$L;
97
+}
98
+} elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER")) {
99
+	echo$k.error()."\n";
100
+}
101
+return$K;}function
54 102
 unique_array($L,$t){foreach($t
55
-as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x]))continue
56
-2;$K[$x]=$L[$x];}return$K;}}}function
57
-escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return
103
+as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x])) {
104
+	continue
105
+2;
106
+}
107
+$K[$x]=$L[$x];}return$K;}}}function
108
+escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A)) {
109
+	return$A[1].idf_escape(idf_unescape($A[2])).$A[3];
110
+}
111
+return
58 112
 idf_escape($x);}function
59
-where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V))$K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin";}foreach((array)$Y["null"]as$x)$K[]=escape_key($x)." IS NULL";return
113
+where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V)) {
114
+	$K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin";
115
+}
116
+}foreach((array)$Y["null"]as$x) {
117
+	$K[]=escape_key($x)." IS NULL";
118
+}
119
+return
60 120
 implode(" AND ",$K);}function
61 121
 where_check($V,$m=array()){parse_str($V,$Ea);remove_slashes(array(&$Ea));return
62 122
 where($Ea,$m);}function
63 123
 where_link($q,$d,$W,$Vc="="){return"&where%5B$q%5D%5Bcol%5D=".urlencode($d)."&where%5B$q%5D%5Bop%5D=".urlencode(($W!==null?$Vc:"IS NULL"))."&where%5B$q%5D%5Bval%5D=".urlencode($W);}function
64 124
 convert_fields($e,$m,$N=array()){$K="";foreach($e
65
-as$x=>$V){if($N&&!in_array(idf_escape($x),$N))continue;$oa=convert_field($m[$x]);if($oa)$K.=", $oa AS ".idf_escape($x);}return$K;}function
66
-cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;return
125
+as$x=>$V){if($N&&!in_array(idf_escape($x),$N)) {
126
+	continue;
127
+}
128
+$oa=convert_field($m[$x]);if($oa) {
129
+	$K.=", $oa AS ".idf_escape($x);
130
+}
131
+}return$K;}function
132
+cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0) {
133
+	$ed[]=true;
134
+}
135
+return
67 136
 call_user_func_array('setcookie',$ed);}function
68
-restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function
69
-stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
137
+restart_session(){if(!ini_bool("session.use_cookies")) {
138
+	session_start();
139
+}
140
+}function
141
+stop_session(){if(!ini_bool("session.use_cookies")) {
142
+	session_write_close();
143
+}
144
+}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
70 145
 set_session($x,$V){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$V;}function
71 146
 auth_url($X,$O,$T,$h=null){global$jb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($jb))."|username|".($h!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($X!="server"||$O!=""?urlencode($X)."=".urlencode($O)."&":"")."username=".urlencode($T).($h!=""?"&db=".urlencode($h):"").($A[2]?"&$A[2]":"");}function
72 147
 is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
73
-redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="")$_=".";header("Location: $_");exit;}}function
74
-query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I)$Sd=$b->messageQuery($I,$je);if($Bb){$k=error().$Sd;return
75
-false;}if($xd)redirect($_,$B.$Sd);return
148
+redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="") {
149
+	$_=".";
150
+}
151
+header("Location: $_");exit;}}function
152
+query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I) {
153
+	$Sd=$b->messageQuery($I,$je);
154
+}
155
+if($Bb){$k=error().$Sd;return
156
+false;}if($xd) {
157
+	redirect($_,$B.$Sd);
158
+}
159
+return
76 160
 true;}function
77
-queries($I){global$f;static$sd=array();static$Td;if(!$Td)$Td=microtime(true);if($I===null)return
78
-array(implode("\n",$sd),format_time($Td));$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function
161
+queries($I){global$f;static$sd=array();static$Td;if(!$Td) {
162
+	$Td=microtime(true);
163
+}
164
+if($I===null) {
165
+	return
166
+array(implode("\n",$sd),format_time($Td));
167
+}
168
+$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function
79 169
 apply_queries($I,$ee,$wb='table'){foreach($ee
80
-as$R){if(!queries("$I ".$wb($R)))return
81
-false;}return
170
+as$R){if(!queries("$I ".$wb($R))) {
171
+	return
172
+false;
173
+}
174
+}return
82 175
 true;}function
83 176
 queries_redirect($_,$B,$xd){list($sd,$je)=queries(null);return
84 177
 query_redirect($sd,$_,$B,$xd,false,!$xd,$je);}function
@@ -87,50 +180,159 @@  discard block
 block discarded – undo
87 180
 remove_from_uri($dd=""){return
88 181
 substr(preg_replace("~(?<=[?&])($dd".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function
89 182
 pagination($F,$Ya){return" ".($F==$Ya?$F+1:'<a href="'.h(remove_from_uri("page").($F?"&page=$F".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($F+1)."</a>");}function
90
-get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb)return
91
-null;foreach($Eb
92
-as$x=>$V)$Eb[$x]=(array)$V;$K='';foreach($Eb["error"]as$x=>$k){if($k)return$k;$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd))$Ta=iconv("utf-16","utf-8",$Ta);elseif($Td=="\xEF\xBB\xBF")$Ta=substr($Ta,3);$K.=$Ta."\n\n";}else$K.=$Ta;}return$K;}function
183
+get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb) {
184
+	return
185
+null;
186
+}
187
+foreach($Eb
188
+as$x=>$V) {
189
+	$Eb[$x]=(array)$V;
190
+}
191
+$K='';foreach($Eb["error"]as$x=>$k){if($k) {
192
+	return$k;
193
+}
194
+$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd)) {
195
+	$Ta=iconv("utf-16","utf-8",$Ta);
196
+} elseif($Td=="\xEF\xBB\xBF") {
197
+	$Ta=substr($Ta,3);
198
+}
199
+$K.=$Ta."\n\n";} else {
200
+	$K.=$Ta;
201
+}
202
+}return$K;}function
93 203
 upload_error($k){$Ec=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($Ec?" ".sprintf('Maximum allowed file size is %sB.',$Ec):""):'File does not exist.');}function
94 204
 repeat_pattern($H,$xc){return
95 205
 str_repeat("$H{0,65535}",$xc/65535)."$H{0,".($xc%65535)."}";}function
96 206
 is_utf8($V){return(preg_match('~~u',$V)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$V));}function
97
-shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A);return
207
+shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A)) {
208
+	preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A);
209
+}
210
+return
98 211
 h($A[1]).$Zd.(isset($A[2])?"":"<i>...</i>");}function
99 212
 format_number($V){return
100 213
 strtr(number_format($V,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
101 214
 friendly_url($V){return
102 215
 preg_replace('~[^a-z0-9_]~i','-',$V);}function
103 216
 hidden_fields($pd,$ic=array()){while(list($x,$V)=each($pd)){if(!in_array($x,$ic)){if(is_array($V)){foreach($V
104
-as$w=>$U)$pd[$x."[$w]"]=$U;}else
105
-echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">';}}}function
217
+as$w=>$U) {
218
+	$pd[$x."[$w]"]=$U;
219
+}
220
+} else {
221
+	echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">';
222
+}
223
+}}}function
106 224
 hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function
107 225
 table_status1($R,$Cb=false){$K=table_status($R,$Cb);return($K?$K:array("Name"=>$R));}function
108
-column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V)$K[$V][]=$Nb;}return$K;}function
226
+column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V) {
227
+	$K[$V][]=$Nb;
228
+}
229
+}return$K;}function
109 230
 enum_input($ue,$c,$l,$W,$sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);$K=($sb!==null?"<label><input type='$ue'$c value='$sb'".((is_array($W)?in_array($sb,$W):$W===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?$W==$q+1:(is_array($W)?in_array($q+1,$W):$W===$V));$K.=" <label><input type='$ue'$c value='".($q+1)."'".($Fa?' checked':'').'>'.h($b->editVal($V,$l)).'</label>';}return$K;}function
110
-input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0)$na[]=JSON_PRETTY_PRINT;$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"])$o=null;$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum")echo
111
-nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W);else{$Ib=0;foreach($Tb
112
-as$x=>$V){if($x===""||!$V)break;$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="")echo$mc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>";elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite")$c.=" cols='50' rows='12'";else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';}elseif($o=="json")echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>';else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"]))$Gc+=7;echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function
113
-process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1)return
114
-false;if($W=="")return"NULL";return+$W;}if($l["auto_increment"]&&$W=="")return
115
-null;if($o=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($o=="NULL")return"NULL";if($l["type"]=="set")return
116
-array_sum((array)$W);if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W))return
117
-false;return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb))return
118
-false;return
231
+input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0) {
232
+	$na[]=JSON_PRETTY_PRINT;
233
+}
234
+$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"]) {
235
+	$o=null;
236
+}
237
+$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum") {
238
+	echo
239
+nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W);
240
+} else{$Ib=0;foreach($Tb
241
+as$x=>$V){if($x===""||!$V) {
242
+	break;
243
+}
244
+$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="") {
245
+	echo$mc;
246
+} elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}} elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")) {
247
+	echo"<input type='file' name='fields-$D'$Sc>";
248
+} elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite") {
249
+	$c.=" cols='50' rows='12'";
250
+} else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';} elseif($o=="json") {
251
+	echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>';
252
+} else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"])) {
253
+	$Gc+=7;
254
+}
255
+echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function
256
+process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1) {
257
+	return
258
+false;
259
+}
260
+if($W=="") {
261
+	return"NULL";
262
+}
263
+return+$W;}if($l["auto_increment"]&&$W=="") {
264
+	return
265
+null;
266
+}
267
+if($o=="orig") {
268
+	return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);
269
+}
270
+if($o=="NULL") {
271
+	return"NULL";
272
+}
273
+if($l["type"]=="set") {
274
+	return
275
+array_sum((array)$W);
276
+}
277
+if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W)) {
278
+	return
279
+false;
280
+}
281
+return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb)) {
282
+	return
283
+false;
284
+}
285
+return
119 286
 q($Eb);}return$b->processInput($l,$W,$o);}function
120 287
 fields_from_edit(){global$i;$K=array();foreach((array)$_POST["field_keys"]as$x=>$V){if($V!=""){$V=bracket_escape($V);$_POST["function"][$V]=$_POST["field_funs"][$x];$_POST["fields"][$V]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$V){$D=bracket_escape($x,1);$K[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($x==$i->primary),);}return$K;}function
121 288
 search_tables(){global$b,$f;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$Qb=false;foreach(table_status('',true)as$R=>$S){$D=$b->tableName($S);if(isset($S["Engine"])&&$D!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$J=$f->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$J||$J->fetch_row()){if(!$Qb){echo"<ul>\n";$Qb=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$D</a>\n":"$D: <span class='error'>".error()."</span>\n");}}}echo($Qb?"</ul>":"<p class='message'>".'No tables.')."\n";}function
122
-dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":""));session_write_close();ob_flush();flush();return$K;}function
289
+dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text") {
290
+	header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":""));
291
+}
292
+session_write_close();ob_flush();flush();return$K;}function
123 293
 dump_csv($L){foreach($L
124
-as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="")$L[$x]='"'.str_replace('"','""',$V).'"';}echo
294
+as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="") {
295
+	$L[$x]='"'.str_replace('"','""',$V).'"';
296
+}
297
+}echo
125 298
 implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function
126 299
 apply_sql_function($o,$d){return($o?($o=="unixepoch"?"DATETIME($d, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$d)"):$d);}function
127
-get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$Fb=@tempnam("","");if(!$Fb)return
128
-false;$K=dirname($Fb);unlink($Fb);}}return$K;}function
129
-password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va)return$K;$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function
300
+get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir')) {
301
+	$K=sys_get_temp_dir();
302
+} else{$Fb=@tempnam("","");if(!$Fb) {
303
+	return
304
+false;
305
+}
306
+$K=dirname($Fb);unlink($Fb);}}return$K;}function
307
+password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va) {
308
+	return$K;
309
+}
310
+$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function
130 311
 rand_string(){return
131 312
 md5(uniqid(mt_rand(),true));}function
132 313
 select_value($V,$z,$l,$he){global$b,$aa;if(is_array($V)){$K="";foreach($V
133
-as$w=>$U)$K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he);return"<table cellspacing='0'>$K</table>";}if(!$z)$z=$b->selectLink($V,$l);if($z===null){if(is_mail($V))$z="mailto:$V";if($qd=is_url($V))$z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V));}$K=$b->editVal($V,$l);if($K!==null){if($K==="")$K="&nbsp;";elseif(!is_utf8($K))$K="\0";elseif($he!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$he));else$K=h($K);}return$b->selectVal($K,$z,$l,$V);}function
314
+as$w=>$U) {
315
+	$K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he);
316
+}
317
+return"<table cellspacing='0'>$K</table>";}if(!$z) {
318
+	$z=$b->selectLink($V,$l);
319
+}
320
+if($z===null){if(is_mail($V)) {
321
+	$z="mailto:$V";
322
+}
323
+if($qd=is_url($V)) {
324
+	$z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V));
325
+}
326
+}$K=$b->editVal($V,$l);if($K!==null){if($K==="") {
327
+	$K="&nbsp;";
328
+} elseif(!is_utf8($K)) {
329
+	$K="\0";
330
+} elseif($he!=""&&is_shortable($l)) {
331
+	$K=shorten_utf8($K,max(0,+$he));
332
+} else {
333
+	$K=h($K);
334
+}
335
+}return$b->selectVal($K,$z,$l,$V);}function
134 336
 is_mail($pb){$pa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$H="$pa+(\\.$pa+)*@($ib?\\.)+$ib";return
135 337
 is_string($pb)&&preg_match("(^$H(,\\s*$H)*\$)i",$pb);}function
136 338
 is_url($Q){$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q,$A)?strtolower($A[1]):"");}function
@@ -143,38 +345,94 @@  discard block
 block discarded – undo
143 345
 	}, \'token=',$qe,'&kill=',$rc,'\');
144 346
 }, ',1000*$ke,');
145 347
 </script>
146
-';}else$g=null;ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return
348
+';} else {
349
+	$g=null;
350
+}
351
+ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return
147 352
 array_keys($K);}function
148 353
 get_token(){$vd=rand(1,1e6);return($vd^$_SESSION["token"]).":$vd";}function
149 354
 verify_token(){list($qe,$vd)=explode(":",$_POST["token"]);return($vd^$_SESSION["token"])==$qe;}function
150
-lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a)$_a++;}}$fb=range("\0","\xFF");$K="";foreach($Ka
151
-as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob))$ob=$Ne.$Ne[0];$K.=$ob;if($q)$fb[]=$Ne.$ob[0];$Ne=$ob;}return$K;}function
355
+lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a) {
356
+	$_a++;
357
+}
358
+}}$fb=range("\0","\xFF");$K="";foreach($Ka
359
+as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob)) {
360
+	$ob=$Ne.$Ne[0];
361
+}
362
+$K.=$ob;if($q) {
363
+	$fb[]=$Ne.$ob[0];
364
+}
365
+$Ne=$ob;}return$K;}function
152 366
 on_help($Pa,$Pd=0){return" onmouseover='helpMouseover(this, event, ".h($Pa).", $Pd);' onmouseout='helpMouseout(this, event);'";}function
153
-edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form">
154
-';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m
155
-as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd))$cb=$yd[1];}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W))$W=$b->editVal($W,$l);$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
367
+edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false) {
368
+	echo"<p class='error'>".'No rows.'."\n";
369
+}
370
+echo'<form action="" method="post" enctype="multipart/form-data" id="form">
371
+';if(!$m) {
372
+	echo"<p class='error'>".'You have no privileges to update this table.'."\n";
373
+} else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m
374
+as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd)) {
375
+	$cb=$yd[1];
376
+}
377
+}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W)) {
378
+	$W=$b->editVal($W,$l);
379
+}
380
+$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table")) {
381
+	echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";
382
+}
383
+echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"])) {
384
+	echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";
385
+}
386
+}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"])) {
387
+	hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));
388
+}
389
+echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'">
156 390
 <input type="hidden" name="save" value="1">
157 391
 <input type="hidden" name="token" value="',$qe,'">
158 392
 </form>
159
-';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function
393
+';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"]) {
394
+	$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];
395
+}
396
+if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="") {
397
+	$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";
398
+}
399
+$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0) {
400
+	$ed[]=true;
401
+}
402
+call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime()) {
403
+	set_magic_quotes_runtime(false);
404
+}
405
+@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function
160 406
 get_lang(){return'en';}function
161 407
 lang($se,$Oc=null){if(is_array($se)){$jd=($Oc==1?0:1);$se=$se[$jd];}$se=str_replace("%d","%s",$se);$Oc=format_number($Oc);return
162 408
 sprintf($se,$Oc);}if(extension_loaded('pdo')){class
163 409
 Min_PDO
164 410
 extends
165 411
 PDO{var$_result,$server_info,$affected_rows,$errno,$error;function
166
-__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false)unset($b->operators[$jd]);}function
167
-dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);}catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
412
+__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false) {
413
+	unset($b->operators[$jd]);
414
+}
415
+}function
416
+dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);} catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function
168 417
 query($I,$xe=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return
169 418
 false;}$this->store_result($J);return$J;}function
170 419
 multi_query($I){return$this->_result=$this->query($I);}function
171
-store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return
172
-false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
420
+store_result($J=null){if(!$J){$J=$this->_result;if(!$J) {
421
+	return
422
+false;
423
+}
424
+}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
173 425
 true;}function
174
-next_result(){if(!$this->_result)return
175
-false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
176
-result($I,$l=0){$J=$this->query($I);if(!$J)return
177
-false;$L=$J->fetch();return$L[$l];}}class
426
+next_result(){if(!$this->_result) {
427
+	return
428
+false;
429
+}
430
+$this->_result->_offset=0;return@$this->_result->nextRowset();}function
431
+result($I,$l=0){$J=$this->query($I);if(!$J) {
432
+	return
433
+false;
434
+}
435
+$L=$J->fetch();return$L[$l];}}class
178 436
 Min_PDOStatement
179 437
 extends
180 438
 PDOStatement{var$_offset=0,$num_rows;function
@@ -183,11 +441,20 @@  discard block
 block discarded – undo
183 441
 fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$jb=array();class
184 442
 Min_SQL{var$_conn;function
185 443
 __construct($f){$this->_conn=$f;}function
186
-select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n");$Td=microtime(true);$K=$this->_conn->query($I);if($nd)echo$b->selectQuery($I,format_time($Td));return$K;}function
444
+select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I) {
445
+	$I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n");
446
+}
447
+$Td=microtime(true);$K=$this->_conn->query($I);if($nd) {
448
+	echo$b->selectQuery($I,format_time($Td));
449
+}
450
+return$K;}function
187 451
 delete($R,$td,$y=0){$I="FROM ".table($R);return
188 452
 queries("DELETE".($y?limit1($I,$td):" $I$td"));}function
189 453
 update($R,$P,$td,$y=0,$Kd="\n"){$Ge=array();foreach($P
190
-as$x=>$V)$Ge[]="$x = $V";$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return
454
+as$x=>$V) {
455
+	$Ge[]="$x = $V";
456
+}
457
+$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return
191 458
 queries("UPDATE".($y?limit1($I,$td):" $I$td"));}function
192 459
 insert($R,$P){return
193 460
 queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function
@@ -204,15 +471,29 @@  discard block
 block discarded – undo
204 471
 MySQLi{var$extension="MySQLi";function
205 472
 __construct(){parent::init();}function
206 473
 connect($O="",$T="",$G="",$Za=null,$id=null,$Qd=null){mysqli_report(MYSQLI_REPORT_OFF);list($dc,$id)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$dc:ini_get("mysqli.default_host")),($O.$T!=""?$T:ini_get("mysqli.default_user")),($O.$T.$G!=""?$G:ini_get("mysqli.default_pw")),$Za,(is_numeric($id)?$id:ini_get("mysqli.default_port")),(!is_numeric($id)?$id:$Qd));return$K;}function
207
-set_charset($Da){if(parent::set_charset($Da))return
208
-true;parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function
209
-result($I,$l=0){$J=$this->query($I);if(!$J)return
210
-false;$L=$J->fetch_array();return$L[$l];}function
211
-quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
474
+set_charset($Da){if(parent::set_charset($Da)) {
475
+	return
476
+true;
477
+}
478
+parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function
479
+result($I,$l=0){$J=$this->query($I);if(!$J) {
480
+	return
481
+false;
482
+}
483
+$L=$J->fetch_array();return$L[$l];}function
484
+quote($Q){return"'".$this->escape_string($Q)."'";}}} elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class
212 485
 Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function
213
-connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
214
-set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link))return
215
-true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function
486
+connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link) {
487
+	$this->server_info=mysql_get_server_info($this->_link);
488
+} else {
489
+	$this->error=mysql_error();
490
+}
491
+return(bool)$this->_link;}function
492
+set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link)) {
493
+	return
494
+true;
495
+}
496
+mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function
216 497
 quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function
217 498
 select_db($Za){return
218 499
 mysql_select_db($Za,$this->_link);}function
@@ -225,8 +506,11 @@  discard block
 block discarded – undo
225 506
 store_result(){return$this->_result;}function
226 507
 next_result(){return
227 508
 false;}function
228
-result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return
229
-false;return
509
+result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows) {
510
+	return
511
+false;
512
+}
513
+return
230 514
 mysql_result($J->_result,0,$l);}}class
231 515
 Min_Result{var$num_rows,$_result,$_offset=0;function
232 516
 __construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function
@@ -235,7 +519,7 @@  discard block
 block discarded – undo
235 519
 fetch_row(){return
236 520
 mysql_fetch_row($this->_result);}function
237 521
 fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function
238
-__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class
522
+__destruct(){mysql_free_result($this->_result);}}} elseif(extension_loaded("pdo_mysql")){class
239 523
 Min_DB
240 524
 extends
241 525
 Min_PDO{var$extension="PDO_MySQL";function
@@ -250,27 +534,56 @@  discard block
 block discarded – undo
250 534
 Min_SQL{function
251 535
 insert($R,$P){return($P?parent::insert($R,$P):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
252 536
 insertUpdate($R,$M,$md){$e=array_keys(reset($M));$ld="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ge=array();foreach($e
253
-as$x)$Ge[$x]="$x = VALUES($x)";$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M
254
-as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd))return
255
-false;$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return
537
+as$x) {
538
+	$Ge[$x]="$x = VALUES($x)";
539
+}
540
+$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M
541
+as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd)) {
542
+	return
543
+false;
544
+}
545
+$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return
256 546
 queries($ld.implode(",\n",$Ge).$Zd);}}function
257 547
 idf_escape($gc){return"`".str_replace("`","``",$gc)."`";}function
258 548
 table($gc){return
259 549
 idf_escape($gc);}function
260 550
 connect(){global$b;$f=new
261
-Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$Ed;return$K;}function
551
+Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K)) {
552
+	$K=$Ed;
553
+}
554
+return$K;}function
262 555
 get_databases($Jb){global$f;$K=get_session("dbs");if($K===null){$I=($f->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($Jb?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function
263 556
 limit($I,$Y,$y,$Pc=0,$Kd=" "){return" $I$Y".($y!==null?$Kd."LIMIT $y".($Pc?" OFFSET $Pc":""):"");}function
264 557
 limit1($I,$Y){return
265 558
 limit($I,$Y,1);}function
266
-db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A))$K=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A))$K=$Na[$A[1]][-1];return$K;}function
267
-engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function
559
+db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A)) {
560
+	$K=$A[1];
561
+} elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A)) {
562
+	$K=$Na[$A[1]][-1];
563
+}
564
+return$K;}function
565
+engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"])) {
566
+	$K[]=$L["Engine"];
567
+}
568
+}return$K;}function
268 569
 logged_user(){global$f;return$f->result("SELECT USER()");}function
269 570
 tables_list(){global$f;return
270 571
 get_key_vals($f->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
271 572
 count_tables($ab){$K=array();foreach($ab
272
-as$h)$K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));return$K;}function
273
-table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($D!="")return$L;$K[$L["Name"]]=$L;}return$K;}function
573
+as$h) {
574
+	$K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));
575
+}
576
+return$K;}function
577
+table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB") {
578
+	$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);
579
+}
580
+if(!isset($L["Engine"])) {
581
+	$L["Comment"]="";
582
+}
583
+if($D!="") {
584
+	return$L;
585
+}
586
+$K[$L["Name"]]=$L;}return$K;}function
274 587
 is_view($S){return$S["Engine"]===null;}function
275 588
 fk_support($S){global$f;return
276 589
 preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&version_compare($f->server_info,'5.6')>=0);}function
@@ -280,21 +593,53 @@  discard block
 block discarded – undo
280 593
 as$A){preg_match_all("~$H~",$A[2],$Rd);preg_match_all("~$H~",$A[5],$fe);$K[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('idf_unescape',$Rd[0]),"target"=>array_map('idf_unescape',$fe[0]),"on_delete"=>($A[6]?$A[6]:"RESTRICT"),"on_update"=>($A[7]?$A[7]:"RESTRICT"),);}}return$K;}function
281 594
 view($D){global$f;return
282 595
 array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$f->result("SHOW CREATE VIEW ".table($D),1)));}function
283
-collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K
284
-as$x=>$V)asort($K[$x]);return$K;}function
596
+collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"]) {
597
+	$K[$L["Charset"]][-1]=$L["Collation"];
598
+} else {
599
+	$K[$L["Charset"]][]=$L["Collation"];
600
+}
601
+}ksort($K);foreach($K
602
+as$x=>$V) {
603
+	asort($K[$x]);
604
+}
605
+return$K;}function
285 606
 information_schema($h){global$f;return($f->server_info>=5&&$h=="information_schema")||($f->server_info>=5.5&&$h=="performance_schema");}function
286 607
 error(){global$f;return
287 608
 h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$f->error));}function
288 609
 create_database($h,$Ma){return
289 610
 queries("CREATE DATABASE ".idf_escape($h).($Ma?" COLLATE ".q($Ma):""));}function
290 611
 drop_databases($ab){$K=apply_queries("DROP DATABASE",$ab,'idf_escape');restart_session();set_session("dbs",null);return$K;}function
291
-rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue)$zd[]=table($R)." TO ".idf_escape($D).".".table($R);$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function
292
-auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY")$ta=" UNIQUE";}}return" AUTO_INCREMENT$ta";}function
612
+rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue) {
613
+	$zd[]=table($R)." TO ".idf_escape($D).".".table($R);
614
+}
615
+$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K) {
616
+	queries("DROP DATABASE ".idf_escape(DB));
617
+}
618
+restart_session();set_session("dbs",null);}return$K;}function
619
+auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY") {
620
+	$ta=" UNIQUE";
621
+}
622
+}}return" AUTO_INCREMENT$ta";}function
293 623
 alter_table($R,$D,$m,$Kb,$Qa,$tb,$Ma,$sa,$fd){$ma=array();foreach($m
294
-as$l)$ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="")return
295
-queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd");if($R!=$D)$ma[]="RENAME TO ".table($D);if($Ud)$ma[]=ltrim($Ud);return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function
624
+as$l) {
625
+	$ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0]));
626
+}
627
+$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="") {
628
+	return
629
+queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd");
630
+}
631
+if($R!=$D) {
632
+	$ma[]="RENAME TO ".table($D);
633
+}
634
+if($Ud) {
635
+	$ma[]=ltrim($Ud);
636
+}
637
+return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function
296 638
 alter_indexes($R,$ma){foreach($ma
297
-as$x=>$V)$ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")");return
639
+as$x=>$V) {
640
+	$ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")");
641
+}
642
+return
298 643
 queries("ALTER TABLE ".table($R).implode(",",$ma));}function
299 644
 truncate_tables($ee){return
300 645
 apply_queries("TRUNCATE TABLE",$ee);}function
@@ -302,23 +647,41 @@  discard block
 block discarded – undo
302 647
 queries("DROP VIEW ".implode(", ",array_map('table',$Ie)));}function
303 648
 drop_tables($ee){return
304 649
 queries("DROP TABLE ".implode(", ",array_map('table',$ee)));}function
305
-move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R)$zd[]=table($R)." TO ".idf_escape($fe).".".table($R);return
650
+move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R) {
651
+	$zd[]=table($R)." TO ".idf_escape($fe).".".table($R);
652
+}
653
+return
306 654
 queries("RENAME TABLE ".implode(", ",$zd));}function
307 655
 copy_tables($ee,$Ie,$fe){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($ee
308
-as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return
309
-false;}foreach($Ie
310
-as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]"))return
311
-false;}return
656
+as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R))) {
657
+	return
658
+false;
659
+}
660
+}foreach($Ie
661
+as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]")) {
662
+	return
663
+false;
664
+}
665
+}return
312 666
 true;}function
313
-trigger($D){if($D=="")return
314
-array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return
667
+trigger($D){if($D=="") {
668
+	return
669
+array();
670
+}
671
+$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return
315 672
 reset($M);}function
316
-triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function
673
+triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L) {
674
+	$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);
675
+}
676
+return$K;}function
317 677
 trigger_options(){return
318 678
 array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
319 679
 routine($D,$ue){global$f,$ub,$lc,$we;$la=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ve="((".implode("|",array_merge(array_keys($we),$la)).")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$H="\\s*(".($ue=="FUNCTION"?"":$lc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve";$Va=$f->result("SHOW CREATE $ue ".idf_escape($D),2);preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*".($ue=="FUNCTION"?"RETURNS\\s+$ve\\s+":"")."(.*)~is",$Va,$A);$m=array();preg_match_all("~$H\\s*,?~is",$A[1],$Bc,PREG_SET_ORDER);foreach($Bc
320
-as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION")return
321
-array("fields"=>$m,"definition"=>$A[11]);return
680
+as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION") {
681
+	return
682
+array("fields"=>$m,"definition"=>$A[11]);
683
+}
684
+return
322 685
 array("fields"=>$m,"returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",);}function
323 686
 routines(){return
324 687
 get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function
@@ -334,18 +697,42 @@  discard block
 block discarded – undo
334 697
 get_schema(){return"";}function
335 698
 set_schema($Fd){return
336 699
 true;}function
337
-create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function
700
+create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa) {
701
+	$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);
702
+}
703
+return$K;}function
338 704
 truncate_sql($R){return"TRUNCATE ".table($R);}function
339 705
 use_sql($Za){return"USE ".idf_escape($Za);}function
340
-trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L)$K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function
706
+trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L) {
707
+	$K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";
708
+}
709
+return$K;}function
341 710
 show_variables(){return
342 711
 get_key_vals("SHOW VARIABLES");}function
343 712
 process_list(){return
344 713
 get_rows("SHOW FULL PROCESSLIST");}function
345 714
 show_status(){return
346 715
 get_key_vals("SHOW STATUS");}function
347
-convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function
348
-unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function
716
+convert_field($l){if(preg_match("~binary~",$l["type"])) {
717
+	return"HEX(".idf_escape($l["field"]).")";
718
+}
719
+if($l["type"]=="bit") {
720
+	return"BIN(".idf_escape($l["field"])." + 0)";
721
+}
722
+if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) {
723
+	return"AsWKT(".idf_escape($l["field"]).")";
724
+}
725
+}function
726
+unconvert_field($l,$K){if(preg_match("~binary~",$l["type"])) {
727
+	$K="UNHEX($K)";
728
+}
729
+if($l["type"]=="bit") {
730
+	$K="CONV($K, 2, 10) + 0";
731
+}
732
+if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) {
733
+	$K="GeomFromText($K)";
734
+}
735
+return$K;}function
349 736
 support($Db){global$f;return!preg_match("~scheme|sequence|type|view_trigger".($f->server_info<5.1?"|event|partitioning".($f->server_info<5?"|routine|trigger|view":""):"")."~",$Db);}function
350 737
 kill_process($V){return
351 738
 queries("KILL ".number($V));}function
@@ -382,7 +769,10 @@  discard block
 block discarded – undo
382 769
 h($ce["Comment"]!=""?$ce["Comment"]:$ce["Name"]);}function
383 770
 fieldName($l,$E=0){return
384 771
 h($l["comment"]!=""?$l["comment"]:$l["field"]);}function
385
-selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";}function
772
+selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null) {
773
+	echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";
774
+}
775
+}function
386 776
 foreignKeys($R){return
387 777
 foreign_keys($R);}function
388 778
 backwardKeys($R,$be){$K=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME
@@ -390,30 +780,85 @@  discard block
 block discarded – undo
390 780
 WHERE TABLE_SCHEMA = ".q($this->database())."
391 781
 AND REFERENCED_TABLE_SCHEMA = ".q($this->database())."
392 782
 AND REFERENCED_TABLE_NAME = ".q($R)."
393
-ORDER BY ORDINAL_POSITION",null,"")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"];foreach($K
394
-as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);}else
395
-unset($K[$x]);}return$K;}function
783
+ORDER BY ORDINAL_POSITION",null,"")as$L) {
784
+	$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"];
785
+}
786
+foreach($K
787
+as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);} else {
788
+	unset($K[$x]);
789
+}
790
+}return$K;}function
396 791
 backwardKeysPrint($wa,$L){foreach($wa
397 792
 as$R=>$va){foreach($va["keys"]as$Oa){$z=ME.'select='.urlencode($R);$q=0;foreach($Oa
398
-as$d=>$V)$z.=where_link($q++,$d,$L[$V]);echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa
399
-as$d=>$V)$z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]);echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function
793
+as$d=>$V) {
794
+	$z.=where_link($q++,$d,$L[$V]);
795
+}
796
+echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa
797
+as$d=>$V) {
798
+	$z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]);
799
+}
800
+echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function
400 801
 selectQuery($I,$je){return"<!--\n".str_replace("--","--><!-- ",$I)."\n($je)\n-->\n";}function
401
-rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"]))return
402
-idf_escape($l["field"]);}return"";}function
802
+rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"])) {
803
+	return
804
+idf_escape($l["field"]);
805
+}
806
+}return"";}function
403 807
 rowDescriptions($M,$Mb){$K=$M;foreach($M[0]as$x=>$V){if(list($R,$r,$D)=$this->_foreignColumn($Mb,$x)){$hc=array();foreach($M
404
-as$L)$hc[$L[$x]]=q($L[$x]);$eb=$this->_values[$R];if(!$eb)$eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")");foreach($M
405
-as$C=>$L){if(isset($L[$x]))$K[$C][$x]=(string)$eb[$L[$x]];}}}return$K;}function
808
+as$L) {
809
+	$hc[$L[$x]]=q($L[$x]);
810
+}
811
+$eb=$this->_values[$R];if(!$eb) {
812
+	$eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")");
813
+}
814
+foreach($M
815
+as$C=>$L){if(isset($L[$x])) {
816
+	$K[$C][$x]=(string)$eb[$L[$x]];
817
+}
818
+}}}return$K;}function
406 819
 selectLink($V,$l){}function
407
-selectVal($V,$z,$l,$ad){$K=($V===null?"&nbsp;":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad))$K="<img src='$z' alt='$K'>";}if(like_bool($l)&&$K!="&nbsp;")$K=($V?'yes':'no');if($z)$K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>";if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"]))$K="<div class='number'>$K</div>";elseif(preg_match('~date~',$l["type"]))$K="<div class='datetime'>$K</div>";return$K;}function
408
-editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null)return
409
-preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V);return$V;}function
820
+selectVal($V,$z,$l,$ad){$K=($V===null?"&nbsp;":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad)) {
821
+	$K="<img src='$z' alt='$K'>";
822
+}
823
+}if(like_bool($l)&&$K!="&nbsp;") {
824
+	$K=($V?'yes':'no');
825
+}
826
+if($z) {
827
+	$K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>";
828
+}
829
+if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"])) {
830
+	$K="<div class='number'>$K</div>";
831
+} elseif(preg_match('~date~',$l["type"])) {
832
+	$K="<div class='datetime'>$K</div>";
833
+}
834
+return$K;}function
835
+editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null) {
836
+	return
837
+preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V);
838
+}
839
+return$V;}function
410 840
 selectColumnsPrint($N,$e){}function
411 841
 selectSearchPrint($Y,$e,$t){$Y=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Search'."</legend><div>\n";$qc=array();foreach($Y
412
-as$x=>$V)$qc[$V["col"]]=$x;$q=0;$m=fields($_GET["select"]);foreach($e
413
-as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);}elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"])$Xc[0]='('.'empty'.')';$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y
842
+as$x=>$V) {
843
+	$qc[$V["col"]]=$x;
844
+}
845
+$q=0;$m=fields($_GET["select"]);foreach($e
846
+as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);} elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"]) {
847
+	$Xc[0]='('.'empty'.')';
848
+}
849
+$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y
414 850
 as$V){if(($V["col"]==""||$e[$V["col"]])&&"$V[col]$V[val]"!=""){echo"<div><select name='where[$q][col]'><option value=''>(".'anywhere'.")".optionlist($e,$V["col"],true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators,$V["op"]),"<input type='search' name='where[$q][val]' value='".h($V["val"])."' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";$q++;}}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(".'anywhere'.")".optionlist($e,null,true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators),"<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n","</div></fieldset>\n";}function
415 851
 selectOrderPrint($E,$e,$t){$Zc=array();foreach($t
416
-as$x=>$s){$E=array();foreach($s["columns"]as$V)$E[]=$e[$V];if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY")$Zc[$x]=implode(", ",$E);}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"])echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function
852
+as$x=>$s){$E=array();foreach($s["columns"]as$V) {
853
+	$E[]=$e[$V];
854
+}
855
+if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY") {
856
+	$Zc[$x]=implode(", ",$E);
857
+}
858
+}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"]) {
859
+	echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";
860
+}
861
+}function
417 862
 selectLimitPrint($y){echo"<fieldset><legend>".'Limit'."</legend><div>";echo
418 863
 html_select("limit",array("","50","100"),$y),"</div></fieldset>\n";}function
419 864
 selectLengthPrint($he){}function
@@ -425,20 +870,86 @@  discard block
 block discarded – undo
425 870
 selectEmailPrint($qb,$e){if($qb){print_fieldset("email",'E-mail',$_POST["email_append"]);echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n","<p>".'From'.": <input name='email_from' value='".h($_POST?$_POST["email_from"]:$_COOKIE["adminer_email"])."'>\n",'Subject'.": <input name='email_subject' value='".h($_POST["email_subject"])."'>\n","<p><textarea name='email_message' rows='15' cols='75'>".h($_POST["email_message"].($_POST["email_append"]?'{$'."$_POST[email_addition]}":""))."</textarea>\n","<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">".html_select("email_addition",$e,$_POST["email_addition"])."<input type='submit' name='email_append' value='".'Insert'."'>\n";echo"<p>".'Attachments'.": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">","<p>".(count($qb)==1?'<input type="hidden" name="email_field" value="'.h(key($qb)).'">':html_select("email_field",$qb)),"<input type='submit' name='email' value='".'Send'."' onclick=\"return this.form['delete'].onclick();\">\n","</div>\n","</div></fieldset>\n";}}function
426 871
 selectColumnsProcess($e,$t){return
427 872
 array(array(),array());}function
428
-selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum")$Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")";else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0")$Ra[]="$D IS NULL";}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function
429
-selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="")unset($_GET["order"][1]);if($_GET["order"])return
430
-array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V)$K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":"");return$K;}}return
873
+selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum") {
874
+	$Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")";
875
+} else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0") {
876
+	$Ra[]="$D IS NULL";
877
+}
878
+}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function
879
+selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="") {
880
+	unset($_GET["order"][1]);
881
+}
882
+if($_GET["order"]) {
883
+	return
884
+array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));
885
+}
886
+foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V) {
887
+	$K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":"");
888
+}
889
+return$K;}}return
431 890
 array();}function
432 891
 selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function
433 892
 selectLengthProcess(){return"100";}function
434
-selectEmailProcess($Y,$Mb){if($_POST["email_append"])return
435
-true;if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V)$_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]);$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"]))$Jd++;}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return
893
+selectEmailProcess($Y,$Mb){if($_POST["email_append"]) {
894
+	return
895
+true;
896
+}
897
+if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V) {
898
+	$_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]);
899
+}
900
+$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"])) {
901
+	$Jd++;
902
+}
903
+}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return
436 904
 false;}function
437 905
 selectQueryBuild($N,$Y,$p,$E,$y,$F){return"";}function
438 906
 messageQuery($I,$je){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$I)."\n".($je?"($je)\n":"")."-->";}function
439
-editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"]))$K["NULL"]='empty';$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"]))$K["now"]='now';if(preg_match('~_(md5|sha1)$~i',$l["field"],$A))$K[]=strtolower($A[1]);return$K;}function
440
-editInput($R,$l,$c,$W){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null));$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null)return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>");if(like_bool($l))return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>";$cc="";if(preg_match('~time~',$l["type"]))$cc='HH:MM:SS';if(preg_match('~date|timestamp~',$l["type"]))$cc='[yyyy]-mm-dd'.($cc?" [$cc]":"");if($cc)return"<input value='".h($W)."'$c> ($cc)";if(preg_match('~_(md5|sha1)$~i',$l["field"]))return"<input type='password' value='".h($W)."'$c>";return'';}function
441
-processInput($l,$W,$o=""){if($o=="now")return"$o()";$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A))$K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A);$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l))$K="0";elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"])))$K="NULL";elseif(preg_match('~^(md5|sha1)$~',$o))$K="$o($K)";return
907
+editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"])) {
908
+	$K["NULL"]='empty';
909
+}
910
+$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"])) {
911
+	$K["now"]='now';
912
+}
913
+if(preg_match('~_(md5|sha1)$~i',$l["field"],$A)) {
914
+	$K[]=strtolower($A[1]);
915
+}
916
+return$K;}function
917
+editInput($R,$l,$c,$W){if($l["type"]=="enum") {
918
+	return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null));
919
+}
920
+$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null) {
921
+	return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>");
922
+}
923
+if(like_bool($l)) {
924
+	return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>";
925
+}
926
+$cc="";if(preg_match('~time~',$l["type"])) {
927
+	$cc='HH:MM:SS';
928
+}
929
+if(preg_match('~date|timestamp~',$l["type"])) {
930
+	$cc='[yyyy]-mm-dd'.($cc?" [$cc]":"");
931
+}
932
+if($cc) {
933
+	return"<input value='".h($W)."'$c> ($cc)";
934
+}
935
+if(preg_match('~_(md5|sha1)$~i',$l["field"])) {
936
+	return"<input type='password' value='".h($W)."'$c>";
937
+}
938
+return'';}function
939
+processInput($l,$W,$o=""){if($o=="now") {
940
+	return"$o()";
941
+}
942
+$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A)) {
943
+	$K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A);
944
+}
945
+$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l)) {
946
+	$K="0";
947
+} elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"]))) {
948
+	$K="NULL";
949
+} elseif(preg_match('~^(md5|sha1)$~',$o)) {
950
+	$K="$o($K)";
951
+}
952
+return
442 953
 unconvert_field($l,$K);}function
443 954
 dumpOutput(){return
444 955
 array();}function
@@ -456,13 +967,24 @@  discard block
 block discarded – undo
456 967
 ',$this->name(),' <span class="version">',$ca,'</span>
457 968
 <a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a>
458 969
 </h1>
459
-';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}}else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function
970
+';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}} else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S) {
971
+	echo"<p class='message'>".'No tables.'."\n";
972
+} else {
973
+	$this->tablesPrint($S);
974
+}
975
+}}}function
460 976
 databasesPrint($Ic){}function
461 977
 tablesPrint($ee){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($ee
462
-as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="")echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n";}}function
978
+as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="") {
979
+	echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n";
980
+}
981
+}}function
463 982
 _foreignColumn($Mb,$d){foreach((array)$Mb[$d]as$Lb){if(count($Lb["source"])==1){$D=$this->rowDescription($Lb["table"]);if($D!=""){$r=idf_escape($Lb["target"][0]);return
464 983
 array($Lb["table"],$r,$D);}}}}function
465
-_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null)return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W));return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new
984
+_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null) {
985
+	return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W));
986
+}
987
+return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new
466 988
 Adminer);function
467 989
 page_header($le,$k="",$Ca=array(),$me=""){global$ba,$ca,$b,$jb,$v;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$ne=$le.($me!=""?": $me":"");$oe=strip_tags($ne.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html>
468 990
 <html lang="en" dir="ltr">
@@ -487,10 +1009,27 @@  discard block
 block discarded – undo
487 1009
 <div id="help" class="jush-',$v,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
488 1010
 
489 1011
 <div id="content">
490
-';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> &raquo; ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false)echo"$O\n";else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca)))echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';if(is_array($Ca)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';foreach($Ca
491
-as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="")echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> &raquo; ";}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true))$ab=null;stop_session();define("PAGE_HEADER",1);}function
1012
+';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> &raquo; ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false) {
1013
+	echo"$O\n";
1014
+} else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> &raquo; ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca))) {
1015
+	echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> &raquo; ';
1016
+}
1017
+if(is_array($Ca)){if($_GET["ns"]!="") {
1018
+	echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> &raquo; ';
1019
+}
1020
+foreach($Ca
1021
+as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="") {
1022
+	echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> &raquo; ";
1023
+}
1024
+}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true)) {
1025
+	$ab=null;
1026
+}
1027
+stop_session();define("PAGE_HEADER",1);}function
492 1028
 page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function
493
-page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k)echo"<div class='error'>$k</div>\n";}function
1029
+page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k) {
1030
+	echo"<div class='error'>$k</div>\n";
1031
+}
1032
+}function
494 1033
 page_footer($Ic=""){global$b,$qe;echo'</div>
495 1034
 
496 1035
 ';if($Ic!="auth"){echo'<form action="" method="post">
@@ -503,48 +1042,277 @@  discard block
 block discarded – undo
503 1042
 ';$b->navigation($Ic);echo'</div>
504 1043
 <script type="text/javascript">setupSubmitHighlight(document);</script>
505 1044
 ';}function
506
-int32($C){while($C>=2147483648)$C-=4294967296;while($C<=-2147483649)$C+=4294967296;return(int)$C;}function
1045
+int32($C){while($C>=2147483648) {
1046
+	$C-=4294967296;
1047
+}
1048
+while($C<=-2147483649) {
1049
+	$C+=4294967296;
1050
+}
1051
+return(int)$C;}function
507 1052
 long2str($U,$Ke){$Ed='';foreach($U
508
-as$V)$Ed.=pack('V',$V);if($Ke)return
509
-substr($Ed,0,end($U));return$Ed;}function
510
-str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke)$U[]=strlen($Ed);return$U;}function
1053
+as$V) {
1054
+	$Ed.=pack('V',$V);
1055
+}
1056
+if($Ke) {
1057
+	return
1058
+substr($Ed,0,end($U));
1059
+}
1060
+return$Ed;}function
1061
+str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke) {
1062
+	$U[]=strlen($Ed);
1063
+}
1064
+return$U;}function
511 1065
 xxtea_mx($Z,$Oe,$ae,$w){return
512 1066
 int32((($Z>>5&0x7FFFFFF)^$Oe<<2)+(($Oe>>3&0x1FFFFFFF)^$Z<<4))^int32(($ae^$Oe)+($w^$Z));}function
513
-encrypt_string($Vd,$x){if($Vd=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return
1067
+encrypt_string($Vd,$x){if($Vd=="") {
1068
+	return"";
1069
+}
1070
+$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return
514 1071
 long2str($U,false);}function
515
-decrypt_string($Vd,$x){if($Vd=="")return"";if(!$x)return
516
-false;$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return
517
-long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb)$_SESSION["token"]=rand(1,1e6);$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function
518
-add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb)return;}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc
519
-as$pc=>$V){if($V[0]<$je)unset($oc[$pc]);}}$nc=&$oc[$b->bruteForceKey()];if(!$nc)$nc=array($je+30*60,0);$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60)));session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h)redirect(auth_url($X,$O,$T,$h));}elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd
1072
+decrypt_string($Vd,$x){if($Vd=="") {
1073
+	return"";
1074
+}
1075
+if(!$x) {
1076
+	return
1077
+false;
1078
+}
1079
+$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return
1080
+long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb) {
1081
+	$_SESSION["token"]=rand(1,1e6);
1082
+}
1083
+$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function
1084
+add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb) {
1085
+	return;
1086
+}
1087
+}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc
1088
+as$pc=>$V){if($V[0]<$je) {
1089
+	unset($oc[$pc]);
1090
+}
1091
+}}$nc=&$oc[$b->bruteForceKey()];if(!$nc) {
1092
+	$nc=array($je+30*60,0);
1093
+}
1094
+$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0) {
1095
+	auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60)));
1096
+}
1097
+session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h) {
1098
+	redirect(auth_url($X,$O,$T,$h));
1099
+}
1100
+} elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;} else{foreach(array("pwds","db","dbs","queries")as$x) {
1101
+	set_session($x,null);
1102
+}
1103
+unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}} elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd
520 1104
 as$x=>$V){list(,$Ha)=explode(":",$V);list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));set_password($X,$O,$T,decrypt_string(base64_decode($Ha),$od));$_SESSION["db"][$X][$O][$T][$h]=true;}}function
521 1105
 unset_permanent(){global$gd;foreach($gd
522
-as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB)unset($gd[$x]);}cookie("adminer_permanent",implode(" ",$gd));}function
523
-auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb)$k='Session expired, please login again.';else{add_invalid_login();$G=get_password();if($G!==null){if($G===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new
524
-Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.')));if($ra&&$_POST["token"])$_POST["token"]=$qe;$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function
1106
+as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB) {
1107
+	unset($gd[$x]);
1108
+}
1109
+}cookie("adminer_permanent",implode(" ",$gd));}function
1110
+auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb) {
1111
+	$k='Session expired, please login again.';
1112
+} else{add_invalid_login();$G=get_password();if($G!==null){if($G===false) {
1113
+	$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');
1114
+}
1115
+set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies")) {
1116
+	$k='Session support must be enabled.';
1117
+}
1118
+$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new
1119
+Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true) {
1120
+	auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.')));
1121
+}
1122
+if($ra&&$_POST["token"]) {
1123
+	$_POST["token"]=$qe;
1124
+}
1125
+$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}} elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"])) {
1126
+	$k.=' '.'You can upload a big SQL file via FTP and import it from server.';
1127
+}
1128
+}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false) {
1129
+	session_write_close();
1130
+}
1131
+function
525 1132
 email_header($ac){return"=?UTF-8?B?".base64_encode($ac)."?=";}function
526
-send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V)$qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j;}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return
1133
+send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V) {
1134
+	$qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j;
1135
+}
1136
+}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return
527 1137
 mail($pb,email_header($Yd),$ya.$B.$qa,$bc);}function
528 1138
 like_bool($l){return
529
-preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m
530
-as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="")unset($m[$D]);}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"])$_=($De?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$_))$_=ME."select=".urlencode($a);$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"]))queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze));else{$P=array();foreach($m
531
-as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null)$P[idf_escape($D)]=$V;}if($De){if(!$P)redirect($_);queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Y){$N=array();foreach($m
532
-as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$oa="''";if($v=="sql"&&preg_match("~enum|set~",$l["type"]))$oa="1*".idf_escape($D);$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($i->primary=>"");}if($L){foreach($L
533
-as$x=>$V){if(!$Y)$L[$x]=null;$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m
534
-as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l))$he=$b->selectLengthProcess();}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K)echo
535
-reset($K->fetch_row());}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea)$Ga[]=where_check($Ea,$m);$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t
1139
+preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"]) {
1140
+	$_GET["edit"]=$_GET["select"];
1141
+}
1142
+if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;} elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m
1143
+as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="") {
1144
+	unset($m[$D]);
1145
+}
1146
+}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"]) {
1147
+	$_=($De?null:$_SERVER["REQUEST_URI"]);
1148
+} elseif(!preg_match('~^.+&select=.+$~',$_)) {
1149
+	$_=ME."select=".urlencode($a);
1150
+}
1151
+$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"])) {
1152
+	queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze));
1153
+} else{$P=array();foreach($m
1154
+as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null) {
1155
+	$P[idf_escape($D)]=$V;
1156
+}
1157
+}if($De){if(!$P) {
1158
+	redirect($_);
1159
+}
1160
+queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}} else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"]) {
1161
+	$L=(array)$_POST["fields"];
1162
+} elseif($Y){$N=array();foreach($m
1163
+as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"]) {
1164
+	$oa="''";
1165
+}
1166
+if($v=="sql"&&preg_match("~enum|set~",$l["type"])) {
1167
+	$oa="1*".idf_escape($D);
1168
+}
1169
+$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table")) {
1170
+	$N=array("*");
1171
+}
1172
+if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L) {
1173
+	$L=false;
1174
+}
1175
+if(isset($_GET["select"])&&(!$L||$J->fetch_assoc())) {
1176
+	$L=null;
1177
+}
1178
+}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L) {
1179
+	$L=array($i->primary=>"");
1180
+}
1181
+}if($L){foreach($L
1182
+as$x=>$V){if(!$Y) {
1183
+	$L[$x]=null;
1184
+}
1185
+$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);} elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m
1186
+as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l)) {
1187
+	$he=$b->selectLengthProcess();
1188
+}
1189
+}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K) {
1190
+	echo
1191
+reset($K->fetch_row());
1192
+}
1193
+}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea) {
1194
+	$Ga[]=where_check($Ea,$m);
1195
+}
1196
+$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t
536 1197
 as$s){if($s["type"]=="PRIMARY"){$md=array_flip($s["columns"]);$Be=($N?$md:array());break;}}foreach((array)$Be
537
-as$x=>$V){if(in_array(idf_escape($x),$N))unset($Be[$x]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array())$I="SELECT $Sb$Me$Ub";else{$ye=array();foreach($_POST["check"]as$V)$ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")";$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e
538
-as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false))$P[idf_escape($D)]=($V!==false?$V:idf_escape($D));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;}else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J)break;$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc)$B=sprintf('Item%s has been inserted.'," $vc");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L
539
-as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J)break;$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}}elseif(!is_string($Eb=get_file("csv_file",true)))$k=upload_error($Eb);elseif(!preg_match('~~u',$Eb))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;}else{$P=array();foreach($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La))));$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J)$i->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else
540
-page_header('Select'.": $de",$k);$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"]))))$P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]);}}$b->selectLinks($S,$P);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc)$Hd[]=$Qc;}$Ua=convert_fields($e,$m,$N);if($Ua)$Hd[]=substr($Ua,2);$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($v=="mssql"&&$F)$J->seek($y*$F);$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql")$n=$f->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo
541
-apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M
1198
+as$x=>$V){if(in_array(idf_escape($x),$N)) {
1199
+	unset($Be[$x]);
1200
+}
1201
+}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array()) {
1202
+	$I="SELECT $Sb$Me$Ub";
1203
+} else{$ye=array();foreach($_POST["check"]as$V) {
1204
+	$ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")";
1205
+}
1206
+$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e
1207
+as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false)) {
1208
+	$P[idf_escape($D)]=($V!==false?$V:idf_escape($D));
1209
+}
1210
+}}if($_POST["delete"]||$P){if($_POST["clone"]) {
1211
+	$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);
1212
+}
1213
+if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;} else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J) {
1214
+	break;
1215
+}
1216
+$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc) {
1217
+	$B=sprintf('Item%s has been inserted.'," $vc");
1218
+}
1219
+}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}} elseif(!$_POST["import"]){if(!$_POST["val"]) {
1220
+	$k='Ctrl+click on a value to modify it.';
1221
+} else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L
1222
+as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J) {
1223
+	break;
1224
+}
1225
+$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}} elseif(!is_string($Eb=get_file("csv_file",true))) {
1226
+	$k=upload_error($Eb);
1227
+} elseif(!preg_match('~~u',$Eb)) {
1228
+	$k='File must be in UTF-8 encoding.';
1229
+} else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;} else{$P=array();foreach($Cc[1]as$q=>$La) {
1230
+	$P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La))));
1231
+}
1232
+$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J) {
1233
+	$i->commit();
1234
+}
1235
+queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();} else {
1236
+	page_header('Select'.": $de",$k);
1237
+}
1238
+$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"])))) {
1239
+	$P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]);
1240
+}
1241
+}}$b->selectLinks($S,$P);if(!$e&&support("table")) {
1242
+	echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";
1243
+} else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc) {
1244
+	$Hd[]=$Qc;
1245
+}
1246
+}$Ua=convert_fields($e,$m,$N);if($Ua) {
1247
+	$Hd[]=substr($Ua,2);
1248
+}
1249
+$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J) {
1250
+	echo"<p class='error'>".error()."\n";
1251
+} else{if($v=="mssql"&&$F) {
1252
+	$J->seek($y*$F);
1253
+}
1254
+$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle") {
1255
+	unset($L["RNUM"]);
1256
+}
1257
+$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql") {
1258
+	$n=$f->result(" SELECT FOUND_ROWS()");
1259
+}
1260
+if(!$M) {
1261
+	echo"<p class='message'>".'No rows.'."\n";
1262
+} else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo
1263
+apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"]) {
1264
+	echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';
1265
+}
1266
+echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M
542 1267
 as$L){foreach($L
543
-as$x=>$V)$yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V))));}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x))$ze[$x]=$V;}}$_e="";foreach($ze
1268
+as$x=>$V) {
1269
+	$yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V))));
1270
+}
1271
+}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1) {
1272
+	odd();
1273
+}
1274
+ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x)) {
1275
+	$ze[$x]=$V;
1276
+}
1277
+}}$_e="";foreach($ze
544 1278
 as$x=>$V){if(($v=="sql"||$v=="pgsql")&&strlen($V)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($v=='sql'&&preg_match("~^utf8_~",$m[$x]["collation"])?$x:"CONVERT($x USING ".charset($f).")").")";$V=md5($V);}$_e.="&".($V!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($V):"null%5B%5D=".urlencode($x));}echo"<tr".odd().">".(!$p&&$N?"":"<td>".checkbox("check[]",substr($_e,1),in_array(substr($_e,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($u||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$_e)."'>".'edit'."</a>"));foreach($L
545
-as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!=""))$rb[$x]=(is_mail($V)?$Lc[$x]:"");$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="")$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e;if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd)$z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]);$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1)break;}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze))$z.=where_link($q++,$U["col"],$U["val"],$U["op"]);}foreach($ze
546
-as$w=>$U)$z.=where_link($q++,$w,$U);}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");}else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa)echo"<td>";$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y)$n=count($M);elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y))$n=reset(slow_query(count_rows($a,$Y,$u,$p)));else$yb=false;}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++)echo
547
-pagination($q,$F);if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo
1279
+as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!="")) {
1280
+	$rb[$x]=(is_mail($V)?$Lc[$x]:"");
1281
+}
1282
+$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="") {
1283
+	$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e;
1284
+}
1285
+if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd) {
1286
+	$z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]);
1287
+}
1288
+$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1) {
1289
+	break;
1290
+}
1291
+}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze)) {
1292
+	$z.=where_link($q++,$U["col"],$U["val"],$U["op"]);
1293
+}
1294
+}foreach($ze
1295
+as$w=>$U) {
1296
+	$z.=where_link($q++,$w,$U);
1297
+}
1298
+}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");} else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa) {
1299
+	echo"<td>";
1300
+}
1301
+$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax()) {
1302
+	exit;
1303
+}
1304
+echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y) {
1305
+	$n=count($M);
1306
+} elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y)) {
1307
+	$n=reset(slow_query(count_rows($a,$Y,$u,$p)));
1308
+} else {
1309
+	$yb=false;
1310
+}
1311
+}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++) {
1312
+	echo
1313
+pagination($q,$F);
1314
+}
1315
+if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');} else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo
548 1316
 checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
549 1317
 <input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
550 1318
 </div></fieldset>
@@ -553,4 +1321,15 @@  discard block
 block discarded – undo
553 1321
 <input type="submit" name="clone" value="Clone">
554 1322
 <input type="submit" name="delete" value="Delete"',confirm(),'>
555 1323
 </div></fieldset>
556
-';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++)echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n";if($L)echo"...\n";}exit;}else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer();
557 1324
\ No newline at end of file
1325
+';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}} elseif(isset($_GET["script"])){if($_GET["script"]=="kill") {
1326
+	$f->query("KILL ".number($_POST["kill"]));
1327
+} elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++) {
1328
+	echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n";
1329
+}
1330
+if($L) {
1331
+	echo"...\n";
1332
+}
1333
+}exit;} else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="") {
1334
+	search_tables();
1335
+}
1336
+echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer();
558 1337
\ No newline at end of file
Please login to merge, or discard this patch.
editor.php 1 patch
Indentation   +25 added lines, -25 removed lines patch added patch discarded remove patch
@@ -24,34 +24,34 @@
 block discarded – undo
24 24
 include(XOOPS_ROOT_PATH . '/header.php');
25 25
 
26 26
 if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) {
27
-    exit(_NOPERM);
27
+	exit(_NOPERM);
28 28
 }
29 29
 function adminer_object()
30 30
 {
31
-    class AdminerKfr extends Adminer
32
-    {
33
-        public function name()
34
-        {
35
-            return 'XOOPS Admin';
36
-        }
37
-
38
-        public function credentials()
39
-        {
40
-            return array(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
41
-        }
42
-
43
-        public function database()
44
-        {
45
-            return XOOPS_DB_NAME;
46
-        }
47
-
48
-        public function login($login, $password)
49
-        {
50
-            return ($login == XOOPS_DB_USER);
51
-        }
52
-    }
53
-
54
-    return new AdminerKfr;
31
+	class AdminerKfr extends Adminer
32
+	{
33
+		public function name()
34
+		{
35
+			return 'XOOPS Admin';
36
+		}
37
+
38
+		public function credentials()
39
+		{
40
+			return array(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
41
+		}
42
+
43
+		public function database()
44
+		{
45
+			return XOOPS_DB_NAME;
46
+		}
47
+
48
+		public function login($login, $password)
49
+		{
50
+			return ($login == XOOPS_DB_USER);
51
+		}
52
+	}
53
+
54
+	return new AdminerKfr;
55 55
 }
56 56
 
57 57
 include __DIR__ . '/include/editor.php';
Please login to merge, or discard this patch.
language/french/modinfo.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@
 block discarded – undo
13 13
 
14 14
 //Help
15 15
 define('_MI_ADMINER_DIRNAME', basename(dirname(dirname(__DIR__))));
16
-define('_MI_ADMINER_HELP_HEADER', __DIR__.'/help/helpheader.html');
16
+define('_MI_ADMINER_HELP_HEADER', __DIR__ . '/help/helpheader.html');
17 17
 define('_MI_ADMINER_BACK_2_ADMIN', 'Back to Administration of ');
18 18
 define('_MI_ADMINER_HELP_OVERVIEW', 'Overview');
19 19
 
Please login to merge, or discard this patch.