quote($Q);}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($Ag[$_][$je]);if(is_array($W)){$Ag[$_][stripslashes($je)]=$W;$Ag[]=&$Ag[$_][stripslashes($je)];}else$Ag[$_][stripslashes($je)]=($Uc?$W:stripslashes($W));}}}}function bracket_escape($x,$Da=false){static$Bi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return strtr($x,($Da?array_flip($Bi):$Bi));}function min_version($jj,$Fe="",$i=null){global$h;if(!$i)$i=$h;$uh=$i->server_info;if($Fe&&preg_match('~([\d.]+)-MariaDB~',$uh,$C)){$uh=$C[1];$jj=$Fe;}return$jj&&version_compare($uh,$jj)>=0;}function charset($h){return(min_version("5.5.3",0,$h)?"utf8mb4":"utf8");}function ini_bool($Vd){$X=ini_get($Vd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function set_password($ij,$N,$V,$G){$_SESSION["pwds"][$ij][$N][$V]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function get_val($H,$p=0){global$h;return$h->result($H,$p);}function get_vals($H,$e=0){global$h;$J=array();$I=$h->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$e];}return$J;}function get_key_vals($H,$i=null,$xh=true){global$h;if(!is_object($i))$i=$h;$J=array();$I=$i->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($xh)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function get_rows($H,$i=null,$o="

"){global$h;$rb=(is_object($i)?$i:$h);$J=array();$I=$rb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!is_object($i)&&$o&&(defined('Adminer\PAGE_HEADER')||$o=="-- "))echo$o.error()."\n";return$J;}function unique_array($K,$z){foreach($z as$y){if(preg_match("~PRIMARY|UNIQUE~",$y["type"])){$J=array();foreach($y["columns"]as$_){if(!isset($K[$_]))continue 2;$J[$_]=$K[$_];}return$J;}}}function escape_key($_){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$_,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return idf_escape($_);}function where($Z,$q=array()){global$h;$J=array();foreach((array)$Z["where"]as$_=>$X){$_=bracket_escape($_,1);$e=escape_key($_);$Sc=$q[$_]["type"];$J[]=$e.(JUSH=="sql"&&$Sc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Sc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($q[$_],q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Sc)&&preg_match("~[^ -@]~",$X))$J[]="$e = ".q($X)." COLLATE ".charset($h)."_bin";}foreach((array)$Z["null"]as$_)$J[]=escape_key($_)." IS NULL";return implode(" AND ",$J);}function where_check($X,$q=array()){parse_str($X,$Va);remove_slashes(array(&$Va));return where($Va,$q);}function where_link($v,$e,$Y,$Af="="){return"&where%5B$v%5D%5Bcol%5D=".urlencode($e)."&where%5B$v%5D%5Bop%5D=".urlencode(($Y!==null?$Af:"IS NULL"))."&where%5B$v%5D%5Bval%5D=".urlencode($Y);}function convert_fields($f,$q,$M=array()){$J="";foreach($f as$_=>$X){if($M&&!in_array(idf_escape($_),$M))continue;$xa=convert_field($q[$_]);if($xa)$J.=", $xa AS ".idf_escape($_);}return$J;}function cookie($D,$Y,$_e=2592000){global$ba;return header("Set-Cookie: $D=".urlencode($Y).($_e?"; expires=".gmdate("D, d M Y H:i:s",time()+$_e)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).($ba?"; secure":"")."; HttpOnly; SameSite=lax",false);}function get_settings($_b){parse_str($_COOKIE[$_b],$yh);return$yh;}function get_setting($_,$_b="adminer_settings"){$yh=get_settings($_b);return$yh[$_];}function save_settings($yh,$_b="adminer_settings"){return cookie($_b,http_build_query($yh+get_settings($_b)));}function restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function stop_session($cd=false){$aj=ini_bool("session.use_cookies");if(!$aj||$cd){session_write_close();if($aj&&@ini_set("session.use_cookies",false)===false)session_start();}}function&get_session($_){return$_SESSION[$_][DRIVER][SERVER][$_GET["username"]];}function set_session($_,$X){$_SESSION[$_][DRIVER][SERVER][$_GET["username"]]=$X;}function auth_url($ij,$N,$V,$l=null){global$bc;$Wi=remove_from_uri(implode("|",array_keys($bc))."|username|ext|".($l!==null?"db|":"").($ij=='mssql'||$ij=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Wi,$C);return"$C[1]?".(sid()?SID."&":"").($ij!="server"||$N!=""?urlencode($ij)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($l!=""?"&db=".urlencode($l):"").($C[2]?"&$C[2]":"");}function is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function redirect($Be,$Se=null){if($Se!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($Be!==null?$Be:$_SERVER["REQUEST_URI"]))][]=$Se;}if($Be!==null){if($Be=="")$Be=".";header("Location: $Be");exit;}}function query_redirect($H,$Be,$Se,$Jg=true,$Ec=true,$Nc=false,$pi=""){global$h,$o,$b;if($Ec){$Oh=microtime(true);$Nc=!$h->query($H);$pi=format_time($Oh);}$Ih="";if($H)$Ih=$b->messageQuery($H,$pi,$Nc);if($Nc){$o=error().$Ih.script("messagesPrint();");return false;}if($Jg)redirect($Be,$Se.$Ih);return true;}function queries($H){global$h;static$Eg=array();static$Oh;if(!$Oh)$Oh=microtime(true);if($H===null)return array(implode("\n",$Eg),format_time($Oh));$Eg[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return$h->query($H);}function apply_queries($H,$T,$Ac='Adminer\table'){foreach($T as$R){if(!queries("$H ".$Ac($R)))return false;}return true;}function queries_redirect($Be,$Se,$Jg){list($Eg,$pi)=queries(null);return query_redirect($Eg,$Be,$Se,$Jg,false,!$Jg,$pi);}function format_time($Oh){return lang(0,max(0,microtime(true)-$Oh));}function relative_uri(){return str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function remove_from_uri($Xf=""){return substr(preg_replace("~(?<=[?&])($Xf".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function get_file($_,$Ob=false,$Sb=""){$Tc=$_FILES[$_];if(!$Tc)return null;foreach($Tc as$_=>$X)$Tc[$_]=(array)$X;$J='';foreach($Tc["error"]as$_=>$o){if($o)return$o;$D=$Tc["name"][$_];$xi=$Tc["tmp_name"][$_];$wb=file_get_contents($Ob&&preg_match('~\.gz$~',$D)?"compress.zlib://$xi":$xi);if($Ob){$Oh=substr($wb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Oh))$wb=iconv("utf-16","utf-8",$wb);elseif($Oh=="\xEF\xBB\xBF")$wb=substr($wb,3);}$J.=$wb;if($Sb)$J.=(preg_match("($Sb\\s*\$)",$wb)?"":$Sb)."\n\n";}return$J;}function upload_error($o){$Ne=($o==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($o?lang(1).($Ne?" ".lang(2,$Ne):""):lang(3));}function repeat_pattern($hg,$ye){return str_repeat("$hg{0,65535}",$ye/65535)."$hg{0,".($ye%65535)."}";}function is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function shorten_utf8($Q,$ye=80,$Uh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$ye).")($)?)u",$Q,$C))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$ye).")($)?)",$Q,$C);return h($C[1]).$Uh.(isset($C[2])?"":"");}function format_number($X){return strtr(number_format($X,0,".",lang(4)),preg_split('~~u',lang(5),-1,PREG_SPLIT_NO_EMPTY));}function friendly_url($X){return preg_replace('~\W~i','-',$X);}function table_status1($R,$Oc=false){$J=table_status($R,$Oc);return($J?:array("Name"=>$R));}function column_foreign_keys($R){global$b;$J=array();foreach($b->foreignKeys($R)as$s){foreach($s["source"]as$X)$J[$X][]=$s;}return$J;}function fields_from_edit(){global$n;$J=array();foreach((array)$_POST["field_keys"]as$_=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$_];$_POST["fields"][$X]=$_POST["field_vals"][$_];}}foreach((array)$_POST["fields"]as$_=>$X){$D=bracket_escape($_,1);$J[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($_==$n->primary),);}return$J;}function dump_headers($Id,$af=false){global$b;$J=$b->dumpHeaders($Id,$af);$Tf=$_POST["output"];if($Tf!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($Id).".$J".($Tf!="file"&&preg_match('~^[0-9a-z]+$~',$Tf)?".$Tf":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function dump_csv($K){foreach($K as$_=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$K[$_]='"'.str_replace('"','""',$X).'"';}echo implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function apply_sql_function($u,$e){return($u?($u=="unixepoch"?"DATETIME($e, '$u')":($u=="count distinct"?"COUNT(DISTINCT ":strtoupper("$u("))."$e)"):$e);}function get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$r=@tempnam("","");if(!$r)return false;$J=dirname($r);unlink($r);}}return$J;}function file_open_lock($r){if(is_link($r))return;$t=@fopen($r,"c+");if(!$t)return;chmod($r,0660);if(!flock($t,LOCK_EX)){fclose($t);return;}return$t;}function file_write_unlock($t,$Ib){rewind($t);fwrite($t,$Ib);ftruncate($t,strlen($Ib));file_unlock($t);}function file_unlock($t){flock($t,LOCK_UN);fclose($t);}function first($wa){return reset($wa);}function password_file($j){$r=get_temp_dir()."/adminer.key";if(!$j&&!file_exists($r))return false;$t=file_open_lock($r);if(!$t)return false;$J=stream_get_contents($t);if(!$J){$J=rand_string();file_write_unlock($t,$J);}else file_unlock($t);return$J;}function rand_string(){return md5(uniqid(mt_rand(),true));}function select_value($X,$B,$p,$oi){global$b;if(is_array($X)){$J="";foreach($X as$je=>$W)$J.="".($X!=array_values($X)?"".h($je):"")."".select_value($W,$B,$p,$oi);return"$J
";}if(!$B)$B=$b->selectLink($X,$p);if($B===null){if(is_mail($X))$B="mailto:$X";if(is_url($X))$B=$X;}$J=$b->editVal($X,$p);if($J!==null){if(!is_utf8($J))$J="\0";elseif($oi!=""&&is_shortable($p))$J=shorten_utf8($J,max(0,+$oi));else$J=h($J);}return$b->selectVal($J,$B,$p,$X);}function is_mail($oc){$ya='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ac='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$hg="$ya+(\\.$ya+)*@($ac?\\.)+$ac";return is_string($oc)&&preg_match("(^$hg(,\\s*$hg)*\$)i",$oc);}function is_url($Q){$ac='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return preg_match("~^(https?)://($ac?\\.)+$ac(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function is_shortable($p){return preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$p["type"]);}function count_rows($R,$Z,$de,$qd){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($de&&(JUSH=="sql"||count($qd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$qd).")$H":"SELECT COUNT(*)".($de?" FROM (SELECT 1$H GROUP BY ".implode(", ",$qd).") x":$H));}function slow_query($H){global$b,$yi,$n;$l=$b->database();$qi=$b->queryTimeout();$Bh=$n->slowQuery($H,$qi);$i=null;if(!$Bh&&support("kill")&&is_object($i=connect($b->credentials()))&&($l==""||$i->select_db($l))){$me=$i->result(connection_id());echo script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$me&token=$yi'); }, 1000 * $qi);");}ob_flush();flush();$J=@get_key_vals(($Bh?:$H),$i,false);if($i){echo script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function get_token(){$Hg=rand(1,1e6);return($Hg^$_SESSION["token"]).":$Hg";}function verify_token(){list($yi,$Hg)=explode(":",$_POST["token"]);return($Hg^$_SESSION["token"])==$yi;}function lzw_decompress($Ja){$Wb=256;$Ka=8;$eb=array();$Ug=0;$Vg=0;for($v=0;$v=$Ka){$Vg-=$Ka;$eb[]=$Ug>>$Vg;$Ug&=(1<<$Vg)-1;$Wb++;if($Wb>>$Ka)$Ka++;}}$Vb=range("\0","\xFF");$J="";foreach($eb as$v=>$db){$nc=$Vb[$db];if(!isset($nc))$nc=$sj.$sj[0];$J.=$nc;if($v)$Vb[]=$sj.$nc[0];$sj=$nc;}return$J;}function script($Eh,$Ai="\n"){return"$Eh$Ai";}function script_src($Xi){return"\n";}function nonce(){return' nonce="'.get_nonce().'"';}function input_hidden($D,$Y=""){return"\n";}function input_token($Gh=""){global$yi;return input_hidden("token",($Gh?:$yi));}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($D,$Y,$Ya,$oe="",$_f="",$cb="",$pe=""){$J="".($_f?script("qsl('input').onclick = function () { $_f };",""):"");return($oe!=""||$cb?"$J".h($oe)."":$J);}function optionlist($Ef,$mh=null,$bj=false){$J="";foreach($Ef as$je=>$W){$Ff=array($je=>$W);if(is_array($W)){$J.='';$Ff=$W;}foreach($Ff as$_=>$X)$J.=''.h($X);if(is_array($W))$J.='';}return$J;}function html_select($D,$Ef,$Y="",$zf="",$pe=""){return"".($zf?script("qsl('select').onchange = function () { $zf };",""):"");}function html_radios($D,$Ef,$Y=""){$J="";foreach($Ef as$_=>$X)$J.="";return$J;}function confirm($Se="",$nh="qsl('input')"){return script("$nh.onclick = () => confirm('".($Se?js_escape($Se):lang(6))."');","");}function print_fieldset($w,$xe,$mj=false){echo"

","$xe",script("qsl('a').onclick = partial(toggle, 'fieldset-$w');",""),"","
\n";}function selectSearchPrint($Z,$f,$z){print_fieldset("search",lang(55),$Z);foreach($z as$v=>$y){if($y["type"]=="FULLTEXT")echo"
(".implode(", ",array_map('Adminer\h',$y["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$v]",1,isset($_GET["boolean"][$v]),"BOOL"),"
\n";}$Ta="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$v=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)))echo"
".select_input(" name='where[$v][col]'",$f,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(56).")"),html_select("where[$v][op]",$this->operators,$X["op"],$Ta),"",script("mixin(qsl('input'), {oninput: function () { $Ta }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}echo"\n";}function selectOrderPrint($Gf,$f,$z){print_fieldset("sort",lang(57),$Gf);$v=0;foreach((array)$_GET["order"]as$_=>$X){if($X!=""){echo"
".select_input(" name='order[$v]'",$f,$X,"selectFieldChange"),checkbox("desc[$v]",1,isset($_GET["desc"][$_]),lang(58))."
\n";$v++;}}echo"
".select_input(" name='order[$v]'",$f,"","selectAddRow"),checkbox("desc[$v]",1,false,lang(58))."
\n","\n";}function selectLimitPrint($A){echo"
".lang(59)."
","",script("qsl('input').oninput = selectFieldChange;",""),"
\n";}function selectLengthPrint($oi){if($oi!==null)echo"
".lang(60)."
","","
\n";}function selectActionPrint($z){echo"
".lang(61)."
",""," ","\n","const indexColumns = ";$f=array();foreach($z as$y){$Gb=reset($y["columns"]);if($y["type"]!="FULLTEXT"&&$Gb)$f[$Gb]=1;}$f[""]=1;foreach($f as$_=>$X)json_row($_);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function selectCommandPrint(){return!information_schema(DB);}function selectImportPrint(){return!information_schema(DB);}function selectEmailPrint($pc,$f){}function selectColumnsProcess($f,$z){global$n;$M=array();$qd=array();foreach((array)$_GET["columns"]as$_=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$n->functions)||in_array($X["fun"],$n->grouping)))){$M[$_]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$n->grouping))$qd[]=$M[$_];}}return array($M,$qd);}function selectSearchProcess($q,$z){global$h,$n;$J=array();foreach($z as$v=>$y){if($y["type"]=="FULLTEXT"&&$_GET["fulltext"][$v]!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$y["columns"])).") AGAINST (".q($_GET["fulltext"][$v]).(isset($_GET["boolean"][$v])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$_=>$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$tg="";$qb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Nd=process_length($X["val"]);$qb.=" ".($Nd!=""?$Nd:"(NULL)");}elseif($X["op"]=="SQL")$qb=" $X[val]";elseif($X["op"]=="LIKE %%")$qb=" LIKE ".$this->processInput($q[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$qb=" ILIKE ".$this->processInput($q[$X["col"]],"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$tg="$X[op](".q($X["val"]).", ";$qb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$qb.=" ".$this->processInput($q[$X["col"]],$X["val"]);if($X["col"]!="")$J[]=$tg.$n->convertSearch(idf_escape($X["col"]),$X,$q[$X["col"]]).$qb;else{$jb=array();foreach($q as$D=>$p){if(isset($p["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$p["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$p["type"]))&&(!preg_match('~date|timestamp~',$p["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"])))$jb[]=$tg.$n->convertSearch(idf_escape($D),$X,$p).$qb;}$J[]=($jb?"(".implode(" OR ",$jb).")":"1 = 0");}}}return$J;}function selectOrderProcess($q,$z){$J=array();foreach((array)$_GET["order"]as$_=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$_])?" DESC":"");}return$J;}function selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}function selectEmailProcess($Z,$ed){return false;}function selectQueryBuild($M,$Z,$qd,$Gf,$A,$F){return"";}function messageQuery($H,$pi,$Nc=false){global$n;restart_session();$Ed=&get_session("queries");if(!$Ed[$_GET["db"]])$Ed[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Ed[$_GET["db"]][]=array($H,time(),$pi);$Kh="sql-".count($Ed[$_GET["db"]]);$J="".lang(63)."\n";if(!$Nc&&($oj=$n->warnings())){$w="warnings-".count($Ed[$_GET["db"]]);$J="".lang(45).", $J\n";}return" ".@date("H:i:s").""." $J';}function editRowPrint($R,$q,$K,$Vi){}function editFunctions($p){global$n;$J=($p["null"]?"NULL/":"");$Vi=isset($_GET["select"])||where($_GET);foreach($n->editFunctions as$_=>$ld){if(!$_||(!isset($_GET["call"])&&$Vi)){foreach($ld as$hg=>$X){if(!$hg||preg_match("~$hg~",$p["type"]))$J.="/$X";}}if($_&&!preg_match('~set|blob|bytea|raw|file|bool~',$p["type"]))$J.="/SQL";}if($p["auto_increment"]&&!$Vi)$J=lang(50);return explode("/",$J);}function editInput($R,$p,$za,$Y){if($p["type"]=="enum")return(isset($_GET["select"])?" ":"").($p["null"]?" ":"").enum_input("radio",$za,$p,$Y,$Y===0?0:null);return"";}function editHint($R,$p,$Y){return"";}function processInput($p,$Y,$u=""){if($u=="SQL")return$Y;$D=$p["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$u))$J="$u()";elseif(preg_match('~^current_(date|timestamp)$~',$u))$J=$u;elseif(preg_match('~^([+-]|\|\|)$~',$u))$J=idf_escape($D)." $u $J";elseif(preg_match('~^[+-] interval$~',$u))$J=idf_escape($D)." $u ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$u))$J="$u(".idf_escape($D).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$u))$J="$u($J)";return unconvert_field($p,$J);}function dumpOutput(){$J=array('text'=>lang(64),'file'=>lang(65));if(function_exists('gzencode'))$J['gz']='gzip';return$J;}function dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function dumpDatabase($l){}function dumpTable($R,$Sh,$ge=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Sh)dump_csv(array_keys(fields($R)));}else{if($ge==2){$q=array();foreach(fields($R)as$D=>$p)$q[]=idf_escape($D)." $p[full_type]";$j="CREATE TABLE ".table($R)." (".implode(", ",$q).")";}else$j=create_sql($R,$_POST["auto_increment"],$Sh);set_utf8mb4($j);if($Sh&&$j){if($Sh=="DROP+CREATE"||$ge==1)echo"DROP ".($ge==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($ge==1)$j=remove_definer($j);echo"$j;\n\n";}}}function dumpData($R,$Sh,$H){global$h;if($Sh){$Ke=(JUSH=="sqlite"?0:1048576);$q=array();$Kd=false;if($_POST["format"]=="sql"){if($Sh=="TRUNCATE+INSERT")echo truncate_sql($R).";\n";$q=fields($R);if(JUSH=="mssql"){foreach($q as$p){if($p["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$Kd=true;break;}}}}$I=$h->query($H,1);if($I){$Yd="";$Oa="";$le=array();$md=array();$Uh="";$Qc=($R!=''?'fetch_assoc':'fetch_row');while($K=$I->$Qc()){if(!$le){$gj=array();foreach($K as$X){$p=$I->fetch_field();if($q[$p->name]['generated']){$md[$p->name]=true;continue;}$le[]=$p->name;$_=idf_escape($p->name);$gj[]="$_ = VALUES($_)";}$Uh=($Sh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$gj):"").";\n";}if($_POST["format"]!="sql"){if($Sh=="table"){dump_csv($le);$Sh="INSERT";}dump_csv($K);}else{if(!$Yd)$Yd="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$le)).") VALUES";foreach($K as$_=>$X){if($md[$_]){unset($K[$_]);continue;}$p=$q[$_];$K[$_]=($X!==null?unconvert_field($p,preg_match(number_type(),$p["type"])&&!preg_match('~\[~',$p["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$eh=($Ke?"\n":" ")."(".implode(",\t",$K).")";if(!$Oa)$Oa=$Yd.$eh;elseif(strlen($Oa)+4+strlen($eh)+strlen($Uh)<$Ke)$Oa.=",$eh";else{echo$Oa.$Uh;$Oa=$Yd.$eh;}}}if($Oa)echo$Oa.$Uh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",$h->error)."\n";if($Kd)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function dumpFilename($Id){return friendly_url($Id!=""?$Id:(SERVER!=""?SERVER:"localhost"));}function dumpHeaders($Id,$af=false){$Tf=$_POST["output"];$Ic=(preg_match('~sql~',$_POST["format"])?"sql":($af?"tar":"csv"));header("Content-Type: ".($Tf=="gz"?"application/x-gzip":($Ic=="tar"?"application/x-tar":($Ic=="sql"||$Tf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Tf=="gz"){ob_start(function($Q){return gzencode($Q);},1e6);}return$Ic;}function dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function importServerPath(){return"adminer.sql";}function homepage(){echo'

