<?php
/** Adminer - Compact database management
* @link https://www.adminer.org/
* @author Jakub Vrana, https://www.vrana.cz/
* @copyright 2007 Jakub Vrana
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
* @version 5.4.2
*/namespace
Adminer;const
VERSION="5.4.2";error_reporting(24575);set_error_handler(function($lc,$nc){return!!preg_match('~^Undefined (array key|offset|index)~',$nc);},E_WARNING|E_NOTICE);$Hc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$pi=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($pi)$$X=$pi;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
connection($g=null){return($g?:Db::$instance);}function
adminer(){return
Adminer::$instance;}function
driver(){return
Driver::$instance;}function
connect(){$sb=adminer()->credentials();$L=Driver::connect($sb[0],$sb[1],$sb[2]);return(is_object($L)?$L:null);}function
idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$fe=substr($v,-1);return
str_replace($fe.$fe,$fe,substr($v,1,-1));}function
q($th){return
connection()->quote($th);}function
escape_string($X){return
substr(q($X),1,-1);}function
idx($qa,$z,$k=null){return($qa&&array_key_exists($z,$qa)?$qa[$z]:$k);}function
number($X){return
preg_replace('~[^0-9]+~','',$X);}function
number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
remove_slashes(array$Di,$Hc=false){$L=array();foreach($Di
as$z=>$X)$L[stripslashes($z)]=(is_array($X)?remove_slashes($X,$Hc):($Hc?$X:stripslashes($X)));return$L;}function
bracket_escape($v,$xa=false){static$ci=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
strtr($v,($xa?array_flip($ci):$ci));}function
min_version($Gi,$te="",$g=null){$g=connection($g);$Yg=$g->server_info;if($te&&preg_match('~([\d.]+)-MariaDB~',$Yg,$C)){$Yg=$C[1];$Gi=$te;}return$Gi&&version_compare($Yg,$Gi)>=0;}function
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
ini_bool($Hd){$X=ini_get($Hd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
ini_bytes($Hd){$X=ini_get($Hd);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function
sid(){static$L;if($L===null)$L=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$L;}function
set_password($Fi,$P,$V,$H){$_SESSION["pwds"][$Fi][$P][$V]=($_COOKIE["adminer_key"]&&is_string($H)?array(encrypt_string($H,$_COOKIE["adminer_key"])):$H);}function
get_password(){$L=get_session("pwds");if(is_array($L))$L=($_COOKIE["adminer_key"]?decrypt_string($L[0],$_COOKIE["adminer_key"]):false);return$L;}function
get_val($J,$m=0,$ib=null){$ib=connection($ib);$K=$ib->query($J);if(!is_object($K))return
false;$M=$K->fetch_row();return($M?$M[$m]:false);}function
get_vals($J,$d=0){$L=array();$K=connection()->query($J);if(is_object($K)){while($M=$K->fetch_row())$L[]=$M[$d];}return$L;}function
get_key_vals($J,$g=null,$bh=true){$g=connection($g);$L=array();$K=$g->query($J);if(is_object($K)){while($M=$K->fetch_row()){if($bh)$L[$M[0]]=$M[1];else$L[]=$M[0];}}return$L;}function
get_rows($J,$g=null,$l="<p class='error'>"){$ib=connection($g);$L=array();$K=$ib->query($J);if(is_object($K)){while($M=$K->fetch_assoc())$L[]=$M;}elseif(!$K&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$L;}function
unique_array($M,array$x){foreach($x
as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])&&!$w["partial"]){$L=array();foreach($w["columns"]as$z){if(!isset($M[$z]))continue
2;$L[$z]=$M[$z];}return$L;}}}function
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
idf_escape($z);}function
where(array$Z,array$n=array()){$L=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,true);$d=escape_key($z);$m=idx($n,$z,array());$Ec=$m["type"];$L[]=$d.(JUSH=="sql"&&$Ec=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^json~',$Ec)?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Ec,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X))))));if(JUSH=="sql"&&preg_match('~char|text~',$Ec)&&preg_match("~[^ -@]~",$X))$L[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$z)$L[]=escape_key($z)." IS NULL";return
implode(" AND ",$L);}function
where_check($X,array$n=array()){parse_str($X,$Oa);remove_slashes(array(&$Oa));return
where($Oa,$n);}function
where_link($t,$d,$Y,$pf="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($d)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$pf:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function
convert_fields(array$e,array$n,array$O=array()){$L="";foreach($e
as$z=>$X){if($O&&!in_array(idf_escape($z),$O))continue;$ra=convert_field($n[$z]);if($ra)$L
.=", $ra AS ".idf_escape($z);}return$L;}function
cookie($E,$Y,$ne=2592000){header("Set-Cookie: $E=".rawurlencode($Y).($ne?"; expires=".gmdate("D, d M Y H:i:s",time()+$ne)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
get_settings($ob){parse_str($_COOKIE[$ob],$ch);return$ch;}function
get_setting($z,$ob="adminer_settings",$k=null){return
idx(get_settings($ob),$z,$k);}function
save_settings(array$ch,$ob="adminer_settings"){$Y=http_build_query($ch+get_settings($ob));cookie($ob,$Y);$_COOKIE[$ob]=$Y;}function
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
stop_session($Mc=false){$zi=ini_bool("session.use_cookies");if(!$zi||$Mc){session_write_close();if($zi&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function
set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function
auth_url($Fi,$P,$V,$j=null){$vi=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($Fi=='mssql'||$Fi=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$vi,$C);return"$C[1]?".(sid()?SID."&":"").($Fi!="server"||$P!=""?urlencode($Fi)."=".urlencode($P)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($C[2]?"&$C[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
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
query_redirect($J,$B,$D,$ug=true,$sc=true,$Ac=false,$Ph=""){if($sc){$ph=microtime(true);$Ac=!connection()->query($J);$Ph=format_time($ph);}$kh=($J?adminer()->messageQuery($J,$Ph,$Ac):"");if($Ac){adminer()->error
.=error().$kh.script("messagesPrint();")."<br>";return
false;}if($ug)redirect($B,$D.$kh);return
true;}class
Queries{static$queries=array();static$start=0;}function
queries($J){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(driver()->delimiter!=';'?$J:(preg_match('~;$~',$J)?"DELIMITER ;;\n$J;\nDELIMITER ":$J).";");return
connection()->query($J);}function
apply_queries($J,array$T,$oc='Adminer\table'){foreach($T
as$R){if(!queries("$J ".$oc($R)))return
false;}return
true;}function
queries_redirect($B,$D,$ug){$pg=implode("\n",Queries::$queries);$Ph=format_time(Queries::$start);return
query_redirect($pg,$B,$D,$ug,false,!$ug,$Ph);}function
format_time($ph){return
sprintf('%.3f s',max(0,microtime(true)-$ph));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($If=""){return
substr(preg_replace("~(?<=[?&])($If".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
get_file($z,$Db=false,$Jb=""){$Gc=$_FILES[$z];if(!$Gc)return
null;foreach($Gc
as$z=>$X)$Gc[$z]=(array)$X;$L='';foreach($Gc["error"]as$z=>$l){if($l)return$l;$E=$Gc["name"][$z];$Xh=$Gc["tmp_name"][$z];$kb=file_get_contents($Db&&preg_match('~\.gz$~',$E)?"compress.zlib://$Xh":$Xh);if($Db){$ph=substr($kb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$ph))$kb=iconv("utf-16","utf-8",$kb);elseif($ph=="\xEF\xBB\xBF")$kb=substr($kb,3);}$L
.=$kb;if($Jb)$L
.=(preg_match("($Jb\\s*\$)",$kb)?"":$Jb)."\n\n";}return$L;}function
upload_error($l){$Be=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?'Hochladen von Datei fehlgeschlagen.'.($Be?" ".sprintf('Maximal erlaubte Dateigröße ist %sB.',$Be):""):'Datei existiert nicht.');}function
repeat_pattern($Uf,$le){return
str_repeat("$Uf{0,65535}",$le/65535)."$Uf{0,".($le%65535)."}";}function
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
format_number($X){return
strtr(number_format($X,0,".",' '),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
friendly_url($X){return
preg_replace('~\W~i','-',$X);}function
table_status1($R,$Bc=false){$L=table_status($R,$Bc);return($L?reset($L):array("Name"=>$R));}function
column_foreign_keys($R){$L=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$L[$X][]=$p;}return$L;}function
fields_from_edit(){$L=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){$E=bracket_escape($z,true);$L[$E]=array("field"=>$E,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($z==driver()->primary),);}return$L;}function
dump_headers($td,$Qe=false){$L=adminer()->dumpHeaders($td,$Qe);$Ff=$_POST["output"];if($Ff!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($td).".$L".($Ff!="file"&&preg_match('~^[0-9a-z]+$~',$Ff)?".$Ff":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$L;}function
dump_csv(array$M){$ii=$_POST["format"]=="tsv";foreach($M
as$z=>$X){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($ii?'\t':'[,;]|^$').'~',$X))$M[$z]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($ii?"\t":";")),$M)."\r\n";}function
apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function
get_temp_dir(){$L=ini_get("upload_tmp_dir");if(!$L){if(function_exists('sys_get_temp_dir'))$L=sys_get_temp_dir();else{$o=@tempnam("","");if(!$o)return'';$L=dirname($o);unlink($o);}}return$L;}function
file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;@chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function
file_write_unlock($q,$yb){rewind($q);fwrite($q,$yb);ftruncate($q,strlen($yb));file_unlock($q);}function
file_unlock($q){flock($q,LOCK_UN);fclose($q);}function
first(array$qa){return
reset($qa);}function
password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$L=stream_get_contents($q);if(!$L){$L=rand_string();file_write_unlock($q,$L);}else
file_unlock($q);return$L;}function
rand_string(){return
md5(uniqid(strval(mt_rand()),true));}function
select_value($X,$A,array$m,$Oh){if(is_array($X)){$L="";if(array_filter($X,'is_array')==array_values($X)){$Zd=array();foreach($X
as$W)$Zd+=array_fill_keys(array_keys($W),null);foreach(array_keys($Zd)as$Yd)$L
.="<th>".h($Yd);foreach($X
as$W){$L
.="<tr>";foreach(array_merge($Zd,$W)as$Bi)$L
.="<td>".select_value($Bi,$A,$m,$Oh);}}else{foreach($X
as$Yd=>$W)$L
.="<tr>".($X!=array_values($X)?"<th>".h($Yd):"")."<td>".select_value($W,$A,$m,$Oh);}return"<table>$L</table>";}if(!$A)$A=adminer()->selectLink($X,$m);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$L=adminer()->editVal(driver()->value($X,$m),$m);if($L!==null){if(!is_utf8($L))$L="\0";elseif($Oh!=""&&is_shortable($m))$L=shorten_utf8($L,max(0,+$Oh));else$L=h($L);}return
adminer()->selectVal($L,$A,$m,$X);}function
is_blob(array$m){return
preg_match('~blob|bytea|raw|file~',$m["type"])&&!in_array($m["type"],idx(driver()->structuredTypes(),'Benutzerdefinierte Typen',array()));}function
is_mail($cc){$sa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Rb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Uf="$sa+(\\.$sa+)*@($Rb?\\.)+$Rb";return
is_string($cc)&&preg_match("(^$Uf(,\\s*$Uf)*\$)i",$cc);}function
is_url($th){$Rb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
preg_match("~^((https?):)?//($Rb?\\.)+$Rb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$th);}function
is_shortable(array$m){return!preg_match('~'.number_type().'|date|time|year~',$m["type"]);}function
host_port($P){return(preg_match('~^(\[(.+)]|([^:]+)):([^:]+)$~',$P,$C)?array($C[2].$C[3],$C[4]):array($P,''));}function
count_rows($R,array$Z,$Rd,array$s){$J=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($Rd&&(JUSH=="sql"||count($s)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$s).")$J":"SELECT COUNT(*)".($Rd?" FROM (SELECT 1$J GROUP BY ".implode(", ",$s).") x":$J));}function
slow_query($J){$j=adminer()->database();$Qh=adminer()->queryTimeout();$gh=driver()->slowQuery($J,$Qh);$g=null;if(!$gh&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$ae=get_val(connection_id(),0,$g);echo
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$ae&token=".get_token()."'); }, 1000 * $Qh);");}}ob_flush();flush();$L=@get_key_vals(($gh?:$J),$g,false);if($g){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$L;}function
get_token(){$sg=rand(1,1e6);return($sg^$_SESSION["token"]).":$sg";}function
verify_token(){list($Yh,$sg)=explode(":",$_POST["token"]);return($sg^$_SESSION["token"])==$Yh;}function
lzw_decompress($Ca){$Ob=256;$Da=8;$Wa=array();$Dg=0;$Eg=0;for($t=0;$t<strlen($Ca);$t++){$Dg=($Dg<<8)+ord($Ca[$t]);$Eg+=8;if($Eg>=$Da){$Eg-=$Da;$Wa[]=$Dg>>$Eg;$Dg&=(1<<$Eg)-1;$Ob++;if($Ob>>$Da)$Da++;}}$Nb=range("\0","\xFF");$L="";$Pi="";foreach($Wa
as$t=>$Va){$bc=$Nb[$Va];if(!isset($bc))$bc=$Pi.$Pi[0];$L
.=$bc;if($t)$Nb[]=$Pi.$bc[0];$Pi=$bc;}return$L;}function
script($ih,$bi="\n"){return"<script".nonce().">$ih</script>$bi";}function
script_src($wi,$Gb=false){return"<script src='".h($wi)."'".nonce().($Gb?" defer":"")."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
input_hidden($E,$Y=""){return"<input type='hidden' name='".h($E)."' value='".h($Y)."'>\n";}function
input_token(){return
input_hidden("token",get_token());}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($th){return
str_replace("\0","&#0;",htmlspecialchars($th,ENT_QUOTES,'utf-8'));}function
nl_br($th){return
str_replace("\n","<br>",$th);}function
checkbox($E,$Y,$Qa,$ce="",$of="",$Ua="",$ee=""){$L="<input type='checkbox' name='$E' value='".h($Y)."'".($Qa?" checked":"").($ee?" aria-labelledby='$ee'":"").">".($of?script("qsl('input').onclick = function () { $of };",""):"");return($ce!=""||$Ua?"<label".($Ua?" class='$Ua'":"").">$L".h($ce)."</label>":$L);}function
optionlist($sf,$Tg=null,$_i=false){$L="";foreach($sf
as$Yd=>$W){$tf=array($Yd=>$W);if(is_array($W)){$L
.='<optgroup label="'.h($Yd).'">';$tf=$W;}foreach($tf
as$z=>$X)$L
.='<option'.($_i||is_string($z)?' value="'.h($z).'"':'').($Tg!==null&&($_i||is_string($z)?(string)$z:$X)===$Tg?' selected':'').'>'.h($X);if(is_array($W))$L
.='</optgroup>';}return$L;}function
html_select($E,array$sf,$Y="",$nf="",$ee=""){static$ce=0;$de="";if(!$ee&&substr($sf[""],0,1)=="("){$ce++;$ee="label-$ce";$de="<option value='' id='$ee'>".h($sf[""]);unset($sf[""]);}return"<select name='".h($E)."'".($ee?" aria-labelledby='$ee'":"").">".$de.optionlist($sf,$Y)."</select>".($nf?script("qsl('select').onchange = function () { $nf };",""):"");}function
html_radios($E,array$sf,$Y="",$Xg=""){$L="";foreach($sf
as$z=>$X)$L
.="<label><input type='radio' name='".h($E)."' value='".h($z)."'".($z==$Y?" checked":"").">".h($X)."</label>$Xg";return$L;}function
confirm($D="",$Ug="qsl('input')"){return
script("$Ug.onclick = () => confirm('".($D?js_escape($D):'Sind Sie sicher?')."');","");}function
print_fieldset($u,$ke,$Ji=false){echo"<fieldset><legend>","<a href='#fieldset-$u'>$ke</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"</legend>","<div id='fieldset-$u'".($Ji?"":" class='hidden'").">\n";}function
bold($Fa,$Ua=""){return($Fa?" class='active $Ua'":($Ua?" class='$Ua'":""));}function
js_escape($th){return
addcslashes($th,"\r\n'\\/");}function
pagination($F,$vb){return" ".($F==$vb?$F+1:'<a href="'.h(remove_from_uri("page").($F?"&page=$F".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($F+1)."</a>");}function
hidden_fields(array$ng,array$wd=array(),$gg=''){$L=false;foreach($ng
as$z=>$X){if(!in_array($z,$wd)){if(is_array($X))hidden_fields($X,array(),$z);else{$L=true;echo
input_hidden(($gg?$gg."[$z]":$z),$X);}}}return$L;}function
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),(SERVER!==null?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
file_input($Jd){$xe="max_file_uploads";$ye=ini_get($xe);$ti="upload_max_filesize";$ui=ini_get($ti);return(ini_bool("file_uploads")?$Jd.script("qsl('input[type=\"file\"]').onchange = partialArg(fileChange, "."$ye, '".sprintf('Increase %s.',"$xe = $ye")."', ".ini_bytes("upload_max_filesize").", '".sprintf('Increase %s.',"$ti = $ui")."')"):'Importieren von Dateien abgeschaltet.');}function
enum_input($U,$b,array$m,$Y,$fc=""){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$ve);$gg=($m["type"]=="enum"?"val-":"");$Qa=(is_array($Y)?in_array("null",$Y):$Y===null);$L=($m["null"]&&$gg?"<label><input type='$U'$b value='null'".($Qa?" checked":"")."><i>$fc</i></label>":"");foreach($ve[1]as$X){$X=stripcslashes(str_replace("''","'",$X));$Qa=(is_array($Y)?in_array($gg.$X,$Y):$Y===$X);$L
.=" <label><input type='$U'$b value='".h($gg.$X)."'".($Qa?' checked':'').'>'.h(adminer()->editVal($X,$m)).'</label>';}return$L;}function
input(array$m,$Y,$r,$wa=false){$E=h(bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r)$r="json";$Wd=($r=="json"||preg_match('~^jsonb?$~',$m["type"]));if($Wd&&$Y!=''&&(JUSH!="pgsql"||$m["type"]!="json"))$Y=json_encode(is_array($Y)?$Y:json_decode($Y),128|64|256);$Cg=(JUSH=="mssql"&&$m["auto_increment"]);if($Cg&&!$_POST["save"])$r=null;$Vc=(isset($_GET["select"])||$Cg?array("orig"=>'Original'):array())+adminer()->editFunctions($m);$kc=driver()->enumLength($m);if($kc){$m["type"]="enum";$m["length"]=$kc;}$b=" name='fields[$E]".($m["type"]=="enum"||$m["type"]=="set"?"[]":"")."'".($wa?" autofocus":"");echo
driver()->unconvertFunction($m)." ";$R=$_GET["edit"]?:$_GET["select"];if($m["type"]=="enum")echo
h($Vc[""])."<td>".adminer()->editInput($R,$m,$b,$Y);else{$hd=(in_array($r,$Vc)||isset($Vc[$r]));echo(count($Vc)>1?"<select name='function[$E]'>".optionlist($Vc,$r===null||$hd?$r:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($Vc))).'<td>';$Jd=adminer()->editInput($R,$m,$b,$Y);if($Jd!="")echo$Jd;elseif(preg_match('~bool~',$m["type"]))echo"<input type='hidden'$b value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$b value='1'>";elseif($m["type"]=="set")echo
enum_input("checkbox",$b,$m,(is_string($Y)?explode(",",$Y):$Y));elseif(is_blob($m)&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$E'>";elseif($Wd)echo"<textarea$b cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($Nh=preg_match('~text|lob|memo~i',$m["type"]))||preg_match("~\n~",$Y)){if($Nh&&JUSH!="sqlite")$b
.=" cols='50' rows='12'";else{$N=min(12,substr_count($Y,"\n")+1);$b
.=" cols='30' rows='$N'";}echo"<textarea$b>".h($Y).'</textarea>';}else{$ki=driver()->types();$De=(!preg_match('~int~',$m["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$m["length"],$C)?((preg_match("~binary~",$m["type"])?2:1)*$C[1]+($C[3]?1:0)+($C[2]&&!$m["unsigned"]?1:0)):($ki[$m["type"]]?$ki[$m["type"]]+($m["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$m["type"]))$De+=7;echo"<input".((!$hd||$r==="")&&preg_match('~(?<!o)int(?!er)~',$m["type"])&&!preg_match('~\[\]~',$m["full_type"])?" type='number'":"")." value='".h($Y)."'".($De?" data-maxlength='$De'":"").(preg_match('~char|binary~',$m["type"])&&$De>20?" size='".($De>99?60:40)."'":"")."$b>";}echo
adminer()->editHint($R,$m,$Y);$Ic=0;foreach($Vc
as$z=>$X){if($z===""||!$X)break;$Ic++;}if($Ic&&count($Vc)>1)echo
script("qsl('td').oninput = partial(skipOriginal, $Ic);");}}function
process_input(array$m){$v=bracket_escape($m["field"]);$r=idx($_POST["function"],$v);$Y=idx($_POST["fields"],$v);if($Y===null)return
false;if($m["type"]=="enum"||driver()->enumLength($m)){$Y=idx($Y,0);if($Y=="orig"||!$Y)return
false;if($Y=="null")return"NULL";$Y=substr($Y,4);}if($m["auto_increment"]&&$Y=="")return
null;if($r=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?idf_escape($m["field"]):false);if($r=="NULL")return"NULL";if($m["type"]=="set")$Y=implode(",",(array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(is_blob($m)&&ini_bool("file_uploads")){$Gc=get_file("fields-$v");if(!is_string($Gc))return
false;return
driver()->quoteBinary($Gc);}return
adminer()->processInput($m,$Y,$r);}function
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$Wg="<ul>\n";foreach(table_status('',true)as$R=>$S){$E=adminer()->tableName($S);if(isset($S["Engine"])&&$E!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$K=connection()->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($R),array())),1));if(!$K||$K->fetch_row()){$jg="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$E</a>";echo"$Wg<li>".($K?$jg:"<p class='error'>$jg: ".error())."\n";$Wg="";}}}echo($Wg?"<p class='message'>".'Keine Tabellen.':"</ul>")."\n";}function
on_help($bb,$eh=0){return
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $bb, $eh) }, onmouseout: helpMouseout});","");}function
edit_form($R,array$n,$M,$si,$l=''){$Bh=adminer()->tableName(table_status1($R,true));page_header(($si?'Bearbeiten':'Einfügen'),$l,array("select"=>array($R,$Bh)),$Bh);adminer()->editRowPrint($R,$n,$M,$si);if($M===false){echo"<p class='error'>".'Keine Datensätze.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";$Zb=false;if(!$n)echo"<p class='error'>".'Sie haben keine Rechte, diese Tabelle zu aktualisieren.'."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");$wa=!$_POST;foreach($n
as$E=>$m){echo"<tr><th>".adminer()->fieldName($m);$k=idx($_GET["set"],bracket_escape($E));if($k===null){$k=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$k,$Ag))$k=$Ag[1];if(JUSH=="sql"&&preg_match('~binary~',$m["type"]))$k=bin2hex($k);}$Y=($M!==null?($M[$E]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$m["type"])&&is_array($M[$E])?implode(",",$M[$E]):(is_bool($M[$E])?+$M[$E]:$M[$E])):(!$si&&$m["auto_increment"]?"":(isset($_GET["select"])?false:$k)));if(!$_POST["save"]&&is_string($Y))$Y=adminer()->editVal($Y,$m);if(($si&&!isset($m["privileges"]["update"]))||$m["generated"])echo"<td class='function'><td>".select_value($Y,'',$m,null);else{$Zb=true;$r=($_POST["save"]?idx($_POST["function"],$E,""):($si&&preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$si&&$Y==$m["default"]&&preg_match('~^[\w.]+\(~',$Y))$r="SQL";if(preg_match("~time~",$m["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$r="now";}if($m["type"]=="uuid"&&$Y=="uuid()"){$Y="";$r="uuid";}if($wa!==false)$wa=($m["auto_increment"]||$r=="now"||$r=="uuid"?null:true);input($m,$Y,$r,$wa);if($wa)$wa=false;}echo"\n";}if(!support("table")&&!fields($R))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($Zb){echo"<input type='submit' value='".'Speichern'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($si?'Speichern und weiter bearbeiten':'Speichern und nächsten einfügen')."' title='Ctrl+Shift+Enter'>\n",($si?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Speichere'."…', this); };"):"");}echo($si?"<input type='submit' name='delete' value='".'Entfernen'."'>".confirm()."\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo
input_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
shorten_utf8($th,$le=80,$xh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$le).")($)?)u",$th,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$le).")($)?)",$th,$C);return
h($C[1]).$xh.(isset($C[2])?"":"<i>…</i>");}function
icon($sd,$E,$rd,$Sh){return"<button type='submit' name='$E' title='".h($Sh)."' class='icon icon-$sd'><span>$rd</span></button>";}if(isset($_GET["file"])){if(substr(VERSION,-4)!='-dev'){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");header("Cache-Control: immutable");}@ini_set("zlib.output_compression",'1');if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("h:Mhgб\"PimcQCa	2ód<fa:;NBqR;1Lf9u7&)l;3J/CQXr2Mai0)e:LuÝh-923li7mZw4њ<-̴!U,Févt2S,a҇FVXaNq)-ǜh:n59Y;j-_9krٓ;.tTqo0{y\rHnGSZh;i^uxWΒC@k=b/A0+(l\\x:\rb8\00!\0F\nB͎(3\r\\Ȅa'I|(i\n\r4Og@4C@@!QB	°c¯q,\r1Eh&2PZiGH9G\"v4rDR\npJ-A|/.cDu:,=R]U5mVkLLQ@-\\@9%SrMPDIa\r(YY\\@Xp:plLC O,\r2]7?m06pTaҥC;_˗yȴd>bnnܣ3X8\r[ˀ-)i>V[Yy&L3#X|	X\\ù`C#H22.#Z`<sÒ\0uh־M_\niZeO/CӒ_`31>=k3R/;/d\0ڵm7/AXq.sL :\$Fw8߾~Hj\"Գ7gSFLίQ_O'W]c=51X~7;i\r*\nJS1ZctAV86fdy;Y]zIpc3Y]}@\$.+1'>ZcpdGL#k8PzYAuv]s9_Aq:\nKhB;XbAHq,CI`jS[ˌ1Vr;pB)#鐉;4H/*<3L;lf\ns\$K`}Ք7jx`d%j]4YHbYJ`GG.KfI)2MfָXRC̱V,~g\0g6:[j1H:AlIqu3\"q|8<9s'Q]J|\0`pjfObq\$1J>RH(ǔq\n#r@e(yVJ0Q҈6P[C:G伞4^PZ\\(\n)~9R%Sj{70_s	z|8H	\"@#9DVL\$H5WJ@zaJ ^	)2\nQv]ՇQp.˵&h2dM1#[[kf,ոΆWq'fLkgn6G;eהECVY{\0D5Rx\"h\"ݟ7W,ňuc31Cxp<If]ѱ^{/H&sρi9\$֒b0َIK\0]IDG}EDVNýmQ31KT3zq|#!\"	҃k/phy-.! 0dmK~au0>\$:\$VMf٨k6:3L@d1zlg֩iX97<׭#a}s\0\\mZXQ'n.9KC9?lXq깗\$M2FqЎKB:bo#KXnMzȤ\r=fm%fi.q;-7x(@#9F)/M-6.V^*g\n!\$(7GxwDWba{1-ԐGw\r9њ (:'%?0Ά)tjHV8}f\$f^wlKl=1ZZEigֺ1Xثbe&,2rk>޲O{-A]mMDȁ>G;ЗgQo:0.7lLשl|:nD탉-K*NY3x.dt>Ў)\$\$9BeeRGwir[62Ǳ9Xk0̱5^PO>C `XOk7\0Klx;48L\$09*9 hNF>\0rPQo<	\\Fd'L:b.4,29@Hnb- #2`Z%.L\rPP\"^.Fh\0\r\0\n`	  no\0\r\r1`0	 	1\n G\0` V\0\n\r\0\nz\n@\0\r\n	 \n@@\r\0'  @ z1\"*P#ApH\r\r%+Q7>\rCqK\r@@ ~\r \0\rd@3QёQ\n píh>\r01qqq#q81<\rQIQ  l@':	\0 	#iE\n\"f.Q\$RQU\r ]crim2sw}1(2\0)1z Q\\\r\r@\nh\n @\0`	@'q)@Z.RGq%p_2e	Q&	ox1'11%f`\0f\0j\nf`	 \n`@\$n=`\0Ҍ nI=\0@d'8./2Y8@q.	42E(\r:\n6	H*@	`\n  	l\rɠ\rHlh\0(d4\0]IL^\\K\0\\}JC\n}EKIB>͈IJtdfht/FbxYEM4oj\"mN@tخ~dJ2U4I`\\AuQU.uh\\MQ؉\"G!TnMtPX#]Q-KTh\$cCDƊ-IbO`Pv^W@tdSS0Sܙ<)gMhF<\rj*\$4'\rH[ɪW-Fh:,\\/ɾJ^ODٍj'\rT-&[DĪN[E B\"`euj_\r`hF\rJV%!MZlP^:o>֯XxC):mei/\n8I2\rp2)oC[mViugh6Zf|DUw\\WC45U\rW6mzؖhcKog6Nd6P`Veo<%t?uf!YU,+e.W%\\\0v8쭖XnUBcfv@iN=u;NlKqwqKQ!v[\\7TO0{yj.`ȡiz%bH\"\"\"h_\$b|j\0f\"tĮ*}\$ZW\"@r(\r` CȂ(0&.`Nk9B\n&#(j@䂯fX^֮ @`I-}C0\nB}B5]|W{ʩb|}\"˅)}gň,=cڪ{&bP/C \0V\r׊틈=BN\\=Kr\$xՌWь8dH'ζ8}==\0\0]\n(7zy+卨\r`DYgŉ~|k3ڠE9CCёe@w,@5|fx࿖JlY%xE=Aj@OG ٚeė֖L\n%/y`ߜ?oyae`tG HJ5׃MY(6_ehtDz&x9jZ*/K:,j5U>ǡߓ\"eqףY<ZuZ{!ezV %,|mxSw㦺=# @:X	+ڻC:5Zt \0rZ!={ 2ñìyǤXfð%csx+8A{/ U9y#1y,.5uke_y\r~{[Z:\0\\83mA9'8:i|Y/+9R ˺ÁX7σ:\r	+^;MAΫ0Y*2<7Y\$ES[Zţ5vp\\iFr1:\">`ɝWϔ<uħx<\\֥fƙۙ`ej?ec(<㣂fCZSDv\r#٦U ");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
lzw_decompress("h:Mhgh0LЁd91S!	F!\"-6NbdGg:;Nr)c7\r(Hb81s9k\rc)m8OVAc1c34Of*-P1r416d2ցo#3Bf#	g9Φ،fc\rIb6EC&,bum7aVs#m!hrv\\3\rL:SAdk5naF3e6fSyr!L-K,3L@J˲*J쵣	bc99@H8\\6>`Ŏ;A<T'p&qqE4\rlh<5#pR #I%fBIܲ>ʫ29<Cj27j8jc(n?(a\0@5*3:δ60-AlLP4@ɰ\$H4n311t0͙9WO!rH9Q96F<7\r-xC\n @:\$iضm4Kid{\n6\rxhˋ#^'4V@a<#h0S-c9+pa2cyhBO\$9wiXɔVY9*rHtm	@b|@/l\$z+%p2l.7;&{mXC<l96x9m7R0\\4P)AoxqO#f[;6~P\raTGT0uޟ\n3\\ \\ʎJudCGPZ>d8ҨC?VdLL.(ti>,֜R+9iޞC\$#\"AChVb\n6T2ew\nf6m	!1'c;*eLRn\rG\$2S\$0a'l6&~Ad\$J\$s ȃB4j.RC̔Qj\"7\nXs!6=BȀ}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("':̢i11	4Q6a&:OAIe:NFD|!Cym2\"r<̱/C#:DbqSeJ˦Cܺ\n\nǱS\rZH\$RAܞS+XKvtdg:6EvXŞjmҩej2MB&ʮLC3Q0L-x\nDyNaPn:s͐(cL/(5{Qy4g-i4ڃf(bUko7&ä*ACb`.\r\nCh<\r)`إ`7CʒZX<Q1X@0dp9EQfF\r!(h)\np'#ČH(i*r&<#7K~# A:N6l,\rJP3!@2>CrhN](a0M326UE2'!<#3R<XCH7#n+a\$!2P0.wdr:YE!]<j@\\pl_\rZғTͩZs3\"~9j>WeQ:X/\"\$8X硉@4H:tL܌j~#8_Ax\$x{LEJ4'00<8>c(zX^5Dt;#K_v꩕u1\n`jn'\"Ir7U*!Ynjk@Ì+5)̄3CZB2HV`qæk]<{\r9|gr\\襜:B2781͍d=HLU}^NߔC*/|􊾓V`)8z:Rb8WA:\$2\r/BE~8iYtzX6ǰICQ7 3)6\00N\r갦 \r0ѯ 9~'%Dw'cdi'ta&r11?\\CmSɞ\$ж o&R,!.AHG\"tPv-&	30.	裃!iĕkJ7	:sO\0^'7^(`B(0nL9(\0\n[Uec)Fʛq2R5\r܀e}ܱh.iZ:AYED2@s1d<)H`تI1I\rZGRϔ/\$Oc\"*p'7`]@\\4BXzgABTQ3wc-sr_:բS@2 #Ė\nuP!Te6TaM)\0v(sVAZS<av(A%#&: `C)\r]MIC'/	PHXb\r\nYMzJFJP?JdBllDCS+-r1<w]v!)IKP4EslkV-kj,c,fRdC!&n0RJ2[3x3TB-Glls`hsV)W4SvC:nd-x` ®\$AP-kr^sASV?3E2X,KtSAq7\n^+%skG<aw	DdYڇQgbn\0A{濡9ùl.Hg(0TJ\$h-Bzm\nWY`!lc\0ϪÄՆMLxyk*Z3EU L-~?ii4[ iDZP)hZ\n5\"1tŦd/BrJcN[FժxK߭nDQS?Q\rL'!\nͅII%2萵Q;ǘ8mX-zIFF]t.H	r/[!#\r{̫pH\n4&3r*L臜{Ae\0L(*{kؘDJ_C:U2\0I0,\n;|xef0`1N`6>C){)3(t8dèO_DT^`H:c\0f<Y`f\\&x \nd+5U݇Oz{n-iFYb7vo%)Xh '7UIVwSR}dK_4 Wjnτ\0l\r\0.p@\0@Ȅ[PZIXكcbqtg2 \\i9< Z@i,`^N'uGBr'&\$F(/җ*uɄYiO	`ʑn:paPhnrM	\0кML,\$Nw)\0*l7GrlrQ	Os\"46 bXbӄoXbbeg\r `BВRhJ\"g\rTcj>I-zGolvu\rz\r	D9BK\r^\rY@,BЖL`^#\rwHpDJMXQ&lg&I\01 	P5&n0?gTs٠O!)`v X ͐QЂ\r y!'v.\r	fK! {#*/ඡ\0H\0r(Ȉ`SpcmI)8.s#G\"`Ƈx'ŔE)Qo)&\\VRZ@2bʒf'dZ&,U\r\"*4! \rD'G\\VHi1Rpc\$L2\nbToB8Fk\\\rB\r\0-l\n1354\04SHM4Qr2O%6p5/O5:pL5)Pľ%E361\r4I:S\"LeGs\\Q627=C	,	&D)<;\\~2ˮr076.'?52K6sa6R23SVLM@Fr9pț3j@NSӂk:@)B\0N`!e\n'PX\\YqLV&r+c.]锏h2]4 z`q8c6q4 ӓPg>#.)7Ne\$nB`\" 4L~΂\nu.OBN@R&N(uN@:h\n]6*hPXΠ@,P3S6U:鮟H5L-6T6SC0FsRRB~r:TnA/OP2-H:1e]P-'''8;8WUbYe!\r ^)Ȗp]	j.`</\"Uw3ʸb brA`fF_u^McTB	_Se65`\ra)ec]cAa_oa2>B\$@Q<OHJtx\"gZ\$nW@	D#S\0002#VΕB;N1NKPnv1wEl*YnB4IqZ`z\0\rR'\"픚iO	ps|)=fs1s72i-Gf `P%H\nhI\re\0X'\"\$z͉Yex@|~k yse`\$ZRz \\Wx[v`{\"Rwn'to#r*\0D3~^@xB~Ħ@}BUCx| YPXN`	\n\0Rmz+X:qy*X(No^8[fG\$LZ[vr#Xυe׍\$':\0[\nr\0Z}	b\$S|BcrQH)xРNDeMb ewzXswxAd苂LYC`{}q}Ό  4j4bFO7MN.'WS/uL	|\")IՁU%VUՌ^q'K4=c\"PvV7HI!\n`	㛓firH	tXn\$wFHĂP@rBa@W9`~bu>wbw3M~zw\$J<@\r&IX<_,[,eDuWL%\06\r?bLeKe*l;cXkY\0BL@\n@o\0h%lx=RB's2tpDϧ\"Z=\rBcQ2vBr4lv ^g(% \$\rvС\nP\\~U.R%ٯvГzx_e{3!e,{ewco|0EW!8wѶuitNef:\r(DV@\n{}cAâ׃|*!X¶\r\$LL/ELlU-/WƬc\$l\nUTPNŵt羣SY<,44.s	kv۠R+bdFN!rgs\$?BB2?P\$dtU`U\rāT\"搖EJ@oUx:<3SSIxGzD(7~M|Q~b5+Irzv@wf6#E\"-	(җhS*7\$QlvB%+]2Ohˢrod\rw'!C`biH8ώ(\0 @DdB>,4qHү츠Hbd\0`]e\"b w6;I?uMNj\rbS_!޷wdK\\O}{=ttZ\0DxaN 3Re#w^NPzU=!zLy͸@˸c]l٬[p՞XMspq5*W4Xs^\"@r~|>B5g2	N\$gFu\rzTjB2Anyc^vҸv\nOv:v}\0P[A%3@@Ǌ=cXGy)~u>zĜQXW\"wEwt;mJnfa@Oo;O hVVc^\06,#2s*y2{tXo;lث\n\nZc?`(%4\$&GrT!AݡCmj0ԀC\0D[H/{!Ak!N:5q\0MKC.B7/ @`Ip;PGr`+D<C]ǆ+<,%Hl`09-GsV]J\nu^Vi5/	6\r%T肊:\n!@ nS\"&)mt1f%RVXJtX%@=bU\$`z@X2dD^Pqő4p@\\,B~6??2OP6\0U0@	XKpf6 RR,e8񶁄Z\nk.BfB:7]\"I6JU\$Mpa:4_gpǐ/0@K;pÅTI<AD =!C\nj	忉S<e-a?XRA]@r4ӢӁOD%9n9x'O4-ZtpFK&1f^biB\rPKƢ)%'*Age\r.o@,`[	`}+C24.(\nƄlfan*\0Ok!l%Y݄EttƬ(	|@J0\0D4!J\0pe@O.>;Mfk~N2K!h@ 5\06iwzgURXہ 8A[ƧѸ2&8Hf9]r\$j81AY<をx\n/\$h	\0p(Qw@@ZDE`ik#ޯ%G	Ad>B@H=m\$q t\0X@u\0HY<x*F@!<l\rg@U>	ڷP 9B#\nԜ0g.iNIH.=TdGL ܓH3S\0^0F-E\$\$ /\\q)\n@t# qF2od胢uG|Hc9#<~:*;,BMd@t\0j5M펤!uku(|8%'ȀFЦc[C8!1	JAT\$|6vX\\:nlr@#\$2!nC-H62B\0=@>H0>SA&h|u\$C\\`tk\0|r ;\$zGq\"o&C;-[Q zLx	:~6mE0͇̮#r0 <iXKxu#IYH@V[*ǍQG®TiP8*%<\njM\r.AZ&5s3<y:0!%RW**YyUFrHU0Fa,]Ä\"I9pGZ\$L!u3{Y8v	g%Cvw8HY!K7i!3gc=]p7s@nHp2(<ő4d+0!M\\\$8\"\"`dOcyH/bmYǛFK&M,\$3	]C>.F&70`>kSOэNN؟B\0l䀤ADdX:XcD4tJ!B\0%(ԧь2IOrtI=@O\0<ib#Kz&S(:@@21^?W_(bQQ<b,G9=J}މݧEќQհ؈NJ-LHFdz)u\0`zkhDQZt'hO!R Z!F5oI(,d5Fvb'\0&3HCC8<0)l_`53&\\٬QҌ@P@)#94F\n?6b)EOHj&x	Fdm@ce-5M*lct輇JeD4\"u<OAy%/G60] @s5%R+	р(hQ%\r\r3P\0ԴV\"ƍ!94U˅@QOtr\"~&t@`3#nP^D*\0|\0<x؈ZqЪ0B,j}'tU?/\$\nz52*6GPO#bWuNQ t\$\n7d@@9UPtyZmPSRDФR~o	pu1:\"ب:*Z*bI F-&yTLbsWaMh	'e܍hP\$\"kqc5`ԑ\"@S4u3uvk*6ʤț_v\$ևZb&C(%ExEFĎ@;#HtM7Hd.U+8J2fd'aG\\Q7<sW[b8+L.)\0\".Ès|#7jgX,\rY	!\",{bG`ĺԏd7>f剀X56	-%[+VeNbŀ}ddj+^Mϳ(CȦZԀBYppflCdb;YVapIlK,=fE,IdPNҀ.3c (ؕF046+ SZIp -\\H/\"*֍Q']3LKUa[\rŲ8P2\$ÅW*3(\n/EOHض\$}\0.Q((iTa	^C֟Bw4:L`!|_m,-\n\"	DOţf,@XM;J`@P[I!i	Eb&:	O%+Ѯ\n!Kc\"9.ۂr=up`#-D9KAр06i(QBbm'nH`T@QgnN,Hd`~l^<Z>\nu\r0w	f58|&v4搔>צ޷y\0B^@ٞ\0W_Ϊ\\\0x_\$J˥siOIքi>f|'L-ltxP W3e[*(9!\\bn uXjH\"Reы=Z_*`!w\0w|T~8\0ڼ8]/\0d,u)6?/'VڜT)\$j*rUppD|jll~9G<\rZtOq0}XeC2Ȃ-!BJp=P9)!\08tPu4tI'6CeºA@-qʔSkЀP-['8FP{\n0a: I#τ1/AĆsBfr4\0@=x\0=a\rki5Q~@Mhgb^p~Oyb	xy=\$ AdZ7	m!\0x 3	U.y㚰SuԬL\rV3q㦸U|;3NQ[^'4nv`gAVe1TNF{@Цat%L(H<^CGcdL뵬}ip,lXquK)FJZG;@y1vxCuP3)Gβz)\n(>Zˏu=eJ9s=X46^YrqmURa!?ȱ@ ' 6b.*-MZ@R(elI2W6iIUP8V2P*WcE,/@TO<!k /*%clZmJƭgZ&Eh6N+s}o1\$BR\$'uƨmfeAO\0*+X[ WlL3J`Kpl_:iyIz0p>+P!EZ`tM3C;9ɯh\nr	2`@|@S7I`|Oz	\nSp155[?qu\$\rIPDjhAl=F,K@p	p'4&&,(KDTT4kIB٦%\0hA{CJ3#hK6Ά[%`P7Ҭz\n\"{ZЃ/Ht/n].5+cg=^\"\r0 'mB'v]15\"xrc[3.gtyCÓi.G\r_p\"?ѯ+00\0`*\$ \n4ZrQ@L.<@T묓B3d>9%A-\r?@.\nÐ\\9KghIXM^©X9,	:I-\0N؈J2||qY°:82o_k`uzdCtpmE>L\rIPayj92jO`R\rMIH=^Y'0z C(9.6 \nřk/ZǫvuNYɖK|)'e::߰9KKP (iN+Г)t(5|. ),,@'>{?l\rN /:_}?I\"[`v[\0*!頦`?Xz)NvF\\nr\"~N(\rh?|Rޙi]eb=n!.ʗG~N7N@iw`wj\n\\fP%Az@0䫂OeQƮ]R\0A1k]dfd E?ҿvBLַ]FQASKnbv6^-RSo3̯7SimZ@TF \r~(x/>U̝gi\0rX7	%f>kgc<RzV59gvT0oE\rÃ2 Y6rpĹ\\FXxCp?@R%&xU\0ᷓ7Юd\0P[PGHGNN=4V&w;k83y ni!pwb>ksNŵ(@XAJ|ņcntx;%=OL.ZUW}\nZ5	/?v81L|bBYۊq\\zȇWmE?3lMyRbGg8%䘊:\\M\\myI\nC7I\0D'XN98QtHK=̜tXV穩Y%2@.fl<-Cr@Ryt'Up!\n4 9ܿނuHGp__(\0soɾW7ޒe\nY_YftBc-9bjWm?CKNv\0'/gWR􇰛Q#496DVgUdaZ6#MSkCVLַ\r^(P*A\\6\n1(}?wyAp\n:Uqhǋ2=8Dz=<_ڄq~^ne]Rqᗏ/7tzcja(Ӽ[	YcjFX7&Hv0OxHkc\0[p׍,e\0(\rmpc+)/xr@:4\"7{M66 !|ɶ\"qB`/>M\"l,85t6rv9Q_/yMz0HWޔrT]AL>{2ӯRJ}#=Q^2	\0w`-zr9}^@#OЮ`-\0yp3ň-X\"*1*iMlqa/b\"l#A0c޺PtyBhlPд\n\"%H2Ȅdi=aʀwmj\r(\repPL˕Hq(Ą2/U;;At\rHN&:qRɜ`li;MwNS]W1`4.ST*w.T|=tR\r>M{`/s8/\0 -쁹Gt -Ni5b\r1)!;ܟ!`ȡawB\r\$;%uZ420~~S\0g*ÚQ|(?*ˁ_GD|(}ڵGVHٶ\rm&(2bJW}]2p?R?rI/#~\\{׆_upK`?x4@kj0\0VCŒ#\0kpDu{ɺ@.[Ϙ(\0Oc	\0O\0P\0pDp\"F9\$ť>Kߏ(<OZ\rK	D\\6A@%	:(Xp)D\n6Re{)_+,\0@# V\0^A<VҘFcbPj\r0pVr\"r@:y({n5jD#.S[T'2<Ɜ{p]axnkz\"\\@1\\X<@H+;7b	ࡀHWxBDcLY!	31&E7=Z)%tк?Fр	B\"tP[w s;A&~;LsX砭v\\:% xk;)\"?	8!+.P@,P8e0I<^ pu@2i&t\0A(t> 2;/bv-	%P \$vnԀQm=Ӱ<`u>u\r\0BDZ\$|9p	l&7\n {8PjByHŇ\n'  @<R(\"pS~цB74\0");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
lzw_decompress("v0F==FS	_6MƳr:ECIo:CXc\r؄J(:=Ea28x?'iSANNxsNBVl0S	Ul(D|҄P>E㩶yHch-3Eb bpEp9.~\n?Kbiw|`d.x8EN!23\rYy6GFmY8o7\n\r0<d4E'\n#\r.C!^t(bqH.s2Nq٤9#{c3nӸ2r:<+9CȨ\n<\r`/b\\!H2SڙF#8ЈI78K*ں!鎑+:+&2|:9:NpA/# 0D\\'12a@+J.c,1@^.Bь`OK=`BP6>(eK%! ^!ϬBHSs8^93O1.Xj+M	#+F:7S\$0V(FQ\r!I*X/̊67=۪X3݆؇^gf#Wg8ߋh7Ek\rŹG)tWe4Vו\rC+8\r\0aRؾ70^v6nxP\\@yAR o`K~f\n{f9ť~!`@C.A޺.9z\nl빨w~\${XHpɉح/Ԥg=ѤcHfd%jc5^cH{\$\n\r!4n6cH[.6`ӥλ\\7Wޔ>}hW^Lژ rY_WV:@v\nøi40BE*`z|ڑ\"C(mΈQ\$XawK- M0՚^?\"\rt\rh }yzɃI? bwA?щAhd6A^2a˃ZR иհ(,>)ޑK2!Cl\"\$!@[fzXHytA'XSʒ%H\n4&4VSZ_3RlMM}\$R:NiՁ@崿,cY2cgp::؁ HhPZ`F8AW^|CH+g\"8G\0t\nt&\n#sԖu'N0ب\$')/`	\$\0\\D056K㲿=A~BEZʖ٤@Y;'nS=D2l'/jxi&{WнY;q\"DA8a^1\r1lx)傄*R:p *P{0ri2fvM3ק!dQ3<\n9No4Sjo6\0D		hKYj=IxU-u\$ܹBn{a\0ra\\ N-\0ᆃCwZ9+T!ª\0Ԡ`!.Z\nrP?lhe>w0A)_!7[0J>TR)x8p牱DM-Epq\"\r\$qTdUzVL|P2§s鉰)=C'pٔE`ʉ\"\\[/N|Foy&Y\"YJ4v{;b>:]9:H	[Cv4hA1?&3ҖgjLI`7ʀZ^:k\05|ՠh'2\$`C!Dm]-@R}< 1uy\r؅`ehcN\r=̴p6.l夘6EDp}ǹURaqւy;Ӽ	p=7A=T^69#6![E\\@:oo#3/^);{K. v8<bm)W\n2sθ]a'o%C{x\\\nYuhG\0hp;|*[8+vj~ȟ|rS˷xLwtwʻ=>v\nL1E\nA! }|H'\0pA	>0¹n*L!B	`l\0B!L\"ͿwE[sf8oPݞAw)E|#\\SsU3&>^{_ϖj/bR//L\nΰδE\$ N@<vzom\0\0p4P.vƬ\$MN:0o6O!.0p̔!\0\rop^c	Z0k\nPPf|b	%m	?P\nPB6.Эn\rP<p pXR`\\_\$M('NA(~jÂL&`Bh\r,O`ck٢)1*eld\0р~fڻƖ`K\rn'qt`¶VWD: ؐ6\r\rҀZq۱xI|FbR%k͆ @*r%\"+!bXrzifIP>\$E&X%>Bm`r^%RbBdm#a!V!d\rˎRO'Χo&S&R@Q9&gqLLcGb{j{g+l@\\<B|b-\"kD&\n\0DΚ(qL8ՒoNv\n	 %fP \rnKt[)Vg\n\"ԽN\$Wd4'r\r#`\0ǲ6@v(\rrb\$@[fk9r7`\\	8 D\"b`E@\$\0RT&\"~0`\nbG)	=@[AJi8ge`dk;`7\"z4F\$n42z7I E)^ь8䝀\rŨNsq0ȎbPA+I:`WNJmIW4<nPJTJLbTJOCJfٔXN=Q9`7LfOOzS5 P\r\$=%4dnX\nXdɋO橧\r)F*hn B5\$jLbsM;+P\"nSw7QӃ8#j\"QDnfgrweW%)dXHWQ\$TK`5qH\"ukVURCH7@1\"\r'SUӒfW4 K0n;=		cTDFfX]澵eLqFE\"xx\r(\$4S\$)F	JtDʕDE(EF&Tv\"*`>|U/QdRv\\ZS\rOaҍ6n.ֱ\remx҃vqPS]\0weOt_Pcw&mjozf@o#omO%g`=3mD?A/]5erk':uj|@wH3s;vtv#k&c_#m^cĲ)nj\\wbဿ_BQR҆==/R+MYx9T\$z9aҲȡ2 7\0&yB\0(l\"*>MX@)xVW}.K`T\r@ Z'-IkH75b?ςl>wdܺ`>\r뀔}xZ8`ɂg]QdgO_FndLv54\"2xwW1[22KuL%8(\r-Ӎw×eA5hW>xf(wzx-v	V'LvR!vV0y-0\rWK]b̖O\\0NjS义Dج\rg3lQYEwdĘLX'LbNǹJȬf2ļ{8Ƞ#xsIdEwtɗ/Ȱ=UTYvGG+uY#RJ\$JP)8د̬JK顅x0z5 c\0n7YT9`Du_Yy#n:%Q9Y8@BiU^9TODڥTz#\$oj󨹛O\n'YFMN*ؗ몶z٧:c:ٖÚz),u0Ă?!ĵ~2	{ %;ȏwV6yk]~Fe|G`ShխZOXշXYKw;L\$p@k*`߳,Z?8˺+ɣ\$ۡ9{zA7-n{١]~x_j۠Vd׎;\rz9l\\WcwexK();{gϟdqJmZ<:`85BK+U#LZIzM|KTZagsTZG]=3X˺%\0ZUZnJ\"X\rX;Ӑ@YȌQ#LV9\0ۛcLp#U=1x)Tu9`Sڀ!@\\߫%c:FU[<<>T;x`O]}9yę?Y3=%2)ls]@KQ`ecէYXE&g\r@例6%=iQ|g|:9*5n~9k+af(\0+5I5޷õq]ietN݌M-5v3sa?e|R>zu駦^qQNۏ{Ξgd\0rȇ~{4~M>>勥_>iwIW>dub?ʬAP\n'r ?@TQpՆKDKMI6@ZMIIa3X	&U\0`VqGvzNO?f+Tn\r<P?cs<?S0\$S'b}`-`!`:OjF~=TڡlL0Ҿ^T5閨.OᩘP-YXK\$9+6	˷\0Љ.MO\0ƿ|l/1V׬:KzS\$F\"?{kjow_PgDLkQ	\$	kLޱ5/Ѻ2ڼ_}B\08\\n\n8Vk\\`?\nEZb-VtS6r_%IiddH^sCI-b̄)[	X6rTj\")`{qB7VYHɆ˙JUA|\\YEj'L*kF	\\#C	OV,!Hហ\"f(Z̀\\gܜ\0pQƎT=.!G8^ltk\nkxZG|І\r_ @X<<\"j#E:=\ng \"OR\0\"~*\0eVIT)az\\?4>xܦ焨е/}Kh@K4xy\nƘ9\rA\n{<`PD-=o7{Ѝr\njT5|dg9͑RGyf3\$x84ag<@b/\r\"~^!5#.pHhsp dq'7їXc595<hF0ƚ.QcTDFz3\0 {F|qmrݸ`@Q+&/4b\nF,я8*@D	=u	(@at\01i\ncB,h<3%b0\nhFw )(*XV\"\0}4Nuq׎Lp[2(1H/.yu54	չ:Ab~vHRD\r#yG\nIjFx*rߏLSJ 8@aJ\$rcX0H_hC\$Yɬ'Rm41smBd0I'cUd\$\0P\"}Ba(/T\$B\n(ND'{|B~\0IT		P,Pth]%+ɓdܜ)ҟ,Y1&_Ihe;Օed@\0@AhA&)]:P!\\k,M\\Lq\0E,PKDBޖO\0*RWHg\$sLav@m4C(LFx=lbh@Pݛ<9U|_@\"@	\\0	E6p\$8R&b@'̼\nP>9f^@\"̬  1\02\"`\n\0LT)/M&isMqZyLe4fg3YLNy馟5ٙf.\\-S5d\nǟ@2'T;bhPP,Yz|ٮzp-M`[82ms{N&hB@Ɓrq)(	1L0	D@P)|:NFo3:6x[k3-\n~)Rf3-a9ȀtGg;\0SisL\0B\0+Oe\0?Y4	 Tz!>0Mr31qc;0'Le`F즜)Nu𰞔f>Ϫws)iPTTgO{\\B)ТXhJPrt2<Ѩ9ɫ¡>P\0O}gC:'P֊3hAO\\U(D>|4Zx9(E\$zӑ&2T)*@&\0AQL`N9B̰O\\l|gkc0>LfR)AR\0/\$XE)`ȅ\\kȮ˸p)GTքGd4E2rp ϪZ6N<]3sґ@l`(P'd!qD	bm8wN Ɯ#<J(\0S\\CuVkZc\n@N*x2\0Xw@aEP.iJ!%D@Pz΢&l=BiP-Ԋc|ZjAS*xi|*2pTcqz@!5/I7ӲƬF,t?U|\04jH6ѩNHtD3p'qS<(,鷗\0[媻jMw<?ux\nY<b\0ꨴE^G)|8Io;-e0\\\n=L'p\0{XU07`,,S9yP|iOh	-DͲLSY[:Ӊv%&v94=OANt1\n\0}TU{^MSR*کBtVR׌Qgkz~@	\0nl脵^Y/YWaQsaʱXĴ]c,E`ZX00mRkX8#[RwP\$HKu\rkB銂uNQP6cF\0\0n r!;/=De4YA5]O*`:Z`fs,~+<\"dU3e\0f%Pw^Hמ1` yYq⚰,^j\nhK#4p1veZb)2l1mUK\$\0nt/nxZ8mEjJp#6F~E(yR凰%B7\nV6eTΈ-jbYj䇐e^B{6U\n@cWnyC`u}yiVt%0bJ,p)g1\rVX@R4;\$V@=sx ƊP̐HH*IȡX1ui;ᕦؐpQq[|(`+G]rǅ\$O9dZlE	NKz5u5_!Wp'Lw|=¬.IlvNOPZ\n]o+?O~'DZ#Sǜ}ڮv*l\$Bi2E]ck]ER\nt)d7fLZ.xiU/`z`/^b5yNvĕ+R%U66TCU;W./lQ`XŮ]|t1\"G6b+W/We\0k{ԍ`e?d@(Nt)\n)a¬R>_!;}Ff3\"\0\$%Ea,R%DgKo!4!gY20_	XX	8rͣXFH `*	Ax#EԝX:S=#)iCL(9T)̙\\a#hP(5T.#q_ZM>Td=\0}	fF12BJC+X#5É2-JP\\+,6aYb3]o@`c}a6Jb\\F&c\$0x1+.Oq_\$W5%M0W7b\rxƆ,,BalX._q8?-X+G,d`q16q<C\$e)VWca 02E'{0:bTG20\$h̝՚a.8,Cdǀ@ZV<#X_1U%ƈ1x\\X72yɰGDY<\$0HӒiVYN(rwX+YFTgPe\\~pX-Ld++3,qK:BYOH`Ox\rŴ2rpx<&]Udb*\0I09x1\"\0.,7D3}bh[2^jьG*.Sx!Ċ0:	(?	^\0x2`ͫ7\$I\"H򴒴ėIq?*PT\0T[c8'RLa\\ Bc\n,\\>g(Ҫ\\[6jނ@0R?uSl:K)͆&%h@\$ Q@DՏU&%uRz*'/	+<04\0L`3wRmPR`Qq5%X\"lY|ɥG:U\"\"Pp!p\n&-f*dil tN,JR2Qp\"\\^\0?m}4mbj@b01N!\rQRN/sOEfQdp\r_/D\nG?'P:j\"5@-E[TN\0VU:½>DFZs\0Yڿ])ȆjK#(mkB(Yct.<s\\'p)Եknīݓfׅ\\^~;tX]yZ\rn=~lQGt؅#~ċkRu=F!x\"#\$C7-׫=`\nfF<D\\	\$\$p)~+g&J]y-h\rҀ+i^#5;9Tsف|\$,pl\n4c\09/&m%٫\nnA,;EGp	+(f{&=n8ۑ(XȚnh;JܠAk8\"wf1ҋ5)WKaP4ne#ƪQj7E-scJ-M;[/ Ŵ\\dV7`tw6=]:x	19[,HP<OZ=3O<@e+y魡xOXߎ\0w4i)\"ap^QpKY K:ujn[S\n.Tyȅˀ%~4\0>@5^Daɀ=p06yJe,RUα7E8k`ykSo)bֱiY\"o\r;ЅK5m@~gm\raW*\rH0/qb^Օ:j/).<޸ʸ2b5JLз{݈DZ3q24rܻ#Xykc德 E}=7u1>3\\m`<Z?7C/s<彿&>gntc&do4\";0t_5FrHr0O1kkiNbvit^pumEoVOF\rZ4_u8	܌ޢ\"\n+nxF=9+؏n槒&~\rt7r9N(^'J0W/*7~\rYG+pRnXˣڞWJMM-sC5K tD\\t8,sE͡W pz]ݎJV\r}3cו0=On}pDw_w@1鈷zh(=O4%m4P7,sl'|7}JO`.}Ϣ\\~3\r?~y޹+=C;=PO\\BV)\0'Bq:xDRvbyK}y.cXrG3&\rC0>|MJ#@ܿLS=\nqב{_\rV\rP}|\0Ds<6-#I6fŪ߭l%@Fb)/FBe4+yzNbaEgT|L7\\ r\n4).!n/ƔըB@ðiL5}G?71F/Wc>|~+\0\0qL]qdANF04N\nsՃ\0`g1:	\n>0n	A*OwN\"Ee]҅G]o,e\"*v7&i{\\4o<_bbI1^ys6U?\$mXf+9I^PA~-{oͼrB.ǕÂ\$d9.n\\+Oa#\0TH7lo~Wx+.YW+K=~}|= tW&dtJ(<ݶ㚑<#T}oJz\\1<%M1mdv=߉\\#~_79a\\R<k9LifI0K8'pz/-D͍wf&&~+~!UdRҋDi\r@cnqB|M(ZB/׏!н#Jp[|	+cMRb*MjwNǲ \"F?#HU`\"hlÄa\0(<Tn?\0c5w\0ژ&\0Ӹ;&5fhZ(k#-\0ae\0a\"?\0[00<lo\0005{`\rB@<7>`	@p(>DT@+|\n5zC.pպkɎTYJr	{,\nVB`^[3^@\$⠴ۮ(dxw@9 4@bqj-	Ļx˷*\\5?,X(iE\$)I30\0R`\$ؔ`'O\r2N&OGTA*R\0=	펤*.\\zk	? f2%j^i@^M%xH%<(.NA.V[N\0B3\0006 (.!;1ʦ>\$k@F#@֓N\$!a\$N`!]X\\䄂RPi^8.L2a}/ 	At#ALc-\\AڮBU	\n\"«|PnAy\n!\"A| AƖtsJ^ЈA~ &\$N`\$;:T\n[w	થ\n\nEJ4_ÉhAʑ\\/IW%pAB:S'bN7i2PB/p]BS	\\%	&PYXB)d\n(p=HP82 Õ:\rzO@%	2pݎUiP(e'\rVBPЋ4vL8\"R0|CT5\0:BxRp%ALpAT>,\0B)Yiy	j60D\":\nÁ&pB4pvD/D@C\\c\"qA`\$`0J\rT-Q	\$>?14COSՂ3IX(@>>0t]\n: C	0\"l;9D%\n(>hxx5׶;@7+\rxB>\"'NxB%nl2;B\0=;g0,	AF0'a&h`6?|ORc5A\0ZP)` )^yQ\0ښ^fS/bLMEY	\n {a\r\r1eE8h],ZtQKE:#ȫoE|\\iL_\0Ec]pF`Qj	X\",l6qś\\ZQsExdؙQ0ź<Q&`;SCdqE\"rFT[1v5{FOM1TQEI0	TRz-*qyF3Z7Ų[`2Hg11\\Ưk`<ObqFZAET`1Em񬀌nхFdoQE8F\0`9GL^1ƩpjơpƭqPExL;Elf4BA	k51=x\r3Ȕ@8\0^/B@T\raFLwQBeVHM48Cq2`3jrd䋀0(>BPov8'Pi8L#ɍQ1&32}*AǈBe6=PO\r\n߀0M&\0`'HX	#e lh	#ڀ(6H<Y`H+2\0 RH\0v\09	!Hz-;AR\$\$\"ii ^#pT	(!G`\0+h2FfH@a/Ⱥ1[#ŀjqиPH0\r@*D0ߪwz@2H\"̊ȰL΅!\$|@)J5D\0\$:<~RQ>4gE04rULM4JM!>4r\$+\0ژ!^f0f!nd6PR\"G h􆦓\\Hn8r ;Z\0#A,J;,(0&\0D/#/@3!2\0vywBKhFhc,\"JNGa霄O+@;H8GZ~;bJ:*<P24a\r)&/)\$fBi)@LRC(83ؘgLɛ!r?DGT)9*\0ҥo!&\"B.q7c2:\0Hy?Tr̙\0ԜdTi>63_+2!`2O|ï+e\$4\r@蕒\$`\0|DZCKx|Gr\$oK}L`-5+>CѩO\"+P2l\n+{@@T\0;#(\"!;<2\$ :?+qqɄ[I|Jv6\r؆\"⻊\nb(ߒbI04J305&.g!+xJ`>9NΞW11UwJ4Jp\r <aH@ TdaT|\$!\$\$FG\"hMRȚ!l:%пF]._/b2Mʬß` Ӄ+ZLܻRK=*:0\ns9+Z!*=,!_ČL0ѳ<43G˻4l 22%_\"7\0HQBB\"3a40\n%3.]4Y3_4հC̴f56\$<|U3|ՁM^teMi(ҺL\rlٲPH/!ӄE0?65Ͳ@,ͳ3`p!D#a`d@<ʩ6547\$U7'>7fp\n͸t\0002DVJ݀ĺpU!Xj\06s8'+*ŧ( IH8UM,\04i	jpC6awҢ'tܟ-.~+Ӑn\n~S%tή^+?	9P醄Da){Aɣ#RY|4j*?,A%\08\0V@;ϵ/+4\r0@[H\n͢\n#L	0<3	Gaiڢ&*\nsY!RB(O@().#)jrhR\nr5W\0t܀x[	\$#/#\0;.Rrk,sӃZ`\n/=I2RO>(\rGϷ=+@)H>z\0+R49\$1v%(\0!BU%\"DPw3i.2ǐeLIOT\n2kjqO)@lIyt6g b%\0ۍ(̅A\0S&Ξ(N(4H~s@-5`3(_ L`FSЁ2SPzdɪ*sw2mjY\r&JRM@s` 3\")B1\0CӮ\"H5B@i\rFz_T-N\"	P2p+Ig )	%\09\nb(AɎ\r|ԧ2!RqY!Z;3aʈO8toʈ1U;!LDma\n\0Gd%BBKO@838Me6S_6C%+FJ.4cDPRZ`)P\$2\$fGN\r]2\0 sp8i05\0<*I DloE3жlsHM\r\\ƑP=)[,l &\$q9ivd~震-J\"(HVi\$*Ԗ+3or\0dAOa K&)YI?Tr1[4ŭh9ғt.Jb:JJIԮ{ItRv%'R,A=K],#RJ68+J,4K lT\".J%04RK9Q0@lTRKtRiK+LĀRLmRK}3!ҍB2R+n\$9t2[#6l2\"(5UD}7!SK8T\0\\\n@E6J0 (	RY8Ĭ2\\}\$0%Sx0TCӴ  %JӇ0w/R@82T!C͎4 ZxQԃ</J7\r6\$eP;tB5A+Q\$9M!\$TL2P -!KD2\$\$\0+eB1͠D<JI\$\rA?rR62_<K#15\rx82Q;A+r[zQӓ^)#7O\\LLn&#=SX`4-&j4Й!U?c&h/H9Xh p\0r/lM& D/a@bN<\$RP	d*B2PzP{0>\$0\n:5\n\0WP?؏f\"cހ)EH\n倦8	'`\\ڦ\no!r\0)zZ4>\08(1 1d,#WD]d.X)%J[TS!eT0|TioJS0R`!\05%@2cϢ* ׀\$E;H2U7\r5RLU5W܅u~Q^9*8%XUU%YlWtJM^WeuNVZ;=e.d6 VqXdLVFi5dr!2PUkUD-V2uxg@< \rE\0x\rM@\rHEi[DuIum;V[v	V[\rV/ekKmW\"E\rrqW,r@9\0Z^BhW\"-`Gt-tAM\\dùO]Y+u^ %WVXQUWi\\YV.p]uuu\n1]ug[]WtsdgY]M^\0(vg]slQ0<`Wd0֬]u~\0;״'w_z]BAHL;WC}M`M~ꃢuvCl\"{a]p?\nu`Vׂъ ^\0006^xj6iR¹e@h\rvWaQ@W5>h9\0qOH xhxuETz焀=UTM !,؃\0<AjebcX`dЯ 7\0b\nJ\rOX\\\r;c͆+\0NS`9Yt\0d-@XT܈\0c5T/}\0v0X5c-@7Y60A9VY<'uP5eh[VW)cVl4YacUU\0e`LSeMaObIfSVZمf afeUG8!CУj4euѓbsŖ7Y֑i^iT),*W^eYwL>\$œ'Z\nmWe[Ge@`(gy=xf \"QOit6͂_6iy%E^E5H8\"\0ZJd1iZwj+U*j֤\0lѡ}ڙi9`\rڍjY6y^E3Xfm65WfݝXť}f%RXkeVOhCGY{kY6ܙ}vYlW|6f U6lPS@1l652n}1ce mV=+\"\rm=VX= 'l6Ofw@7w,xl`6.pP7B[Hmlb*_m%VߵmOn*`:[e5PZly!ۧdUi:P[:\0۵fj[Mub8nv{dSv)7nmVҠv\0E~\rЅd05ٵdb4C\r.uV#5bHftZlc\\\0IWOÌM[nŏ!\\txQ9z`Uڂ+76N[:bZ 115q\\EcE7%YfbWMu\\	MrcAZ<Mpf\r7+\\c/ܟi1),\rBrw9@u\"Usݢ7>sg\0006?bVW\\6V\\tΆl6]ob\\i=cVZt7I@Bܟtu\0=uU̗K}w];eؤ3^mSWu[]|#N\\uUuOuWfj\r \\<\\Wduv]֧Mv7p]wWNNLDMEtY6]Muַݿ\\ytmH]e\0UajE!Xwߡ\r]`x>X^f~CXb]wvArvT\nKqj7g\\\$O\\qqW+\\yWtZ]//藅'C}総ؾ0mUu&K_H6WHiZ~G< )\nh\0#&cU\0A%\0)rb\$<=\0WVo{\ne\$ƛ->){<鲨@	^; 3\0*rfBh\n\0|U^|wD3{`(\0V\n5fvd*\03=f +\0\nCʟ܃\n,-ɲ\03Ѐ!&cVJxarՒ|MKX_}}m7׃E{u:o_{@,7_X&ZJo7MW_|;x`\"]C{eԀt-@\$w{\n\$X)_|0i\0W^}\n	vw_Xe7|93#C~.`6\nlrL\r_e7)}q\0_5_Bp9-\0R^}q~k{2_~0*_@c(u{=x&.(`g)`qfWQXZҀWߢ}wꀋ~a wV.!mW_~xO߱R=w\$dU<c\0VHUxZ\0\0*{\0'V`&W{	l=ac&\0jfXkn\riUy}\ru\0{8\0W@a\r9i\08qa}XYnia}V^5g{#'& *GvQ~d>!X\0X3{xz>Hcx='I~􂷳&V*靧})^=񘒀W^h>P`%wEUz=Ac'pr=e%⑅*X+镏I*>Ub~0Cb^&b勺fxF,Un/8JR(\$=QXbOf%Xb[^2_ˀ^!.bh4؜N08	`iER+bf >\0+pF*`\"&V=&\\Jfb4oa֭%Y  { rǊw)\\׏c,i\$=}=b}~#e)R=3XV5U.H0f0'5=Y	'':iV4\nlx`d%6A8M%J4(*`V\"|}*ۀ4rE.d^\n\n<GCUW_b|Fa~YdRo1QJl ^/xn@d-䝒K8<>Ly-bא-ؖ{ryd=\n~\n*O|@\nd{chPiO`J)Cn-ɽ㟓!Jd34/@e9LenJX#Eh\n]J=iTڦq\ryMzfWcN;X:*%VMc)sWԧ?@\$\"	eUcu~G	X[V)cӨ=~&b^P`j^@	െ-arX\npaݐ*diK	䋓{2oiK.ɖP!\0pC\08=P5^`ښby*O\0ar>= V!w{cg0*Ub8eF1*\0-b6F毚8f\nf7ŀGi*,f.ggxk(pj\0hi@\$\0.pM}\niUgYxܫwAN	\0_>fH<=\n/=&tw߮0!Ruu[}\$a1 vb+*v\0n!j#&皝W'<Jb{秉4`!Xx)d5xH	(\$Uu*U]կ+IVMb%޸ʀy&W~gvF/xu=VMu䷇,=3h,XʷZ\n	Ԫc g\ne'{(8V<c=17H4hy&짷Uӏ{b\0ɻ_XY0x〞=@ch\nXh.Vx.8'E@\$\0}W'\nZ@=fZhLZSƐ:B-|XyXߦb\nĦeCIr	f\0\n0o*{P3@\"J	]n/uLUdO\0孡NyZc`ʠhػiMG_=oH>ZO߈vfYa;߷&泄\$筧w~ehb~0ބ1I'nQaN= >a\0jj3\"i=H-acYgV/u`>J}N@٘{(YbXط'^Bh?M网-X9hYZ8` e`,`}.I6b=N\rVxx6i8	hegzqc)jǈWU]Z<JAZ&bUz7N7yqiگ8d8jIfoZ>g8dxx\0\0ޯ|XS,Oek~xa?\0<͢l8`RO50:^4!6!Ę j\\!!^Ӎ.Pa@ӠT~5gY?(?Nɯ|9:kn`E>NFAN#;%Hz\r\r1lX\r6\nT>l&H~ʂKh!(Xe~0]@AS<6\n:lW/W0;HWb*:_@0JDt/}\\\0`<=cߦ˟8\n`+'N X_?i\0(	hGUZ&*{XhdmIlџZ9fc[7ճHxggel*~lϫ{=W{@Fim]ZߋbP:g%%mkUEtHg\0(Mn!.AO% _Y<`Frc&hfU&`DԲ`K1SN\$bH62\$JrP 0\rvz@H\$(fk @mv^\"\nR#Hg%`aȝINm2@#pZRۇ~	h3Pn`zKj3h.>\05{kD@h\0ƿF!A2H]!tU!ǒ>!@1g 5N˻!HB!T]!e܂`ȃ)eȆ@: D܈MII<@8ș'f\0⍝'ɼz1ykv2®Yduoûɓ(]KǼfҏfMż <QܺzI\"	b%\n93ܖ嶊1AoOmh̉L%1҆g&ҷobEL3	ga;HDn.j\rvYdA);xj[o(0{:EnZk;2&ӱN;o(j}\0%[f.2;̄017[>ovS#3_A＋GHhތ\n9?&l\$k/,/3(ɧ ))yi6F%n6N|>Zy_\0A8p/|\0m7I0\rMa\$bw!lT<([T]@5YOfXf\n@fu|ʵ[@/͹2nT\"\0\rKHWS4@mA\$<:\r\\XiOUR m0*fN.ŧnDIA>`+GDTK}ezG\rFa7%-=<HS>\$0>dMO>\rT\$rM}]\09(XM'qph7o:cI6B7NR0LqN\n5<v	\r6PF3qD:BA7Of4ӗ\"1 oչk:c=9׀C[_r'o Q*%Rl8\rI\0007D\\\0)QijQ@*r8cTo<g׉[rQ(>[WG|KD\rHD%W*HV+j!D8`	m |%[[n;P(rW({/\\{7/2)/\\s	_-ܵܖ̀\r{rE2<̥Qw/|A%|o2<s\rN74sE2l?#a#DPd\r<Ǳn\\li4~sRB'+\$C5=mC7eb=ԮY;]mT>	rA};1R<1}KE)x&_a5CU\\Ϻ%q}]s 7|e0#\nШtAAs8>	<2CNt=1\0>*=!fU#HX|tb	m!C7gG{r8A	E8H7'\0ì:=H7Ijl x!a<!..#'aUsGvaB`N\"V]a҄>BCc!N15=wФZ\\t\r/P!t1_<F`/;@2'P0-*zmtA9{twx=O \nT9I\rOMA=Ot}vMnv0l7UNO`X@\$a>é}5tʨ@}ishSH2u)KI>}%`16rrn_\r0iyGװ}~Yw	5~G׷O}GĜ݆u7cb/d\$\nW5L't3]\0M</qa<K]x,^cegah@4g\0`0T=e}uX׀7=%q0fa7eRwDehnb+ع+}%OO=Avl/Q\\\\wP<֧nVuyifve	<<<p]w\nK^a	kZݡؿ`a`#wbQ6o=~p]gr/u_r~	^orހؽI;OcȆqX1)@\"|KX_ҴjUWhv/@vB+5[P{8}vTǶ%}veݰ/wv. #,]pP/ܽEr.]!\n2Q\\ˍu6bp\"lƱ8v4\rO3u 6v/2[_xlI׭Fwܷ~xH7>YFJ1;2<χZ\" .عtHT?}KudwOt!P}=@1=\0uwqK u?ܵm7xnw`^7P ׎ ș_bWؿ\n)y61]0D/_ݷ	w\nㅩMow~Z-5N-.wHxODٌMؿz!QS\rpȳڪa=T6g\rim5yaJ	yitro\"m\r>mf\r	]/ՆLwr%K/=ucwP]w]-,mw\0!	#k*ϘGwe5]^rs>i5	'ux+JJ@}vͬqa-@\\=ɇ[d\r_\\&o%dP1m97g#}Xyݗ>)87nTف2w\r-t@e[ow-ke;₲ퟭNn⩏{ب\$vOޫ\r﾿muV\\[tx%OPr{4NQ5v	P	:?]!?d2L~K͎J\r;ceV=?,?ѷhH#U{KA6j=7n)į? /O^BU\0齯>m~|l\\Hv<=^/4C?^];KLf,_\$D|Flh^ywy۱`e~|F!>ۏ}%pMU\"S4Tn=}uךv!i~k߷Mc7TR=|{Gn]Me.wsǷ̀{n^}D4tjJ	]^+w󗣥U|_XTWƫT;G vo)0}#w|41'L,6<\rm	ymߧ3{ͯf(Q[K!z7үa.u?]t8e{%?cr	g׿Y\n<ܐ\\}e<C\"T\0*T|Ϩ>^V<b=wxxEjY ]`}b_IRJ^>ɡ1XQ/}ۈpanLnnaFSU* 53f{z{\rY}[=8V?Ns˛ğyYf~[ۀ6\$_R#䝸9ׅp0D߇obf\r7r~OTđ\">LMK\$g쪁~(X8'x'IqݾUVtP?b(vxN	gT֧=j#ƫkQ}Z\$8Js潼?D^uSo\0ɹeLVĩ7?V.jvޠ7uU/ݸy޵)]*ش\n'^T(r~\r~eU)hyi Ril1Ν7?\nDe˺BSsuk@B&`I @");}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo"PNG\r\n\n\0\0\0\rIHDR\0\0\09\0\0\09\0\0\0~6\0\0\0000PLTE\0\0\0+NvYtssuIJ/.C\0\0\0tRNS\0@f\0\0\0	pHYs\0\0\0\0\0\0\0IDAT8ՔN@El϶p6G.\$=>	w5r}z7>P#\$Kj7ݶ?4mt&~3!00^Af0\",*4oEX(*Y	6	PcOW܊mr0~/L\rXj#mjC]Gm\0}ߑuA9X\n8VY+D#iqnKQ8J1Q6Y0`PbQ\\h~>:pSɀGEQ=I{*327\neLB~/R(\$) HQni6J	<-.wɪjVmm?SHvƩ\0^q)]U92,;Ǎ'p!X˃LD.tæ/wR	wdr2Ƥ4[=E5S+c\0\0\0\0IENDB`";}exit;}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]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));@ini_set("session.use_trans_sid",'0');if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",HTTPS,true);session_start();}if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){$_GET=remove_slashes($_GET,$Hc);$_POST=remove_slashes($_POST,$Hc);$_COOKIE=remove_slashes($_COOKIE,$Hc);}if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",'15');function
lang($v,$df=null){$pa=func_get_args();$pa[0]=$v;return
call_user_func_array('Adminer\lang_format',$pa);}function
lang_format($di,$df=null){if(is_array($di)){$bg=($df==1?0:1);$di=$di[$bg];}$di=str_replace("'",'’',$di);$pa=func_get_args();array_shift($pa);$Qc=str_replace("%d","%s",$di);if($Qc!=$di)$pa[0]=format_number($df);return
vsprintf($Qc,$pa);}define('Adminer\LANG','de');abstract
class
SqlDb{static$instance;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
function
attach($P,$V,$H);abstract
function
quote($th);abstract
function
select_db($_b);abstract
function
query($J,$li=false);function
multi_query($J){return$this->multi=$this->query($J);}function
store_result(){return$this->multi;}function
next_result(){return
false;}}if(extension_loaded('pdo')){abstract
class
PdoDb
extends
SqlDb{protected$pdo;function
dsn($Wb,$V,$H,array$sf=array()){$sf[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$sf[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
\PDO($Wb,$V,$H,$sf);}catch(\Exception$qc){return$qc->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
quote($th){return$this->pdo->quote($th);}function
query($J,$li=false){$K=$this->pdo->query($J);$this->error="";if(!$K){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unbekannter Fehler.';return
false;}$this->store_result($K);return$K;}function
store_result($K=null){if(!$K){$K=$this->multi;if(!$K)return
false;}if($K->columnCount()){$K->num_rows=$K->rowCount();return$K;}$this->affected_rows=$K->rowCount();return
true;}function
next_result(){$K=$this->multi;if(!is_object($K))return
false;$K->_offset=0;return@$K->nextRowset();}}class
PdoResult
extends
\PDOStatement{var$_offset=0,$num_rows;function
fetch_assoc(){return$this->fetch_array(\PDO::FETCH_ASSOC);}function
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
function
fetch_array($Oe){$L=$this->fetch($Oe);return($L?array_map(array($this,'unresource'),$L):$L);}private
function
unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function
fetch_field(){$M=(object)$this->getColumnMeta($this->_offset++);$U=$M->pdo_type;$M->type=($U==\PDO::PARAM_INT?0:15);$M->charsetnr=($U==\PDO::PARAM_LOB||(isset($M->flags)&&in_array("blob",(array)$M->flags))?63:0);return$M;}function
seek($ff){for($t=0;$t<$ff;$t++)$this->fetch();}}}function
add_driver($u,$E){SqlDriver::$drivers[$u]=$E;}function
get_driver($u){return
SqlDriver::$drivers[$u];}abstract
class
SqlDriver{static$instance;static$drivers=array();static$extensions=array();static$jush;protected$conn;protected$types=array();var$delimiter=";";var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$partitionBy=array();var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
function
connect($P,$V,$H){$f=new
Db;return($f->attach($P,$V,$H)?:$f);}function
__construct(Db$f){$this->conn=$f;}function
types(){return
call_user_func_array('array_merge',array_values($this->types));}function
structuredTypes(){return
array_map('array_keys',$this->types);}function
enumLength(array$m){}function
unconvertFunction(array$m){}function
select($R,array$O,array$Z,array$s,array$uf=array(),$_=1,$F=0,$jg=false){$Rd=(count($s)<count($O));$J=adminer()->selectQueryBuild($O,$Z,$s,$uf,$_,$F);if(!$J)$J="SELECT".limit(($_GET["page"]!="last"&&$_&&$s&&$Rd&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$O)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$Rd?"\nGROUP BY ".implode(", ",$s):"").($uf?"\nORDER BY ".implode(", ",$uf):""),$_,($F?$_*$F:0),"\n");$ph=microtime(true);$L=$this->conn->query($J);if($jg)echo
adminer()->selectQuery($J,$ph,!$L);return$L;}function
delete($R,$qg,$_=0){$J="FROM ".table($R);return
queries("DELETE".($_?limit1($R,$J,$qg):" $J$qg"));}function
update($R,array$Q,$qg,$_=0,$Xg="\n"){$Di=array();foreach($Q
as$z=>$X)$Di[]="$z = $X";$J=table($R)." SET$Xg".implode(",$Xg",$Di);return
queries("UPDATE".($_?limit1($R,$J,$qg,$Xg):" $J$qg"));}function
insert($R,array$Q){return
queries("INSERT INTO ".table($R).($Q?" (".implode(", ",array_keys($Q)).")\nVALUES (".implode(", ",$Q).")":" DEFAULT VALUES").$this->insertReturning($R));}function
insertReturning($R){return"";}function
insertUpdate($R,array$N,array$ig){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($J,$Qh){}function
convertSearch($v,array$X,array$m){return$v;}function
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):$X);}function
quoteBinary($Lg){return
q($Lg);}function
warnings(){}function
tableHelp($E,$Vd=false){}function
inheritsFrom($R){return
array();}function
inheritedTables($R){return
array();}function
partitionsInfo($R){return
array();}function
hasCStyleEscapes(){return
false;}function
engines(){return
array();}function
supportsIndex(array$S){return!is_view($S);}function
indexAlgorithms(array$Ah){return
array();}function
checkConstraints($R){return
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME".($this->conn->flavor=='maria'?" AND c.TABLE_NAME = t.TABLE_NAME":"")."
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($R).(JUSH=="pgsql"?"
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'":""),$this->conn);}function
allFields(){$L=array();if(DB!=""){foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$M){$M["null"]=($M["nullable"]=="YES");$L[$M["tab"]][]=$M;}}return$L;}}class
Adminer{static$instance;var$error='';function
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.4.2")."' width='24' height='24' alt='' id='logo'>Adminer</a>";}function
credentials(){return
array(SERVER,$_GET["username"],get_password());}function
connectSsl(){}function
permanentLogin($h=false){return
password_file($h);}function
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
serverName($P){return
h($P);}function
database(){return
DB;}function
databases($Lc=true){return
get_databases($Lc);}function
pluginsLinks(){}function
operators(){return
driver()->operators;}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
afterConnect(){}function
headers(){}function
csp(array$tb){return$tb;}function
head($xb=null){return
true;}function
bodyClass(){echo" adminer";}function
css(){$L=array();foreach(array("","-dark")as$Oe){$o="adminer$Oe.css";if(file_exists($o)){$Gc=file_get_contents($o);$L["$o?v=".crc32($Gc)]=($Oe?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$Gc)?'':'light'));}}return$L;}function
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.'Datenbank System'.'<td>',input_hidden("auth[driver]","server")."MySQL / MariaDB"),adminer()->loginFormField('server','<tr><th>'.'Server'.'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="'.'hostname[:port] or :socket'.'" placeholder="localhost" autocapitalize="off">'),adminer()->loginFormField('username','<tr><th>'.'Benutzer'.'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'),adminer()->loginFormField('password','<tr><th>'.'Passwort'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),adminer()->loginFormField('db','<tr><th>'.'Datenbank'.'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Passwort speichern')."\n";}function
loginFormField($E,$kd,$Y){return$kd.$Y."\n";}function
login($qe,$H){if($H=="")return
sprintf('Adminer unterstützt den Zugriff auf eine Datenbank ohne Passwort nicht, <a href="https://www.adminer.org/de/password/"%s>mehr Informationen</a>.',target_blank());return
true;}function
tableName(array$Ah){return
h($Ah["Name"]);}function
fieldName(array$m,$uf=0){$U=$m["full_type"];$db=$m["comment"];return'<span title="'.h($U.($db!=""?($U?": ":"").$db:'')).'">'.h($m["field"]).'</span>';}function
selectLinks(array$Ah,$Q=""){$E=$Ah["Name"];echo'<p class="links">';$pe=array("select"=>'Daten auswählen');if(support("table")||support("indexes"))$pe["table"]='Struktur anzeigen';$Vd=false;if(support("table")){$Vd=is_view($Ah);if($Vd){if(support("view"))$pe["view"]='View ändern';}elseif(function_exists('Adminer\alter_table'))$pe["create"]='Tabelle ändern';}if($Q!==null)$pe["edit"]='Neuer Datensatz';foreach($pe
as$z=>$X)echo" <a href='".h(ME)."$z=".urlencode($E).($z=="edit"?$Q:"")."'".bold(isset($_GET[$z])).">$X</a>";echo
doc_link(array(JUSH=>driver()->tableHelp($E,$Vd)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$_h){return
array();}function
backwardKeysPrint(array$ya,array$M){}function
selectQuery($J,$ph,$Ac=false){$L="</p>\n";if(!$Ac&&($Li=driver()->warnings())){$u="warnings";$L=", <a href='#$u'>".'Warnungen'."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."$L<div id='$u' class='hidden'>\n$Li</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$J))."</code> <span class='time'>(".format_time($ph).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($J)."'>".'Bearbeiten'."</a>":"").$L;}function
sqlCommandQuery($J){return
shorten_utf8(trim($J),1000);}function
sqlPrintAfter(){}function
rowDescription($R){return"";}function
rowDescriptions(array$N,array$Oc){return$N;}function
selectLink($X,array$m){}function
selectVal($X,$A,array$m,$Df){$L=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"<code>$X</code>":(preg_match('~json~',$m["type"])?"<code class='jush-js'>$X</code>":$X)));if(is_blob($m)&&!is_utf8($X))$L="<i>".lang_format(array('%d Byte','%d Bytes'),strlen($Df))."</i>";return($A?"<a href='".h($A)."'".(is_url($A)?target_blank():"").">$L</a>":$L);}function
editVal($X,array$m){return$X;}function
config(){return
array();}function
tableStructurePrint(array$n,$Ah=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".'Spalte'."<td>".'Typ'.(support("comment")?"<td>".'Kommentar':"")."</thead>\n";$uh=driver()->structuredTypes();foreach($n
as$m){echo"<tr><th>".h($m["field"]);$U=h($m["full_type"]);$Za=h($m["collation"]);echo"<td><span title='$Za'>".(in_array($U,(array)$uh['Benutzerdefinierte Typen'])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($Za&&isset($Ah["Collation"])&&$Za!=$Ah["Collation"]?" $Za":""))."</span>",($m["null"]?" <i>NULL</i>":""),($m["auto_increment"]?" <i>".'Auto-Inkrement'."</i>":"");$k=h($m["default"]);echo(isset($m["default"])?" <span title='".'Vorgabewert festlegen'."'>[<b>".($m["generated"]?"<code class='jush-".JUSH."'>$k</code>":$k)."</b>]</span>":""),(support("comment")?"<td>".h($m["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
tableIndexesPrint(array$x,array$Ah){$Lf=false;foreach($x
as$E=>$w)$Lf|=!!$w["partial"];echo"<table>\n";$Eb=first(driver()->indexAlgorithms($Ah));foreach($x
as$E=>$w){ksort($w["columns"]);$jg=array();foreach($w["columns"]as$z=>$X)$jg[]="<i>".h($X)."</i>".($w["lengths"][$z]?"(".$w["lengths"][$z].")":"").($w["descs"][$z]?" DESC":"");echo"<tr title='".h($E)."'>","<th>$w[type]".($Eb&&$w['algorithm']!=$Eb?" ($w[algorithm])":""),"<td>".implode(", ",$jg);if($Lf)echo"<td>".($w['partial']?"<code class='jush-".JUSH."'>WHERE ".h($w['partial']):"");echo"\n";}echo"</table>\n";}function
selectColumnsPrint(array$O,array$e){print_fieldset("select",'Daten zeigen von',$O);$t=0;$O[""]=array();foreach($O
as$z=>$X){$X=idx($_GET["columns"],$z,array());$d=select_input(" name='columns[$t][col]'",$e,$X["col"],($z!==""?"selectFieldChange":"selectAddRow"));echo"<div>".(driver()->functions||driver()->grouping?html_select("columns[$t][fun]",array(-1=>"")+array_filter(array('Funktionen'=>driver()->functions,'Aggregationen'=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($z!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$t++;}echo"</div></fieldset>\n";}function
selectSearchPrint(array$Z,array$e,array$x){print_fieldset("search",'Suchen',$Z);foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$w["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$t]' value='".h(idx($_GET["fulltext"],$t))."'>",script("qsl('input').oninput = selectFieldChange;",""),(JUSH=='sql'?checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"):''),"</div>\n";}$La="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"<div>".select_input(" name='where[$t][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'beliebig'.")"),html_select("where[$t][op]",adminer()->operators(),$X["op"],$La),"<input type='search' name='where[$t][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $La }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
selectOrderPrint(array$uf,array$e,array$x){print_fieldset("sort",'Ordnen',$uf);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"<div>".select_input(" name='order[$t]'",$e,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),'absteigend')."</div>\n";$t++;}}echo"<div>".select_input(" name='order[$t]'",$e,"","selectAddRow"),checkbox("desc[$t]",1,false,'absteigend')."</div>\n","</div></fieldset>\n";}function
selectLimitPrint($_){echo"<fieldset><legend>".'Begrenzung'."</legend><div>","<input type='number' name='limit' class='size' value='".intval($_)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
selectLengthPrint($Oh){if($Oh!==null)echo"<fieldset><legend>".'Textlänge'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($Oh)."'>","</div></fieldset>\n";}function
selectActionPrint(array$x){echo"<fieldset><legend>".'Aktion'."</legend><div>","<input type='submit' value='".'Daten zeigen von'."'>"," <span id='noindex' title='".'Vollständige Überprüfung der Tabelle'."'></span>","<script".nonce().">\n","const indexColumns = ";$e=array();foreach($x
as$w){$wb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$wb)$e[$wb]=1;}$e[""]=1;foreach($e
as$z=>$X)json_row($z);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint(array$dc,array$e){}function
selectColumnsProcess(array$e,array$x){$O=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$O[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$s[]=$O[$z];}}return
array($O,$s);}function
selectSearchProcess(array$n,array$x){$L=array();foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$t)!="")$L[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){$Xa=$X["col"];if("$Xa$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$hb=array();foreach(($Xa!=""?array($Xa=>$n[$Xa]):$n)as$E=>$m){$gg="";$gb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$yd=process_length($X["val"]);$gb
.=" ".($yd!=""?$yd:"(NULL)");}elseif($X["op"]=="SQL")$gb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$C))$gb=" $C[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$gg="$X[op](".q($X["val"]).", ";$gb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$gb
.=" ".adminer()->processInput($m,$X["val"]);if($Xa!=""||(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$hb[]=$gg.driver()->convertSearch(idf_escape($E),$X,$m).$gb;}$L[]=(count($hb)==1?$hb[0]:($hb?"(".implode(" OR ",$hb).")":"1 = 0"));}}return$L;}function
selectOrderProcess(array$n,array$x){$L=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$L[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$L;}function
selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function
selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function
selectEmailProcess(array$Z,array$Oc){return
false;}function
selectQueryBuild(array$O,array$Z,array$s,array$uf,$_,$F){return"";}function
messageQuery($J,$Ph,$Ac=false){restart_session();$md=&get_session("queries");if(!idx($md,$_GET["db"]))$md[$_GET["db"]]=array();if(strlen($J)>1e6)$J=preg_replace('~[\x80-\xFF]+$~','',substr($J,0,1e6))."\n…";$md[$_GET["db"]][]=array($J,time(),$Ph);$mh="sql-".count($md[$_GET["db"]]);$L="<a href='#$mh' class='toggle'>".'SQL-Kommando'."</a> <a href='' class='jsonly copy'>🗐</a>\n";if(!$Ac&&($Li=driver()->warnings())){$u="warnings-".count($md[$_GET["db"]]);$L="<a href='#$u' class='toggle'>".'Warnungen'."</a>, $L<div id='$u' class='hidden'>\n$Li</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $L<div id='$mh' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($J,1e4)."</code></pre>".($Ph?" <span class='time'>($Ph)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($md[$_GET["db"]])-1)).'">'.'Bearbeiten'.'</a>':'').'</div>';}function
editRowPrint($R,array$n,$M,$si){}function
editFunctions(array$m){$L=($m["null"]?"NULL/":"");$si=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$z=>$Vc){if(!$z||(!isset($_GET["call"])&&$si)){foreach($Vc
as$Uf=>$X){if(!$Uf||preg_match("~$Uf~",$m["type"]))$L
.="/$X";}}if($z&&$Vc&&!preg_match('~set|bool~',$m["type"])&&!is_blob($m))$L
.="/SQL";}if($m["auto_increment"]&&!$si)$L='Auto-Inkrement';return
explode("/",$L);}function
editInput($R,array$m,$b,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$b value='orig' checked><i>".'Original'."</i></label> ":"").enum_input("radio",$b,$m,$Y,"NULL");return"";}function
editHint($R,array$m,$Y){return"";}function
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$E=$m["field"];$L=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$L="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$L=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$L=idf_escape($E)." $r $L";elseif(preg_match('~^[+-] interval$~',$r))$L=idf_escape($E)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$L);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$L="$r(".idf_escape($E).", $L)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$L="$r($L)";return
unconvert_field($m,$L);}function
dumpOutput(){$L=array('text'=>'anzeigen','file'=>'Datei');if(function_exists('gzencode'))$L['gz']='gzip';return$L;}function
dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
dumpDatabase($j){}function
dumpTable($R,$vh,$Vd=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($vh)dump_csv(array_keys(fields($R)));}else{if($Vd==2){$n=array();foreach(fields($R)as$E=>$m)$n[]=idf_escape($E)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$vh);set_utf8mb4($h);if($vh&&$h){if($vh=="DROP+CREATE"||$Vd==1)echo"DROP ".($Vd==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($Vd==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
dumpData($R,$vh,$J){if($vh){$ze=(JUSH=="sqlite"?0:1048576);$n=array();$ud=false;if($_POST["format"]=="sql"){if($vh=="TRUNCATE+INSERT")echo
truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n
as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$ud=true;break;}}}}$K=connection()->query($J,1);if($K){$Kd="";$Ha="";$Zd=array();$Wc=array();$xh="";$Dc=($R!=''?'fetch_assoc':'fetch_row');$pb=0;while($M=$K->$Dc()){if(!$Zd){$Di=array();foreach($M
as$X){$m=$K->fetch_field();if(idx($n[$m->name],'generated')){$Wc[$m->name]=true;continue;}$Zd[]=$m->name;$z=idf_escape($m->name);$Di[]="$z = VALUES($z)";}$xh=($vh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Di):"").";\n";}if($_POST["format"]!="sql"){if($vh=="table"){dump_csv($Zd);$vh="INSERT";}dump_csv($M);}else{if(!$Kd)$Kd="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$Zd)).") VALUES";foreach($M
as$z=>$X){if($Wc[$z]){unset($M[$z]);continue;}$m=$n[$z];$M[$z]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Lg=($ze?"\n":" ")."(".implode(",\t",$M).")";if(!$Ha)$Ha=$Kd.$Lg;elseif(JUSH=='mssql'?$pb%1000!=0:strlen($Ha)+4+strlen($Lg)+strlen($xh)<$ze)$Ha
.=",$Lg";else{echo$Ha.$xh;$Ha=$Kd.$Lg;}}$pb++;}if($Ha)echo$Ha.$xh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($ud)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
dumpFilename($td){return
friendly_url($td!=""?$td:(SERVER?:"localhost"));}function
dumpHeaders($td,$Qe=false){$Ff=$_POST["output"];$wc=(preg_match('~sql~',$_POST["format"])?"sql":($Qe?"tar":"csv"));header("Content-Type: ".($Ff=="gz"?"application/x-gzip":($wc=="tar"?"application/x-tar":($wc=="sql"||$Ff!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Ff=="gz"){ob_start(function($th){return
gzencode($th);},1e6);}return$wc;}function
dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function
importServerPath(){return"adminer.sql";}function
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Datenbank ändern'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Schema ändern':'Schema erstellen')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Datenbankschema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Rechte'."</a>\n":"");if($_GET["ns"]!=="")echo(support("routine")?"<a href='#routines'>".'Routinen'."</a>\n":""),(support("sequence")?"<a href='#sequences'>".'Sequenzen'."</a>\n":""),(support("type")?"<a href='#user-types'>".'Benutzerdefinierte Typen'."</a>\n":""),(support("event")?"<a href='#events'>".'Ereignisse'."</a>\n":"");return
true;}function
navigation($Ne){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$Ye=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$Ye)<0?h($Ye):"")."</a>","</span></h1>\n";if($Ne=="auth"){$Ff="";foreach((array)$_SESSION["pwds"]as$Fi=>$Zg){foreach($Zg
as$P=>$Ai){$E=h(get_setting("vendor-$Fi-$P")?:get_driver($Fi));foreach($Ai
as$V=>$H){if($H!==null){$Cb=$_SESSION["db"][$Fi][$P][$V];foreach(($Cb?array_keys($Cb):array(""))as$j)$Ff
.="<li><a href='".h(auth_url($Fi,$P,$V,$j))."'>($E) ".h("$V@".($P!=""?adminer()->serverName($P):"").($j!=""?" - $j":""))."</a>\n";}}}}if($Ff)echo"<ul id='logins'>\n$Ff</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Ne&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Ne);$fa=array();if(DB==""||!$Ne){if(support("sql")){$fa[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL-Kommando'."</a>";$fa[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Importieren'."</a>";}$fa[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Exportieren'."</a>";}$zd=$_GET["ns"]!==""&&!$Ne&&DB!="";if($zd&&function_exists('Adminer\alter_table'))$fa[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Tabelle erstellen'."</a>";echo($fa?"<p class='links'>\n".implode("\n",$fa)."\n":"");if($zd){if($T)adminer()->tablesPrint($T);else
echo"<p class='message'>".'Keine Tabellen.'."</p>\n";}}}function
syntaxHighlighting(array$T){echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.4.2",true);if(support("sql")){echo"<script".nonce().">\n";if($T){$pe=array();foreach($T
as$R=>$U)$pe[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b('.implode('|',$pe).')\b/g',false);if(support('routine')){foreach(routines()as$M)json_row(js_escape(ME).'function='.urlencode($M["SPECIFIC_NAME"]).'&name=$&','/\b'.preg_quote($M["ROUTINE_NAME"],'/').'(?=["`]?\()/g',false);}json_row('');echo"};\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Fh=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n
as$m)$Fh[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Fh)."); });\n";}}echo"</script>\n";}echo
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
databasesPrint($Ne){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"<form action=''>\n<p id='dbs'>\n";hidden_fields_get();$Ab=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".'Datenbank'."'>".'DB'.": ".($i?html_select("db",array(""=>"")+$i,DB).$Ab:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n")."</label>","<input type='submit' value='".'Auswählen'."'".($i?" class='hidden'":"").">\n";foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo
input_hidden($X);break;}}echo"</p></form>\n";}function
tablesPrint(array$T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$qh){$R="$R";$E=adminer()->tableName($qh);if($E!=""&&!$qh["partition"])echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".'Daten auswählen'."'>".'zeigen'."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($R).'"'.bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"],$_GET["check"],$_GET["view"])),(is_view($qh)?"view":"structure"))." title='".'Struktur anzeigen'."'>$E</a>":"<span>$E</span>")."\n";}echo"</ul>\n";}function
showVariables(){return
show_variables();}function
showStatus(){return
show_status();}function
processList(){return
process_list();}function
killProcess($u){return
kill_process($u);}}class
Plugins{private
static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
__construct($Zf){if($Zf===null){$Zf=array();$Ba="adminer-plugins";if(is_dir($Ba)){foreach(glob("$Ba/*.php")as$o)$this->includeOnce($o);}$ld=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ba.php")){$_d=$this->includeOnce("$Ba.php");if(is_array($_d)){foreach($_d
as$Yf)$Zf[get_class($Yf)]=$Yf;}else$this->error
.=sprintf('%s muss <a%s>ein Array zurückgeben</a>.',"<b>$Ba.php</b>",$ld)."<br>";}foreach(get_declared_classes()as$Ua){if(!$Zf[$Ua]&&(preg_match('~^Adminer\w~i',$Ua)||is_subclass_of($Ua,'Adminer\Plugin'))){$zg=new
\ReflectionClass($Ua);$jb=$zg->getConstructor();if($jb&&$jb->getNumberOfRequiredParameters())$this->error
.=sprintf('<a%s>Konfigure</a> %s mit %s.',$ld,"<b>$Ua</b>","<b>$Ba.php</b>")."<br>";else$Zf[$Ua]=new$Ua;}}}$this->plugins=$Zf;$ga=new
Adminer;$Zf[]=$ga;$zg=new
\ReflectionObject($ga);foreach($zg->getMethods()as$Le){foreach($Zf
as$Yf){$E=$Le->getName();if(method_exists($Yf,$E))$this->hooks[$E][]=$Yf;}}}function
includeOnce($o){return
include_once"./$o";}function
__call($E,array$Jf){$pa=array();foreach($Jf
as$z=>$X)$pa[]=&$Jf[$z];$L=null;foreach($this->hooks[$E]as$Yf){$Y=call_user_func_array(array($Yf,$E),$pa);if($Y!==null){if(!self::$append[$E])return$Y;$L=$Y+(array)$L;}}return$L;}}abstract
class
Plugin{protected$translations=array();function
description(){return$this->lang('');}function
screenshot(){return"";}protected
function
lang($v,$df=null){$pa=func_get_args();$pa[0]=idx($this->translations[LANG],$v)?:$v;return
call_user_func_array('Adminer\lang_format',$pa);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
Plugins(null):new
Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
Db
extends
\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function
__construct(){parent::init();}function
attach($P,$V,$H){mysqli_report(MYSQLI_REPORT_OFF);list($pd,$ag)=host_port($P);$oh=adminer()->connectSsl();if($oh)$this->ssl_set($oh['key'],$oh['cert'],$oh['ca'],'','');$L=@$this->real_connect(($P!=""?$pd:ini_get("mysqli.default_host")),($P.$V!=""?$V:ini_get("mysqli.default_user")),($P.$V.$H!=""?$H:ini_get("mysqli.default_pw")),null,(is_numeric($ag)?intval($ag):ini_get("mysqli.default_port")),(is_numeric($ag)?null:$ag),($oh?($oh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($L?'':$this->error);}function
set_charset($Na){if(parent::set_charset($Na))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Na");}function
next_result(){return
self::more_results()&&parent::next_result();}function
quote($th){return"'".$this->escape_string($th)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
Db
extends
SqlDb{private$link;function
attach($P,$V,$H){if(ini_bool("mysql.allow_local_infile"))return
sprintf('Deaktivieren Sie %s oder aktivieren Sie die Erweiterungen %s oder %s.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($P!=""?$P:ini_get("mysql.default_host")),($P.$V!=""?$V:ini_get("mysql.default_user")),($P.$V.$H!=""?$H:ini_get("mysql.default_password")),true,131072);if(!$this->link)return
mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function
set_charset($Na){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Na,$this->link))return
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Na");}function
quote($th){return"'".mysql_real_escape_string($th,$this->link)."'";}function
select_db($_b){return
mysql_select_db($_b,$this->link);}function
query($J,$li=false){$K=@($li?mysql_unbuffered_query($J,$this->link):mysql_query($J,$this->link));$this->error="";if(!$K){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
false;}if($K===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
true;}return
new
Result($K);}}class
Result{var$num_rows;private$result;private$offset=0;function
__construct($K){$this->result=$K;$this->num_rows=mysql_num_rows($K);}function
fetch_assoc(){return
mysql_fetch_assoc($this->result);}function
fetch_row(){return
mysql_fetch_row($this->result);}function
fetch_field(){$L=mysql_fetch_field($this->result,$this->offset++);$L->orgtable=$L->table;$L->charsetnr=($L->blob?63:0);return$L;}function
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
Db
extends
PdoDb{var$extension="PDO_MySQL";function
attach($P,$V,$H){$sf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$oh=adminer()->connectSsl();if($oh){if($oh['key'])$sf[\PDO::MYSQL_ATTR_SSL_KEY]=$oh['key'];if($oh['cert'])$sf[\PDO::MYSQL_ATTR_SSL_CERT]=$oh['cert'];if($oh['ca'])$sf[\PDO::MYSQL_ATTR_SSL_CA]=$oh['ca'];if(isset($oh['verify']))$sf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$oh['verify'];}list($pd,$ag)=host_port($P);return$this->dsn("mysql:charset=utf8;host=$pd".($ag?(is_numeric($ag)?";port=":";unix_socket=").$ag:""),$V,$H,$sf);}function
set_charset($Na){return$this->query("SET NAMES $Na");}function
select_db($_b){return$this->query("USE ".idf_escape($_b));}function
query($J,$li=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$li);return
parent::query($J,$li);}}}class
Driver
extends
SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
function
connect($P,$V,$H){$f=parent::connect($P,$V,$H);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($Lg=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$Lg;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function
__construct(Db$f){parent::__construct($f);$this->types=array('Zahlen'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Datum und Zeit'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Zeichenketten'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Listen'=>array("enum"=>65535,"set"=>64),'Binär'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometrie'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types['Zeichenketten']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Zeichenketten']["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types['Zahlen']["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$f))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"<code class='jush-sql'>UNHEX</code>":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"<code class='jush-sql'>GeomFromText</code>":"")));}function
insert($R,array$Q){return($Q?parent::insert($R,$Q):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
insertUpdate($R,array$N,array$ig){$e=array_keys(reset($N));$gg="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Di=array();foreach($e
as$z)$Di[$z]="$z = VALUES($z)";$xh="\nON DUPLICATE KEY UPDATE ".implode(", ",$Di);$Di=array();$le=0;foreach($N
as$Q){$Y="(".implode(", ",$Q).")";if($Di&&(strlen($gg)+$le+strlen($Y)+strlen($xh)>1e6)){if(!queries($gg.implode(",\n",$Di).$xh))return
false;$Di=array();$le=0;}$Di[]=$Y;$le+=strlen($Y)+2;}return
queries($gg.implode(",\n",$Di).$xh);}function
slowQuery($J,$Qh){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Qh FOR $J";elseif(preg_match('~^(SELECT\b)(.+)~is',$J,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($Qh*1000).") */ $C[2]";}}function
convertSearch($v,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function
warnings(){$K=$this->conn->query("SHOW WARNINGS");if($K&&$K->num_rows){ob_start();print_select_result($K);return
ob_get_clean();}}function
tableHelp($E,$Vd=false){$se=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower("information-schema-".($se?"$E-table/":str_replace("_","-",$E)."-table.html"));if(DB=="mysql")return($se?"mysql$E-table/":"system-schema.html");}function
partitionsInfo($R){$Tc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$K=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Tc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$L=array();list($L["partition_by"],$L["partition"],$L["partitions"])=$K->fetch_row();$Qf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Tc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$L["partition_names"]=array_keys($Qf);$L["partition_values"]=array_values($Qf);return$L;}function
hasCStyleEscapes(){static$Ia;if($Ia===null){$nh=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Ia=(strpos($nh,'NO_BACKSLASH_ESCAPES')===false);}return$Ia;}function
engines(){$L=array();foreach(get_rows("SHOW ENGINES")as$M){if(preg_match("~YES|DEFAULT~",$M["Support"]))$L[]=$M["Engine"];}return$L;}function
indexAlgorithms(array$Ah){return(preg_match('~^(MEMORY|NDB)$~',$Ah["Engine"])?array("HASH","BTREE"):array());}}function
idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
table($v){return
idf_escape($v);}function
get_databases($Lc){$L=get_session("dbs");if($L===null){$J="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$L=($Lc?slow_query($J):get_vals($J));restart_session();set_session("dbs",$L);stop_session();}return$L;}function
limit($J,$Z,$_,$ff=0,$Xg=" "){return" $J$Z".($_?$Xg."LIMIT $_".($ff?" OFFSET $ff":""):"");}function
limit1($R,$J,$Z,$Xg="\n"){return
limit($J,$Z,1,0,$Xg);}function
db_collation($j,array$c){$L=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$C))$L=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$C))$L=$c[$C[1]][-1];return$L;}function
logged_user(){return
get_val("SELECT USER()");}function
tables_list(){return
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
count_tables(array$i){$L=array();foreach($i
as$j)$L[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$L;}function
table_status($E="",$Bc=false){$L=array();foreach(get_rows($Bc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($E!=""?"AND TABLE_NAME = ".q($E):"ORDER BY Name"):"SHOW TABLE STATUS".($E!=""?" LIKE ".q(addcslashes($E,"%_\\")):""))as$M){if($M["Engine"]=="InnoDB")$M["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$M["Comment"]);if(!isset($M["Engine"]))$M["Comment"]="";if($E!="")$M["Name"]=$E;$L[$M["Name"]]=$M;}return$L;}function
is_view(array$S){return$S["Engine"]===null;}function
fk_support(array$S){return
preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function
fields($R){$se=(connection()->flavor=='maria');$L=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$M){$m=$M["COLUMN_NAME"];$U=$M["COLUMN_TYPE"];$Xc=$M["GENERATION_EXPRESSION"];$zc=$M["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$zc,$Wc);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$ue);$k=$M["COLUMN_DEFAULT"];if($k!=""){$Ud=preg_match('~text|json~',$ue[1]);if(!$se&&$Ud)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($se||$Ud){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($C){return
stripslashes(str_replace("''","'",$C[1]));},$k));}if(!$se&&preg_match('~binary~',$ue[1])&&preg_match('~^0x(\w*)$~',$k,$C))$k=pack("H*",$C[1]);}$L[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$ue[1],"length"=>$ue[2],"unsigned"=>ltrim($ue[3].$ue[4]),"default"=>($Wc?($se?$Xc:stripslashes($Xc)):$k),"null"=>($M["IS_NULLABLE"]=="YES"),"auto_increment"=>($zc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$zc,$C)?$C[1]:""),"collation"=>$M["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$M[PRIVILEGES],where,order")),"comment"=>$M["COLUMN_COMMENT"],"primary"=>($M["COLUMN_KEY"]=="PRI"),"generated"=>($Wc[1]=="PERSISTENT"?"STORED":$Wc[1]),);}return$L;}function
indexes($R,$g=null){$L=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$M){$E=$M["Key_name"];$L[$E]["type"]=($E=="PRIMARY"?"PRIMARY":($M["Index_type"]=="FULLTEXT"?"FULLTEXT":($M["Non_unique"]?($M["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$L[$E]["columns"][]=$M["Column_name"];$L[$E]["lengths"][]=($M["Index_type"]=="SPATIAL"?null:$M["Sub_part"]);$L[$E]["descs"][]=null;$L[$E]["algorithm"]=$M["Index_type"];}return$L;}function
foreign_keys($R){static$Uf='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$L=array();$qb=get_val("SHOW CREATE TABLE ".table($R),1);if($qb){preg_match_all("~CONSTRAINT ($Uf) FOREIGN KEY ?\\(((?:$Uf,? ?)+)\\) REFERENCES ($Uf)(?:\\.($Uf))? \\(((?:$Uf,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$qb,$ve,PREG_SET_ORDER);foreach($ve
as$C){preg_match_all("~$Uf~",$C[2],$ih);preg_match_all("~$Uf~",$C[5],$Jh);$L[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('Adminer\idf_unescape',$ih[0]),"target"=>array_map('Adminer\idf_unescape',$Jh[0]),"on_delete"=>($C[6]?:"RESTRICT"),"on_update"=>($C[7]?:"RESTRICT"),);}}return$L;}function
view($E){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($E),1)));}function
collations(){$L=array();foreach(get_rows("SHOW COLLATION")as$M){if($M["Default"])$L[$M["Charset"]][-1]=$M["Collation"];else$L[$M["Charset"]][]=$M["Collation"];}ksort($L);foreach($L
as$z=>$X)sort($L[$z]);return$L;}function
information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function
error(){return
h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function
create_database($j,$Za){return
queries("CREATE DATABASE ".idf_escape($j).($Za?" COLLATE ".q($Za):""));}function
drop_databases(array$i){$L=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$L;}function
rename_database($E,$Za){$L=false;if(create_database($E,$Za)){$T=array();$Ii=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Ii[]=$R;else$T[]=$R;}$L=(!$T&&!$Ii)||move_tables($T,$Ii,$E);drop_databases($L?array(DB):array());}return$L;}function
auto_increment(){$va=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$va="";break;}if($w["type"]=="PRIMARY")$va=" UNIQUE";}}return" AUTO_INCREMENT$va";}function
alter_table($R,$E,array$n,array$Nc,$db,$gc,$Za,$ua,$G){$na=array();foreach($n
as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$na[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$na[]="DROP ".idf_escape($m[0]);}$na=array_merge($na,$Nc);$qh=($db!==null?" COMMENT=".q($db):"").($gc?" ENGINE=".q($gc):"").($Za?" COLLATE ".q($Za):"").($ua!=""?" AUTO_INCREMENT=$ua":"");if($G){$Qf=array();if($G["partition_by"]=='RANGE'||$G["partition_by"]=='LIST'){foreach($G["partition_names"]as$z=>$X){$Y=$G["partition_values"][$z];$Qf[]="\n  PARTITION ".idf_escape($X)." VALUES ".($G["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$qh
.="\nPARTITION BY $G[partition_by]($G[partition])";if($Qf)$qh
.=" (".implode(",",$Qf)."\n)";elseif($G["partitions"])$qh
.=" PARTITIONS ".(+$G["partitions"]);}elseif($G===null)$qh
.="\nREMOVE PARTITIONING";if($R=="")return
queries("CREATE TABLE ".table($E)." (\n".implode(",\n",$na)."\n)$qh");if($R!=$E)$na[]="RENAME TO ".table($E);if($qh)$na[]=ltrim($qh);return($na?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$na)):true);}function
alter_indexes($R,$na){$Ma=array();foreach($na
as$X)$Ma[]=($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
queries("ALTER TABLE ".table($R).implode(",",$Ma));}function
truncate_tables(array$T){return
apply_queries("TRUNCATE TABLE",$T);}function
drop_views(array$Ii){return
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Ii)));}function
drop_tables(array$T){return
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
move_tables(array$T,array$Ii,$Jh){$Bg=array();foreach($T
as$R)$Bg[]=table($R)." TO ".idf_escape($Jh).".".table($R);if(!$Bg||queries("RENAME TABLE ".implode(", ",$Bg))){$Ib=array();foreach($Ii
as$R)$Ib[table($R)]=view($R);connection()->select_db($Jh);$j=idf_escape(DB);foreach($Ib
as$E=>$Hi){if(!queries("CREATE VIEW $E AS ".str_replace(" $j."," ",$Hi["select"]))||!queries("DROP VIEW $j.$E"))return
false;}return
true;}return
false;}function
copy_tables(array$T,array$Ii,$Jh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$E=($Jh==DB?table("copy_$R"):idf_escape($Jh).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $E"))||!queries("CREATE TABLE $E LIKE ".table($R))||!queries("INSERT INTO $E SELECT * FROM ".table($R)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M){$fi=$M["Trigger"];if(!queries("CREATE TRIGGER ".($Jh==DB?idf_escape("copy_$fi"):idf_escape($Jh).".".idf_escape($fi))." $M[Timing] $M[Event] ON $E FOR EACH ROW\n$M[Statement];"))return
false;}}foreach($Ii
as$R){$E=($Jh==DB?table("copy_$R"):idf_escape($Jh).".".table($R));$Hi=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $E"))||!queries("CREATE VIEW $E AS $Hi[select]"))return
false;}return
true;}function
trigger($E,$R){if($E=="")return
array();$N=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($E));return
reset($N);}function
triggers($R){$L=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M)$L[$M["Trigger"]]=array($M["Timing"],$M["Event"]);return$L;}function
trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
routine($E,$U){$n=get_rows("SELECT
	PARAMETER_NAME field,
	DATA_TYPE type,
	CHARACTER_MAXIMUM_LENGTH length,
	REGEXP_REPLACE(DTD_IDENTIFIER, '^[^ ]+ ', '') `unsigned`,
	1 `null`,
	DTD_IDENTIFIER full_type,
	PARAMETER_MODE `inout`,
	CHARACTER_SET_NAME collation
FROM information_schema.PARAMETERS
WHERE SPECIFIC_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND SPECIFIC_NAME = ".q($E)."
ORDER BY ORDINAL_POSITION");$L=connection()->query("SELECT ROUTINE_COMMENT comment, ROUTINE_DEFINITION definition, 'SQL' language
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_TYPE = '$U' AND ROUTINE_NAME = ".q($E))->fetch_assoc();if($n&&$n[0]['field']=='')$L['returns']=array_shift($n);$L['fields']=$n;return$L;}function
routines(){return
get_rows("SELECT SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
routine_languages(){return
array();}function
routine_id($E,array$M){return
idf_escape($E);}function
last_id($K){return
get_val("SELECT LAST_INSERT_ID()");}function
explain(Db$f,$J){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$J);}function
found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
create_sql($R,$ua,$vh){$L=get_val("SHOW CREATE TABLE ".table($R),1);if(!$ua)$L=preg_replace('~ AUTO_INCREMENT=\d+~','',$L);return$L;}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
use_sql($_b,$vh=""){$E=idf_escape($_b);$L="";if(preg_match('~CREATE~',$vh)&&($h=get_val("SHOW CREATE DATABASE $E",1))){set_utf8mb4($h);if($vh=="DROP+CREATE")$L="DROP DATABASE IF EXISTS $E;\n";$L
.="$h;\n";}return$L."USE $E";}function
trigger_sql($R){$L="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$M)$L
.="\nCREATE TRIGGER ".idf_escape($M["Trigger"])." $M[Timing] $M[Event] ON ".table($M["Table"])." FOR EACH ROW\n$M[Statement];;\n";return$L;}function
show_variables(){return
get_rows("SHOW VARIABLES");}function
show_status(){return
get_rows("SHOW STATUS");}function
process_list(){return
get_rows("SHOW FULL PROCESSLIST");}function
convert_field(array$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function
unconvert_field(array$m,$L){if(preg_match("~binary~",$m["type"]))$L="UNHEX($L)";if($m["type"]=="bit")$L="CONVERT(b$L, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$gg=(min_version(8)?"ST_":"");$L=$gg."GeomFromText($L, $gg"."SRID($m[field]))";}return$L;}function
support($Cc){return
preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Cc);}function
kill_process($u){return
queries("KILL ".number($u));}function
connection_id(){return"SELECT CONNECTION_ID()";}function
max_connections(){return
get_val("SELECT @@max_connections");}function
types(){return
array();}function
type_values($u){return"";}function
schemas(){return
array();}function
get_schema(){return"";}function
set_schema($Ng,$g=null){return
true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function
page_header($Sh,$l="",$Ga=array(),$Th=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Uh=$Sh.($Th!=""?": $Th":"");$Vh=strip_tags($Uh.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
<html lang="de" dir="ltr">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>',$Vh,'</title>
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.4.2"),'">
';$ub=adminer()->css();if(is_int(key($ub)))$ub=array_fill_keys($ub,'light');$id=in_array('light',$ub)||in_array('',$ub);$gd=in_array('dark',$ub)||in_array('',$ub);$xb=($id?($gd?null:false):($gd?:null));$Ee=" media='(prefers-color-scheme: dark)'";if($xb!==false)echo"<link rel='stylesheet'".($xb?"":$Ee)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.4.2")."'>\n";echo"<meta name='color-scheme' content='".($xb===null?"light dark":($xb?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.4.2");if(adminer()->head($xb))echo"<link rel='icon' href='data:image/gif;base64,R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.4.2")."'>\n";foreach($ub
as$wi=>$Oe){$b=($Oe=='dark'&&!$xb?$Ee:($Oe=='light'&&$gd?" media='(prefers-color-scheme: light)'":""));echo"<link rel='stylesheet'$b href='".h($wi)."'>\n";}echo"\n<body class='".'ltr'." nojs";adminer()->bodyClass();echo"'>\n";$o=get_temp_dir()."/adminer.version";echo
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."')")."});
document.body.classList.replace('nojs', 'js');
const offlineMessage = '".js_escape('Sie sind offline.')."';
const thousandsSeparator = '".js_escape(' ')."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n","<span id='menuopen' class='jsonly'>".icon("move","","menu","")."</span>".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ga!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($A?:".").'">'.get_driver(DRIVER).'</a> » ';$A=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$P=adminer()->serverName(SERVER);$P=($P!=""?$P:'Server');if($Ga===false)echo"$P\n";else{echo"<a href='".h($A)."' accesskey='1' title='Alt+Shift+1'>$P</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ga)))echo'<a href="'.h($A."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ga)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ga
as$z=>$X){$Kb=(is_array($X)?$X[1]:h($X));if($Kb!="")echo"<a href='".h(ME."$z=").urlencode(is_array($X)?$X[0]:$X)."'>$Kb</a> » ";}}echo"$Sh\n";}}echo"<h2>$Uh</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$tb){$jd=array();foreach($tb
as$z=>$X)$jd[]="$z $X";header("Content-Security-Policy: ".implode("; ",$jd));}adminer()->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://www.adminer.org","frame-src"=>"'none'","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$af;if(!$af)$af=base64_encode(rand_string());return$af;}function
page_messages($l){$vi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ke=idx($_SESSION["messages"],$vi);if($Ke){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Ke)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$vi]);}if($l)echo"<div class='error'>$l</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
page_footer($Ne=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($Ne);echo"</div>\n";if($Ne!="auth")echo'<form action="" method="post">
<p class="logout">
<span>',h($_GET["username"])."\n",'</span>
<input type="submit" name="logout" value="Abmelden" id="logout">
',input_token(),'</form>
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
int32($Se){while($Se>=2147483648)$Se-=4294967296;while($Se<=-2147483649)$Se+=4294967296;return(int)$Se;}function
long2str(array$W,$Ki){$Lg='';foreach($W
as$X)$Lg
.=pack('V',$X);if($Ki)return
substr($Lg,0,end($W));return$Lg;}function
str2long($Lg,$Ki){$W=array_values(unpack('V*',str_pad($Lg,4*ceil(strlen($Lg)/4),"\0")));if($Ki)$W[]=strlen($Lg);return$W;}function
xxtea_mx($Ri,$Qi,$yh,$Yd){return
int32((($Ri>>5&0x7FFFFFF)^$Qi<<2)+(($Qi>>3&0x1FFFFFFF)^$Ri<<4))^int32(($yh^$Qi)+($Yd^$Ri));}function
encrypt_string($sh,$z){if($sh=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($sh,true);$Se=count($W)-1;$Ri=$W[$Se];$Qi=$W[0];$I=floor(6+52/($Se+1));$yh=0;while($I-->0){$yh=int32($yh+0x9E3779B9);$Xb=$yh>>2&3;for($Gf=0;$Gf<$Se;$Gf++){$Qi=$W[$Gf+1];$Re=xxtea_mx($Ri,$Qi,$yh,$z[$Gf&3^$Xb]);$Ri=int32($W[$Gf]+$Re);$W[$Gf]=$Ri;}$Qi=$W[0];$Re=xxtea_mx($Ri,$Qi,$yh,$z[$Gf&3^$Xb]);$Ri=int32($W[$Se]+$Re);$W[$Se]=$Ri;}return
long2str($W,false);}function
decrypt_string($sh,$z){if($sh=="")return"";if(!$z)return
false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($sh,false);$Se=count($W)-1;$Ri=$W[$Se];$Qi=$W[0];$I=floor(6+52/($Se+1));$yh=int32($I*0x9E3779B9);while($yh){$Xb=$yh>>2&3;for($Gf=$Se;$Gf>0;$Gf--){$Ri=$W[$Gf-1];$Re=xxtea_mx($Ri,$Qi,$yh,$z[$Gf&3^$Xb]);$Qi=int32($W[$Gf]-$Re);$W[$Gf]=$Qi;}$Ri=$W[$Se];$Re=xxtea_mx($Ri,$Qi,$yh,$z[$Gf&3^$Xb]);$Qi=int32($W[0]-$Re);$W[0]=$Qi;$yh=int32($yh-0x9E3779B9);}return
long2str($W,true);}$Wf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$Wf[$z]=$X;}}function
add_invalid_login(){$_a=get_temp_dir()."/adminer.invalid";foreach(glob("$_a*")?:array($_a)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$_a-".rand_string());if(!$q)return;$Pd=unserialize(stream_get_contents($q));$Ph=time();if($Pd){foreach($Pd
as$Qd=>$X){if($X[0]<$Ph)unset($Pd[$Qd]);}}$Od=&$Pd[adminer()->bruteForceKey()];if(!$Od)$Od=array($Ph+30*60,0);$Od[1]++;file_write_unlock($q,serialize($Pd));}function
check_invalid_login(array&$Wf){$Pd=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$Pd=unserialize(stream_get_contents($q));file_unlock($q);break;}}$Od=idx($Pd,adminer()->bruteForceKey(),array());$Ze=($Od[1]>29?$Od[0]-time():0);if($Ze>0)auth_error(lang_format(array('Zu viele erfolglose Login-Versuche. Bitte probieren Sie es in %d Minute noch einmal.','Zu viele erfolglose Login-Versuche. Bitte probieren Sie es in %d Minuten noch einmal.'),ceil($Ze/60)),$Wf);}$ta=$_POST["auth"];if($ta){session_regenerate_id();$Fi=$ta["driver"];$P=$ta["server"];$V=$ta["username"];$H=(string)$ta["password"];$j=$ta["db"];set_password($Fi,$P,$V,$H);$_SESSION["db"][$Fi][$P][$V][$j]=true;if($ta["permanent"]){$z=implode("-",array_map('base64_encode',array($Fi,$P,$V,$j)));$kg=adminer()->permanentLogin(true);$Wf[$z]="$z:".base64_encode($kg?encrypt_string($H,$kg):"");cookie("adminer_permanent",implode(" ",$Wf));}if(count($_POST)==1||DRIVER!=$Fi||SERVER!=$P||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Fi,$P,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent($Wf);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Abmeldung erfolgreich.'.' '.'Danke, dass Sie Adminer genutzt haben. <a href="https://www.adminer.org/de/donation/">Spenden willkommen!</a>.');}elseif($Wf&&!$_SESSION["pwds"]){session_regenerate_id();$kg=adminer()->permanentLogin();foreach($Wf
as$z=>$X){list(,$Ta)=explode(":",$X);list($Fi,$P,$V,$j)=array_map('base64_decode',explode("-",$z));set_password($Fi,$P,$V,decrypt_string(base64_decode($Ta),$kg));$_SESSION["db"][$Fi][$P][$V][$j]=true;}}function
unset_permanent(array&$Wf){foreach($Wf
as$z=>$X){list($Fi,$P,$V,$j)=array_map('base64_decode',explode("-",$z));if($Fi==DRIVER&&$P==SERVER&&$V==$_GET["username"]&&$j==DB)unset($Wf[$z]);}cookie("adminer_permanent",implode(" ",$Wf));}function
auth_error($l,array&$Wf){$ah=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$ah]||$_GET[$ah])&&!$_SESSION["token"])$l='Sitzungsdauer abgelaufen, bitte erneut anmelden.';else{restart_session();add_invalid_login();$H=get_password();if($H!==null){if($H===false)$l
.=($l?'<br>':'').sprintf('Das Master-Passwort ist abgelaufen. <a href="https://www.adminer.org/de/extension/"%s>Implementieren</a> Sie die %s Methode, um es permanent zu machen.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Wf);}}if(!$_COOKIE[$ah]&&$_GET[$ah]&&ini_bool("session.use_only_cookies"))$l='Unterstüzung für PHP-Sessions muss aktiviert sein.';$Jf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Jf["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Login',$l,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'Die Aktion wird nach erfolgreicher Anmeldung mit denselben Anmeldedaten ausgeführt.'."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Wf);page_header('Keine Erweiterungen installiert',sprintf('Keine der unterstützten PHP-Erweiterungen (%s) ist vorhanden.',implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list(,$ag)=host_port(SERVER);if(preg_match('~^\s*([-+]?\d+)~',$ag,$C)&&($C[1]<1024||$C[1]>65535))auth_error('Die Verbindung zu privilegierten Ports ist nicht erlaubt.',$Wf);check_invalid_login($Wf);$sb=adminer()->credentials();$f=Driver::connect($sb[0],$sb[1],$sb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$qe=null;if(!is_object($f)||($qe=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($qe)?$qe:'Ungültige Anmelde-Informationen.')).(preg_match('~^ | $~',get_password())?'<br>'.'Es gibt ein Leerzeichen im Eingabepasswort, das die Ursache sein könnte.':'');auth_error($l,$Wf);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Abmelden','CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($ta&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$Hd="max_input_vars";$Ce=ini_get($Hd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Ce||$X<$Ce)){$Hd=$z;$Ce=$X;}}}$l=(!$_POST["token"]&&$Ce?sprintf('Die maximal erlaubte Anzahl der Felder ist überschritten. Bitte %s erhöhen.',"'$Hd'"):'CSRF Token ungültig. Bitte die Formulardaten erneut abschicken.'.' '.'Wenn Sie diese Anfrage nicht von Adminer gesendet haben, schließen Sie diese Seite.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=sprintf('POST-Daten sind zu groß. Reduzieren Sie die Größe oder vergrößern Sie den Wert %s in der Konfiguration.',"'post_max_size'");if(isset($_GET["sql"]))$l
.=' '.'Sie können eine große SQL-Datei per FTP hochladen und dann vom Server importieren.';}function
print_select_result($K,$g=null,array$yf=array(),$_=0){$pe=array();$x=array();$e=array();$Ea=array();$ki=array();$L=array();for($t=0;(!$_||$t<$_)&&($M=$K->fetch_row());$t++){if(!$t){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($y=0;$y<count($M);$y++){$m=$K->fetch_field();$E=$m->name;$xf=(isset($m->orgtable)?$m->orgtable:"");$wf=(isset($m->orgname)?$m->orgname:$E);if($yf&&JUSH=="sql")$pe[$y]=($E=="table"?"table=":($E=="possible_keys"?"indexes=":null));elseif($xf!=""){if(isset($m->table))$L[$m->table]=$xf;if(!isset($x[$xf])){$x[$xf]=array();foreach(indexes($xf,$g)as$w){if($w["type"]=="PRIMARY"){$x[$xf]=array_flip($w["columns"]);break;}}$e[$xf]=$x[$xf];}if(isset($e[$xf][$wf])){unset($e[$xf][$wf]);$x[$xf][$wf]=$y;$pe[$y]=$xf;}}if($m->charsetnr==63)$Ea[$y]=true;$ki[$y]=$m->type;echo"<th".($xf!=""||$m->name!=$wf?" title='".h(($xf!=""?"$xf.":"").$wf)."'":"").">".h($E).($yf?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($E),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($M
as$z=>$X){$A="";if(isset($pe[$z])&&!$e[$pe[$z]]){if($yf&&JUSH=="sql"){$R=$M[array_search("table=",$pe)];$A=ME.$pe[$z].urlencode($yf[$R]!=""?$yf[$R]:$R);}else{$A=ME."edit=".urlencode($pe[$z]);foreach($x[$pe[$z]]as$Xa=>$y){if($M[$y]===null){$A="";break;}$A
.="&where".urlencode("[".bracket_escape($Xa)."]")."=".urlencode($M[$y]);}}}$m=array('type'=>($Ea[$z]?'blob':($ki[$z]==254?'char':'')),);$X=select_value($X,$A,$m,null);echo"<td".($ki[$z]<=9||$ki[$z]==246?" class='number'":"").">$X";}}echo($t?"</table>\n</div>":"<p class='message'>".'Keine Datensätze.')."\n";return$L;}function
referencable_primary($Vg){$L=array();foreach(table_status('',true)as$Bh=>$R){if($Bh!=$Vg&&fk_support($R)){foreach(fields($Bh)as$m){if($m["primary"]){if($L[$Bh]){unset($L[$Bh]);break;}$L[$Bh]=$m;}}}}return$L;}function
textarea($E,$Y,$N=10,$ab=80){echo"<textarea name='".h($E)."' rows='$N' cols='$ab' class='sqlarea jush-".JUSH."' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
as$X)echo
h($X[0])."\n\n\n";}else
echo
h($Y);echo"</textarea>";}function
select_input($b,array$sf,$Y="",$nf="",$Xf=""){$Ih=($sf?"select":"input");return"<$Ih$b".($sf?"><option value=''>$Xf".optionlist($sf,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$Xf'>").($nf?script("qsl('$Ih').onchange = $nf;",""):"");}function
json_row($z,$X=null,$oc=true){static$Ic=true;if($Ic)echo"{";if($z!=""){echo($Ic?"":",")."\n\t\"".addcslashes($z,"\r\n\t\"\\/").'": '.($X!==null?($oc?'"'.addcslashes($X,"\r\n\"\\/").'"':$X):'null');$Ic=false;}else{echo"\n}\n";$Ic=true;}}function
edit_type($z,array$m,array$c,array$Pc=array(),array$_c=array()){$U=$m["type"];echo"<td><select name='".h($z)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,driver()->types())&&!isset($Pc[$U])&&!in_array($U,$_c))$_c[]=$U;$uh=driver()->structuredTypes();if($Pc)$uh['Fremdschlüssel']=$Pc;echo
optionlist(array_merge($_c,$uh),$U),"</select><td>","<input name='".h($z)."[length]' value='".h($m["length"])."' size='3'".(!$m["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($c?"<input list='collations' name='".h($z)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($m["collation"])."' placeholder='(".'Kollation'.")'>":''),(driver()->unsigned?"<select name='".h($z)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist(driver()->unsigned,$m["unsigned"]).'</select>':''),(isset($m['on_update'])?"<select name='".h($z)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"CURRENT_TIMESTAMP":$m["on_update"])).'</select>':''),($Pc?"<select name='".h($z)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",driver()->onActions),$m["on_delete"])."</select> ":" ");}function
process_length($le){$jc=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$jc(?:\\s*,\\s*$jc)*+\\s*\\)?\\s*\$~",$le)&&preg_match_all("~$jc~",$le,$ve)?"(".implode(",",$ve[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$le)));}function
process_type(array$m,$Ya="COLLATE"){return" $m[type]".process_length($m["length"]).(preg_match(number_type(),$m["type"])&&in_array($m["unsigned"],driver()->unsigned)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $Ya ".(JUSH=="mssql"?$m["collation"]:q($m["collation"])):"");}function
process_field(array$m,array$ji){if($m["on_update"])$m["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$m["on_update"]);return
array(idf_escape(trim($m["field"])),process_type($ji),($m["null"]?" NULL":" NOT NULL"),default_value($m),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(support("comment")&&$m["comment"]!=""?" COMMENT ".q($m["comment"]):""),($m["auto_increment"]?auto_increment():null),);}function
default_value(array$m){if($m["default"]===null)return"";$k=str_replace("\r","",$m["default"]);$Wc=$m["generated"];return(in_array($Wc,driver()->generated)?(JUSH=="mssql"?" AS ($k)".($Wc=="VIRTUAL"?"":" $Wc"):" GENERATED ALWAYS AS ($k) $Wc"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$k)&&(preg_match('~char|binary|text|json|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$k))?(JUSH=="sql"&&preg_match('~text|json~',$m["type"])?"(".q($k).")":q($k)):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",(JUSH=="sqlite"?"($k)":$k))));}function
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
edit_fields(array$n,array$c,$U="TABLE",array$Pc=array()){$n=array_values($n);$Fb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$eb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo"<thead><tr>\n",($U=="PROCEDURE"?"<td>":""),"<th id='label-name'>".($U=="TABLE"?'Spaltenname':'Name des Parameters'),"<td id='label-type'>".'Typ'."<textarea id='enum-edit' rows='4' cols='12' wrap='off' style='display: none;'></textarea>".script("qs('#enum-edit').onblur = editingLengthBlur;"),"<td id='label-length'>".'Länge',"<td>".'Optionen';if($U=="TABLE")echo"<td id='label-null'>NULL\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='".'Auto-Inkrement'."'>AI</abbr>",doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",)),"<td id='label-default'$Fb>".'Vorgabewert festlegen',(support("comment")?"<td id='label-comment'$eb>".'Kommentar':"");echo"<td>".icon("plus","add[".(support("move_col")?0:count($n))."]","+",'Hinzufügen'),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($n
as$t=>$m){$t++;$zf=$m[($_POST?"orig":"field")];$Pb=(isset($_POST["add"][$t-1])||(isset($m["field"])&&!idx($_POST["drop_col"],$t)))&&(support("drop_col")||$zf=="");echo"<tr".($Pb?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$t][inout]",explode("|",driver()->inout),$m["inout"]):"")."<th>";if($Pb)echo"<input name='fields[$t][field]' value='".h($m["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'".(isset($_POST["add"][$t-1])?" autofocus":"").">";echo
input_hidden("fields[$t][orig]",$zf);edit_type("fields[$t]",$m,$c,$Pc);if($U=="TABLE"){echo"<td>".checkbox("fields[$t][null]",1,$m["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$t'".($m["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Fb>".(driver()->generated?html_select("fields[$t][generated]",array_merge(array("","DEFAULT"),driver()->generated),$m["generated"])." ":checkbox("fields[$t][generated]",1,$m["generated"],"","","","label-default"));$b=" name='fields[$t][default]' aria-labelledby='label-default'";$Y=h($m["default"]);echo(preg_match('~\n~',$m["default"])?"<textarea$b rows='2' cols='30' style='vertical-align: bottom;'>\n$Y</textarea>":"<input$b value='$Y'>"),(support("comment")?"<td$eb><input name='fields[$t][comment]' value='".h($m["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");}echo"<td>",(support("move_col")?icon("plus","add[$t]","+",'Hinzufügen')." ".icon("up","up[$t]","↑",'Nach oben')." ".icon("down","down[$t]","↓",'Nach unten')." ":""),($zf==""||support("drop_col")?icon("cross","drop_col[$t]","x",'Entfernen'):"");}}function
process_fields(array&$n){$ff=0;if($_POST["up"]){$fe=0;foreach($n
as$z=>$m){if(key($_POST["up"])==$z){unset($n[$z]);array_splice($n,$fe,0,array($m));break;}if(isset($m["field"]))$fe=$ff;$ff++;}}elseif($_POST["down"]){$Rc=false;foreach($n
as$z=>$m){if(isset($m["field"])&&$Rc){unset($n[key($_POST["down"])]);array_splice($n,$ff,0,array($Rc));break;}if(key($_POST["down"])==$z)$Rc=$m;$ff++;}}elseif($_POST["add"]){$n=array_values($n);array_splice($n,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum(array$C){$X=$C[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
grant($Yc,array$mg,$e,$lf){if(!$mg)return
true;if($mg==array("ALL PRIVILEGES","GRANT OPTION"))return($Yc=="GRANT"?queries("$Yc ALL PRIVILEGES$lf WITH GRANT OPTION"):queries("$Yc ALL PRIVILEGES$lf")&&queries("$Yc GRANT OPTION$lf"));return
queries("$Yc ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$mg).$e).$lf);}function
drop_create($Tb,$h,$Ub,$Mh,$Vb,$B,$Je,$He,$Ie,$if,$We){if($_POST["drop"])query_redirect($Tb,$B,$Je);elseif($if=="")query_redirect($h,$B,$Ie);elseif($if!=$We){$rb=queries($h);queries_redirect($B,$He,$rb&&queries($Tb));if($rb)queries($Ub);}else
queries_redirect($B,$He,queries($Mh)&&queries($Vb)&&queries($Tb)&&queries($h));}function
create_trigger($lf,array$M){$Rh=" $M[Timing] $M[Event]".(preg_match('~ OF~',$M["Event"])?" $M[Of]":"");return"CREATE TRIGGER ".idf_escape($M["Trigger"]).(JUSH=="mssql"?$lf.$Rh:$Rh.$lf).rtrim(" $M[Type]\n$M[Statement]",";").";";}function
create_routine($Ig,array$M){$Q=array();$n=(array)$M["fields"];ksort($n);foreach($n
as$m){if($m["field"]!="")$Q[]=(preg_match("~^(".driver()->inout.")\$~",$m["inout"])?"$m[inout] ":"").idf_escape($m["field"]).process_type($m,"CHARACTER SET");}$Hb=rtrim($M["definition"],";");return"CREATE $Ig ".idf_escape(trim($M["name"]))." (".implode(", ",$Q).")".($Ig=="FUNCTION"?" RETURNS".process_type($M["returns"],"CHARACTER SET"):"").($M["language"]?" LANGUAGE $M[language]":"").(JUSH=="pgsql"?" AS ".q($Hb):"\n$Hb;");}function
remove_definer($J){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$J);}function
format_foreign_key(array$p){$j=$p["db"];$bf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($bf!=""&&$bf!=$_GET["ns"]?idf_escape($bf).".":"").idf_escape($p["table"])." (".implode(", ",array_map('Adminer\idf_escape',$p["target"])).")".(preg_match("~^(".driver()->onActions.")\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^(".driver()->onActions.")\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"").($p["deferrable"]?" $p[deferrable]":"");}function
tar_file($o,$Wh){$L=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($Wh->size),decoct(time()));$Sa=8*32;for($t=0;$t<strlen($L);$t++)$Sa+=ord($L[$t]);$L
.=sprintf("%06o",$Sa)."\0 ";echo$L,str_repeat("\0",512-strlen($L));$Wh->send();echo
str_repeat("\0",511-($Wh->size+511)%512);}function
doc_link(array$Tf,$Nh="<sup>?</sup>"){$Yg=connection()->server_info;$Gi=preg_replace('~^(\d\.?\d).*~s','\1',$Yg);$xi=array('sql'=>"https://dev.mysql.com/doc/refman/$Gi/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$Gi)."/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$Yg)."&id=",);if(connection()->flavor=='maria'){$xi['sql']="https://mariadb.com/kb/en/";$Tf['sql']=(isset($Tf['mariadb'])?$Tf['mariadb']:str_replace(".html","/",$Tf['sql']));}return($Tf[JUSH]?"<a href='".h($xi[JUSH].$Tf[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$Gi":""))."'".target_blank().">$Nh</a>":"");}function
db_size($j){if(!connection()->select_db($j))return"?";$L=0;foreach(table_status()as$S)$L+=$S["Data_length"]+$S["Index_length"];return
format_number($L);}function
set_utf8mb4($h){static$Q=false;if(!$Q&&preg_match('~\butf8mb4~i',$h)){$Q=true;echo"SET NAMES ".charset(connection()).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?connection()->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);}if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Datenbank'.": ".h(DB),'Datenbank ungültig.',true);}else{if($_POST["db"]&&!$l)queries_redirect(substr(ME,0,-1),'Datenbanken wurden entfernt.',drop_databases($_POST["db"]));page_header('Datenbank auswählen',$l,false);echo"<p class='links'>\n";foreach(array('database'=>'Datenbank erstellen','privileges'=>'Rechte','processlist'=>'Prozessliste','variables'=>'Variablen','status'=>'Status',)as$z=>$X){if(support($z))echo"<a href='".h(ME)."$z='>$X</a>\n";}echo"<p>".sprintf('Version %s: %s mit PHP-Erweiterung %s',get_driver(DRIVER),"<b>".h(connection()->server_info)."</b>","<b>".connection()->extension."</b>")."\n","<p>".sprintf('Angemeldet als: %s',"<b>".h(logged_user())."</b>")."\n";$i=adminer()->databases();if($i){$Og=support("scheme");$c=collations();echo"<form action='' method='post'>\n","<table class='checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"<thead><tr>".(support("database")?"<td>":"")."<th>".'Datenbank'.(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".'Aktualisieren'."</a>":"")."<td>".'Kollation'."<td>".'Tabellen'."<td>".'Größe'." - <a href='".h(ME)."dbsize=1'>".'kalkulieren'."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i
as$j=>$T){$Hg=h(ME)."db=".urlencode($j);$u=h("Db-".$j);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$u):""),"<th><a href='$Hg' id='$u'>".h($j)."</a>";$Za=h(db_collation($j,$c));echo"<td>".(support("database")?"<a href='$Hg".($Og?"&amp;ns=":"")."&amp;database=' title='".'Datenbank ändern'."'>$Za</a>":$Za),"<td align='right'><a href='$Hg&amp;schema=' id='tables-".h($j)."' title='".'Datenbankschema'."'>".($_GET["dbsize"]?$T:"?")."</a>","<td align='right' id='size-".h($j)."'>".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".'Ausgewählte'." <span id='selected'></span></legend><div>\n".input_hidden("all").script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".'Entfernen'."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),input_token(),"</form>\n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"<div class='plugins'>\n","<h3>".'Geladene Plugins'."</h3>\n<ul>\n";foreach(adminer()->plugins
as$Yf){$Lb=(method_exists($Yf,'description')?$Yf->description():"");if(!$Lb){$zg=new
\ReflectionObject($Yf);if(preg_match('~^/[\s*]+(.+)~',$zg->getDocComment(),$C))$Lb=$C[1];}$Pg=(method_exists($Yf,'screenshot')?$Yf->screenshot():"");echo"<li><b>".get_class($Yf)."</b>".h($Lb?": $Lb":"").($Pg?" (<a href='".h($Pg)."'".target_blank().">".'Screenshot'."</a>)":"")."\n";}echo"</ul>\n";adminer()->pluginsLinks();echo"</div>\n";}}page_footer("db");exit;}adminer()->afterConnect();class
TmpFile{private$handler;var$size;function
__construct(){$this->handler=tmpfile();}function
write($lb){$this->size+=strlen($lb);fwrite($this->handler,$lb);}function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}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"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$O=array(idf_escape($_GET["field"]));$K=driver()->select($a,$O,array(where($_GET,$n)),$O);$M=($K?$K->fetch_row():array());echo
driver()->value($M[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:'Keine Tabellen.';$S=table_status1($a);$E=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Strukturierte Ansicht':'View':'Tabelle').": ".($E!=""?$E:h($a)),$l);$Gg=array();foreach($n
as$z=>$m)$Gg+=$m["privileges"];adminer()->selectLinks($S,(isset($Gg["insert"])||!support("table")?"":null));$db=$S["Comment"];if($db!="")echo"<p class='nowrap'>".'Kommentar'.": ".h($db)."\n";if($n)adminer()->tableStructurePrint($n,$S);function
tables_links(array$T){echo"<ul>\n";foreach($T
as$M){$A=preg_replace('~ns=[^&]*~',"ns=".urlencode($M["ns"]),ME);echo"<li><a href='".h($A."table=".urlencode($M["table"]))."'>".($M["ns"]!=$_GET["ns"]?"<b>".h($M["ns"])."</b>.":"").h($M["table"])."</a>";}echo"</ul>\n";}$Gd=driver()->inheritsFrom($a);if($Gd){echo"<h3>".'Inherits from'."</h3>\n";tables_links($Gd);}if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".'Indizes'."</h3>\n";$x=indexes($a);if($x)adminer()->tableIndexesPrint($x,$S);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Indizes ändern'."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".'Fremdschlüssel'."</h3>\n";$Pc=foreign_keys($a);if($Pc){echo"<table>\n","<thead><tr><th>".'Ursprung'."<td>".'Ziel'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td></thead>\n";foreach($Pc
as$E=>$p){echo"<tr title='".h($E)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$p["source"]))."</i>";$A=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME));echo"<td><a href='".h($A."table=".urlencode($p["table"]))."'>".($p["db"]!=""&&$p["db"]!=DB?"<b>".h($p["db"])."</b>.":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"<b>".h($p["ns"])."</b>.":"").h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$p["target"]))."</i>)","<td>".h($p["on_delete"]),"<td>".h($p["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($E)).'">'.'Ändern'.'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Fremdschlüssel hinzufügen'."</a>\n";}if(support("check")){echo"<h3 id='checks'>".'Checks'."</h3>\n";$Pa=driver()->checkConstraints($a);if($Pa){echo"<table>\n";foreach($Pa
as$z=>$X)echo"<tr title='".h($z)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($z))."'>".'Ändern'."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.'Check erstellen'."</a>\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Trigger'."</h3>\n";$hi=triggers($a);if($hi){echo"<table>\n";foreach($hi
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))."'>".'Ändern'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Trigger hinzufügen'."</a>\n";}$Fd=driver()->inheritedTables($a);if($Fd){echo"<h3 id='partitions'>".'Inherited by'."</h3>\n";$Mf=driver()->partitionsInfo($a);if($Mf)echo"<p><code class='jush-".JUSH."'>BY ".h("$Mf[partition_by]($Mf[partition])")."</code>\n";tables_links($Fd);}}elseif(isset($_GET["schema"])){page_header('Datenbankschema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Ch=array();$Dh=array();$ca=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ca,$ve,PREG_SET_ORDER);foreach($ve
as$t=>$C){$Ch[$C[1]]=array($C[2],$C[3]);$Dh[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$Zh=0;$Aa=-1;$Ng=array();$yg=array();$je=array();$ma=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$bg=0;$Ng[$R]["fields"]=array();foreach($ma[$R]as$m){$bg+=1.25;$m["pos"]=$bg;$Ng[$R]["fields"][$m["field"]]=$m;}$Ng[$R]["pos"]=($Ch[$R]?:array($Zh,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$he=$Aa;if(idx($Ch[$R],1)||idx($Ch[$X["table"]],1))$he=min(idx($Ch[$R],1,0),idx($Ch[$X["table"]],1,0))-1;else$Aa-=.1;while($je[(string)$he])$he-=.0001;$Ng[$R]["references"][$X["table"]][(string)$he]=array($X["source"],$X["target"]);$yg[$X["table"]][$R][(string)$he]=$X["target"];$je[(string)$he]=true;}}$Zh=max($Zh,$Ng[$R]["pos"][0]+2.5+$bg);}echo'<div id="schema" style="height: ',$Zh,'em;">
<script',nonce(),'>
qs(\'#schema\').onselectstart = () => false;
const tablePos = {',implode(",",$Dh)."\n",'};
const em = qs(\'#schema\').offsetHeight / ',$Zh,';
document.onmousemove = schemaMousemove;
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
</script>
';foreach($Ng
as$E=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($E).'"><b>'.h($E)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X='<span'.type_class($m["type"]).' title="'.h($m["type"].($m["length"]?"($m[length])":"").($m["null"]?" NULL":'')).'">'.h($m["field"]).'</span>';echo"<br>".($m["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$Kh=>$_g){foreach($_g
as$he=>$vg){$ie=$he-idx($Ch[$E],1);$t=0;foreach($vg[0]as$ih)echo"\n<div class='references' title='".h($Kh)."' id='refs$he-".($t++)."' style='left: $ie"."em; top: ".$R["fields"][$ih]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$ie)."em;'></div></div>";}}foreach((array)$yg[$E]as$Kh=>$_g){foreach($_g
as$he=>$e){$ie=$he-idx($Ch[$E],1);$t=0;foreach($e
as$Jh)echo"\n<div class='references arrow' title='".h($Kh)."' id='refd$he-".($t++)."' style='left: $ie"."em; top: ".$R["fields"][$Jh]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$ie)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($Ng
as$E=>$R){foreach((array)$R["references"]as$Kh=>$_g){foreach($_g
as$he=>$vg){$Me=$Zh;$Ae=-10;foreach($vg[0]as$z=>$ih){$cg=$R["pos"][0]+$R["fields"][$ih]["pos"];$dg=$Ng[$Kh]["pos"][0]+$Ng[$Kh]["fields"][$vg[1][$z]]["pos"];$Me=min($Me,$cg,$dg);$Ae=max($Ae,$cg,$dg);}echo"<div class='references' id='refl$he' style='left: $he"."em; top: $Me"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($Ae-$Me)."em;'></div></div>\n";}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($ca)),'" id="schema-link">Dauerhafter Link</a>
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$l){save_settings(array_intersect_key($_POST,array_flip(array("output","format","db_style","types","routines","events","table_style","auto_increment","triggers","data_style"))),"adminer_export");$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$wc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$Td=preg_match('~sql~',$_POST["format"]);if($Td){echo"-- Adminer ".VERSION." ".get_driver(DRIVER)." ".str_replace("\n"," ",connection()->server_info)." dump\n\n";if(JUSH=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
":"")."
";connection()->query("SET time_zone = '+00:00'");connection()->query("SET sql_mode = ''");}}$vh=$_POST["db_style"];$i=array(DB);if(DB==""){$i=$_POST["databases"];if(is_string($i))$i=explode("\n",rtrim(str_replace("\r","",$i),"\n"));}foreach((array)$i
as$j){adminer()->dumpDatabase($j);if(connection()->select_db($j)){if($Td){if($vh)echo
use_sql($j,$vh).";\n\n";$Ef="";if($_POST["types"]){foreach(types()as$u=>$U){$kc=type_values($u);if($kc)$Ef
.=($vh!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($kc);\n\n";else$Ef
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$M){$E=$M["ROUTINE_NAME"];$Ig=$M["ROUTINE_TYPE"];$h=create_routine($Ig,array("name"=>$E)+routine($M["SPECIFIC_NAME"],$Ig));set_utf8mb4($h);$Ef
.=($vh!='DROP+CREATE'?"DROP $Ig IF EXISTS ".idf_escape($E).";;\n":"")."$h;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$M){$h=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($M["Name"]),3));set_utf8mb4($h);$Ef
.=($vh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($M["Name"]).";;\n":"")."$h;;\n\n";}}echo($Ef&&JUSH=='sql'?"DELIMITER ;;\n\n$Ef"."DELIMITER ;\n\n":$Ef);}if($_POST["table_style"]||$_POST["data_style"]){$Ii=array();foreach(table_status('',true)as$E=>$S){$R=(DB==""||in_array($E,(array)$_POST["tables"]));$yb=(DB==""||in_array($E,(array)$_POST["data"]));if($R||$yb){$Wh=null;if($wc=="tar"){$Wh=new
TmpFile;ob_start(array($Wh,'write'),1e5);}adminer()->dumpTable($E,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$Ii[]=$E;elseif($yb){$n=fields($E);adminer()->dumpData($E,$_POST["data_style"],"SELECT *".convert_fields($n,$n)." FROM ".table($E));}if($Td&&$_POST["triggers"]&&$R&&($hi=trigger_sql($E)))echo"\nDELIMITER ;;\n$hi\nDELIMITER ;\n";if($wc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$E.csv",$Wh);}elseif($Td)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$E=>$S){$R=(DB==""||in_array($E,(array)$_POST["tables"]));if($R&&!is_view($S))echo
foreign_keys_sql($E);}}foreach($Ii
as$Hi)adminer()->dumpTable($Hi,$_POST["table_style"],1);if($wc=="tar")echo
pack("x512");}}}adminer()->dumpFooter();exit;}page_header('Exportieren',$l,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
<form action="" method="post">
<table class="layout">
';$Bb=array('','USE','DROP+CREATE','CREATE');$Eh=array('','DROP+CREATE','CREATE');$zb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$zb[]='INSERT+UPDATE';$M=get_settings("adminer_export");if(!$M)$M=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($M["events"])){$M["routines"]=$M["events"]=($_GET["dump"]=="");$M["triggers"]=$M["table_style"];}echo"<tr><th>".'Ergebnis'."<td>".html_radios("output",adminer()->dumpOutput(),$M["output"])."\n","<tr><th>".'Format'."<td>".html_radios("format",adminer()->dumpFormat(),$M["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".'Datenbank'."<td>".html_select('db_style',$Bb,$M["db_style"]).(support("type")?checkbox("types",1,$M["types"],'Benutzerdefinierte Typen'):"").(support("routine")?checkbox("routines",1,$M["routines"],'Routinen'):"").(support("event")?checkbox("events",1,$M["events"],'Ereignisse'):"")),"<tr><th>".'Tabellen'."<td>".html_select('table_style',$Eh,$M["table_style"]).checkbox("auto_increment",1,$M["auto_increment"],'Auto-Inkrement').(support("trigger")?checkbox("triggers",1,$M["triggers"],'Trigger'):""),"<tr><th>".'Daten'."<td>".html_select('data_style',$zb,$M["data_style"]),'</table>
<p><input type="submit" value="Exportieren">
',input_token(),'
<table>
',script("qsl('table').onclick = dumpClick;");$hg=array();if(DB!=""){$Qa=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Qa>".'Tabellen'."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".'Daten'."<input type='checkbox' id='check-data'$Qa></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Ii="";$Gh=tables_list();foreach($Gh
as$E=>$U){$gg=preg_replace('~_.*~','',$E);$Qa=($a==""||$a==(substr($a,-1)=="%"?"$gg%":$E));$jg="<tr><td>".checkbox("tables[]",$E,$Qa,$E,"","block");if($U!==null&&!preg_match('~table~i',$U))$Ii
.="$jg\n";else
echo"$jg<td align='right'><label class='block'><span id='Rows-".h($E)."'></span>".checkbox("data[]",$E,$Qa)."</label>\n";$hg[$gg]++;}echo$Ii;if($Gh)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"<thead><tr><th style='text-align: left;'>","<label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"").">".'Datenbank'."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$i=adminer()->databases();if($i){foreach($i
as$j){if(!information_schema($j)){$gg=preg_replace('~_.*~','',$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$gg%",$j,"","block")."\n";$hg[$gg]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$Ic=true;foreach($hg
as$z=>$X){if($z!=""&&$X>1){echo($Ic?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$z%")."'>".h($z)."</a>";$Ic=false;}}}elseif(isset($_GET["privileges"])){page_header('Rechte');echo'<p class="links"><a href="'.h(ME).'user=">'.'Benutzer erstellen'."</a>";$K=connection()->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$Yc=$K;if(!$K)$K=connection()->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_hidden("db",DB),($Yc?"":input_hidden("grant")),"<table class='odds'>\n","<thead><tr><th>".'Benutzer'."<th>".'Server'."<th></thead>\n";while($M=$K->fetch_assoc())echo'<tr><td>'.h($M["User"])."<td>".h($M["Host"]).'<td><a href="'.h(ME.'user='.urlencode($M["User"]).'&host='.urlencode($M["Host"])).'">'.'Bearbeiten'."</a>\n";if(!$Yc||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Bearbeiten'."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$nd=&get_session("queries");$md=&$nd[DB];if(!$l&&$_POST["clear"]){$md=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?'Importieren':'SQL-Kommando'),$l);$oe='--'.(JUSH=='sql'?' ':'');if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$J=$_POST["query"];elseif($_POST["webfile"]){$lh=adminer()->importServerPath();$q=@fopen((file_exists($lh)?$lh:"compress.zlib://$lh.gz"),"rb");$J=($q?fread($q,1e6):false);}else$J=get_file("sql_file",true,";");if(is_string($J)){if(function_exists('memory_get_usage')&&($Fe=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Fe,strval(2*strlen($J)+memory_get_usage()+8e6)));if($J!=""&&strlen($J)<1e6){$I=$J.(preg_match("~;[ \t\r\n]*\$~",$J)?"":";");if(!$md||first(end($md))!=$I){restart_session();$md[]=array($I,time());set_session("queries",$nd);stop_session();}}$jh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$oe)[^\n]*\n?|--\r?\n)";$Jb=driver()->delimiter;$ff=0;$fc=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$cb=0;$mc=array();$Kf='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$oe.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$ai=microtime(true);$ha=get_settings("adminer_import");while($J!=""){if(!$ff&&preg_match("~^$jh*+DELIMITER\\s+(\\S+)~i",$J,$C)){$Jb=preg_quote($C[1]);$J=substr($J,strlen($C[0]));}elseif(!$ff&&JUSH=='pgsql'&&preg_match("~^($jh*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$J,$C)){$Jb="\n\\\\\\.\r?\n";$ff=strlen($C[0]);}else{preg_match("($Jb\\s*|$Kf)",$J,$C,PREG_OFFSET_CAPTURE,$ff);list($Rc,$bg)=$C[0];if(!$Rc&&$q&&!feof($q))$J
.=fread($q,1e5);else{if(!$Rc&&rtrim($J)=="")break;$ff=$bg+strlen($Rc);if($Rc&&!preg_match("(^$Jb)",$Rc)){$Ja=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($bg>0&&strtolower($J[$bg-1])=="e"));$Uf=($Rc=='/*'?'\*/':($Rc=='['?']':(preg_match("~^$oe|^#~",$Rc)?"\n":preg_quote($Rc).($Ja?'|\\\\.':''))));while(preg_match("($Uf|\$)s",$J,$C,PREG_OFFSET_CAPTURE,$ff)){$Lg=$C[0][0];if(!$Lg&&$q&&!feof($q))$J
.=fread($q,1e5);else{$ff=$C[0][1]+strlen($Lg);if(!$Lg||$Lg[0]!="\\")break;}}}else{$fc=false;$I=substr($J,0,$bg+($Jb[0]=="\n"?3:0));$cb++;$jg="<pre id='sql-$cb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($I)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$jh*+ATTACH\\b~i",$I,$C)){echo$jg,"<p class='error'>".'ATTACH Abfragen werden nicht unterstützt.'."\n";$mc[]=" <a href='#sql-$cb'>$cb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$jg;ob_flush();flush();}$ph=microtime(true);if(connection()->multi_query($I)&&$g&&preg_match("~^$jh*+USE\\b~i",$I))$g->query($I);do{$K=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$jg:""),"<p class='error'>".'Fehler in der SQL-Abfrage'.(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$mc[]=" <a href='#sql-$cb'>$cb</a>";if($_POST["error_stops"])break
2;}else{$Ph=" <span class='time'>(".format_time($ph).")</span>".(strlen($I)<1000?" <a href='".h(ME)."sql=".urlencode(trim($I))."'>".'Bearbeiten'."</a>":"");$ja=connection()->affected_rows;$Li=($_POST["only_errors"]?"":driver()->warnings());$Mi="warnings-$cb";if($Li)$Ph
.=", <a href='#$Mi'>".'Warnungen'."</a>".script("qsl('a').onclick = partial(toggle, '$Mi');","");$uc=null;$yf=null;$vc="explain-$cb";if(is_object($K)){$_=$_POST["limit"];$yf=print_select_result($K,$g,array(),$_);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$cf=$K->num_rows;echo"<p class='sql-footer'>".($cf?($_&&$cf>$_?sprintf('%d / ',$_):"").lang_format(array('%d Datensatz','%d Datensätze'),$cf):""),$Ph;if($g&&preg_match("~^($jh|\\()*+SELECT\\b~i",$I)&&($uc=explain($g,$I)))echo", <a href='#$vc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$vc');","");$u="export-$cb";echo", <a href='#$u'>".'Exportieren'."</a>".script("qsl('a').onclick = partial(toggle, '$u');","")."<span id='$u' class='hidden'>: ".html_select("output",adminer()->dumpOutput(),$ha["output"])." ".html_select("format",adminer()->dumpFormat(),$ha["format"]).input_hidden("query",$I)."<input type='submit' name='export' value='".'Exportieren'."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$jh*+(CREATE|DROP|ALTER)$jh++(DATABASE|SCHEMA)\\b~i",$I)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h(connection()->info)."'>".lang_format(array('Abfrage ausgeführt, %d Datensatz betroffen.','Abfrage ausgeführt, %d Datensätze betroffen.'),$ja)."$Ph\n";}echo($Li?"<div id='$Mi' class='hidden'>\n$Li</div>\n":"");if($uc){echo"<div id='$vc' class='hidden explain'>\n";print_select_result($uc,$g,$yf);echo"</div>\n";}}$ph=microtime(true);}while(connection()->next_result());}$J=substr($J,$ff);$ff=0;}}}}if($fc)echo"<p class='message'>".'Kein Kommando vorhanden.'."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang_format(array('SQL-Abfrage erfolgreich ausgeführt.','%d SQL-Abfragen erfolgreich ausgeführt.'),$cb-count($mc))," <span class='time'>(".format_time($ai).")</span>\n";elseif($mc&&$cb>1)echo"<p class='error'>".'Fehler in der SQL-Abfrage'.": ".implode("",$mc)."\n";}else
echo"<p class='error'>".upload_error($J)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$sc="<input type='submit' value='".'Ausführen'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$I=$_GET["sql"];if($_POST)$I=$_POST["query"];elseif($_GET["history"]=="all")$I=$md;elseif($_GET["history"]!="")$I=idx($md[$_GET["history"]],0);echo"<p>";textarea("query",$I,20);echo
script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"<p>";adminer()->sqlPrintAfter();echo"$sc\n",'Datensätze begrenzen'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{$dd=(extension_loaded("zlib")?"[.gz]":"");echo"<fieldset><legend>".'Datei importieren'."</legend><div>",file_input("SQL$dd: <input type='file' name='sql_file[]' multiple>\n$sc"),"</div></fieldset>\n";$xd=adminer()->importServerPath();if($xd)echo"<fieldset><legend>".'Vom Server'."</legend><div>",sprintf('Webserver Datei %s',"<code>".h($xd)."$dd</code>"),' <input type="submit" name="webfile" value="'.'Datei ausführen'.'">',"</div></fieldset>\n";echo"<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),'Bei Fehler anhalten')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),'Nur Fehler anzeigen')."\n",input_token();if(!isset($_GET["import"])&&$md){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($md);$X;$X=prev($md)){$z=key($md);list($I,$Ph,$ac)=$X;echo'<a href="'.h(ME."sql=&history=$z").'">'.'Bearbeiten'."</a>"." <span class='time' title='".@date('Y-m-d',$Ph)."'>".@date("H:i:s",$Ph)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$oe).*~m",'',$I)))),80,"</code>").($ac?" <span class='time'>($ac)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Löschen'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Alle bearbeiten'."</a>\n","</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$si=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
as$E=>$m){if((!$si&&!isset($m["privileges"]["insert"]))||adminer()->fieldName($m)=="")unset($n[$E]);}if($_POST&&!$l&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($si?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$x=indexes($a);$ni=unique_array($_GET["where"],$x);$rg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,'Datensatz wurde gelöscht.',driver()->delete($a,$rg,$ni?0:1));else{$Q=array();foreach($n
as$E=>$m){$X=process_input($m);if($X!==false&&$X!==null)$Q[idf_escape($E)]=$X;}if($si){if(!$Q)redirect($B);queries_redirect($B,'Datensatz wurde geändert.',driver()->update($a,$Q,$rg,$ni?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$K=driver()->insert($a,$Q);$ge=($K?last_id($K):0);queries_redirect($B,sprintf('Datensatz%s wurde eingefügt.',($ge?" $ge":"")),$K);}}}$M=null;if($Z){$O=array();foreach($n
as$E=>$m){if(isset($m["privileges"]["select"])){$ra=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$O[]=($ra?"$ra AS ":"").idf_escape($E);}}$M=array();if(!support("table"))$O=array("*");if($O){$K=driver()->select($a,$O,array($Z),$O,array(),(isset($_GET["select"])?2:1));if(!$K)$l=error();else{$M=$K->fetch_assoc();if(!$M)$M=false;}if(isset($_GET["select"])&&(!$M||$K->fetch_assoc()))$M=null;}}if(!support("table")&&!$n){if(!$Z){$K=driver()->select($a,array("*"),array(),array("*"));$M=($K?$K->fetch_assoc():false);if(!$M)$M=array(driver()->primary=>"");}if($M){foreach($M
as$z=>$X){if(!$Z)$M[$z]=null;$n[$z]=array("field"=>$z,"null"=>($z!=driver()->primary),"auto_increment"=>($z==driver()->primary));}}}if($_POST["save"])$M=(array)$_POST["fields"]+($M?$M:array());edit_form($a,$n,$M,$si,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Of=driver()->partitionBy;$Rf=($Of?driver()->partitionsInfo($a):array());$xg=referencable_primary($a);$Pc=array();foreach($xg
as$Bh=>$m)$Pc[str_replace("`","``",$Bh)."`".str_replace("`","``",$m["field"])]=$Bh;$Af=array();$S=array();if($a!=""){$Af=fields($a);$S=table_status1($a);if(count($S)<2)$l='Keine Tabellen.';}$M=$_POST;$M["fields"]=(array)$M["fields"];if($M["auto_increment_col"])$M["fields"][$M["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($M["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Tabelle wurde entfernt.',drop_tables(array($a)));else{$n=array();$ma=array();$yi=false;$Nc=array();$_f=reset($Af);$la=" FIRST";foreach($M["fields"]as$z=>$m){$p=$Pc[$m["type"]];$ji=($p!==null?$xg[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$og=process_field($m,$ji);$ma[]=array($m["orig"],$og,$la);if(!$_f||$og!==process_field($_f,$_f)){$n[]=array($m["orig"],$og,$la);if($m["orig"]!=""||$la)$yi=true;}if($p!==null)$Nc[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Pc[$m["type"]],'source'=>array($m["field"]),'target'=>array($ji["field"]),'on_delete'=>$m["on_delete"],));$la=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$yi=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$_f=next($Af);if(!$_f)$la="";}}$G=array();if(in_array($M["partition_by"],$Of)){foreach($M
as$z=>$X){if(preg_match('~^partition~',$z))$G[$z]=$X;}foreach($G["partition_names"]as$z=>$E){if($E==""){unset($G["partition_names"][$z]);unset($G["partition_values"][$z]);}}$G["partition_names"]=array_values($G["partition_names"]);$G["partition_values"]=array_values($G["partition_values"]);if($G==$Rf)$G=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$G=null;$D='Tabelle wurde geändert.';if($a==""){cookie("adminer_engine",$M["Engine"]);$D='Tabelle wurde erstellt.';}$E=trim($M["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($E),$D,alter_table($a,$E,(JUSH=="sqlite"&&($yi||$Nc)?$ma:$n),$Nc,($M["Comment"]!=$S["Comment"]?$M["Comment"]:null),($M["Engine"]&&$M["Engine"]!=$S["Engine"]?$M["Engine"]:""),($M["Collation"]&&$M["Collation"]!=$S["Collation"]?$M["Collation"]:""),($M["Auto_increment"]!=""?number($M["Auto_increment"]):""),$G));}}page_header(($a!=""?'Tabelle ändern':'Tabelle erstellen'),$l,array("table"=>$a),h($a));if(!$_POST){$ki=driver()->types();$M=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($ki["int"])?"int":(isset($ki["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$M=$S;$M["name"]=$a;$M["fields"]=array();if(!$_GET["auto_increment"])$M["Auto_increment"]="";foreach($Af
as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$M["fields"][]=$m;}if($Of){$M+=$Rf;$M["partition_names"][]="";$M["partition_values"][]="";}}}$c=collations();if(is_array(reset($c)))$c=call_user_func_array('array_merge',array_values($c));$hc=driver()->engines();foreach($hc
as$gc){if(!strcasecmp($gc,$M["Engine"])){$M["Engine"]=$gc;break;}}echo'
<form action="" method="post" id="form">
<p>
';if(support("columns")||$a==""){echo'Name der Tabelle'.": <input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($M["name"])."' autocapitalize='off'>\n",($hc?html_select("Engine",array(""=>"(".'Speicher-Engine'.")")+$hc,$M["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($c)echo"<datalist id='collations'>".optionlist($c)."</datalist>\n",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($M["Collation"])."' placeholder='(".'Kollation'.")'>\n");echo"<input type='submit' value='".'Speichern'."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($M["fields"],$c,"TABLE",$Pc);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",'Auto-Inkrement'.": <input type='number' name='Auto_increment' class='size' value='".h($M["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),'Vorgabewerte festlegen',"columnShow(this.checked, 5)","jsonly");$fb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$fb,'Kommentar',"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$M["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($fb?"":" class='hidden'").">".h($M["Comment"])."</textarea>":'<input name="Comment" value="'.h($M["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($fb?"":" class='hidden'").'>'):''),'<p>
<input type="submit" value="Speichern">
';}echo'
';if($a!="")echo'<input type="submit" name="drop" value="Entfernen">',confirm(sprintf('%s entfernen?',$a));if($Of&&(JUSH=='sql'||$a=="")){$Pf=preg_match('~RANGE|LIST~',$M["partition_by"]);print_fieldset("partition",'Partitionieren um',$M["partition_by"]);echo"<p>".html_select("partition_by",array_merge(array(""),$Of),$M["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($M["partition"])."'>)\n",'Partitionen'.": <input type='number' name='partitions' class='size".($Pf||!$M["partition_by"]?" hidden":"")."' value='".h($M["partitions"])."'>\n","<table id='partition-table'".($Pf?"":" class='hidden'").">\n","<thead><tr><th>".'Name der Partition'."<th>".'Werte'."</thead>\n";foreach($M["partition_names"]as$z=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($z==count($M["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h(idx($M["partition_values"],$z)).'">';echo"</table>\n</div></fieldset>\n";}echo
input_token(),'</form>
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Dd=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$Bd=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Dd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Dd[]="SPATIAL";$x=indexes($a);$n=fields($a);$ig=array();if(JUSH=="mongo"){$ig=$x["_id_"];unset($Dd[0]);unset($x["_id_"]);}$M=$_POST;if($M)save_settings(array("index_options"=>$M["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$na=array();foreach($M["indexes"]as$w){$E=$w["name"];if(in_array($w["type"],$Dd)){$e=array();$me=array();$Mb=array();$Cd=(support("partial_indexes")?$w["partial"]:"");$Ad=(in_array($w["algorithm"],$Bd)?$w["algorithm"]:"");$Q=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$d){if($d!=""){$le=idx($w["lengths"],$z);$Kb=idx($w["descs"],$z);$Q[]=($n[$d]?idf_escape($d):$d).($le?"(".(+$le).")":"").($Kb?" DESC":"");$e[]=$d;$me[]=($le?:null);$Mb[]=$Kb;}}$tc=$x[$E];if($tc){ksort($tc["columns"]);ksort($tc["lengths"]);ksort($tc["descs"]);if($w["type"]==$tc["type"]&&array_values($tc["columns"])===$e&&(!$tc["lengths"]||array_values($tc["lengths"])===$me)&&array_values($tc["descs"])===$Mb&&$tc["partial"]==$Cd&&(!$Bd||$tc["algorithm"]==$Ad)){unset($x[$E]);continue;}}if($e)$na[]=array($w["type"],$E,$Q,$Ad,$Cd);}}foreach($x
as$E=>$tc)$na[]=array($tc["type"],$E,"DROP");if(!$na)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indizes geändert.',alter_indexes($a,$na));}page_header('Indizes',$l,array("table"=>$a),h($a));$Fc=array_keys($n);if($_POST["add"]){foreach($M["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$M["indexes"][$z]["columns"][]="";}$w=end($M["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$M["indexes"][]=array("columns"=>array(1=>""));}if(!$M){foreach($x
as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$M["indexes"]=$x;}$me=(JUSH=="sql"||JUSH=="mssql");$dh=($_POST?$_POST["options"]:get_setting("index_options"));echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap">
<thead><tr>
<th id="label-type">Index-Typ
';$vd=" class='idxopts".($dh?"":" hidden")."'";if($Bd)echo"<th id='label-algorithm'$vd>".'Algorithm'.doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/',));echo'<th><input type="submit" class="wayoff">','Spalten'.($me?"<span$vd> (".'Länge'.")</span>":"");if($me||support("descidx"))echo
checkbox("options",1,$dh,'Optionen',"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">Name
';if(support("partial_indexes"))echo"<th id='label-condition'$vd>".'Condition';echo'<th><noscript>',icon("plus","add[0]","+",'Hinzufügen'),'</noscript>
</thead>
';if($ig){echo"<tr><td>PRIMARY<td>";foreach($ig["columns"]as$z=>$d)echo
select_input(" disabled",$Fc,$d),"<label><input disabled type='checkbox'>".'absteigend'."</label> ";echo"<td><td>\n";}$y=1;foreach($M["indexes"]as$w){if(!$_POST["drop_col"]||$y!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$y][type]",array(-1=>"")+$Dd,$w["type"],($y==count($M["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($Bd)echo"<td$vd>".html_select("indexes[$y][algorithm]",array_merge(array(""),$Bd),$w['algorithm'],"label-algorithm");echo"<td>";ksort($w["columns"]);$t=1;foreach($w["columns"]as$z=>$d){echo"<span>".select_input(" name='indexes[$y][columns][$t]' title='".'Spalte'."'",($n&&($d==""||$n[$d])?array_combine($Fc,$Fc):array()),$d,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span$vd>",($me?"<input type='number' name='indexes[$y][lengths][$t]' class='size' value='".h(idx($w["lengths"],$z))."' title='".'Länge'."'>":""),(support("descidx")?checkbox("indexes[$y][descs][$t]",1,idx($w["descs"],$z),'absteigend'):""),"</span> </span>";$t++;}echo"<td><input name='indexes[$y][name]' value='".h($w["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n";if(support("partial_indexes"))echo"<td$vd><input name='indexes[$y][partial]' value='".h($w["partial"])."' autocapitalize='off' aria-labelledby='label-condition'>\n";echo"<td>".icon("cross","drop_col[$y]","x",'Entfernen').script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$y++;}echo'</table>
</div>
<p>
<input type="submit" value="Speichern">
',input_token(),'</form>
';}elseif(isset($_GET["database"])){$M=$_POST;if($_POST&&!$l&&!$_POST["add"]){$E=trim($M["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Datenbank wurde entfernt.',drop_databases(array(DB)));}elseif(DB!==$E){if(DB!=""){$_GET["db"]=$E;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($E),'Datenbank wurde umbenannt.',rename_database($E,$M["collation"]));}else{$i=explode("\n",str_replace("\r","",$E));$wh=true;$fe="";foreach($i
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$M["collation"]))$wh=false;$fe=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($fe),'Datenbank wurde erstellt.',$wh);}}else{if(!$M["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($E).(preg_match('~^[a-z0-9_]+$~i',$M["collation"])?" COLLATE $M[collation]":""),substr(ME,0,-1),'Datenbank wurde geändert.');}}page_header(DB!=""?'Datenbank ändern':'Datenbank erstellen',$l,array(),h(DB));$c=collations();$E=DB;if($_POST)$E=$M["name"];elseif(DB!="")$M["collation"]=db_collation(DB,$c);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$Yc){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$Yc,$C)&&$C[1]){$E=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'
<form action="" method="post">
<p>
',($_POST["add"]||strpos($E,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($E).'</textarea><br>':'<input name="name" autofocus value="'.h($E).'" data-maxlength="64" autocapitalize="off">')."\n".($c?html_select("collation",array(""=>"(".'Kollation'.")")+$c,$M["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",)):""),'<input type="submit" value="Speichern">
';if(DB!="")echo"<input type='submit' name='drop' value='".'Entfernen'."'>".confirm(sprintf('%s entfernen?',DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo
icon("plus","add[0]","+",'Hinzufügen')."\n";echo
input_token(),'</form>
';}elseif(isset($_GET["call"])){$ba=($_GET["name"]?:$_GET["call"]);page_header('Aufrufen'.": ".h($ba),$l);$Ig=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$yd=array();$Ef=array();foreach($Ig["fields"]as$t=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$Ef[$t]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$yd[]=$t;}if(!$l&&$_POST){$Ka=array();foreach($Ig["fields"]as$z=>$m){$X="";if(in_array($z,$yd)){$X=process_input($m);if($X===false)$X="''";if(isset($Ef[$z]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($Ef[$z]))$Ka[]="@".idf_escape($m["field"]);elseif(in_array($z,$yd))$Ka[]=$X;}$J=(isset($_GET["callf"])?"SELECT ":"CALL ").(idx($Ig["returns"],"type")=="record"?"* FROM ":"").table($ba)."(".implode(", ",$Ka).")";$ph=microtime(true);$K=connection()->multi_query($J);$ja=connection()->affected_rows;echo
adminer()->selectQuery($J,$ph,!$K);if(!$K)echo"<p class='error'>".error()."\n";else{$g=connect();if($g)$g->select_db(DB);do{$K=connection()->store_result();if(is_object($K))print_select_result($K,$g);else
echo"<p class='message'>".lang_format(array('Routine wurde ausgeführt, %d Datensatz betroffen.','Routine wurde ausgeführt, %d Datensätze betroffen.'),$ja)." <span class='time'>".@date("H:i:s")."</span>\n";}while(connection()->next_result());if($Ef)print_select_result(connection()->query("SELECT ".implode(", ",$Ef)));}}echo'
<form action="" method="post">
';if($yd){echo"<table class='layout'>\n";foreach($yd
as$z){$m=$Ig["fields"][$z];$E=$m["field"];echo"<tr><th>".adminer()->fieldName($m);$Y=idx($_POST["fields"],$E);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$E,""));echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="Aufrufen">
',input_token(),'</form>

<pre>
';function
pre_tr($Lg){return
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($Lg))));}$R='(\+--[-+]+\+\n)';$M='(\| .* \|\n)';echo
preg_replace_callback("~^$R?$M$R?($M*)$R?~m",function($C){$Jc=pre_tr($C[2]);return"<table>\n".($C[1]?"<thead>$Jc</thead>\n":$Jc).pre_tr($C[4])."\n</table>";},preg_replace('~(\n(    -|mysql)&gt; )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($Ig['comment']))));echo'</pre>
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$E=$_GET["name"];$M=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$M["source"]=array_filter($M["source"],'strlen');ksort($M["source"]);$Jh=array();foreach($M["source"]as$z=>$X)$Jh[$z]=$M["target"][$z];$M["target"]=$Jh;}if(JUSH=="sqlite")$K=recreate_table($a,$a,array(),array(),array(" $E"=>($M["drop"]?"":" ".format_foreign_key($M))));else{$na="ALTER TABLE ".table($a);$K=($E==""||queries("$na DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($E)));if(!$M["drop"])$K=queries("$na ADD".format_foreign_key($M));}queries_redirect(ME."table=".urlencode($a),($M["drop"]?'Fremdschlüssel wurde entfernt.':($E!=""?'Fremdschlüssel wurde geändert.':'Fremdschlüssel wurde erstellt.')),$K);if(!$M["drop"])$l='Quell- und Zielspalten müssen vom gleichen Datentyp sein, es muss unter den Zielspalten ein Index existieren und die referenzierten Daten müssen existieren.';}page_header('Fremdschlüssel',$l,array("table"=>$a),h($a));if($_POST){ksort($M["source"]);if($_POST["add"])$M["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$M["target"]=array();}elseif($E!=""){$Pc=foreign_keys($a);$M=$Pc[$E];$M["source"][]="";}else{$M["table"]=$a;$M["source"]=array("");}echo'
<form action="" method="post">
';$ih=array_keys(fields($a));if($M["db"]!="")connection()->select_db($M["db"]);if($M["ns"]!=""){$Bf=get_schema();set_schema($M["ns"]);}$wg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Jh=array_keys(fields(in_array($M["table"],$wg)?$M["table"]:reset($wg)));$nf="this.form['change-js'].value = '1'; this.form.submit();";echo"<p><label>".'Zieltabelle'.": ".html_select("table",$wg,$M["table"],$nf)."</label>\n";if(JUSH!="sqlite"){$Cb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Cb[]=$j;}echo"<label>".'DB'.": ".html_select("db",$Cb,$M["db"]!=""?$M["db"]:$_GET["db"],$nf)."</label>";}echo
input_hidden("change-js"),'<noscript><p><input type="submit" name="change" value="Ändern"></noscript>
<table>
<thead><tr><th id="label-source">Ursprung<th id="label-target">Ziel</thead>
';$y=0;foreach($M["source"]as$z=>$X){echo"<tr>","<td>".html_select("source[".(+$z)."]",array(-1=>"")+$ih,$X,($y==count($M["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$z)."]",$Jh,idx($M["target"],$z),"","label-target");$y++;}echo'</table>
<p>
<label>ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",driver()->onActions),$M["on_delete"]),'</label>
<label>ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",driver()->onActions),$M["on_update"]),'</label>
',(DRIVER==='pgsql'?html_select("deferrable",array('NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'),$M["deferrable"]).' ':''),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",)),'<p>
<input type="submit" value="Speichern">
<noscript><p><input type="submit" name="add" value="Spalte hinzufügen"></noscript>
';if($E!="")echo'<input type="submit" name="drop" value="Entfernen">',confirm(sprintf('%s entfernen?',$E));echo
input_token(),'</form>
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$M=$_POST;$Cf="VIEW";if(JUSH=="pgsql"&&$a!=""){$qh=table_status1($a);$Cf=strtoupper($qh["Engine"]);}if($_POST&&!$l){$E=trim($M["name"]);$ra=" AS\n$M[select]";$B=ME."table=".urlencode($E);$D='View wurde geändert.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$E&&JUSH!="sqlite"&&$U=="VIEW"&&$Cf=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($E).$ra,$B,$D);else{$Lh=$E."_adminer_".uniqid();drop_create("DROP $Cf ".table($a),"CREATE $U ".table($E).$ra,"DROP $U ".table($E),"CREATE $U ".table($Lh).$ra,"DROP $U ".table($Lh),($_POST["drop"]?substr(ME,0,-1):$B),'View wurde entfernt.',$D,'View wurde erstellt.',$a,$E);}}if(!$_POST&&$a!=""){$M=view($a);$M["name"]=$a;$M["materialized"]=($Cf!="VIEW");if(!$l)$l=error();}page_header(($a!=""?'View ändern':'View erstellen'),$l,array("table"=>$a),h($a));echo'
<form action="" method="post">
<p>Name: <input name="name" value="',h($M["name"]),'" data-maxlength="64" autocapitalize="off">
',(support("materializedview")?" ".checkbox("materialized",1,$M["materialized"],'Strukturierte Ansicht'):""),'<p>';textarea("select",$M["select"]);echo'<p>
<input type="submit" value="Speichern">
';if($a!="")echo'<input type="submit" name="drop" value="Entfernen">',confirm(sprintf('%s entfernen?',$a));echo
input_token(),'</form>
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Nd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$rh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$M=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Ereignis wurde entfernt.');elseif(in_array($M["INTERVAL_FIELD"],$Nd)&&isset($rh[$M["STATUS"]])){$Mg="\nON SCHEDULE ".($M["INTERVAL_VALUE"]?"EVERY ".q($M["INTERVAL_VALUE"])." $M[INTERVAL_FIELD]".($M["STARTS"]?" STARTS ".q($M["STARTS"]):"").($M["ENDS"]?" ENDS ".q($M["ENDS"]):""):"AT ".q($M["STARTS"]))." ON COMPLETION".($M["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Ereignis wurde geändert.':'Ereignis wurde erstellt.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$Mg.($aa!=$M["EVENT_NAME"]?"\nRENAME TO ".idf_escape($M["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($M["EVENT_NAME"]).$Mg)."\n".$rh[$M["STATUS"]]." COMMENT ".q($M["EVENT_COMMENT"]).rtrim(" DO\n$M[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Ereignis ändern'.": ".h($aa):'Ereignis erstellen'),$l);if(!$M&&$aa!=""){$N=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$M=reset($N);}echo'
<form action="" method="post">
<table class="layout">
<tr><th>Name<td><input name="EVENT_NAME" value="',h($M["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$M[EXECUTE_AT]$M[STARTS]"),'">
<tr><th title="datetime">Ende<td><input name="ENDS" value="',h($M["ENDS"]),'">
<tr><th>Jede<td><input type="number" name="INTERVAL_VALUE" value="',h($M["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$Nd,$M["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$rh,$M["STATUS"]),'<tr><th>Kommentar<td><input name="EVENT_COMMENT" value="',h($M["EVENT_COMMENT"]),'" data-maxlength="64">
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$M["ON_COMPLETION"]=="PRESERVE",'Nach der Ausführung erhalten'),'</table>
<p>';textarea("EVENT_DEFINITION",$M["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="Speichern">
';if($aa!="")echo'<input type="submit" name="drop" value="Entfernen">',confirm(sprintf('%s entfernen?',$aa));echo
input_token(),'</form>
';}elseif(isset($_GET["procedure"])){$ba=($_GET["name"]?:$_GET["procedure"]);$Ig=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$M=$_POST;$M["fields"]=(array)$M["fields"];if($_POST&&!process_fields($M["fields"])&&!$l){$zf=routine($_GET["procedure"],$Ig);$Lh="$M[name]_adminer_".uniqid();foreach($M["fields"]as$z=>$m){if($m["field"]=="")unset($M["fields"][$z]);}drop_create("DROP $Ig ".routine_id($ba,$zf),create_routine($Ig,$M),"DROP $Ig ".routine_id($M["name"],$M),create_routine($Ig,array("name"=>$Lh)+$M),"DROP $Ig ".routine_id($Lh,$M),substr(ME,0,-1),'Routine wurde entfernt.','Routine wurde geändert.','Routine wurde erstellt.',$ba,$M["name"]);}page_header(($ba!=""?(isset($_GET["function"])?'Funktion ändern':'Prozedur ändern').": ".h($ba):(isset($_GET["function"])?'Funktion erstellen':'Prozedur erstellen')),$l);if(!$_POST){if($ba=="")$M["language"]="sql";else{$M=routine($_GET["procedure"],$Ig);$M["name"]=$ba;}}$c=get_vals("SHOW CHARACTER SET");sort($c);$Jg=routine_languages();echo($c?"<datalist id='collations'>".optionlist($c)."</datalist>":""),'
<form action="" method="post" id="form">
<p>Name: <input name="name" value="',h($M["name"]),'" data-maxlength="64" autocapitalize="off">
',($Jg?"<label>".'Sprache'.": ".html_select("language",$Jg,$M["language"])."</label>\n":""),'<input type="submit" value="Speichern">
<div class="scrollable">
<table class="nowrap">
';edit_fields($M["fields"],$c,$Ig);if(isset($_GET["function"])){echo"<tr><td>".'Typ des Rückgabewertes';edit_type("returns",(array)$M["returns"],$c,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
',script("editFields();"),'</div>
<p>';textarea("definition",$M["definition"],20);echo'<p>
<input type="submit" value="Speichern">
';if($ba!="")echo'<input type="submit" name="drop" value="Entfernen">',confirm(sprintf('%s entfernen?',$ba));echo
input_token(),'</form>
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$E=$_GET["name"];$M=$_POST;if($M&&!$l){if(JUSH=="sqlite")$K=recreate_table($a,$a,array(),array(),array(),"",array(),"$E",($M["drop"]?"":$M["clause"]));else{$K=($E==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($E)));if(!$M["drop"])$K=queries("ALTER TABLE ".table($a)." ADD".($M["name"]!=""?" CONSTRAINT ".idf_escape($M["name"]):"")." CHECK ($M[clause])");}queries_redirect(ME."table=".urlencode($a),($M["drop"]?'Check wurde abgebrochen.':($E!=""?'Check wurde geändert.':'Check wurde erstellt.')),$K);}page_header(($E!=""?'Check ändern'.": ".h($E):'Check erstellen'),$l,array("table"=>$a));if(!$M){$Ra=driver()->checkConstraints($a);$M=array("name"=>$E,"clause"=>$Ra[$E]);}echo'
<form action="" method="post">
<p>';if(JUSH!="sqlite")echo'Name'.': <input name="name" value="'.h($M["name"]).'" data-maxlength="64" autocapitalize="off"> ';echo
doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",),"?"),'<p>';textarea("clause",$M["clause"]);echo'<p><input type="submit" value="Speichern">
';if($E!="")echo'<input type="submit" name="drop" value="Entfernen">',confirm(sprintf('%s entfernen?',$E));echo
input_token(),'</form>
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$E="$_GET[name]";$gi=trigger_options();$M=(array)trigger($E,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$gi["Timing"])&&in_array($_POST["Event"],$gi["Event"])&&in_array($_POST["Type"],$gi["Type"])){$lf=" ON ".table($a);$Tb="DROP TRIGGER ".idf_escape($E).(JUSH=="pgsql"?$lf:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Tb,$B,'Trigger wurde entfernt.');else{if($E!="")queries($Tb);queries_redirect($B,($E!=""?'Trigger wurde geändert.':'Trigger wurde erstellt.'),queries(create_trigger($lf,$_POST)));if($E!="")queries(create_trigger($lf,$M+array("Type"=>reset($gi["Type"]))));}}$M=$_POST;}page_header(($E!=""?'Trigger ändern'.": ".h($E):'Trigger erstellen'),$l,array("table"=>$a));echo'
<form action="" method="post" id="form">
<table class="layout">
<tr><th>Zeitpunkt<td>',html_select("Timing",$gi["Timing"],$M["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Ereignis<td>',html_select("Event",$gi["Event"],$M["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$gi["Event"])?" <input name='Of' value='".h($M["Of"])."' class='hidden'>":""),'<tr><th>Typ<td>',html_select("Type",$gi["Type"],$M["Type"]),'</table>
<p>Name: <input name="Trigger" value="',h($M["Trigger"]),'" data-maxlength="64" autocapitalize="off">
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$M["Statement"]);echo'<p>
<input type="submit" value="Speichern">
';if($E!="")echo'<input type="submit" name="drop" value="Entfernen">',confirm(sprintf('%s entfernen?',$E));echo
input_token(),'</form>
';}elseif(isset($_GET["user"])){$da=$_GET["user"];$mg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$M){foreach(explode(",",($M["Privilege"]=="Grant option"?"":$M["Context"]))as$mb)$mg[$mb][$M["Privilege"]]=$M["Comment"];}$mg["Server Admin"]+=$mg["File access on server"];$mg["Databases"]["Create routine"]=$mg["Procedures"]["Create routine"];unset($mg["Procedures"]["Create routine"]);$mg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$mg["Columns"][$X]=$mg["Tables"][$X];unset($mg["Server Admin"]["Usage"]);foreach($mg["Tables"]as$z=>$X)unset($mg["Databases"][$z]);$Ve=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$Ve[$X]=(array)$Ve[$X]+idx($_POST["grants"],$z,array());}$Zc=array();$jf="";if(isset($_GET["host"])&&($K=connection()->query("SHOW GRANTS FOR ".q($da)."@".q($_GET["host"])))){while($M=$K->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$M[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$ve,PREG_SET_ORDER)){foreach($ve
as$X){if($X[1]!="USAGE")$Zc["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$M[0]))$Zc["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$M[0],$C))$jf=$C[1];}}if($_POST&&!$l){$kf=(isset($_GET["host"])?q($da)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $kf",ME."privileges=",'Benutzer wurde entfernt.');else{$Xe=q($_POST["user"])."@".q($_POST["host"]);$Sf=$_POST["pass"];if($Sf!=''&&!$_POST["hashed"]&&!min_version(8)){$Sf=get_val("SELECT PASSWORD(".q($Sf).")");$l=!$Sf;}$rb=false;if(!$l){if($kf!=$Xe){$rb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $Xe IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Sf));$l=!$rb;}elseif($Sf!=$jf)queries("SET PASSWORD FOR $Xe = ".q($Sf));}if(!$l){$Fg=array();foreach($Ve
as$ef=>$Yc){if(isset($_GET["grant"]))$Yc=array_filter($Yc);$Yc=array_keys($Yc);if(isset($_GET["grant"]))$Fg=array_diff(array_keys(array_filter($Ve[$ef],'strlen')),$Yc);elseif($kf==$Xe){$hf=array_keys((array)$Zc[$ef]);$Fg=array_diff($hf,$Yc);$Yc=array_diff($Yc,$hf);unset($Zc[$ef]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$ef,$C)&&(!grant("REVOKE",$Fg,$C[2]," ON $C[1] FROM $Xe")||!grant("GRANT",$Yc,$C[2]," ON $C[1] TO $Xe"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($kf!=$Xe)queries("DROP USER $kf");elseif(!isset($_GET["grant"])){foreach($Zc
as$ef=>$Fg){if(preg_match('~^(.+)(\(.*\))?$~U',$ef,$C))grant("REVOKE",array_keys($Fg),$C[2]," ON $C[1] FROM $Xe");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'Benutzer wurde geändert.':'Benutzer wurde erstellt.'),!$l);if($rb)connection()->query("DROP USER $Xe");}}page_header((isset($_GET["host"])?'Benutzer'.": ".h("$da@$_GET[host]"):'Benutzer erstellen'),$l,array("privileges"=>array('','Rechte')));$M=$_POST;if($M)$Zc=$Ve;else{$M=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$M["pass"]=$jf;if($jf!="")$M["hashed"]=true;$Zc[(DB==""||$Zc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
<table class="layout">
<tr><th>Server<td><input name="host" data-maxlength="60" value="',h($M["host"]),'" autocapitalize="off">
<tr><th>Benutzer<td><input name="user" data-maxlength="80" value="',h($M["user"]),'" autocapitalize="off">
<tr><th>Passwort<td><input name="pass" id="pass" value="',h($M["pass"]),'" autocomplete="new-password">
',($M["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$M["hashed"],'Hashed',"typePassword(this.form['pass'], this.checked);")),'</table>

',"<table class='odds'>\n","<thead><tr><th colspan='2'>".'Rechte'.doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($Zc
as$ef=>$Yc){echo'<th>'.($ef!="*.*"?"<input name='objects[$t]' value='".h($ef)."' size='10' autocapitalize='off'>":input_hidden("objects[$t]","*.*")."*.*");$t++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Datenbank',"Tables"=>'Tabelle',"Columns"=>'Spalte',"Procedures"=>'Routine',)as$mb=>$Kb){foreach((array)$mg[$mb]as$lg=>$db){echo"<tr><td".($Kb?">$Kb<td":" colspan='2'").' lang="en" title="'.h($db).'">'.h($lg);$t=0;foreach($Zc
as$ef=>$Yc){$E="'grants[$t][".h(strtoupper($lg))."]'";$Y=$Yc[strtoupper($lg)];if($mb=="Server Admin"&&$ef!=(isset($Zc["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$E><option><option value='1'".($Y?" selected":"").">".'Erlauben'."<option value='0'".($Y=="0"?" selected":"").">".'Widerrufen'."</select>";else
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$E value='1'".($Y?" checked":"").($lg=="All privileges"?" id='grants-$t-all'>":">".($lg=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$t-all'); };"))),"</label>";$t++;}}}echo"</table>\n",'<p>
<input type="submit" value="Speichern">
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="Entfernen">',confirm(sprintf('%s entfernen?',"$da@$_GET[host]"));echo
input_token(),'</form>
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$be=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$be++;}queries_redirect(ME."processlist=",lang_format(array('%d Prozess gestoppt.','%d Prozesse gestoppt.'),$be),$be||!$_POST["kill"]);}}page_header('Prozessliste',$l);echo'
<form action="" method="post">
<div class="scrollable">
<table class="nowrap checkable odds">
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(adminer()->processList()as$t=>$M){if(!$t){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($M
as$z=>$X)echo"<th>$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),));echo"</thead>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$M[JUSH=="sql"?"Id":"pid"],0):"");foreach($M
as$z=>$X)echo"<td>".((JUSH=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$M["Command"])&&$X!="")||(JUSH=="pgsql"&&$z=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$z=="sql_text"&&$X!="")?"<code class='jush-".JUSH."'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($M["db"]!=""?"db=".urlencode($M["db"])."&":"")."sql=".urlencode($X)).'">'.'Klonen'.'</a>':h($X));echo"\n";}echo'</table>
</div>
<p>
';if(support("kill"))echo($t+1)."/".sprintf('%d insgesamt',max_connections()),"<p><input type='submit' value='".'Anhalten'."'>\n";echo
input_token(),'</form>
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$n=fields($a);$Pc=column_foreign_keys($a);$gf=$S["Oid"];$ia=get_settings("adminer_import");$Gg=array();$e=array();$Rg=array();$vf=array();$Oh="";foreach($n
as$z=>$m){$E=adminer()->fieldName($m);$Te=html_entity_decode(strip_tags($E),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$E!=""){$e[$z]=$Te;if(is_shortable($m))$Oh=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$E!="")$Rg[$z]=$Te;if(isset($m["privileges"]["order"])&&$E!="")$vf[$z]=$Te;$Gg+=$m["privileges"];}list($O,$s)=adminer()->selectColumnsProcess($e,$x);$O=array_unique($O);$s=array_unique($s);$Rd=count($s)<count($O);$Z=adminer()->selectSearchProcess($n,$x);$uf=adminer()->selectOrderProcess($n,$x);$_=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$oi=>$M){$ra=convert_field($n[key($M)]);$O=array($ra?:idf_escape(key($M)));$Z[]=where_check($oi,$n);$L=driver()->select($a,$O,$Z,$O);if($L)echo
first($L->fetch_row());}exit;}$ig=$qi=array();foreach($x
as$w){if($w["type"]=="PRIMARY"){$ig=array_flip($w["columns"]);$qi=($O?$ig:array());foreach($qi
as$z=>$X){if(in_array(idf_escape($z),$O))unset($qi[$z]);}break;}}if($gf&&!$ig){$ig=$qi=array($gf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($gf));}if($_POST&&!$l){$Oi=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Ra=array();foreach($_POST["check"]as$Oa)$Ra[]=where_check($Oa,$n);$Oi[]="((".implode(") OR (",$Ra)."))";}$Oi=($Oi?"\nWHERE ".implode(" AND ",$Oi):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$Tc=($O?implode(", ",$O):"*").convert_fields($e,$n,$O)."\nFROM ".table($a);$bd=($s&&$Rd?"\nGROUP BY ".implode(", ",$s):"").($uf?"\nORDER BY ".implode(", ",$uf):"");$J="SELECT $Tc$Oi$bd";if(is_array($_POST["check"])&&!$ig){$mi=array();foreach($_POST["check"]as$X)$mi[]="(SELECT".limit($Tc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$bd,1).")";$J=implode(" UNION ALL ",$mi);}adminer()->dumpData($a,"table",$J);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$Pc)){if($_POST["save"]||$_POST["delete"]){$K=true;$ja=0;$Q=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$E=>$X){$X=process_input($n[$E]);if($X!==null&&($_POST["clone"]||$X!==false))$Q[idf_escape($E)]=($X!==false?$X:idf_escape($E));}}if($_POST["delete"]||$Q){$J=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($Q)).")\nSELECT ".implode(", ",$Q)."\nFROM ".table($a):"");if($_POST["all"]||($ig&&is_array($_POST["check"]))||$Rd){$K=($_POST["delete"]?driver()->delete($a,$Oi):($_POST["clone"]?queries("INSERT $J$Oi".driver()->insertReturning($a)):driver()->update($a,$Q,$Oi)));$ja=connection()->affected_rows;if(is_object($K))$ja+=$K->num_rows;}else{foreach((array)$_POST["check"]as$X){$Ni="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$K=($_POST["delete"]?driver()->delete($a,$Ni,1):($_POST["clone"]?queries("INSERT".limit1($a,$J,$Ni)):driver()->update($a,$Q,$Ni,1)));if(!$K)break;$ja+=connection()->affected_rows;}}}$D=sprintf('%d Artikel betroffen.',$ja);if($_POST["clone"]&&$K&&$ja==1){$ge=last_id($K);if($ge)$D=sprintf('Datensatz%s wurde eingefügt.'," $ge");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$K);if(!$_POST["delete"]){$eg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$eg),$eg,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l='Ctrl+Klick zum Bearbeiten des Wertes.';else{$K=true;$ja=0;foreach($_POST["val"]as$oi=>$M){$Q=array();foreach($M
as$z=>$X){$z=bracket_escape($z,true);$Q[idf_escape($z)]=(preg_match('~char|text~',$n[$z]["type"])||$X!=""?adminer()->processInput($n[$z],$X):"NULL");}$K=driver()->update($a,$Q," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($oi,$n),($Rd||$ig?0:1)," ");if(!$K)break;$ja+=connection()->affected_rows;}queries_redirect(remove_from_uri(),sprintf('%d Artikel betroffen.',$ja),$K);}}elseif(!is_string($Gc=get_file("csv_file",true)))$l=upload_error($Gc);elseif(!preg_match('~~u',$Gc))$l='Die Datei muss UTF-8 kodiert sein.';else{save_settings(array("output"=>$ia["output"],"format"=>$_POST["separator"]),"adminer_import");$K=true;$ab=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Gc,$ve);$ja=count($ve[0]);driver()->begin();$Xg=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$N=array();foreach($ve[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Xg]*)$Xg~",$X.$Xg,$we);if(!$z&&!array_diff($we[1],$ab)){$ab=$we[1];$ja--;}else{$Q=array();foreach($we[1]as$t=>$Xa)$Q[idf_escape($ab[$t])]=($Xa==""&&$n[$ab[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$Xa)?str_replace('""','"',substr($Xa,1,-1)):$Xa));$N[]=$Q;}}$K=(!$N||driver()->insertUpdate($a,$N,$ig));if($K)driver()->commit();queries_redirect(remove_from_uri("page"),lang_format(array('%d Datensatz wurde importiert.','%d Datensätze wurden importiert.'),$ja),$K);driver()->rollback();}}}$Bh=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
page_header('Daten zeigen von'.": $Bh",$l);$Q=null;if(isset($Gg["insert"])||!support("table")){$Jf=array();foreach((array)$_GET["where"]as$X){if(isset($Pc[$X["col"]])&&count($Pc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Jf["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$Q=$Jf?"&".http_build_query($Jf):"";}adminer()->selectLinks($S,$Q);if(!$e&&support("table"))echo"<p class='error'>".'Auswahl der Tabelle fehlgeschlagen'.($n?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($O,$e);adminer()->selectSearchPrint($Z,$Rg,$x);adminer()->selectOrderPrint($uf,$vf,$x);adminer()->selectLimitPrint($_);adminer()->selectLengthPrint($Oh);adminer()->selectActionPrint($x);echo"</form>\n";$F=$_GET["page"];$Sc=null;if($F=="last"){$Sc=get_val(count_rows($a,$Z,$Rd,$s));$F=floor(max(0,intval($Sc)-1)/$_);}$Sg=$O;$ad=$s;if(!$Sg){$Sg[]="*";$nb=convert_fields($e,$n,$O);if($nb)$Sg[]=substr($nb,2);}foreach($O
as$z=>$X){$m=$n[idf_unescape($X)];if($m&&($ra=convert_field($m)))$Sg[$z]="$ra AS $X";}if(!$Rd&&$qi){foreach($qi
as$z=>$X){$Sg[]=idf_escape($z);if($ad)$ad[]=idf_escape($z);}}$K=driver()->select($a,$Sg,$Z,$ad,$uf,$_,$F,true);if(!$K)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$F)$K->seek($_*$F);$ec=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$N=array();while($M=$K->fetch_assoc()){if($F&&JUSH=="oracle")unset($M["RNUM"]);$N[]=$M;}if($_GET["page"]!="last"&&$_&&$s&&$Rd&&JUSH=="sql")$Sc=get_val(" SELECT FOUND_ROWS()");if(!$N)echo"<p class='message'>".'Keine Datensätze.'."\n";else{$za=adminer()->backwardKeys($a,$Bh);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$s&&$O?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Ändern'."</a>");$Ue=array();$Vc=array();reset($O);$tg=1;foreach($N[0]as$z=>$X){if(!isset($qi[$z])){$X=idx($_GET["columns"],key($O))?:array();$m=$n[$O?($X?$X["col"]:current($O)):$z];$E=($m?adminer()->fieldName($m,$tg):($X["fun"]?"*":h($z)));if($E!=""){$tg++;$Ue[$z]=$E;$d=idf_escape($z);$qd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$Kb="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($z))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$Uc=apply_sql_function($X["fun"],$E);$hh=isset($m["privileges"]["order"])||$Uc!=$E;echo($hh?"<a href='".h($qd.($uf[0]==$d||$uf[0]==$z?$Kb:''))."'>$Uc</a>":$Uc);$Ge=($hh?"<a href='".h($qd.$Kb)."' title='".'absteigend'."' class='text'> ↓</a>":'');if(!$X["fun"]&&isset($m["privileges"]["where"])){$Ge
.='<a href="#fieldset-search" title="'.'Suchen'.'" class="text jsonly"> =</a>';$Ge
.=script("qsl('a').onclick = partial(selectSearch, '".js_escape($z)."');");}echo($Ge?"<span class='column hidden'>$Ge</span>":"");}$Vc[$z]=$X["fun"];next($O);}}$me=array();if($_GET["modify"]){foreach($N
as$M){foreach($M
as$z=>$X)$me[$z]=max($me[$z],min(40,strlen(utf8_decode($X))));}}echo($za?"<th>".'Relationen':"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($N,$Pc)as$Se=>$M){$ni=unique_array($N[$Se],$x);if(!$ni){$ni=array();reset($O);foreach($N[$Se]as$z=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($O)))$ni[$z]=$X;next($O);}}$oi="";foreach($ni
as$z=>$X){$m=(array)$n[$z];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$z:"CONVERT($z USING ".charset(connection()).")").")";$X=md5($X);}$oi
.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($z));}echo"<tr>".(!$s&&$O?"":"<td>".checkbox("check[]",substr($oi,1),in_array(substr($oi,1),(array)$_POST["check"])).($Rd||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$oi)."' class='edit'>".'bearbeiten'."</a>"));reset($O);foreach($M
as$z=>$X){if(isset($Ue[$z])){$d=current($O);$m=(array)$n[$z];if($X!=""&&(!isset($ec[$z])||$ec[$z]!=""))$ec[$z]=(is_mail($X)?$Ue[$z]:"");$A="";if(is_blob($m)&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$oi;if(!$A&&$X!==null){foreach((array)$Pc[$z]as$p){if(count($Pc[$z])==1||end($p["source"])==$z){$A="";foreach($p["source"]as$t=>$ih)$A
.=where_link($t,$p["target"][$t],$N[$Se][$ih]);$A=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$A;if($p["ns"])$A=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$A);if(count($p["source"])==1)break;}}}if($d=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$ni))$A
.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($ni
as$Yd=>$W)$A
.=where_link($t++,$Yd,$W);}$rd=select_value($X,$A,$m,$Oh);$u=h("val[$oi][".bracket_escape($z)."]");$fg=idx(idx($_POST["val"],$oi),bracket_escape($z));$Zb=!is_array($M[$z])&&is_utf8($rd)&&$N[$Se][$z]==$M[$z]&&!$Vc[$z]&&!$m["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$d,$C)?$n[idf_unescape($C[2])]["type"]:$m["type"]);$Nh=preg_match('~text|json|lob~',$U);$Sd=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$d);echo"<td id='$u'".($Sd&&($X===null||is_numeric(strip_tags($rd))||$U=="money")?" class='number'":"");if(($_GET["modify"]&&$Zb&&$X!==null)||$fg!==null){$ed=h($fg!==null?$fg:$M[$z]);echo">".($Nh?"<textarea name='$u' cols='30' rows='".(substr_count($M[$z],"\n")+1)."'>$ed</textarea>":"<input name='$u' value='$ed' size='$me[$z]'>");}else{$re=strpos($rd,"<i>…</i>");echo" data-text='".($re?2:($Nh?1:0))."'".($Zb?"":" data-warning='".h('Benutzen Sie den Link zum Bearbeiten dieses Wertes.')."'").">$rd";}}next($O);}if($za)echo"<td>";adminer()->backwardKeysPrint($za,$N[$Se]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($N||$F){$rc=true;if($_GET["page"]!="last"){if(!$_||(count($N)<$_&&($N||!$F)))$Sc=($F?$F*$_:0)+count($N);elseif(JUSH!="sql"||!$Rd){$Sc=($Rd?false:found_rows($S,$Z));if(intval($Sc)<max(1e4,2*($F+1)*$_))$Sc=first(slow_query(count_rows($a,$Z,$Rd,$s)));elseif(JUSH=='sql'||JUSH=='pgsql')$rc=false;}}$Hf=($_&&($Sc===false||$Sc>$_||$F));if($Hf)echo(($Sc===false?count($N)+1:$Sc-$F*$_)>$_?'<p><a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" class="loadmore">'.'Mehr Daten laden'.'</a>'.script("qsl('a').onclick = partial(selectLoadMore, $_, '".'Lade'."…');",""):''),"\n";echo"<div class='footer'><div>\n";if($Hf){$_e=($Sc===false?$F+(count($N)>=$_?2:1):floor(($Sc-1)/$_));echo"<fieldset>";if(JUSH!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".'Seite'."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".'Seite'."', '".($F+1)."')); return false; };"),pagination(0,$F).($F>5?" …":"");for($t=max(1,$F-4);$t<min($_e,$F+5);$t++)echo
pagination($t,$F);if($_e>0)echo($F+5<$_e?" …":""),($rc&&$Sc!==false?pagination($_e,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$_e'>".'letzte'."</a>");}else
echo"<legend>".'Seite'."</legend>",pagination(0,$F).($F>1?" …":""),($F?pagination($F,$F):""),($_e>$F?pagination($F+1,$F).($_e>$F+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Gesamtergebnis'."</legend>";$Qb=($rc?"":"~ ").$Sc;$of="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Qb' : checked); selectCount('selected2', this.checked || !checked ? '$Qb' : checked);";echo
checkbox("all",1,0,($Sc!==false?($rc?"":"~ ").lang_format(array('%d Datensatz','%d Datensätze'),$Sc):""),$of)."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Ändern</legend><div>
<input type="submit" value="Speichern"',($_GET["modify"]?'':' title="'.'Ctrl+Klick zum Bearbeiten des Wertes.'.'"'),'>
</div></fieldset>
<fieldset><legend>Ausgewählte <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="Bearbeiten">
<input type="submit" name="clone" value="Klonen">
<input type="submit" name="delete" value="Entfernen">',confirm(),'</div></fieldset>
';$Qc=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Qc['sql']);break;}}if($Qc){print_fieldset("export",'Exportieren'." <span id='selected2'></span>");$Ff=adminer()->dumpOutput();echo($Ff?html_select("output",$Ff,$ia["output"])." ":""),html_select("format",$Qc,$ia["format"])," <input type='submit' name='export' value='".'Exportieren'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($ec,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<a href='#import'>".'Importieren'."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ",file_input("<input type='file' name='csv_file'> ".html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"])." <input type='submit' name='import' value='".'Importieren'."'>"),"</span>";echo
input_token(),"</form>\n",(!$s&&$O?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$qh=isset($_GET["status"]);page_header($qh?'Status':'Variablen');$Ei=($qh?adminer()->showStatus():adminer()->showVariables());if(!$Ei)echo"<p class='message'>".'Keine Datensätze.'."\n";else{echo"<table>\n";foreach($Ei
as$M){echo"<tr>";$z=array_shift($M);echo"<th><code class='jush-".JUSH.($qh?"status":"set")."'>".h($z)."</code>";foreach($M
as$X)echo"<td>".nl_br(h($X));}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$zh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$E=>$S){json_row("Comment-$E",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$z)json_row("$z-$E",h($S[$z]));foreach($zh+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($S[$z]!=""){$X=format_number($S[$z]);if($X>=0)json_row("$z-$E",($z=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($zh[$z]))$zh[$z]+=($S["Engine"]!="InnoDB"||$z!="Data_free"?$S[$z]:0);}elseif(array_key_exists($z,$S))json_row("$z-$E","?");}}}foreach($zh
as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$Hh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Hh&&!$l&&!$_POST["search"]){$K=true;$D="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$K=truncate_tables($_POST["tables"]);$D='Tabellen wurden geleert (truncate).';}elseif($_POST["move"]){$K=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tabellen verschoben.';}elseif($_POST["copy"]){$K=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tabellen wurden kopiert.';}elseif($_POST["drop"]){if($_POST["views"])$K=drop_views($_POST["views"]);if($K&&$_POST["tables"])$K=drop_tables($_POST["tables"]);$D='Tabellen wurden entfernt (drop).';}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$M)$D
.="<b>".h($R)."</b>: ".h($M["integrity_check"])."<br>";}}elseif(JUSH!="sql"){$K=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tabellen wurden optimiert.';}elseif(!$_POST["tables"])$D='Keine Tabellen.';elseif($K=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($M=$K->fetch_assoc())$D
.="<b>".h($M["Table"])."</b>: ".h($M["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$D,$K);}page_header(($_GET["ns"]==""?'Datenbank'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tabellen und Views'."</h3>\n";$Gh=tables_list();if(!$Gh)echo"<p class='message'>".'Keine Tabellen.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Suche in Tabellen'." <span id='selected2'></span></legend><div>",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," <input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".'Suchen'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'<thead><tr class="wrap">','<td><input id="check-all" type="checkbox" class="jsonly">'.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),'<th>'.'Tabelle';$e=array("Engine"=>array('Speicher-Engine'.doc_link(array('sql'=>'storage-engines.html'))));if(collations())$e["Collation"]=array('Kollation'.doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')));if(function_exists('Adminer\alter_table'))$e["Data_length"]=array('Datengröße'.doc_link(array('sql'=>'show-table-status.html',)),"create",'Tabelle ändern');if(support('indexes'))$e["Index_length"]=array('Indexgröße'.doc_link(array('sql'=>'show-table-status.html',)),"indexes",'Indizes ändern');$e["Data_free"]=array('Freier Bereich'.doc_link(array('sql'=>'show-table-status.html')),"edit",'Neuer Datensatz');if(function_exists('Adminer\alter_table'))$e["Auto_increment"]=array('Auto-Inkrement'.doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),"auto_increment=1&create",'Tabelle ändern');$e["Rows"]=array('Datensätze'.doc_link(array('sql'=>'show-table-status.html',)),"select",'Daten auswählen');if(support("comment"))$e["Comment"]=array('Kommentar'.doc_link(array('sql'=>'show-table-status.html',)));foreach($e
as$d)echo"<td>$d[0]";echo"</thead>\n";$T=0;foreach($Gh
as$E=>$U){$Hi=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$E);echo'<tr><td>'.checkbox(($Hi?"views[]":"tables[]"),$E,in_array("$E",$Hh,true),"","","",$u),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($E)."' title='".'Struktur anzeigen'."' id='$u'>".h($E).'</a>':h($E));if($Hi&&!preg_match('~materialized~i',$U)){$Sh='View';echo'<td colspan="6">'.(support("view")?"<a href='".h(ME)."view=".urlencode($E)."' title='".'View ändern'."'>$Sh</a>":$Sh),'<td align="right"><a href="'.h(ME)."select=".urlencode($E).'" title="'.'Daten auswählen'.'">?</a>';}else{foreach($e
as$z=>$d){$u=" id='$z-".h($E)."'";echo($d[1]?"<td align='right'><a href='".h(ME."$d[1]=").urlencode($E)."'$u title='$d[2]'>?</a>":"<td id='$z-".h($E)."'>");}$T++;}echo"\n";}echo"<tr><td><th>".sprintf('%d insgesamt',count($Gh)),"<td>".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo($e[$z]?"<td align='right' id='sum-$z'>":"");echo"\n","</table>\n",script("ajaxSetHtml('".js_escape(ME)."script=db');"),"</div>\n";if(!information_schema(DB)){$Ci="<input type='submit' value='".'Vacuum'."'> ".on_help("'VACUUM'");$rf="<input type='submit' name='optimize' value='".'Optimieren'."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");$jg=(JUSH=="sqlite"?$Ci."<input type='submit' name='check' value='".'Prüfen'."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$Ci.$rf:(JUSH=="sql"?"<input type='submit' value='".'Analysieren'."'> ".on_help("'ANALYZE TABLE'").$rf."<input type='submit' name='check' value='".'Prüfen'."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".'Reparieren'."'> ".on_help("'REPAIR TABLE'"):""))).(function_exists('Adminer\truncate_tables')?"<input type='submit' name='truncate' value='".'Leeren (truncate)'."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm():"").(function_exists('Adminer\drop_tables')?"<input type='submit' name='drop' value='".'Entfernen'."'>".on_help("'DROP TABLE'").confirm():"");echo($jg?"<div class='footer'><div>\n<fieldset><legend>".'Ausgewählte'." <span id='selected'></span></legend><div>$jg\n</div></fieldset>\n":"");$i=(support("scheme")?adminer()->schemas():adminer()->databases());$Qg="";if(count($i)!=1&&JUSH!="sqlite"){echo"<fieldset><legend>".'In andere Datenbank verschieben'." <span id='selected3'></span></legend><div>";$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo($i?html_select("target",$i,$j):'<input name="target" value="'.h($j).'" autocapitalize="off">'),"</label> <input type='submit' name='move' value='".'Verschieben'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Kopieren'."'> ".checkbox("overwrite",1,$_POST["overwrite"],'überschreiben'):""),"</div></fieldset>\n";$Qg=" selectCount('selected3', formChecked(this, /^(tables|views)\[/));";}echo"<input type='hidden' name='all' value=''>",script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $T);":"")."$Qg }"),input_token(),"</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo(function_exists('Adminer\alter_table')?"<p class='links'><a href='".h(ME)."create='>".'Tabelle erstellen'."</a>\n":''),(support("view")?"<a href='".h(ME)."view='>".'View erstellen'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routinen'."</h3>\n";$Kg=routines();if($Kg){echo"<table class='odds'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Typ'.'<td>'.'Typ des Rückgabewertes'."<td></thead>\n";foreach($Kg
as$M){$E=($M["SPECIFIC_NAME"]==$M["ROUTINE_NAME"]?"":"&name=".urlencode($M["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($M["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($M["SPECIFIC_NAME"]).$E).'">'.h($M["ROUTINE_NAME"]).'</a>','<td>'.h($M["ROUTINE_TYPE"]),'<td>'.h($M["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($M["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($M["SPECIFIC_NAME"]).$E).'">'.'Ändern'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Prozedur erstellen'.'</a>':'').'<a href="'.h(ME).'function=">'.'Funktion erstellen'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Ereignisse'."</h3>\n";$N=get_rows("SHOW EVENTS");if($N){echo"<table>\n","<thead><tr><th>".'Name'."<td>".'Zeitplan'."<td>".'Start'."<td>".'Ende'."<td></thead>\n";foreach($N
as$M)echo"<tr>","<th>".h($M["Name"]),"<td>".($M["Execute at"]?'Zur angegebenen Zeit'."<td>".$M["Execute at"]:'Jede'." ".$M["Interval value"]." ".$M["Interval field"]."<td>$M[Starts]"),"<td>$M[Ends]",'<td><a href="'.h(ME).'event='.urlencode($M["Name"]).'">'.'Ändern'.'</a>';echo"</table>\n";$pc=get_val("SELECT @@event_scheduler");if($pc&&$pc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($pc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Ereignis erstellen'."</a>\n";}}}}page_footer();