diff --git a/webapp/composer.json b/webapp/composer.json index c54233ec35..3a41ef7621 100644 --- a/webapp/composer.json +++ b/webapp/composer.json @@ -101,7 +101,8 @@ "twig/extra-bundle": "^3.5", "twig/markdown-extra": "^3.5", "twig/string-extra": "^3.5", - "twig/twig": "^3.6" + "twig/twig": "^3.6", + "vrana/adminer": "^5.4" }, "require-dev": { "ext-dom": "*", @@ -155,7 +156,8 @@ "scripts": { "auto-scripts": { "cache:clear": "symfony-cmd", - "assets:install %PUBLIC_DIR%": "symfony-cmd" + "assets:install %PUBLIC_DIR%": "symfony-cmd", + "adminer:compile": "symfony-cmd" }, "post-install-cmd": [ "@auto-scripts" diff --git a/webapp/composer.lock b/webapp/composer.lock index 87e2f8f05a..9b8a1d628a 100644 --- a/webapp/composer.lock +++ b/webapp/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a9804167a5858be26b76bc36e0952771", + "content-hash": "acf8aab5dc3598efb723d47096cbcf51", "packages": [ { "name": "brick/math", @@ -10206,6 +10206,70 @@ ], "time": "2025-10-29T15:56:47+00:00" }, + { + "name": "vrana/adminer", + "version": "v5.4.1", + "source": { + "type": "git", + "url": "https://github.com/vrana/adminer.git", + "reference": "eaad45a781a3e0d9fa04e3431c1826e81c061699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vrana/adminer/zipball/eaad45a781a3e0d9fa04e3431c1826e81c061699", + "reference": "eaad45a781a3e0d9fa04e3431c1826e81c061699", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "type": "library", + "autoload": { + "classmap": [ + "plugins/" + ], + "exclude-from-classmap": [ + "adminer/drivers/", + "plugins/drivers/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0", + "GPL-2.0-only" + ], + "authors": [ + { + "name": "Jakub Vrána", + "homepage": "https://www.vrana.cz/" + } + ], + "description": "Database management in a single PHP file.", + "homepage": "https://www.adminer.org/", + "keywords": [ + "database" + ], + "support": { + "forum": "https://github.com/vrana/adminer/discussions", + "issues": "https://github.com/vrana/adminer/issues", + "source": "https://github.com/vrana/adminer/" + }, + "funding": [ + { + "url": "https://www.paypal.com/donate/?hosted_button_id=6PK5VNUCFT3FG", + "type": "custom" + }, + { + "url": "https://github.com/vrana", + "type": "github" + }, + { + "url": "https://www.patreon.com/jakubvrana", + "type": "patreon" + } + ], + "time": "2025-09-26T15:38:02+00:00" + }, { "name": "webmozart/assert", "version": "1.12.1", @@ -12727,7 +12791,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -12753,5 +12817,5 @@ "platform-overrides": { "php": "8.1.0" }, - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.9.0" } diff --git a/webapp/resources/adminer.php b/webapp/resources/adminer.php deleted file mode 100644 index a6e09f9f39..0000000000 --- a/webapp/resources/adminer.php +++ /dev/null @@ -1,1009 +0,0 @@ -credentials();$L=Driver::connect($wb[0],$wb[1],$wb[2]);return(is_object($L)?$L:null);}function -idf_unescape($v){if(!preg_match('~^[`\'"[]~',$v))return$v;$le=substr($v,-1);return -str_replace($le.$le,$le,substr($v,1,-1));}function -q($zh){return -connection()->quote($zh);}function -escape_string($X){return -substr(q($X),1,-1);}function -idx($ta,$z,$k=null){return($ta&&array_key_exists($z,$ta)?$ta[$z]:$k);}function -number($X){return -preg_replace('~[^0-9]+~','',$X);}function -number_type(){return'((?$W){unset($sg[$z][$de]);if(is_array($W)){$sg[$z][stripslashes($de)]=$W;$sg[]=&$sg[$z][stripslashes($de)];}else$sg[$z][stripslashes($de)]=($Nc?$W:stripslashes($W));}}}}function -bracket_escape($v,$Aa=false){static$ii=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return -strtr($v,($Aa?array_flip($ii):$ii));}function -min_version($Li,$ze="",$g=null){$g=connection($g);$eh=$g->server_info;if($ze&&preg_match('~([\d.]+)-MariaDB~',$eh,$C)){$eh=$C[1];$Li=$ze;}return$Li&&version_compare($eh,$Li)>=0;}function -charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function -ini_bool($Nd){$X=ini_get($Nd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function -ini_bytes($Nd){$X=ini_get($Nd);switch(strtolower(substr($X,-1))){case'g':$X=(int)$X*1024;case'm':$X=(int)$X*1024;case'k':$X=(int)$X*1024;}return$X;}function -sid(){static$L;if($L===null)$L=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$L;}function -set_password($Ki,$P,$V,$H){$_SESSION["pwds"][$Ki][$P][$V]=($_COOKIE["adminer_key"]&&is_string($H)?array(encrypt_string($H,$_COOKIE["adminer_key"])):$H);}function -get_password(){$L=get_session("pwds");if(is_array($L))$L=($_COOKIE["adminer_key"]?decrypt_string($L[0],$_COOKIE["adminer_key"]):false);return$L;}function -get_val($J,$m=0,$mb=null){$mb=connection($mb);$K=$mb->query($J);if(!is_object($K))return -false;$M=$K->fetch_row();return($M?$M[$m]:false);}function -get_vals($J,$c=0){$L=array();$K=connection()->query($J);if(is_object($K)){while($M=$K->fetch_row())$L[]=$M[$c];}return$L;}function -get_key_vals($J,$g=null,$hh=true){$g=connection($g);$L=array();$K=$g->query($J);if(is_object($K)){while($M=$K->fetch_row()){if($hh)$L[$M[0]]=$M[1];else$L[]=$M[0];}}return$L;}function -get_rows($J,$g=null,$l="

"){$mb=connection($g);$L=array();$K=$mb->query($J);if(is_object($K)){while($M=$K->fetch_assoc())$L[]=$M;}elseif(!$K&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$L;}function -unique_array($M,array$x){foreach($x -as$w){if(preg_match("~PRIMARY|UNIQUE~",$w["type"])){$L=array();foreach($w["columns"]as$z){if(!isset($M[$z]))continue -2;$L[$z]=$M[$z];}return$L;}}}function -escape_key($z){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$z,$C))return$C[1].idf_escape(idf_unescape($C[2])).$C[3];return -idf_escape($z);}function -where(array$Z,array$n=array()){$L=array();foreach((array)$Z["where"]as$z=>$X){$z=bracket_escape($z,true);$c=escape_key($z);$m=idx($n,$z,array());$Kc=$m["type"];$L[]=$c.(JUSH=="sql"&&$Kc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="pgsql"&&preg_match('~^json~',$Kc)?"::jsonb = ".q($X)."::jsonb":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Kc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X))))));if(JUSH=="sql"&&preg_match('~char|text~',$Kc)&&preg_match("~[^ -@]~",$X))$L[]="$c = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$z)$L[]=escape_key($z)." IS NULL";return -implode(" AND ",$L);}function -where_check($X,array$n=array()){parse_str($X,$Sa);remove_slashes(array(&$Sa));return -where($Sa,$n);}function -where_link($t,$c,$Y,$tf="="){return"&where%5B$t%5D%5Bcol%5D=".urlencode($c)."&where%5B$t%5D%5Bop%5D=".urlencode(($Y!==null?$tf:"IS NULL"))."&where%5B$t%5D%5Bval%5D=".urlencode($Y);}function -convert_fields(array$d,array$n,array$O=array()){$L="";foreach($d -as$z=>$X){if($O&&!in_array(idf_escape($z),$O))continue;$ua=convert_field($n[$z]);if($ua)$L -.=", $ua AS ".idf_escape($z);}return$L;}function -cookie($E,$Y,$te=2592000){header("Set-Cookie: $E=".urlencode($Y).($te?"; expires=".gmdate("D, d M Y H:i:s",time()+$te)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function -get_settings($sb){parse_str($_COOKIE[$sb],$ih);return$ih;}function -get_setting($z,$sb="adminer_settings",$k=null){return -idx(get_settings($sb),$z,$k);}function -save_settings(array$ih,$sb="adminer_settings"){$Y=http_build_query($ih+get_settings($sb));cookie($sb,$Y);$_COOKIE[$sb]=$Y;}function -restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function -stop_session($Sc=false){$Ei=ini_bool("session.use_cookies");if(!$Ei||$Sc){session_write_close();if($Ei&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($z){return$_SESSION[$z][DRIVER][SERVER][$_GET["username"]];}function -set_session($z,$X){$_SESSION[$z][DRIVER][SERVER][$_GET["username"]]=$X;}function -auth_url($Ki,$P,$V,$j=null){$Ai=remove_from_uri(implode("|",array_keys(SqlDriver::$drivers))."|username|ext|".($j!==null?"db|":"").($Ki=='mssql'||$Ki=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$Ai,$C);return"$C[1]?".(sid()?SID."&":"").($Ki!="server"||$P!=""?urlencode($Ki)."=".urlencode($P)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($C[2]?"&$C[2]":"");}function -is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function -redirect($B,$D=null){if($D!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($B!==null?$B:$_SERVER["REQUEST_URI"]))][]=$D;}if($B!==null){if($B=="")$B=".";header("Location: $B");exit;}}function -query_redirect($J,$B,$D,$_g=true,$yc=true,$Gc=false,$Vh=""){if($yc){$vh=microtime(true);$Gc=!connection()->query($J);$Vh=format_time($vh);}$qh=($J?adminer()->messageQuery($J,$Vh,$Gc):"");if($Gc){adminer()->error -.=error().$qh.script("messagesPrint();")."
";return -false;}if($_g)redirect($B,$D.$qh);return -true;}class -Queries{static$queries=array();static$start=0;}function -queries($J){if(!Queries::$start)Queries::$start=microtime(true);Queries::$queries[]=(preg_match('~;$~',$J)?"DELIMITER ;;\n$J;\nDELIMITER ":$J).";";return -connection()->query($J);}function -apply_queries($J,array$T,$uc='Adminer\table'){foreach($T -as$R){if(!queries("$J ".$uc($R)))return -false;}return -true;}function -queries_redirect($B,$D,$_g){$vg=implode("\n",Queries::$queries);$Vh=format_time(Queries::$start);return -query_redirect($vg,$B,$D,$_g,false,!$_g,$Vh);}function -format_time($vh){return -lang(0,max(0,microtime(true)-$vh));}function -relative_uri(){return -str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function -remove_from_uri($Mf=""){return -substr(preg_replace("~(?<=[?&])($Mf".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function -get_file($z,$Hb=false,$Nb=""){$Mc=$_FILES[$z];if(!$Mc)return -null;foreach($Mc -as$z=>$X)$Mc[$z]=(array)$X;$L='';foreach($Mc["error"]as$z=>$l){if($l)return$l;$E=$Mc["name"][$z];$di=$Mc["tmp_name"][$z];$ob=file_get_contents($Hb&&preg_match('~\.gz$~',$E)?"compress.zlib://$di":$di);if($Hb){$vh=substr($ob,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$vh))$ob=iconv("utf-16","utf-8",$ob);elseif($vh=="\xEF\xBB\xBF")$ob=substr($ob,3);}$L -.=$ob;if($Nb)$L -.=(preg_match("($Nb\\s*\$)",$ob)?"":$Nb)."\n\n";}return$L;}function -upload_error($l){$He=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?lang(1).($He?" ".lang(2,$He):""):lang(3));}function -repeat_pattern($Zf,$re){return -str_repeat("$Zf{0,65535}",$re/65535)."$Zf{0,".($re%65535)."}";}function -is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function -format_number($X){return -strtr(number_format($X,0,".",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,$Hc=false){$L=table_status($R,$Hc);return($L?reset($L):array("Name"=>$R));}function -column_foreign_keys($R){$L=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$L[$X][]=$p;}return$L;}function -fields_from_edit(){$L=array();foreach((array)$_POST["field_keys"]as$z=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$z];$_POST["fields"][$X]=$_POST["field_vals"][$z];}}foreach((array)$_POST["fields"]as$z=>$X){$E=bracket_escape($z,true);$L[$E]=array("field"=>$E,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($z==driver()->primary),);}return$L;}function -dump_headers($zd,$Ve=false){$L=adminer()->dumpHeaders($zd,$Ve);$Jf=$_POST["output"];if($Jf!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($zd).".$L".($Jf!="file"&&preg_match('~^[0-9a-z]+$~',$Jf)?".$Jf":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$L;}function -dump_csv(array$M){foreach($M -as$z=>$X){if(preg_match('~["\n,;\t]|^0.|\.\d*0$~',$X)||$X==="")$M[$z]='"'.str_replace('"','""',$X).'"';}echo -implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$M)."\r\n";}function -apply_sql_function($r,$c){return($r?($r=="unixepoch"?"DATETIME($c, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$c)"):$c);}function -get_temp_dir(){$L=ini_get("upload_tmp_dir");if(!$L){if(function_exists('sys_get_temp_dir'))$L=sys_get_temp_dir();else{$o=@tempnam("","");if(!$o)return'';$L=dirname($o);unlink($o);}}return$L;}function -file_open_lock($o){if(is_link($o))return;$q=@fopen($o,"c+");if(!$q)return;@chmod($o,0660);if(!flock($q,LOCK_EX)){fclose($q);return;}return$q;}function -file_write_unlock($q,$Bb){rewind($q);fwrite($q,$Bb);ftruncate($q,strlen($Bb));file_unlock($q);}function -file_unlock($q){flock($q,LOCK_UN);fclose($q);}function -first(array$ta){return -reset($ta);}function -password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$L=stream_get_contents($q);if(!$L){$L=rand_string();file_write_unlock($q,$L);}else -file_unlock($q);return$L;}function -rand_string(){return -md5(uniqid(strval(mt_rand()),true));}function -select_value($X,$A,array$m,$Uh){if(is_array($X)){$L="";foreach($X -as$de=>$W)$L -.="".($X!=array_values($X)?"".h($de):"")."".select_value($W,$A,$m,$Uh);return"$L
";}if(!$A)$A=adminer()->selectLink($X,$m);if($A===null){if(is_mail($X))$A="mailto:$X";if(is_url($X))$A=$X;}$L=adminer()->editVal($X,$m);if($L!==null){if(!is_utf8($L))$L="\0";elseif($Uh!=""&&is_shortable($m))$L=shorten_utf8($L,max(0,+$Uh));else$L=h($L);}return -adminer()->selectVal($L,$A,$m,$X);}function -is_blob(array$m){return -preg_match('~blob|bytea|raw|file~',$m["type"])&&!in_array($m["type"],idx(driver()->structuredTypes(),lang(6),array()));}function -is_mail($hc){$va='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Wb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Zf="$va+(\\.$va+)*@($Wb?\\.)+$Wb";return -is_string($hc)&&preg_match("(^$Zf(,\\s*$Zf)*\$)i",$hc);}function -is_url($zh){$Wb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return -preg_match("~^(https?)://($Wb?\\.)+$Wb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$zh);}function -is_shortable(array$m){return -preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea|hstore~',$m["type"]);}function -host_port($P){return(preg_match('~^(\[(.+)]|([^:]+)):([^:]+)$~',$P,$C)?array($C[2].$C[3],$C[4]):array($P,''));}function -count_rows($R,array$Z,$Xd,array$s){$J=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($Xd&&(JUSH=="sql"||count($s)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$s).")$J":"SELECT COUNT(*)".($Xd?" FROM (SELECT 1$J GROUP BY ".implode(", ",$s).") x":$J));}function -slow_query($J){$j=adminer()->database();$Wh=adminer()->queryTimeout();$mh=driver()->slowQuery($J,$Wh);$g=null;if(!$mh&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$fe=get_val(connection_id(),0,$g);echo -script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$fe&token=".get_token()."'); }, 1000 * $Wh);");}}ob_flush();flush();$L=@get_key_vals(($mh?:$J),$g,false);if($g){echo -script("clearTimeout(timeout);");ob_flush();flush();}return$L;}function -get_token(){$yg=rand(1,1e6);return($yg^$_SESSION["token"]).":$yg";}function -verify_token(){list($ei,$yg)=explode(":",$_POST["token"]);return($yg^$_SESSION["token"])==$ei;}function -lzw_decompress($Ga){$Sb=256;$Ha=8;$ab=array();$Jg=0;$Kg=0;for($t=0;$t=$Ha){$Kg-=$Ha;$ab[]=$Jg>>$Kg;$Jg&=(1<<$Kg)-1;$Sb++;if($Sb>>$Ha)$Ha++;}}$Rb=range("\0","\xFF");$L="";$Ui="";foreach($ab -as$t=>$Za){$gc=$Rb[$Za];if(!isset($gc))$gc=$Ui.$Ui[0];$L -.=$gc;if($t)$Rb[]=$Ui.$gc[0];$Ui=$gc;}return$L;}function -script($oh,$hi="\n"){return"$oh$hi";}function -script_src($Bi,$Kb=false){return"\n";}function -nonce(){return' nonce="'.get_nonce().'"';}function -input_hidden($E,$Y=""){return"\n";}function -input_token(){return -input_hidden("token",get_token());}function -target_blank(){return' target="_blank" rel="noreferrer noopener"';}function -h($zh){return -str_replace("\0","�",htmlspecialchars($zh,ENT_QUOTES,'utf-8'));}function -nl_br($zh){return -str_replace("\n","
",$zh);}function -checkbox($E,$Y,$Ua,$he="",$sf="",$Ya="",$je=""){$L="".($sf?script("qsl('input').onclick = function () { $sf };",""):"");return($he!=""||$Ya?"$L".h($he)."":$L);}function -optionlist($wf,$Zg=null,$Fi=false){$L="";foreach($wf -as$de=>$W){$xf=array($de=>$W);if(is_array($W)){$L -.='';$xf=$W;}foreach($xf -as$z=>$X)$L -.=''.h($X);if(is_array($W))$L -.='';}return$L;}function -html_select($E,array$wf,$Y="",$rf="",$je=""){static$he=0;$ie="";if(!$je&&substr($wf[""],0,1)=="("){$he++;$je="label-$he";$ie="

","$qe",script("qsl('a').onclick = partial(toggle, 'fieldset-$u');",""),"","
\n";}function -selectSearchPrint(array$Z,array$d,array$x){print_fieldset("search",lang(47),$Z);foreach($x -as$t=>$w){if($w["type"]=="FULLTEXT")echo"
(".implode(", ",array_map('Adminer\h',$w["columns"])).") AGAINST"," ",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$t]",1,isset($_GET["boolean"][$t]),"BOOL"),"
\n";}$Pa="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$t=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"
".select_input(" name='where[$t][col]'",$d,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".lang(48).")"),html_select("where[$t][op]",adminer()->operators(),$X["op"],$Pa),"",script("mixin(qsl('input'), {oninput: function () { $Pa }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"
\n";}echo"\n";}function -selectOrderPrint(array$yf,array$d,array$x){print_fieldset("sort",lang(49),$yf);$t=0;foreach((array)$_GET["order"]as$z=>$X){if($X!=""){echo"
".select_input(" name='order[$t]'",$d,$X,"selectFieldChange"),checkbox("desc[$t]",1,isset($_GET["desc"][$z]),lang(50))."
\n";$t++;}}echo"
".select_input(" name='order[$t]'",$d,"","selectAddRow"),checkbox("desc[$t]",1,false,lang(50))."
\n","\n";}function -selectLimitPrint($_){echo"
".lang(51)."
","",script("qsl('input').oninput = selectFieldChange;",""),"
\n";}function -selectLengthPrint($Uh){if($Uh!==null)echo"
".lang(52)."
","","
\n";}function -selectActionPrint(array$x){echo"
".lang(53)."
",""," ","\n","const indexColumns = ";$d=array();foreach($x -as$w){$_b=reset($w["columns"]);if($w["type"]!="FULLTEXT"&&$_b)$d[$_b]=1;}$d[""]=1;foreach($d -as$z=>$X)json_row($z);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","\n","
\n";}function -selectCommandPrint(){return!information_schema(DB);}function -selectImportPrint(){return!information_schema(DB);}function -selectEmailPrint(array$ic,array$d){}function -selectColumnsProcess(array$d,array$x){$O=array();$s=array();foreach((array)$_GET["columns"]as$z=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$O[$z]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$s[]=$O[$z];}}return -array($O,$s);}function -selectSearchProcess(array$n,array$x){$L=array();foreach($x -as$t=>$w){if($w["type"]=="FULLTEXT"&&idx($_GET["fulltext"],$t)!="")$L[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$w["columns"])).") AGAINST (".q($_GET["fulltext"][$t]).(isset($_GET["boolean"][$t])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$z=>$X){$bb=$X["col"];if("$bb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$lb=array();foreach(($bb!=""?array($bb=>$n[$bb]):$n)as$E=>$m){$lg="";$kb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Dd=process_length($X["val"]);$kb -.=" ".($Dd!=""?$Dd:"(NULL)");}elseif($X["op"]=="SQL")$kb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$C))$kb=" $C[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$lg="$X[op](".q($X["val"]).", ";$kb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$kb -.=" ".adminer()->processInput($m,$X["val"]);if($bb!=""||(isset($m["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$X["op"])?',':'').']+$~',$X["val"])||!preg_match('~'.number_type().'|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||preg_match('~char|text|enum|set~',$m["type"]))&&(!preg_match('~date|timestamp~',$m["type"])||preg_match('~^\d+-\d+-\d+~',$X["val"]))))$lb[]=$lg.driver()->convertSearch(idf_escape($E),$X,$m).$kb;}$L[]=(count($lb)==1?$lb[0]:($lb?"(".implode(" OR ",$lb).")":"1 = 0"));}}return$L;}function -selectOrderProcess(array$n,array$x){$L=array();foreach((array)$_GET["order"]as$z=>$X){if($X!="")$L[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$z])?" DESC":"");}return$L;}function -selectLimitProcess(){return(isset($_GET["limit"])?intval($_GET["limit"]):50);}function -selectLengthProcess(){return(isset($_GET["text_length"])?"$_GET[text_length]":"100");}function -selectEmailProcess(array$Z,array$Uc){return -false;}function -selectQueryBuild(array$O,array$Z,array$s,array$yf,$_,$G){return"";}function -messageQuery($J,$Vh,$Gc=false){restart_session();$sd=&get_session("queries");if(!idx($sd,$_GET["db"]))$sd[$_GET["db"]]=array();if(strlen($J)>1e6)$J=preg_replace('~[\x80-\xFF]+$~','',substr($J,0,1e6))."\n…";$sd[$_GET["db"]][]=array($J,time(),$Vh);$sh="sql-".count($sd[$_GET["db"]]);$L="".lang(55)." 🗐\n";if(!$Gc&&($Qi=driver()->warnings())){$u="warnings-".count($sd[$_GET["db"]]);$L="".lang(37).", $L\n";}return" ".@date("H:i:s").""." $L';}function -editRowPrint($R,array$n,$M,$yi){}function -editFunctions(array$m){$L=($m["null"]?"NULL/":"");$yi=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$z=>$bd){if(!$z||(!isset($_GET["call"])&&$yi)){foreach($bd -as$Zf=>$X){if(!$Zf||preg_match("~$Zf~",$m["type"]))$L -.="/$X";}}if($z&&$bd&&!preg_match('~set|bool~',$m["type"])&&!is_blob($m))$L -.="/SQL";}if($m["auto_increment"]&&!$yi)$L=lang(42);return -explode("/",$L);}function -editInput($R,array$m,$wa,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?" ":"").enum_input("radio",$wa,$m,$Y,"NULL");return"";}function -editHint($R,array$m,$Y){return"";}function -processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$E=$m["field"];$L=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$L="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$L=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$L=idf_escape($E)." $r $L";elseif(preg_match('~^[+-] interval$~',$r))$L=idf_escape($E)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)&&JUSH!="pgsql"?$Y:$L);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$L="$r(".idf_escape($E).", $L)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$L="$r($L)";return -unconvert_field($m,$L);}function -dumpOutput(){$L=array('text'=>lang(56),'file'=>lang(57));if(function_exists('gzencode'))$L['gz']='gzip';return$L;}function -dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function -dumpDatabase($j){}function -dumpTable($R,$Ah,$be=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Ah)dump_csv(array_keys(fields($R)));}else{if($be==2){$n=array();foreach(fields($R)as$E=>$m)$n[]=idf_escape($E)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$Ah);set_utf8mb4($h);if($Ah&&$h){if($Ah=="DROP+CREATE"||$be==1)echo"DROP ".($be==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($be==1)$h=remove_definer($h);echo"$h;\n\n";}}}function -dumpData($R,$Ah,$J){if($Ah){$Ee=(JUSH=="sqlite"?0:1048576);$n=array();$_d=false;if($_POST["format"]=="sql"){if($Ah=="TRUNCATE+INSERT")echo -truncate_sql($R).";\n";$n=fields($R);if(JUSH=="mssql"){foreach($n -as$m){if($m["auto_increment"]){echo"SET IDENTITY_INSERT ".table($R)." ON;\n";$_d=true;break;}}}}$K=connection()->query($J,1);if($K){$Qd="";$La="";$ee=array();$cd=array();$Ch="";$Jc=($R!=''?'fetch_assoc':'fetch_row');$tb=0;while($M=$K->$Jc()){if(!$ee){$Ii=array();foreach($M -as$X){$m=$K->fetch_field();if(idx($n[$m->name],'generated')){$cd[$m->name]=true;continue;}$ee[]=$m->name;$z=idf_escape($m->name);$Ii[]="$z = VALUES($z)";}$Ch=($Ah=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ii):"").";\n";}if($_POST["format"]!="sql"){if($Ah=="table"){dump_csv($ee);$Ah="INSERT";}dump_csv($M);}else{if(!$Qd)$Qd="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$ee)).") VALUES";foreach($M -as$z=>$X){if($cd[$z]){unset($M[$z]);continue;}$m=$n[$z];$M[$z]=($X!==null?unconvert_field($m,preg_match(number_type(),$m["type"])&&!preg_match('~\[~',$m["full_type"])&&is_numeric($X)?$X:q(($X===false?0:$X))):"NULL");}$Rg=($Ee?"\n":" ")."(".implode(",\t",$M).")";if(!$La)$La=$Qd.$Rg;elseif(JUSH=='mssql'?$tb%1000!=0:strlen($La)+4+strlen($Rg)+strlen($Ch)<$Ee)$La -.=",$Rg";else{echo$La.$Ch;$La=$Qd.$Rg;}}$tb++;}if($La)echo$La.$Ch;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($_d)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function -dumpFilename($zd){return -friendly_url($zd!=""?$zd:(SERVER?:"localhost"));}function -dumpHeaders($zd,$Ve=false){$Jf=$_POST["output"];$Bc=(preg_match('~sql~',$_POST["format"])?"sql":($Ve?"tar":"csv"));header("Content-Type: ".($Jf=="gz"?"application/x-gzip":($Bc=="tar"?"application/x-tar":($Bc=="sql"||$Jf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($Jf=="gz"){ob_start(function($zh){return -gzencode($zh);},1e6);}return$Bc;}function -dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function -importServerPath(){return"adminer.sql";}function -homepage(){echo'

".adminer()->name()." ".VERSION;$df=$_COOKIE["adminer_version"];echo" ".(version_compare(VERSION,$df)<0?h($df):"")."","

\n";switch_lang();if($Se=="auth"){$Jf="";foreach((array)$_SESSION["pwds"]as$Ki=>$fh){foreach($fh -as$P=>$Gi){$E=h(get_setting("vendor-$Ki-$P")?:get_driver($Ki));foreach($Gi -as$V=>$H){if($H!==null){$Gb=$_SESSION["db"][$Ki][$P][$V];foreach(($Gb?array_keys($Gb):array(""))as$j)$Jf -.="
  • ($E) ".h("$V@".($P!=""?adminer()->serverName($P):"").($j!=""?" - $j":""))."\n";}}}}if($Jf)echo"
      \n$Jf
    \n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$Se&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($Se);$ha=array();if(DB==""||!$Se){if(support("sql")){$ha[]="".lang(55)."";$ha[]="".lang(66)."";}$ha[]="".lang(67)."";}$Ed=$_GET["ns"]!==""&&!$Se&&DB!="";if($Ed)$ha[]='".lang(68)."";echo($ha?"

    ".lang(11)."

    \n";}}}function -syntaxHighlighting(array$T){echo -script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.4.1",true);if(support("sql")){echo"\n";if($T){$ve=array();foreach($T -as$R=>$U)$ve[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.":";json_row(js_escape(ME).(support("table")?"table":"select").'=$&','/\b('.implode('|',$ve).')\b/g',false);if(support('routine')){foreach(routines()as$M)json_row(js_escape(ME).'function='.urlencode($M["SPECIFIC_NAME"]).'&name=$&','/\b'.preg_quote($M["ROUTINE_NAME"],'/').'(?=["`]?\()/g',false);}json_row('');echo"};\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.".JUSH.";\n";if(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"])){$Lh=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n -as$m)$Lh[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($Lh)."); });\n";}}echo"\n";}echo -script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function -databasesPrint($Se){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"
    \n

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

    \n";}function -tablesPrint(array$T){echo"
      ".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T -as$R=>$wh){$R="$R";$E=adminer()->tableName($wh);if($E!=""&&!$wh["partition"])echo'
    • ".lang(70)." ",(support("table")||support("indexes")?'$E":"$E")."\n";}echo"
    \n";}function -processList(){return -process_list();}function -killProcess($u){return -kill_process($u);}}class -Plugins{private -static$append=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function -__construct($eg){if($eg===null){$eg=array();$Fa="adminer-plugins";if(is_dir($Fa)){foreach(glob("$Fa/*.php")as$o)$Fd=include_once"./$o";}$rd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Fa.php")){$Fd=include_once"./$Fa.php";if(is_array($Fd)){foreach($Fd -as$dg)$eg[get_class($dg)]=$dg;}else$this->error -.=lang(71,"$Fa.php",$rd)."
    ";}foreach(get_declared_classes()as$Ya){if(!$eg[$Ya]&&preg_match('~^Adminer\w~i',$Ya)){$Eg=new -\ReflectionClass($Ya);$nb=$Eg->getConstructor();if($nb&&$nb->getNumberOfRequiredParameters())$this->error -.=lang(72,$rd,"$Ya","$Fa.php")."
    ";else$eg[$Ya]=new$Ya;}}}$this->plugins=$eg;$ia=new -Adminer;$eg[]=$ia;$Eg=new -\ReflectionObject($ia);foreach($Eg->getMethods()as$Qe){foreach($eg -as$dg){$E=$Qe->getName();if(method_exists($dg,$E))$this->hooks[$E][]=$dg;}}}function -__call($E,array$Nf){$sa=array();foreach($Nf -as$z=>$X)$sa[]=&$Nf[$z];$L=null;foreach($this->hooks[$E]as$dg){$Y=call_user_func_array(array($dg,$E),$sa);if($Y!==null){if(!self::$append[$E])return$Y;$L=$Y+(array)$L;}}return$L;}}abstract -class -Plugin{protected$translations=array();function -description(){return$this->lang('');}function -screenshot(){return"";}protected -function -lang($v,$F=null){$sa=func_get_args();$sa[0]=idx($this->translations[LANG],$v)?:$v;return -call_user_func_array('Adminer\lang_format',$sa);}}Adminer::$instance=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new -Plugins(null):new -Adminer));SqlDriver::$drivers=array("server"=>"MySQL / MariaDB")+SqlDriver::$drivers;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class -Db -extends -\MySQLi{static$instance;var$extension="MySQLi",$flavor='';function -__construct(){parent::init();}function -attach($P,$V,$H){mysqli_report(MYSQLI_REPORT_OFF);list($vd,$fg)=host_port($P);$uh=adminer()->connectSsl();if($uh)$this->ssl_set($uh['key'],$uh['cert'],$uh['ca'],'','');$L=@$this->real_connect(($P!=""?$vd:ini_get("mysqli.default_host")),($P.$V!=""?$V:ini_get("mysqli.default_user")),($P.$V.$H!=""?$H:ini_get("mysqli.default_pw")),null,(is_numeric($fg)?intval($fg):ini_get("mysqli.default_port")),(is_numeric($fg)?null:$fg),($uh?($uh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,0);return($L?'':$this->error);}function -set_charset($Ra){if(parent::set_charset($Ra))return -true;parent::set_charset('utf8');return$this->query("SET NAMES $Ra");}function -next_result(){return -self::more_results()&&parent::next_result();}function -quote($zh){return"'".$this->escape_string($zh)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class -Db -extends -SqlDb{private$link;function -attach($P,$V,$H){if(ini_bool("mysql.allow_local_infile"))return -lang(73,"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($P!=""?$P:ini_get("mysql.default_host")),($P.$V!=""?$V:ini_get("mysql.default_user")),($P.$V.$H!=""?$H:ini_get("mysql.default_password")),true,131072);if(!$this->link)return -mysql_error();$this->server_info=mysql_get_server_info($this->link);return'';}function -set_charset($Ra){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Ra,$this->link))return -true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Ra");}function -quote($zh){return"'".mysql_real_escape_string($zh,$this->link)."'";}function -select_db($Db){return -mysql_select_db($Db,$this->link);}function -query($J,$ri=false){$K=@($ri?mysql_unbuffered_query($J,$this->link):mysql_query($J,$this->link));$this->error="";if(!$K){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return -false;}if($K===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return -true;}return -new -Result($K);}}class -Result{var$num_rows;private$result;private$offset=0;function -__construct($K){$this->result=$K;$this->num_rows=mysql_num_rows($K);}function -fetch_assoc(){return -mysql_fetch_assoc($this->result);}function -fetch_row(){return -mysql_fetch_row($this->result);}function -fetch_field(){$L=mysql_fetch_field($this->result,$this->offset++);$L->orgtable=$L->table;$L->charsetnr=($L->blob?63:0);return$L;}function -__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class -Db -extends -PdoDb{var$extension="PDO_MySQL";function -attach($P,$V,$H){$wf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$uh=adminer()->connectSsl();if($uh){if($uh['key'])$wf[\PDO::MYSQL_ATTR_SSL_KEY]=$uh['key'];if($uh['cert'])$wf[\PDO::MYSQL_ATTR_SSL_CERT]=$uh['cert'];if($uh['ca'])$wf[\PDO::MYSQL_ATTR_SSL_CA]=$uh['ca'];if(isset($uh['verify']))$wf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$uh['verify'];}list($vd,$fg)=host_port($P);return$this->dsn("mysql:charset=utf8;host=$vd".($fg?(is_numeric($fg)?";port=":";unix_socket=").$fg:""),$V,$H,$wf);}function -set_charset($Ra){return$this->query("SET NAMES $Ra");}function -select_db($Db){return$this->query("USE ".idf_escape($Db));}function -query($J,$ri=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$ri);return -parent::query($J,$ri);}}}class -Driver -extends -SqlDriver{static$extensions=array("MySQLi","MySQL","PDO_MySQL");static$jush="sql";var$unsigned=array("unsigned","zerofill","unsigned zerofill");var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","FIND_IN_SET","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");var$functions=array("char_length","date","from_unixtime","lower","round","floor","ceil","sec_to_time","time_to_sec","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static -function -connect($P,$V,$H){$f=parent::connect($P,$V,$H);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($Rg=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$Rg;return$f;}$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");$f->flavor=(preg_match('~MariaDB~',$f->server_info)?'maria':'mysql');add_driver(DRIVER,($f->flavor=='maria'?"MariaDB":"MySQL"));return$f;}function -__construct(Db$f){parent::__construct($f);$this->types=array(lang(74)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),lang(75)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),lang(76)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),lang(77)=>array("enum"=>65535,"set"=>64),lang(78)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),lang(79)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),);$this->insertFunctions=array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",);if(min_version('5.7.8',10.2,$f))$this->types[lang(76)]["json"]=4294967295;if(min_version('',10.7,$f)){$this->types[lang(76)]["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types[lang(74)]["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.1,'',$f))$this->partitionBy=array("HASH","LINEAR HASH","KEY","LINEAR KEY","RANGE","LIST");if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function -unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"UNHEX":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"b''"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"GeomFromText":"")));}function -insert($R,array$Q){return($Q?parent::insert($R,$Q):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function -insertUpdate($R,array$N,array$ng){$d=array_keys(reset($N));$lg="INSERT INTO ".table($R)." (".implode(", ",$d).") VALUES\n";$Ii=array();foreach($d -as$z)$Ii[$z]="$z = VALUES($z)";$Ch="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ii);$Ii=array();$re=0;foreach($N -as$Q){$Y="(".implode(", ",$Q).")";if($Ii&&(strlen($lg)+$re+strlen($Y)+strlen($Ch)>1e6)){if(!queries($lg.implode(",\n",$Ii).$Ch))return -false;$Ii=array();$re=0;}$Ii[]=$Y;$re+=strlen($Y)+2;}return -queries($lg.implode(",\n",$Ii).$Ch);}function -slowQuery($J,$Wh){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$Wh FOR $J";elseif(preg_match('~^(SELECT\b)(.+)~is',$J,$C))return"$C[1] /*+ MAX_EXECUTION_TIME(".($Wh*1000).") */ $C[2]";}}function -convertSearch($v,array$X,array$m){return(preg_match('~char|text|enum|set~',$m["type"])&&!preg_match("~^utf8~",$m["collation"])&&preg_match('~[\x80-\xFF]~',$X['val'])?"CONVERT($v USING ".charset($this->conn).")":$v);}function -warnings(){$K=$this->conn->query("SHOW WARNINGS");if($K&&$K->num_rows){ob_start();print_select_result($K);return -ob_get_clean();}}function -tableHelp($E,$be=false){$ye=($this->conn->flavor=='maria');if(information_schema(DB))return -strtolower("information-schema-".($ye?"$E-table/":str_replace("_","-",$E)."-table.html"));if(DB=="mysql")return($ye?"mysql$E-table/":"system-schema.html");}function -partitionsInfo($R){$Zc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$K=$this->conn->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $Zc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$L=array();list($L["partition_by"],$L["partition"],$L["partitions"])=$K->fetch_row();$Vf=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Zc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$L["partition_names"]=array_keys($Vf);$L["partition_values"]=array_values($Vf);return$L;}function -hasCStyleEscapes(){static$Ma;if($Ma===null){$th=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Ma=(strpos($th,'NO_BACKSLASH_ESCAPES')===false);}return$Ma;}function -engines(){$L=array();foreach(get_rows("SHOW ENGINES")as$M){if(preg_match("~YES|DEFAULT~",$M["Support"]))$L[]=$M["Engine"];}return$L;}function -indexAlgorithms(array$Gh){return(preg_match('~^(MEMORY|NDB)$~',$Gh["Engine"])?array("HASH","BTREE"):array());}}function -idf_escape($v){return"`".str_replace("`","``",$v)."`";}function -table($v){return -idf_escape($v);}function -get_databases($Rc){$L=get_session("dbs");if($L===null){$J="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$L=($Rc?slow_query($J):get_vals($J));restart_session();set_session("dbs",$L);stop_session();}return$L;}function -limit($J,$Z,$_,$jf=0,$dh=" "){return" $J$Z".($_?$dh."LIMIT $_".($jf?" OFFSET $jf":""):"");}function -limit1($R,$J,$Z,$dh="\n"){return -limit($J,$Z,1,0,$dh);}function -db_collation($j,array$b){$L=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$C))$L=$C[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$C))$L=$b[$C[1]][-1];return$L;}function -logged_user(){return -get_val("SELECT USER()");}function -tables_list(){return -get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function -count_tables(array$i){$L=array();foreach($i -as$j)$L[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$L;}function -table_status($E="",$Hc=false){$L=array();foreach(get_rows($Hc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($E!=""?"AND TABLE_NAME = ".q($E):"ORDER BY Name"):"SHOW TABLE STATUS".($E!=""?" LIKE ".q(addcslashes($E,"%_\\")):""))as$M){if($M["Engine"]=="InnoDB")$M["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$M["Comment"]);if(!isset($M["Engine"]))$M["Comment"]="";if($E!="")$M["Name"]=$E;$L[$M["Name"]]=$M;}return$L;}function -is_view(array$S){return$S["Engine"]===null;}function -fk_support(array$S){return -preg_match('~InnoDB|IBMDB2I'.(min_version(5.6)?'|NDB':'').'~i',$S["Engine"]);}function -fields($R){$ye=(connection()->flavor=='maria');$L=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$M){$m=$M["COLUMN_NAME"];$U=$M["COLUMN_TYPE"];$dd=$M["GENERATION_EXPRESSION"];$Ec=$M["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Ec,$cd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$_e);$k=$M["COLUMN_DEFAULT"];if($k!=""){$ae=preg_match('~text|json~',$_e[1]);if(!$ye&&$ae)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($ye||$ae){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($C){return -stripslashes(str_replace("''","'",$C[1]));},$k));}if(!$ye&&preg_match('~binary~',$_e[1])&&preg_match('~^0x(\w*)$~',$k,$C))$k=pack("H*",$C[1]);}$L[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$_e[1],"length"=>$_e[2],"unsigned"=>ltrim($_e[3].$_e[4]),"default"=>($cd?($ye?$dd:stripslashes($dd)):$k),"null"=>($M["IS_NULLABLE"]=="YES"),"auto_increment"=>($Ec=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Ec,$C)?$C[1]:""),"collation"=>$M["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$M[PRIVILEGES],where,order")),"comment"=>$M["COLUMN_COMMENT"],"primary"=>($M["COLUMN_KEY"]=="PRI"),"generated"=>($cd[1]=="PERSISTENT"?"STORED":$cd[1]),);}return$L;}function -indexes($R,$g=null){$L=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$M){$E=$M["Key_name"];$L[$E]["type"]=($E=="PRIMARY"?"PRIMARY":($M["Index_type"]=="FULLTEXT"?"FULLTEXT":($M["Non_unique"]?($M["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$L[$E]["columns"][]=$M["Column_name"];$L[$E]["lengths"][]=($M["Index_type"]=="SPATIAL"?null:$M["Sub_part"]);$L[$E]["descs"][]=null;$L[$E]["algorithm"]=$M["Index_type"];}return$L;}function -foreign_keys($R){static$Zf='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$L=array();$ub=get_val("SHOW CREATE TABLE ".table($R),1);if($ub){preg_match_all("~CONSTRAINT ($Zf) FOREIGN KEY ?\\(((?:$Zf,? ?)+)\\) REFERENCES ($Zf)(?:\\.($Zf))? \\(((?:$Zf,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$ub,$Ae,PREG_SET_ORDER);foreach($Ae -as$C){preg_match_all("~$Zf~",$C[2],$oh);preg_match_all("~$Zf~",$C[5],$Ph);$L[idf_unescape($C[1])]=array("db"=>idf_unescape($C[4]!=""?$C[3]:$C[4]),"table"=>idf_unescape($C[4]!=""?$C[4]:$C[3]),"source"=>array_map('Adminer\idf_unescape',$oh[0]),"target"=>array_map('Adminer\idf_unescape',$Ph[0]),"on_delete"=>($C[6]?:"RESTRICT"),"on_update"=>($C[7]?:"RESTRICT"),);}}return$L;}function -view($E){return -array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($E),1)));}function -collations(){$L=array();foreach(get_rows("SHOW COLLATION")as$M){if($M["Default"])$L[$M["Charset"]][-1]=$M["Collation"];else$L[$M["Charset"]][]=$M["Collation"];}ksort($L);foreach($L -as$z=>$X)sort($L[$z]);return$L;}function -information_schema($j){return($j=="information_schema")||(min_version(5.5)&&$j=="performance_schema");}function -error(){return -h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",connection()->error));}function -create_database($j,$db){return -queries("CREATE DATABASE ".idf_escape($j).($db?" COLLATE ".q($db):""));}function -drop_databases(array$i){$L=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$L;}function -rename_database($E,$db){$L=false;if(create_database($E,$db)){$T=array();$Ni=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$Ni[]=$R;else$T[]=$R;}$L=(!$T&&!$Ni)||move_tables($T,$Ni,$E);drop_databases($L?array(DB):array());}return$L;}function -auto_increment(){$za=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$w){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$w["columns"],true)){$za="";break;}if($w["type"]=="PRIMARY")$za=" UNIQUE";}}return" AUTO_INCREMENT$za";}function -alter_table($R,$E,array$n,array$Tc,$hb,$lc,$db,$ya,$Uf){$qa=array();foreach($n -as$m){if($m[1]){$k=$m[1][3];if(preg_match('~ GENERATED~',$k)){$m[1][3]=(connection()->flavor=='maria'?"":$m[1][2]);$m[1][2]=$k;}$qa[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$qa[]="DROP ".idf_escape($m[0]);}$qa=array_merge($qa,$Tc);$wh=($hb!==null?" COMMENT=".q($hb):"").($lc?" ENGINE=".q($lc):"").($db?" COLLATE ".q($db):"").($ya!=""?" AUTO_INCREMENT=$ya":"");if($Uf){$Vf=array();if($Uf["partition_by"]=='RANGE'||$Uf["partition_by"]=='LIST'){foreach($Uf["partition_names"]as$z=>$X){$Y=$Uf["partition_values"][$z];$Vf[]="\n PARTITION ".idf_escape($X)." VALUES ".($Uf["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$wh -.="\nPARTITION BY $Uf[partition_by]($Uf[partition])";if($Vf)$wh -.=" (".implode(",",$Vf)."\n)";elseif($Uf["partitions"])$wh -.=" PARTITIONS ".(+$Uf["partitions"]);}elseif($Uf===null)$wh -.="\nREMOVE PARTITIONING";if($R=="")return -queries("CREATE TABLE ".table($E)." (\n".implode(",\n",$qa)."\n)$wh");if($R!=$E)$qa[]="RENAME TO ".table($E);if($wh)$qa[]=ltrim($wh);return($qa?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$qa)):true);}function -alter_indexes($R,$qa){$Qa=array();foreach($qa -as$X)$Qa[]=($X[2]=="DROP"?"\nDROP INDEX ".idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return -queries("ALTER TABLE ".table($R).implode(",",$Qa));}function -truncate_tables(array$T){return -apply_queries("TRUNCATE TABLE",$T);}function -drop_views(array$Ni){return -queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$Ni)));}function -drop_tables(array$T){return -queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function -move_tables(array$T,array$Ni,$Ph){$Hg=array();foreach($T -as$R)$Hg[]=table($R)." TO ".idf_escape($Ph).".".table($R);if(!$Hg||queries("RENAME TABLE ".implode(", ",$Hg))){$Mb=array();foreach($Ni -as$R)$Mb[table($R)]=view($R);connection()->select_db($Ph);$j=idf_escape(DB);foreach($Mb -as$E=>$Mi){if(!queries("CREATE VIEW $E AS ".str_replace(" $j."," ",$Mi["select"]))||!queries("DROP VIEW $j.$E"))return -false;}return -true;}return -false;}function -copy_tables(array$T,array$Ni,$Ph){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T -as$R){$E=($Ph==DB?table("copy_$R"):idf_escape($Ph).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $E"))||!queries("CREATE TABLE $E LIKE ".table($R))||!queries("INSERT INTO $E SELECT * FROM ".table($R)))return -false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M){$li=$M["Trigger"];if(!queries("CREATE TRIGGER ".($Ph==DB?idf_escape("copy_$li"):idf_escape($Ph).".".idf_escape($li))." $M[Timing] $M[Event] ON $E FOR EACH ROW\n$M[Statement];"))return -false;}}foreach($Ni -as$R){$E=($Ph==DB?table("copy_$R"):idf_escape($Ph).".".table($R));$Mi=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $E"))||!queries("CREATE VIEW $E AS $Mi[select]"))return -false;}return -true;}function -trigger($E,$R){if($E=="")return -array();$N=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($E));return -reset($N);}function -triggers($R){$L=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$M)$L[$M["Trigger"]]=array($M["Timing"],$M["Event"]);return$L;}function -trigger_options(){return -array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function -routine($E,$U){$oa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ph="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$nc=driver()->enumLength;$pi="((".implode("|",array_merge(array_keys(driver()->types()),$oa)).")\\b(?:\\s*\\(((?:[^'\")]|$nc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?(?:\\s*COLLATE\\s*['\"]?[^'\"\\s,]+['\"]?)?";$Zf="$ph*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$pi";$h=get_val("SHOW CREATE $U ".idf_escape($E),2);preg_match("~\\(((?:$Zf\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$pi\\s+":"")."(.*)~is",$h,$C);$n=array();preg_match_all("~$Zf\\s*,?~is",$C[1],$Ae,PREG_SET_ORDER);foreach($Ae -as$Mf)$n[]=array("field"=>str_replace("``","`",$Mf[2]).$Mf[3],"type"=>strtolower($Mf[5]),"length"=>preg_replace_callback("~$nc~s",'Adminer\normalize_enum',$Mf[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$Mf[8] $Mf[7]"))),"null"=>true,"full_type"=>$Mf[4],"inout"=>strtoupper($Mf[1]),"collation"=>strtolower($Mf[9]),);return -array("fields"=>$n,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($E)),)+($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 SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function -routine_languages(){return -array();}function -routine_id($E,array$M){return -idf_escape($E);}function -last_id($K){return -get_val("SELECT LAST_INSERT_ID()");}function -explain(Db$f,$J){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$J);}function -found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function -create_sql($R,$ya,$Ah){$L=get_val("SHOW CREATE TABLE ".table($R),1);if(!$ya)$L=preg_replace('~ AUTO_INCREMENT=\d+~','',$L);return$L;}function -truncate_sql($R){return"TRUNCATE ".table($R);}function -use_sql($Db,$Ah=""){$E=idf_escape($Db);$L="";if(preg_match('~CREATE~',$Ah)&&($h=get_val("SHOW CREATE DATABASE $E",1))){set_utf8mb4($h);if($Ah=="DROP+CREATE")$L="DROP DATABASE IF EXISTS $E;\n";$L -.="$h;\n";}return$L."USE $E";}function -trigger_sql($R){$L="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$M)$L -.="\nCREATE TRIGGER ".idf_escape($M["Trigger"])." $M[Timing] $M[Event] ON ".table($M["Table"])." FOR EACH ROW\n$M[Statement];;\n";return$L;}function -show_variables(){return -get_rows("SHOW VARIABLES");}function -show_status(){return -get_rows("SHOW STATUS");}function -process_list(){return -get_rows("SHOW FULL PROCESSLIST");}function -convert_field(array$m){if(preg_match("~binary~",$m["type"]))return"HEX(".idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return(min_version(8)?"ST_":"")."AsWKT(".idf_escape($m["field"]).")";}function -unconvert_field(array$m,$L){if(preg_match("~binary~",$m["type"]))$L="UNHEX($L)";if($m["type"]=="bit")$L="CONVERT(b$L, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$lg=(min_version(8)?"ST_":"");$L=$lg."GeomFromText($L, $lg"."SRID($m[field]))";}return$L;}function -support($Ic){return -preg_match('~^(comment|columns|copy|database|drop_col|dump|indexes|kill|privileges|move_col|procedure|processlist|routine|sql|status|table|trigger|variables|view'.(min_version(5.1)?'|event':'').(min_version(8)?'|descidx':'').(min_version('8.0.16','10.2.1')?'|check':'').')$~',$Ic);}function -kill_process($u){return -queries("KILL ".number($u));}function -connection_id(){return"SELECT CONNECTION_ID()";}function -max_connections(){return -get_val("SELECT @@max_connections");}function -types(){return -array();}function -type_values($u){return"";}function -schemas(){return -array();}function -get_schema(){return"";}function -set_schema($Tg,$g=null){return -true;}}define('Adminer\JUSH',Driver::$jush);define('Adminer\SERVER',"".$_GET[DRIVER]);define('Adminer\DB',"$_GET[db]");define('Adminer\ME',preg_replace('~\?.*~','',relative_uri()).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').($_GET["ext"]?"ext=".urlencode($_GET["ext"]).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));function -page_header($Yh,$l="",$Ka=array(),$Zh=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$ai=$Yh.($Zh!=""?": $Zh":"");$bi=strip_tags($ai.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo' - - - - -',$bi,' - -';$yb=adminer()->css();if(is_int(key($yb)))$yb=array_fill_keys($yb,'light');$od=in_array('light',$yb)||in_array('',$yb);$md=in_array('dark',$yb)||in_array('',$yb);$Ab=($od?($md?null:false):($md?:null));$Ke=" media='(prefers-color-scheme: dark)'";if($Ab!==false)echo"\n";echo"\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.4.1");if(adminer()->head($Ab))echo"\n","\n";foreach($yb -as$Bi=>$Te){$wa=($Te=='dark'&&!$Ab?$Ke:($Te=='light'&&$md?" media='(prefers-color-scheme: light)'":""));echo"\n";}echo"\n\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$Li=unserialize(file_get_contents($o));$ug="-----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($Li["version"],base64_decode($Li["signature"]),$ug)==1)$_COOKIE["adminer_version"]=$Li["version"];}echo -script("mixin(document.body, {onkeydown: bodyKeydown, onclick: bodyClick".(isset($_COOKIE["adminer_version"])?"":", onload: partial(verifyVersion, '".VERSION."', '".js_escape(ME)."', '".get_token()."')")."}); -document.body.classList.replace('nojs', 'js'); -const offlineMessage = '".js_escape(lang(81))."'; -const thousandsSeparator = '".js_escape(lang(4))."';"),"\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"
    \n","".icon("move","","menu","")."".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ka!==null){$A=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'

    $ai

    \n","\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function -page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$xb){$pd=array();foreach($xb -as$z=>$X)$pd[]="$z $X";header("Content-Security-Policy: ".implode("; ",$pd));}adminer()->headers();}function -csp(){return -array(array("script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self'","frame-src"=>"https://www.adminer.org","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",),);}function -get_nonce(){static$ff;if(!$ff)$ff=base64_encode(rand_string());return$ff;}function -page_messages($l){$Ai=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Pe=idx($_SESSION["messages"],$Ai);if($Pe){echo"
    ".implode("
    \n
    ",$Pe)."
    ".script("messagesPrint();");unset($_SESSION["messages"][$Ai]);}if($l)echo"
    $l
    \n";if(adminer()->error)echo"
    ".adminer()->error."
    \n";}function -page_footer($Se=""){echo"
    \n\n\n\n",script("setupSubmitHighlight(document);");}function -int32($Xe){while($Xe>=2147483648)$Xe-=4294967296;while($Xe<=-2147483649)$Xe+=4294967296;return(int)$Xe;}function -long2str(array$W,$Pi){$Rg='';foreach($W -as$X)$Rg -.=pack('V',$X);if($Pi)return -substr($Rg,0,end($W));return$Rg;}function -str2long($Rg,$Pi){$W=array_values(unpack('V*',str_pad($Rg,4*ceil(strlen($Rg)/4),"\0")));if($Pi)$W[]=strlen($Rg);return$W;}function -xxtea_mx($Wi,$Vi,$Dh,$de){return -int32((($Wi>>5&0x7FFFFFF)^$Vi<<2)+(($Vi>>3&0x1FFFFFFF)^$Wi<<4))^int32(($Dh^$Vi)+($de^$Wi));}function -encrypt_string($yh,$z){if($yh=="")return"";$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($yh,true);$Xe=count($W)-1;$Wi=$W[$Xe];$Vi=$W[0];$I=floor(6+52/($Xe+1));$Dh=0;while($I-->0){$Dh=int32($Dh+0x9E3779B9);$cc=$Dh>>2&3;for($Kf=0;$Kf<$Xe;$Kf++){$Vi=$W[$Kf+1];$We=xxtea_mx($Wi,$Vi,$Dh,$z[$Kf&3^$cc]);$Wi=int32($W[$Kf]+$We);$W[$Kf]=$Wi;}$Vi=$W[0];$We=xxtea_mx($Wi,$Vi,$Dh,$z[$Kf&3^$cc]);$Wi=int32($W[$Xe]+$We);$W[$Xe]=$Wi;}return -long2str($W,false);}function -decrypt_string($yh,$z){if($yh=="")return"";if(!$z)return -false;$z=array_values(unpack("V*",pack("H*",md5($z))));$W=str2long($yh,false);$Xe=count($W)-1;$Wi=$W[$Xe];$Vi=$W[0];$I=floor(6+52/($Xe+1));$Dh=int32($I*0x9E3779B9);while($Dh){$cc=$Dh>>2&3;for($Kf=$Xe;$Kf>0;$Kf--){$Wi=$W[$Kf-1];$We=xxtea_mx($Wi,$Vi,$Dh,$z[$Kf&3^$cc]);$Vi=int32($W[$Kf]-$We);$W[$Kf]=$Vi;}$Wi=$W[$Xe];$We=xxtea_mx($Wi,$Vi,$Dh,$z[$Kf&3^$cc]);$Vi=int32($W[0]-$We);$W[0]=$Vi;$Dh=int32($Dh-0x9E3779B9);}return -long2str($W,true);}$bg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($z)=explode(":",$X);$bg[$z]=$X;}}function -add_invalid_login(){$Da=get_temp_dir()."/adminer.invalid";foreach(glob("$Da*")?:array($Da)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Da-".rand_string());if(!$q)return;$Vd=unserialize(stream_get_contents($q));$Vh=time();if($Vd){foreach($Vd -as$Wd=>$X){if($X[0]<$Vh)unset($Vd[$Wd]);}}$Ud=&$Vd[adminer()->bruteForceKey()];if(!$Ud)$Ud=array($Vh+30*60,0);$Ud[1]++;file_write_unlock($q,serialize($Vd));}function -check_invalid_login(array&$bg){$Vd=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$Vd=unserialize(stream_get_contents($q));file_unlock($q);break;}}$Ud=idx($Vd,adminer()->bruteForceKey(),array());$ef=($Ud[1]>29?$Ud[0]-time():0);if($ef>0)auth_error(lang(83,ceil($ef/60)),$bg);}$xa=$_POST["auth"];if($xa){session_regenerate_id();$Ki=$xa["driver"];$P=$xa["server"];$V=$xa["username"];$H=(string)$xa["password"];$j=$xa["db"];set_password($Ki,$P,$V,$H);$_SESSION["db"][$Ki][$P][$V][$j]=true;if($xa["permanent"]){$z=implode("-",array_map('base64_encode',array($Ki,$P,$V,$j)));$pg=adminer()->permanentLogin(true);$bg[$z]="$z:".base64_encode($pg?encrypt_string($H,$pg):"");cookie("adminer_permanent",implode(" ",$bg));}if(count($_POST)==1||DRIVER!=$Ki||SERVER!=$P||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($Ki,$P,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$z)set_session($z,null);unset_permanent($bg);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),lang(84).' '.lang(85));}elseif($bg&&!$_SESSION["pwds"]){session_regenerate_id();$pg=adminer()->permanentLogin();foreach($bg -as$z=>$X){list(,$Xa)=explode(":",$X);list($Ki,$P,$V,$j)=array_map('base64_decode',explode("-",$z));set_password($Ki,$P,$V,decrypt_string(base64_decode($Xa),$pg));$_SESSION["db"][$Ki][$P][$V][$j]=true;}}function -unset_permanent(array&$bg){foreach($bg -as$z=>$X){list($Ki,$P,$V,$j)=array_map('base64_decode',explode("-",$z));if($Ki==DRIVER&&$P==SERVER&&$V==$_GET["username"]&&$j==DB)unset($bg[$z]);}cookie("adminer_permanent",implode(" ",$bg));}function -auth_error($l,array&$bg){$gh=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$gh]||$_GET[$gh])&&!$_SESSION["token"])$l=lang(86);else{restart_session();add_invalid_login();$H=get_password();if($H!==null){if($H===false)$l -.=($l?'
    ':'').lang(87,target_blank(),'permanentLogin()');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($bg);}}if(!$_COOKIE[$gh]&&$_GET[$gh]&&ini_bool("session.use_only_cookies"))$l=lang(88);$Nf=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$Nf["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(29),$l,null);echo"
    \n","
    ";if(hidden_fields($_POST,array("auth")))echo"

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

    \n";adminer()->loginForm();echo"
    \n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($bg);page_header(lang(90),lang(91,implode(", ",Driver::$extensions)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list(,$fg)=host_port(SERVER);if(preg_match('~^\s*([-+]?\d+)~',$fg,$C)&&($C[1]<1024||$C[1]>65535))auth_error(lang(92),$bg);check_invalid_login($bg);$wb=adminer()->credentials();$f=Driver::connect($wb[0],$wb[1],$wb[2]);if(is_object($f)){Db::$instance=$f;Driver::$instance=new -Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$we=null;if(!is_object($f)||($we=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($we)?$we:lang(93))).(preg_match('~^ | $~',get_password())?'
    '.lang(94):'');auth_error($l,$bg);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header(lang(82),lang(95));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($xa&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$Nd="max_input_vars";$Ie=ini_get($Nd);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$z){$X=ini_get($z);if($X&&(!$Ie||$X<$Ie)){$Nd=$z;$Ie=$X;}}}$l=(!$_POST["token"]&&$Ie?lang(96,"'$Nd'"):lang(95).' '.lang(97));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=lang(98,"'post_max_size'");if(isset($_GET["sql"]))$l -.=' '.lang(99);}function -print_select_result($K,$g=null,array$Bf=array(),$_=0){$ve=array();$x=array();$d=array();$Ia=array();$qi=array();$L=array();for($t=0;(!$_||$t<$_)&&($M=$K->fetch_row());$t++){if(!$t){echo"
    \n","\n","";for($y=0;$yfetch_field();$E=$m->name;$Af=(isset($m->orgtable)?$m->orgtable:"");$_f=(isset($m->orgname)?$m->orgname:$E);if($Bf&&JUSH=="sql")$ve[$y]=($E=="table"?"table=":($E=="possible_keys"?"indexes=":null));elseif($Af!=""){if(isset($m->table))$L[$m->table]=$Af;if(!isset($x[$Af])){$x[$Af]=array();foreach(indexes($Af,$g)as$w){if($w["type"]=="PRIMARY"){$x[$Af]=array_flip($w["columns"]);break;}}$d[$Af]=$x[$Af];}if(isset($d[$Af][$_f])){unset($d[$Af][$_f]);$x[$Af][$_f]=$y;$ve[$y]=$Af;}}if($m->charsetnr==63)$Ia[$y]=true;$qi[$y]=$m->type;echo"name!=$_f?" title='".h(($Af!=""?"$Af.":"").$_f)."'":"").">".h($E).($Bf?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($E),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"\n";}echo"";foreach($M -as$z=>$X){$A="";if(isset($ve[$z])&&!$d[$ve[$z]]){if($Bf&&JUSH=="sql"){$R=$M[array_search("table=",$ve)];$A=ME.$ve[$z].urlencode($Bf[$R]!=""?$Bf[$R]:$R);}else{$A=ME."edit=".urlencode($ve[$z]);foreach($x[$ve[$z]]as$bb=>$y){if($M[$y]===null){$A="";break;}$A -.="&where".urlencode("[".bracket_escape($bb)."]")."=".urlencode($M[$y]);}}}elseif(is_url($X))$A=$X;if($X===null)$X="NULL";elseif($Ia[$z]&&!is_utf8($X))$X="".lang(38,strlen($X))."";else{$X=h($X);if($qi[$z]==254)$X="$X";}if($A)$X="$X";echo"$X";}}echo($t?"
    \n
    ":"

    ".lang(14))."\n";return$L;}function -referencable_primary($bh){$L=array();foreach(table_status('',true)as$Hh=>$R){if($Hh!=$bh&&fk_support($R)){foreach(fields($Hh)as$m){if($m["primary"]){if($L[$Hh]){unset($L[$Hh]);break;}$L[$Hh]=$m;}}}}return$L;}function -textarea($E,$Y,$N=10,$eb=80){echo"";}function -select_input($wa,array$wf,$Y="",$rf="",$cg=""){$Oh=($wf?"select":"input");return"<$Oh$wa".($wf?">

    ".lang(119,get_driver(DRIVER),"".h(connection()->server_info)."","".connection()->extension."")."\n","

    ".lang(120,"".h(logged_user())."")."\n";$i=adminer()->databases();if($i){$Ug=support("scheme");$b=collations();echo"

    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"".(support("database")?"\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i -as$j=>$T){$Ng=h(ME)."db=".urlencode($j);$u=h("Db-".$j);echo"".(support("database")?"
    ":"")."".lang(28).(get_session("dbs")!==null?" - ".lang(121)."":"")."".lang(122)."".lang(123)."".lang(124)." - ".lang(125)."".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."
    ".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$u):""),"".h($j)."";$db=h(db_collation($j,$b));echo"".(support("database")?"$db":$db),"".($_GET["dbsize"]?$T:"?")."","".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"
    \n",(support("database")?"\n":""),input_token(),"
    \n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"
    \n","

    ".lang(128)."

    \n
      \n";foreach(adminer()->plugins -as$dg){$Pb=(method_exists($dg,'description')?$dg->description():"");if(!$Pb){$Eg=new -\ReflectionObject($dg);if(preg_match('~^/[\s*]+(.+)~',$Eg->getDocComment(),$C))$Pb=$C[1];}$Vg=(method_exists($dg,'screenshot')?$dg->screenshot():"");echo"
    • ".get_class($dg)."".h($Pb?": $Pb":"").($Vg?" (".lang(129).")":"")."\n";}echo"
    \n";adminer()->pluginsLinks();echo"
    \n";}}page_footer("db");exit;}adminer()->afterConnect();class -TmpFile{private$handler;var$size;function -__construct(){$this->handler=tmpfile();}function -write($pb){$this->size+=strlen($pb);fwrite($this->handler,$pb);}function -send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$O=array(idf_escape($_GET["field"]));$K=driver()->select($a,$O,array(where($_GET,$n)),$O);$M=($K?$K->fetch_row():array());echo -driver()->value($M[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:lang(11);$S=table_status1($a);$E=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?lang(130):lang(131):lang(132)).": ".($E!=""?$E:h($a)),$l);$Mg=array();foreach($n -as$z=>$m)$Mg+=$m["privileges"];adminer()->selectLinks($S,(isset($Mg["insert"])||!support("table")?"":null));$hb=$S["Comment"];if($hb!="")echo"

    ".lang(41).": ".h($hb)."\n";if($n)adminer()->tableStructurePrint($n,$S);function -tables_links(array$T){echo"

    \n";}$Md=driver()->inheritsFrom($a);if($Md){echo"

    ".lang(133)."

    \n";tables_links($Md);}if(support("indexes")&&driver()->supportsIndex($S)){echo"

    ".lang(134)."

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

    ".lang(100)."

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

    ".lang(140)."

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

    ".lang(142)."

    \n";$ni=triggers($a);if($ni){echo"\n";foreach($ni -as$z=>$X)echo"
    ".h($X[0])."".h($X[1])."".h($z)."".lang(138)."\n";echo"
    \n";}echo'

    ".lang(144)."

    \n";$Qf=driver()->partitionsInfo($a);if($Qf)echo"

    BY ".h("$Qf[partition_by]($Qf[partition])")."\n";tables_links($Ld);}}elseif(isset($_GET["schema"])){page_header(lang(61),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Ih=array();$Jh=array();$da=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$Ae,PREG_SET_ORDER);foreach($Ae -as$t=>$C){$Ih[$C[1]]=array($C[2],$C[3]);$Jh[]="\n\t'".js_escape($C[1])."': [ $C[2], $C[3] ]";}$fi=0;$Ea=-1;$Tg=array();$Dg=array();$pe=array();$pa=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$gg=0;$Tg[$R]["fields"]=array();foreach($pa[$R]as$m){$gg+=1.25;$m["pos"]=$gg;$Tg[$R]["fields"][$m["field"]]=$m;}$Tg[$R]["pos"]=($Ih[$R]?:array($fi,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$ne=$Ea;if(idx($Ih[$R],1)||idx($Ih[$X["table"]],1))$ne=min(idx($Ih[$R],1,0),idx($Ih[$X["table"]],1,0))-1;else$Ea-=.1;while($pe[(string)$ne])$ne-=.0001;$Tg[$R]["references"][$X["table"]][(string)$ne]=array($X["source"],$X["target"]);$Dg[$X["table"]][$R][(string)$ne]=$X["target"];$pe[(string)$ne]=true;}}$fi=max($fi,$Tg[$R]["pos"][0]+2.5+$gg);}echo'

    - -qs(\'#schema\').onselectstart = () => false; -const tablePos = {',implode(",",$Jh)."\n",'}; -const em = qs(\'#schema\').offsetHeight / ',$fi,'; -document.onmousemove = schemaMousemove; -document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\'); - -';foreach($Tg -as$E=>$R){echo"
    ",''.h($E)."",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X=''.h($m["field"]).'';echo"
    ".($m["primary"]?"$X":$X);}foreach((array)$R["references"]as$Qh=>$Fg){foreach($Fg -as$ne=>$Ag){$oe=$ne-idx($Ih[$E],1);$t=0;foreach($Ag[0]as$oh)echo"\n
    "."
    ";}}foreach((array)$Dg[$E]as$Qh=>$Fg){foreach($Fg -as$ne=>$d){$oe=$ne-idx($Ih[$E],1);$t=0;foreach($d -as$Ph)echo"\n
    "."
    "."
    ";}}echo"\n
    \n";}foreach($Tg -as$E=>$R){foreach((array)$R["references"]as$Qh=>$Fg){foreach($Fg -as$ne=>$Ag){$Re=$fi;$Ge=-10;foreach($Ag[0]as$z=>$oh){$hg=$R["pos"][0]+$R["fields"][$oh]["pos"];$ig=$Tg[$Qh]["pos"][0]+$Tg[$Qh]["fields"][$Ag[1][$z]]["pos"];$Re=min($Re,$hg,$ig);$Ge=max($Ge,$hg,$ig);}echo"
    \n";}}}echo'
    -
    - -';$Fb=array('','USE','DROP+CREATE','CREATE');$Kh=array('','DROP+CREATE','CREATE');$Cb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Cb[]='INSERT+UPDATE';$M=get_settings("adminer_export");if(!$M)$M=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($M["events"])){$M["routines"]=$M["events"]=($_GET["dump"]=="");$M["triggers"]=$M["table_style"];}echo"
    ".lang(146)."".html_radios("output",adminer()->dumpOutput(),$M["output"])."\n","
    ".lang(147)."".html_radios("format",adminer()->dumpFormat(),$M["format"])."\n",(JUSH=="sqlite"?"":"
    ".lang(28)."".html_select('db_style',$Fb,$M["db_style"]).(support("type")?checkbox("types",1,$M["types"],lang(6)):"").(support("routine")?checkbox("routines",1,$M["routines"],lang(63)):"").(support("event")?checkbox("events",1,$M["events"],lang(65)):"")),"
    ".lang(123)."".html_select('table_style',$Kh,$M["table_style"]).checkbox("auto_increment",1,$M["auto_increment"],lang(42)).(support("trigger")?checkbox("triggers",1,$M["triggers"],lang(142)):""),"
    ".lang(148)."".html_select('data_style',$Cb,$M["data_style"]),'
    -

    -',input_token(),' - -',script("qsl('table').onclick = dumpClick;");$mg=array();if(DB!=""){$Ua=($a!=""?"":" checked");echo"","\n";$Ni="";$Mh=tables_list();foreach($Mh -as$E=>$U){$lg=preg_replace('~_.*~','',$E);$Ua=($a==""||$a==(substr($a,-1)=="%"?"$lg%":$E));$og="\n";$i=adminer()->databases();if($i){foreach($i -as$j){if(!information_schema($j)){$lg=preg_replace('~_.*~','',$j);echo"
    ".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"
    ".checkbox("tables[]",$E,$Ua,$E,"","block");if($U!==null&&!preg_match('~table~i',$U))$Ni -.="$og\n";else -echo"$og\n";$mg[$lg]++;}echo$Ni;if($Mh)echo -script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"
    ","",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"
    ".checkbox("databases[]",$j,$a==""||$a=="$lg%",$j,"","block")."\n";$mg[$lg]++;}}}else -echo"
    ";}echo'
    -

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

    ":" ")."".h($z)."";$Oc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(62));echo'

    \n";hidden_fields_get();echo -input_hidden("db",DB),($ed?"":input_hidden("grant")),"\n","\n";while($M=$K->fetch_assoc())echo'
    ".lang(26)."".lang(25)."
    '.h($M["User"])."".h($M["Host"]).''.lang(12)."\n";if(!$ed||DB!="")echo"
    \n";echo"
    \n","

    \n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");if($_POST["format"]=="sql")echo"$_POST[query]\n";else{adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();}exit;}restart_session();$td=&get_session("queries");$sd=&$td[DB];if(!$l&&$_POST["clear"]){$sd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?lang(66):lang(55)),$l);$ue='--'.(JUSH=='sql'?' ':'');if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$J=$_POST["query"];elseif($_POST["webfile"]){$rh=adminer()->importServerPath();$q=@fopen((file_exists($rh)?$rh:"compress.zlib://$rh.gz"),"rb");$J=($q?fread($q,1e6):false);}else$J=get_file("sql_file",true,";");if(is_string($J)){if(function_exists('memory_get_usage')&&($Le=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($Le,strval(2*strlen($J)+memory_get_usage()+8e6)));if($J!=""&&strlen($J)<1e6){$I=$J.(preg_match("~;[ \t\r\n]*\$~",$J)?"":";");if(!$sd||first(end($sd))!=$I){restart_session();$sd[]=array($I,time());set_session("queries",$td);stop_session();}}$ph="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$ue)[^\n]*\n?|--\r?\n)";$Nb=";";$jf=0;$kc=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$gb=0;$sc=array();$Of='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$ue.'|$'.(JUSH=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$gi=microtime(true);$ja=get_settings("adminer_import");while($J!=""){if(!$jf&&preg_match("~^$ph*+DELIMITER\\s+(\\S+)~i",$J,$C)){$Nb=preg_quote($C[1]);$J=substr($J,strlen($C[0]));}elseif(!$jf&&JUSH=='pgsql'&&preg_match("~^($ph*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$J,$C)){$Nb="\n\\\\\\.\r?\n";$jf=strlen($C[0]);}else{preg_match("($Nb\\s*|$Of)",$J,$C,PREG_OFFSET_CAPTURE,$jf);list($Xc,$gg)=$C[0];if(!$Xc&&$q&&!feof($q))$J -.=fread($q,1e5);else{if(!$Xc&&rtrim($J)=="")break;$jf=$gg+strlen($Xc);if($Xc&&!preg_match("(^$Nb)",$Xc)){$Na=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($gg>0&&strtolower($J[$gg-1])=="e"));$Zf=($Xc=='/*'?'\*/':($Xc=='['?']':(preg_match("~^$ue|^#~",$Xc)?"\n":preg_quote($Xc).($Na?'|\\\\.':''))));while(preg_match("($Zf|\$)s",$J,$C,PREG_OFFSET_CAPTURE,$jf)){$Rg=$C[0][0];if(!$Rg&&$q&&!feof($q))$J -.=fread($q,1e5);else{$jf=$C[0][1]+strlen($Rg);if(!$Rg||$Rg[0]!="\\")break;}}}else{$kc=false;$I=substr($J,0,$gg+($Nb[0]=="\n"?3:0));$gb++;$og="
    ".adminer()->sqlCommandQuery($I)."
    \n";if(JUSH=="sqlite"&&preg_match("~^$ph*+ATTACH\\b~i",$I,$C)){echo$og,"

    ".lang(150)."\n";$sc[]=" $gb";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$og;ob_flush();flush();}$vh=microtime(true);if(connection()->multi_query($I)&&$g&&preg_match("~^$ph*+USE\\b~i",$I))$g->query($I);do{$K=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$og:""),"

    ".lang(151).(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$sc[]=" $gb";if($_POST["error_stops"])break -2;}else{$Vh=" (".format_time($vh).")".(strlen($I)<1000?" ".lang(12)."":"");$la=connection()->affected_rows;$Qi=($_POST["only_errors"]?"":driver()->warnings());$Ri="warnings-$gb";if($Qi)$Vh -.=", ".lang(37)."".script("qsl('a').onclick = partial(toggle, '$Ri');","");$_c=null;$Bf=null;$Ac="explain-$gb";if(is_object($K)){$_=$_POST["limit"];$Bf=print_select_result($K,$g,array(),$_);if(!$_POST["only_errors"]){echo"

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

    ".lang(154,$la)."$Vh\n";}echo($Qi?"

    \n":"");if($_c){echo"\n";}}$vh=microtime(true);}while(connection()->next_result());}$J=substr($J,$jf);$jf=0;}}}}if($kc)echo"

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

    ".lang(156,$gb-count($sc))," (".format_time($gi).")\n";elseif($sc&&$gb>1)echo"

    ".lang(151).": ".implode("",$sc)."\n";}else -echo"

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

    -';$yc="";if(!isset($_GET["import"])){$I=$_GET["sql"];if($_POST)$I=$_POST["query"];elseif($_GET["history"]=="all")$I=$sd;elseif($_GET["history"]!="")$I=idx($sd[$_GET["history"]],0);echo"

    ";textarea("query",$I,20);echo -script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"

    ";adminer()->sqlPrintAfter();echo"$yc\n",lang(158).": \n";}else{$jd=(extension_loaded("zlib")?"[.gz]":"");echo"

    ".lang(159)."
    ",file_input("SQL$jd: \n$yc"),"
    \n";$Cd=adminer()->importServerPath();if($Cd)echo"
    ".lang(160)."
    ",lang(161,"".h($Cd)."$jd"),' ',"
    \n";echo"

    ";}echo -checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),lang(163))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(164))."\n",input_token();if(!isset($_GET["import"])&&$sd){print_fieldset("history",lang(165),$_GET["history"]!="");for($X=end($sd);$X;$X=prev($sd)){$z=key($sd);list($I,$Vh,$fc)=$X;echo''.lang(12).""." ".@date("H:i:s",$Vh).""." ".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$ue).*~m",'',$I)))),80,"").($fc?" ($fc)":"")."
    \n";}echo"\n","".lang(167)."\n","\n";}echo'

    -';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$yi=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n -as$E=>$m){if(!isset($m["privileges"][$yi?"update":"insert"])||adminer()->fieldName($m)==""||$m["generated"])unset($n[$E]);}if($_POST&&!$l&&!isset($_GET["select"])){$B=$_POST["referer"];if($_POST["insert"])$B=($yi?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$B))$B=ME."select=".urlencode($a);$x=indexes($a);$ti=unique_array($_GET["where"],$x);$xg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($B,lang(168),driver()->delete($a,$xg,$ti?0:1));else{$Q=array();foreach($n -as$E=>$m){$X=process_input($m);if($X!==false&&$X!==null)$Q[idf_escape($E)]=$X;}if($yi){if(!$Q)redirect($B);queries_redirect($B,lang(169),driver()->update($a,$Q,$xg,$ti?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$K=driver()->insert($a,$Q);$me=($K?last_id($K):0);queries_redirect($B,lang(170,($me?" $me":"")),$K);}}}$M=null;if($_POST["save"])$M=(array)$_POST["fields"];elseif($Z){$O=array();foreach($n -as$E=>$m){if(isset($m["privileges"]["select"])){$ua=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$O[]=($ua?"$ua AS ":"").idf_escape($E);}}$M=array();if(!support("table"))$O=array("*");if($O){$K=driver()->select($a,$O,array($Z),$O,array(),(isset($_GET["select"])?2:1));if(!$K)$l=error();else{$M=$K->fetch_assoc();if(!$M)$M=false;}if(isset($_GET["select"])&&(!$M||$K->fetch_assoc()))$M=null;}}if(!support("table")&&!$n){if(!$Z){$K=driver()->select($a,array("*"),array(),array("*"));$M=($K?$K->fetch_assoc():false);if(!$M)$M=array(driver()->primary=>"");}if($M){foreach($M -as$z=>$X){if(!$Z)$M[$z]=null;$n[$z]=array("field"=>$z,"null"=>($z!=driver()->primary),"auto_increment"=>($z==driver()->primary));}}}edit_form($a,$n,$M,$yi,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Sf=driver()->partitionBy;$Wf=($Sf?driver()->partitionsInfo($a):array());$Cg=referencable_primary($a);$Vc=array();foreach($Cg -as$Hh=>$m)$Vc[str_replace("`","``",$Hh)."`".str_replace("`","``",$m["field"])]=$Hh;$Ef=array();$S=array();if($a!=""){$Ef=fields($a);$S=table_status1($a);if(count($S)<2)$l=lang(11);}$M=$_POST;$M["fields"]=(array)$M["fields"];if($M["auto_increment_col"])$M["fields"][$M["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($M["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(171),drop_tables(array($a)));else{$n=array();$pa=array();$Di=false;$Tc=array();$Df=reset($Ef);$na=" FIRST";foreach($M["fields"]as$z=>$m){$p=$Vc[$m["type"]];$oi=($p!==null?$Cg[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$tg=process_field($m,$oi);$pa[]=array($m["orig"],$tg,$na);if(!$Df||$tg!==process_field($Df,$Df)){$n[]=array($m["orig"],$tg,$na);if($m["orig"]!=""||$na)$Di=true;}if($p!==null)$Tc[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Vc[$m["type"]],'source'=>array($m["field"]),'target'=>array($oi["field"]),'on_delete'=>$m["on_delete"],));$na=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$Di=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Df=next($Ef);if(!$Df)$na="";}}$Uf=array();if(in_array($M["partition_by"],$Sf)){foreach($M -as$z=>$X){if(preg_match('~^partition~',$z))$Uf[$z]=$X;}foreach($Uf["partition_names"]as$z=>$E){if($E==""){unset($Uf["partition_names"][$z]);unset($Uf["partition_values"][$z]);}}$Uf["partition_names"]=array_values($Uf["partition_names"]);$Uf["partition_values"]=array_values($Uf["partition_values"]);if($Uf==$Wf)$Uf=array();}elseif(preg_match("~partitioned~",$S["Create_options"]))$Uf=null;$D=lang(172);if($a==""){cookie("adminer_engine",$M["Engine"]);$D=lang(173);}$E=trim($M["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($E),$D,alter_table($a,$E,(JUSH=="sqlite"&&($Di||$Tc)?$pa:$n),$Tc,($M["Comment"]!=$S["Comment"]?$M["Comment"]:null),($M["Engine"]&&$M["Engine"]!=$S["Engine"]?$M["Engine"]:""),($M["Collation"]&&$M["Collation"]!=$S["Collation"]?$M["Collation"]:""),($M["Auto_increment"]!=""?number($M["Auto_increment"]):""),$Uf));}}page_header(($a!=""?lang(34):lang(68)),$l,array("table"=>$a),h($a));if(!$_POST){$qi=driver()->types();$M=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($qi["int"])?"int":(isset($qi["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$M=$S;$M["name"]=$a;$M["fields"]=array();if(!$_GET["auto_increment"])$M["Auto_increment"]="";foreach($Ef -as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$M["fields"][]=$m;}if($Sf){$M+=$Wf;$M["partition_names"][]="";$M["partition_values"][]="";}}}$b=collations();if(is_array(reset($b)))$b=call_user_func_array('array_merge',array_values($b));$mc=driver()->engines();foreach($mc -as$lc){if(!strcasecmp($lc,$M["Engine"])){$M["Engine"]=$lc;break;}}echo' -
    -

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

    \n","\n";edit_fields($M["fields"],$b,"TABLE",$Vc);echo"
    \n",script("editFields();"),"
    \n

    \n",lang(42).": \n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),lang(176),"columnShow(this.checked, 5)","jsonly");$jb=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$jb,lang(41),"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$M["Comment"])?"":''):''),'

    - -';}echo' -';if($a!="")echo'',confirm(lang(177,$a));if($Sf&&(JUSH=='sql'||$a=="")){$Tf=preg_match('~RANGE|LIST~',$M["partition_by"]);print_fieldset("partition",lang(178),$M["partition_by"]);echo"

    ".html_select("partition_by",array_merge(array(""),$Sf),$M["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"()\n",lang(179).": \n","\n","\n";foreach($M["partition_names"]as$z=>$X)echo'','\n\n";}echo -input_token(),'

    -';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Jd=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);$Hd=driver()->indexAlgorithms($S);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Jd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Jd[]="SPATIAL";$x=indexes($a);$n=fields($a);$ng=array();if(JUSH=="mongo"){$ng=$x["_id_"];unset($Jd[0]);unset($x["_id_"]);}$M=$_POST;if($M)save_settings(array("index_options"=>$M["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$qa=array();foreach($M["indexes"]as$w){$E=$w["name"];if(in_array($w["type"],$Jd)){$d=array();$se=array();$Qb=array();$Id=(support("partial_indexes")?$w["partial"]:"");$Gd=(in_array($w["algorithm"],$Hd)?$w["algorithm"]:"");$Q=array();ksort($w["columns"]);foreach($w["columns"]as$z=>$c){if($c!=""){$re=idx($w["lengths"],$z);$Ob=idx($w["descs"],$z);$Q[]=($n[$c]?idf_escape($c):$c).($re?"(".(+$re).")":"").($Ob?" DESC":"");$d[]=$c;$se[]=($re?:null);$Qb[]=$Ob;}}$zc=$x[$E];if($zc){ksort($zc["columns"]);ksort($zc["lengths"]);ksort($zc["descs"]);if($w["type"]==$zc["type"]&&array_values($zc["columns"])===$d&&(!$zc["lengths"]||array_values($zc["lengths"])===$se)&&array_values($zc["descs"])===$Qb&&$zc["partial"]==$Id&&(!$Hd||$zc["algorithm"]==$Gd)){unset($x[$E]);continue;}}if($d)$qa[]=array($w["type"],$E,$Q,$Gd,$Id);}}foreach($x -as$E=>$zc)$qa[]=array($zc["type"],$E,"DROP");if(!$qa)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(182),alter_indexes($a,$qa));}page_header(lang(134),$l,array("table"=>$a),h($a));$Lc=array_keys($n);if($_POST["add"]){foreach($M["indexes"]as$z=>$w){if($w["columns"][count($w["columns"])]!="")$M["indexes"][$z]["columns"][]="";}$w=end($M["indexes"]);if($w["type"]||array_filter($w["columns"],'strlen'))$M["indexes"][]=array("columns"=>array(1=>""));}if(!$M){foreach($x -as$z=>$w){$x[$z]["name"]=$z;$x[$z]["columns"][]="";}$x[]=array("columns"=>array(1=>""));$M["indexes"]=$x;}$se=(JUSH=="sql"||JUSH=="mssql");$jh=($_POST?$_POST["options"]:get_setting("index_options"));echo' -
    -
    - - - -';if($ng){echo"
    ',lang(183);$Ad=" class='idxopts".($jh?"":" hidden")."'";if($Hd)echo"".lang(184).doc_link(array('sql'=>'create-index.html#create-index-storage-engine-index-types','mariadb'=>'storage-engine-index-types/',));echo'',lang(185).($se?" (".lang(186).")":"");if($se||support("descidx"))echo -checkbox("options",1,$jh,lang(107),"indexOptionsShow(this.checked)","jsonly")."\n";echo'',lang(187);if(support("partial_indexes"))echo"".lang(188);echo' -
    PRIMARY";foreach($ng["columns"]as$z=>$c)echo -select_input(" disabled",$Lc,$c)," ";echo"\n";}$y=1;foreach($M["indexes"]as$w){if(!$_POST["drop_col"]||$y!=key($_POST["drop_col"])){echo"
    ".html_select("indexes[$y][type]",array(-1=>"")+$Jd,$w["type"],($y==count($M["indexes"])?"indexesAddRow.call(this);":""),"label-type");if($Hd)echo"".html_select("indexes[$y][algorithm]",array_merge(array(""),$Hd),$w['algorithm'],"label-algorithm");echo"";ksort($w["columns"]);$t=1;foreach($w["columns"]as$z=>$c){echo"".select_input(" name='indexes[$y][columns][$t]' title='".lang(39)."'",($n&&($c==""||$n[$c])?array_combine($Lc,$Lc):array()),$c,"partial(".($t==count($w["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"",($se?"":""),(support("descidx")?checkbox("indexes[$y][descs][$t]",1,idx($w["descs"],$z),lang(50)):"")," ";$t++;}echo"\n";if(support("partial_indexes"))echo"\n";echo"".icon("cross","drop_col[$y]","x",lang(111)).script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$y++;}echo'
    -
    -

    - -',input_token(),'

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

    -',($_POST["add"]||strpos($E,"\n")?'
    ':'')."\n".($b?html_select("collation",array(""=>"(".lang(101).")")+$b,$M["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",)):""),' -';if(DB!="")echo"".confirm(lang(177,DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo -icon("plus","add[0]","+",lang(108))."\n";echo -input_token(),'

    -';}elseif(isset($_GET["call"])){$ca=($_GET["name"]?:$_GET["call"]);page_header(lang(193).": ".h($ca),$l);$Og=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Dd=array();$If=array();foreach($Og["fields"]as$t=>$m){if(substr($m["inout"],-3)=="OUT"&&JUSH=='sql')$If[$t]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Dd[]=$t;}if(!$l&&$_POST){$Oa=array();foreach($Og["fields"]as$z=>$m){$X="";if(in_array($z,$Dd)){$X=process_input($m);if($X===false)$X="''";if(isset($If[$z]))connection()->query("SET @".idf_escape($m["field"])." = $X");}if(isset($If[$z]))$Oa[]="@".idf_escape($m["field"]);elseif(in_array($z,$Dd))$Oa[]=$X;}$J=(isset($_GET["callf"])?"SELECT ":"CALL ").($Og["returns"]["type"]=="record"?"* FROM ":"").table($ca)."(".implode(", ",$Oa).")";$vh=microtime(true);$K=connection()->multi_query($J);$la=connection()->affected_rows;echo -adminer()->selectQuery($J,$vh,!$K);if(!$K)echo"

    ".error()."\n";else{$g=connect();if($g)$g->select_db(DB);do{$K=connection()->store_result();if(is_object($K))print_select_result($K,$g);else -echo"

    ".lang(194,$la)." ".@date("H:i:s")."\n";}while(connection()->next_result());if($If)print_select_result(connection()->query("SELECT ".implode(", ",$If)));}}echo' -

    -';if($Dd){echo"\n";foreach($Dd -as$z){$m=$Og["fields"][$z];$E=$m["field"];echo"
    ".adminer()->fieldName($m);$Y=idx($_POST["fields"],$E);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$E,""));echo"\n";}echo"
    \n";}echo'

    - -',input_token(),'

    - -
    -';function
    -pre_tr($Rg){return
    -preg_replace('~^~m','',preg_replace('~\|~','',preg_replace('~\|$~m',"",rtrim($Rg))));}$R='(\+--[-+]+\+\n)';$M='(\| .* \|\n)';echo
    -preg_replace_callback("~^$R?$M$R?($M*)$R?~m",function($C){$Pc=pre_tr($C[2]);return"\n".($C[1]?"$Pc\n":$Pc).pre_tr($C[4])."\n
    ";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1\\3",preg_replace('~(.+)\n---+\n~',"\\1\n",h($Og['comment']))));echo'
    -';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$E=$_GET["name"];$M=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$M["source"]=array_filter($M["source"],'strlen');ksort($M["source"]);$Ph=array();foreach($M["source"]as$z=>$X)$Ph[$z]=$M["target"][$z];$M["target"]=$Ph;}if(JUSH=="sqlite")$K=recreate_table($a,$a,array(),array(),array(" $E"=>($M["drop"]?"":" ".format_foreign_key($M))));else{$qa="ALTER TABLE ".table($a);$K=($E==""||queries("$qa DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($E)));if(!$M["drop"])$K=queries("$qa ADD".format_foreign_key($M));}queries_redirect(ME."table=".urlencode($a),($M["drop"]?lang(195):($E!=""?lang(196):lang(197))),$K);if(!$M["drop"])$l=lang(198);}page_header(lang(199),$l,array("table"=>$a),h($a));if($_POST){ksort($M["source"]);if($_POST["add"])$M["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$M["target"]=array();}elseif($E!=""){$Vc=foreign_keys($a);$M=$Vc[$E];$M["source"][]="";}else{$M["table"]=$a;$M["source"]=array("");}echo' -
    -';$oh=array_keys(fields($a));if($M["db"]!="")connection()->select_db($M["db"]);if($M["ns"]!=""){$Ff=get_schema();set_schema($M["ns"]);}$Bg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$Ph=array_keys(fields(in_array($M["table"],$Bg)?$M["table"]:reset($Bg)));$rf="this.form['change-js'].value = '1'; this.form.submit();";echo"

    \n";if(JUSH!="sqlite"){$Gb=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Gb[]=$j;}echo"";}echo -input_hidden("change-js"),'

    - - -';$y=0;foreach($M["source"]as$z=>$X){echo"","
    ',lang(136),'',lang(137),'
    ".html_select("source[".(+$z)."]",array(-1=>"")+$oh,$X,($y==count($M["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"".html_select("target[".(+$z)."]",$Ph,idx($M["target"],$z),"","label-target");$y++;}echo'
    -

    - - -',doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",)),'

    - -

    -';if($E!="")echo'',confirm(lang(177,$E));echo -input_token(),'

    -';}elseif(isset($_GET["view"])){$a=$_GET["view"];$M=$_POST;$Gf="VIEW";if(JUSH=="pgsql"&&$a!=""){$wh=table_status1($a);$Gf=strtoupper($wh["Engine"]);}if($_POST&&!$l){$E=trim($M["name"]);$ua=" AS\n$M[select]";$B=ME."table=".urlencode($E);$D=lang(203);$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$E&&JUSH!="sqlite"&&$U=="VIEW"&&$Gf=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($E).$ua,$B,$D);else{$Rh=$E."_adminer_".uniqid();drop_create("DROP $Gf ".table($a),"CREATE $U ".table($E).$ua,"DROP $U ".table($E),"CREATE $U ".table($Rh).$ua,"DROP $U ".table($Rh),($_POST["drop"]?substr(ME,0,-1):$B),lang(204),$D,lang(205),$a,$E);}}if(!$_POST&&$a!=""){$M=view($a);$M["name"]=$a;$M["materialized"]=($Gf!="VIEW");if(!$l)$l=error();}page_header(($a!=""?lang(35):lang(206)),$l,array("table"=>$a),h($a));echo' -
    -

    ',lang(187),': -',(support("materializedview")?" ".checkbox("materialized",1,$M["materialized"],lang(130)):""),'

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

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

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

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

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

    -';}elseif(isset($_GET["procedure"])){$ca=($_GET["name"]?:$_GET["procedure"]);$Og=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$M=$_POST;$M["fields"]=(array)$M["fields"];if($_POST&&!process_fields($M["fields"])&&!$l){$Cf=routine($_GET["procedure"],$Og);$Rh="$M[name]_adminer_".uniqid();foreach($M["fields"]as$z=>$m){if($m["field"]=="")unset($M["fields"][$z]);}drop_create("DROP $Og ".routine_id($ca,$Cf),create_routine($Og,$M),"DROP $Og ".routine_id($M["name"],$M),create_routine($Og,array("name"=>$Rh)+$M),"DROP $Og ".routine_id($Rh,$M),substr(ME,0,-1),lang(216),lang(217),lang(218),$ca,$M["name"]);}page_header(($ca!=""?(isset($_GET["function"])?lang(219):lang(220)).": ".h($ca):(isset($_GET["function"])?lang(221):lang(222))),$l);if(!$_POST){if($ca=="")$M["language"]="sql";else{$M=routine($_GET["procedure"],$Og);$M["name"]=$ca;}}$b=get_vals("SHOW CHARACTER SET");sort($b);$Pg=routine_languages();echo($b?"".optionlist($b)."":""),' -
    -

    ',lang(187),': -',($Pg?"\n":""),' -

    - -';edit_fields($M["fields"],$b,$Og);if(isset($_GET["function"])){echo"
    ".lang(223);edit_type("returns",(array)$M["returns"],$b,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'
    -',script("editFields();"),'
    -

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

    - -';if($ca!="")echo'',confirm(lang(177,$ca));echo -input_token(),'

    -';}elseif(isset($_GET["check"])){$a=$_GET["check"];$E=$_GET["name"];$M=$_POST;if($M&&!$l){if(JUSH=="sqlite")$K=recreate_table($a,$a,array(),array(),array(),"",array(),"$E",($M["drop"]?"":$M["clause"]));else{$K=($E==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($E)));if(!$M["drop"])$K=queries("ALTER TABLE ".table($a)." ADD".($M["name"]!=""?" CONSTRAINT ".idf_escape($M["name"]):"")." CHECK ($M[clause])");}queries_redirect(ME."table=".urlencode($a),($M["drop"]?lang(224):($E!=""?lang(225):lang(226))),$K);}page_header(($E!=""?lang(227).": ".h($E):lang(141)),$l,array("table"=>$a));if(!$M){$Va=driver()->checkConstraints($a);$M=array("name"=>$E,"clause"=>$Va[$E]);}echo' -
    -

    ';if(JUSH!="sqlite")echo -lang(187).': ';echo -doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",),"?"),'

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

    -';if($E!="")echo'',confirm(lang(177,$E));echo -input_token(),'

    -';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$E="$_GET[name]";$mi=trigger_options();$M=(array)trigger($E,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$mi["Timing"])&&in_array($_POST["Event"],$mi["Event"])&&in_array($_POST["Type"],$mi["Type"])){$pf=" ON ".table($a);$Yb="DROP TRIGGER ".idf_escape($E).(JUSH=="pgsql"?$pf:"");$B=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Yb,$B,lang(228));else{if($E!="")queries($Yb);queries_redirect($B,($E!=""?lang(229):lang(230)),queries(create_trigger($pf,$_POST)));if($E!="")queries(create_trigger($pf,$M+array("Type"=>reset($mi["Type"]))));}}$M=$_POST;}page_header(($E!=""?lang(231).": ".h($E):lang(232)),$l,array("table"=>$a));echo' -
    - -
    ',lang(233),'',html_select("Timing",$mi["Timing"],$M["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'
    ',lang(234),'',html_select("Event",$mi["Event"],$M["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$mi["Event"])?" ":""),'
    ',lang(40),'',html_select("Type",$mi["Type"],$M["Type"]),'
    -

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

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

    - -';if($E!="")echo'',confirm(lang(177,$E));echo -input_token(),'

    -';}elseif(isset($_GET["user"])){$ea=$_GET["user"];$rg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$M){foreach(explode(",",($M["Privilege"]=="Grant option"?"":$M["Context"]))as$qb)$rg[$qb][$M["Privilege"]]=$M["Comment"];}$rg["Server Admin"]+=$rg["File access on server"];$rg["Databases"]["Create routine"]=$rg["Procedures"]["Create routine"];unset($rg["Procedures"]["Create routine"]);$rg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$rg["Columns"][$X]=$rg["Tables"][$X];unset($rg["Server Admin"]["Usage"]);foreach($rg["Tables"]as$z=>$X)unset($rg["Databases"][$z]);$af=array();if($_POST){foreach($_POST["objects"]as$z=>$X)$af[$X]=(array)$af[$X]+idx($_POST["grants"],$z,array());}$fd=array();$nf="";if(isset($_GET["host"])&&($K=connection()->query("SHOW GRANTS FOR ".q($ea)."@".q($_GET["host"])))){while($M=$K->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$M[0],$C)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$C[1],$Ae,PREG_SET_ORDER)){foreach($Ae -as$X){if($X[1]!="USAGE")$fd["$C[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$M[0]))$fd["$C[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$M[0],$C))$nf=$C[1];}}if($_POST&&!$l){$of=(isset($_GET["host"])?q($ea)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $of",ME."privileges=",lang(235));else{$cf=q($_POST["user"])."@".q($_POST["host"]);$Xf=$_POST["pass"];if($Xf!=''&&!$_POST["hashed"]&&!min_version(8)){$Xf=get_val("SELECT PASSWORD(".q($Xf).")");$l=!$Xf;}$vb=false;if(!$l){if($of!=$cf){$vb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $cf IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($Xf));$l=!$vb;}elseif($Xf!=$nf)queries("SET PASSWORD FOR $cf = ".q($Xf));}if(!$l){$Lg=array();foreach($af -as$if=>$ed){if(isset($_GET["grant"]))$ed=array_filter($ed);$ed=array_keys($ed);if(isset($_GET["grant"]))$Lg=array_diff(array_keys(array_filter($af[$if],'strlen')),$ed);elseif($of==$cf){$lf=array_keys((array)$fd[$if]);$Lg=array_diff($lf,$ed);$ed=array_diff($ed,$lf);unset($fd[$if]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$if,$C)&&(!grant("REVOKE",$Lg,$C[2]," ON $C[1] FROM $cf")||!grant("GRANT",$ed,$C[2]," ON $C[1] TO $cf"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($of!=$cf)queries("DROP USER $of");elseif(!isset($_GET["grant"])){foreach($fd -as$if=>$Lg){if(preg_match('~^(.+)(\(.*\))?$~U',$if,$C))grant("REVOKE",array_keys($Lg),$C[2]," ON $C[1] FROM $cf");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(236):lang(237)),!$l);if($vb)connection()->query("DROP USER $cf");}}page_header((isset($_GET["host"])?lang(26).": ".h("$ea@$_GET[host]"):lang(149)),$l,array("privileges"=>array('',lang(62))));$M=$_POST;if($M)$fd=$af;else{$M=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$M["pass"]=$nf;if($nf!="")$M["hashed"]=true;$fd[(DB==""||$fd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'
    - -
    ',lang(25),' -
    ',lang(26),' -
    ',lang(27),' -',($M["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$M["hashed"],lang(238),"typePassword(this.form['pass'], this.checked);")),'
    - -',"\n","\n";foreach(array(""=>"","Server Admin"=>lang(25),"Databases"=>lang(28),"Tables"=>lang(132),"Columns"=>lang(39),"Procedures"=>lang(239),)as$qb=>$Ob){foreach((array)$rg[$qb]as$qg=>$hb){echo"$Ob'.h($qg);$t=0;foreach($fd -as$if=>$ed){$E="'grants[$t][".h(strtoupper($qg))."]'";$Y=$ed[strtoupper($qg)];if($qb=="Server Admin"&&$if!=(isset($fd["*.*"])?"*.*":".*"))echo"
    ".lang(62).doc_link(array('sql'=>"grant.html#priv_level"));$t=0;foreach($fd -as$if=>$ed){echo''.($if!="*.*"?"":input_hidden("objects[$t]","*.*")."*.*");$t++;}echo"
    ";elseif(isset($_GET["grant"]))echo"";else -echo"";$t++;}}}echo"
    \n",'

    - -';if(isset($_GET["host"]))echo'',confirm(lang(177,"$ea@$_GET[host]"));echo -input_token(),'

    -';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$ge=0;foreach((array)$_POST["kill"]as$X){if(adminer()->killProcess($X))$ge++;}queries_redirect(ME."processlist=",lang(242,$ge),$ge||!$_POST["kill"]);}}page_header(lang(116),$l);echo' -
    -
    - -',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$t=-1;foreach(adminer()->processList()as$t=>$M){if(!$t){echo"".(support("kill")?"\n";}echo"".(support("kill")?"
    ":"");foreach($M -as$z=>$X)echo"$z".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($z),));echo"
    ".checkbox("kill[]",$M[JUSH=="sql"?"Id":"pid"],0):"");foreach($M -as$z=>$X)echo"".((JUSH=="sql"&&$z=="Info"&&preg_match("~Query|Killed~",$M["Command"])&&$X!="")||(JUSH=="pgsql"&&$z=="current_query"&&$X!="")||(JUSH=="oracle"&&$z=="sql_text"&&$X!="")?"".shorten_utf8($X,100,"").' '.lang(243).'':h($X));echo"\n";}echo'
    -
    -

    -';if(support("kill"))echo($t+1)."/".lang(244,max_connections()),"

    \n";echo -input_token(),'

    -',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$x=indexes($a);$n=fields($a);$Vc=column_foreign_keys($a);$kf=$S["Oid"];$ka=get_settings("adminer_import");$Mg=array();$d=array();$Xg=array();$zf=array();$Uh="";foreach($n -as$z=>$m){$E=adminer()->fieldName($m);$Ye=html_entity_decode(strip_tags($E),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$E!=""){$d[$z]=$Ye;if(is_shortable($m))$Uh=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$E!="")$Xg[$z]=$Ye;if(isset($m["privileges"]["order"])&&$E!="")$zf[$z]=$Ye;$Mg+=$m["privileges"];}list($O,$s)=adminer()->selectColumnsProcess($d,$x);$O=array_unique($O);$s=array_unique($s);$Xd=count($s)selectSearchProcess($n,$x);$yf=adminer()->selectOrderProcess($n,$x);$_=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$ui=>$M){$ua=convert_field($n[key($M)]);$O=array($ua?:idf_escape(key($M)));$Z[]=where_check($ui,$n);$L=driver()->select($a,$O,$Z,$O);if($L)echo -first($L->fetch_row());}exit;}$ng=$wi=array();foreach($x -as$w){if($w["type"]=="PRIMARY"){$ng=array_flip($w["columns"]);$wi=($O?$ng:array());foreach($wi -as$z=>$X){if(in_array(idf_escape($z),$O))unset($wi[$z]);}break;}}if($kf&&!$ng){$ng=$wi=array($kf=>0);$x[]=array("type"=>"PRIMARY","columns"=>array($kf));}if($_POST&&!$l){$Ti=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Va=array();foreach($_POST["check"]as$Sa)$Va[]=where_check($Sa,$n);$Ti[]="((".implode(") OR (",$Va)."))";}$Ti=($Ti?"\nWHERE ".implode(" AND ",$Ti):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$Zc=($O?implode(", ",$O):"*").convert_fields($d,$n,$O)."\nFROM ".table($a);$hd=($s&&$Xd?"\nGROUP BY ".implode(", ",$s):"").($yf?"\nORDER BY ".implode(", ",$yf):"");$J="SELECT $Zc$Ti$hd";if(is_array($_POST["check"])&&!$ng){$si=array();foreach($_POST["check"]as$X)$si[]="(SELECT".limit($Zc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$hd,1).")";$J=implode(" UNION ALL ",$si);}adminer()->dumpData($a,"table",$J);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$Vc)){if($_POST["save"]||$_POST["delete"]){$K=true;$la=0;$Q=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$E=>$X){$X=process_input($n[$E]);if($X!==null&&($_POST["clone"]||$X!==false))$Q[idf_escape($E)]=($X!==false?$X:idf_escape($E));}}if($_POST["delete"]||$Q){$J=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($Q)).")\nSELECT ".implode(", ",$Q)."\nFROM ".table($a):"");if($_POST["all"]||($ng&&is_array($_POST["check"]))||$Xd){$K=($_POST["delete"]?driver()->delete($a,$Ti):($_POST["clone"]?queries("INSERT $J$Ti".driver()->insertReturning($a)):driver()->update($a,$Q,$Ti)));$la=connection()->affected_rows;if(is_object($K))$la+=$K->num_rows;}else{foreach((array)$_POST["check"]as$X){$Si="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$K=($_POST["delete"]?driver()->delete($a,$Si,1):($_POST["clone"]?queries("INSERT".limit1($a,$J,$Si)):driver()->update($a,$Q,$Si,1)));if(!$K)break;$la+=connection()->affected_rows;}}}$D=lang(246,$la);if($_POST["clone"]&&$K&&$la==1){$me=last_id($K);if($me)$D=lang(170," $me");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$K);if(!$_POST["delete"]){$jg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$jg),$jg,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l=lang(247);else{$K=true;$la=0;foreach($_POST["val"]as$ui=>$M){$Q=array();foreach($M -as$z=>$X){$z=bracket_escape($z,true);$Q[idf_escape($z)]=(preg_match('~char|text~',$n[$z]["type"])||$X!=""?adminer()->processInput($n[$z],$X):"NULL");}$K=driver()->update($a,$Q," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($ui,$n),($Xd||$ng?0:1)," ");if(!$K)break;$la+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang(246,$la),$K);}}elseif(!is_string($Mc=get_file("csv_file",true)))$l=upload_error($Mc);elseif(!preg_match('~~u',$Mc))$l=lang(248);else{save_settings(array("output"=>$ka["output"],"format"=>$_POST["separator"]),"adminer_import");$K=true;$eb=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Mc,$Ae);$la=count($Ae[0]);driver()->begin();$dh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$N=array();foreach($Ae[0]as$z=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$dh]*)$dh~",$X.$dh,$Be);if(!$z&&!array_diff($Be[1],$eb)){$eb=$Be[1];$la--;}else{$Q=array();foreach($Be[1]as$t=>$bb)$Q[idf_escape($eb[$t])]=($bb==""&&$n[$eb[$t]]["null"]?"NULL":q(preg_match('~^".*"$~s',$bb)?str_replace('""','"',substr($bb,1,-1)):$bb));$N[]=$Q;}}$K=(!$N||driver()->insertUpdate($a,$N,$ng));if($K)driver()->commit();queries_redirect(remove_from_uri("page"),lang(249,$la),$K);driver()->rollback();}}}$Hh=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else -page_header(lang(44).": $Hh",$l);$Q=null;if(isset($Mg["insert"])||!support("table")){$Nf=array();foreach((array)$_GET["where"]as$X){if(isset($Vc[$X["col"]])&&count($Vc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$Nf["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$Q=$Nf?"&".http_build_query($Nf):"";}adminer()->selectLinks($S,$Q);if(!$d&&support("table"))echo"

    ".lang(250).($n?".":": ".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";adminer()->selectColumnsPrint($O,$d);adminer()->selectSearchPrint($Z,$Xg,$x);adminer()->selectOrderPrint($yf,$zf,$x);adminer()->selectLimitPrint($_);adminer()->selectLengthPrint($Uh);adminer()->selectActionPrint($x);echo"
    \n";$G=$_GET["page"];$Yc=null;if($G=="last"){$Yc=get_val(count_rows($a,$Z,$Xd,$s));$G=floor(max(0,intval($Yc)-1)/$_);}$Yg=$O;$gd=$s;if(!$Yg){$Yg[]="*";$rb=convert_fields($d,$n,$O);if($rb)$Yg[]=substr($rb,2);}foreach($O -as$z=>$X){$m=$n[idf_unescape($X)];if($m&&($ua=convert_field($m)))$Yg[$z]="$ua AS $X";}if(!$Xd&&$wi){foreach($wi -as$z=>$X){$Yg[]=idf_escape($z);if($gd)$gd[]=idf_escape($z);}}$K=driver()->select($a,$Yg,$Z,$gd,$yf,$_,$G,true);if(!$K)echo"

    ".error()."\n";else{if(JUSH=="mssql"&&$G)$K->seek($_*$G);$jc=array();echo"

    \n";$N=array();while($M=$K->fetch_assoc()){if($G&&JUSH=="oracle")unset($M["RNUM"]);$N[]=$M;}if($_GET["page"]!="last"&&$_&&$s&&$Xd&&JUSH=="sql")$Yc=get_val(" SELECT FOUND_ROWS()");if(!$N)echo"

    ".lang(14)."\n";else{$Ca=adminer()->backwardKeys($a,$Hh);echo"

    ","",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"".(!$s&&$O?"":"\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($N,$Vc)as$Xe=>$M){$ti=unique_array($N[$Xe],$x);if(!$ti){$ti=array();reset($O);foreach($N[$Xe]as$z=>$X){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($O)))$ti[$z]=$X;next($O);}}$ui="";foreach($ti -as$z=>$X){$m=(array)$n[$z];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$z=(strpos($z,'(')?$z:idf_escape($z));$z="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$z:"CONVERT($z USING ".charset(connection()).")").")";$X=md5($X);}$ui -.="&".($X!==null?urlencode("where[".bracket_escape($z)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($z));}echo"".(!$s&&$O?"":"\n";}if(is_ajax())exit;echo"
    ".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." ".lang(251)."");$Ze=array();$bd=array();reset($O);$zg=1;foreach($N[0]as$z=>$X){if(!isset($wi[$z])){$X=idx($_GET["columns"],key($O))?:array();$m=$n[$O?($X?$X["col"]:current($O)):$z];$E=($m?adminer()->fieldName($m,$zg):($X["fun"]?"*":h($z)));if($E!=""){$zg++;$Ze[$z]=$E;$c=idf_escape($z);$wd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($z);$Ob="&desc%5B0%5D=1";echo"".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$ad=apply_sql_function($X["fun"],$E);$nh=isset($m["privileges"]["order"])||$ad;echo($nh?"$ad":$ad),"";}$bd[$z]=$X["fun"];next($O);}}$se=array();if($_GET["modify"]){foreach($N -as$M){foreach($M -as$z=>$X)$se[$z]=max($se[$z],min(40,strlen(utf8_decode($X))));}}echo($Ca?"".lang(252):"")."
    ".checkbox("check[]",substr($ui,1),in_array(substr($ui,1),(array)$_POST["check"])).($Xd||information_schema(DB)?"":" ".lang(253).""));reset($O);foreach($M -as$z=>$X){if(isset($Ze[$z])){$c=current($O);$m=(array)$n[$z];$X=driver()->value($X,$m);if($X!=""&&(!isset($jc[$z])||$jc[$z]!=""))$jc[$z]=(is_mail($X)?$Ze[$z]:"");$A="";if(is_blob($m)&&$X!="")$A=ME.'download='.urlencode($a).'&field='.urlencode($z).$ui;if(!$A&&$X!==null){foreach((array)$Vc[$z]as$p){if(count($Vc[$z])==1||end($p["source"])==$z){$A="";foreach($p["source"]as$t=>$oh)$A -.=where_link($t,$p["target"][$t],$N[$Xe][$oh]);$A=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$A;if($p["ns"])$A=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$A);if(count($p["source"])==1)break;}}}if($c=="COUNT(*)"){$A=ME."select=".urlencode($a);$t=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$ti))$A -.=where_link($t++,$W["col"],$W["val"],$W["op"]);}foreach($ti -as$de=>$W)$A -.=where_link($t++,$de,$W);}$xd=select_value($X,$A,$m,$Uh);$u=h("val[$ui][".bracket_escape($z)."]");$kg=idx(idx($_POST["val"],$ui),bracket_escape($z));$ec=!is_array($M[$z])&&is_utf8($xd)&&$N[$Xe][$z]==$M[$z]&&!$bd[$z]&&!$m["generated"];$U=(preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$c,$C)?$n[idf_unescape($C[2])]["type"]:$m["type"]);$Th=preg_match('~text|json|lob~',$U);$Yd=preg_match(number_type(),$U)||preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|TIME_TO_SEC|COUNT|SUM)\(~',$c);echo"".($Th?"":"");}else{$xe=strpos($xd,"");echo" data-text='".($xe?2:($Th?1:0))."'".($ec?"":" data-warning='".h(lang(254))."'").">$xd";}}next($O);}if($Ca)echo"";adminer()->backwardKeysPrint($Ca,$N[$Xe]);echo"
    \n","
    \n";}if(!is_ajax()){if($N||$G){$xc=true;if($_GET["page"]!="last"){if(!$_||(count($N)<$_&&($N||!$G)))$Yc=($G?$G*$_:0)+count($N);elseif(JUSH!="sql"||!$Xd){$Yc=($Xd?false:found_rows($S,$Z));if(intval($Yc)$_||$G));if($Lf)echo(($Yc===false?count($N)+1:$Yc-$G*$_)>$_?'

    '.lang(255).''.script("qsl('a').onclick = partial(selectLoadMore, $_, '".lang(256)."…');",""):''),"\n";echo"

    \n";}if(adminer()->selectImportPrint())echo"

    ","".lang(66)."",script("qsl('a').onclick = partial(toggle, 'import');",""),"";echo -input_token(),"

    \n",(!$s&&$O?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$wh=isset($_GET["status"]);page_header($wh?lang(118):lang(117));$Ji=($wh?show_status():show_variables());if(!$Ji)echo"

    ".lang(14)."\n";else{echo"\n";foreach($Ji -as$M){echo"";$z=array_shift($M);echo"
    ".h($z)."";foreach($M -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"){$Eh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$E=>$S){json_row("Comment-$E",h($S["Comment"]));if(!is_view($S)||preg_match('~materialized~i',$S["Engine"])){foreach(array("Engine","Collation")as$z)json_row("$z-$E",h($S[$z]));foreach($Eh+array("Auto_increment"=>0,"Rows"=>0)as$z=>$X){if($S[$z]!=""){$X=format_number($S[$z]);if($X>=0)json_row("$z-$E",($z=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Eh[$z]))$Eh[$z]+=($S["Engine"]!="InnoDB"||$z!="Data_free"?$S[$z]:0);}elseif(array_key_exists($z,$S))json_row("$z-$E","?");}}}foreach($Eh -as$z=>$X)json_row("sum-$z",format_number($X));json_row("");}elseif($_GET["script"]=="kill")connection()->query("KILL ".number($_POST["kill"]));else{foreach(count_tables(adminer()->databases())as$j=>$X){json_row("tables-$j",$X);json_row("size-$j",db_size($j));}json_row("");}exit;}else{$Nh=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Nh&&!$l&&!$_POST["search"]){$K=true;$D="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$K=truncate_tables($_POST["tables"]);$D=lang(260);}elseif($_POST["move"]){$K=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=lang(261);}elseif($_POST["copy"]){$K=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=lang(262);}elseif($_POST["drop"]){if($_POST["views"])$K=drop_views($_POST["views"]);if($K&&$_POST["tables"])$K=drop_tables($_POST["tables"]);$D=lang(263);}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$M)$D -.="".h($R).": ".h($M["integrity_check"])."
    ";}}elseif(JUSH!="sql"){$K=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D=lang(264);}elseif(!$_POST["tables"])$D=lang(11);elseif($K=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($M=$K->fetch_assoc())$D -.="".h($M["Table"]).": ".h($M["Msg_text"])."
    ";}queries_redirect(substr(ME,0,-1),$D,$K);}page_header(($_GET["ns"]==""?lang(28).": ".h(DB):lang(265).": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"

    ".lang(266)."

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

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

    \n";if(support("table")){echo"
    ".lang(267)."
    ",html_select("op",adminer()->operators(),idx($_POST,"op",JUSH=="elastic"?"should":"LIKE %%"))," ",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," \n","
    \n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"
    \n","\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'','\n";$T=0;foreach($Mh -as$E=>$U){$Mi=($U!==null&&!preg_match('~table|sequence~i',$U));$u=h("Table-".$E);echo'
    '.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),''.lang(132),''.lang(268).doc_link(array('sql'=>'storage-engines.html')),''.lang(122).doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),''.lang(269).doc_link(array('sql'=>'show-table-status.html',)),''.lang(270).doc_link(array('sql'=>'show-table-status.html',)),''.lang(271).doc_link(array('sql'=>'show-table-status.html')),''.lang(42).doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),''.lang(272).doc_link(array('sql'=>'show-table-status.html',)),(support("comment")?''.lang(41).doc_link(array('sql'=>'show-table-status.html',)):''),"
    '.checkbox(($Mi?"views[]":"tables[]"),$E,in_array("$E",$Nh,true),"","","",$u),''.(support("table")||support("indexes")?"".h($E).'':h($E));if($Mi&&!preg_match('~materialized~i',$U)){$Yh=lang(131);echo''.(support("view")?"$Yh":$Yh),'?';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(34)),"Index_length"=>array("indexes",lang(135)),"Data_free"=>array("edit",lang(36)),"Auto_increment"=>array("auto_increment=1&create",lang(34)),"Rows"=>array("select",lang(32)),)as$z=>$A){$u=" id='$z-".h($E)."'";echo($A?"".(support("table")||$z=="Rows"||(support("indexes")&&$z!="Data_length")?"?":"?"):"");}$T++;}echo(support("comment")?"":""),"\n";}echo"
    ".lang(244,count($Mh)),"".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$z)echo"";echo"\n","
    \n",script("ajaxSetHtml('".js_escape(ME)."script=db');"),"
    \n";if(!information_schema(DB)){echo"\n";}echo"
    \n",script("tableCheck();");}echo"

    ".lang(63)."

    \n";$Qg=routines();if($Qg){echo"\n",'\n";foreach($Qg -as$M){$E=($M["SPECIFIC_NAME"]==$M["ROUTINE_NAME"]?"":"&name=".urlencode($M["ROUTINE_NAME"]));echo'','
    '.lang(187).''.lang(40).''.lang(223)."
    '.h($M["ROUTINE_NAME"]).'',''.h($M["ROUTINE_TYPE"]),''.h($M["DTD_IDENTIFIER"]),''.lang(138)."";}echo"
    \n";}echo'

    ".lang(65)."

    \n";$N=get_rows("SHOW EVENTS");if($N){echo"\n","\n";foreach($N -as$M)echo"","
    ".lang(187)."".lang(283)."".lang(212)."".lang(213)."
    ".h($M["Name"]),"".($M["Execute at"]?lang(284)."".$M["Execute at"]:lang(214)." ".$M["Interval value"]." ".$M["Interval field"]."$M[Starts]"),"$M[Ends]",''.lang(138).'';echo"
    \n";$vc=get_val("SELECT @@event_scheduler");if($vc&&$vc!="ON")echo"

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

    \n"; } diff --git a/webapp/templates/jury/index.html.twig b/webapp/templates/jury/index.html.twig index 4b5184ec58..19e02a6709 100644 --- a/webapp/templates/jury/index.html.twig +++ b/webapp/templates/jury/index.html.twig @@ -90,7 +90,7 @@

  • Refresh scoreboard cache
  • Audit log
  • {% if adminer_enabled %} -
  • Adminer Database Editor
  • +
  • Adminer Database Editor
  • {% endif %}