".$this->name()." $ia";$if=$_COOKIE["adminer_version"];echo" ".(version_compare($ia,$if)<0?h($if):"")."","

\n";switch_lang();if($Ye=="auth"){$Tf="";foreach((array)$_SESSION["pwds"]as$ij=>$vh){foreach($vh as$N=>$dj){$D=h(get_setting("vendor-$ij-$N")?:$bc[$ij]);foreach($dj as$V=>$G){if($G!==null){$Nb=$_SESSION["db"][$ij][$N][$V];foreach(($Nb?array_keys($Nb):array(""))as$l)$Tf.="
  • ($D) ".h($V.($N!=""?"@".$this->serverName($N):"").($l!=""?" - $l":""))."\n";}}}}if($Tf)echo"\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Ye&&DB!=""){$h->select_db(DB);$T=table_status('',true);}$this->syntaxHighlighting($T);$this->databasesPrint($Ye);$ma=array();if(DB==""||!$Ye){if(support("sql")){$ma[]="".lang(63)."";$ma[]="".lang(71)."";}$ma[]="".lang(72)."";}$Od=$_GET["ns"]!==""&&!$Ye&&DB!="";if($Od)$ma[]='".lang(73)."";echo($ma?"

    ".lang(9)."

    \n";}}}function syntaxHighlighting($T){global$h;echo script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.1.0");if(support("sql")){echo"\n";if($T){$Ae=array();foreach($T as$R=>$U)$Ae[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$Ae).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";}echo"\n";}echo script("syntaxHighlighting('".(is_object($h)?preg_replace('~^(\d\.?\d).*~s','\1',$h->server_info):"")."'".($h->flavor=='maria'?", 'maria'":($h->flavor=='cockroach'?", 'cockroach'":"")).");");}function databasesPrint($Ye){global$b,$h;$k=$this->databases();if(DB&&$k&&!in_array(DB,$k))array_unshift($k,DB);echo"
    \n

    \n";hidden_fields_get();$Lb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"".lang(74).": ".($k?html_select("db",array(""=>"")+$k,DB).$Lb:"\n"),"\n";if(support("scheme")){if($Ye!="db"&&DB!=""&&$h->select_db(DB)){echo"
    ".lang(75).": ".html_select("ns",array(""=>"")+$b->schemas(),$_GET["ns"]).$Lb;if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo input_hidden($X);break;}}echo"

    \n";}function tablesPrint($T){echo"\n";}}class Plugins extends Adminer{var$plugins;function __construct($mg){if($mg===null){$mg=array();$Ia="adminer-plugins";if(is_dir($Ia)){foreach(glob("$Ia/*.php")as$r)$Pd=include_once"./$r";}$Dd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ia.php")){$Pd=include_once"./$Ia.php";if(is_array($Pd)){foreach($Pd as$lg)$mg[get_class($lg)]=$lg;}else$this->error.=lang(77,"$Ia.php",$Dd)."
    ";}foreach(get_declared_classes()as$cb){if(!$mg[$cb]&&preg_match('~^Adminer\w~i',$cb)){$Og=new \ReflectionClass($cb);$vb=$Og->getConstructor();if($vb&&$vb->getNumberOfRequiredParameters())$this->error.=lang(78,$Dd,"$cb","$Ia.php")."
    ";else$mg[$cb]=new$cb;}}}$this->plugins=$mg;}private function callParent($u,$d){return call_user_func_array(array('parent',$u),$d);}private function applyPlugin($u,$Yf){$d=array();foreach($Yf as$_=>$X)$d[]=&$Yf[$_];foreach($this->plugins as$lg){if(method_exists($lg,$u)){$J=call_user_func_array(array($lg,$u),$d);if($J!==null)return$J;}}return$this->callParent($u,$d);}private function appendPlugin($u,$d){$J=$this->callParent($u,$d);foreach($this->plugins as$lg){if(method_exists($lg,$u)){$Y=call_user_func_array(array($lg,$u),$d);if($Y)$J+=$Y;}}return$J;}function dumpFormat(){$d=func_get_args();return$this->appendPlugin(__FUNCTION__,$d);}function dumpOutput(){$d=func_get_args();return$this->appendPlugin(__FUNCTION__,$d);}function editRowPrint($R,$q,$K,$Vi){$d=func_get_args();return$this->appendPlugin(__FUNCTION__,$d);}function editFunctions($p){$d=func_get_args();return$this->appendPlugin(__FUNCTION__,$d);}function name(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function credentials(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function connectSsl(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function permanentLogin($j=false){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function bruteForceKey(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function serverName($N){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function database(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function schemas(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function databases($bd=true){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function queryTimeout(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function headers(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function csp(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function head($Hb=null){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function css(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function loginForm(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function loginFormField($D,$Cd,$Y){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function login($Ce,$G){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function tableName($Yh){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function fieldName($p,$Gf=0){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectLinks($Yh,$O=""){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function foreignKeys($R){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function backwardKeys($R,$Xh){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function backwardKeysPrint($Ea,$K){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectQuery($H,$Oh,$Nc=false){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function sqlCommandQuery($H){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function sqlPrintAfter(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function rowDescription($R){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function rowDescriptions($L,$ed){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectLink($X,$p){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectVal($X,$B,$p,$Qf){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function editVal($X,$p){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function tableStructurePrint($q,$Yh=null){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function tableIndexesPrint($z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectColumnsPrint($M,$f){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectSearchPrint($Z,$f,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectOrderPrint($Gf,$f,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectLimitPrint($A){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectLengthPrint($oi){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectActionPrint($z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectCommandPrint(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectImportPrint(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectEmailPrint($pc,$f){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectColumnsProcess($f,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectSearchProcess($q,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectOrderProcess($q,$z){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectLimitProcess(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectLengthProcess(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectEmailProcess($Z,$ed){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function selectQueryBuild($M,$Z,$qd,$Gf,$A,$F){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function messageQuery($H,$pi,$Nc=false){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function editInput($R,$p,$za,$Y){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function editHint($R,$p,$Y){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function processInput($p,$Y,$u=""){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function dumpDatabase($l){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function dumpTable($R,$Sh,$ge=0){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function dumpData($R,$Sh,$H){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function dumpFilename($Id){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function dumpHeaders($Id,$af=false){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function dumpFooter(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function importServerPath(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function homepage(){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function navigation($Ye){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function syntaxHighlighting($T){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function databasesPrint($Ye){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}function tablesPrint($T){$d=func_get_args();return$this->applyPlugin(__FUNCTION__,$d);}}if(function_exists('adminer_object'))$b=adminer_object();elseif(is_dir("adminer-plugins")||file_exists("adminer-plugins.php"))$b=new Plugins(null);else$b=new Adminer;$bc=array("server"=>"MySQL / MariaDB")+$bc;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class Db extends \MySQLi{var$extension="MySQLi",$flavor='';function __construct(){parent::init();}function connect($N="",$V="",$G="",$Kb=null,$ng=null,$Ch=null){global$b;mysqli_report(MYSQLI_REPORT_OFF);list($Gd,$ng)=explode(":",$N,2);$Nh=$b->connectSsl();if($Nh)$this->ssl_set($Nh['key'],$Nh['cert'],$Nh['ca'],'','');$J=@$this->real_connect(($N!=""?$Gd:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$G!=""?$G:ini_get("mysqli.default_pw")),$Kb,(is_numeric($ng)?$ng:ini_get("mysqli.default_port")),(!is_numeric($ng)?$ng:$Ch),($Nh?($Nh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return$J;}function set_charset($Ua){if(parent::set_charset($Ua))return true;parent::set_charset('utf8');return$this->query("SET NAMES $Ua");}function result($H,$p=0){$I=$this->query($H);if(!$I)return false;$K=$I->fetch_array();return($K?$K[$p]:false);}function quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class Db{var$extension="MySQL",$flavor='',$server_info,$affected_rows,$info,$errno,$error;private$link,$result;function connect($N,$V,$G){if(ini_bool("mysql.allow_local_infile")){$this->error=lang(79,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");return false;}$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),("$N$V"!=""?$V:ini_get("mysql.default_user")),("$N$V$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->link)$this->server_info=mysql_get_server_info($this->link);else$this->error=mysql_error();return(bool)$this->link;}function set_charset($Ua){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Ua,$this->link))return true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Ua");}function quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function select_db($Kb){return mysql_select_db($Kb,$this->link);}function query($H,$Ni=false){$I=@($Ni?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return true;}return new Result($I);}function multi_query($H){return$this->result=$this->query($H);}function store_result(){return$this->result;}function next_result(){return false;}function result($H,$p=0){$I=$this->query($H);return($I?$I->fetch_column($p):false);}}class Result{var$num_rows;private$result,$offset=0;function __construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function fetch_assoc(){return mysql_fetch_assoc($this->result);}function fetch_row(){return mysql_fetch_row($this->result);}function fetch_column($p){return($this->num_rows?mysql_result($this->result,0,$p):false);}function fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function __destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class Db extends PdoDb{var$extension="PDO_MySQL";function connect($N,$V,$G){global$b;$Ef=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Nh=$b->connectSsl();if($Nh){if($Nh['key'])$Ef[\PDO::MYSQL_ATTR_SSL_KEY]=$Nh['key'];if($Nh['cert'])$Ef[\PDO::MYSQL_ATTR_SSL_CERT]=$Nh['cert'];if($Nh['ca'])$Ef[\PDO::MYSQL_ATTR_SSL_CA]=$Nh['ca'];if(isset($Nh['verify']))$Ef[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$Nh['verify'];}$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$G,$Ef);return true;}function set_charset($Ua){$this->query("SET NAMES $Ua");}function select_db($Kb){return$this->query("USE ".idf_escape($Kb));}function query($H,$Ni=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Ni);return parent::query($H,$Ni);}}}class Driver extends SqlDriver{static$rg=array("MySQLi","MySQL","PDO_MySQL");static$ie="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");function __construct($h){parent::__construct($h);$this->types=array(lang(25)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(26)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(27)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(80)=>array("enum"=>65535,"set"=>64),lang(28)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(30)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->editFunctions=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));if(min_version('5.7.8',10.2,$h))$this->types[lang(27)]["json"]=4294967295;if(min_version('',10.7,$h)){$this->types[lang(27)]["uuid"]=128;$this->editFunctions[0]['uuid']='uuid';}if(min_version(9,'',$h)){$this->types[lang(25)]["vector"]=16383;$this->editFunctions[0]['vector']='string_to_vector';}if(min_version(5.7,10.2,$h))$this->generated=array("STORED","VIRTUAL");}function unconvertFunction($p){return(preg_match("~binary~",$p["type"])?"UNHEX":($p["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):(preg_match("~geometry|point|linestring|polygon~",$p["type"])?"GeomFromText":"")));}function insert($R,$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function insertUpdate($R,$L,$vg){$f=array_keys(reset($L));$tg="INSERT INTO ".table($R)." (".implode(", ",$f).") VALUES\n";$gj=array();foreach($f as$_)$gj[$_]="$_ = VALUES($_)";$Uh="\nON DUPLICATE KEY UPDATE ".implode(", ",$gj);$gj=array();$ye=0;foreach($L as$O){$Y="(".implode(", ",$O).")";if($gj&&(strlen($tg)+$ye+strlen($Y)+strlen($Uh)>1e6)){if(!queries($tg.implode(",\n",$gj).$Uh))return false;$gj=array();$ye=0;}$gj[]=$Y;$ye+=strlen($Y)+2;}return queries($tg.implode(",\n",$gj).$Uh);}function slowQuery($H,$qi){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$qi FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($qi*1000).") */ $C[2]";}}function convertSearch($x,$X,$p){return(preg_match('~char|text|enum|set~',$p["type"])&&!preg_match("~^utf8~",$p["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($x USING ".charset($this->conn).")":$x);}function warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();select($I);return ob_get_clean();}}function tableHelp($D,$ge=false){$Ee=($this->conn->flavor=='maria');if(information_schema(DB))return strtolower("information-schema-".($Ee?"$D-table/":str_replace("_","-",$D)."-table.html"));if(DB=="mysql")return($Ee?"mysql$D-table/":"system-schema.html");}function hasCStyleEscapes(){static$Qa;if($Qa===null){$Lh=$this->conn->result("SHOW VARIABLES LIKE 'sql_mode'",1);$Qa=(strpos($Lh,'NO_BACKSLASH_ESCAPES')===false);}return$Qa;}function engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}}function idf_escape($x){return"`".str_replace("`","``",$x)."`";}function table($x){return idf_escape($x);}function connect($Cb){global$bc;$h=new Db;if($h->connect($Cb[0],$Cb[1],$Cb[2])){$h->set_charset(charset($h));$h->query("SET sql_quote_show_create = 1, autocommit = 1");$h->flavor=(preg_match('~MariaDB~',$h->server_info)?'maria':'');$bc[DRIVER]=($h->flavor=='maria'?"MariaDB":"MySQL");return$h;}$J=$h->error;if(function_exists('iconv')&&!is_utf8($J)&&strlen($eh=iconv("windows-1250","utf-8",$J))>strlen($J))$J=$eh;return$J;}function get_databases($bd){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($bd?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function limit($H,$Z,$A,$E=0,$qh=" "){return" $H$Z".($A!==null?$qh."LIMIT $A".($E?" OFFSET $E":""):"");}function limit1($R,$H,$Z,$qh="\n"){return limit($H,$Z,1,0,$qh);}function db_collation($l,$ib){$J=null;$j=get_val("SHOW CREATE DATABASE ".idf_escape($l),1);if(preg_match('~ COLLATE ([^ ]+)~',$j,$C))$J=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$j,$C))$J=$ib[$C[1]][-1];return$J;}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($k){$J=array();foreach($k as$l)$J[$l]=count(get_vals("SHOW TABLES IN ".idf_escape($l)));return$J;}function table_status($D="",$Oc=false){$J=array();foreach(get_rows($Oc?"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$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($D!=""){$K["Name"]=$D;return$K;}$J[$K["Name"]]=$K;}return$J;}function is_view($S){return$S["Engine"]===null;}function fk_support($S){return preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&min_version(5.6));}function fields($R){global$h;$Ee=($h->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$p=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$nd=$K["GENERATION_EXPRESSION"];$Lc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Lc,$md);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$He);$m=$K["COLUMN_DEFAULT"];if($m!=""){$fe=preg_match('~text|json~',$He[1]);if(!$Ee&&$fe)$m=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($m));if($Ee||$fe){$m=($m=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($C){return stripslashes(str_replace("''","'",$C[1]));},$m));}if(!$Ee&&preg_match('~binary~',$He[1])&&preg_match('~^0x(\w*)$~',$m,$C))$m=pack("H*",$C[1]);}$J[$p]=array("field"=>$p,"full_type"=>$U,"type"=>$He[1],"length"=>$He[2],"unsigned"=>ltrim($He[3].$He[4]),"default"=>($md?($Ee?$nd:stripslashes($nd)):$m),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Lc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Lc,$C)?$C[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($md[1]=="PERSISTENT"?"STORED":$md[1]),);}return$J;}function indexes($R,$i=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$i)as$K){$D=$K["Key_name"];$J[$D]["type"]=($D=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$D]["columns"][]=$K["Column_name"];$J[$D]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$D]["descs"][]=null;}return$J;}function foreign_keys($R){global$n;static$hg='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Ab=get_val("SHOW CREATE TABLE ".table($R),1);if($Ab){preg_match_all("~CONSTRAINT ($hg) FOREIGN KEY ?\\(((?:$hg,? ?)+)\\) REFERENCES ($hg)(?:\\.($hg))? \\(((?:$hg,? ?)+)\\)(?: ON DELETE ($n->onActions))?(?: ON UPDATE ($n->onActions))?~",$Ab,$Ie,PREG_SET_ORDER);foreach($Ie as$C){preg_match_all("~$hg~",$C[2],$Eh);preg_match_all("~$hg~",$C[5],$ii);$J[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('Adminer\idf_unescape',$Eh[0]),"target"=>array_map('Adminer\idf_unescape',$ii[0]),"on_delete"=>($C[6]?:"RESTRICT"),"on_update"=>($C[7]?:"RESTRICT"),);}}return$J;}function view($D){return array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($D),1)));}function collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J as$_=>$X)asort($J[$_]);return$J;}function information_schema($l){return($l=="information_schema")||(min_version(5.5)&&$l=="performance_schema");}function error(){global$h;return h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$h->error));}function create_database($l,$hb){return queries("CREATE DATABASE ".idf_escape($l).($hb?" COLLATE ".q($hb):""));}function drop_databases($k){$J=apply_queries("DROP DATABASE",$k,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function rename_database($D,$hb){$J=false;if(create_database($D,$hb)){$T=array();$lj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$lj[]=$R;else$T[]=$R;}$J=(!$T&&!$lj)||move_tables($T,$lj,$D);drop_databases($J?array(DB):array());}return$J;}function auto_increment(){$Ba=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$y){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$y["columns"],true)){$Ba="";break;}if($y["type"]=="PRIMARY")$Ba=" UNIQUE";}}return" AUTO_INCREMENT$Ba";}function alter_table($R,$D,$q,$dd,$nb,$sc,$hb,$Aa,$dg){global$h;$c=array();foreach($q as$p){if($p[1]){$m=$p[1][3];if(preg_match('~ GENERATED~',$m)){$p[1][3]=($h->flavor=='maria'?"":$p[1][2]);$p[1][2]=$m;}$c[]=($R!=""?($p[0]!=""?"CHANGE ".idf_escape($p[0]):"ADD"):" ")." ".implode($p[1]).($R!=""?$p[2]:"");}else$c[]="DROP ".idf_escape($p[0]);}$c=array_merge($c,$dd);$P=($nb!==null?" COMMENT=".q($nb):"").($sc?" ENGINE=".q($sc):"").($hb?" COLLATE ".q($hb):"").($Aa!=""?" AUTO_INCREMENT=$Aa":"");if($R=="")return queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$c)."\n)$P$dg");if($R!=$D)$c[]="RENAME TO ".table($D);if($P)$c[]=ltrim($P);return($c||$dg?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$c).$dg):true);}function alter_indexes($R,$c){foreach($c as$_=>$X)$c[$_]=($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(",",$c));}function truncate_tables($T){return apply_queries("TRUNCATE TABLE",$T);}function drop_views($lj){return queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$lj)));}function drop_tables($T){return queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function move_tables($T,$lj,$ii){global$h;$Sg=array();foreach($T as$R)$Sg[]=table($R)." TO ".idf_escape($ii).".".table($R);if(!$Sg||queries("RENAME TABLE ".implode(", ",$Sg))){$Rb=array();foreach($lj as$R)$Rb[table($R)]=view($R);$h->select_db($ii);$l=idf_escape(DB);foreach($Rb as$D=>$kj){if(!queries("CREATE VIEW $D AS ".str_replace(" $l."," ",$kj["select"]))||!queries("DROP VIEW $l.$D"))return false;}return true;}return false;}function copy_tables($T,$lj,$ii){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T as$R){$D=($ii==DB?table("copy_$R"):idf_escape($ii).".".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$K){$Gi=$K["Trigger"];if(!queries("CREATE TRIGGER ".($ii==DB?idf_escape("copy_$Gi"):idf_escape($ii).".".idf_escape($Gi))." $K[Timing] $K[Event] ON $D FOR EACH ROW\n$K[Statement];"))return false;}}foreach($lj as$R){$D=($ii==DB?table("copy_$R"):idf_escape($ii).".".table($R));$kj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $D"))||!queries("CREATE VIEW $D AS $kj[select]"))return false;}return true;}function trigger($D){if($D=="")return array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return reset($L);}function triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function trigger_options(){return array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function routine($D,$U){global$n;$ua=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Fh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$uc=$n->enumLength;$Li="((".implode("|",array_merge(array_keys($n->types()),$ua)).")\\b(?:\\s*\\(((?:[^'\")]|$uc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$hg="$Fh*(".($U=="FUNCTION"?"":$n->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Li";$j=get_val("SHOW CREATE $U ".idf_escape($D),2);preg_match("~\\(((?:$hg\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$Li\\s+":"")."(.*)~is",$j,$C);$q=array();preg_match_all("~$hg\\s*,?~is",$C[1],$Ie,PREG_SET_ORDER);foreach($Ie as$Xf)$q[]=array("field"=>str_replace("``","`",$Xf[2]).$Xf[3],"type"=>strtolower($Xf[5]),"length"=>preg_replace_callback("~$uc~s",'Adminer\normalize_enum',$Xf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Xf[8] $Xf[7]"))),"null"=>1,"full_type"=>$Xf[4],"inout"=>strtoupper($Xf[1]),"collation"=>strtolower($Xf[9]),);return array("fields"=>$q,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($D)),)+($U!="FUNCTION"?array("definition"=>$C[11]):array("returns"=>array("type"=>$C[12],"length"=>$C[13],"unsigned"=>$C[15],"collation"=>$C[16]),"definition"=>$C[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,$K){return idf_escape($D);}function last_id($I){return get_val("SELECT LAST_INSERT_ID()");}function explain($h,$H){return$h->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function create_sql($R,$Aa,$Sh){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$Aa)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function truncate_sql($R){return"TRUNCATE ".table($R);}function use_sql($Kb){return"USE ".idf_escape($Kb);}function trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}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($p){if(preg_match("~binary~",$p["type"]))return"HEX(".idf_escape($p["field"]).")";if($p["type"]=="bit")return"BIN(".idf_escape($p["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$p["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($p["field"]).")";}function unconvert_field($p,$J){if(preg_match("~binary~",$p["type"]))$J="UNHEX($J)";if($p["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$p["type"])){$tg=(min_version(8)?"ST_":"");$J=$tg."GeomFromText($J, $tg"."SRID($p[field]))";}return$J;}function support($Pc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning")).(min_version('8.0.16','10.2.1')?"":"|check")."~",$Pc);}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");}}define('Adminer\JUSH',Driver::$ie);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($si,$o="",$Na=array(),$ti=""){global$ca,$ia,$b,$bc;page_headers();if(is_ajax()&&$o){page_messages($o);exit;}if(!ob_get_level())ob_start(null,4096);$ui=$si.($ti!=""?": $ti":"");$vi=strip_tags($ui.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo' ',$vi,' ';$Eb=$b->css();$zd=false;$xd=false;foreach($Eb as$r){if(strpos($r,"adminer.css")!==false)$zd=true;if(strpos($r,"adminer-dark.css")!==false)$xd=true;}$Hb=($zd?($xd?null:false):($xd?:null));$Qe=" media='(prefers-color-scheme: dark)'";if($Hb!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.1.0");if($b->head($Hb))echo"\n","\n";foreach($Eb as$X)echo"\n";echo"\n\n";$r=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($r)&&filemtime($r)+86400>time()){$jj=unserialize(file_get_contents($r));$Cg="-----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($jj["version"],base64_decode($jj["signature"]),$Cg)==1)$_COOKIE["adminer_version"]=$jj["version"];}echo script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '$ia', '".js_escape(ME)."', '".get_token()."')")."}); document.body.classList.replace('nojs', 'js'); const offlineMessage = '".js_escape(lang(82))."'; const thousandsSeparator = '".js_escape(lang(4))."';"),"\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"
    \n";if($Na!==null){$B=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $ui

    \n","\n";restart_session();page_messages($o);$k=&get_session("dbs");if(DB!=""&&$k&&!in_array(DB,$k,true))$k=null;stop_session();define('Adminer\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){$Bd=array();foreach($Db as$_=>$X)$Bd[]="$_ $X";header("Content-Security-Policy: ".implode("; ",$Bd));}$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$kf;if(!$kf)$kf=base64_encode(rand_string());return$kf;}function page_messages($o){global$b;$Wi=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$We=$_SESSION["messages"][$Wi];if($We){echo"
    ".implode("
    \n
    ",$We)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Wi]);}if($o)echo"
    $o
    \n";if($b->error)echo"
    $b->error
    \n";}function page_footer($Ye=""){global$b;echo"
    \n\n\n\n";if($Ye!="auth")echo'

    ',h($_GET["username"])."\n",' ',input_token(),'

    ';echo script("setupSubmitHighlight(document);");}function int32($cf){while($cf>=2147483648)$cf-=4294967296;while($cf<=-2147483649)$cf+=4294967296;return(int)$cf;}function long2str($W,$nj){$eh='';foreach($W as$X)$eh.=pack('V',$X);if($nj)return substr($eh,0,end($W));return$eh;}function str2long($eh,$nj){$W=array_values(unpack('V*',str_pad($eh,4*ceil(strlen($eh)/4),"\0")));if($nj)$W[]=strlen($eh);return$W;}function xxtea_mx($uj,$tj,$Vh,$je){return int32((($uj>>5&0x7FFFFFF)^$tj<<2)+(($tj>>3&0x1FFFFFFF)^$uj<<4))^int32(($Vh^$tj)+($je^$uj));}function encrypt_string($Qh,$_){if($Qh=="")return"";$_=array_values(unpack("V*",pack("H*",md5($_))));$W=str2long($Qh,true);$cf=count($W)-1;$uj=$W[$cf];$tj=$W[0];$Dg=floor(6+52/($cf+1));$Vh=0;while($Dg-->0){$Vh=int32($Vh+0x9E3779B9);$jc=$Vh>>2&3;for($Vf=0;$Vf<$cf;$Vf++){$tj=$W[$Vf+1];$bf=xxtea_mx($uj,$tj,$Vh,$_[$Vf&3^$jc]);$uj=int32($W[$Vf]+$bf);$W[$Vf]=$uj;}$tj=$W[0];$bf=xxtea_mx($uj,$tj,$Vh,$_[$Vf&3^$jc]);$uj=int32($W[$cf]+$bf);$W[$cf]=$uj;}return long2str($W,false);}function decrypt_string($Qh,$_){if($Qh=="")return"";if(!$_)return false;$_=array_values(unpack("V*",pack("H*",md5($_))));$W=str2long($Qh,false);$cf=count($W)-1;$uj=$W[$cf];$tj=$W[0];$Dg=floor(6+52/($cf+1));$Vh=int32($Dg*0x9E3779B9);while($Vh){$jc=$Vh>>2&3;for($Vf=$cf;$Vf>0;$Vf--){$uj=$W[$Vf-1];$bf=xxtea_mx($uj,$tj,$Vh,$_[$Vf&3^$jc]);$tj=int32($W[$Vf]-$bf);$W[$Vf]=$tj;}$uj=$W[$cf];$bf=xxtea_mx($uj,$tj,$Vh,$_[$Vf&3^$jc]);$tj=int32($W[0]-$bf);$W[0]=$tj;$Vh=int32($Vh-0x9E3779B9);}return long2str($W,true);}$h='';$Ad=$_SESSION["token"];if(!$Ad)$_SESSION["token"]=rand(1,1e6);$yi=get_token();$jg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($_)=explode(":",$X);$jg[$_]=$X;}}function add_invalid_login(){global$b;$Ga=get_temp_dir()."/adminer.invalid";foreach(glob("$Ga*")?:array($Ga)as$r){$t=file_open_lock($r);if($t)break;}if(!$t)$t=file_open_lock("$Ga-".rand_string());if(!$t)return;$be=unserialize(stream_get_contents($t));$pi=time();if($be){foreach($be as$ce=>$X){if($X[0]<$pi)unset($be[$ce]);}}$ae=&$be[$b->bruteForceKey()];if(!$ae)$ae=array($pi+30*60,0);$ae[1]++;file_write_unlock($t,serialize($be));}function check_invalid_login(){global$b;$be=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$r){$t=file_open_lock($r);if($t){$be=unserialize(stream_get_contents($t));file_unlock($t);break;}}$ae=($be?$be[$b->bruteForceKey()]:array());$jf=($ae[1]>29?$ae[0]-time():0);if($jf>0)auth_error(lang(84,ceil($jf/60)));}$_a=$_POST["auth"];if($_a){session_regenerate_id();$ij=$_a["driver"];$N=$_a["server"];$V=$_a["username"];$G=(string)$_a["password"];$l=$_a["db"];set_password($ij,$N,$V,$G);$_SESSION["db"][$ij][$N][$V][$l]=true;if($_a["permanent"]){$_=implode("-",array_map('base64_encode',array($ij,$N,$V,$l)));$yg=$b->permanentLogin(true);$jg[$_]="$_:".base64_encode($yg?encrypt_string($G,$yg):"");cookie("adminer_permanent",implode(" ",$jg));}if(count($_POST)==1||DRIVER!=$ij||SERVER!=$N||$_GET["username"]!==$V||DB!=$l)redirect(auth_url($ij,$N,$V,$l));}elseif($_POST["logout"]&&(!$Ad||verify_token())){foreach(array("pwds","db","dbs","queries")as$_)set_session($_,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(85).' '.lang(86));}elseif($jg&&!$_SESSION["pwds"]){session_regenerate_id();$yg=$b->permanentLogin();foreach($jg as$_=>$X){list(,$bb)=explode(":",$X);list($ij,$N,$V,$l)=array_map('base64_decode',explode("-",$_));set_password($ij,$N,$V,decrypt_string(base64_decode($bb),$yg));$_SESSION["db"][$ij][$N][$V][$l]=true;}}function unset_permanent(){global$jg;foreach($jg as$_=>$X){list($ij,$N,$V,$l)=array_map('base64_decode',explode("-",$_));if($ij==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$l==DB)unset($jg[$_]);}cookie("adminer_permanent",implode(" ",$jg));}function auth_error($o){global$b,$Ad;$wh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$wh]||$_GET[$wh])&&!$Ad)$o=lang(87);else{restart_session();add_invalid_login();$G=get_password();if($G!==null){if($G===false)$o.=($o?'
    ':'').lang(88,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$wh]&&$_GET[$wh]&&ini_bool("session.use_only_cookies"))$o=lang(89);$Yf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Yf["lifetime"]);page_header(lang(37),$o,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

    ".lang(90)."\n";echo"

    \n";$b->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header(lang(91),lang(92,implode(", ",Driver::$rg)),false);page_footer("auth");exit;}stop_session(true);if(isset($_GET["username"])&&is_string(get_password())){list($Gd,$ng)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$ng,$C)&&($C[1]<1024||$C[1]>65535))auth_error(lang(93));check_invalid_login();$h=connect($b->credentials());if(is_object($h)){$n=new Driver($h);if($b->operators===null)$b->operators=$n->operators;if(Driver::$ie=='sql'||$h->flavor=='cockroach')save_settings(array("vendor-".DRIVER."-".SERVER=>$bc[DRIVER]));}}$Ce=null;if(!is_object($h)||($Ce=$b->login($_GET["username"],get_password()))!==true){$o=(is_string($h)?nl_br(h($h)):(is_string($Ce)?$Ce:lang(94)));auth_error($o.(preg_match('~^ | $~',get_password())?'
    '.lang(95):''));}if($_POST["logout"]&&$Ad&&!verify_token()){page_header(lang(83),lang(96));page_footer("db");exit;}if($_a&&$_POST["token"])$_POST["token"]=$yi;$o='';if($_POST){if(!verify_token()){$Vd="max_input_vars";$Oe=ini_get($Vd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$_){$X=ini_get($_);if($X&&(!$Oe||$X<$Oe)){$Vd=$_;$Oe=$X;}}}$o=(!$_POST["token"]&&$Oe?lang(97,"'$Vd'"):lang(96).' '.lang(98));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$o=lang(99,"'post_max_size'");if(isset($_GET["sql"]))$o.=' '.lang(100);}function select($I,$i=null,$Kf=array(),$A=0){$Ae=array();$z=array();$f=array();$La=array();$Mi=array();$J=array();for($v=0;(!$A||$v<$A)&&($K=$I->fetch_row());$v++){if(!$v){echo"
    \n","\n","";for($he=0;$hefetch_field();$D=$p->name;$Jf=(isset($p->orgtable)?$p->orgtable:"");$If=(isset($p->orgname)?$p->orgname:$D);if($Kf&&JUSH=="sql")$Ae[$he]=($D=="table"?"table=":($D=="possible_keys"?"indexes=":null));elseif($Jf!=""){if(isset($p->table))$J[$p->table]=$Jf;if(!isset($z[$Jf])){$z[$Jf]=array();foreach(indexes($Jf,$i)as$y){if($y["type"]=="PRIMARY"){$z[$Jf]=array_flip($y["columns"]);break;}}$f[$Jf]=$z[$Jf];}if(isset($f[$Jf][$If])){unset($f[$Jf][$If]);$z[$Jf][$If]=$he;$Ae[$he]=$Jf;}}if($p->charsetnr==63)$La[$he]=true;$Mi[$he]=$p->type;echo"name!=$If?" title='".h(($Jf!=""?"$Jf.":"").$If)."'":"").">".h($D).($Kf?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($D),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"\n";}echo"";foreach($K as$_=>$X){$B="";if(isset($Ae[$_])&&!$f[$Ae[$_]]){if($Kf&&JUSH=="sql"){$R=$K[array_search("table=",$Ae)];$B=ME.$Ae[$_].urlencode($Kf[$R]!=""?$Kf[$R]:$R);}else{$B=ME."edit=".urlencode($Ae[$_]);foreach($z[$Ae[$_]]as$fb=>$he)$B.="&where".urlencode("[".bracket_escape($fb)."]")."=".urlencode($K[$he]);}}elseif(is_url($X))$B=$X;if($X===null)$X="NULL";elseif($La[$_]&&!is_utf8($X))$X="".lang(46,strlen($X))."";else{$X=h($X);if($Mi[$_]==254)$X="$X";}if($B)$X="$X";echo"$X";}}echo($v?"
    \n
    ":"

    ".lang(12))."\n";return$J;}function referencable_primary($oh){$J=array();foreach(table_status('',true)as$ai=>$R){if($ai!=$oh&&fk_support($R)){foreach(fields($ai)as$p){if($p["primary"]){if($J[$ai]){unset($J[$ai]);break;}$J[$ai]=$p;}}}}return$J;}function textarea($D,$Y,$L=10,$jb=80){echo"";}function select_input($za,$Ef,$Y="",$zf="",$kg=""){$hi=($Ef?"select":"input");return"<$hi$za".($Ef?">

    ".lang(120,$bc[DRIVER],"".h($h->server_info)."","$h->extension")."\n","

    ".lang(121,"".h(logged_user())."")."\n";if(isset($b->plugins)&&is_array($b->plugins)){echo"

    ".lang(122).":\n

    \n";}$k=$b->databases();if($k){$ih=support("scheme");$ib=collations();echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"".(support("database")?"\n";$k=($_GET["dbsize"]?count_tables($k):array_flip($k));foreach($k as$l=>$T){$Zg=h(ME)."db=".urlencode($l);$w=h("Db-".$l);echo"".(support("database")?"
    ":"")."".lang(36).(get_session("dbs")!==null?" - ".lang(123)."":"")."".lang(124)."".lang(125)."".lang(126)." - ".lang(127)."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
    ".checkbox("db[]",$l,in_array($l,(array)$_POST["db"]),"","","",$w):""),"".h($l)."";$hb=h(db_collation($l,$ib));echo"".(support("database")?"$hb":$hb),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($l):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(75).": ".h($_GET["ns"]),lang(130),true);page_footer("ns");exit;}}}class TmpFile{private$handler,$size;function __construct(){$this->handler=tmpfile();}function write($xb){$this->size+=strlen($xb);fwrite($this->handler,$xb);}function send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$q=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=$n->select($a,$M,array(where($_GET,$q)),$M);$K=($I?$I->fetch_row():array());echo$n->value($K[0],$q[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$q=fields($a);if(!$q)$o=error();$S=table_status1($a);$D=$b->tableName($S);page_header(($q&&is_view($S)?$S['Engine']=='materialized view'?lang(131):lang(132):lang(133)).": ".($D!=""?$D:h($a)),$o);$Yg=array();foreach($q as$_=>$p)$Yg+=$p["privileges"];$b->selectLinks($S,(isset($Yg["insert"])||!support("table")?"":null));$nb=$S["Comment"];if($nb!="")echo"

    ".lang(49).": ".h($nb)."\n";if($q)$b->tableStructurePrint($q,$S);if(support("indexes")&&$n->supportsIndex($S)){echo"

    ".lang(134)."

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

    ".lang(101)."

    \n";$fd=foreign_keys($a);if($fd){echo"\n","\n";foreach($fd as$D=>$s){echo"","
    ".lang(136)."".lang(137)."".lang(104)."".lang(103)."
    ".implode(", ",array_map('Adminer\h',$s["source"]))."";$B=($s["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($s["db"]),ME):($s["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($s["ns"]),ME):ME));echo"".($s["db"]!=""&&$s["db"]!=DB?"".h($s["db"]).".":"").($s["ns"]!=""&&$s["ns"]!=$_GET["ns"]?"".h($s["ns"]).".":"").h($s["table"])."","(".implode(", ",array_map('Adminer\h',$s["target"])).")","".h($s["on_delete"]),"".h($s["on_update"]),''.lang(138).'',"\n";}echo"
    \n";}echo'

    ".lang(140)."

    \n";$Wa=$n->checkConstraints($a);if($Wa){echo"\n";foreach($Wa as$_=>$X)echo"","
    ".h($X),"".lang(138)."","\n";echo"
    \n";}echo'

    ".lang(142)."

    \n";$Ji=triggers($a);if($Ji){echo"\n";foreach($Ji as$_=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($_)."".lang(138)."\n";echo"
    \n";}echo'
    qs(\'#schema\').onselectstart = () => false; const tablePos = {',implode(",",$di)."\n",'}; const em = qs(\'#schema\').offsetHeight / ',$zi,'; document.onmousemove = schemaMousemove; document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); ';foreach($gh as$D=>$R){echo"
    ",''.h($D)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$p){$X=''.h($p["field"]).'';echo"
    ".($p["primary"]?"$X":$X);}foreach((array)$R["references"]as$ji=>$Pg){foreach($Pg as$ue=>$Kg){$ve=$ue-$ci[$D][1];$v=0;foreach($Kg[0]as$Eh)echo"\n
    "."
    ";}}foreach((array)$Ng[$D]as$ji=>$Pg){foreach($Pg as$ue=>$f){$ve=$ue-$ci[$D][1];$v=0;foreach($f as$ii)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($gh as$D=>$R){foreach((array)$R["references"]as$ji=>$Pg){foreach($Pg as$ue=>$Kg){$Xe=$zi;$Me=-10;foreach($Kg[0]as$_=>$Eh){$pg=$R["pos"][0]+$R["fields"][$Eh]["pos"];$qg=$gh[$ji]["pos"][0]+$gh[$ji]["fields"][$Kg[1][$_]]["pos"];$Xe=min($Xe,$pg,$qg);$Me=max($Me,$pg,$qg);}echo"
    \n";}}}echo'
    ';$Mb=array('','USE','DROP+CREATE','CREATE');$ei=array('','DROP+CREATE','CREATE');$Jb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Jb[]='INSERT+UPDATE';$K=get_settings("adminer_export");if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"
    ".lang(145)."".html_radios("output",$b->dumpOutput(),$K["output"])."\n","
    ".lang(146)."".html_radios("format",$b->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(36)."".html_select('db_style',$Mb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],lang(31)):"").(support("routine")?checkbox("routines",1,$K["routines"],lang(147)):"").(support("event")?checkbox("events",1,$K["events"],lang(148)):"")),"
    ".lang(125)."".html_select('table_style',$ei,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],lang(50)).(support("trigger")?checkbox("triggers",1,$K["triggers"],lang(142)):""),"
    ".lang(149)."".html_select('data_style',$Jb,$K["data_style"]),'

    ',input_token(),' ',script("qsl('table').onclick = dumpClick;");$ug=array();if(DB!=""){$Ya=($a!=""?"":" checked");echo"","\n";$lj="";$fi=tables_list();foreach($fi as$D=>$U){$tg=preg_replace('~_.*~','',$D);$Ya=($a==""||$a==(substr($a,-1)=="%"?"$tg%":$D));$xg="\n";$k=$b->databases();if($k){foreach($k as$l){if(!information_schema($l)){$tg=preg_replace('~_.*~','',$l);echo"
    ".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"
    ".checkbox("tables[]",$D,$Ya,$D,"","block");if($U!==null&&!preg_match('~table~i',$U))$lj.="$xg\n";else echo"$xg\n";$ug[$tg]++;}echo$lj;if($fi)echo script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"
    ","",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"
    ".checkbox("databases[]",$l,$a==""||$a=="$tg%",$l,"","block")."\n";$ug[$tg]++;}}}else echo"
    ";}echo'

    ';$Vc=true;foreach($ug as$_=>$X){if($_!=""&&$X>1){echo($Vc?"

    ":" ")."".h($_)."";$Vc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(70));echo'

    \n";hidden_fields_get();echo input_hidden("db",DB),($od?"":input_hidden("grant")),"\n","\n";while($K=$I->fetch_assoc())echo'
    ".lang(34)."".lang(33)."
    '.h($K["User"])."".h($K["Host"]).''.lang(10)."\n";if(!$od||DB!="")echo"
    \n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$o&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);$b->dumpFooter();exit;}restart_session();$Fd=&get_session("queries");$Ed=&$Fd[DB];if(!$o&&$_POST["clear"]){$Ed=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(71):lang(63)),$o);if(!$o&&$_POST){$t=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$Jh=$b->importServerPath();$t=@fopen((file_exists($Jh)?$Jh:"compress.zlib://$Jh.gz"),"rb");$H=($t?fread($t,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($Re=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Re,2*strlen($H)+memory_get_usage()+8e6));if($H!=""&&strlen($H)<1e6){$Dg=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Ed||first(end($Ed))!=$Dg){restart_session();$Ed[]=array($Dg,time());set_session("queries",$Fd);stop_session();}}$Fh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Sb=";";$E=0;$rc=true;$i=connect($b->credentials());if(is_object($i)&&DB!=""){$i->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$i);}$mb=0;$zc=array();$Zf='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|-- |$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$_i=microtime(true);$pa=get_settings("adminer_import");$ic=$b->dumpFormat();unset($ic["sql"]);while($H!=""){if(!$E&&preg_match("~^$Fh*+DELIMITER\\s+(\\S+)~i",$H,$C)){$Sb=$C[1];$H=substr($H,strlen($C[0]));}else{preg_match('('.preg_quote($Sb)."\\s*|$Zf)",$H,$C,PREG_OFFSET_CAPTURE,$E);list($hd,$og)=$C[0];if(!$hd&&$t&&!feof($t))$H.=fread($t,1e5);else{if(!$hd&&rtrim($H)=="")break;$E=$og+strlen($hd);if($hd&&rtrim($hd)!=$Sb){$Ra=$n->hasCStyleEscapes()||(JUSH=="pgsql"&&($og>0&&strtolower($H[$og-1])=="e"));$hg=($hd=='/*'?'\*/':($hd=='['?']':(preg_match('~^-- |^#~',$hd)?"\n":preg_quote($hd).($Ra?"|\\\\.":""))));while(preg_match("($hg|\$)s",$H,$C,PREG_OFFSET_CAPTURE,$E)){$eh=$C[0][0];if(!$eh&&$t&&!feof($t))$H.=fread($t,1e5);else{$E=$C[0][1]+strlen($eh);if(!$eh||$eh[0]!="\\")break;}}}else{$rc=false;$Dg=substr($H,0,$og);$mb++;$xg="
    ".$b->sqlCommandQuery($Dg)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$Fh*+ATTACH\\b~i",$Dg,$C)){echo$xg,"

    ".lang(151)."\n";$zc[]=" $mb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$xg;ob_flush();flush();}$Oh=microtime(true);if($h->multi_query($Dg)&&is_object($i)&&preg_match("~^$Fh*+USE\\b~i",$Dg))$i->query($Dg);do{$I=$h->store_result();if($h->error){echo($_POST["only_errors"]?$xg:""),"

    ".lang(152).($h->errno?" ($h->errno)":"").": ".error()."\n";$zc[]=" $mb";if($_POST["error_stops"])break 2;}else{$pi=" (".format_time($Oh).")".(strlen($Dg)<1000?" ".lang(10)."":"");$ra=$h->affected_rows;$oj=($_POST["only_errors"]?"":$n->warnings());$pj="warnings-$mb";if($oj)$pi.=", ".lang(45)."".script("qsl('a').onclick = partial(toggle, '$pj');","");$Gc=null;$Hc="explain-$mb";if(is_object($I)){$A=$_POST["limit"];$Kf=select($I,$i,array(),$A);if(!$_POST["only_errors"]){echo"

    \n";$mf=$I->num_rows;echo"
    \n";}}else{if(preg_match("~^$Fh*+(CREATE|DROP|ALTER)$Fh++(DATABASE|SCHEMA)\\b~i",$Dg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"

    ".lang(155,$ra)."$pi\n";}echo($oj?"

    \n":"");if($Gc){echo"\n";}}$Oh=microtime(true);}while($h->next_result());}$H=substr($H,$E);$E=0;}}}}if($rc)echo"

    ".lang(156)."\n";elseif($_POST["only_errors"])echo"

    ".lang(157,$mb-count($zc))," (".format_time($_i).")\n";elseif($zc&&$mb>1)echo"

    ".lang(152).": ".implode("",$zc)."\n";}else echo"

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

    ';$Ec="";if(!isset($_GET["import"])){$Dg=$_GET["sql"];if($_POST)$Dg=$_POST["query"];elseif($_GET["history"]=="all")$Dg=$Ed;elseif($_GET["history"]!="")$Dg=$Ed[$_GET["history"]][0];echo"

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

    ";$b->sqlPrintAfter();echo"$Ec\n",lang(159).": \n";}else{echo"

    ".lang(160)."
    ";$ud=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$ud (< ".ini_get("upload_max_filesize")."B): \n$Ec":lang(161)),"
    \n";$Md=$b->importServerPath();if($Md)echo"
    ".lang(162)."
    ",lang(163,"".h($Md)."$ud"),' ',"
    \n";echo"

    ";}echo checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(165))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(166))."\n",input_token();if(!isset($_GET["import"])&&$Ed){print_fieldset("history",lang(167),$_GET["history"]!="");for($X=end($Ed);$X;$X=prev($Ed)){$_=key($Ed);list($Dg,$pi,$mc)=$X;echo''.lang(10).""." ".@date("H:i:s",$pi).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$Dg)))),80,"").($mc?" ($mc)":"")."
    \n";}echo"\n","".lang(169)."\n","\n";}echo'

    ';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$q=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$q):""):where($_GET,$q));$Vi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($q as$D=>$p){if(!isset($p["privileges"][$Vi?"update":"insert"])||$b->fieldName($p)==""||$p["generated"])unset($q[$D]);}if($_POST&&!$o&&!isset($_GET["select"])){$Be=$_POST["referer"];if($_POST["insert"])$Be=($Vi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$Be))$Be=ME."select=".urlencode($a);$z=indexes($a);$Qi=unique_array($_GET["where"],$z);$Gg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($Be,lang(170),$n->delete($a,$Gg,!$Qi));else{$O=array();foreach($q as$D=>$p){$X=process_input($p);if($X!==false&&$X!==null)$O[idf_escape($D)]=$X;}if($Vi){if(!$O)redirect($Be);queries_redirect($Be,lang(171),$n->update($a,$O,$Gg,!$Qi));if(is_ajax()){page_headers();page_messages($o);exit;}}else{$I=$n->insert($a,$O);$te=($I?last_id($I):0);queries_redirect($Be,lang(172,($te?" $te":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($q as$D=>$p){if(isset($p["privileges"]["select"])){$xa=($_POST["clone"]&&$p["auto_increment"]?"''":convert_field($p));$M[]=($xa?"$xa AS ":"").idf_escape($D);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=$n->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$o=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$q){if(!$Z){$I=$n->select($a,array("*"),$Z,array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array($n->primary=>"");}if($K){foreach($K as$_=>$X){if(!$Z)$K[$_]=null;$q[$_]=array("field"=>$_,"null"=>($_!=$n->primary),"auto_increment"=>($_==$n->primary));}}}edit_form($a,$q,$K,$Vi);}elseif(isset($_GET["create"])){$a=$_GET["create"];$bg=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$_)$bg[$_]=$_;$Mg=referencable_primary($a);$fd=array();foreach($Mg as$ai=>$p)$fd[str_replace("`","``",$ai)."`".str_replace("`","``",$p["field"])]=$ai;$Nf=array();$S=array();if($a!=""){$Nf=fields($a);$S=table_status($a);if(!$S)$o=lang(9);}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($K["fields"])&&!$o){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(173),drop_tables(array($a)));else{$q=array();$va=array();$Zi=false;$dd=array();$Mf=reset($Nf);$ta=" FIRST";foreach($K["fields"]as$_=>$p){$s=$fd[$p["type"]];$Ki=($s!==null?$Mg[$s]:$p);if($p["field"]!=""){if(!$p["generated"])$p["default"]=null;$Bg=process_field($p,$Ki);$va[]=array($p["orig"],$Bg,$ta);if(!$Mf||$Bg!==process_field($Mf,$Mf)){$q[]=array($p["orig"],$Bg,$ta);if($p["orig"]!=""||$ta)$Zi=true;}if($s!==null)$dd[idf_escape($p["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$fd[$p["type"]],'source'=>array($p["field"]),'target'=>array($Ki["field"]),'on_delete'=>$p["on_delete"],));$ta=" AFTER ".idf_escape($p["field"]);}elseif($p["orig"]!=""){$Zi=true;$q[]=array($p["orig"]);}if($p["orig"]!=""){$Mf=next($Nf);if(!$Mf)$ta="";}}$dg="";if(support("partitioning")){if(isset($bg[$K["partition_by"]])){$Yf=array();foreach($K as$_=>$X){if(preg_match('~^partition~',$_))$Yf[$_]=$X;}foreach($Yf["partition_names"]as$_=>$D){if($D==""){unset($Yf["partition_names"][$_]);unset($Yf["partition_values"][$_]);}}if($Yf!=get_partitions_info($a)){$eg=array();if($Yf["partition_by"]=='RANGE'||$Yf["partition_by"]=='LIST'){foreach($Yf["partition_names"]as$_=>$D){$Y=$Yf["partition_values"][$_];$eg[]="\n PARTITION ".idf_escape($D)." VALUES ".($Yf["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$dg.="\nPARTITION BY $Yf[partition_by]($Yf[partition])";if($eg)$dg.=" (".implode(",",$eg)."\n)";elseif($Yf["partitions"])$dg.=" PARTITIONS ".(+$Yf["partitions"]);}}elseif(preg_match("~partitioned~",$S["Create_options"]))$dg.="\nREMOVE PARTITIONING";}$Se=lang(174);if($a==""){cookie("adminer_engine",$K["Engine"]);$Se=lang(175);}$D=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($D),$Se,alter_table($a,$D,(JUSH=="sqlite"&&($Zi||$dd)?$va:$q),$dd,($K["Comment"]!=$S["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$S["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$S["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$dg));}}page_header(($a!=""?lang(43):lang(73)),$o,array("table"=>$a),h($a));if(!$_POST){$Mi=$n->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Mi["int"])?"int":(isset($Mi["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$K=$S;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($Nf as$p){$p["generated"]=$p["generated"]?:(isset($p["default"])?"DEFAULT":"");$K["fields"][]=$p;}if(support("partitioning")){$K+=get_partitions_info($a);$K["partition_names"][]="";$K["partition_values"][]="";}}}$ib=collations();$tc=$n->engines();foreach($tc as$sc){if(!strcasecmp($sc,$K["Engine"])){$K["Engine"]=$sc;break;}}echo'

    ';if(support("columns")||$a==""){echo lang(176).": \n",($tc?html_select("Engine",array(""=>"(".lang(177).")")+$tc,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($ib)echo"".optionlist($ib)."",(preg_match("~sqlite|mssql~",JUSH)?"":"");echo"\n";}if(support("columns")){echo"

    \n","\n";edit_fields($K["fields"],$ib,"TABLE",$fd);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(50).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(178),"columnShow(this.checked, 5)","jsonly");$pb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$pb,lang(49),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"":''):''),'

    ';}echo' ';if($a!="")echo'',confirm(lang(179,$a));if(support("partitioning")){$cg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",lang(180),$K["partition_by"]);echo"

    ".html_select("partition_by",array(""=>"")+$bg,$K["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"()\n",lang(181).": \n","\n","\n";foreach($K["partition_names"]as$_=>$X)echo'','\n\n";}echo input_token(),'

    ';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Rd=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"]))$Rd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Rd[]="SPATIAL";$z=indexes($a);$vg=array();if(JUSH=="mongo"){$vg=$z["_id_"];unset($Rd[0]);unset($z["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$o&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($K["indexes"]as$y){$D=$y["name"];if(in_array($y["type"],$Rd)){$f=array();$ze=array();$Ub=array();$O=array();ksort($y["columns"]);foreach($y["columns"]as$_=>$e){if($e!=""){$ye=$y["lengths"][$_];$Tb=$y["descs"][$_];$O[]=idf_escape($e).($ye?"(".(+$ye).")":"").($Tb?" DESC":"");$f[]=$e;$ze[]=($ye?:null);$Ub[]=$Tb;}}$Fc=$z[$D];if($Fc){ksort($Fc["columns"]);ksort($Fc["lengths"]);ksort($Fc["descs"]);if($y["type"]==$Fc["type"]&&array_values($Fc["columns"])===$f&&(!$Fc["lengths"]||array_values($Fc["lengths"])===$ze)&&array_values($Fc["descs"])===$Ub){unset($z[$D]);continue;}}if($f)$c[]=array($y["type"],$D,$O);}}foreach($z as$D=>$Fc)$c[]=array($Fc["type"],$D,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(184),alter_indexes($a,$c));}page_header(lang(134),$o,array("table"=>$a),h($a));$q=array_keys(fields($a));if($_POST["add"]){foreach($K["indexes"]as$_=>$y){if($y["columns"][count($y["columns"])]!="")$K["indexes"][$_]["columns"][]="";}$y=end($K["indexes"]);if($y["type"]||array_filter($y["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($z as$_=>$y){$z[$_]["name"]=$_;$z[$_]["columns"][]="";}$z[]=array("columns"=>array(1=>""));$K["indexes"]=$z;}$ze=(JUSH=="sql"||JUSH=="mssql");$zh=($_POST?$_POST["options"]:get_setting("index_options"));echo'
    ';if($vg){echo"
    ',lang(185),'',lang(47).($ze?" (".lang(186).")":"");if($ze||support("descidx"))echo checkbox("options",1,$zh,lang(108),"indexOptionsShow(this.checked)","jsonly")."\n";echo'',lang(187),'
    PRIMARY";foreach($vg["columns"]as$_=>$e)echo select_input(" disabled",$q,$e)," ";echo"\n";}$he=1;foreach($K["indexes"]as$y){if(!$_POST["drop_col"]||$he!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$he][type]",array(-1=>"")+$Rd,$y["type"],($he==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type"),"";ksort($y["columns"]);$v=1;foreach($y["columns"]as$_=>$e){echo"".select_input(" name='indexes[$he][columns][$v]' title='".lang(47)."'",($q?array_combine($q,$q):$q),$e,"partial(".($v==count($y["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"",($ze?"":""),(support("descidx")?checkbox("indexes[$he][descs][$v]",1,$y["descs"][$_],lang(58)):"")," ";$v++;}echo"\n","".script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$he++;}echo'

    ',input_token(),'

    ';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$o&&!isset($_POST["add_x"])){$D=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(188),drop_databases(array(DB)));}elseif(DB!==$D){if(DB!=""){$_GET["db"]=$D;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($D),lang(189),rename_database($D,$K["collation"]));}else{$k=explode("\n",str_replace("\r","",$D));$Th=true;$se="";foreach($k as$l){if(count($k)==1||$l!=""){if(!create_database($l,$K["collation"]))$Th=false;$se=$l;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($se),lang(190),$Th);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($D).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),lang(191));}}page_header(DB!=""?lang(66):lang(116),$o,array(),h(DB));$ib=collations();$D=DB;if($_POST)$D=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$ib);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$od){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$od,$C)&&$C[1]){$D=stripcslashes(idf_unescape("`$C[2]`"));break;}}}echo'

    ',($_POST["add_x"]||strpos($D,"\n")?'
    ':'')."\n".($ib?html_select("collation",array(""=>"(".lang(102).")")+$ib,$K["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):""),' ';if(DB!="")echo"".confirm(lang(179,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"\n";echo input_token(),'

    ';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$o){$B=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$B,lang(192));else{$D=trim($K["name"]);$B.=urlencode($D);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($D),$B,lang(193));elseif($_GET["ns"]!=$D)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($D),$B,lang(194));else redirect($B);}}page_header($_GET["ns"]!=""?lang(67):lang(68),$o);if(!$K)$K["name"]=$_GET["ns"];echo'

    ';if($_GET["ns"]!="")echo"".confirm(lang(179,$_GET["ns"]))."\n";echo input_token(),'

    ';}elseif(isset($_GET["call"])){$da=($_GET["name"]?:$_GET["call"]);page_header(lang(195).": ".h($da),$o);$ah=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Nd=array();$Sf=array();foreach($ah["fields"]as$v=>$p){if(substr($p["inout"],-3)=="OUT")$Sf[$v]="@".idf_escape($p["field"])." AS ".idf_escape($p["field"]);if(!$p["inout"]||substr($p["inout"],0,2)=="IN")$Nd[]=$v;}if(!$o&&$_POST){$Sa=array();foreach($ah["fields"]as$_=>$p){if(in_array($_,$Nd)){$X=process_input($p);if($X===false)$X="''";if(isset($Sf[$_]))$h->query("SET @".idf_escape($p["field"])." = $X");}$Sa[]=(isset($Sf[$_])?"@".idf_escape($p["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($da)."(".implode(", ",$Sa).")";$Oh=microtime(true);$I=$h->multi_query($H);$ra=$h->affected_rows;echo$b->selectQuery($H,$Oh,!$I);if(!$I)echo"

    ".error()."\n";else{$i=connect($b->credentials());if(is_object($i))$i->select_db(DB);do{$I=$h->store_result();if(is_object($I))select($I,$i);else echo"

    ".lang(196,$ra)." ".@date("H:i:s")."\n";}while($h->next_result());if($Sf)select($h->query("SELECT ".implode(", ",$Sf)));}}echo'

    ';if($Nd){echo"\n";foreach($Nd as$_){$p=$ah["fields"][$_];$D=$p["field"];echo"
    ".$b->fieldName($p);$Y=$_POST["fields"][$D];if($Y!=""){if($p["type"]=="set")$Y=implode(",",$Y);}input($p,$Y,(string)$_POST["function"][$D]);echo"\n";}echo"
    \n";}echo'

    ',input_token(),'

    ';function
    pre_tr($eh){return
    preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($eh))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
    preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($C){$Wc=pre_tr($C[2]);return"\n".($C[1]?"$Wc\n":$Wc).pre_tr($C[4])."\n
    ";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3",preg_replace('~(.+)\n---+\n~',"\\1\n",h($ah['comment']))));echo'
    ';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$D=$_GET["name"];$K=$_POST;if($_POST&&!$o&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$ii=array();foreach($K["source"]as$_=>$X)$ii[$_]=$K["target"][$_];$K["target"]=$ii;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $D"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$c="ALTER TABLE ".table($a);$I=($D==""||queries("$c DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($D)));if(!$K["drop"])$I=queries("$c ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(197):($D!=""?lang(198):lang(199))),$I);if(!$K["drop"])$o="$o
    ".lang(200);}page_header(lang(201),$o,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($D!=""){$fd=foreign_keys($a);$K=$fd[$D];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
    ';$Eh=array_keys(fields($a));if($K["db"]!="")$h->select_db($K["db"]);if($K["ns"]!=""){$Of=get_schema();set_schema($K["ns"]);}$Lg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$ii=array_keys(fields(in_array($K["table"],$Lg)?$K["table"]:reset($Lg)));$zf="this.form['change-js'].value = '1'; this.form.submit();";echo"

    ".lang(202).": ".html_select("table",$Lg,$K["table"],$zf)."\n";if(support("scheme")){$hh=array_filter($b->schemas(),function($gh){return!preg_match('~^information_schema$~i',$gh);});echo lang(75).": ".html_select("ns",$hh,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$zf);if($K["ns"]!="")set_schema($Of);}elseif(JUSH!="sqlite"){$Nb=array();foreach($b->databases()as$l){if(!information_schema($l))$Nb[]=$l;}echo lang(74).": ".html_select("db",$Nb,$K["db"]!=""?$K["db"]:$_GET["db"],$zf);}echo input_hidden("change-js"),'

    ';$he=0;foreach($K["source"]as$_=>$X){echo"","
    ',lang(136),'',lang(137),'
    ".html_select("source[".(+$_)."]",array(-1=>"")+$Eh,$X,($he==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"".html_select("target[".(+$_)."]",$ii,$K["target"][$_],"","label-target");$he++;}echo'

    ',lang(104),': ',html_select("on_delete",array(-1=>"")+explode("|",$n->onActions),$K["on_delete"]),' ',lang(103),': ',html_select("on_update",array(-1=>"")+explode("|",$n->onActions),$K["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'

    ';if($D!="")echo'',confirm(lang(179,$D));echo input_token(),'

    ';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$Pf="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status($a);$Pf=strtoupper($P["Engine"]);}if($_POST&&!$o){$D=trim($K["name"]);$xa=" AS\n$K[select]";$Be=ME."table=".urlencode($D);$Se=lang(205);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$D&&JUSH!="sqlite"&&$U=="VIEW"&&$Pf=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($D).$xa,$Be,$Se);else{$ki=$D."_adminer_".uniqid();drop_create("DROP $Pf ".table($a),"CREATE $U ".table($D).$xa,"DROP $U ".table($D),"CREATE $U ".table($ki).$xa,"DROP $U ".table($ki),($_POST["drop"]?substr(ME,0,-1):$Be),lang(206),$Se,lang(207),$a,$D);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($Pf!="VIEW");if(!$o)$o=error();}page_header(($a!=""?lang(42):lang(208)),$o,array("table"=>$a),h($a));echo'

    ',lang(187),': ',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],lang(131)):""),'

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

    ';if($a!="")echo'',confirm(lang(179,$a));echo input_token(),'

    ';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$Zd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Ph=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$o){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(209));elseif(in_array($K["INTERVAL_FIELD"],$Zd)&&isset($Ph[$K["STATUS"]])){$fh="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".q($K["ENDS"]):""):"AT ".q($K["STARTS"]))." ON COMPLETION".($K["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(210):lang(211)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$fh.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$fh)."\n".$Ph[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(212).": ".h($aa):lang(213)),$o);if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
    ',lang(187),'
    ',lang(214),'
    ',lang(215),'
    ',lang(216),' ',html_select("INTERVAL_FIELD",$Zd,$K["INTERVAL_FIELD"]),'
    ',lang(119),'',html_select("STATUS",$Ph,$K["STATUS"]),'
    ',lang(49),'
    ',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",lang(217)),'

    ';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'

    ';if($aa!="")echo'',confirm(lang(179,$aa));echo input_token(),'

    ';}elseif(isset($_GET["procedure"])){$da=($_GET["name"]?:$_GET["procedure"]);$ah=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$o){$Lf=routine($_GET["procedure"],$ah);$ki="$K[name]_adminer_".uniqid();foreach($K["fields"]as$_=>$p){if($p["field"]=="")unset($K["fields"][$_]);}drop_create("DROP $ah ".routine_id($da,$Lf),create_routine($ah,$K),"DROP $ah ".routine_id($K["name"],$K),create_routine($ah,array("name"=>$ki)+$K),"DROP $ah ".routine_id($ki,$K),substr(ME,0,-1),lang(218),lang(219),lang(220),$da,$K["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(221):lang(222)).": ".h($da):(isset($_GET["function"])?lang(223):lang(224))),$o);if(!$_POST){if($da=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$ah);$K["name"]=$da;}}$ib=get_vals("SHOW CHARACTER SET");sort($ib);$bh=routine_languages();echo($ib?"".optionlist($ib)."":""),'

    ',lang(187),': ',($bh?lang(19).": ".html_select("language",$bh,$K["language"])."\n":""),'

    ';edit_fields($K["fields"],$ib,$ah);if(isset($_GET["function"])){echo"
    ".lang(225);edit_type("returns",$K["returns"],$ib,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'
    ',script("editFields();"),'

    ';textarea("definition",$K["definition"]);echo'

    ';if($da!="")echo'',confirm(lang(179,$da));echo input_token(),'

    ';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$K=$_POST;if($_POST&&!$o){$B=substr(ME,0,-1);$D=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$B,lang(226));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($D),$B,lang(227));elseif($fa!=$D)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($D),$B,lang(228));else redirect($B);}page_header($fa!=""?lang(229).": ".h($fa):lang(230),$o);if(!$K)$K["name"]=$fa;echo'

    ';if($fa!="")echo"".confirm(lang(179,$fa))."\n";echo input_token(),'

    ';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$K=$_POST;if($_POST&&!$o){$B=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$B,lang(231));else query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$B,lang(232));}page_header($ga!=""?lang(233).": ".h($ga):lang(234),$o);if(!$K)$K["as"]="AS ";echo'

    ';if($ga!=""){$Mi=$n->types();$xc=type_values($Mi[$ga]);if($xc)echo"ENUM (".h($xc).")\n

    ";echo"".confirm(lang(179,$ga))."\n";}else{echo lang(187).": \n",doc_link(array('pgsql'=>"datatype-enum.html",),"?");textarea("as",$K["as"]);echo"

    \n";}echo input_token(),'

    ';}elseif(isset($_GET["check"])){$a=$_GET["check"];$D=$_GET["name"];$K=$_POST;if($K&&!$o){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),0,array(),$D,($K["drop"]?"":$K["clause"]));else{$I=($D==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($D)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?lang(235):($D!=""?lang(236):lang(237))),$I);}page_header(($D!=""?lang(238).": ".h($D):lang(141)),$o,array("table"=>$a));if(!$K){$Za=$n->checkConstraints($a);$K=array("name"=>$D,"clause"=>$Za[$D]);}echo'

    ';if(JUSH!="sqlite")echo lang(187).': ';echo doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",),"?"),'

    ';textarea("clause",$K["clause"]);echo'

    ';if($D!="")echo'',confirm(lang(179,$D));echo input_token(),'

    ';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$D=$_GET["name"];$Ii=trigger_options();$K=(array)trigger($D,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$o&&in_array($_POST["Timing"],$Ii["Timing"])&&in_array($_POST["Event"],$Ii["Event"])&&in_array($_POST["Type"],$Ii["Type"])){$wf=" ON ".table($a);$cc="DROP TRIGGER ".idf_escape($D).(JUSH=="pgsql"?$wf:"");$Be=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($cc,$Be,lang(239));else{if($D!="")queries($cc);queries_redirect($Be,($D!=""?lang(240):lang(241)),queries(create_trigger($wf,$_POST)));if($D!="")queries(create_trigger($wf,$K+array("Type"=>reset($Ii["Type"]))));}}$K=$_POST;}page_header(($D!=""?lang(242).": ".h($D):lang(243)),$o,array("table"=>$a));echo'
    ',lang(244),'',html_select("Timing",$Ii["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'
    ',lang(245),'',html_select("Event",$Ii["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$Ii["Event"])?" ":""),'
    ',lang(48),'',html_select("Type",$Ii["Type"],$K["Type"]),'

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

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

    ';if($D!="")echo'',confirm(lang(179,$D));echo input_token(),'

    ';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$_g=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$yb)$_g[$yb][$K["Privilege"]]=$K["Comment"];}$_g["Server Admin"]+=$_g["File access on server"];$_g["Databases"]["Create routine"]=$_g["Procedures"]["Create routine"];unset($_g["Procedures"]["Create routine"]);$_g["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$_g["Columns"][$X]=$_g["Tables"][$X];unset($_g["Server Admin"]["Usage"]);foreach($_g["Tables"]as$_=>$X)unset($_g["Databases"][$_]);$ff=array();if($_POST){foreach($_POST["objects"]as$_=>$X)$ff[$X]=(array)$ff[$X]+(array)$_POST["grants"][$_];}$pd=array();$uf="";if(isset($_GET["host"])&&($I=$h->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$Ie,PREG_SET_ORDER)){foreach($Ie as$X){if($X[1]!="USAGE")$pd["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$pd["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$C))$uf=$C[1];}}if($_POST&&!$o){$vf=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $vf",ME."privileges=",lang(246));else{$hf=q($_POST["user"])."@".q($_POST["host"]);$fg=$_POST["pass"];if($fg!=''&&!$_POST["hashed"]&&!min_version(8)){$fg=get_val("SELECT PASSWORD(".q($fg).")");$o=!$fg;}$Bb=false;if(!$o){if($vf!=$hf){$Bb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $hf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($fg));$o=!$Bb;}elseif($fg!=$uf)queries("SET PASSWORD FOR $hf = ".q($fg));}if(!$o){$Xg=array();foreach($ff as$of=>$od){if(isset($_GET["grant"]))$od=array_filter($od);$od=array_keys($od);if(isset($_GET["grant"]))$Xg=array_diff(array_keys(array_filter($ff[$of],'strlen')),$od);elseif($vf==$hf){$sf=array_keys((array)$pd[$of]);$Xg=array_diff($sf,$od);$od=array_diff($od,$sf);unset($pd[$of]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$of,$C)&&(!grant("REVOKE",$Xg,$C[2]," ON $C[1] FROM $hf")||!grant("GRANT",$od,$C[2]," ON $C[1] TO $hf"))){$o=true;break;}}}if(!$o&&isset($_GET["host"])){if($vf!=$hf)queries("DROP USER $vf");elseif(!isset($_GET["grant"])){foreach($pd as$of=>$Xg){if(preg_match('~^(.+)(\(.*\))?$~U',$of,$C))grant("REVOKE",array_keys($Xg),$C[2]," ON $C[1] FROM $hf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(247):lang(248)),!$o);if($Bb)$h->query("DROP USER $hf");}}page_header((isset($_GET["host"])?lang(34).": ".h("$ha@$_GET[host]"):lang(150)),$o,array("privileges"=>array('',lang(70))));$K=$_POST;if($K)$pd=$ff;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$uf;if($uf!="")$K["hashed"]=true;$pd[(DB==""||$pd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    ',lang(33),'
    ',lang(34),'
    ',lang(35),' ',($K["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$K["hashed"],lang(249),"typePassword(this.form['pass'], this.checked);")),'
    ',"\n","\n";foreach(array(""=>"","Server Admin"=>lang(33),"Databases"=>lang(36),"Tables"=>lang(133),"Columns"=>lang(47),"Procedures"=>lang(250),)as$yb=>$Tb){foreach((array)$_g[$yb]as$zg=>$nb){echo"$Tb'.h($zg);$v=0;foreach($pd as$of=>$od){$D="'grants[$v][".h(strtoupper($zg))."]'";$Y=$od[strtoupper($zg)];if($yb=="Server Admin"&&$of!=(isset($pd["*.*"])?"*.*":".*"))echo"
    ".lang(70).doc_link(array('sql'=>"grant.html#priv_level"));$v=0;foreach($pd as$of=>$od){echo''.($of!="*.*"?"":input_hidden("objects[$v]","*.*")."*.*");$v++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else echo"";$v++;}}}echo"
    \n",'

    ';if(isset($_GET["host"]))echo'',confirm(lang(179,"$ha@$_GET[host]"));echo input_token(),'

    ';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$o){$ne=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$ne++;}queries_redirect(ME."processlist=",lang(253,$ne),$ne||!$_POST["kill"]);}}page_header(lang(117),$o);echo'
    ',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$v=-1;foreach(process_list()as$v=>$K){if(!$v){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($K as$_=>$X)echo"$_".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($_),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"
    ".checkbox("kill[]",$K[JUSH=="sql"?"Id":"pid"],0):"");foreach($K as$_=>$X)echo"".((JUSH=="sql"&&$_=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$_=="current_query"&&$X!="")||(JUSH=="oracle"&&$_=="sql_text"&&$X!="")?"".shorten_utf8($X,100,"").' '.lang(254).'':h($X));echo"\n";}echo'

    ';if(support("kill"))echo($v+1)."/".lang(255,max_connections()),"

    \n";echo input_token(),'

    ',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$z=indexes($a);$q=fields($a);$fd=column_foreign_keys($a);$qf=$S["Oid"];$qa=get_settings("adminer_import");$Yg=array();$f=array();$kh=array();$Hf=array();$oi=null;foreach($q as$_=>$p){$D=$b->fieldName($p);$df=html_entity_decode(strip_tags($D),ENT_QUOTES);if(isset($p["privileges"]["select"])&&$D!=""){$f[$_]=$df;if(is_shortable($p))$oi=$b->selectLengthProcess();}if(isset($p["privileges"]["where"])&&$D!="")$kh[$_]=$df;if(isset($p["privileges"]["order"])&&$D!="")$Hf[$_]=$df;$Yg+=$p["privileges"];}list($M,$qd)=$b->selectColumnsProcess($f,$z);$M=array_unique($M);$qd=array_unique($qd);$de=count($qd)selectSearchProcess($q,$z);$Gf=$b->selectOrderProcess($q,$z);$A=$b->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Ri=>$K){$xa=convert_field($q[key($K)]);$M=array($xa?:idf_escape(key($K)));$Z[]=where_check($Ri,$q);$J=$n->select($a,$M,$Z,$M);if($J)echo reset($J->fetch_row());}exit;}$vg=$Ti=null;foreach($z as$y){if($y["type"]=="PRIMARY"){$vg=array_flip($y["columns"]);$Ti=($M?$vg:array());foreach($Ti as$_=>$X){if(in_array(idf_escape($_),$M))unset($Ti[$_]);}break;}}if($qf&&!$vg){$vg=$Ti=array($qf=>0);$z[]=array("type"=>"PRIMARY","columns"=>array($qf));}if($_POST&&!$o){$rj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Za=array();foreach($_POST["check"]as$Va)$Za[]=where_check($Va,$q);$rj[]="((".implode(") OR (",$Za)."))";}$rj=($rj?"\nWHERE ".implode(" AND ",$rj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);$b->dumpTable($a,"");$jd=($M?implode(", ",$M):"*").convert_fields($f,$q,$M)."\nFROM ".table($a);$sd=($qd&&$de?"\nGROUP BY ".implode(", ",$qd):"").($Gf?"\nORDER BY ".implode(", ",$Gf):"");$H="SELECT $jd$rj$sd";if(is_array($_POST["check"])&&!$vg){$Pi=array();foreach($_POST["check"]as$X)$Pi[]="(SELECT".limit($jd,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$q).$sd,1).")";$H=implode(" UNION ALL ",$Pi);}$b->dumpData($a,"table",$H);$b->dumpFooter();exit;}if(!$b->selectEmailProcess($Z,$fd)){if($_POST["save"]||$_POST["delete"]){$I=true;$ra=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$D=>$X){$X=process_input($q[$D]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($D)]=($X!==false?$X:idf_escape($D));}}if($_POST["delete"]||$O){if($_POST["clone"])$H="INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a);if($_POST["all"]||($vg&&is_array($_POST["check"]))||$de){$I=($_POST["delete"]?$n->delete($a,$rj):($_POST["clone"]?queries("INSERT $H$rj".$n->insertReturning($a)):$n->update($a,$O,$rj)));$ra=$h->affected_rows+(is_object($I)?$I->num_rows:0);}else{foreach((array)$_POST["check"]as$X){$qj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$q);$I=($_POST["delete"]?$n->delete($a,$qj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$qj)):$n->update($a,$O,$qj,1)));if(!$I)break;$ra+=$h->affected_rows;}}}$Se=lang(257,$ra);if($_POST["clone"]&&$I&&$ra==1){$te=last_id($I);if($te)$Se=lang(172," $te");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Se,$I);if(!$_POST["delete"]){$sg=(array)$_POST["fields"];edit_form($a,array_intersect_key($q,$sg),$sg,!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$o=lang(258);else{$I=true;$ra=0;foreach($_POST["val"]as$Ri=>$K){$O=array();foreach($K as$_=>$X){$_=bracket_escape($_,1);$O[idf_escape($_)]=(preg_match('~char|text~',$q[$_]["type"])||$X!=""?$b->processInput($q[$_],$X):"NULL");}$I=$n->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Ri,$q),!$de&&!$vg," ");if(!$I)break;$ra+=$h->affected_rows;}queries_redirect(remove_from_uri(),lang(257,$ra),$I);}}elseif(!is_string($Tc=get_file("csv_file",true)))$o=upload_error($Tc);elseif(!preg_match('~~u',$Tc))$o=lang(259);else{save_settings(array("output"=>$qa["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$jb=array_keys($q);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Tc,$Ie);$ra=count($Ie[0]);$n->begin();$qh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($Ie[0]as$_=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$qh]*)$qh~",$X.$qh,$Je);if(!$_&&!array_diff($Je[1],$jb)){$jb=$Je[1];$ra--;}else{$O=array();foreach($Je[1]as$v=>$fb)$O[idf_escape($jb[$v])]=($fb==""&&$q[$jb[$v]]["null"]?"NULL":q(preg_match('~^".*"$~s',$fb)?str_replace('""','"',substr($fb,1,-1)):$fb));$L[]=$O;}}$I=(!$L||$n->insertUpdate($a,$L,$vg));if($I)$n->commit();queries_redirect(remove_from_uri("page"),lang(260,$ra),$I);$n->rollback();}}}$ai=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else page_header(lang(52).": $ai",$o);$O=null;if(isset($Yg["insert"])||!support("table")){$Yf=array();foreach((array)$_GET["where"]as$X){if(isset($fd[$X["col"]])&&count($fd[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Yf["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$Yf?"&".http_build_query($Yf):"";}$b->selectLinks($S,$O);if(!$f&&support("table"))echo"

    ".lang(261).($q?".":": ".error())."\n";else{echo"

    \n","
    ";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"
    \n";$b->selectColumnsPrint($M,$f);$b->selectSearchPrint($Z,$kh,$z);$b->selectOrderPrint($Gf,$Hf,$z);$b->selectLimitPrint($A);$b->selectLengthPrint($oi);$b->selectActionPrint($z);echo"
    \n";$F=$_GET["page"];if($F=="last"){$id=get_val(count_rows($a,$Z,$de,$qd));$F=floor(max(0,$id-1)/$A);}$lh=$M;$rd=$qd;if(!$lh){$lh[]="*";$zb=convert_fields($f,$q,$M);if($zb)$lh[]=substr($zb,2);}foreach($M as$_=>$X){$p=$q[idf_unescape($X)];if($p&&($xa=convert_field($p)))$lh[$_]="$xa AS $X";}if(!$de&&$Ti){foreach($Ti as$_=>$X){$lh[]=idf_escape($_);if($rd)$rd[]=idf_escape($_);}}$I=$n->select($a,$lh,$Z,$rd,$Gf,$A,$F,true);if(!$I)echo"

    ".error()."\n";else{if(JUSH=="mssql"&&$F)$I->seek($A*$F);$qc=array();echo"

    \n";$L=array();while($K=$I->fetch_assoc()){if($F&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$A!=""&&$qd&&$de&&JUSH=="sql")$id=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"

    ".lang(12)."\n";else{$Fa=$b->backwardKeys($a,$ai);echo"

    ","",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$qd&&$M?"":"\n";if(is_ajax())ob_end_clean();foreach($b->rowDescriptions($L,$fd)as$cf=>$K){$Qi=unique_array($L[$cf],$z);if(!$Qi){$Qi=array();foreach($L[$cf]as$_=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$_))$Qi[$_]=$X;}}$Ri="";foreach($Qi as$_=>$X){if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$q[$_]["type"])&&strlen($X)>64){$_=(strpos($_,'(')?$_:idf_escape($_));$_="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$q[$_]["collation"])?$_:"CONVERT($_ USING ".charset($h).")").")";$X=md5($X);}$Ri.="&".($X!==null?urlencode("where[".bracket_escape($_)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($_));}echo"".(!$qd&&$M?"":"\n";}if(is_ajax())exit;echo"
    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".lang(262)."");$ef=array();$ld=array();reset($M);$Ig=1;foreach($L[0]as$_=>$X){if(!isset($Ti[$_])){$X=$_GET["columns"][key($M)];$p=$q[$M?($X?$X["col"]:current($M)):$_];$D=($p?$b->fieldName($p,$Ig):($X["fun"]?"*":h($_)));if($D!=""){$Ig++;$ef[$_]=$D;$e=idf_escape($_);$Hd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($_);$Tb="&desc%5B0%5D=1";$Dh=isset($p["privileges"]["order"]);echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$kd=apply_sql_function($X["fun"],$D);echo($Dh?''."$kd":$kd),"";}$ld[$_]=$X["fun"];next($M);}}$ze=array();if($_GET["modify"]){foreach($L as$K){foreach($K as$_=>$X)$ze[$_]=max($ze[$_],min(40,strlen(utf8_decode($X))));}}echo($Fa?"".lang(263):"")."
    ".checkbox("check[]",substr($Ri,1),in_array(substr($Ri,1),(array)$_POST["check"])).($de||information_schema(DB)?"":" ".lang(264).""));foreach($K as$_=>$X){if(isset($ef[$_])){$p=$q[$_];$X=$n->value($X,$p);if($X!=""&&(!isset($qc[$_])||$qc[$_]!=""))$qc[$_]=(is_mail($X)?$ef[$_]:"");$B="";if(preg_match('~blob|bytea|raw|file~',$p["type"])&&$X!="")$B=ME.'download='.urlencode($a).'&field='.urlencode($_).$Ri;if(!$B&&$X!==null){foreach((array)$fd[$_]as$s){if(count($fd[$_])==1||end($s["source"])==$_){$B="";foreach($s["source"]as$v=>$Eh)$B.=where_link($v,$s["target"][$v],$L[$cf][$Eh]);$B=($s["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($s["db"]),ME):ME).'select='.urlencode($s["table"]).$B;if($s["ns"])$B=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($s["ns"]),$B);if(count($s["source"])==1)break;}}}if($_=="COUNT(*)"){$B=ME."select=".urlencode($a);$v=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Qi))$B.=where_link($v++,$W["col"],$W["val"],$W["op"]);}foreach($Qi as$je=>$W)$B.=where_link($v++,$je,$W);}$X=select_value($X,$B,$p,$oi);$w=h("val[$Ri][".bracket_escape($_)."]");$Y=$_POST["val"][$Ri][bracket_escape($_)];$lc=!is_array($K[$_])&&is_utf8($X)&&$L[$cf][$_]==$K[$_]&&!$ld[$_]&&!$p["generated"];$mi=preg_match('~text|json|lob~',$p["type"]);echo"".($mi?"":"");}else{$De=strpos($X,"");echo" data-text='".($De?2:($mi?1:0))."'".($lc?"":" data-warning='".h(lang(265))."'").">$X";}}}if($Fa)echo"";$b->backwardKeysPrint($Fa,$L[$cf]);echo"
    \n","
    \n";}if(!is_ajax()){if($L||$F){$Dc=true;if($_GET["page"]!="last"){if($A==""||(count($L)<$A&&($L||!$F)))$id=($F?$F*$A:0)+count($L);elseif(JUSH!="sql"||!$de){$id=($de?false:found_rows($S,$Z));if($id$A||$F));if($Wf)echo(($id===false?count($L)+1:$id-$F*$A)>$A?'

    '.lang(266).''.script("qsl('a').onclick = partial(selectLoadMore, ".(+$A).", '".lang(267)."…');",""):''),"\n";}echo"

    \n";if($b->selectImportPrint())echo"
    ","".lang(71)."",script("qsl('a').onclick = partial(toggle, 'import');",""),"","
    ";echo input_token(),"\n",(!$qd&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?lang(119):lang(118));$hj=($P?show_status():show_variables());if(!$hj)echo"

    ".lang(12)."\n";else{echo"\n";foreach($hj as$K){echo"";$_=array_shift($K);echo"
    ".h($_)."";foreach($K as$X)echo"".nl_br(h($X));}echo"
    \n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Wh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$D=>$S){json_row("Comment-$D",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$_)json_row("$_-$D",h($S[$_]));foreach($Wh+array("Auto_increment"=>0,"Rows"=>0)as$_=>$X){if($S[$_]!=""){$X=format_number($S[$_]);if($X>=0)json_row("$_-$D",($_=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Wh[$_]))$Wh[$_]+=($S["Engine"]!="InnoDB"||$_!="Data_free"?$S[$_]:0);}elseif(array_key_exists($_,$S))json_row("$_-$D","?");}}}foreach($Wh as$_=>$X)json_row("sum-$_",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$h->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$l=>$X){json_row("tables-$l",$X);json_row("size-$l",db_size($l));}json_row("");}exit;}else{$gi=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($gi&&!$o&&!$_POST["search"]){$I=true;$Se="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$I=truncate_tables($_POST["tables"]);$Se=lang(271);}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Se=lang(272);}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Se=lang(273);}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$Se=lang(274);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$Se.="".h($R).": ".h($K["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$I=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Se=lang(275);}elseif(!$_POST["tables"])$Se=lang(9);elseif($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc())$Se.="".h($K["Table"]).": ".h($K["Msg_text"])."
    ";}queries_redirect(substr(ME,0,-1),$Se,$I);}page_header(($_GET["ns"]==""?lang(36).": ".h(DB):lang(75).": ".h($_GET["ns"])),$o,true);if($b->homepage()){if($_GET["ns"]!==""){echo"

    ".lang(276)."

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

    ".lang(9)."\n";else{echo"

    \n";if(support("table")){echo"
    ".lang(277)."
    ","",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$n->convertOperator("LIKE %%");search_tables();}}echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$T=0;foreach($fi as$D=>$U){$kj=($U!==null&&!preg_match('~table|sequence~i',$U));$w=h("Table-".$D);echo'
    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.lang(133),''.lang(278).doc_link(array('sql'=>'storage-engines.html')),''.lang(124).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),''.lang(279).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),''.lang(280).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),''.lang(281).doc_link(array('sql'=>'show-table-status.html')),''.lang(50).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),''.lang(282).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?''.lang(49).doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"
    '.checkbox(($kj?"views[]":"tables[]"),$D,in_array($D,$gi,true),"","","",$w),''.(support("table")||support("indexes")?"".h($D).'':h($D));if($kj)echo''.(preg_match('~materialized~i',$U)?lang(131):lang(132)).'','?';else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(43)),"Index_length"=>array("indexes",lang(135)),"Data_free"=>array("edit",lang(44)),"Auto_increment"=>array("auto_increment=1&create",lang(43)),"Rows"=>array("select",lang(40)),)as$_=>$B){$w=" id='$_-".h($D)."'";echo($B?"".(support("table")||$_=="Rows"||(support("indexes")&&$_!="Data_length")?"?":"?"):"");}$T++;}echo(support("comment")?"":""),"\n";}echo"
    ".lang(255,count($fi)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$_)echo"";echo"\n","
    \n","
    \n";if(!information_schema(DB)){echo"\n";}echo"
    \n",script("tableCheck();");}echo"

    ".lang(147)."

    \n";$ch=routines();if($ch){echo"\n",'\n";foreach($ch as$K){$D=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'','
    '.lang(187).''.lang(48).''.lang(225)."
    '.h($K["ROUTINE_NAME"]).'',''.h($K["ROUTINE_TYPE"]),''.h($K["DTD_IDENTIFIER"]),''.lang(138)."";}echo"
    \n";}echo'

    ".lang(293)."

    \n";$th=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($th){echo"\n","\n";foreach($th as$X)echo"
    ".lang(187)."
    ".h($X)."\n";echo"
    \n";}echo"

    ".lang(31)."

    \n";$cj=types();if($cj){echo"\n","\n";foreach($cj as$X)echo"
    ".lang(187)."
    ".h($X)."\n";echo"
    \n";}echo"

    ".lang(148)."

    \n";$L=get_rows("SHOW EVENTS");if($L){echo"\n","\n";foreach($L as$K)echo"","
    ".lang(187)."".lang(294)."".lang(214)."".lang(215)."
    ".h($K["Name"]),"".($K["Execute at"]?lang(295)."".$K["Execute at"]:lang(216)." ".$K["Interval value"]." ".$K["Interval field"]."$K[Starts]"),"$K[Ends]",''.lang(138).'';echo"
    \n";$Bc=get_val("SELECT @@event_scheduler");if($Bc&&$Bc!="ON")echo"

    event_scheduler: ".h($Bc)."\n";}echo'