_findRootClass($Ja),'Adminer'))$Ge[$Ja]=new$Ja;}}$this->plugins=$Ge;}function _callParent($s,$c){return call_user_func_array(array('parent',$s),$c);}function _applyPlugin($s,$c){foreach($this->plugins as$Fe){if(method_exists($Fe,$s)){switch(count($c)){case 0:$K=$Fe->$s();break;case 1:$K=$Fe->$s($c[0]);break;case 2:$K=$Fe->$s($c[0],$c[1]);break;case 3:$K=$Fe->$s($c[0],$c[1],$c[2]);break;case 4:$K=$Fe->$s($c[0],$c[1],$c[2],$c[3]);break;case 5:$K=$Fe->$s($c[0],$c[1],$c[2],$c[3],$c[4]);break;case 6:$K=$Fe->$s($c[0],$c[1],$c[2],$c[3],$c[4],$c[5]);break;default:trigger_error('Too many parameters.',E_USER_WARNING);}if($K!==null)return$K;}}return$this->_callParent($s,$c);}function _appendPlugin($s,$c){$K=$this->_callParent($s,$c);foreach($this->plugins as$Fe){if(method_exists($Fe,$s)){$Y=call_user_func_array(array($Fe,$s),$c);if($Y)$K+=$Y;}}return$K;}function dumpFormat(){$c=func_get_args();return$this->_appendPlugin(__FUNCTION__,$c);}function dumpOutput(){$c=func_get_args();return$this->_appendPlugin(__FUNCTION__,$c);}function editRowPrint($R,$n,$L,$Kg){$c=func_get_args();return$this->_appendPlugin(__FUNCTION__,$c);}function editFunctions($m){$c=func_get_args();return$this->_appendPlugin(__FUNCTION__,$c);}function name(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function credentials(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function connectSsl(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function permanentLogin($h=false){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function bruteForceKey(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function serverName($O){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function database(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function schemas(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function databases($mc=true){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function queryTimeout(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function headers(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function csp(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function head(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function css(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function loginForm(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function loginFormField($F,$Ec,$Y){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function login($rd,$_e){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function tableName($Vf){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function fieldName($m,$fe=0){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectLinks($Vf,$P=""){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function foreignKeys($R){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function backwardKeys($R,$Uf){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function backwardKeysPrint($va,$L){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectQuery($I,$Lf,$fc=false){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function sqlCommandQuery($I){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function rowDescription($R){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function rowDescriptions($M,$pc){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectLink($X,$m){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectVal($X,$A,$m,$ne){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function editVal($X,$m){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function tableStructurePrint($n){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function tableIndexesPrint($x){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectColumnsPrint($N,$e){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectSearchPrint($Z,$e,$x){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectOrderPrint($fe,$e,$x){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectLimitPrint($_){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectLengthPrint($ig){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectActionPrint($x){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectCommandPrint(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectImportPrint(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectEmailPrint($Lb,$e){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectColumnsProcess($e,$x){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectSearchProcess($n,$x){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectOrderProcess($n,$x){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectLimitProcess(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectLengthProcess(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectEmailProcess($Z,$pc){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function selectQueryBuild($N,$Z,$t,$fe,$_,$G){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function messageQuery($I,$jg,$fc=false){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function editInput($R,$m,$ra,$Y){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function editHint($R,$m,$Y){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function processInput($m,$Y,$s=""){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function dumpDatabase($j){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function dumpTable($R,$Pf,$Yc=0){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function dumpData($R,$Pf,$I){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function dumpFilename($Jc){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function dumpHeaders($Jc,$Id=false){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function importServerPath(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function homepage(){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function navigation($Hd){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function databasesPrint($Hd){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}function tablesPrint($T){$c=func_get_args();return$this->_applyPlugin(__FUNCTION__,$c);}}class FCSqliteConnectionWithoutCredentials{function loginForm(){$b=adminer();echo"\n",'',$b->loginFormField('db','
'.'Database'.'',''."\n"),"
\n","

\n";return true;}function login($rd,$_e){return true;}}function adminer_object(){$Ge=array(new FCSqliteConnectionWithoutCredentials());return new AdminerPlugin($Ge);}function adminer_errors($Rb,$Tb){return!!preg_match('~^(Trying to access array offset on value of type null|Undefined array key)~',$Tb);}error_reporting(6135);set_error_handler('adminer_errors',E_WARNING);$kc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($kc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Hg=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Hg)$$X=$Hg;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function connection(){global$f;return$f;}function adminer(){global$b;return$b;}function version(){global$da;return$da;}function idf_unescape($Kc){if(!preg_match('~^[`\'"]~',$Kc))return$Kc;$hd=substr($Kc,-1);return str_replace($hd.$hd,$hd,substr($Kc,1,-1));}function escape_string($X){return substr(q($X),1,-1);}function number($X){return preg_replace('~[^0-9]+~','',$X);}function number_type(){return'((?$W){unset($Te[$z][$ad]);if(is_array($W)){$Te[$z][stripslashes($ad)]=$W;$Te[]=&$Te[$z][stripslashes($ad)];}else$Te[$z][stripslashes($ad)]=($kc?$W:stripslashes($W));}}}}function bracket_escape($Kc,$ua=false){static$vg=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return strtr($Kc,($ua?array_flip($vg):$vg));}function min_version($Xg,$td="",$g=null){global$f;if(!$g)$g=$f;$yf=$g->server_info;if($td&&preg_match('~([\d.]+)-MariaDB~',$yf,$C)){$yf=$C[1];$Xg=$td;}return(version_compare($yf,$Xg)>=0);}function charset($f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function script($Ff,$ug="\n"){return"$Ff$ug";}function script_src($Mg){return"\n";}function nonce(){return' nonce="'.get_nonce().'"';}function target_blank(){return' target="_blank" rel="noreferrer noopener"';}function h($Q){return str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function nl_br($Q){return str_replace("\n","
",$Q);}function checkbox($F,$Y,$Fa,$ed="",$Yd="",$Ja="",$fd=""){$K="".($Yd?script("qsl('input').onclick = function () { $Yd };",""):"");return($ed!=""||$Ja?"$K".h($ed)."":$K);}function optionlist($de,$tf=null,$Qg=false){$K="";foreach($de as$ad=>$W){$ee=array($ad=>$W);if(is_array($W)){$K.='';$ee=$W;}foreach($ee as$z=>$X)$K.=''.h($X);if(is_array($W))$K.='';}return$K;}function html_select($F,$de,$Y="",$Xd=true,$fd=""){if($Xd)return"".(is_string($Xd)?script("qsl('select').onchange = function () { $Xd };",""):"");$K="";foreach($de as$z=>$X)$K.="";return$K;}function select_input($ra,$de,$Y="",$Xd="",$Ee=""){$cg=($de?"select":"input");return"<$cg$ra".($de?">

","$md",script("qsl('a').onclick = partial(toggle, 'fieldset-$v');",""),"","
\n";}function selectSearchPrint($Z,$e,$x){print_fieldset("search",'Search',$Z);foreach($x as$u=>$w){if($w["type"]=="FULLTEXT"){echo"
(".implode(", ",array_map('h',$w["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$u]",1,isset($_GET["boolean"][$u]),"BOOL"),"
\n";}}$Da="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$u=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"
".select_input(" name='where[$u][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'anywhere'.")"),html_select("where[$u][op]",$this->operators,$X["op"],$Da),"",script("mixin(qsl('input'), {oninput: function () { $Da }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}}echo"\n";}function selectOrderPrint($fe,$e,$x){print_fieldset("sort",'Sort',$fe);$u=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"
".select_input(" name='order[$u]'",$e,$X,"selectFieldChange"),checkbox("desc[$u]",1,isset($_GET["desc"][$z]),'descending')."
\n";$u++;}}echo"
".select_input(" name='order[$u]'",$e,"","selectAddRow"),checkbox("desc[$u]",1,false,'descending')."
\n","\n";}function selectLimitPrint($_){echo"
".'Limit'."
";echo"",script("qsl('input').oninput = selectFieldChange;",""),"
\n";}function selectLengthPrint($ig){if($ig!==null){echo"
".'Text length'."
","","
\n";}}function selectActionPrint($x){echo"
".'Action'."
",""," ","\n","var indexColumns = ";$e=array();foreach($x as$w){$gb=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$gb)$e[$gb]=1;}$e[""]=1;foreach($e as$z=>$X)json_row($z);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function selectCommandPrint(){return!information_schema(DB);}function selectImportPrint(){return!information_schema(DB);}function selectEmailPrint($Lb,$e){}function selectColumnsProcess($e,$x){global$uc,$yc;$N=array();$t=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$uc)||in_array($X["fun"],$yc)))){$N[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$yc))$t[]=$N[$z];}}return array($N,$t);}function selectSearchProcess($n,$x){global$f,$k;$K=array();foreach($x as$u=>$w){if($w["type"]=="FULLTEXT"&&$_GET["fulltext"][$u]!="")$K[]="MATCH (".implode(", ",array_map('idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$u]).(isset($_GET["boolean"][$u])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$Me="";$Va=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Nc=process_length($X["val"]);$Va.=" ".($Nc!=""?$Nc:"(NULL)");}elseif($X["op"]=="SQL")$Va=" $X[val]";elseif($X["op"]=="LIKE %%")$Va=" LIKE ".$this->processInput($n[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$Va=" ILIKE ".$this->processInput($n[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$Me="$X[op](".q($X["val"]).", ";$Va=")";}elseif(!preg_match('~NULL$~',$X["op"]))$Va.=" ".$this->processInput($n[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=$Me.$k->convertSearch(idf_escape($X["col"]),$X,$n[$X["col"]]).$Va;else{$Qa=array();foreach($n as$F=>$m){if((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"])))$Qa[]=$Me.$k->convertSearch(idf_escape($F),$X,$m).$Va;}$K[]=($Qa?"(".implode(" OR ",$Qa).")":"1 = 0");}}}return$K;}function selectOrderProcess($n,$x){$K=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$K;}function selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function selectEmailProcess($Z,$pc){return false;}function selectQueryBuild($N,$Z,$t,$fe,$_,$G){return"";}function messageQuery($I,$jg,$fc=false){global$y,$k;restart_session();$Fc=&get_session("queries");if(!$Fc[$_GET["db"]])$Fc[$_GET["db"]]=array();if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n…";$Fc[$_GET["db"]][]=array($I,time(),$jg);$Jf="sql-".count($Fc[$_GET["db"]]);$K="".'SQL command'."\n";if(!$fc&&($ch=$k->warnings())){$v="warnings-".count($Fc[$_GET["db"]]);$K="".'Warnings'.", $K\n";}return" ".@date("H:i:s").""." $K';}function editRowPrint($R,$n,$L,$Kg){}function editFunctions($m){global$Gb;$K=($m["null"]?"NULL/":"");$Kg=isset($_GET["select"])||where($_GET);foreach($Gb as$z=>$uc){if(!$z||(!isset($_GET["call"])&&$Kg)){foreach($uc as$Be=>$X){if(!$Be||preg_match("~$Be~",$m["type"]))$K.="/$X";}}if($z&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$K.="/SQL";}if($m["auto_increment"]&&!$Kg)$K='Auto Increment';return explode("/",$K);}function editInput($R,$m,$ra,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").($m["null"]?" ":"").enum_input("radio",$ra,$m,$Y,0);return"";}function editHint($R,$m,$Y){return"";}function processInput($m,$Y,$s=""){if($s=="SQL")return$Y;$F=$m["field"];$K=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$s))$K="$s()";elseif(preg_match('~^current_(date|timestamp)$~',$s))$K=$s;elseif(preg_match('~^([+-]|\|\|)$~',$s))$K=idf_escape($F)." $s $K";elseif(preg_match('~^[+-] interval$~',$s))$K=idf_escape($F)." $s ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$s))$K="$s(".idf_escape($F).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$s))$K="$s($K)";return unconvert_field($m,$K);}function dumpOutput(){$K=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$K['gz']='gzip';return$K;}function dumpFormat(){return array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function dumpDatabase($j){}function dumpTable($R,$Pf,$Yc=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Pf)dump_csv(array_keys(fields($R)));}else{if($Yc==2){$n=array();foreach(fields($R)as$F=>$m)$n[]=idf_escape($F)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$Pf);set_utf8mb4($h);if($Pf&&$h){if($Pf=="DROP+CREATE"||$Yc==1)echo"DROP ".($Yc==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($Yc==1)$h=remove_definer($h);echo"$h;\n\n";}}}function dumpData($R,$Pf,$I){global$f,$y;$wd=($y=="sqlite"?0:1048576);if($Pf){if($_POST["format"]=="sql"){if($Pf=="TRUNCATE+INSERT")echo truncate_sql($R).";\n";$n=fields($R);}$J=$f->query($I,1);if($J){$Sc="";$Ca="";$cd=array();$Rf="";$ic=($R!=''?'fetch_assoc':'fetch_row');while($L=$J->$ic()){if(!$cd){$Ug=array();foreach($L as$X){$m=$J->fetch_field();$cd[]=$m->name;$z=idf_escape($m->name);$Ug[]="$z = VALUES($z)";}$Rf=($Pf=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ug):"").";\n";}if($_POST["format"]!="sql"){if($Pf=="table"){dump_csv($cd);$Pf="INSERT";}dump_csv($L);}else{if(!$Sc)$Sc="INSERT INTO ".table($R)." (".implode(", ",array_map('idf_escape',$cd)).") VALUES";foreach($L as$z=>$X){$m=$n[$z];$L[$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");}$pf=($wd?"\n":" ")."(".implode(",\t",$L).")";if(!$Ca)$Ca=$Sc.$pf;elseif(strlen($Ca)+4+strlen($pf)+strlen($Rf)<$wd)$Ca.=",$pf";else{echo$Ca.$Rf;$Ca=$Sc.$pf;}}}if($Ca)echo$Ca.$Rf;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$f->error)."\n";}}function dumpFilename($Jc){return friendly_url($Jc!=""?$Jc:(SERVER!=""?SERVER:"localhost"));}function dumpHeaders($Jc,$Id=false){$qe=$_POST["output"];$bc=(preg_match('~sql~',$_POST["format"])?"sql":($Id?"tar":"csv"));header("Content-Type: ".($qe=="gz"?"application/x-gzip":($bc=="tar"?"application/x-tar":($bc=="sql"||$qe!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($qe=="gz")ob_start('ob_gzencode',1e6);return$bc;}function importServerPath(){return"adminer.sql";}function homepage(){echo'

',$this->name(),' ',$da,' ',(version_compare($da,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'

';if($Hd=="auth"){$qe="";foreach((array)$_SESSION["pwds"]as$Wg=>$zf){foreach($zf as$O=>$Sg){foreach($Sg as$Rg=>$_e){if($_e!==null){$mb=$_SESSION["db"][$Wg][$O][$Rg];foreach(($mb?array_keys($mb):array(""))as$j)$qe.="
  • ($zb[$Wg]) ".h($Rg.($O!=""?"@".$this->serverName($O):"").($j!=""?" - $j":""))."\n";}}}}if($qe)echo"\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Hd&&DB!=""){$f->select_db(DB);$T=table_status('',true);}echo script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=4.8.1");if(support("sql")){echo' ';if($T){$qd=array();foreach($T as$R=>$V)$qd[]=preg_quote($R,'/');echo"var jushLinks = { $y: [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$qd).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$y;\n";}$yf=$f->server_info;echo'bodyLoad(\'',(is_object($f)?preg_replace('~^(\d\.?\d).*~s','\1',$yf):""),'\'',(preg_match('~MariaDB~',$yf)?", true":""),'); ';}$this->databasesPrint($Hd);if(DB==""||!$Hd){echo"

    ".'No tables.'."\n";else$this->tablesPrint($T);}}}function databasesPrint($Hd){global$b,$f;$i=$this->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo'

    ';hidden_fields_get();$kb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"".'DB'.": ".($i?"$kb":"\n"),"\n";foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo"";break;}}echo"

    \n";}function tablesPrint($T){echo"\n";}}$b=(function_exists('adminer_object')?adminer_object():new Adminer);$Wa=driver_config();$Le=$Wa['possible_drivers'];$y=$Wa['jush'];$Cg=$Wa['types'];$Of=$Wa['structured_types'];$Jg=$Wa['unsigned'];$ae=$Wa['operators'];$uc=$Wa['functions'];$yc=$Wa['grouping'];$Gb=$Wa['edit_functions'];if($b->operators===null)$b->operators=$ae;define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$da="4.8.1";function page_header($mg,$l="",$Ba=array(),$ng=""){global$ba,$da,$b,$zb,$y;page_headers();if(is_ajax()&&$l){page_messages($l);exit;}$og=$mg.($ng!=""?": $ng":"");$pg=strip_tags($og.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo' ',$pg,' ',script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=4.8.1");if($b->head()){echo' ';foreach($b->css()as$eb){echo' ';}}echo' ';$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$Xg=unserialize(file_get_contents($o));$Ve="-----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($Xg["version"],base64_decode($Xg["signature"]),$Ve)==1)$_COOKIE["adminer_version"]=$Xg["version"];}echo' mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick',(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$da', '".js_escape(ME)."', '".get_token()."')");?>}); document.body.className = document.body.className.replace(/ nojs/, ' js'); var offlineMessage = ' ',script("mixin(qs('#help'), {onmouseover: function () { helpOpen = 1; }, onmouseout: helpMouseout});"),'
    ';if($Ba!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $og

    \n","\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define("PAGE_HEADER",1);}function page_headers(){global$b;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($b->csp()as$db){$Dc=array();foreach($db as$z=>$X)$Dc[]="$z $X";header("Content-Security-Policy: ".implode("; ",$Dc));}$b->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$Nd;if(!$Nd)$Nd=base64_encode(rand_string());return$Nd;}function page_messages($l){$Lg=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Ed=$_SESSION["messages"][$Lg];if($Ed){echo"
    ".implode("
    \n
    ",$Ed)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Lg]);}if($l)echo"
    $l
    \n";}function page_footer($Hd=""){global$b,$U;echo'
    ';if($Hd!="auth"){echo'

    ';}echo' ',script("setupSubmitHighlight(document);");}function int32($E){while($E>=2147483648)$E-=4294967296;while($E<=-2147483649)$E+=4294967296;return(int)$E;}function long2str($W,$bh){$pf='';foreach($W as$X)$pf.=pack('V',$X);if($bh)return substr($pf,0,end($W));return$pf;}function str2long($pf,$bh){$W=array_values(unpack('V*',str_pad($pf,4*ceil(strlen($pf)/4),"\0")));if($bh)$W[]=strlen($pf);return$W;}function xxtea_mx($ih,$hh,$Sf,$ad){return int32((($ih>>5&0x7FFFFFF)^$hh<<2)+(($hh>>3&0x1FFFFFFF)^$ih<<4))^int32(($Sf^$hh)+($ad^$ih));}function encrypt_string($Nf,$z){if($Nf=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Nf,true);$E=count($W)-1;$ih=$W[$E];$hh=$W[0];$H=floor(6+52/($E+1));$Sf=0;while($H-->0){$Sf=int32($Sf+0x9E3779B9);$Fb=$Sf>>2&3;for($re=0;$re<$E;$re++){$hh=$W[$re+1];$Jd=xxtea_mx($ih,$hh,$Sf,$z[$re&3^$Fb]);$ih=int32($W[$re]+$Jd);$W[$re]=$ih;}$hh=$W[0];$Jd=xxtea_mx($ih,$hh,$Sf,$z[$re&3^$Fb]);$ih=int32($W[$E]+$Jd);$W[$E]=$ih;}return long2str($W,false);}function decrypt_string($Nf,$z){if($Nf=="")return"";if(!$z)return false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($Nf,false);$E=count($W)-1;$ih=$W[$E];$hh=$W[0];$H=floor(6+52/($E+1));$Sf=int32($H*0x9E3779B9);while($Sf){$Fb=$Sf>>2&3;for($re=$E;$re>0;$re--){$ih=$W[$re-1];$Jd=xxtea_mx($ih,$hh,$Sf,$z[$re&3^$Fb]);$hh=int32($W[$re]-$Jd);$W[$re]=$hh;}$ih=$W[$E];$Jd=xxtea_mx($ih,$hh,$Sf,$z[$re&3^$Fb]);$hh=int32($W[0]-$Jd);$W[0]=$hh;$Sf=int32($Sf-0x9E3779B9);}return long2str($W,true);}$f='';$Cc=$_SESSION["token"];if(!$Cc)$_SESSION["token"]=rand(1,1e6);$U=get_token();$De=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$De[$z]=$X;}}function add_invalid_login(){global$b;$r=file_open_lock(get_temp_dir()."/adminer.invalid");if(!$r)return;$Uc=unserialize(stream_get_contents($r));$jg=time();if($Uc){foreach($Uc as$Vc=>$X){if($X[0]<$jg)unset($Uc[$Vc]);}}$Tc=&$Uc[$b->bruteForceKey()];if(!$Tc)$Tc=array($jg+30*60,0);$Tc[1]++;file_write_unlock($r,serialize($Uc));}function check_invalid_login(){global$b;$Uc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$Tc=($Uc?$Uc[$b->bruteForceKey()]:array());$Md=($Tc[1]>29?$Tc[0]-time():0);if($Md>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Md/60)));}$sa=$_POST["auth"];if($sa){session_regenerate_id();$Wg=$sa["driver"];$O=$sa["server"];$Rg=$sa["username"];$_e=(string)$sa["password"];$j=$sa["db"];set_password($Wg,$O,$Rg,$_e);$_SESSION["db"][$Wg][$O][$Rg][$j]=true;if($sa["permanent"]){$z=base64_encode($Wg)."-".base64_encode($O)."-".base64_encode($Rg)."-".base64_encode($j);$Re=$b->permanentLogin(true);$De[$z]="$z:".base64_encode($Re?encrypt_string($_e,$Re):"");cookie("adminer_permanent",implode(" ",$De));}if(count($_POST)==1||DRIVER!=$Wg||SERVER!=$O||$_GET["username"]!==$Rg||DB!=$j)redirect(auth_url($Wg,$O,$Rg,$j));}elseif($_POST["logout"]&&(!$Cc||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.'.' '.'Thanks for using Adminer, consider donating.');}elseif($De&&!$_SESSION["pwds"]){session_regenerate_id();$Re=$b->permanentLogin();foreach($De as$z=>$X){list(,$Ia)=explode(":",$X);list($Wg,$O,$Rg,$j)=array_map('base64_decode',explode("-",$z));set_password($Wg,$O,$Rg,decrypt_string(base64_decode($Ia),$Re));$_SESSION["db"][$Wg][$O][$Rg][$j]=true;}}function unset_permanent(){global$De;foreach($De as$z=>$X){list($Wg,$O,$Rg,$j)=array_map('base64_decode',explode("-",$z));if($Wg==DRIVER&&$O==SERVER&&$Rg==$_GET["username"]&&$j==DB)unset($De[$z]);}cookie("adminer_permanent",implode(" ",$De));}function auth_error($l){global$b,$Cc;$_f=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$_f]||$_GET[$_f])&&!$Cc)$l='Session expired, please login again.';else{restart_session();add_invalid_login();$_e=get_password();if($_e!==null){if($_e===false)$l.=($l?'
    ':'').sprintf('Master password expired. Implement %s method to make it permanent.',target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$_f]&&$_GET[$_f]&&ini_bool("session.use_only_cookies"))$l='Session support must be enabled.';$ue=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ue["lifetime"]);page_header('Login',$l,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

    ".'The action will be performed after successful login with the same credentials.'."\n";echo"

    \n";$b->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$Le)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Hc,$He)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$He,$C)&&($C[1]<1024||$C[1]>65535))auth_error('Connecting to privileged ports is not allowed.');check_invalid_login();$f=connect();$k=new Min_Driver($f);}$rd=null;if(!is_object($f)||($rd=$b->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?h($f):(is_string($rd)?$rd:'Invalid credentials.'));auth_error($l.(preg_match('~^ | $~',get_password())?'
    '.'There is a space in the input password which might be the cause.':''));}if($_POST["logout"]&&$Cc&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}if($sa&&$_POST["token"])$_POST["token"]=$U;$l='';if($_POST){if(!verify_token()){$Pc="max_input_vars";$_d=ini_get($Pc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$_d||$X<$_d)){$Pc=$z;$_d=$X;}}}$l=(!$_POST["token"]&&$_d?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$Pc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$l.=' '.'You can upload a big SQL file via FTP and import it from server.';}function select($J,$g=null,$ie=array(),$_=0){global$y;$qd=array();$x=array();$e=array();$_a=array();$Cg=array();$K=array();odd('');for($u=0;(!$_||$u<$_)&&($L=$J->fetch_row());$u++){if(!$u){echo"
    \n","\n","";for($Zc=0;$Zcfetch_field();$F=$m->name;$he=$m->orgtable;$ge=$m->orgname;$K[$m->table]=$he;if($ie&&$y=="sql")$qd[$Zc]=($F=="table"?"table=":($F=="possible_keys"?"indexes=":null));elseif($he!=""){if(!isset($x[$he])){$x[$he]=array();foreach(indexes($he,$g)as$w){if($w["type"]=="PRIMARY"){$x[$he]=array_flip($w["columns"]);break;}}$e[$he]=$x[$he];}if(isset($e[$he][$ge])){unset($e[$he][$ge]);$x[$he][$ge]=$Zc;$qd[$Zc]=$he;}}if($m->charsetnr==63)$_a[$Zc]=true;$Cg[$Zc]=$m->type;echo"name!=$ge?" title='".h(($he!=""?"$he.":"").$ge)."'":"").">".h($F).($ie?'':"");}echo"\n";}echo"";foreach($L as$z=>$X){$A="";if(isset($qd[$z])&&!$e[$qd[$z]]){if($ie&&$y=="sql"){$R=$L[array_search("table=",$qd)];$A=ME.$qd[$z].urlencode($ie[$R]!=""?$ie[$R]:$R);}else{$A=ME."edit=".urlencode($qd[$z]);foreach($x[$qd[$z]]as$Ma=>$Zc)$A.="&where".urlencode("[".bracket_escape($Ma)."]")."=".urlencode($L[$Zc]);}}elseif(is_url($X))$A=$X;if($X===null)$X="NULL";elseif($_a[$z]&&!is_utf8($X))$X="".lang(array('%d byte','%d bytes'),strlen($X))."";else{$X=h($X);if($Cg[$z]==254)$X="$X";}if($A)$X="$X";echo"
    $X";}}echo($u?"
    \n
    ":"

    ".'No rows.')."\n";return$K;}function referencable_primary($vf){$K=array();foreach(table_status('',true)as$Wf=>$R){if($Wf!=$vf&&fk_support($R)){foreach(fields($Wf)as$m){if($m["primary"]){if($K[$Wf]){unset($K[$Wf]);break;}$K[$Wf]=$m;}}}}return$K;}function adminer_settings(){parse_str($_COOKIE["adminer_settings"],$Bf);return$Bf;}function adminer_setting($z){$Bf=adminer_settings();return$Bf[$z];}function set_adminer_settings($Bf){return cookie("adminer_settings",http_build_query($Bf+adminer_settings()));}function textarea($F,$Y,$M=10,$Qa=80){global$y;echo"";}function edit_type($z,$m,$Pa,$q=array(),$ec=array()){global$Of,$Cg,$Jg,$Wd;$V=$m["type"];echo'',"',($Jg?"':''),(isset($m['on_update'])?"':''),($q?" ":" ");}function process_length($nd){global$Qb;return(preg_match("~^\\s*\\(?\\s*$Qb(?:\\s*,\\s*$Qb)*+\\s*\\)?\\s*\$~",$nd)&&preg_match_all("~$Qb~",$nd,$ud)?"(".implode(",",$ud[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$nd)));}function process_type($m,$Na="COLLATE"){global$Jg;return" $m[type]".process_length($m["length"]).(preg_match(number_type(),$m["type"])&&in_array($m["unsigned"],$Jg)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $Na ".q($m["collation"]):"");}function process_field($m,$Bg){return array(idf_escape(trim($m["field"])),process_type($Bg),($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($m){$ob=$m["default"];return($ob===null?"":" DEFAULT ".(preg_match('~char|binary|text|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$ob)?q($ob):$ob));}function type_class($V){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$z=>$X){if(preg_match("~$z|$X~",$V))return" class='$z'";}}function edit_fields($n,$Pa,$V="TABLE",$q=array()){global$Qc;$n=array_values($n);$pb=(($_POST?$_POST["defaults"]:adminer_setting("defaults"))?"":" class='hidden'");$Ua=(($_POST?$_POST["comments"]:adminer_setting("comments"))?"":" class='hidden'");echo' ';if($V=="PROCEDURE"){echo'';}echo'',($V=="TABLE"?'Column name':'Parameter name'),'Type',script("qs('#enum-edit').onblur = editingLengthBlur;"),'Length ','Options';if($V=="TABLE"){echo'NULL AI',doc_link(array('sqlite'=>"autoinc.html",)),'Default value ',(support("comment")?"".'Comment':"");}echo'',"".script("row_count = ".count($n).";"),' ',script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($n as$u=>$m){$u++;$je=$m[($_POST?"orig":"field")];$wb=(isset($_POST["add"][$u-1])||(isset($m["field"])&&!$_POST["drop_col"][$u]))&&(support("drop_col")||$je=="");echo' ',($V=="PROCEDURE"?"".html_select("fields[$u][inout]",explode("|",$Qc),$m["inout"]):""),'';if($wb){echo'';}echo'';edit_type("fields[$u]",$m,$Pa,$q);if($V=="TABLE"){echo'',checkbox("fields[$u][null]",1,$m["null"],"","","block","label-null"),'',checkbox("fields[$u][has_default]",1,$m["has_default"],"","","","label-default"),'',(support("comment")?"":"");}echo"",(support("move_col")?" "." "." ":""),($je==""||support("drop_col")?"":"");}}function process_fields(&$n){$Sd=0;if($_POST["up"]){$hd=0;foreach($n as$z=>$m){if(key($_POST["up"])==$z){unset($n[$z]);array_splice($n,$hd,0,array($m));break;}if(isset($m["field"]))$hd=$Sd;$Sd++;}}elseif($_POST["down"]){$rc=false;foreach($n as$z=>$m){if(isset($m["field"])&&$rc){unset($n[key($_POST["down"])]);array_splice($n,$Sd,0,array($rc));break;}if(key($_POST["down"])==$z)$rc=$m;$Sd++;}}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($C){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($C[0][0].$C[0][0],$C[0][0],substr($C[0],1,-1))),'\\'))."'";}function grant($vc,$Se,$e,$Vd){if(!$Se)return true;if($Se==array("ALL PRIVILEGES","GRANT OPTION"))return($vc=="GRANT"?queries("$vc ALL PRIVILEGES$Vd WITH GRANT OPTION"):queries("$vc ALL PRIVILEGES$Vd")&&queries("$vc GRANT OPTION$Vd"));return queries("$vc ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Se).$e).$Vd);}function drop_create($_b,$h,$Ab,$gg,$Cb,$B,$Dd,$Bd,$Cd,$Ud,$Ld){if($_POST["drop"])query_redirect($_b,$B,$Dd);elseif($Ud=="")query_redirect($h,$B,$Cd);elseif($Ud!=$Ld){$cb=queries($h);queries_redirect($B,$Bd,$cb&&queries($_b));if($cb)queries($Ab);}else queries_redirect($B,$Bd,queries($gg)&&queries($Cb)&&queries($_b)&&queries($h));}function create_trigger($Vd,$L){global$y;$lg=" $L[Timing] $L[Event]".(preg_match('~ OF~',$L["Event"])?" $L[Of]":"");return"CREATE TRIGGER ".idf_escape($L["Trigger"]).($y=="mssql"?$Vd.$lg:$lg.$Vd).rtrim(" $L[Type]\n$L[Statement]",";").";";}function create_routine($nf,$L){global$Qc,$y;$P=array();$n=(array)$L["fields"];ksort($n);foreach($n as$m){if($m["field"]!="")$P[]=(preg_match("~^($Qc)\$~",$m["inout"])?"$m[inout] ":"").idf_escape($m["field"]).process_type($m,"CHARACTER SET");}$qb=rtrim("\n$L[definition]",";");return"CREATE $nf ".idf_escape(trim($L["name"]))." (".implode(", ",$P).")".(isset($_GET["function"])?" RETURNS".process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").($y=="pgsql"?" AS ".q($qb):"$qb;");}function remove_definer($I){return preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$I);}function format_foreign_key($p){global$Wd;$j=$p["db"];$Od=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($Od!=""&&$Od!=$_GET["ns"]?idf_escape($Od).".":"").table($p["table"])." (".implode(", ",array_map('idf_escape',$p["target"])).")".(preg_match("~^($Wd)\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^($Wd)\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function tar_file($o,$qg){$K=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($qg->size),decoct(time()));$Ha=8*32;for($u=0;$usend();echo str_repeat("\0",511-($qg->size+511)%512);}function ini_bytes($Pc){$X=ini_get($Pc);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function doc_link($Ae,$hg="?"){global$y,$f;$yf=$f->server_info;$Xg=preg_replace('~^(\d\.?\d).*~s','\1',$yf);$Ng=array('sql'=>"https://dev.mysql.com/doc/refman/$Xg/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/$Xg/",'mssql'=>"https://msdn.microsoft.com/library/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$yf)."&id=",);if(preg_match('~MariaDB~',$yf)){$Ng['sql']="https://mariadb.com/kb/en/library/";$Ae['sql']=(isset($Ae['mariadb'])?$Ae['mariadb']:str_replace(".html","/",$Ae['sql']));}return($Ae[$y]?"$hg":"");}function ob_gzencode($Q){return gzencode($Q);}function db_size($j){global$f;if(!$f->select_db($j))return"?";$K=0;foreach(table_status()as$S)$K+=$S["Data_length"]+$S["Index_length"];return format_number($K);}function set_utf8mb4($h){global$f;static$P=false;if(!$P&&preg_match('~\butf8mb4~i',$h)){$P=true;echo"SET NAMES ".charset($f).";\n\n";}}function connect_error(){global$b,$f,$U,$l,$zb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$l)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$l,false);echo"

    ".sprintf('%s version: %s through PHP extension %s',$zb[DRIVER],"".h($f->server_info)."","$f->extension")."\n","

    ".sprintf('Logged as: %s',"".h(logged_user())."")."\n";$i=$b->databases();if($i){$rf=support("scheme");$Pa=collations();echo"

    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"".(support("database")?"\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i as$j=>$T){$mf=h(ME)."db=".urlencode($j);$v=h("Db-".$j);echo"".(support("database")?"
    ":"")."".'Database'." - ".'Refresh'.""."".'Collation'."".'Tables'."".'Size'." - ".'Compute'."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
    ".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$v):""),"".h($j)."";$Oa=h(db_collation($j,$Pa));echo"".(support("database")?"$Oa":$Oa),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),"\n","
    \n",script("tableCheck();");}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$f->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}$Wd="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class TmpFile{var$handler;var$size;function __construct(){$this->handler=tmpfile();}function write($Za){$this->size+=strlen($Za);fwrite($this->handler,$Za);}function send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$Qb="'(?:''|[^'\\\\]|\\\\.)*'";$Qc="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];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"]));$N=array(idf_escape($_GET["field"]));$J=$k->select($a,$N,array(where($_GET,$n)),$N);$L=($J?$J->fetch_row():array());echo$k->value($L[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error();$S=table_status1($a,true);$F=$b->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Materialized view':'View':'Table').": ".($F!=""?$F:h($a)),$l);$b->selectLinks($S);$Ta=$S["Comment"];if($Ta!="")echo"

    ".'Comment'.": ".h($Ta)."\n";if($n)$b->tableStructurePrint($n);if(!is_view($S)){if(support("indexes")){echo"

    ".'Indexes'."

    \n";$x=indexes($a);if($x)$b->tableIndexesPrint($x);echo'

    ".'Foreign keys'."

    \n";$q=foreign_keys($a);if($q){echo"\n","\n";foreach($q as$F=>$p){echo"","
    ".'Source'."".'Target'."".'ON DELETE'."".'ON UPDATE'."
    ".implode(", ",array_map('h',$p["source"]))."","".($p["db"]!=""?"".h($p["db"]).".":"").($p["ns"]!=""?"".h($p["ns"]).".":"").h($p["table"])."","(".implode(", ",array_map('h',$p["target"])).")","".h($p["on_delete"])."\n","".h($p["on_update"])."\n",''.'Alter'.'';}echo"
    \n";}echo'

    ".'Triggers'."

    \n";$Ag=triggers($a);if($Ag){echo"\n";foreach($Ag as$z=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($z)."".'Alter'."\n";echo"
    \n";}echo'
    qs(\'#schema\').onselectstart = function () { return false; }; var tablePos = {',implode(",",$Yf)."\n",'}; var em = qs(\'#schema\').offsetHeight / ',$sg,'; document.onmousemove = schemaMousemove; document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); ';foreach($qf as$F=>$R){echo"
    ",''.h($F)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X=''.h($m["field"]).'';echo"
    ".($m["primary"]?"$X":$X);}foreach((array)$R["references"]as$eg=>$gf){foreach($gf as$jd=>$cf){$kd=$jd-$Xf[$F][1];$u=0;foreach($cf[0]as$Ff)echo"\n
    ";}}foreach((array)$ff[$F]as$eg=>$gf){foreach($gf as$jd=>$e){$kd=$jd-$Xf[$F][1];$u=0;foreach($e as$dg)echo"\n
    ";}}echo"\n
    \n";}foreach($qf as$F=>$R){foreach((array)$R["references"]as$eg=>$gf){foreach($gf as$jd=>$cf){$Gd=$sg;$yd=-10;foreach($cf[0]as$z=>$Ff){$Je=$R["pos"][0]+$R["fields"][$Ff]["pos"];$Ke=$qf[$eg]["pos"][0]+$qf[$eg]["fields"][$cf[1][$z]]["pos"];$Gd=min($Gd,$Je,$Ke);$yd=max($yd,$Je,$Ke);}echo"
    \n";}}}echo'
    ';$lb=array('','USE','DROP+CREATE','CREATE');$Zf=array('','DROP+CREATE','CREATE');$ib=array('','TRUNCATE+INSERT','INSERT');if($y=="sql")$ib[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"
    ".'Output'."".html_select("output",$b->dumpOutput(),$L["output"],0)."\n";echo"
    ".'Format'."".html_select("format",$b->dumpFormat(),$L["format"],0)."\n";echo($y=="sqlite"?"":"
    ".'Database'."".html_select('db_style',$lb,$L["db_style"]).(support("routine")?checkbox("routines",1,$L["routines"],'Routines'):"").(support("event")?checkbox("events",1,$L["events"],'Events'):"")),"
    ".'Tables'."".html_select('table_style',$Zf,$L["table_style"]).checkbox("auto_increment",1,$L["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$L["triggers"],'Triggers'):""),"
    ".'Data'."".html_select('data_style',$ib,$L["data_style"]),'

    ',script("qsl('table').onclick = dumpClick;");$Ne=array();if(DB!=""){$Fa=($a!=""?"":" checked");echo"","\n";$Zg="";$ag=tables_list();foreach($ag as$F=>$V){$Me=preg_replace('~_.*~','',$F);$Fa=($a==""||$a==(substr($a,-1)=="%"?"$Me%":$F));$Qe="\n";$i=$b->databases();if($i){foreach($i as$j){if(!information_schema($j)){$Me=preg_replace('~_.*~','',$j);echo"
    ".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"
    ".checkbox("tables[]",$F,$Fa,$F,"","block");if($V!==null&&!preg_match('~table~i',$V))$Zg.="$Qe\n";else echo"$Qe\n";$Ne[$Me]++;}echo$Zg;if($ag)echo script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"
    ","",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"
    ".checkbox("databases[]",$j,$a==""||$a=="$Me%",$j,"","block")."\n";$Ne[$Me]++;}}}else echo"
    ";}echo'

    ';$lc=true;foreach($Ne as$z=>$X){if($z!=""&&$X>1){echo($lc?"

    ":" ")."".h($z)."";$lc=false;}}}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$Gc=&get_session("queries");$Fc=&$Gc[DB];if(!$l&&$_POST["clear"]){$Fc=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?'Import':'SQL command'),$l);if(!$l&&$_POST){$r=false;if(!isset($_GET["import"]))$I=$_POST["query"];elseif($_POST["webfile"]){$If=$b->importServerPath();$r=@fopen((file_exists($If)?$If:"compress.zlib://$If.gz"),"rb");$I=($r?fread($r,1e6):false);}else$I=get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?"":";");if(!$Fc||reset(end($Fc))!=$H){restart_session();$Fc[]=array($H,time());set_session("queries",$Gc);stop_session();}}$Gf="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$rb=";";$Sd=0;$Nb=true;$g=connect();if(is_object($g)&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$Sa=0;$Sb=array();$ve='[\'"'.($y=="sql"?'`#':($y=="sqlite"?'`[':($y=="mssql"?'[':''))).']|/\*|-- |$'.($y=="pgsql"?'|\$[^$]*\$':'');$tg=microtime(true);parse_str($_COOKIE["adminer_export"],$ia);$Eb=$b->dumpFormat();unset($Eb["sql"]);while($I!=""){if(!$Sd&&preg_match("~^$Gf*+DELIMITER\\s+(\\S+)~i",$I,$C)){$rb=$C[1];$I=substr($I,strlen($C[0]));}else{preg_match('('.preg_quote($rb)."\\s*|$ve)",$I,$C,PREG_OFFSET_CAPTURE,$Sd);list($rc,$Ie)=$C[0];if(!$rc&&$r&&!feof($r))$I.=fread($r,1e5);else{if(!$rc&&rtrim($I)=="")break;$Sd=$Ie+strlen($rc);if($rc&&rtrim($rc)!=$rb){while(preg_match('('.($rc=='/*'?'\*/':($rc=='['?']':(preg_match('~^-- |^#~',$rc)?"\n":preg_quote($rc)."|\\\\."))).'|$)s',$I,$C,PREG_OFFSET_CAPTURE,$Sd)){$pf=$C[0][0];if(!$pf&&$r&&!feof($r))$I.=fread($r,1e5);else{$Sd=$C[0][1]+strlen($pf);if($pf[0]!="\\")break;}}}else{$Nb=false;$H=substr($I,0,$Ie);$Sa++;$Qe="

    ".$b->sqlCommandQuery($H)."
    \n";if($y=="sqlite"&&preg_match("~^$Gf*+ATTACH\\b~i",$H,$C)){echo$Qe,"

    ".'ATTACH queries are not supported.'."\n";$Sb[]=" $Sa";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Qe;ob_flush();flush();}$Lf=microtime(true);if($f->multi_query($H)&&is_object($g)&&preg_match("~^$Gf*+USE\\b~i",$H))$g->query($H);do{$J=$f->store_result();if($f->error){echo($_POST["only_errors"]?$Qe:""),"

    ".'Error in query'.($f->errno?" ($f->errno)":"").": ".error()."\n";$Sb[]=" $Sa";if($_POST["error_stops"])break 2;}else{$jg=" (".format_time($Lf).")".(strlen($H)<1000?" ".'Edit'."":"");$ka=$f->affected_rows;$ch=($_POST["only_errors"]?"":$k->warnings());$dh="warnings-$Sa";if($ch)$jg.=", ".'Warnings'."".script("qsl('a').onclick = partial(toggle, '$dh');","");$Zb=null;$ac="explain-$Sa";if(is_object($J)){$_=$_POST["limit"];$ie=select($J,$g,array(),$_);if(!$_POST["only_errors"]){echo"

    \n";$Pd=$J->num_rows;echo"

    ".($Pd?($_&&$Pd>$_?sprintf('%d / ',$_):"").lang(array('%d row','%d rows'),$Pd):""),$jg;if($g&&preg_match("~^($Gf|\\()*+SELECT\\b~i",$H)&&($Zb=explain($g,$H)))echo", Explain".script("qsl('a').onclick = partial(toggle, '$ac');","");$v="export-$Sa";echo", ".'Export'."".script("qsl('a').onclick = partial(toggle, '$v');","")."\n"."

    \n";}}else{if(preg_match("~^$Gf*+(CREATE|DROP|ALTER)$Gf++(DATABASE|SCHEMA)\\b~i",$H)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

    ".lang(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$ka)."$jg\n";}echo($ch?"

    \n":"");if($Zb){echo"\n";}}$Lf=microtime(true);}while($f->next_result());}$I=substr($I,$Sd);$Sd=0;}}}}if($Nb)echo"

    ".'No commands to execute.'."\n";elseif($_POST["only_errors"]){echo"

    ".lang(array('%d query executed OK.','%d queries executed OK.'),$Sa-count($Sb))," (".format_time($tg).")\n";}elseif($Sb&&$Sa>1)echo"

    ".'Error in query'.": ".implode("",$Sb)."\n";}else echo"

    ".upload_error($I)."\n";}echo'

    ';$Xb="";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$Fc;elseif($_GET["history"]!="")$H=$Fc[$_GET["history"]][0];echo"

    ";textarea("query",$H,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"))."');"),"

    $Xb\n",'Limit rows'.": \n";}else{echo"

    ".'File upload'."
    ";$zc=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$zc (< ".ini_get("upload_max_filesize")."B): \n$Xb":'File uploads are disabled.'),"
    \n";$Mc=$b->importServerPath();if($Mc){echo"
    ".'From server'."
    ",sprintf('Webserver file %s',"".h($Mc)."$zc"),' ',"
    \n";}echo"

    ";}echo checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),'Show only errors')."\n","\n";if(!isset($_GET["import"])&&$Fc){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Fc);$X;$X=prev($Fc)){$z=key($Fc);list($H,$jg,$Ib)=$X;echo''.'Edit'.""." ".@date("H:i:s",$jg).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"").($Ib?" ($Ib)":"")."
    \n";}echo"\n","".'Edit all'."\n","\n";}echo'

    ';}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));$Kg=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n as$F=>$m){if(!isset($m["privileges"][$Kg?"update":"insert"])||$b->fieldName($m)==""||$m["generated"])unset($n[$F]);}if($_POST&&!$l&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($Kg?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$x=indexes($a);$Fg=unique_array($_GET["where"],$x);$Ye="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,'Item has been deleted.',$k->delete($a,$Ye,!$Fg));else{$P=array();foreach($n as$F=>$m){$X=process_input($m);if($X!==false&&$X!==null)$P[idf_escape($F)]=$X;}if($Kg){if(!$P)redirect($B);queries_redirect($B,'Item has been updated.',$k->update($a,$P,$Ye,!$Fg));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$J=$k->insert($a,$P);$id=($J?last_id():0);queries_redirect($B,sprintf('Item%s has been inserted.',($id?" $id":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($n as$F=>$m){if(isset($m["privileges"]["select"])){$pa=convert_field($m);if($_POST["clone"]&&$m["auto_increment"])$pa="''";if($y=="sql"&&preg_match("~enum|set~",$m["type"]))$pa="1*".idf_escape($F);$N[]=($pa?"$pa AS ":"").idf_escape($F);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$k->select($a,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));if(!$J)$l=error();else{$L=$J->fetch_assoc();if(!$L)$L=false;}if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$n){if(!$Z){$J=$k->select($a,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($k->primary=>"");}if($L){foreach($L as$z=>$X){if(!$Z)$L[$z]=null;$n[$z]=array("field"=>$z,"null"=>($z!=$k->primary),"auto_increment"=>($z==$k->primary));}}}edit_form($a,$n,$L,$Kg);}elseif(isset($_GET["create"])){$a=$_GET["create"];$we=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$z)$we[$z]=$z;$ef=referencable_primary($a);$q=array();foreach($ef as$Wf=>$m)$q[str_replace("`","``",$Wf)."`".str_replace("`","``",$m["field"])]=$Wf;$le=array();$S=array();if($a!=""){$le=fields($a);$S=table_status($a);if(!$S)$l='No tables.';}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST)set_adminer_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($L["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$n=array();$na=array();$Og=false;$oc=array();$ke=reset($le);$ma=" FIRST";foreach($L["fields"]as$z=>$m){$p=$q[$m["type"]];$Bg=($p!==null?$ef[$p]:$m);if($m["field"]!=""){if(!$m["has_default"])$m["default"]=null;if($z==$L["auto_increment_col"])$m["auto_increment"]=true;$Ue=process_field($m,$Bg);$na[]=array($m["orig"],$Ue,$ma);if(!$ke||$Ue!=process_field($ke,$ke)){$n[]=array($m["orig"],$Ue,$ma);if($m["orig"]!=""||$ma)$Og=true;}if($p!==null)$oc[idf_escape($m["field"])]=($a!=""&&$y!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$q[$m["type"]],'source'=>array($m["field"]),'target'=>array($Bg["field"]),'on_delete'=>$m["on_delete"],));$ma=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Og=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$ke=next($le);if(!$ke)$ma="";}}$ye="";if($we[$L["partition_by"]]){$ze=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$z=>$X){$Y=$L["partition_values"][$z];$ze[]="\n PARTITION ".idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$ye.="\nPARTITION BY $L[partition_by]($L[partition])".($ze?" (".implode(",",$ze)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$S["Create_options"]))$ye.="\nREMOVE PARTITIONING";$D='Table has been altered.';if($a==""){cookie("adminer_engine",$L["Engine"]);$D='Table has been created.';}$F=trim($L["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($F),$D,alter_table($a,$F,($y=="sqlite"&&($Og||$oc)?$na:$n),$oc,($L["Comment"]!=$S["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$S["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$S["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?number($L["Auto_increment"]):""),$ye));}}page_header(($a!=""?'Alter table':'Create table'),$l,array("table"=>$a),h($a));if(!$_POST){$L=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Cg["int"])?"int":(isset($Cg["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$L=$S;$L["name"]=$a;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($le as$m){$m["has_default"]=isset($m["default"]);$L["fields"][]=$m;}if(support("partitioning")){$tc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$J=$f->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $tc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($L["partition_by"],$L["partitions"],$L["partition"])=$J->fetch_row();$ze=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $tc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$ze[""]="";$L["partition_names"]=array_keys($ze);$L["partition_values"]=array_values($ze);}}}$Pa=collations();$Pb=engines();foreach($Pb as$Ob){if(!strcasecmp($Ob,$L["Engine"])){$L["Engine"]=$Ob;break;}}echo'

    ';if(support("columns")||$a==""){echo'Table name: ';if($a==""&&!$_POST)echo script("focus(qs('#form')['name']);");echo($Pb?"".on_help("getTarget(event).value",1).script("qsl('select').onchange = helpClose;"):""),' ',($Pa&&!preg_match("~sqlite|mssql~",$y)?html_select("Collation",array(""=>"(".'collation'.")")+$Pa,$L["Collation"]):""),' ';}echo' ';if(support("columns")){echo'

    ';edit_fields($L["fields"],$Pa,"TABLE",$q);echo'
    ',script("editFields();"),'

    Auto Increment: ',checkbox("defaults",1,($_POST?$_POST["defaults"]:adminer_setting("defaults")),'Default values',"columnShow(this.checked, 5)","jsonly"),(support("comment")?checkbox("comments",1,($_POST?$_POST["comments"]:adminer_setting("comments")),'Comment',"editingCommentsClick(this, true);","jsonly").' ':''),'

    ';}echo' ';if($a!=""){echo'',confirm(sprintf('Drop %s?',$a));}if(support("partitioning")){$xe=preg_match('~RANGE|LIST~',$L["partition_by"]);print_fieldset("partition",'Partition by',$L["partition_by"]);echo'

    ',"".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),'() Partitions: ';foreach($L["partition_names"]as$z=>$X){echo'',' ';}echo'

    ';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Oc=array("PRIMARY","UNIQUE","INDEX");$S=table_status($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Oc[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Oc[]="SPATIAL";$x=indexes($a);$Oe=array();if($y=="mongo"){$Oe=$x["_id_"];unset($Oc[0]);unset($x["_id_"]);}$L=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$oa=array();foreach($L["indexes"]as$w){$F=$w["name"];if(in_array($w["type"],$Oc)){$e=array();$od=array();$tb=array();$P=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$d){if($d!=""){$nd=$w["lengths"][$z];$sb=$w["descs"][$z];$P[]=idf_escape($d).($nd?"(".(+$nd).")":"").($sb?" DESC":"");$e[]=$d;$od[]=($nd?$nd:null);$tb[]=$sb;}}if($e){$Yb=$x[$F];if($Yb){ksort($Yb["columns"]);ksort($Yb["lengths"]);ksort($Yb["descs"]);if($w["type"]==$Yb["type"]&&array_values($Yb["columns"])===$e&&(!$Yb["lengths"]||array_values($Yb["lengths"])===$od)&&array_values($Yb["descs"])===$tb){unset($x[$F]);continue;}}$oa[]=array($w["type"],$F,$P);}}}foreach($x as$F=>$Yb)$oa[]=array($Yb["type"],$F,"DROP");if(!$oa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$oa));}page_header('Indexes',$l,array("table"=>$a),h($a));$n=array_keys(fields($a));if($_POST["add"]){foreach($L["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$L["indexes"][$z]["columns"][]="";}$w=end($L["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($x as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$L["indexes"]=$x;}echo'
    ';if($Oe){echo"
    Index Type Column (length) Name
    PRIMARY";foreach($Oe["columns"]as$z=>$d){echo select_input(" disabled",$n,$d)," ";}echo"\n";}$Zc=1;foreach($L["indexes"]as$w){if(!$_POST["drop_col"]||$Zc!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$Zc][type]",array(-1=>"")+$Oc,$w["type"],($Zc==count($L["indexes"])?"indexesAddRow.call(this);":1),"label-type"),"";ksort($w["columns"]);$u=1;foreach($w["columns"]as$z=>$d){echo"".select_input(" name='indexes[$Zc][columns][$u]' title='".'Column'."'",($n?array_combine($n,$n):$n),$d,"partial(".($u==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape($y=="sql"?"":$_GET["indexes"]."_")."')"),($y=="sql"||$y=="mssql"?"":""),(support("descidx")?checkbox("indexes[$Zc][descs][$u]",1,$w["descs"][$z],'descending'):"")," ";$u++;}echo"\n","".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$Zc++;}echo'

    ';}elseif(isset($_GET["database"])){$L=$_POST;if($_POST&&!$l&&!isset($_POST["add_x"])){$F=trim($L["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$F){if(DB!=""){$_GET["db"]=$F;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($F),'Database has been renamed.',rename_database($F,$L["collation"]));}else{$i=explode("\n",str_replace("\r","",$F));$Qf=true;$hd="";foreach($i as$j){if(count($i)==1||$j!=""){if(!create_database($j,$L["collation"]))$Qf=false;$hd=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($hd),'Database has been created.',$Qf);}}else{if(!$L["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($F).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$l,array(),h(DB));$Pa=collations();$F=DB;if($_POST)$F=$L["name"];elseif(DB!="")$L["collation"]=db_collation(DB,$Pa);elseif($y=="sql"){foreach(get_vals("SHOW GRANTS")as$vc){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$vc,$C)&&$C[1]){$F=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'

    ',($_POST["add_x"]||strpos($F,"\n")?'
    ':'')."\n".($Pa?html_select("collation",array(""=>"(".'collation'.")")+$Pa,$L["collation"]).'':""),script("focus(qs('#name'));"),' ';if(DB!="")echo"".confirm(sprintf('Drop %s?',DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"\n";echo'

    ';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$F=$_GET["name"];$L=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?'Foreign key has been dropped.':($F!=""?'Foreign key has been altered.':'Foreign key has been created.'));$B=ME."table=".urlencode($a);if(!$_POST["drop"]){$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$dg=array();foreach($L["source"]as$z=>$X)$dg[$z]=$L["target"][$z];$L["target"]=$dg;}if($y=="sqlite")queries_redirect($B,$D,recreate_table($a,$a,array(),array(),array(" $F"=>($_POST["drop"]?"":" ".format_foreign_key($L)))));else{$oa="ALTER TABLE ".table($a);$_b="\nDROP ".($y=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($F);if($_POST["drop"])query_redirect($oa.$_b,$B,$D);else{query_redirect($oa.($F!=""?"$_b,":"")."\nADD".format_foreign_key($L),$B,$D);$l='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.'."
    $l";}}}page_header('Foreign key',$l,array("table"=>$a),h($a));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($F!=""){$q=foreign_keys($a);$L=$q[$F];$L["source"][]="";}else{$L["table"]=$a;$L["source"]=array("");}echo'
    ';$Ff=array_keys(fields($a));if($L["db"]!="")$f->select_db($L["db"]);if($L["ns"]!="")set_schema($L["ns"]);$df=array_keys(array_filter(table_status('',true),'fk_support'));$dg=array_keys(fields(in_array($L["table"],$df)?$L["table"]:reset($df)));$Xd="this.form['change-js'].value = '1'; this.form.submit();";echo"

    ".'Target table'.": ".html_select("table",$df,$L["table"],$Xd)."\n";if($y=="pgsql")echo'Schema'.": ".html_select("ns",$b->schemas(),$L["ns"]!=""?$L["ns"]:$_GET["ns"],$Xd);elseif($y!="sqlite"){$mb=array();foreach($b->databases()as$j){if(!information_schema($j))$mb[]=$j;}echo'DB'.": ".html_select("db",$mb,$L["db"]!=""?$L["db"]:$_GET["db"],$Xd);}echo'

    ';$Zc=0;foreach($L["source"]as$z=>$X){echo"","
    SourceTarget
    ".html_select("source[".(+$z)."]",array(-1=>"")+$Ff,$X,($Zc==count($L["source"])-1?"foreignAddRow.call(this);":1),"label-source"),"".html_select("target[".(+$z)."]",$dg,$L["target"][$z],1,"label-target");$Zc++;}echo'

    ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",$Wd),$L["on_delete"]),' ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",$Wd),$L["on_update"]),'','

    ';if($F!=""){echo'',confirm(sprintf('Drop %s?',$F));}echo'

    ';}elseif(isset($_GET["view"])){$a=$_GET["view"];$L=$_POST;$me="VIEW";if($y=="pgsql"&&$a!=""){$Mf=table_status($a);$me=strtoupper($Mf["Engine"]);}if($_POST&&!$l){$F=trim($L["name"]);$pa=" AS\n$L[select]";$B=ME."table=".urlencode($F);$D='View has been altered.';$V=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$F&&$y!="sqlite"&&$V=="VIEW"&&$me=="VIEW")query_redirect(($y=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($F).$pa,$B,$D);else{$fg=$F."_adminer_".uniqid();drop_create("DROP $me ".table($a),"CREATE $V ".table($F).$pa,"DROP $V ".table($F),"CREATE $V ".table($fg).$pa,"DROP $V ".table($fg),($_POST["drop"]?substr(ME,0,-1):$B),'View has been dropped.',$D,'View has been created.',$a,$F);}}if(!$_POST&&$a!=""){$L=view($a);$L["name"]=$a;$L["materialized"]=($me!="VIEW");if(!$l)$l=error();}page_header(($a!=""?'Alter view':'Create view'),$l,array("table"=>$a),h($a));echo'

    Name: ',(support("materializedview")?" ".checkbox("materialized",1,$L["materialized"],'Materialized view'):""),'

    ';textarea("select",$L["select"]);echo'

    ';if($a!=""){echo'',confirm(sprintf('Drop %s?',$a));}echo'

    ';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$F=$_GET["name"];$_g=trigger_options();$L=(array)trigger($F,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$_g["Timing"])&&in_array($_POST["Event"],$_g["Event"])&&in_array($_POST["Type"],$_g["Type"])){$Vd=" ON ".table($a);$_b="DROP TRIGGER ".idf_escape($F).($y=="pgsql"?$Vd:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($_b,$B,'Trigger has been dropped.');else{if($F!="")queries($_b);queries_redirect($B,($F!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Vd,$_POST)));if($F!="")queries(create_trigger($Vd,$L+array("Type"=>reset($_g["Type"]))));}}$L=$_POST;}page_header(($F!=""?'Alter trigger'.": ".h($F):'Create trigger'),$l,array("table"=>$a));echo'
    Time',html_select("Timing",$_g["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'
    Event',html_select("Event",$_g["Event"],$L["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$_g["Event"])?" ":""),'
    Type',html_select("Type",$_g["Type"],$L["Type"]),'

    Name: ',script("qs('#form')['Timing'].onchange();"),'

    ';textarea("Statement",$L["Statement"]);echo'

    ';if($F!=""){echo'',confirm(sprintf('Drop %s?',$F));}echo'

    ';}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$n=fields($a);$q=column_foreign_keys($a);$Td=$S["Oid"];parse_str($_COOKIE["adminer_import"],$ja);$lf=array();$e=array();$ig=null;foreach($n as$z=>$m){$F=$b->fieldName($m);if(isset($m["privileges"]["select"])&&$F!=""){$e[$z]=html_entity_decode(strip_tags($F),ENT_QUOTES);if(is_shortable($m))$ig=$b->selectLengthProcess();}$lf+=$m["privileges"];}list($N,$t)=$b->selectColumnsProcess($e,$x);$Wc=count($t)selectSearchProcess($n,$x);$fe=$b->selectOrderProcess($n,$x);$_=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Gg=>$L){$pa=convert_field($n[key($L)]);$N=array($pa?$pa:idf_escape(key($L)));$Z[]=where_check($Gg,$n);$K=$k->select($a,$N,$Z,$N);if($K)echo reset($K->fetch_row());}exit;}$Oe=$Ig=null;foreach($x as$w){if($w["type"]=="PRIMARY"){$Oe=array_flip($w["columns"]);$Ig=($N?$Oe:array());foreach($Ig as$z=>$X){if(in_array(idf_escape($z),$N))unset($Ig[$z]);}break;}}if($Td&&!$Oe){$Oe=$Ig=array($Td=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($Td));}if($_POST&&!$l){$fh=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea)$Ga[]=where_check($Ea,$n);$fh[]="((".implode(") OR (",$Ga)."))";}$fh=($fh?"\nWHERE ".implode(" AND ",$fh):"");if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");$tc=($N?implode(", ",$N):"*").convert_fields($e,$n,$N)."\nFROM ".table($a);$xc=($t&&$Wc?"\nGROUP BY ".implode(", ",$t):"").($fe?"\nORDER BY ".implode(", ",$fe):"");if(!is_array($_POST["check"])||$Oe)$I="SELECT $tc$fh$xc";else{$Eg=array();foreach($_POST["check"]as$X)$Eg[]="(SELECT".limit($tc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$xc,1).")";$I=implode(" UNION ALL ",$Eg);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Z,$q)){if($_POST["save"]||$_POST["delete"]){$J=true;$ka=0;$P=array();if(!$_POST["delete"]){foreach($e as$F=>$X){$X=process_input($n[$F]);if($X!==null&&($_POST["clone"]||$X!==false))$P[idf_escape($F)]=($X!==false?$X:idf_escape($F));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Oe&&is_array($_POST["check"]))||$Wc){$J=($_POST["delete"]?$k->delete($a,$fh):($_POST["clone"]?queries("INSERT $I$fh"):$k->update($a,$P,$fh)));$ka=$f->affected_rows;}else{foreach((array)$_POST["check"]as$X){$eh="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$J=($_POST["delete"]?$k->delete($a,$eh,1):($_POST["clone"]?queries("INSERT".limit1($a,$I,$eh)):$k->update($a,$P,$eh,1)));if(!$J)break;$ka+=$f->affected_rows;}}}$D=lang(array('%d item has been affected.','%d items have been affected.'),$ka);if($_POST["clone"]&&$J&&$ka==1){$id=last_id();if($id)$D=sprintf('Item%s has been inserted.'," $id");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){edit_form($a,$n,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l='Ctrl+click on a value to modify it.';else{$J=true;$ka=0;foreach($_POST["val"]as$Gg=>$L){$P=array();foreach($L as$z=>$X){$z=bracket_escape($z,1);$P[idf_escape($z)]=(preg_match('~char|text~',$n[$z]["type"])||$X!=""?$b->processInput($n[$z],$X):"NULL");}$J=$k->update($a,$P," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Gg,$n),!$Wc&&!$Oe," ");if(!$J)break;$ka+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ka),$J);}}elseif(!is_string($jc=get_file("csv_file",true)))$l=upload_error($jc);elseif(!preg_match('~~u',$jc))$l='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ja["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Qa=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$jc,$ud);$ka=count($ud[0]);$k->begin();$xf=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($ud[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$xf]*)$xf~",$X.$xf,$vd);if(!$z&&!array_diff($vd[1],$Qa)){$Qa=$vd[1];$ka--;}else{$P=array();foreach($vd[1]as$u=>$Ma)$P[idf_escape($Qa[$u])]=($Ma==""&&$n[$Qa[$u]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$Ma))));$M[]=$P;}}$J=(!$M||$k->insertUpdate($a,$M,$Oe));if($J)$J=$k->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ka),$J);$k->rollback();}}}$Wf=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else page_header('Select'.": $Wf",$l);$P=null;if(isset($lf["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$X){if($q[$X["col"]]&&count($q[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$P.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($S,$P);if(!$e&&support("table"))echo"

    ".'Unable to select the table'.($n?".":": ".error())."\n";else{echo"

    \n","
    ";hidden_fields_get();echo(DB!=""?''.(isset($_GET["ns"])?'':""):"");echo'',"
    \n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Z,$e,$x);$b->selectOrderPrint($fe,$e,$x);$b->selectLimitPrint($_);$b->selectLengthPrint($ig);$b->selectActionPrint($x);echo"
    \n";$G=$_GET["page"];if($G=="last"){$sc=$f->result(count_rows($a,$Z,$Wc,$t));$G=floor(max(0,$sc-1)/$_);}$sf=$N;$wc=$t;if(!$sf){$sf[]="*";$ab=convert_fields($e,$n,$N);if($ab)$sf[]=substr($ab,2);}foreach($N as$z=>$X){$m=$n[idf_unescape($X)];if($m&&($pa=convert_field($m)))$sf[$z]="$pa AS $X";}if(!$Wc&&$Ig){foreach($Ig as$z=>$X){$sf[]=idf_escape($z);if($wc)$wc[]=idf_escape($z);}}$J=$k->select($a,$sf,$Z,$wc,$fe,$_,$G,true);if(!$J)echo"

    ".error()."\n";else{if($y=="mssql"&&$G)$J->seek($_*$G);$Mb=array();echo"

    \n";$M=array();while($L=$J->fetch_assoc()){if($G&&$y=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&$_!=""&&$t&&$Wc&&$y=="sql")$sc=$f->result(" SELECT FOUND_ROWS()");if(!$M)echo"

    ".'No rows.'."\n";else{$wa=$b->backwardKeys($a,$Wf);echo"

    ","",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$t&&$N?"":"\n";if(is_ajax()){if($_%2==1&&$G%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$q)as$E=>$L){$Fg=unique_array($M[$E],$x);if(!$Fg){$Fg=array();foreach($M[$E]as$z=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$z))$Fg[$z]=$X;}}$Gg="";foreach($Fg as$z=>$X){if(($y=="sql"||$y=="pgsql")&&preg_match('~char|text|enum|set~',$n[$z]["type"])&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".($y!='sql'||preg_match("~^utf8~",$n[$z]["collation"])?$z:"CONVERT($z USING ".charset($f).")").")";$X=md5($X);}$Gg.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X):"null%5B%5D=".urlencode($z));}echo"".(!$t&&$N?"":"";}}}if($wa)echo"\n";}if(is_ajax())exit;echo"
    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".'Modify'."");$Kd=array();$uc=array();reset($N);$af=1;foreach($M[0]as$z=>$X){if(!isset($Ig[$z])){$X=$_GET["columns"][key($N)];$m=$n[$N?($X?$X["col"]:current($N)):$z];$F=($m?$b->fieldName($m,$af):($X["fun"]?"*":$z));if($F!=""){$af++;$Kd[$z]=$F;$d=idf_escape($z);$Ic=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$sb="&desc%5B0%5D=1";echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});",""),'';echo apply_sql_function($X["fun"],$F)."";echo"";}$uc[$z]=$X["fun"];next($N);}}$od=array();if($_GET["modify"]){foreach($M as$L){foreach($L as$z=>$X)$od[$z]=max($od[$z],min(40,strlen(utf8_decode($X))));}}echo($wa?"".'Relations':"")."
    ".checkbox("check[]",substr($Gg,1),in_array(substr($Gg,1),(array)$_POST["check"])).($Wc||information_schema(DB)?"":" ".'edit'.""));foreach($L as$z=>$X){if(isset($Kd[$z])){$m=$n[$z];$X=$k->value($X,$m);if($X!=""&&(!isset($Mb[$z])||$Mb[$z]!=""))$Mb[$z]=(is_mail($X)?$Kd[$z]:"");$A="";if(preg_match('~blob|bytea|raw|file~',$m["type"])&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$Gg;if(!$A&&$X!==null){foreach((array)$q[$z]as$p){if(count($q[$z])==1||end($p["source"])==$z){$A="";foreach($p["source"]as$u=>$Ff)$A.=where_link($u,$p["target"][$u],$M[$E][$Ff]);$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($z=="COUNT(*)"){$A=ME."select=".urlencode($a);$u=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Fg))$A.=where_link($u++,$W["col"],$W["val"],$W["op"]);}foreach($Fg as$ad=>$W)$A.=where_link($u++,$ad,$W);}$X=select_value($X,$A,$m,$ig);$v=h("val[$Gg][".bracket_escape($z)."]");$Y=$_POST["val"][$Gg][bracket_escape($z)];$Hb=!is_array($L[$z])&&is_utf8($X)&&$M[$E][$z]==$L[$z]&&!$uc[$z];$hg=preg_match('~text|lob~',$m["type"]);echo"".($hg?"":"");}else{$sd=strpos($X,"");echo" data-text='".($sd?2:($hg?1:0))."'".($Hb?"":" data-warning='".h('Use edit link to modify this value.')."'").">$X";$b->backwardKeysPrint($wa,$M[$E]);echo"
    \n","
    \n";}if(!is_ajax()){if($M||$G){$Wb=true;if($_GET["page"]!="last"){if($_==""||(count($M)<$_&&($M||!$G)))$sc=($G?$G*$_:0)+count($M);elseif($y!="sql"||!$Wc){$sc=($Wc?false:found_rows($S,$Z));if($sc$_||$G));if($se){echo(($sc===false?count($M)+1:$sc-$G*$_)>$_?'

    '.'Load more data'.''.script("qsl('a').onclick = partial(selectLoadMore, ".(+$_).", '".'Loading'."…');",""):''),"\n";}}echo"

    \n";if($b->selectImportPrint()){echo"
    ","".'Import'."",script("qsl('a').onclick = partial(toggle, 'import');",""),"","
    ";}echo"\n","\n",(!$t&&$N?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$Mf=isset($_GET["status"]);page_header($Mf?'Status':'Variables');$Vg=($Mf?show_status():show_variables());if(!$Vg)echo"

    ".'No rows.'."\n";else{echo"\n";foreach($Vg as$z=>$X){echo"","
    ".h($z)."","".h($X);}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Tf=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$F=>$S){json_row("Comment-$F",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$z)json_row("$z-$F",h($S[$z]));foreach($Tf+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($S[$z]!=""){$X=format_number($S[$z]);json_row("$z-$F",($z=="Rows"&&$X&&$S["Engine"]==($Hf=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Tf[$z]))$Tf[$z]+=($S["Engine"]!="InnoDB"||$z!="Data_free"?$S[$z]:0);}elseif(array_key_exists($z,$S))json_row("$z-$F");}}}foreach($Tf as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$bg=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($bg&&!$l&&!$_POST["search"]){$J=true;$D="";if($y=="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"])$J=truncate_tables($_POST["tables"]);$D='Tables have been truncated.';}elseif($_POST["move"]){$J=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been moved.';}elseif($_POST["copy"]){$J=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$J=drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=drop_tables($_POST["tables"]);$D='Tables have been dropped.';}elseif($y!="sql"){$J=($y=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D='Tables have been optimized.';}elseif(!$_POST["tables"])$D='No tables.';elseif($J=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="".h($L["Table"]).": ".h($L["Msg_text"])."
    ";}queries_redirect(substr(ME,0,-1),$D,$J);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$l,true);if($b->homepage()){if($_GET["ns"]!==""){echo"

    ".'Tables and views'."

    \n";$ag=tables_list();if(!$ag)echo"

    ".'No tables.'."\n";else{echo"

    \n";if(support("table")){echo"
    ".'Search data in tables'."
    ","",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]="LIKE %%";search_tables();}}echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$T=0;foreach($ag as$F=>$V){$Yg=($V!==null&&!preg_match('~table|sequence~i',$V));$v=h("Table-".$F);echo'
    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.'Table',''.'Engine'.'',''.'Collation'.'',''.'Data Length'.'',''.'Index Length'.'',''.'Data Free'.'',''.'Auto Increment'.'',''.'Rows'.'',(support("comment")?''.'Comment'.'':''),"
    '.checkbox(($Yg?"views[]":"tables[]"),$F,in_array($F,$bg,true),"","","",$v),''.(support("table")||support("indexes")?"".h($F).'':h($F));if($Yg){echo''.(preg_match('~materialized~i',$V)?'Materialized view':'View').'','?';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$z=>$A){$v=" id='$z-".h($F)."'";echo($A?"".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"?":"?"):"");}$T++;}echo(support("comment")?"":"");}echo"
    ".sprintf('%d in total',count($ag)),"".h($y=="sql"?$f->result("SELECT @@default_storage_engine"):""),"".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"";echo"
    \n","
    \n";if(!information_schema(DB)){echo"\n";}echo"
    \n",script("tableCheck();");}echo'