A\0BҶU JѶSJF`Q}\"^6Cfvs}sGP▨d1T \\vZ\0P2@t\0S#N#+6A})\"`AZs\$K.NkyT̙6X;tVimOh4b\\?1a˰=T^t=p9h9Ҍ*7\0000C<P\\oC|!p4ć\\YS/yQ1KHDEtķXI\nsB3\$p.RLY&Y<\$Nr8iec#|P:K6teMz2D;,>]\"`Xĩ.ҡ}G&Ԟtjit9D@\"@:D8Ö^\"R+ldB +YZ#djBl@6E(4[K}04BjMG\"Cir)a`, t%8\"\\J\na9'\09ET\"9M[DE(.cbpOZXKIq/&\"f5nqy<'\"ԃ\"U:,hLJ+cj.H\"0Q\nRȭ@Frf!9ÖAD9ۻ a\$T}ra'Ź3`읣EGhZQH\nkWf]K'Q^6H\rlR`9J4rDDDt\nfLهwbRdHx2GXZG0=B# !݊CR&,ԠV`@R:֛쏁64xkI XWl#\$\$<+ Q8 2-u%)x(JAa<'Ш:DL=S8rEU<@9äK~\"G4N\"xS\nDLIdΆ4Z s.b耨40T\n:Ҳ[4 Ȃ`AԶ52`% B4Z1@(I 8PT*\0B`EK\rb҆\$h\$dxGtod]2EҫQ1PJ(+\n|O!tB5V[r0\0`ۂ͝5ChPH!P\"T\0yͲMwtBX\"DAwMcZ#S}\"ej8Ey1&kđP\\c'P(eWA6PΌC\na*xt!\$T%JQısJS*lh[`I\r0r\rᴄADꁢ}=\nH`I5R]:n\nzP1Ҭ@1y8w)ղvZ<+F'DSg^;HE^7ͷFuOk.#b-/T!\$c,X3'G\\\0^ºDzhM.\0O i?#D%(#O3_2Бg\"RRi4Lr(zLfNjn9R\0n-*\"EȜqBLtJ D䰹܁8OR@tgIGb,P`/Auz+EOUK~&'S\\>*H>)]zYu<8y38-H.}rYmj #\"7sUlo#ŬFlu6UVA\r5i`ѧu\r)J2FGr2ih݃Oxl<1fp,zİh7\"!C(.28C/DL^˞+;!s-nahMXACP5 RF#n2IJhId/Fdj6\n6/!( ~If\n(rMkMp<\\4Rc4XjeBTeJ6\0fp00fİѰ}Aͭ_mh\"Q\n/c6Ƨ~%'4(h>JЀí5xBi&E\"/Xz,7:Ω**O:`RM QH!TӢkp\00wؗ,,_bA, Ũ\n`ڊ`++}:NjկlRxlӁ8L>:t.#9Rmulti=$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($bc,$V,$H,array$vf=array()){$vf[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$vf[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
\PDO($bc,$V,$H,$vf);}catch(\Exception$xc){return$xc->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
quote($wh){return$this->pdo->quote($wh);}function
query($J,$oi=false){$K=$this->pdo->query($J);$this->error="";if(!$K){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=lang(21);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($Se){$L=$this->fetch($Se);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($if){for($t=0;$t<$if;$t++)$this->fetch();}}}function
add_driver($u,$D){SqlDriver::$drivers[$u]=$D;}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$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$xf=array(),$z=1,$F=0,$mg=false){$Xd=(count($s)selectQueryBuild($O,$Z,$s,$xf,$z,$F);if(!$J)$J="SELECT".limit(($_GET["page"]!="last"&&$z&&$s&&$Xd&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$O)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($s&&$Xd?"\nGROUP BY ".implode(", ",$s):"").($xf?"\nORDER BY ".implode(", ",$xf):""),$z,($F?$z*$F:0),"\n");$sh=microtime(true);$L=$this->conn->query($J);if($mg)echo
adminer()->selectQuery($J,$sh,!$L);return$L;}function
delete($R,$ug,$z=0){$J="FROM ".table($R);return
queries("DELETE".($z?limit1($R,$J,$ug):" $J$ug"));}function
update($R,array$Q,$ug,$z=0,$ah="\n"){$Di=array();foreach($Q
as$y=>$X)$Di[]="$y = $X";$J=table($R)." SET$ah".implode(",$ah",$Di);return
queries("UPDATE".($z?limit1($R,$J,$ug,$ah):" $J$ug"));}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$lg){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($J,$Th){}function
convertSearch($v,array$X,array$m){return$v;}function
convertOperator($sf){return$sf;}function
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):$X);}function
quoteBinary($Pg){return
q($Pg);}function
warnings(){}function
tableHelp($D,$be=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$Dh){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
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($R)."
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"
Adminer";}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($Rc=true){return
get_databases($Rc);}function
pluginsLinks(){}function
operators(){return
driver()->operators;}function
schemas(){return
schemas();}function
queryTimeout(){return
2;}function
headers(){}function
csp(array$xb){return$xb;}function
head($Ab=null){return
true;}function
bodyClass(){echo" adminer";}function
css(){$L=array();foreach(array("","-dark")as$Se){$o="adminer$Se.css";if(file_exists($o)){$Mc=file_get_contents($o);$L["$o?v=".crc32($Mc)]=($Se?"dark":(preg_match('~prefers-color-scheme:\s*dark~',$Mc)?'':'light'));}}return$L;}function
loginForm(){echo"\n",adminer()->loginFormField('driver','| '.lang(22).' | ',input_hidden("auth[driver]","server")."MySQL / MariaDB"),adminer()->loginFormField('server',' |
|---|
| '.lang(23).' | ',''),adminer()->loginFormField('username',' |
|---|
| '.lang(24).' | ',''),adminer()->loginFormField('password',' |
|---|
| '.lang(25).' | ',''),adminer()->loginFormField('db',' |
|---|
| '.lang(26).' | ','')," |
|---|
\n","\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],lang(28))."\n";}function
loginFormField($D,$qd,$Y){return$qd.$Y."\n";}function
login($xe,$H){if($H=="")return
lang(29,target_blank());return
true;}function
tableName(array$Dh){return
h($Dh["Name"]);}function
fieldName(array$m,$xf=0){$U=$m["full_type"];$hb=$m["comment"];return''.h($m["field"]).'';}function
selectLinks(array$Dh,$Q=""){$D=$Dh["Name"];echo'
';$we=array("select"=>lang(30));if(support("table")||support("indexes"))$we["table"]=lang(31);$be=false;if(support("table")){$be=is_view($Dh);if($be)$we["view"]=lang(32);else$we["create"]=lang(33);}if($Q!==null)$we["edit"]=lang(34);foreach($we
as$y=>$X)echo" $X";echo
doc_link(array(JUSH=>driver()->tableHelp($D,$be)),"?"),"\n";}function
foreignKeys($R){return
foreign_keys($R);}function
backwardKeys($R,$Ch){return
array();}function
backwardKeysPrint(array$Ba,array$M){}function
selectQuery($J,$sh,$Hc=false){$L="
\n";if(!$Hc&&($Li=driver()->warnings())){$u="warnings";$L=", ".lang(35)."".script("qsl('a').onclick = partial(toggle, '$u');","")."$L\n$Li
\n";}return"".h(str_replace("\n"," ",$J))." (".format_time($sh).")".(support("sql")?" ".lang(10)."":"").$L;}function
sqlCommandQuery($J){return
shorten_utf8(trim($J),1000);}function
sqlPrintAfter(){}function
rowDescription($R){return"";}function
rowDescriptions(array$N,array$Uc){return$N;}function
selectLink($X,array$m){}function
selectVal($X,$_,array$m,$Gf){$L=($X===null?"NULL":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"$X":(preg_match('~json~',$m["type"])?"$X":$X)));if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!is_utf8($X))$L="".lang(36,strlen($Gf))."";return($_?"$L":$L);}function
editVal($X,array$m){return$X;}function
config(){return
array();}function
tableStructurePrint(array$n,$Dh=null){echo"
\n";}function
tableIndexesPrint(array$x,array$Dh){$Of=false;foreach($x
as$D=>$w)$Of|=!!$w["partial"];echo"\n";$Ib=first(driver()->indexAlgorithms($Dh));foreach($x
as$D=>$w){ksort($w["columns"]);$mg=array();foreach($w["columns"]as$y=>$X)$mg[]="".h($X)."".($w["lengths"][$y]?"(".$w["lengths"][$y].")":"").($w["descs"][$y]?" DESC":"");echo"","| $w[type]".($Ib&&$w['algorithm']!=$Ib?" ($w[algorithm])":"")," | ".implode(", ",$mg);if($Of)echo" | ".($w['partial']?"WHERE ".h($w['partial']):"");echo"\n";}echo" |
\n";}function
selectColumnsPrint(array$O,array$d){print_fieldset("select",lang(43),$O);$t=0;$O[""]=array();foreach($O
as$y=>$X){$X=idx($_GET["columns"],$y,array());$c=select_input(" name='columns[$t][col]'",$d,$X["col"],($y!==""?"selectFieldChange":"selectAddRow"));echo"".(driver()->functions||driver()->grouping?html_select("columns[$t][fun]",array(-1=>"")+array_filter(array(lang(44)=>driver()->functions,lang(45)=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($y!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($c)":$c)."
\n";$t++;}echo"\n";}function
selectSearchPrint(array$Z,array$d,array$x){print_fieldset("search",lang(46),$Z);foreach($x
as$t=>$w){if($w["type"]=="FULLTEXT")echo"(".implode(", ",array_map('Adminer\h',$w["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"
\n";}$Pa="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"".select_input(" name='where[$t][col]'",$d,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(47).")"),html_select("where[$t][op]",adminer()->operators(),$X["op"],$Pa),"",script("mixin(qsl('input'), {oninput: function () { $Pa }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}echo"\n";}function
selectOrderPrint(array$xf,array$d,array$x){print_fieldset("sort",lang(48),$xf);$t=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"".select_input(" name='order[$t]'",$d,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$y]),lang(49))."
\n";$t++;}}echo"".select_input(" name='order[$t]'",$d,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(49))."
\n","\n";}function
selectLimitPrint($z){echo"\n";}function
selectLengthPrint($Rh){if($Rh!==null)echo"\n";}function
selectActionPrint(array$x){echo"\n";}function
selectCommandPrint(){return!information_schema(DB);}function
selectImportPrint(){return!information_schema(DB);}function
selectEmailPrint(array$jc,array$d){}function
selectColumnsProcess(array$d,array$x){$O=array();$s=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$O[$y]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$s[]=$O[$y];}}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$y=>$X){$bb=$X["col"];if("$bb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$lb=array();foreach(($bb!=""?array($bb=>$n[$bb]):$n)as$D=>$m){$jg="";$kb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Dd=process_length($X["val"]);$kb
.=" ".($Dd!=""?$Dd:"(NULL)");}elseif($X["op"]=="SQL")$kb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$B))$kb=" $B[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$jg="$X[op](".q($X["val"]).", ";$kb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$kb
.=" ".adminer()->processInput($m,$X["val"]);if($bb!=""||(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"]))))$lb[]=$jg.driver()->convertSearch(idf_escape($D),$X,$m).$kb;}$L[]=(count($lb)==1?$lb[0]:($lb?"(".implode(" OR ",$lb).")":"1 = 0"));}}return$L;}function
selectOrderProcess(array$n,array$x){$L=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$L[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$y])?" 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$Uc){return
false;}function
selectQueryBuild(array$O,array$Z,array$s,array$xf,$z,$F){return"";}function
messageQuery($J,$Sh,$Hc=false){restart_session();$sd=&get_session("queries");if(!idx($sd,$_GET["db"]))$sd[$_GET["db"]]=array();if(strlen($J)>1e6)$J=preg_replace('~[\x80-\xFF]+$~','',substr($J,0,1e6))."\n…";$sd[$_GET["db"]][]=array($J,time(),$Sh);$ph="sql-".count($sd[$_GET["db"]]);$L="".lang(54)."\n";if(!$Hc&&($Li=driver()->warnings())){$u="warnings-".count($sd[$_GET["db"]]);$L="".lang(35).", $L\n$Li
\n";}return" ".@date("H:i:s").""." $L".shorten_utf8($J,1000)."
".($Sh?"
($Sh)":'').(support("sql")?'
'.lang(10).'':'').'
';}function
editRowPrint($R,array$n,$M,$vi){}function
editFunctions(array$m){$L=($m["null"]?"NULL/":"");$vi=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$y=>$bd){if(!$y||(!isset($_GET["call"])&&$vi)){foreach($bd
as$Xf=>$X){if(!$Xf||preg_match("~$Xf~",$m["type"]))$L
.="/$X";}}if($y&&$bd&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$L
.="/SQL";}if($m["auto_increment"]&&!$vi)$L=lang(41);return
explode("/",$L);}function
editInput($R,array$m,$wa,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").($m["null"]?" ":"").enum_input("radio",$wa,$m,$Y,$Y===0?0:null);return"";}function
editHint($R,array$m,$Y){return"";}function
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$D=$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($D)." $r $L";elseif(preg_match('~^[+-] interval$~',$r))$L=idf_escape($D)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$L);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$L="$r(".idf_escape($D).", $L)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$L="$r($L)";return
unconvert_field($m,$L);}function
dumpOutput(){$L=array('text'=>lang(55),'file'=>lang(56));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,$yh,$be=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($yh)dump_csv(array_keys(fields($R)));}else{if($be==2){$n=array();foreach(fields($R)as$D=>$m)$n[]=idf_escape($D)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$yh);set_utf8mb4($h);if($yh&&$h){if($yh=="DROP+CREATE"||$be==1)echo"DROP ".($be==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($be==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
dumpData($R,$yh,$J){if($yh){$De=(JUSH=="sqlite"?0:1048576);$n=array();$_d=false;if($_POST["format"]=="sql"){if($yh=="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";$_d=true;break;}}}}$K=connection()->query($J,1);if($K){$Qd="";$La="";$fe=array();$cd=array();$_h="";$Kc=($R!=''?'fetch_assoc':'fetch_row');$tb=0;while($M=$K->$Kc()){if(!$fe){$Di=array();foreach($M
as$X){$m=$K->fetch_field();if(idx($n[$m->name],'generated')){$cd[$m->name]=true;continue;}$fe[]=$m->name;$y=idf_escape($m->name);$Di[]="$y = VALUES($y)";}$_h=($yh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Di):"").";\n";}if($_POST["format"]!="sql"){if($yh=="table"){dump_csv($fe);$yh="INSERT";}dump_csv($M);}else{if(!$Qd)$Qd="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$fe)).") VALUES";foreach($M
as$y=>$X){if($cd[$y]){unset($M[$y]);continue;}$m=$n[$y];$M[$y]=($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");}$Pg=($De?"\n":" ")."(".implode(",\t",$M).")";if(!$La)$La=$Qd.$Pg;elseif(JUSH=='mssql'?$tb%1000!=0:strlen($La)+4+strlen($Pg)+strlen($_h)<$De)$La
.=",$Pg";else{echo$La.$_h;$La=$Qd.$Pg;}}$tb++;}if($La)echo$La.$_h;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($_d)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
dumpFilename($zd){return
friendly_url($zd!=""?$zd:(SERVER!=""?SERVER:"localhost"));}function
dumpHeaders($zd,$Ue=false){$If=$_POST["output"];$Cc=(preg_match('~sql~',$_POST["format"])?"sql":($Ue?"tar":"csv"));header("Content-Type: ".($If=="gz"?"application/x-gzip":($Cc=="tar"?"application/x-tar":($Cc=="sql"||$If!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($If=="gz"){ob_start(function($wh){return
gzencode($wh);},1e6);}return$Cc;}function
dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function
importServerPath(){return"adminer.sql";}function
homepage(){echo''.($_GET["ns"]==""&&support("database")?''.lang(57)."\n":""),(support("scheme")?"".($_GET["ns"]!=""?lang(58):lang(59))."\n":""),($_GET["ns"]!==""?''.lang(60)."\n":""),(support("privileges")?"".lang(61)."\n":"");return
true;}function
navigation($Re){echo"
\n";switch_lang();if($Re=="auth"){$If="";foreach((array)$_SESSION["pwds"]as$Fi=>$ch){foreach($ch
as$P=>$Bi){$D=h(get_setting("vendor-$Fi-$P")?:get_driver($Fi));foreach($Bi
as$V=>$H){if($H!==null){$Gb=$_SESSION["db"][$Fi][$P][$V];foreach(($Gb?array_keys($Gb):array(""))as$j)$If
.="($D) ".h($V.($P!=""?"@".adminer()->serverName($P):"").($j!=""?" - $j":""))."\n";}}}}if($If)echo"\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Re&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Re);$ha=array();if(DB==""||!$Re){if(support("sql")){$ha[]="".lang(54)."";$ha[]="".lang(62)."";}$ha[]="".lang(63)."";}$Ed=$_GET["ns"]!==""&&!$Re&&DB!="";if($Ed)$ha[]='".lang(64)."";echo($ha?"\n".implode("\n",$ha)."\n":"");if($Ed){if($T)adminer()->tablesPrint($T);else
echo"
".lang(9)."
\n";}}}function
syntaxHighlighting(array$T){echo
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.3.0",true);if(support("sql")){echo"\n";}echo
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
databasesPrint($Re){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"\n";}function
tablesPrint(array$T){echo"".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
as$R=>$th){$R="$R";$D=adminer()->tableName($th);if($D!=""&&!$th["inherited"])echo'- ".lang(66)." ",(support("table")||support("indexes")?'$D":"$D")."\n";}echo"
\n";}}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($cg){if($cg===null){$cg=array();$Fa="adminer-plugins";if(is_dir($Fa)){foreach(glob("$Fa/*.php")as$o)$Fd=include_once"./$o";}$rd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Fa.php")){$Fd=include_once"./$Fa.php";if(is_array($Fd)){foreach($Fd
as$bg)$cg[get_class($bg)]=$bg;}else$this->error
.=lang(67,"$Fa.php",$rd)."
";}foreach(get_declared_classes()as$Ya){if(!$cg[$Ya]&&preg_match('~^Adminer\w~i',$Ya)){$Cg=new
\ReflectionClass($Ya);$nb=$Cg->getConstructor();if($nb&&$nb->getNumberOfRequiredParameters())$this->error
.=lang(68,$rd,"$Ya","$Fa.php")."
";else$cg[$Ya]=new$Ya;}}}$this->plugins=$cg;$ia=new
Adminer;$cg[]=$ia;$Cg=new
\ReflectionObject($ia);foreach($Cg->getMethods()as$Pe){foreach($cg
as$bg){$D=$Pe->getName();if(method_exists($bg,$D))$this->hooks[$D][]=$bg;}}}function
__call($D,array$Mf){$sa=array();foreach($Mf
as$y=>$X)$sa[]=&$Mf[$y];$L=null;foreach($this->hooks[$D]as$bg){$Y=call_user_func_array(array($bg,$D),$sa);if($Y!==null){if(!self::$append[$D])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,$E=null){$sa=func_get_args();$sa[0]=idx($this->translations[LANG],$v)?:$v;return
call_user_func_array('Adminer\lang_format',$sa);}}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($vd,$dg)=explode(":",$P,2);$rh=adminer()->connectSsl();if($rh)$this->ssl_set($rh['key'],$rh['cert'],$rh['ca'],'','');$L=@$this->real_connect(($P!=""?$vd: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($dg)?intval($dg):ini_get("mysqli.default_port")),(is_numeric($dg)?null:$dg),($rh?($rh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return($L?'':$this->error);}function
set_charset($Ra){if(parent::set_charset($Ra))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Ra");}function
next_result(){return
self::more_results()&&parent::next_result();}function
quote($wh){return"'".$this->escape_string($wh)."'";}}}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
lang(69,"'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($Ra){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Ra,$this->link))return
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Ra");}function
quote($wh){return"'".mysql_real_escape_string($wh,$this->link)."'";}function
select_db($Db){return
mysql_select_db($Db,$this->link);}function
query($J,$oi=false){$K=@($oi?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){$vf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$rh=adminer()->connectSsl();if($rh){if($rh['key'])$vf[\PDO::MYSQL_ATTR_SSL_KEY]=$rh['key'];if($rh['cert'])$vf[\PDO::MYSQL_ATTR_SSL_CERT]=$rh['cert'];if($rh['ca'])$vf[\PDO::MYSQL_ATTR_SSL_CA]=$rh['ca'];if(isset($rh['verify']))$vf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$rh['verify'];}return$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$P)),$V,$H,$vf);}function
set_charset($Ra){return$this->query("SET NAMES $Ra");}function
select_db($Db){return$this->query("USE ".idf_escape($Db));}function
query($J,$oi=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$oi);return
parent::query($J,$oi);}}}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($Pg=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$Pg;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(lang(70)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(71)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(72)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(73)=>array("enum"=>65535,"set"=>64),lang(74)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(75)=>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[lang(72)]["json"]=4294967295;if(min_version('',10.7,$f)){$this->types[lang(72)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types[lang(70)]["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"])?"UNHEX":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"GeomFromText":"")));}function
insert($R,array$Q){return($Q?parent::insert($R,$Q):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
insertUpdate($R,array$N,array$lg){$d=array_keys(reset($N));$jg="INSERT INTO ".table($R)." (".implode(", ",$d).") VALUES\n";$Di=array();foreach($d
as$y)$Di[$y]="$y = VALUES($y)";$_h="\nON DUPLICATE KEY UPDATE ".implode(", ",$Di);$Di=array();$se=0;foreach($N
as$Q){$Y="(".implode(", ",$Q).")";if($Di&&(strlen($jg)+$se+strlen($Y)+strlen($_h)>1e6)){if(!queries($jg.implode(",\n",$Di).$_h))return
false;$Di=array();$se=0;}$Di[]=$Y;$se+=strlen($Y)+2;}return
queries($jg.implode(",\n",$Di).$_h);}function
slowQuery($J,$Th){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Th FOR $J";elseif(preg_match('~^(SELECT\b)(.+)~is',$J,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($Th*1000).") */ $B[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($D,$be=false){$ze=($this->conn->flavor=='maria');if(information_schema(DB))return
strtolower("information-schema-".($ze?"$D-table/":str_replace("_","-",$D)."-table.html"));if(DB=="mysql")return($ze?"mysql$D-table/":"system-schema.html");}function
partitionsInfo($R){$Zc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$K=connection()->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Zc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$L=array();list($L["partition_by"],$L["partition"],$L["partitions"])=$K->fetch_row();$Tf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Zc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$L["partition_names"]=array_keys($Tf);$L["partition_values"]=array_values($Tf);return$L;}function
hasCStyleEscapes(){static$Ma;if($Ma===null){$qh=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Ma=(strpos($qh,'NO_BACKSLASH_ESCAPES')===false);}return$Ma;}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$Dh){return(preg_match('~^(MEMORY|NDB)$~',$Dh["Engine"])?array("HASH","BTREE"):array());}}function
idf_escape($v){return"`".str_replace("`","``",$v)."`";}function
table($v){return
idf_escape($v);}function
get_databases($Rc){$L=get_session("dbs");if($L===null){$J="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$L=($Rc?slow_query($J):get_vals($J));restart_session();set_session("dbs",$L);stop_session();}return$L;}function
limit($J,$Z,$z,$if=0,$ah=" "){return" $J$Z".($z?$ah."LIMIT $z".($if?" OFFSET $if":""):"");}function
limit1($R,$J,$Z,$ah="\n"){return
limit($J,$Z,1,0,$ah);}function
db_collation($j,array$b){$L=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$B))$L=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$B))$L=$b[$B[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($D="",$Ic=false){$L=array();foreach(get_rows($Ic?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$M){if($M["Engine"]=="InnoDB")$M["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$M["Comment"]);if(!isset($M["Engine"]))$M["Comment"]="";if($D!="")$M["Name"]=$D;$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){$ze=(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"];$dd=$M["GENERATION_EXPRESSION"];$Fc=$M["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Fc,$cd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Ae);$k=$M["COLUMN_DEFAULT"];if($k!=""){$ae=preg_match('~text|json~',$Ae[1]);if(!$ze&&$ae)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($ze||$ae){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($B){return
stripslashes(str_replace("''","'",$B[1]));},$k));}if(!$ze&&preg_match('~binary~',$Ae[1])&&preg_match('~^0x(\w*)$~',$k,$B))$k=pack("H*",$B[1]);}$L[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Ae[1],"length"=>$Ae[2],"unsigned"=>ltrim($Ae[3].$Ae[4]),"default"=>($cd?($ze?$dd:stripslashes($dd)):$k),"null"=>($M["IS_NULLABLE"]=="YES"),"auto_increment"=>($Fc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Fc,$B)?$B[1]:""),"collation"=>$M["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$M[PRIVILEGES],where,order")),"comment"=>$M["COLUMN_COMMENT"],"primary"=>($M["COLUMN_KEY"]=="PRI"),"generated"=>($cd[1]=="PERSISTENT"?"STORED":$cd[1]),);}return$L;}function
indexes($R,$g=null){$L=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$M){$D=$M["Key_name"];$L[$D]["type"]=($D=="PRIMARY"?"PRIMARY":($M["Index_type"]=="FULLTEXT"?"FULLTEXT":($M["Non_unique"]?($M["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$L[$D]["columns"][]=$M["Column_name"];$L[$D]["lengths"][]=($M["Index_type"]=="SPATIAL"?null:$M["Sub_part"]);$L[$D]["descs"][]=null;$L[$D]["algorithm"]=$M["Index_type"];}return$L;}function
foreign_keys($R){static$Xf='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$L=array();$ub=get_val("SHOW CREATE TABLE ".table($R),1);if($ub){preg_match_all("~CONSTRAINT ($Xf) FOREIGN KEY ?\\(((?:$Xf,? ?)+)\\) REFERENCES ($Xf)(?:\\.($Xf))? \\(((?:$Xf,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$ub,$Be,PREG_SET_ORDER);foreach($Be
as$B){preg_match_all("~$Xf~",$B[2],$lh);preg_match_all("~$Xf~",$B[5],$Mh);$L[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('Adminer\idf_unescape',$lh[0]),"target"=>array_map('Adminer\idf_unescape',$Mh[0]),"on_delete"=>($B[6]?:"RESTRICT"),"on_update"=>($B[7]?:"RESTRICT"),);}}return$L;}function
view($D){return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($D),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$y=>$X)sort($L[$y]);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,$db){return
queries("CREATE DATABASE ".idf_escape($j).($db?" COLLATE ".q($db):""));}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($D,$db){$L=false;if(create_database($D,$db)){$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,$D);drop_databases($L?array(DB):array());}return$L;}function
auto_increment(){$za=" 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)){$za="";break;}if($w["type"]=="PRIMARY")$za=" UNIQUE";}}return" AUTO_INCREMENT$za";}function
alter_table($R,$D,array$n,array$Tc,$hb,$mc,$db,$ya,$G){$qa=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;}$qa[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$qa[]="DROP ".idf_escape($m[0]);}$qa=array_merge($qa,$Tc);$th=($hb!==null?" COMMENT=".q($hb):"").($mc?" ENGINE=".q($mc):"").($db?" COLLATE ".q($db):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($G){$Tf=array();if($G["partition_by"]=='RANGE'||$G["partition_by"]=='LIST'){foreach($G["partition_names"]as$y=>$X){$Y=$G["partition_values"][$y];$Tf[]="\n PARTITION ".idf_escape($X)." VALUES ".($G["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$th
.="\nPARTITION BY $G[partition_by]($G[partition])";if($Tf)$th
.=" (".implode(",",$Tf)."\n)";elseif($G["partitions"])$th
.=" PARTITIONS ".(+$G["partitions"]);}elseif($G===null)$th
.="\nREMOVE PARTITIONING";if($R=="")return
queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$qa)."\n)$th");if($R!=$D)$qa[]="RENAME TO ".table($D);if($th)$qa[]=ltrim($th);return($qa?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$qa)):true);}function
alter_indexes($R,$qa){$Qa=array();foreach($qa
as$X)$Qa[]=($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(",",$Qa));}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,$Mh){$Fg=array();foreach($T
as$R)$Fg[]=table($R)." TO ".idf_escape($Mh).".".table($R);if(!$Fg||queries("RENAME TABLE ".implode(", ",$Fg))){$Mb=array();foreach($Ii
as$R)$Mb[table($R)]=view($R);connection()->select_db($Mh);$j=idf_escape(DB);foreach($Mb
as$D=>$Hi){if(!queries("CREATE VIEW $D AS ".str_replace(" $j."," ",$Hi["select"]))||!queries("DROP VIEW $j.$D"))return
false;}return
true;}return
false;}function
copy_tables(array$T,array$Ii,$Mh){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$D=($Mh==DB?table("copy_$R"):idf_escape($Mh).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $D"))||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M){$ii=$M["Trigger"];if(!queries("CREATE TRIGGER ".($Mh==DB?idf_escape("copy_$ii"):idf_escape($Mh).".".idf_escape($ii))." $M[Timing] $M[Event] ON $D FOR EACH ROW\n$M[Statement];"))return
false;}}foreach($Ii
as$R){$D=($Mh==DB?table("copy_$R"):idf_escape($Mh).".".table($R));$Hi=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $D"))||!queries("CREATE VIEW $D AS $Hi[select]"))return
false;}return
true;}function
trigger($D,$R){if($D=="")return
array();$N=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));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($D,$U){$oa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$mh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$oc=driver()->enumLength;$mi="((".implode("|",array_merge(array_keys(driver()->types()),$oa)).")\\b(?:\\s*\\(((?:[^'\")]|$oc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Xf="$mh*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$mi";$h=get_val("SHOW CREATE $U ".idf_escape($D),2);preg_match("~\\(((?:$Xf\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$mi\\s+":"")."(.*)~is",$h,$B);$n=array();preg_match_all("~$Xf\\s*,?~is",$B[1],$Be,PREG_SET_ORDER);foreach($Be
as$Lf)$n[]=array("field"=>str_replace("``","`",$Lf[2]).$Lf[3],"type"=>strtolower($Lf[5]),"length"=>preg_replace_callback("~$oc~s",'Adminer\normalize_enum',$Lf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Lf[8] $Lf[7]"))),"null"=>true,"full_type"=>$Lf[4],"inout"=>strtoupper($Lf[1]),"collation"=>strtolower($Lf[9]),);return
array("fields"=>$n,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($D)),)+($U!="FUNCTION"?array("definition"=>$B[11]):array("returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",));}function
routines(){return
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
routine_languages(){return
array();}function
routine_id($D,array$M){return
idf_escape($D);}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,$ya,$yh){$L=get_val("SHOW CREATE TABLE ".table($R),1);if(!$ya)$L=preg_replace('~ AUTO_INCREMENT=\d+~','',$L);return$L;}function
truncate_sql($R){return"TRUNCATE ".table($R);}function
use_sql($Db){return"USE ".idf_escape($Db);}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"])){$jg=(min_version(8)?"ST_":"");$L=$jg."GeomFromText($L, $jg"."SRID($m[field]))";}return$L;}function
support($Jc){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':'').')$~',$Jc);}function
kill_process($X){return
queries("KILL ".number($X));}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($Rg,$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($Vh,$l="",$Ka=array(),$Wh=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$Xh=$Vh.($Wh!=""?": $Wh":"");$Yh=strip_tags($Xh.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'
',$Yh,'
';$yb=adminer()->css();if(is_int(key($yb)))$yb=array_fill_keys($yb,'light');$od=in_array('light',$yb)||in_array('',$yb);$md=in_array('dark',$yb)||in_array('',$yb);$Ab=($od?($md?null:false):($md?:null));$Je=" media='(prefers-color-scheme: dark)'";if($Ab!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.3.0");if(adminer()->head($Ab))echo"\n","\n";foreach($yb
as$xi=>$Se){$wa=($Se=='dark'&&!$Ab?$Je:($Se=='light'&&$md?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$Gi=unserialize(file_get_contents($o));$sg="-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwqWOVuF5uw7/+Z70djoK
RlHIZFZPO0uYRezq90+7Amk+FDNd7KkL5eDve+vHRJBLAszF/7XKXe11xwliIsFs
DFWQlsABVZB3oisKCBEuI71J4kPH8dKGEWR9jDHFw3cWmoH3PmqImX6FISWbG3B8
h7FIx3jEaw5ckVPVTeo5JRm/1DZzJxjyDenXvBQ/6o9DgZKeNDgxwKzH+sw9/YCO
jHnq1cFpOIISzARlrHMa/43YfeNRAm/tsBXjSxembBPo7aQZLAWHmaj5+K19H10B
nCpz9Y++cipkVEiKRGih4ZEvjoFysEOdRLj6WiD/uUNky4xGeA6LaJqh5XpkFkcQ
fQIDAQAB
-----END PUBLIC KEY-----
";if(openssl_verify($Gi["version"],base64_decode($Gi["signature"]),$sg)==1)$_COOKIE["adminer_version"]=$Gi["version"];}echo
script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."', '".js_escape(ME)."', '".get_token()."')")."});
document.body.classList.replace('nojs', 'js');
const offlineMessage = '".js_escape(lang(77))."';
const thousandsSeparator = '".js_escape(lang(4))."';"),"\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"\n","".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ka!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'
'.get_driver(DRIVER).' » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$P=adminer()->serverName(SERVER);$P=($P!=""?$P:lang(23));if($Ka===false)echo"$P\n";else{echo"$P » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ka)))echo''.h(DB).' » ';if(is_array($Ka)){if($_GET["ns"]!="")echo''.h($_GET["ns"]).' » ';foreach($Ka
as$y=>$X){$Ob=(is_array($X)?$X[1]:h($X));if($Ob!="")echo"$Ob » ";}}echo"$Vh\n";}}echo"
$Xh
\n","
\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$xb){$pd=array();foreach($xb
as$y=>$X)$pd[]="$y $X";header("Content-Security-Policy: ".implode("; ",$pd));}adminer()->headers();}function
csp(){return
array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function
get_nonce(){static$ef;if(!$ef)$ef=base64_encode(rand_string());return$ef;}function
page_messages($l){$wi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Oe=idx($_SESSION["messages"],$wi);if($Oe){echo"
".implode("
\n
",$Oe)."
".script("messagesPrint();");unset($_SESSION["messages"][$wi]);}if($l)echo"
$l
\n";if(adminer()->error)echo"
".adminer()->error."
\n";}function
page_footer($Re=""){echo"
\n\n\n\n",script("setupSubmitHighlight(document);");}function
int32($We){while($We>=2147483648)$We-=4294967296;while($We<=-2147483649)$We+=4294967296;return(int)$We;}function
long2str(array$W,$Ki){$Pg='';foreach($W
as$X)$Pg
.=pack('V',$X);if($Ki)return
substr($Pg,0,end($W));return$Pg;}function
str2long($Pg,$Ki){$W=array_values(unpack('V*',str_pad($Pg,4*ceil(strlen($Pg)/4),"\0")));if($Ki)$W[]=strlen($Pg);return$W;}function
xxtea_mx($Ri,$Qi,$Ah,$ee){return
int32((($Ri>>5&0x7FFFFFF)^$Qi<<2)+(($Qi>>3&0x1FFFFFFF)^$Ri<<4))^int32(($Ah^$Qi)+($ee^$Ri));}function
encrypt_string($vh,$y){if($vh=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($vh,true);$We=count($W)-1;$Ri=$W[$We];$Qi=$W[0];$I=floor(6+52/($We+1));$Ah=0;while($I-->0){$Ah=int32($Ah+0x9E3779B9);$dc=$Ah>>2&3;for($Jf=0;$Jf<$We;$Jf++){$Qi=$W[$Jf+1];$Ve=xxtea_mx($Ri,$Qi,$Ah,$y[$Jf&3^$dc]);$Ri=int32($W[$Jf]+$Ve);$W[$Jf]=$Ri;}$Qi=$W[0];$Ve=xxtea_mx($Ri,$Qi,$Ah,$y[$Jf&3^$dc]);$Ri=int32($W[$We]+$Ve);$W[$We]=$Ri;}return
long2str($W,false);}function
decrypt_string($vh,$y){if($vh=="")return"";if(!$y)return
false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=str2long($vh,false);$We=count($W)-1;$Ri=$W[$We];$Qi=$W[0];$I=floor(6+52/($We+1));$Ah=int32($I*0x9E3779B9);while($Ah){$dc=$Ah>>2&3;for($Jf=$We;$Jf>0;$Jf--){$Ri=$W[$Jf-1];$Ve=xxtea_mx($Ri,$Qi,$Ah,$y[$Jf&3^$dc]);$Qi=int32($W[$Jf]-$Ve);$W[$Jf]=$Qi;}$Ri=$W[$We];$Ve=xxtea_mx($Ri,$Qi,$Ah,$y[$Jf&3^$dc]);$Qi=int32($W[0]-$Ve);$W[0]=$Qi;$Ah=int32($Ah-0x9E3779B9);}return
long2str($W,true);}$Zf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($y)=explode(":",$X);$Zf[$y]=$X;}}function
add_invalid_login(){$Da=get_temp_dir()."/adminer.invalid";foreach(glob("$Da*")?:array($Da)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Da-".rand_string());if(!$q)return;$Vd=unserialize(stream_get_contents($q));$Sh=time();if($Vd){foreach($Vd
as$Wd=>$X){if($X[0]<$Sh)unset($Vd[$Wd]);}}$Ud=&$Vd[adminer()->bruteForceKey()];if(!$Ud)$Ud=array($Sh+30*60,0);$Ud[1]++;file_write_unlock($q,serialize($Vd));}function
check_invalid_login(array&$Zf){$Vd=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$Vd=unserialize(stream_get_contents($q));file_unlock($q);break;}}$Ud=idx($Vd,adminer()->bruteForceKey(),array());$df=($Ud[1]>29?$Ud[0]-time():0);if($df>0)auth_error(lang(79,ceil($df/60)),$Zf);}$xa=$_POST["auth"];if($xa){session_regenerate_id();$Fi=$xa["driver"];$P=$xa["server"];$V=$xa["username"];$H=(string)$xa["password"];$j=$xa["db"];set_password($Fi,$P,$V,$H);$_SESSION["db"][$Fi][$P][$V][$j]=true;if($xa["permanent"]){$y=implode("-",array_map('base64_encode',array($Fi,$P,$V,$j)));$ng=adminer()->permanentLogin(true);$Zf[$y]="$y:".base64_encode($ng?encrypt_string($H,$ng):"");cookie("adminer_permanent",implode(" ",$Zf));}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$y)set_session($y,null);unset_permanent($Zf);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(80).' '.lang(81));}elseif($Zf&&!$_SESSION["pwds"]){session_regenerate_id();$ng=adminer()->permanentLogin();foreach($Zf
as$y=>$X){list(,$Xa)=explode(":",$X);list($Fi,$P,$V,$j)=array_map('base64_decode',explode("-",$y));set_password($Fi,$P,$V,decrypt_string(base64_decode($Xa),$ng));$_SESSION["db"][$Fi][$P][$V][$j]=true;}}function
unset_permanent(array&$Zf){foreach($Zf
as$y=>$X){list($Fi,$P,$V,$j)=array_map('base64_decode',explode("-",$y));if($Fi==DRIVER&&$P==SERVER&&$V==$_GET["username"]&&$j==DB)unset($Zf[$y]);}cookie("adminer_permanent",implode(" ",$Zf));}function
auth_error($l,array&$Zf){$dh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$dh]||$_GET[$dh])&&!$_SESSION["token"])$l=lang(82);else{restart_session();add_invalid_login();$H=get_password();if($H!==null){if($H===false)$l
.=($l?'
':'').lang(83,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($Zf);}}if(!$_COOKIE[$dh]&&$_GET[$dh]&&ini_bool("session.use_only_cookies"))$l=lang(84);$Mf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Mf["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(27),$l,null);echo"\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($Zf);page_header(lang(86),lang(87,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($vd,$dg)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$dg,$B)&&($B[1]<1024||$B[1]>65535))auth_error(lang(88),$Zf);check_invalid_login($Zf);$wb=adminer()->credentials();$f=Driver::connect($wb[0],$wb[1],$wb[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)));}}$xe=null;if(!is_object($f)||($xe=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($xe)?$xe:lang(89))).(preg_match('~^ | $~',get_password())?'
'.lang(90):'');auth_error($l,$Zf);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(78),lang(91));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($xa&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$Nd="max_input_vars";$He=ini_get($Nd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$y){$X=ini_get($y);if($X&&(!$He||$X<$He)){$Nd=$y;$He=$X;}}}$l=(!$_POST["token"]&&$He?lang(92,"'$Nd'"):lang(91).' '.lang(93));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=lang(94,"'post_max_size'");if(isset($_GET["sql"]))$l
.=' '.lang(95);}function
print_select_result($K,$g=null,array$Af=array(),$z=0){$we=array();$x=array();$d=array();$Ia=array();$ni=array();$L=array();for($t=0;(!$z||$t<$z)&&($M=$K->fetch_row());$t++){if(!$t){echo"":"".lang(12))."\n";return$L;}function
referencable_primary($Yg){$L=array();foreach(table_status('',true)as$Eh=>$R){if($Eh!=$Yg&&fk_support($R)){foreach(fields($Eh)as$m){if($m["primary"]){if($L[$Eh]){unset($L[$Eh]);break;}$L[$Eh]=$m;}}}}return$L;}function
textarea($D,$Y,$N=10,$eb=80){echo"";}function
select_input($wa,array$vf,$Y="",$qf="",$ag=""){$Lh=($vf?"select":"input");return"<$Lh$wa".($vf?">