1700 lines
No EOL
313 KiB
PHP
1700 lines
No EOL
313 KiB
PHP
<?php
|
||
/** Adminer - Compact database management
|
||
* @link https://www.adminer.org/
|
||
* @author Jakub Vrana, https://www.vrana.cz/
|
||
* @copyright 2007 Jakub Vrana
|
||
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
|
||
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
|
||
* @version 5.2.1
|
||
*/namespace
|
||
Adminer;const
|
||
VERSION="5.2.1";error_reporting(24575);set_error_handler(function($Ac,$Cc){return!!preg_match('~^Undefined (array key|offset|index)~',$Cc);},E_WARNING|E_NOTICE);$Xc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Xc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$Yi=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($Yi)$$X=$Yi;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");function
|
||
connection($g=null){return($g?:Db::$fe);}function
|
||
adminer(){return
|
||
Adminer::$fe;}function
|
||
driver(){return
|
||
Driver::$fe;}function
|
||
connect(){$Db=adminer()->credentials();$J=Driver::connect($Db[0],$Db[1],$Db[2]);return(is_object($J)?$J:null);}function
|
||
idf_unescape($u){if(!preg_match('~^[`\'"[]~',$u))return$u;$ye=substr($u,-1);return
|
||
str_replace($ye.$ye,$ye,substr($u,1,-1));}function
|
||
q($Q){return
|
||
connection()->quote($Q);}function
|
||
escape_string($X){return
|
||
substr(q($X),1,-1);}function
|
||
idx($va,$x,$k=null){return($va&&array_key_exists($x,$va)?$va[$x]:$k);}function
|
||
number($X){return
|
||
preg_replace('~[^0-9]+~','',$X);}function
|
||
number_type(){return'((?<!o)int(?!er)|numeric|real|float|double|decimal|money)';}function
|
||
remove_slashes(array$Gg,$Xc=false){if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){while(list($x,$X)=each($Gg)){foreach($X
|
||
as$qe=>$W){unset($Gg[$x][$qe]);if(is_array($W)){$Gg[$x][stripslashes($qe)]=$W;$Gg[]=&$Gg[$x][stripslashes($qe)];}else$Gg[$x][stripslashes($qe)]=($Xc?$W:stripslashes($W));}}}}function
|
||
bracket_escape($u,$Ca=false){static$Hi=array(':'=>':1',']'=>':2','['=>':3','"'=>':4');return
|
||
strtr($u,($Ca?array_flip($Hi):$Hi));}function
|
||
min_version($pj,$Ke="",$g=null){$g=connection($g);$Ah=$g->server_info;if($Ke&&preg_match('~([\d.]+)-MariaDB~',$Ah,$B)){$Ah=$B[1];$pj=$Ke;}return$pj&&version_compare($Ah,$pj)>=0;}function
|
||
charset(Db$f){return(min_version("5.5.3",0,$f)?"utf8mb4":"utf8");}function
|
||
ini_bool($ae){$X=ini_get($ae);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
|
||
sid(){static$J;if($J===null)$J=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$J;}function
|
||
set_password($oj,$N,$V,$F){$_SESSION["pwds"][$oj][$N][$V]=($_COOKIE["adminer_key"]&&is_string($F)?array(encrypt_string($F,$_COOKIE["adminer_key"])):$F);}function
|
||
get_password(){$J=get_session("pwds");if(is_array($J))$J=($_COOKIE["adminer_key"]?decrypt_string($J[0],$_COOKIE["adminer_key"]):false);return$J;}function
|
||
get_val($H,$m=0,$rb=null){$rb=connection($rb);$I=$rb->query($H);if(!is_object($I))return
|
||
false;$K=$I->fetch_row();return($K?$K[$m]:false);}function
|
||
get_vals($H,$d=0){$J=array();$I=connection()->query($H);if(is_object($I)){while($K=$I->fetch_row())$J[]=$K[$d];}return$J;}function
|
||
get_key_vals($H,$g=null,$Dh=true){$g=connection($g);$J=array();$I=$g->query($H);if(is_object($I)){while($K=$I->fetch_row()){if($Dh)$J[$K[0]]=$K[1];else$J[]=$K[0];}}return$J;}function
|
||
get_rows($H,$g=null,$l="<p class='error'>"){$rb=connection($g);$J=array();$I=$rb->query($H);if(is_object($I)){while($K=$I->fetch_assoc())$J[]=$K;}elseif(!$I&&!$g&&$l&&(defined('Adminer\PAGE_HEADER')||$l=="-- "))echo$l.error()."\n";return$J;}function
|
||
unique_array($K,array$w){foreach($w
|
||
as$v){if(preg_match("~PRIMARY|UNIQUE~",$v["type"])){$J=array();foreach($v["columns"]as$x){if(!isset($K[$x]))continue
|
||
2;$J[$x]=$K[$x];}return$J;}}}function
|
||
escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$B))return$B[1].idf_escape(idf_unescape($B[2])).$B[3];return
|
||
idf_escape($x);}function
|
||
where(array$Z,array$n=array()){$J=array();foreach((array)$Z["where"]as$x=>$X){$x=bracket_escape($x,true);$d=escape_key($x);$m=idx($n,$x,array());$Vc=$m["type"];$J[]=$d.(JUSH=="sql"&&$Vc=="json"?" = CAST(".q($X)." AS JSON)":(JUSH=="sql"&&is_numeric($X)&&preg_match('~\.~',$X)?" LIKE ".q($X):(JUSH=="mssql"&&strpos($Vc,"datetime")===false?" LIKE ".q(preg_replace('~[_%[]~','[\0]',$X)):" = ".unconvert_field($m,q($X)))));if(JUSH=="sql"&&preg_match('~char|text~',$Vc)&&preg_match("~[^ -@]~",$X))$J[]="$d = ".q($X)." COLLATE ".charset(connection())."_bin";}foreach((array)$Z["null"]as$x)$J[]=escape_key($x)." IS NULL";return
|
||
implode(" AND ",$J);}function
|
||
where_check($X,array$n=array()){parse_str($X,$Va);remove_slashes(array(&$Va));return
|
||
where($Va,$n);}function
|
||
where_link($s,$d,$Y,$Hf="="){return"&where%5B$s%5D%5Bcol%5D=".urlencode($d)."&where%5B$s%5D%5Bop%5D=".urlencode(($Y!==null?$Hf:"IS NULL"))."&where%5B$s%5D%5Bval%5D=".urlencode($Y);}function
|
||
convert_fields(array$e,array$n,array$M=array()){$J="";foreach($e
|
||
as$x=>$X){if($M&&!in_array(idf_escape($x),$M))continue;$wa=convert_field($n[$x]);if($wa)$J
|
||
.=", $wa AS ".idf_escape($x);}return$J;}function
|
||
cookie($C,$Y,$Ee=2592000){header("Set-Cookie: $C=".urlencode($Y).($Ee?"; expires=".gmdate("D, d M Y H:i:s",time()+$Ee)." GMT":"")."; path=".preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]).(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
|
||
get_settings($_b){parse_str($_COOKIE[$_b],$Eh);return$Eh;}function
|
||
get_setting($x,$_b="adminer_settings"){$Eh=get_settings($_b);return$Eh[$x];}function
|
||
save_settings(array$Eh,$_b="adminer_settings"){$Y=http_build_query($Eh+get_settings($_b));cookie($_b,$Y);$_COOKIE[$_b]=$Y;}function
|
||
restart_session(){if(!ini_bool("session.use_cookies")&&(!function_exists('session_status')||session_status()==1))session_start();}function
|
||
stop_session($fd=false){$gj=ini_bool("session.use_cookies");if(!$gj||$fd){session_write_close();if($gj&&@ini_set("session.use_cookies",'0')===false)session_start();}}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function
|
||
set_session($x,$X){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$X;}function
|
||
auth_url($oj,$N,$V,$j=null){$cj=remove_from_uri(implode("|",array_keys(SqlDriver::$ec))."|username|ext|".($j!==null?"db|":"").($oj=='mssql'||$oj=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$cj,$B);return"$B[1]?".(sid()?SID."&":"").($oj!="server"||$N!=""?urlencode($oj)."=".urlencode($N)."&":"").($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($V).($j!=""?"&db=".urlencode($j):"").($B[2]?"&$B[2]":"");}function
|
||
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
|
||
redirect($A,$Xe=null){if($Xe!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($A!==null?$A:$_SERVER["REQUEST_URI"]))][]=$Xe;}if($A!==null){if($A=="")$A=".";header("Location: $A");exit;}}function
|
||
query_redirect($H,$A,$Xe,$Pg=true,$Hc=true,$Qc=false,$vi=""){if($Hc){$Th=microtime(true);$Qc=!connection()->query($H);$vi=format_time($Th);}$Nh=($H?adminer()->messageQuery($H,$vi,$Qc):"");if($Qc){adminer()->error
|
||
.=error().$Nh.script("messagesPrint();")."<br>";return
|
||
false;}if($Pg)redirect($A,$Xe.$Nh);return
|
||
true;}class
|
||
Queries{static$Kg=array();static$Th=0;}function
|
||
queries($H){if(!Queries::$Th)Queries::$Th=microtime(true);Queries::$Kg[]=(preg_match('~;$~',$H)?"DELIMITER ;;\n$H;\nDELIMITER ":$H).";";return
|
||
connection()->query($H);}function
|
||
apply_queries($H,array$T,$Dc='Adminer\table'){foreach($T
|
||
as$R){if(!queries("$H ".$Dc($R)))return
|
||
false;}return
|
||
true;}function
|
||
queries_redirect($A,$Xe,$Pg){$Kg=implode("\n",Queries::$Kg);$vi=format_time(Queries::$Th);return
|
||
query_redirect($Kg,$A,$Xe,$Pg,false,!$Pg,$vi);}function
|
||
format_time($Th){return
|
||
sprintf('%.3f s',max(0,microtime(true)-$Th));}function
|
||
relative_uri(){return
|
||
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
|
||
remove_from_uri($eg=""){return
|
||
substr(preg_replace("~(?<=[?&])($eg".(SID?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
|
||
get_file($x,$Pb=false,$Ub=""){$Wc=$_FILES[$x];if(!$Wc)return
|
||
null;foreach($Wc
|
||
as$x=>$X)$Wc[$x]=(array)$X;$J='';foreach($Wc["error"]as$x=>$l){if($l)return$l;$C=$Wc["name"][$x];$Ci=$Wc["tmp_name"][$x];$wb=file_get_contents($Pb&&preg_match('~\.gz$~',$C)?"compress.zlib://$Ci":$Ci);if($Pb){$Th=substr($wb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Th))$wb=iconv("utf-16","utf-8",$wb);elseif($Th=="\xEF\xBB\xBF")$wb=substr($wb,3);}$J
|
||
.=$wb;if($Ub)$J
|
||
.=(preg_match("($Ub\\s*\$)",$wb)?"":$Ub)."\n\n";}return$J;}function
|
||
upload_error($l){$Se=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?'Unable to upload a file.'.($Se?" ".sprintf('Maximum allowed file size is %sB.',$Se):""):'File does not exist.');}function
|
||
repeat_pattern($og,$y){return
|
||
str_repeat("$og{0,65535}",$y/65535)."$og{0,".($y%65535)."}";}function
|
||
is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$X));}function
|
||
format_number($X){return
|
||
strtr(number_format($X,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function
|
||
friendly_url($X){return
|
||
preg_replace('~\W~i','-',$X);}function
|
||
table_status1($R,$Rc=false){$J=table_status($R,$Rc);return($J?reset($J):array("Name"=>$R));}function
|
||
column_foreign_keys($R){$J=array();foreach(adminer()->foreignKeys($R)as$p){foreach($p["source"]as$X)$J[$X][]=$p;}return$J;}function
|
||
fields_from_edit(){$J=array();foreach((array)$_POST["field_keys"]as$x=>$X){if($X!=""){$X=bracket_escape($X);$_POST["function"][$X]=$_POST["field_funs"][$x];$_POST["fields"][$X]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$X){$C=bracket_escape($x,true);$J[$C]=array("field"=>$C,"privileges"=>array("insert"=>1,"update"=>1,"where"=>1,"order"=>1),"null"=>1,"auto_increment"=>($x==driver()->primary),);}return$J;}function
|
||
dump_headers($Nd,$hf=false){$J=adminer()->dumpHeaders($Nd,$hf);$ag=$_POST["output"];if($ag!="text")header("Content-Disposition: attachment; filename=".adminer()->dumpFilename($Nd).".$J".($ag!="file"&&preg_match('~^[0-9a-z]+$~',$ag)?".$ag":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$J;}function
|
||
dump_csv(array$K){foreach($K
|
||
as$x=>$X){if(preg_match('~["\n,;\t]|^0|\.\d*0$~',$X)||$X==="")$K[$x]='"'.str_replace('"','""',$X).'"';}echo
|
||
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$K)."\r\n";}function
|
||
apply_sql_function($r,$d){return($r?($r=="unixepoch"?"DATETIME($d, '$r')":($r=="count distinct"?"COUNT(DISTINCT ":strtoupper("$r("))."$d)"):$d);}function
|
||
get_temp_dir(){$J=ini_get("upload_tmp_dir");if(!$J){if(function_exists('sys_get_temp_dir'))$J=sys_get_temp_dir();else{$o=@tempnam("","");if(!$o)return'';$J=dirname($o);unlink($o);}}return$J;}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,$Jb){rewind($q);fwrite($q,$Jb);ftruncate($q,strlen($Jb));file_unlock($q);}function
|
||
file_unlock($q){flock($q,LOCK_UN);fclose($q);}function
|
||
first(array$va){return
|
||
reset($va);}function
|
||
password_file($h){$o=get_temp_dir()."/adminer.key";if(!$h&&!file_exists($o))return'';$q=file_open_lock($o);if(!$q)return'';$J=stream_get_contents($q);if(!$J){$J=rand_string();file_write_unlock($q,$J);}else
|
||
file_unlock($q);return$J;}function
|
||
rand_string(){return
|
||
md5(uniqid(strval(mt_rand()),true));}function
|
||
select_value($X,$_,array$m,$ui){if(is_array($X)){$J="";foreach($X
|
||
as$qe=>$W)$J
|
||
.="<tr>".($X!=array_values($X)?"<th>".h($qe):"")."<td>".select_value($W,$_,$m,$ui);return"<table>$J</table>";}if(!$_)$_=adminer()->selectLink($X,$m);if($_===null){if(is_mail($X))$_="mailto:$X";if(is_url($X))$_=$X;}$J=adminer()->editVal($X,$m);if($J!==null){if(!is_utf8($J))$J="\0";elseif($ui!=""&&is_shortable($m))$J=shorten_utf8($J,max(0,+$ui));else$J=h($J);}return
|
||
adminer()->selectVal($J,$_,$m,$X);}function
|
||
is_mail($rc){$xa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$dc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$og="$xa+(\\.$xa+)*@($dc?\\.)+$dc";return
|
||
is_string($rc)&&preg_match("(^$og(,\\s*$og)*\$)i",$rc);}function
|
||
is_url($Q){$dc='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return
|
||
preg_match("~^(https?)://($dc?\\.)+$dc(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q);}function
|
||
is_shortable(array$m){return
|
||
preg_match('~char|text|json|lob|geometry|point|linestring|polygon|string|bytea~',$m["type"]);}function
|
||
count_rows($R,array$Z,$ke,array$td){$H=" FROM ".table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($ke&&(JUSH=="sql"||count($td)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$td).")$H":"SELECT COUNT(*)".($ke?" FROM (SELECT 1$H GROUP BY ".implode(", ",$td).") x":$H));}function
|
||
slow_query($H){$j=adminer()->database();$wi=adminer()->queryTimeout();$Ih=driver()->slowQuery($H,$wi);$g=null;if(!$Ih&&support("kill")){$g=connect();if($g&&($j==""||$g->select_db($j))){$te=get_val(connection_id(),0,$g);echo
|
||
script("const timeout = setTimeout(() => { ajax('".js_escape(ME)."script=kill', function () {}, 'kill=$te&token=".get_token()."'); }, 1000 * $wi);");}}ob_flush();flush();$J=@get_key_vals(($Ih?:$H),$g,false);if($g){echo
|
||
script("clearTimeout(timeout);");ob_flush();flush();}return$J;}function
|
||
get_token(){$Ng=rand(1,1e6);return($Ng^$_SESSION["token"]).":$Ng";}function
|
||
verify_token(){list($Di,$Ng)=explode(":",$_POST["token"]);return($Ng^$_SESSION["token"])==$Di;}function
|
||
lzw_decompress($Ia){$Zb=256;$Ja=8;$eb=array();$ah=0;$bh=0;for($s=0;$s<strlen($Ia);$s++){$ah=($ah<<8)+ord($Ia[$s]);$bh+=8;if($bh>=$Ja){$bh-=$Ja;$eb[]=$ah>>$bh;$ah&=(1<<$bh)-1;$Zb++;if($Zb>>$Ja)$Ja++;}}$Yb=range("\0","\xFF");$J="";$yj="";foreach($eb
|
||
as$s=>$db){$qc=$Yb[$db];if(!isset($qc))$qc=$yj.$yj[0];$J
|
||
.=$qc;if($s)$Yb[]=$yj.$qc[0];$yj=$qc;}return$J;}function
|
||
script($Kh,$Gi="\n"){return"<script".nonce().">$Kh</script>$Gi";}function
|
||
script_src($dj,$Rb=false){return"<script src='".h($dj)."'".nonce().($Rb?" defer":"")."></script>\n";}function
|
||
nonce(){return' nonce="'.get_nonce().'"';}function
|
||
input_hidden($C,$Y=""){return"<input type='hidden' name='".h($C)."' value='".h($Y)."'>\n";}function
|
||
input_token(){return
|
||
input_hidden("token",get_token());}function
|
||
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
|
||
h($Q){return
|
||
str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
|
||
nl_br($Q){return
|
||
str_replace("\n","<br>",$Q);}function
|
||
checkbox($C,$Y,$Ya,$ve="",$Gf="",$cb="",$xe=""){$J="<input type='checkbox' name='$C' value='".h($Y)."'".($Ya?" checked":"").($xe?" aria-labelledby='$xe'":"").">".($Gf?script("qsl('input').onclick = function () { $Gf };",""):"");return($ve!=""||$cb?"<label".($cb?" class='$cb'":"").">$J".h($ve)."</label>":$J);}function
|
||
optionlist($Lf,$th=null,$hj=false){$J="";foreach($Lf
|
||
as$qe=>$W){$Mf=array($qe=>$W);if(is_array($W)){$J
|
||
.='<optgroup label="'.h($qe).'">';$Mf=$W;}foreach($Mf
|
||
as$x=>$X)$J
|
||
.='<option'.($hj||is_string($x)?' value="'.h($x).'"':'').($th!==null&&($hj||is_string($x)?(string)$x:$X)===$th?' selected':'').'>'.h($X);if(is_array($W))$J
|
||
.='</optgroup>';}return$J;}function
|
||
html_select($C,array$Lf,$Y="",$Ff="",$xe=""){static$ve=0;$we="";if(!$xe&&substr($Lf[""],0,1)=="("){$ve++;$xe="label-$ve";$we="<option value='' id='$xe'>".h($Lf[""]);unset($Lf[""]);}return"<select name='".h($C)."'".($xe?" aria-labelledby='$xe'":"").">".$we.optionlist($Lf,$Y)."</select>".($Ff?script("qsl('select').onchange = function () { $Ff };",""):"");}function
|
||
html_radios($C,array$Lf,$Y="",$xh=""){$J="";foreach($Lf
|
||
as$x=>$X)$J
|
||
.="<label><input type='radio' name='".h($C)."' value='".h($x)."'".($x==$Y?" checked":"").">".h($X)."</label>$xh";return$J;}function
|
||
confirm($Xe="",$uh="qsl('input')"){return
|
||
script("$uh.onclick = () => confirm('".($Xe?js_escape($Xe):'Are you sure?')."');","");}function
|
||
print_fieldset($t,$Ce,$sj=false){echo"<fieldset><legend>","<a href='#fieldset-$t'>$Ce</a>",script("qsl('a').onclick = partial(toggle, 'fieldset-$t');",""),"</legend>","<div id='fieldset-$t'".($sj?"":" class='hidden'").">\n";}function
|
||
bold($La,$cb=""){return($La?" class='active $cb'":($cb?" class='$cb'":""));}function
|
||
js_escape($Q){return
|
||
addcslashes($Q,"\r\n'\\/");}function
|
||
pagination($E,$Gb){return" ".($E==$Gb?$E+1:'<a href="'.h(remove_from_uri("page").($E?"&page=$E".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($E+1)."</a>");}function
|
||
hidden_fields(array$Gg,array$Qd=array(),$_g=''){$J=false;foreach($Gg
|
||
as$x=>$X){if(!in_array($x,$Qd)){if(is_array($X))hidden_fields($X,array(),$x);else{$J=true;echo
|
||
input_hidden(($_g?$_g."[$x]":$x),$X);}}}return$J;}function
|
||
hidden_fields_get(){echo(sid()?input_hidden(session_name(),session_id()):''),(SERVER!==null?input_hidden(DRIVER,SERVER):""),input_hidden("username",$_GET["username"]);}function
|
||
enum_input($U,$ya,array$m,$Y,$uc=null){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Ne);$J=($uc!==null?"<label><input type='$U'$ya value='$uc'".((is_array($Y)?in_array($uc,$Y):$Y===$uc)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Ne[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ya=(is_array($Y)?in_array($X,$Y):$Y===$X);$J
|
||
.=" <label><input type='$U'$ya value='".h($X)."'".($Ya?' checked':'').'>'.h(adminer()->editVal($X,$m)).'</label>';}return$J;}function
|
||
input(array$m,$Y,$r,$Ba=false){$C=h(bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$r){$Y=json_encode($Y,128|64|256);$r="json";}$Zg=(JUSH=="mssql"&&$m["auto_increment"]);if($Zg&&!$_POST["save"])$r=null;$od=(isset($_GET["select"])||$Zg?array("orig"=>'original'):array())+adminer()->editFunctions($m);$ac=stripos($m["default"],"GENERATED ALWAYS AS ")===0?" disabled=''":"";$ya=" name='fields[$C]'$ac".($Ba?" autofocus":"");$_c=driver()->enumLength($m);if($_c){$m["type"]="enum";$m["length"]=$_c;}echo
|
||
driver()->unconvertFunction($m)." ";$R=$_GET["edit"]?:$_GET["select"];if($m["type"]=="enum")echo
|
||
h($od[""])."<td>".adminer()->editInput($R,$m,$ya,$Y);else{$Ad=(in_array($r,$od)||isset($od[$r]));echo(count($od)>1?"<select name='function[$C]'$ac>".optionlist($od,$r===null||$Ad?$r:"")."</select>".on_help("event.target.value.replace(/^SQL\$/, '')",1).script("qsl('select').onchange = functionChange;",""):h(reset($od))).'<td>';$ce=adminer()->editInput($R,$m,$ya,$Y);if($ce!="")echo$ce;elseif(preg_match('~bool~',$m["type"]))echo"<input type='hidden'$ya value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$Y)?" checked='checked'":"")."$ya value='1'>";elseif($m["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$Ne);foreach($Ne[1]as$s=>$X){$X=stripcslashes(str_replace("''","'",$X));$Ya=in_array($X,explode(",",$Y),true);echo" <label><input type='checkbox' name='fields[$C][$s]' value='".h($X)."'".($Ya?' checked':'').">".h(adminer()->editVal($X,$m)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$m["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$C'>";elseif($r=="json"||preg_match('~^jsonb?$~',$m["type"]))echo"<textarea$ya cols='50' rows='12' class='jush-js'>".h($Y).'</textarea>';elseif(($si=preg_match('~text|lob|memo~i',$m["type"]))||preg_match("~\n~",$Y)){if($si&&JUSH!="sqlite")$ya
|
||
.=" cols='50' rows='12'";else{$L=min(12,substr_count($Y,"\n")+1);$ya
|
||
.=" cols='30' rows='$L'";}echo"<textarea$ya>".h($Y).'</textarea>';}else{$Si=driver()->types();$Ue=(!preg_match('~int~',$m["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$m["length"],$B)?((preg_match("~binary~",$m["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$m["unsigned"]?1:0)):($Si[$m["type"]]?$Si[$m["type"]]+($m["unsigned"]?0:1):0));if(JUSH=='sql'&&min_version(5.6)&&preg_match('~time~',$m["type"]))$Ue+=7;echo"<input".((!$Ad||$r==="")&&preg_match('~(?<!o)int(?!er)~',$m["type"])&&!preg_match('~\[\]~',$m["full_type"])?" type='number'":"")." value='".h($Y)."'".($Ue?" data-maxlength='$Ue'":"").(preg_match('~char|binary~',$m["type"])&&$Ue>20?" size='".($Ue>99?60:40)."'":"")."$ya>";}echo
|
||
adminer()->editHint($R,$m,$Y);$Yc=0;foreach($od
|
||
as$x=>$X){if($x===""||!$X)break;$Yc++;}if($Yc&&count($od)>1)echo
|
||
script("qsl('td').oninput = partial(skipOriginal, $Yc);");}}function
|
||
process_input(array$m){if(stripos($m["default"],"GENERATED ALWAYS AS ")===0)return;$u=bracket_escape($m["field"]);$r=idx($_POST["function"],$u);$Y=$_POST["fields"][$u];if($m["type"]=="enum"||driver()->enumLength($m)){if($Y==-1)return
|
||
false;if($Y=="")return"NULL";}if($m["auto_increment"]&&$Y=="")return
|
||
null;if($r=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?idf_escape($m["field"]):false);if($r=="NULL")return"NULL";if($m["type"]=="set")$Y=implode(",",(array)$Y);if($r=="json"){$r="";$Y=json_decode($Y,true);if(!is_array($Y))return
|
||
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$m["type"])&&ini_bool("file_uploads")){$Wc=get_file("fields-$u");if(!is_string($Wc))return
|
||
false;return
|
||
driver()->quoteBinary($Wc);}return
|
||
adminer()->processInput($m,$Y,$r);}function
|
||
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$wh="<ul>\n";foreach(table_status('',true)as$R=>$S){$C=adminer()->tableName($S);if(isset($S["Engine"])&&$C!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$I=connection()->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",adminer()->selectSearchProcess(fields($R),array())),1));if(!$I||$I->fetch_row()){$Cg="<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$C</a>";echo"$wh<li>".($I?$Cg:"<p class='error'>$Cg: ".error())."\n";$wh="";}}}echo($wh?"<p class='message'>".'No tables.':"</ul>")."\n";}function
|
||
on_help($kb,$Gh=0){return
|
||
script("mixin(qsl('select, input'), {onmouseover: function (event) { helpMouseover.call(this, event, $kb, $Gh) }, onmouseout: helpMouseout});","");}function
|
||
edit_form($R,array$n,$K,$bj,$l=''){$fi=adminer()->tableName(table_status1($R,true));page_header(($bj?'Edit':'Insert'),$l,array("select"=>array($R,$fi)),$fi);adminer()->editRowPrint($R,$n,$K,$bj);if($K===false){echo"<p class='error'>".'No rows.'."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";if(!$n)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table class='layout'>".script("qsl('table').onkeydown = editingKeydown;");$Ba=!$_POST;foreach($n
|
||
as$C=>$m){echo"<tr><th>".adminer()->fieldName($m);$k=idx($_GET["set"],bracket_escape($C));if($k===null){$k=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$k,$Wg))$k=$Wg[1];if(JUSH=="sql"&&preg_match('~binary~',$m["type"]))$k=bin2hex($k);}$Y=($K!==null?($K[$C]!=""&&JUSH=="sql"&&preg_match("~enum|set~",$m["type"])&&is_array($K[$C])?implode(",",$K[$C]):(is_bool($K[$C])?+$K[$C]:$K[$C])):(!$bj&&$m["auto_increment"]?"":(isset($_GET["select"])?false:$k)));if(!$_POST["save"]&&is_string($Y))$Y=adminer()->editVal($Y,$m);$r=($_POST["save"]?idx($_POST["function"],$C,""):($bj&&preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(!$_POST&&!$bj&&$Y==$m["default"]&&preg_match('~^[\w.]+\(~',$Y))$r="SQL";if(preg_match("~time~",$m["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$Y)){$Y="";$r="now";}if($m["type"]=="uuid"&&$Y=="uuid()"){$Y="";$r="uuid";}if($Ba!==false)$Ba=($m["auto_increment"]||$r=="now"||$r=="uuid"?null:true);input($m,$Y,$r,$Ba);if($Ba)$Ba=false;echo"\n";}if(!support("table")&&!fields($R))echo"<tr>"."<th><input name='field_keys[]'>".script("qsl('input').oninput = fieldChange;")."<td class='function'>".html_select("field_funs[]",adminer()->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($n){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($bj?'Save and continue edit':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n",($bj?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".'Saving'."…', this); };"):"");}echo($bj?"<input type='submit' name='delete' value='".'Delete'."'>".confirm()."\n":"");if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo
|
||
input_hidden("referer",(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"])),input_hidden("save",1),input_token(),"</form>\n";}function
|
||
shorten_utf8($Q,$y=80,$Zh=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$y).")($)?)u",$Q,$B))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$y).")($)?)",$Q,$B);return
|
||
h($B[1]).$Zh.(isset($B[2])?"":"<i>…</i>");}function
|
||
icon($Md,$C,$Ld,$yi){return"<button type='submit' name='$C' title='".h($yi)."' class='icon icon-$Md'><span>$Ld</span></button>";}if(isset($_GET["file"])){if(substr(VERSION,-4)!='-dev'){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");header("Cache-Control: immutable");}@ini_set("zlib.output_compression",'1');if($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("h:M<><4D>h<EFBFBD><68>g<08>б<EFBFBD><14><11>\"P<EFBFBD>i<EFBFBD><EFBFBD>m<EFBFBD><EFBFBD>cC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<<3C><>f<EFBFBD>a<EFBFBD><61>:;NB<4E>q<EFBFBD>R;1Lf<4C>9<EFBFBD><39>u7%<12>d\\;3<1B><>A<EFBFBD><41>`%<17>E<EFBFBD>!<21><><EFBFBD>e9&<26><08><>r4<72>M<EFBFBD><4D>A<EFBFBD><41>v2<76>\r&:<3A>Φs<16><><06>0<EFBFBD><30>*3<>Má<4D><C3A1><EFBFBD>-;<3B>L<EFBFBD>C@<40><>i:dt3-8a<38>I\$ã<11><>e<1D><0C><> <09><>#9lT!Ѻ<><D1BA>><3E>e<06><>\0<EFBFBD>d<EFBFBD><EFBFBD>d<EFBFBD>C<EFBFBD><EFBFBD>:6\\<EFBFBD>c<EFBFBD>A<EFBFBD><EFBFBD>rh<><68>M4<4D>k<EFBFBD><6B><EFBFBD><EFBFBD>Z|<7C>O+<2B><>f<EFBFBD>9<EFBFBD><39>X<EFBFBD><58>7h\"<EFBFBD><EFBFBD>Si<EFBFBD><EFBFBD><1E><>|<7C>+9<><39><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>-4W<34>~<04>T:<3A>zkH<><48>b{<EFBFBD><EFBFBD><EFBFBD>&<26>єt<18><>:ܸ.K<>v8#\",7!pp2<70><32>\0\\<06><> <20>\$<EFBFBD>r7<><37><EFBFBD>ތ#<23><>i\"<EFBFBD>a<>T<EFBFBD>(L<08>2<EFBFBD>#:\0Τ<EFBFBD>x<EFBFBD><1D><>XFlj<>d<EFBFBD>&<26>jv<6A><76><EFBFBD><EFBFBD>ڗ<EFBFBD><DA97>@d<>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>!,9.+<2B>`J<><4A>ahbDP<<05><>|\"<18><><EFBFBD><EFBFBD><EFBFBD>Cp<43>><3E>ˑ+b2 L<><16><>{<EFBFBD>F<11><><EFBFBD>Q<>|<7C><><EFBFBD><EFBFBD>r<EFBFBD><72>Kl<4B>ɏ<>_<18>t=<3D><><EFBFBD>b<19>K|<7C><02><10><><EFBFBD><EFBFBD><EFBFBD>\r=<3D>R<EFBFBD>><3E><><EFBFBD><EFBFBD>0<EFBFBD><30>(<28><><EFBFBD>k<EFBFBD>b<EFBFBD>JU,PUumI.t<>A-K<><4B>X<EFBFBD>4<EFBFBD>z<EFBFBD>)MP<4D><50>k<><10><>3e`<60>N>D#<23>9\\<EFBFBD><EFBFBD>(YT<59><54>@<40>h<EFBFBD>L<14><>1]ȴ<><C8B4>ͺNKն2\\73i/V<><56>l<EFBFBD><0C>Y<>җBA<42>/[J<><4A>ĘВ\r;'<27>2^텪<>b<EFBFBD>ۣ3<DBA3>T=0H<30>8\r<EFBFBD>+6<><36>kf<>C<EFBFBD>]q<><71>W)<29><0C><><EFBFBD>²C<C2B2><43>2`A<><06><>82<38>!<05><>hm<>вGD<47><44><EFBFBD><EFBFBD>2-C<><43><EFBFBD>Yc`<60><<3C>s<><73>6<EFBFBD>2<EFBFBD><32><EFBFBD>9<EFBFBD>u<EFBFBD><75><EFBFBD>y<><79>ҝMgy<67>=,CZO~^3<><33><1C>0<EFBFBD>2<EFBFBD><<3C><>k0<6B><30><EFBFBD>wM<77>{d#`Zۀ<5A><DB80><EFBFBD><EFBFBD><EFBFBD><DEBA><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>C%<25><><EFBFBD>=Rq<><71><EFBFBD><EFBFBD>_+<2B><>-<2D>K><3E><>\n'G<><0E><>A<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>j><<3C>gf<67>h<EFBFBD>m<0C>b*/\$\$l<EFBFBD><1A>ش<EFBFBD>g)Aj<><6A> w<>#ᣃ<><E1A383><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TN<54><4E>]<5D>T<EFBFBD><15><>%Z<07><><EFBFBD>jJ<6A><4A><EFBFBD><EFBFBD>Cf4<13><><EFBFBD>zF<1D>'<27>*<0E> x<><78><EFBFBD><06><>ho&k\r<EFBFBD><1F>,<2C><08>r<01>:>s(<28>LAs<><15><><EFBFBD>5Ct<13><><EFBFBD>n<EFBFBD>6<EFBFBD><36><EFBFBD> ll\\9D<14><>\\!<21><>mv<6D>\0<EFBFBD>A{9`<60>.<2E><><EFBFBD>סS<D7A1>lg6<><36><EFBFBD>!.2<EFBFBD><EFBFBD>0<EFBFBD>P<EFBFBD>Ԡ<EFBFBD>i\r\$7<EFBFBD>w<EFBFBD><EFBFBD><17>;G<><47>\$<EFBFBD>0<EFBFBD>CI<43>^<5E>J\n<02>L<EFBFBD>Pc<50><63>'<27>*Eh<45><68><17>b<EFBFBD><11>;<3B>p<EFBFBD>B<EFBFBD><42>(<28>x<EFBFBD>:D<0E>L<01>.j<>9AC@<0B>I3jf<6A>5sI`X}<05><>Ҕ#<23><><11>7<EFBFBD><37>T`d<><64><EFBFBD>jhH49S\nq<><71>HJQ <20>H`,F<><46>P<EFBFBD>0\\{<EFBFBD><EFBFBD>m\r<EFBFBD>~@20u! \$<EFBFBD>PoQ<EFBFBD>4ǚ<EFBFBD>\nZL<>M<EFBFBD><4D>B<EFBFBD><42>k)@<40>d<EFBFBD><64>SL<>pv<70><76><EFBFBD>y<>ЃB<D083><0C>^o<10><03><><EFBFBD>*<2A>R<EFBFBD>\"<EFBFBD><EFBFBD><01><>#<23><>rͥS;\r4<EFBFBD>&G<>I<15><>T <09>r<EFBFBD><72><EFBFBD>9=6<><36><EFBFBD>Q<1B>T\0<EFBFBD>\0<EFBFBD><EFBFBD>f#<><7F>=\$<EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H6<48>P<EFBFBD>Y<EFBFBD>:<3A>G\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>9:a<>3Hz;G<>\r!hJ<68>n<EFBFBD>7<EFBFBD><37> <09>oY<6F><13><1C><0C><><EFBFBD><EFBFBD>WLv<4C>ې<EFBFBD>i|<7C><><EFBFBD>%<25>-<2D><><02>d\$<EFBFBD>p<>D<EFBFBD><44>R2T\r<1D>paU<61><55>n<EFBFBD>5r<35><72>j<EFBFBD>\$<EFBFBD>r%D<><44><EFBFBD>)\$GڃBu<EFBFBD><EFBFBD>:<1A><>`<60>(l<0C><><06>SD)I <08><><EFBFBD><EFBFBD>9<EFBFBD>*ꁗ\rt<EFBFBD>2<EFBFBD> <20>zI<7A><49><EFBFBD>g<EFBFBD>[X<>c,u<>\rvJ5?<3F><><EFBFBD><EFBFBD>\"<EFBFBD>:<3A>^<5E>.u<>J<>P<EFBFBD>o\$t\$<EFBFBD>18<EFBFBD><EFBFBD>\nnK<EFBFBD><EFBFBD>T%EZ,6<><36>DH<44>V<13>i<F386AAB9>&z<><7A>xpdr<64>x*<0B>}ʐR<CA90>25+<2B><0E>ѓ<EFBFBD>f<EFBFBD>2<EFBFBD>w<EFBFBD><77>q<>0X1<58>2dX<64>ߢ<>̏W<CC8F><57>ËV8f\"냐q(u<><75>E<1D><>G<EFBFBD>qM<>#а<>#K<>3WA<57>v<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>Þe<C39E>K]t<><74>]E<18><>j<EFBFBD>=SX<53><19><>@<40><>Ӈ\r<EFBFBD>Ә\$<EFBFBD><EFBFBD>9<16><>ܬ0<05>P7\"D.匎<;<3B><05>Nj<4E>=<3D><><EFBFBD><EFBFBD><EFBFBD>^<5E>mmڒG<DA92>68 <20>C<>%v'<27>y<EFBFBD><79>k/<14>^<0C>5<EFBFBD><35><11>3<EFBFBD>@<40>.ڛ<><1B>k<EFBFBD>a<EFBFBD>*<2A>D<EFBFBD><44><EFBFBD><1A><><0E>:<3A>7<EFBFBD><37>C}<7D><>`<60>`<60>`)<29>7<EFBFBD><37><19><>| <09>3<EFBFBD> i<>騽<EFBFBD><E9A8BD>4<EFBFBD>\0.:<01>Q<EFBFBD>L<1B><><EFBFBD>ͨ<D89C><CDA8>f<>'<27>%<0C>ݩM <09><><EFBFBD>Y3<59>\0<EFBFBD>##tP6<50>(<28>B<EFBFBD>d<1A><><EFBFBD><EFBFBD>o<EFBFBD>y<EFBFBD>6<EFBFBD>|<7C>5<><35>IH7<48><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z?<3F>(<11><>Ŗ\$<0E>RWT<57>谦<EFBFBD>:<3A><>(<28><>`r϶i<CFB6><0E><>s<EFBFBD>=D\\<EFBFBD><EFBFBD>,kr<6B>1<EFBFBD><31>ٓ2<D993>`<60><>A<>9<EFBFBD><1B>&n<><6E>~<11><>Ҭ<>6;<3B>vp <20>M#<23>]<5D><><1D><>ɴ<EFBFBD><C9B4><EFBFBD>A<><41><EFBFBD>iJ<69><4A>.<2E><><EFBFBD><EFBFBD>t<EFBFBD><74><1C><><EFBFBD>Ys<59>OPwĸ<77>m<EFBFBD><6D>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>AU<>ʷJ<CAB7>N?<3F><><EFBFBD><EFBFBD>z<EFBFBD>3\$P<EFBFBD>qs<EFBFBD>U9,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23><>5Pnb<6E><62>uNѐ{N`<60>饙<EFBFBD><E9A599><06>i<EFBFBD><69>w\rb<EFBFBD>&E<>\\tg<EFBFBD><EFBFBD>b<EFBFBD>a<EFBFBD>1<EFBFBD>+m<>pw#<23>vl<76><6C>U<EFBFBD><55><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>e.<2E><>(<28>wb@<40><0C><><EFBFBD>\\<EFBFBD>w<EFBFBD>(<28>)<29><>E<EFBFBD><45><EFBFBD>;<3B>Z<EFBFBD>]/&<0B><><EFBFBD>|>Q<15>\"c <F<>\r<EFBFBD>7<><37><EFBFBD><EFBFBD>ϵ\\<EFBFBD>'<14>S<>fe<66>\rR<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Vlo/.<2E><>\n<EFBFBD><EFBFBD><EFBFBD>F<1C><>o<EFBFBD> <20>eh<><68>e<EFBFBD><65>jנ<6A>T<>sa4<61>2<05>2<EFBFBD> <20>`o<>\\<EFBFBD>A?<3F><>]<5D>IoB[<5B>{7'<27><>Q%<25>6<EFBFBD>s7\$Ó<EFBFBD><EFBFBD><EFBFBD>~%<25><>u)<>5i<35><69><EFBFBD>0<>#<23><><EFBFBD><EFBFBD>\r<EFBFBD>f<EFBFBD><0F><>MX<4D>N\\ɇ\0<EFBFBD><EFBFBD><EFBFBD>,T<><54><EFBFBD>ETo\0<EFBFBD>{o<><6F>R<EFBFBD><52>r<EFBFBD>^<5E><><EFBFBD><EFBFBD>C @Z.C,<03><>c<06>'<02>J-<2D>BL<>\r<EFBFBD>P<EFBFBD>CD\"<EFBFBD>b<0C>^.\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>h<05><>\0<EFBFBD><08><><08><>\r\0<EFBFBD><0C><>\n`<60> <20> <20><0C>n<0E>o <09><><0C><>\r<EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD>0<>`<60><06><>0<><10> <09><>\rp<EFBFBD> <20> 0<>\n <20>F@<40>`<60> V\0<EFBFBD>\n<EFBFBD><EFBFBD>\r\0<EFBFBD>\n<EFBFBD>j<0E><>\n@<40>\0<EFBFBD>\r<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD> <20>\n@<40>@<40>\r\0<EFBFBD>& <20>\n@<40> <20>@<40> <20><0E>z<07><>Ƃ*<2A><>w<05>q0g<06>5<06>aPxG<78><47><10><08><> <10> <09><>\n<10>\n<EFBFBD><EFBFBD><10><0B><>\rp<EFBFBD><0C><>\rp<EFBFBD>\r<EFBFBD><EFBFBD> <09><>0<>\r<10><0E><>`<60>\r@<40>@<40><> <20><><EFBFBD><EFBFBD><05>^\r <20>\0<EFBFBD>\r<EFBFBD>d@<40><0C><>3 <20><12>1Q9<13>AB<><05><<3C>t<EFBFBD>1N?<3F>S<06><><15>v-<2D>a<07><>p<><08><> p<>P<>\n<EFBFBD><EFBFBD><0B><>0<><0C><><18><><11>\0<EFBFBD>@<40><19><><10><0F><>Ѱ\r<EFBFBD>^<06><>\"i@<40>\n<EFBFBD><EFBFBD> <20>6 <20>\0<EFBFBD> p\n<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>`<60> <20>qޒQD<51><44>B<EFBFBD>M<15>d9<64>TUq<55>1<><07><>2<16> <16>\n2<17>rR#<18><>2+\r<EFBFBD>/<19><>#<23><>@<40><0E>\" <20>Q\r<EFBFBD><EFBFBD><08><>\r<EFBFBD><EFBFBD><0C><>@<40>\n<EFBFBD>h\n<EFBFBD><EFBFBD>〪<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>`<60> <09><>@<40>!<21>;<13>Co<>Uҋ2<><06><><1E><><1F>e Qk <20>p <20><0C><>!P<>3с!<21><>r%<18><><10>p<> <20>,<2C><>`<60><0C><>\n<EFBFBD>`\n@<40><0C>ff <20><06><>`<60> <20>\n<EFBFBD><EFBFBD>@<40> <09><>F#<23>`p<0C><># <20><06><><EFBFBD>o<EFBFBD><6F><EFBFBD>\\%Bl<42><6C>?<3F><>M-jP<6A><50>r<><72>3/<07>3*Qlp<> p<>\r`<60>=<3D><>\n\0_><3E>1<18>'<18><>#\0<EFBFBD>>\0<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD> <20>\n@<40><0E><> f<>0<EFBFBD>'<27>@Ā<><C480><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>\rd<EFBFBD>Fh<EFBFBD>I\$<EFBFBD>`<60><04><>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>ȕPݔT<0E>><05>7\0]ẸʉDG<44><47><EFBFBD>AC<41>\\BMDԈ<EFBFBD><EFBFBD><EFBFBD>fmd<6D><64>(\r<EFBFBD>OG<EFBFBD>F<EFBFBD><EFBFBD>iDN<EFBFBD><EFBFBD>ɜn2<>4tΔwFt<46><74>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD>CԈu+<2B><><EFBFBD>\$K<EFBFBD>6蔓E<EFBFBD><10>.AKԏL*1JK><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><4D>H<EFBFBD><48>\"GN<>Pj<50>E<>><3E> <20>H&5H<35><48>LM#E<07>P<06>c<EFBFBD><63>c8<63><38>l<0F><><EFBFBD><EFBFBD>,<2C><><EFBFBD>C<EFBFBD><43>N<EFBFBD>Pt<50>@V t<14>\n<EFBFBD><05><>ݴ<EFBFBD>I kG<6B>H <09>)D(<28>JPl<7F>1jn<6A>lԍ<6C><D48D>J<EFBFBD>~<7E>*&<26>n\\<EFBFBD><EFBFBD><01>HUfLk<>K<EFBFBD><4B>r<EFBFBD>F<EFBFBD><46><EFBFBD><|HNx\\<EFBFBD> Nl<4E>N<EFBFBD><4E><EFBFBD>I<EFBFBD><49>\0rzMt<EFBFBD>U|Z<><5A><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>Ԙ<EFBFBD>\r<EFBFBD>HC<EFBFBD>B\"<EFBFBD>@<40>b<EFBFBD>cn<63>A<EFBFBD><41><EFBFBD><EFBFBD>J9Ort<>A4<41>\r<EFBFBD><1E>@h<><68>A^`<60>^<5E>V0<56>^!L<>jU<6A><55><EFBFBD><1C>.<2E>^\r\"<EFBFBD><0C><><EFBFBD>ka<><61><EFBFBD>lp<6C><70>d<EFBFBD> <20><><EFBFBD>}\0<EFBFBD><EFBFBD><EFBFBD>N<><4E><EFBFBD><06><><EFBFBD>IGP<47><50><EFBFBD>U<EFBFBD>YtyMPr<50><14>Y<EFBFBD><59>E<15>ԥx<D4A5><78><EFBFBD><EFBFBD>6`<0E>`jg<><67><0F>1SB<53>܂<EFBFBD><DC82><15><0C><>X<EFBFBD>8<EFBFBD>V?Id[I<><49>Q.<2E><><EFBFBD><02><><EFBFBD>`<60><10>i<EFBFBD><69><EFBFBD>̲vԞ<76><D49E>U)Ԝ<><D49C><EFBFBD>\n2PV<EFBFBD>~<7E><> <20><><EFBFBD><EFBFBD><EFBFBD>\"\"&<26><>r]-<2D> <20>p*<2A>\0f\"<EFBFBD>Kj`<60>q\nJ<EFBFBD>\"q<><71>F<>.<2E><>\"@r<><72>(<28>`<60><0E>3q>\"<EFBFBD><EFBFBD>f<EFBFBD><EFBFBD>\r\$ح<EFBFBD><EFBFBD> <20>R1<52><1C>h&H<0C>`Z<>V u+Moʬ<6F>\n3J<EFBFBD>\r Đ<>2I<32> <20>D'<27>!S0W0J?y<16>pjZ.<2E>\n\r <20><>pw<70>\"<EFBFBD>-+<2B>zr!`<60>|v2\nl<EFBFBD>f(<28>m<EFBFBD><<3C><>=<0B>F\r<EFBFBD>Q}<7D><>~7<><05>\r<EFBFBD><EFBFBD>#<23><>o<03>3<EFBFBD><33>}<7D><0B><>x<<3C>~<7E><>W<><0B><01>iE<69>ã<EFBFBD><C3A3>[<5B>8\n<EFBFBD>bjj<EFBFBD>\r<EFBFBD><EFBFBD>: <20><><EFBFBD><1A>)v<><76>'{<EFBFBD><EFBFBD>V<EFBFBD>q\no{<EFBFBD><EFBFBD><EFBFBD>)C<><43><1A><>߂<EFBFBD>i<EFBFBD><69><EFBFBD>\r<EFBFBD>%<>遀<EFBFBD><0B><>C<EFBFBD>(<28><>k<EFBFBD>k<EFBFBD><0B><><EFBFBD><EFBFBD><EFBFBD>4ؐd<18><> <20><><EFBFBD><EFBFBD><EFBFBD><18>jXLN<4C>(A<>}xe<78><65><EFBFBD>|<7C><>w<EFBFBD><77><EFBFBD>G<><17>xh<0B><><EFBFBD>X<58>x<EFBFBD>\r<EFBFBD><EFBFBD>%K<><4B><EFBFBD>oq<6F>x<05><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8s<38>4e<34><65><07>xρ<78><CF81><EFBFBD>n<16>*4F<34>c<EFBFBD>8~<7E>h<EFBFBD>Ip]<5D><>{<EFBFBD><EFBFBD><EFBFBD>%<25>( <20>Ӓ<EFBFBD><D392><<3C>V<0C><><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD>B<EFBFBD><42>{w<EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD>}<7D>Q<EFBFBD>8<17>[<5B><><EFBFBD><EFBFBD>[<5B>{<EFBFBD>cT%<25>&<26><>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD>:<3A>*b<0B>E<EFBFBD>`<60><>m<>I<>YW<59>k<11>8<EFBFBD><38>Yo<59><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>)<29><><EFBFBD><EFBFBD>Y5o<35>9<EFBFBD><39>ަ<EFBFBD><DEA6><EFBFBD>ى<EFBFBD><D989><<3C>8(<0B>?<3F>\0[s<>@*8<><38><EFBFBD>}<7D><>ߟ9g<39>\rӟ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0B>\0<0E><><EFBFBD>\n'w±x)٩<DD8C><19><><EFBFBD><07>92<05>Z1<5A><31><EFBFBD>@[I<>+<2B><>_<EFBFBD><5F>5<EFBFBD>7=<3D><>D<0C>q<EFBFBD>z!}<7D>K<EFBFBD><4B>Nd<19><><EFBFBD>3<EFBFBD>\0<EFBFBD><0B><>q<EFBFBD>+<2B><>C<EFBFBD><43><EFBFBD><EFBFBD>Y_<59>g<>8<EFBFBD><0B>y<EFBFBD><79><EFBFBD><EFBFBD>ډ<EFBFBD>K<EFBFBD>4<EFBFBD>{<EFBFBD><EFBFBD>S<EFBFBD>8<EFBFBD>2Z<EFBFBD><EFBFBD>z<EFBFBD><EFBFBD>X\0Ϩz<EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD>e<EFBFBD> <20>\r<EFBFBD>><3E>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǭ<EFBFBD>_<EFBFBD>ZÏ<5A><C38F>e<><65><EFBFBD><EFBFBD><EFBFBD><1A><>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD>{<EFBFBD>U<EFBFBD>M<><4D><EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD><16>B<EFBFBD><42>zɈ<7A><15><>b2YS<59>WJ(wOwӁwm<77><6D>تZN<>l<EFBFBD><6C>˧C<CBA7><43>9<EFBFBD><39><19><><EFBFBD><EFBFBD><EFBFBD>8BD<42><0C>6<EFBFBD><36><EFBFBD>Zy<5A>x{<EFBFBD><EFBFBD><06>;!<21>[m<><6D><EFBFBD><EFBFBD><EFBFBD>{}<7D><1B>)<29><1B>#<23>4<EFBFBD>[<5B><1F><>(<28>b<EFBFBD><62><EFBFBD>ɘ<EFBFBD><07><>Ն<EFBFBD>u<EFBFBD><75><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,O<>\"F<EFBFBD>7<EFBFBD>y?<3F>9<EFBFBD><39><EFBFBD>nd<1B>}<7D><><EFBFBD><1A><>{ݍs<>{<EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>ʦ>\"<EFBFBD>cc<EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>cs<EFBFBD>{<EFBFBD><EFBFBD>vdCN<43>[<5B><><EFBFBD>GM<>C瓭<43>DE@");}elseif($_GET["file"]=="dark.css"){header("Content-Type: text/css; charset=utf-8");echo
|
||
lzw_decompress("h:M<><4D>h<EFBFBD><68>g<08><01><>h0<1D>LЁ<18>d91<18>S!<21><> <18>F<EFBFBD>!<21><>v}0<><30>f<EFBFBD>a<EFBFBD><61> G2<10>Na<1D>'3I<33><49>d<EFBFBD>K%<25> <09><>m(\r&<26>X<EFBFBD><58>o;NB<4E><42><EFBFBD>y>2S<32>*<0C>^#<23><18>Q<><51><EFBFBD>1=<3D><><EFBFBD>J<EFBFBD><4A>W^<5E><>L<EFBFBD><4C><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD>c!<21><>f<EFBFBD><0C>6<EFBFBD>m<EFBFBD><6D>a<19><><EFBFBD>l4&1Lf<4C>9<EFBFBD><39>u7VDc3<18>n82IΆ<11><>,:5<06><19><>r<EFBFBD>P<EFBFBD><50>1<EFBFBD><31>m<EFBFBD>><3E>5<EFBFBD><1C>W/<2F><>Fc<46><63><EFBFBD>Dh2<68>L<EFBFBD>\rN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Wo&<11>hk<68><6B>e2ٌ<32><D98C>b12Ƽ~0<7F> <20><>D}N<>\0<EFBFBD>f4<EFBFBD>M<EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n=<3D><>p<EFBFBD><0F>Zش<5A>N<EFBFBD>~<7E>;<3B><1B><>-C <20><>%<25>z<EFBFBD>99<39>P<EFBFBD><06><><EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B>\0f<EFBFBD><06>8<EFBFBD>9<0C>p<EFBFBD>:<3A>m<EFBFBD>8<0F><><EFBFBD>@\nX<EFBFBD>:<3A><>r<EFBFBD>3#<23><><EFBFBD><EFBFBD>C<EFBFBD>[<16>Cx<43>#<23><>I2\\<EFBFBD>\"<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]#<23><>5R<35>r6<72>#<23>L7<0C><><EFBFBD>!H<>\$<EFBFBD>\$IRd<EFBFBD>'ˉ8] <09><>x<EFBFBD><78>+<2B><><EFBFBD>><3E>C<EFBFBD>@-<2D><><EFBFBD>;<3B><><EFBFBD>b<EFBFBD><<14><>2Ô<32>N4,<0E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-Mr<4D>6Ic<49>X4<58>a<18><1B><>5KE<4B>Th@1@<40><><0C>R<EFBFBD>K<EFBFBD>9\r<EFBFBD>(<28>9<EFBFBD>#8<>G<EFBFBD>CpwID5<10>2<EFBFBD>l\"_'<27><>UB<1B><>U<EFBFBD>9c@<40>G=C\n<EFBFBD><1C>S<EFBFBD><53>0<EFBFBD><30><EFBFBD>j<1C><>7PU<50><55><1A><><1D>9J]<5D><\nƲσz<EFBFBD>?B<><42>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>4\r/<2F>P\r<EFBFBD>M[X<><58>F<EFBFBD>_<13><>j<EFBFBD><6A><EFBFBD>H<EFBFBD>bnC&<26>¡f%@cC^.2<EFBFBD>8<EFBFBD>C<EFBFBD>}^<5E><01>sw<73>L<EFBFBD><4C>/<1C>5O<35>M<><4D><EFBFBD>ڳ *X<>?<3F>b<EFBFBD>.I<>g<EFBFBD><67>&<26>aq<61>݊><3E><><EFBFBD><EFBFBD>FN<46><4E>-<2D>`<1B>y<EFBFBD><79>4<EFBFBD>s<EFBFBD><73><1F>j\\&:<01>Sa<53>P;<3B><><EFBFBD><01>H<EFBFBD><48><EFBFBD><0E><>X<EFBFBD><58>ޯ<EFBFBD><DEAF><12>d<0F>kt?.<2E><><EFBFBD>,ZO<5A><0C>@@8<05>Z3<5A>c<EFBFBD>\"<EFBFBD><EFBFBD>ß\n<EFBFBD>=A<>H1\\<EFBFBD>Z<EFBFBD>^/k<><6B><EFBFBD>L<CE83>uC\\<1B>c<EFBFBD>)0O<30><4F>M<EFBFBD><4D>lpr<19><>7<02>\r<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WRa<18><1B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c@<40><><EFBFBD>wm<77>k/<2F>8<1B>*?<19>̐<>4<EFBFBD>5<EFBFBD>\\m<16><><EFBFBD>k<EFBFBD><6B>><3E>d1n<><6E>UQ#<23><><EFBFBD><EFBFBD><EFBFBD>w<EFBFBD>憟<EFBFBD>Lo&hĪPrnR,5<><14><07><>z<EFBFBD>\"\$3<><33>dYH(p\r<01>ALAC<41>)pT<70>Pl<50>!\"L<EFBFBD><EFBFBD>8<06><>R<EFBFBD><52>&<26>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z0P8<50><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0C>J <09>`<60><03>e<EFBFBD>0<EFBFBD> <09><><EFBFBD><18>1<EFBFBD><05> <09>D<18><>Js<4A>H<EFBFBD><48><EFBFBD>)<05>k<EFBFBD> <20><>[<5B><><EFBFBD>C<EFBFBD>y<0B>pjx,\rA<EFBFBD><1B><>m!<21><10><19><h1<68><31>");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("':<3A>̢<03><><EFBFBD>i1<69><04><>1<EFBFBD><31> 4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q6a&<26><><EFBFBD><EFBFBD>:OAI<41><49>e:NF<4E>D|<7C>!<21><><0F>Cy<43><79>m2<6D><32>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>r<<3C>̱<EFBFBD><CCB1><EFBFBD>/C<>#<23><><EFBFBD><EFBFBD>:DbqSe<1E>J<EFBFBD>˦Cܺ\n\n<EFBFBD><EFBFBD>DZS\rZ<EFBFBD><1C>H\$RAܞS+XKvtd<74>g:<05><12>6<EFBFBD><10>EvXŞ<58>j<EFBFBD><6A>mҩej<65>2<EFBFBD>M<EFBFBD><13><><EFBFBD><EFBFBD>B<EFBFBD><42>&ʮ<16>L<EFBFBD>C<EFBFBD>3<><33><EFBFBD>Q0<51>L<EFBFBD><4C>-x<>\n<EFBFBD><19>D<13><><EFBFBD>yNa<>Pn:<3A><05><19><><EFBFBD>s<EFBFBD><73>͐<EFBFBD>(<28>cL<63><4C>/<2F><18><>(<28>5{<EFBFBD><EFBFBD><EFBFBD>Qy4<EFBFBD><EFBFBD>g-<2D><><EFBFBD><EFBFBD><EFBFBD>i4ڃf<DA83><66>(<28><>bU<62><55><EFBFBD>k<EFBFBD><6B>o7<6F>&<26><>ä<>*ACb<43><62><EFBFBD><EFBFBD>`.<2E><><EFBFBD><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><03><><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>Ch<43><\r)`<60>إ`<60>7<EFBFBD>Cʒ<><CA92><EFBFBD>Z<EFBFBD><5A><EFBFBD>X<EFBFBD><<3C>Q<13>1X<31><11><>@<40>0dp9EQ<45>f<EFBFBD><66><EFBFBD><EFBFBD>F<EFBFBD>\r<EFBFBD><08>!<21><><08><>(h<><68>)<29><>\np'#Č<><C48C>H<EFBFBD>(i*<2A>r<><72>&<#<23><>7K<37><4B>~<13># <20><13>A:N6<4E><36><EFBFBD><EFBFBD><13><>l<EFBFBD>,<2C>\r<04><><EFBFBD>JP<4A>3<EFBFBD>!@<40>2>Cr<43><72><EFBFBD>h<EFBFBD>N<11><>]<1E>(a0M3<4D>2<EFBFBD><32>6<EFBFBD><36>U<18><><EFBFBD>E2'!<<02><>#3R<33><<3C><><02><><EFBFBD>X<EFBFBD><58><EFBFBD>CH<43>7<05>#n<>+<2B><>a\$!<21><>2<EFBFBD><32>P<EFBFBD>0<EFBFBD>.<2E>wd<0C>r:Y<><59><EFBFBD><0C>E<EFBFBD><45><EFBFBD>!]<5D><<3C><16>j<EFBFBD><6A><EFBFBD>@<40>\\<EFBFBD>pl<EFBFBD>_\r<EFBFBD>Z<16><><03>ғ<EFBFBD>TͩZ<CDA9>s<EFBFBD>3\"<EFBFBD>~9<><39><EFBFBD>j<EFBFBD><05>P<EFBFBD>)Q<>YbݕD<DD95>Yc<59><63>`<60><>z<04>c<EFBFBD><1D>Ѩ<EFBFBD><D1A8>'<01>#t<0E>BOh<0C>*2<><32><ŒO<C592>fg-Z<><5A><EFBFBD><1E>#<23><>8a<>^<17><>+r2b<32><62>\\<EFBFBD><0C>~0<><05><><0C><><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD>n<EFBFBD><05>p!#<23>`<60><><EFBFBD>Z<EFBFBD><5A>6<EFBFBD>1<08>2<EFBFBD><32>@<40><>ky<6B><79>9\r<EFBFBD><EFBFBD>B3<EFBFBD><EFBFBD>pޅ<EFBFBD>6<EFBFBD><EFBFBD><<3C>!p<>G<EFBFBD>9<EFBFBD>n<EFBFBD>o<EFBFBD>6s<36><73>#F<>3<EFBFBD><33><EFBFBD>bA<><41>6<EFBFBD>9<EFBFBD><39><EFBFBD>Z<EFBFBD>#<23><>6<EFBFBD><36>%?<3F>s<EFBFBD><73>\"<EFBFBD><EFBFBD>|<>)<29>b<EFBFBD>Jc\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>s<14><>ih8<68><10><><EFBFBD>ݟ<EFBFBD>:<1E>;<3B><>H<EFBFBD>ތ<EFBFBD>u<EFBFBD>I5<49>@<40>1<EFBFBD><>A<EFBFBD>PaH^\$H<EFBFBD>v<EFBFBD><05>@ÛL~<7E><><EFBFBD>b9<62>'<10><><EFBFBD><EFBFBD><EFBFBD>S?P<>-<2D><><EFBFBD><EFBFBD>0<EFBFBD>C<08>\nR<>m<>4<EFBFBD><06><>ȓ:<3A><><EFBFBD>Ը<>2<><04>4<EFBFBD><34>h(k\njI<05><>6\"<EFBFBD>EY<EFBFBD>#<23><01>W<1F>r<1A>\r<EFBFBD><EFBFBD>G8<EFBFBD>@t<><74><EFBFBD><0E>Xԓ<58><D493>BS\nc0<>k<14>C I\rʰ<u`A!<21>)<0E><>2<EFBFBD><32>C<0C>\0=<3D><><EFBFBD> <20><16><>P<EFBFBD>1<0C>ӢK!<21>!<0C><><EFBFBD>p<>Is<05>,6<13>d<1E><><EFBFBD>i1+<2B><><0F><>k<EFBFBD><6B><EFBFBD><<3C><>^<5E> <09>\n<EFBFBD><EFBFBD>20<EFBFBD>Fԉ_\$<EFBFBD>)f\0<EFBFBD><EFBFBD>C8E^<5E><>/3W!א)<04>u<EFBFBD>*<2A><11><>&\$<EFBFBD><EFBFBD>2<EFBFBD>Y\n<EFBFBD>]<5D><>Ek<45>DV<>\$<19>J<EFBFBD><1C><>xTse!<21>RY<> R<><52>`=L<><4C><EFBFBD><04>ޫ\nl_.!<21>V!<21>\r\nH<EFBFBD>k<EFBFBD><EFBFBD>\$א`{1 |<7C><><EFBFBD><EFBFBD><13>i<jRrPTG|<7C><>w<EFBFBD>4b<03>\r<EFBFBD><EFBFBD><EFBFBD>4d<34>,<2C>E<EFBFBD><45>6<EFBFBD><36><EFBFBD><<3C>h[N<>q@Oi<4F>>'ѩ\r<EFBFBD><01><><EFBFBD><EFBFBD>;<3B>]#<23><>}<7D>0<EFBFBD>ASI<08>Jd<10>A/Q<><51><EFBFBD><EFBFBD>⸵<EFBFBD>@t\r<EFBFBD>UG<EFBFBD><EFBFBD>_G<EFBFBD><<04><><y-I<>z<7A>\"<EFBFBD>P<0B><>B\0<EFBFBD><EFBFBD><05><><1E><>q`<60><>vA<><41>a̡J<CCA1><4A>R<EFBFBD>ʮ)<29><>JB.<2E>T<EFBFBD><54>L<EFBFBD><4C>y<EFBFBD><79><EFBFBD><EFBFBD>Cpp<70>\0(7<>cYY<59>a<EFBFBD><13>M<><4D>1<EFBFBD>em4<6D>c<><63>r<EFBFBD><72>S)o<><6F><EFBFBD><EFBFBD>p<EFBFBD>C!I<><49><EFBFBD>Sb<C29C>0m<30><6D><EFBFBD>(d<>EH<45><48><EFBFBD><13>߳<EFBFBD>X<EFBFBD><58><EFBFBD>/<2F><><EFBFBD>P<><50><EFBFBD>y<>X<EFBFBD><58>85<38><35>\$+<2B>֖<><07><>gd<67><0C><><EFBFBD><EFBFBD>y<EFBFBD><01>ϝ<EFBFBD>J<EFBFBD><4A><EFBFBD> <20>lE<6C><45>ur<75>,dCX<43>}e<><65><EFBFBD><11><><EFBFBD>m<EFBFBD>]<5D><01>2<03>̽<EFBFBD>(-z<><7A><15><0B>Z<EFBFBD><5A>;I<><49><EFBFBD>\\<EFBFBD>) ,<2C>\n<EFBFBD>><3E>)<29><><EFBFBD><EFBFBD>\rVS\njx*w`ⴷSFi<46><69>d<><64>,<2C><><EFBFBD>Z<>JFM}Њ <20><>\\Z<EFBFBD>P<EFBFBD><EFBFBD>`<60>z<>Z<EFBFBD>E]<5D>d<EFBFBD><64>ɟO<>cmԁ]<5D> <20><15><><EFBFBD><EFBFBD><EFBFBD>%<25>\"w4<EFBFBD><EFBFBD>\n\$<EFBFBD><EFBFBD>zV<EFBFBD>SQD<EFBFBD>:<3A>6<EFBFBD><36><EFBFBD>G<EFBFBD>wM<><4D>S0B<30>-s<><73>)<29><>Z<EFBFBD><5A>cǁ2<><32>δA;<3B><05>n<EFBFBD>Wz/A<>Zh<5A>G~<7E>c<EFBFBD>c%<25>[<0C>D<EFBFBD>&l<>FR<0E><>77|<7C>I<EFBFBD><49><19>3<EFBFBD><33>g0<67>L<EFBFBD><0B><>a<EFBFBD><61>c<EFBFBD>0RJ<52>2<EFBFBD><32>%<02><><EFBFBD>F<0C><> S<> <20>L<EFBFBD>^<5E> tr<><72><1C>t<1C><><0B><>ʩ;<3B><>.喚Ł<E5969A>><10><><EFBFBD><EFBFBD>[<5B>a<EFBFBD>N<EFBFBD><4E><EFBFBD>^<5E>(!g<>@1<06><><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>z<EFBFBD><b<>ݖ<EFBFBD><DD96><EFBFBD><EFBFBD><EFBFBD>O,<03><>Cu<EE8E9D><75>D<EFBFBD>tjI;)<29>݀<EFBFBD>\nn<EFBFBD>c<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>W<s<> <09>\0<EFBFBD>hN<EFBFBD>P<0E>9<12><>{ue<EFBFBD><EFBFBD>ut뵕<74><EBB595><05><><EFBFBD><EFBFBD><EFBFBD><0B>3<EFBFBD><33><EFBFBD>=<3D><>g<EFBFBD><67><EFBFBD><0F><><02>J<EFBFBD><4A><03><05>WQ<57>0<EFBFBD><1D><>w9p-<2D><><EFBFBD> <1E><><EFBFBD><EFBFBD><1A><><1B>'5<><05>\nO<07><>e)M<>)_k<5F>z\0V<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;j<>l<><06>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<1C>Pf<0E>-<19>`C<>.@&]#\0ڶp<EFBFBD>y͖ƛ<EFBFBD>t<>d<0F><> <20><><EFBFBD>b}<7D> G1<47>m<EFBFBD>ru<72><75><EFBFBD>*<2A>_<EFBFBD>xD<78>3<06>q<EFBFBD><71>B<EFBFBD>sQ<73><51>u<EFBFBD><75>s%<25>\n<EFBFBD>5s<EFBFBD>ut<1B><><EFBFBD>{<EFBFBD>s<EFBFBD>y<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><EFBFBD>4<EFBFBD>,J{4@<40><>\0<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD><EFBFBD>^<5E><>=<3D><>l<EFBFBD><6C><EFBFBD>`<60>e~F١h3o<33>\"<EFBFBD><EFBFBD>q<EFBFBD>R<iUT<55>[Q<><51>U<><55>M<12>6<05>T. <20><0B>0'<0B>pe\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><15>pCe ٕ<>\"*<02>M <09><><EFBFBD><EFBFBD>D<><44><EFBFBD>?<3F>h<1E><>2<EFBFBD><32><EFBFBD>zU<7A>@7<>C<EFBFBD>4<EFBFBD>a<1F><>iE!f<16>\$<EFBFBD>B<EFBFBD><EFBFBD><<3C>9o*\$<EFBFBD><EFBFBD>lH<6C>\$ <06>@<14><><EFBFBD><EFBFBD><EFBFBD>P\rN<0C>Y<01>n<\$<EFBFBD> <09>Q<02>=<02>F&<26><>*@]\0<EFBFBD><0C><> W'd<> z\$<EFBFBD><04>j<>P[<5B><>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0#&<0E><>_<EFBFBD>`+<2B>B)<29>w<EFBFBD>v% <09><><0C><>LcJ<63><4A>RS<52><53>i`<60>Ů <09>F<0E>W <09><>\nBP\n<EFBFBD>\r\0} 瑩0<EFA6AE>Z<EFBFBD><5A><0C><>/`j\$<EFBFBD>: <20>8ie<69><0C><>φx<CF86><08><><16><>a <20><><03>Gn<47>sgO<><10>U%VU<56><14>@<40>N<EFBFBD><4E>ϐ<EFBFBD>d+<2B>(oJ<6F><4A>@X<><58><0E>zM'F٣<46>WhV<68>I^٢<>1><3E>@<40>\"<EFBFBD><0C><><EFBFBD> <20><13>Q<14>R!<21>\\<EFBFBD>`[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>0fb<66>F;<12><EFBFBD><C287>Fp<05>p/t`<60><05><><0B>(<28><>V<05><><EFBFBD><EFBFBD>b<EFBFBD>Ȳ<EFBFBD>(<28><>H<EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD>ԯ1v<31><0E><05><><EFBFBD>H<EFBFBD><48>1T<31>3<18><>q<><19><>1<>Ѫf<D1AA>\nT\$<EFBFBD><EFBFBD><EFBFBD>Nq+<2B><1C>`ލv<DE8D>ǜ<EFBFBD>\r<EFBFBD>Vm<EFBFBD><EFBFBD><EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>'ϸ<><CFB8>g%<25>\"L<>m<EFBFBD><6D><EFBFBD><EFBFBD>(<28>(CLz<4C><7A>\"h<0E>X<EFBFBD>m=<07>\\H\n0U<EFBFBD><EFBFBD> f&M\$<EFBFBD>g\$<EFBFBD>U`a\rP<EFBFBD>>`<60>#g<><67>h<1A><>`<60>R4H<34><48>'<27><><0F><><EFBFBD><EFBFBD>GK;\"M<EFBFBD>ۨT<EFBFBD>h<EFBFBD>BE<1B>n\"b><3E><><EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD>#<23>\0<EFBFBD><EFBFBD>N:<3A>#_ QQ1{ f:B<><42><EFBFBD>R<EFBFBD>&<26><><EFBFBD>)J<><12>Br<42>+<2B>K.\$<EFBFBD>Pq<EFBFBD>-r<>S%TIT&Q<><51><EFBFBD>{#2o(*P<><50>5<EFBFBD>`<60>1H<0C><><05>' <T<12>d<EFBFBD><64><12><>s<EFBFBD><73>,N<><4E> <20><0E><><EFBFBD>^\r%<25>3<EFBFBD><33>\r&<26><07>4<EFBFBD>B<EFBFBD>/\0<EFBFBD>kLH\$<EFBFBD>4d<EFBFBD>><3E><><EFBFBD>/<2F>ඵ<>H<EFBFBD><48><EFBFBD>*<2A><><EFBFBD>3J<0E>А<EFBFBD><<3C>Hh<48><68>p<EFBFBD>'<27><>O/&<26>2I.<2E>x3V.<2E>s5<73>e3<65><33>ێZ<DB8E>(<28>9E<39>g<05>;R<>;<3B>J<EFBFBD><4A>Q<16>@<40><>vgz@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'dZ&<26>,U<><55><EFBFBD><EFBFBD><EFBFBD>F<EFBFBD><46>b*<2A>D<EFBFBD><44>H! <20>\r<EFBFBD>;%<25>x'G#<23><>͠w<CDA0><77>#<23>֠<>2;#<23>Bv<42>X<EFBFBD><58><EFBFBD>a<EFBFBD>\nb<EFBFBD>{4K<EFBFBD>G<EFBFBD><EFBFBD>%<25><><EFBFBD>GuE`\\\rB\r\0<EFBFBD>-mW\rM\"<EFBFBD><EFBFBD>#E<>cFbF<62>nz<6E><7A><EFBFBD>@4J<34><4A>[\$<EFBFBD><EFBFBD>%2V<0F><>%<25><>&T<08>V<EFBFBD><56>d<EFBFBD>4hemN<6D>-;Eľ%E<>E<EFBFBD>r<EFBFBD><\"@<40>F<EFBFBD>P<50>L <20>߭<EFBFBD>4E<><45><EFBFBD><EFBFBD><EFBFBD>z`<60>u<03>7<EFBFBD>N<>4<EFBFBD><34>\0<EFBFBD>F:h<>K<>h/:<3A>\"<EFBFBD>M<EFBFBD>Z<><5A>\r+P4\r?<05><>S<EFBFBD><53>O;B<><42>0\$FCEp<EFBFBD><EFBFBD>M\"<EFBFBD>%H4D<>|<7C><>LN<4C>FtE<><45>g<EFBFBD><67><EFBFBD>5<04>=J\r\"<EFBFBD><EFBFBD>5<0C><>4<04><>K<EFBFBD>P\rbZ<><5A>\r\"pEQ'DwK<77>W0<57><05>g'<27>l\"h<EFBFBD>QF<EFBFBD>C,<2C>Cc<43><63><EFBFBD>IH<49>P<07>hF]5<>& f<14>T<04><>iSTUS<55><53><EFBFBD><EFBFBD><EFBFBD>[4<>[u<>Ne<4E>\$o<EFBFBD>K<EFBFBD><EFBFBD>O <20><>b\" 5<>\0<07>D<EFBFBD>)E<>%\"<08>]<5D><>/<2F><><EFBFBD>ЌJ<D08C>6U<36>d<EFBFBD><02>`<60><>a)V-0<><30>DӔbM<62>)<29><><EFBFBD><EFBFBD><EFBFBD><0C><><EFBFBD><EFBFBD>`<60><>%<25>ELt<4C><74>+<2B><>6C7j<37>d<EFBFBD><64>:<3A>V4ơ3<C6A1> -<2D>R\rG<EFBFBD>IT<EFBFBD><EFBFBD>#<23><4-CgCP{V<EFBFBD>\$'<27><06><><EFBFBD>g<EFBFBD><67>R@<40>'<27><14>S=%<25><><EFBFBD>F<EFBFBD>k:<3A><0E>k<EFBFBD><6B>9<EFBFBD><16><11><04>e]aO<14><>G9<08>;<3B><>-6<><1C>8W<38><57>*<2A>x\"U<><55>YlB<6C><16><0C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><06><><EFBFBD> <09><>\n<EFBFBD><EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Z<11>m\0<EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Oq̨<><CCA8>b<>W1s@<40><>K<1F><>-p<><70><EFBFBD>E<1F>Spw\nGWoQ<6F>qG}vp<76>w}q<><71>q<EFBFBD>\\<07>7<1C>RZ<52>@<40><><EFBFBD>t<EFBFBD><74>t<EFBFBD>;pG}w׀/%\"L<15>E\0t<EFBFBD>h<EFBFBD>)<29>\r<EFBFBD><EFBFBD>J<0F>\\W@<40> <09>|D#S<13><>ƃV<C683><56>R<>z<EFBFBD>2<EFBFBD><0F><>v<EFBFBD><76><EFBFBD><EFBFBD><10> <09>}<7D><><EFBFBD><EFBFBD><EFBFBD>(<28>\0y<<3C>X\r<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>q<EFBFBD><<3C><>Isk1S<11>-Q4Yq8<71>#<23><>v<1E><><EFBFBD>d.ֹS;q<>!,'(<28><1B><16><.<2E><>J7H<37>\"<EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>u<EFBFBD><0F><><7F><EFBFBD>#<23>Q<>\re<EFBFBD>r<EFBFBD>Xv[<5B>h\$<EFBFBD>{-<2D>Y<><59><EFBFBD>JBg<42><1F>iM8<4D><38>'<27>\nƘtDZ~/<2F>b<0B><><EFBFBD>8<EFBFBD><38>\$<><7F>DbR<62>O<EFBFBD>O<><4F>`O5S><12><><EFBFBD><EFBFBD>[<5B>D<07>ꔸ<EFBFBD><0C><><07>_3X<33>)<29><>'<27><>Jd\r<EFBFBD>X<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UD<EFBFBD>U<EFBFBD>X8<><38>x<EFBFBD>-旅<>P<07>N`<60> <09><>\n<EFBFBD>Z<08><><EFBFBD>@Ra48<><38>:<3A><><EFBFBD>\0<EFBFBD><EFBFBD>x<EFBFBD><0E><>N<EFBFBD>\\<04>0%<25><><05>f<EFBFBD><66>\\<EFBFBD><EFBFBD>>\"@^\0Zx<EFBFBD>Z<EFBFBD>\0ZaBr#<23>X<EFBFBD><58>\r<EFBFBD><EFBFBD>{<EFBFBD><EFBFBD>˕<EFBFBD>flFb\0[<5B>ވ\0[<0B>6<EFBFBD><36><EFBFBD> <09><><19> <20>=<3D><>\n<EFBFBD><EFBFBD>WB<EFBFBD><EFBFBD>\$'<27>kG<6B>(\$y<EFBFBD>e9<EFBFBD>(8<>& h<><68>Rܔ<52><DC94>o<EFBFBD>ȼ LJ<><C787><EFBFBD>Y<EFBFBD><59>4<EFBFBD><34>7_<37><5F>d<EFBFBD><64>9<EFBFBD>'<27><><EFBFBD><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z\r<EFBFBD><EFBFBD><EFBFBD> <><7F><EFBFBD><EFBFBD>v<EFBFBD>G<EFBFBD><47>O8<4F><0E><>MOh'<27><>X<>S0<53>\0\0<EFBFBD> <09><>9<03>s?<3F><><EFBFBD>I<EFBFBD>MY<17>8<EFBFBD> 9<10><><EFBFBD><EFBFBD><1F>HO<48><4F>,4 <09><>xs<78><73>P<EFBFBD>*G<><47><EFBFBD><EFBFBD>c8<><38>Qɠ<51><C9A0>wB|<7C>z @<40> <09><><05>9c<18>K<EFBFBD><05>QG<1B>bFj<46>X<EFBFBD><58>oS<6F>\$<EFBFBD><EFBFBD>dFHĂP<EFBFBD>@ѧ<嶴<>,<2C>}<7D><>m<EFBFBD><6D>r<04><>\"<EFBFBD>'k<6B>`<60><>c<EFBFBD><63>x<EFBFBD><78>e<EFBFBD>C<EFBFBD><43>C<EFBFBD><0E>:<3A><><EFBFBD>:X<> <20>T<EFBFBD><54><EFBFBD>^<5E>d<EFBFBD>Æqh<71><68>s<EFBFBD><06><>Lv<4C>Ү0\r,4<>\r_v<EFBFBD>L<><4C>j<03>jM<6A><4D>b[ <20><0F>ls<6C><73><0F>Z<EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>;f<><66>`2Yc<59>e<EFBFBD>'<27>Mer<65><72>F\$<EFBFBD>!<21><>\n<EFBFBD><EFBFBD> *0\r<EFBFBD>AN<EFBFBD>LP<EFBFBD><EFBFBD>jٓ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;ƣV<1A>Q|(<28><>3<EFBFBD><33><EFBFBD><EFBFBD>[p<><70>8<EFBFBD><38><EFBFBD>|<7C>^\r<EFBFBD>Bf/<2F>D<EFBFBD><14><>Ҟ B<05><0E>_<EFBFBD>N5M<35><18> \$<EFBFBD>\naZЦ<EFBFBD><EFBFBD><0B>~<05>Ule<EF8EA5>rŧr<C5A7><1A>Z<EFBFBD>aZ<61><5A><EFBFBD><EFBFBD><07>գs8R<38>G<EFBFBD>Z<5A><7F>w<EFBFBD><77><EFBFBD>N<EFBFBD>_Ʊ<C6B1>Yϣ<59>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD>]<5D><>;ƚL<><4C><EFBFBD><05><>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ű<EFBFBD><C5B0>I<EFBFBD>Q3<51><33>O<EFBFBD><4F><EFBFBD>|<7C>y*`<60> <20>5<EFBFBD><18>4<1A>;&v8<76>#<02>R<EFBFBD>8+`X<>bV<62>6<EFBFBD>ƫi<12>3F<33><46>E<14><><EFBFBD><EFBFBD>oc82<38>M<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD><14>G<EFBFBD>Wb\rO<EFBFBD>C<EFBFBD>Vd<EFBFBD>ӭ<EFBFBD>w\\<EFBFBD>ͯ*cSi<53>Qү<02><><EFBFBD>R`<60>d7} <09><><EFBFBD>)<29>ϴ<EFBFBD>,<2C>+bd<62>۹<>FN<0F>3<11><>L\\<EFBFBD><EFBFBD>eRn\$&\\r<EFBFBD><EFBFBD>+d<><64>]O5kq,&\"D<EFBFBD>CU6j<EFBFBD>p<EFBFBD><EFBFBD><EFBFBD>\\'<27>@o<>~<7E>5N=<3D>|<7C>&<26><>!<21><>B<EFBFBD>w<EFBFBD>H<>yyz7<7A><10>(Ǎ<><C78D><07>b5(3փ_\0`z<>b<EFBFBD>Уr<D0A3><72>8 <09><>Z<EFBFBD>v<EFBFBD>8L˓<4C>)<29><>S<EFBFBD>M<<3C>*7\$<EFBFBD><EFBFBD>\rR<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD>B%<25><>ƴDs<44>z<EFBFBD>R>[<5B>Q<EFBFBD><51><EFBFBD><0C>&Q<><51><EFBFBD><EFBFBD><EFBFBD><1E>'\r<EFBFBD>pp<70>z<EFBFBD>/<<3C><>}L<>#<23><0C>Ε<EFBFBD><08><>Z<0C><><EFBFBD>\"t<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>.4<>g<EFBFBD><67>P<EFBFBD><50>p<EFBFBD>D<EFBFBD>n<EFBFBD><6E>ʹN<CAB9><4E>F<07>d\0`^<5E><><EFBFBD><EFBFBD>\rnȂ׳#_<12><> w(<28>2<EFBFBD><7-<2D><>X\0<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>,^<5E>hC,<2C>!:<3A>\rK<><4B>.<2E><>Ӣ<EFBFBD>Ţ<EFBFBD><C5A2><EFBFBD><EFBFBD>\\<EFBFBD><EFBFBD>+v<02>Z<EFBFBD><5A>\0<EFBFBD>Q9eʛ˞E<1C>w?><3E>\$}<7D><>D#<23><><EFBFBD><EFBFBD>c<EFBFBD>0MV3<>%Y<><59><EFBFBD>\r<EFBFBD><EFBFBD>tj5<EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>{ŝ<EFBFBD>Lz=<3D><<3C><>8I<1C>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD>L<7F>\$<EFBFBD><EFBFBD>2<14><>{(<28>pe?u<>,R<>d*X<>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0\"@<40><><EFBFBD>}<.@<40><08> <09><>N<EFBFBD><4E>\$<EFBFBD><EFBFBD>XU<05>js<6A>/<07><><>\"* <20>#\$<1B><><EFBFBD><EFBFBD>&CPI <09><>t<EFBFBD><74><EFBFBD><1E><><EFBFBD><EFBFBD><EFBFBD>?<3F> <20><> <09>O<EFBFBD><4F>\\<EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>Q5Y<35>H@<40><><EFBFBD>b<EFBFBD><62>c<01>h<EFBFBD><68><0C><><06>뱖<EFBFBD><EBB196>O0T<>'<27>8<EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><EFBFBD>j+H<>v_#<23><><EFBFBD><EFBFBD><EFBFBD>06<30>w֎<77>X<0F><><EFBFBD>d+<1A>ܓ\\<03><><EFBFBD>\n\0 \\<EFBFBD><EFBFBD><EFBFBD>>s<73><0F>A PF<50>d8m'@<40>\nH<02>\0<EFBFBD>c<EFBFBD>OwS<EFBFBD><1F><11><0C><>Y<EFBFBD>`<1D><><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><1C>Dna\"<EFBFBD><EFBFBD><EFBFBD>~<12>?<3F>m<EFBFBD><6D><EFBFBD>|@6<><12>+<2B>GxV<78><56>\0<EFBFBD><EFBFBD>W<>Ӱ<EFBFBD>nw<05><><EFBFBD>.<2E>b<D883><62>9Í<><C38D>E<EFBFBD>|E<06><><EFBFBD>\rЈr<EFBFBD>\"<EFBFBD><EFBFBD>x<EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><03><>\rN6<EFBFBD>n<EFBFBD>\$Ҭ<EFBFBD>-B<>H<EFBFBD>^<11>)<29><14>y&<26><>ךW<D79A>ǧ<EFBFBD>bv<62>R<EFBFBD> <09><><EFBFBD>N\0<EFBFBD><EFBFBD>n<EFBFBD> T<16><>`8X<38><58>A\r:{O<16>@\" <20>!<21><03>\$K<>qo<71><6F>jY֪J<D6AA><4A><EFBFBD><EFBFBD><EFBFBD>h}d<1I<31>xd<78><64><19><>TT4NeeC0䥿<30>:D<>F<>5L<35>*::H<>jZ<6A><5A><13>F<10>R<EFBFBD>MրnS\n>PO<0B>[<5B>\$V8;#<23>K\\'<27>B<EFBFBD><42><EFBFBD>R<>د<EFBFBD><D8AF>R<>_<EFBFBD>8<EFBFBD>j<EFBFBD><6A>*Ej<45>\\~v<><76><EFBFBD>v<EFBFBD><76>p@T<>X<EFBFBD>\0002dE <09>H<EFBFBD><48>V<EFBFBD><56><EFBFBD>D<EFBFBD>\"Q'EDJB~A<><41>A<EFBFBD>Il*'\n<EFBFBD>Y<EFBFBD><1F>.<2E><>+<2B>9<0E><>pg<70><03><>/<2F>\"<EFBFBD>1<EFBFBD>8<EFBFBD>0<EFBFBD>IA<>FCȨ<>V*a<><08>P<EFBFBD>d<EFBFBD>У5H\"<EFBFBD>A<EFBFBD><05>6<03>s<EFBFBD>Y<EFBFBD><59>;訞<>/<2F><>0<><1A>v}y<>\r<EFBFBD><02><><EFBFBD>ץ1<D7A5>u\"ˋ<EFBFBD>m<EFBFBD><16>_<0C>0焄`<60><18><>\\B1^\nk\r]lh<6C>}]HBW`<60><>0<EFBFBD>rFf<46>)<29>W,<02>ҧ]sm9'O<14>xԽ<78>,<2C>9J8<4A><38>?<1A>4<1A><><EFBFBD><04><>\"҅<EFBFBD>۽<EFBFBD><<3C>-S<><53><EFBFBD><EFBFBD>M<EFBFBD>;<0E>v<EFBFBD><76>6y|<7C>Z<06><><EFBFBD><EFBFBD>%<25>a<08>#8<><38>TC<11>!<16>p<EFBFBD><70>\n<EFBFBD><EFBFBD>CZ(<28><>w<EFBFBD><77>a<EFBFBD><14><><EFBFBD><EFBFBD><EFBFBD>?9|<1A><>0<BL\r<10>\n<EFBFBD>]<5D>PB0<0E>&<26>+t<>H<EFBFBD><48><12>օ<04>Dx^<1F><><EFBFBD>,<2C>L<EFBFBD>}[<5B><>B<EFBFBD>x}<7D><>ru<><75>\0<EFBFBD><EFBFBD>\0005<EFBFBD><EFBFBD>S@\"Uؔ@<40><06>\0<EFBFBD>\$<EFBFBD><EFBFBD>ސ\"Ҡ<EFBFBD><EFBFBD>]l/ <09><>I<EFBFBD>B4<42><34>.<2E>6<EFBFBD><36>
<EFBFBD>d7<><37>\r@=<3D><><EFBFBD>߬<EFBFBD><DFAC><EFBFBD>*G j<><01><><EFBFBD>f`<60><>:Hn<48><6E><EFBFBD>bĀ71<><31>)C<@A<>Y#<13><><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>o<><6F>Y!<21><>I<EFBFBD>DM<44>\nlt<10><><EFBFBD><EFBFBD>/)<29>\\43)<29><>2<11><19>ɸ<02>)<1A><><EFBFBD>f[ ppp1<70><31><EFBFBD>#<23><>Ð<>p\0<EFBFBD><05>œl<C593><6C>^{<EFBFBD><EFBFBD>A<EFBFBD><05>TH<1C>6<><36><01><13><>\n\0P<>H<EFBFBD>.\r<0C><><EFBFBD>|<7C>T<EFBFBD>FD0<16><>S<EFBFBD>y<EFBFBD><79><1B><>'1<><01><05>K<EFBFBD><4B><EFBFBD>d<EFBFBD><13><><EFBFBD><EFBFBD>B<><42><EFBFBD>C<>&<26>)<04>W<EFBFBD>s Hee+@4<> r<><72><EFBFBD>ۚ*Lp1<<3C>f<EFBFBD>N<EFBFBD>Y'<0F>- XKVa<56><61>L<EFBFBD><4C><1A>\"<EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>l<EFBFBD><EFBFBD>q<EFBFBD><EFBFBD>.YJH<0B>m HV<02>/<2F>lC<>&<26><08>H)o<>&\\2<EFBFBD><03><>%<25><><EFBFBD>z\n^Q(6<03><>D<EFBFBD> <20><><EFBFBD><EFBFBD>Jq<4A><71><EFBFBD><EFBFBD>\00a#<23>6\0vr,<2C>M<EFBFBD><4D>&A<><41><05><><03><><EFBFBD>9%Yd<59><64>B<>h<0B><>!W\0<EFBFBD>b\r{<EFBFBD><EFBFBD><EFBFBD>@<40>1<EFBFBD><31>I<EFBFBD>22<32>A<18><12>)<29>H<>a@r<>0G<30><47>7Dd.<2E>LM<><<3C><>2<><32><EFBFBD>,k/<2F><>Me<4D><02><><EFBFBD>}Ғ3<>=\0<EFBFBD>&<26><0F>B<><42>\nPd.\"<0C><>F3X<33><58>Sd(*<2A>J6 <0B><><19><>F:<3A><>)1<>1<EFBFBD>?lQ&<26><18><><EFBFBD>h<J͋<4A>f<EFBFBD>d<EFBFBD>Eպ*<0F>x\n\0<EFBFBD><07>.\"B -<2D>#<23><>Ηt<CE97>IΫ<49><CEAB><11> I8 <20><>8dh <09><><EFBFBD>x<12><><EFBFBD>~<7E><> L!K(<28>BX<42><13>-<2D><><EFBFBD>h<EFBFBD><68>c/<2F>r<EFBFBD><72>P<>I<0E><><EFBFBD>N<EFBFBD>2<EFBFBD>|<10><><EFBFBD><D7B6>|\"<EFBFBD>M<>'<27><>K,\\H<EFBFBD><EFBFBD>e5*o]4<><34>FP 2<><32><)<29>T<EFBFBD><54><EFBFBD>o<03><1A>\n<02><03><>I<EFBFBD>ڢ<EFBFBD>!<21>(<10><><EFBFBD>_8Xr<58>;u<><75><EFBFBD><EFBFBD><EFBFBD>NJ<4E><4A><EFBFBD><EFBFBD><EFBFBD>[r<><72>DC:<3A>@<40>ͳ<EFBFBD>l<EFBFBD>\0<EFBFBD>e\\*x@Aȡ&<26>(<28>5<EFBFBD><35>,<2C><><EFBFBD><EFBFBD>#1x<> <08>!T<>D<EFBFBD><44><EFBFBD>(Q<><51><0B>DJ|D D:\0<EFBFBD>A<EFBFBD>й<EFBFBD> <20>baE<07>?rn<72><6E>Wkx<6B><78>X=i<><69>,\$3<EFBFBD>[<5B>r<EFBFBD>9B<08>Ʊ<EFBFBD>d<EFBFBD><64><18>\0<EFBFBD><EFBFBD>H<><48>4<EFBFBD><34><08><(z<17><06><>?<3F>sIbJ<62>g U<>\n(}<0B><><EFBFBD>J\"<16><0F>A<EFBFBD><12>B<>19<31>~<7E>I<01>#<23>\$<EFBFBD><EFBFBD>%d e\"<EFBFBD>`<60><><EFBFBD>t<EFBFBD><74><EFBFBD>'O=<3D><13><>@\$<EFBFBD><EFBFBD>O<>\nmT<03>o+<2B>Z<EFBFBD><5A><EFBFBD><18><>-<2D><><0C><01><>PF?<10>_<>I<EFBFBD>J<1F>X ģ2<11><1C><>-V<>;<3B>?2<><0F><>0<EFBFBD>*P3<50><0E><><0E>_T<E<05>J<EFBFBD>\\(<28>2<EFBFBD><32><17><>)<29>IQ<49><51><14>鬩<1C><><EFBFBD>R<EFBFBD><52>L&<26><>!ȯK<C8AF>iц<69>t<EFBFBD><74><EFBFBD><EFBFBD>K<>HRl<52>ȬEs<45><16><><02><><EFBFBD><EFBFBD>D<EFBFBD><44>xǴ<>i<EFBFBD><69><EFBFBD>!faB<><42><10><>F<EFBFBD><04>e><3E>V<EFBFBD><1A><><EFBFBD>-Qj<51>I<EFBFBD><49>7<EFBFBD><37><EFBFBD>\"%Rh<52> g<1B><>M<EFBFBD><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>b<EFBFBD>58R<52><C28B><EFBFBD><EFBFBD>*<2A><1D>9<EFBFBD><39>ꊰ<EFBFBD><EA8AB0><EFBFBD>9<EFBFBD>2Q0<51><30><EFBFBD>IR[<04>Z<EFBFBD><5A>N\0<EFBFBD><EFBFBD><EFBFBD>20<32><30><EFBFBD><EFBFBD><EFBFBD>\\[@<40>Q\0<EFBFBD><EFBFBD>Jx<EFBFBD><EFBFBD><1F><0F><>EC{<EFBFBD><EFBFBD><EFBFBD>\$lp1=\0<EFBFBD>Rо<0B>>E~<11><><EFBFBD><EFBFBD><07><><EFBFBD>:0<0B><><04>%<25><0F>R+)\0<EFBFBD> ƑQ<C691>@(\"<EFBFBD>_j<EFBFBD>T<EFBFBD>X\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\r1<EFBFBD>\0P<EFBFBD>9#\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>H;B<>|<06><><11>L<14>Z<EFBFBD><5A><04><02><>6<EFBFBD>/B<><1E>\nB<EFBFBD>{<EFBFBD><EFBFBD><01>|H<>,<2C> *;<01><0F>(<28>`<60>2@6<>><3E> <03>?P\0/<2F><><EFBFBD>\0|\\<EFBFBD>eB<>`<60><>jq<6A>U/\rc<EFBFBD><EFBFBD><EFBFBD><01><>҆<EFBFBD>6(N\0<EFBFBD>/\$<EFBFBD>\n8<>j*U<>\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>y*<2A>=<3D>;<3B><><EFBFBD><EFBFBD>\$<15>f<EFBFBD><66><EFBFBD>8X<38>BCE<43><45>r\"/<2F><><EFBFBD><EFBFBD><EFBFBD>kځ%\\9k<><6B><EFBFBD>B<EFBFBD><42><EFBFBD>0<EFBFBD>F<EFBFBD><46>(<28><>'<27>U<EFBFBD><55><EFBFBD>Ʈm<C6AE>@k<>T\0<EFBFBD><0E>E<EFBFBD><15>sEhy<68>e\n<EFBFBD>)<29>)<16><>b7<62><37><EFBFBD>(W%,<13>J<>r<EFBFBD><72>2D<32>rhE<68><45>\n0Q<EFBFBD>3<EFBFBD> U<>9TPO<50><4F><13><><EFBFBD><EFBFBD>8j|<7C>}<7D>R<0<><30><0B><>Zl <20><15>T<EFBFBD><54><17><><EFBFBD><EFBFBD><EFBFBD>*<2A>\$<EFBFBD><EFBFBD>U\r<EFBFBD>\"<04>.<0C> Ts~<7E>~(<28>3<14>a<EFBFBD><61><EFBFBD>@<40><>+<2B><17><>l<EFBFBD>`:<3A>`<60>:O<08>i<EFBFBD><69>BX<02>?ʄ<><CA84>7<EFBFBD><37>Lj|<7C>:n<>K:ز}<7D>\0<EFBFBD><EFBFBD>UMc`P%nn\n,<2C>4<EFBFBD><34>Q'%+H.<2E><>\"#G<><47>3`<60><><EFBFBD><EFBFBD><EFBFBD>\n1fg\0<EFBFBD>М'<27>k<><6B>qxD<\"<04><>,a|{~<1A><><EFBFBD><EFBFBD>C<S<>i<1D>B<EFBFBD>\nkN<EFBFBD><EFBFBD><EFBFBD>G<EFBFBD>}<7D><><EFBFBD>k:<3A><><EFBFBD><EFBFBD><12><><EFBFBD><EFBFBD>g<EFBFBD>)<29>JD<4A><44><EFBFBD>hÛf<C39B>\"<EFBFBD>kV~<7E><12>mM`HO<48>kD<1C><>^<5E>0/tj<15>l<EFBFBD>\r<07>!<21>f<<3C><>G<><14>T<EFBFBD><54><EFBFBD>v<EFBFBD>#@<0E>ek@2<>w<><77><EFBFBD>0<19>ܭt<DCAD><74><1E>į1<C4AF>u<EFBFBD>yvː%8<>?1<><31><EFBFBD>l<EFBFBD><6C>xt<78><14>mp<6D><70>fK3Z<33>J<EFBFBD>=\0@<40>^p<><70>ۑ<EFBFBD><DB91><EFBFBD><EFBFBD><EFBFBD>]Ҳ'<27>t١@C<0B>b<EFBFBD><62><05>\r[<5B><>V<EFBFBD><56>-<2D><><EFBFBD>o<EFBFBD>-<2D><>ݠe<DDA0>}<7D><06>Y<04><> -<2D><>-m<>I\0+<2B><>V<EFBFBD>D<EFBFBD>[B+<2B><>(<28>-<2D>4<EFBFBD><34>><3E>q<EFBFBD><1D>i>=<3D><><EFBFBD>/0-<2D>cL<63>pJ b\nd<><64>)<29><>#<23><>G<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD>\"<EFBFBD>Q<EFBFBD>N<EFBFBD><EFBFBD><02><>`.<1F>ȍ<EFBFBD>yȐEtP<74>q<>I]<5D><><EFBFBD>J8<4A><38><EFBFBD>rWT<57><54>I<EFBFBD><49><EFBFBD><EFBFBD>f<>aG<61>.떄7y<37><79>l<7F><6C>A<EFBFBD><41>7'<27>1<EFBFBD> <09>S<EFBFBD>-<2D>xI<78><17>m<EFBFBD><6D><EFBFBD>L:e<>ΉA<CE89>W<EFBFBD><57>ζEI<><49><EFBFBD>Wz<57><7A>3W<33><57><1F>)*/)C<><43><EFBFBD>x*c]<5D>%<25>}<0B><><08><11>_<EFBFBD><5F>IvͲ<76>'<27>\$U<EFBFBD><EFBFBD>S4k<EFBFBD>5WʏJC<0C><><05>7*<2A>b%<WC@<> <09><><EFBFBD><12>c{<EFBFBD><EFBFBD><EFBFBD><11>3)X<><58>&&<26><>eL<65>I<><49><1D>,N<> 2k#p5<70><16><>f4<66><34><EFBFBD>Ǻ<0B>z<>#<23><><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N<>b<EFBFBD>U<EFBFBD><55>oy<1B><16><>S<EFBFBD>4<EFBFBD>`q<>~1<>=<3D>8厉<>*<2A>OOJ<4F>C<><43><EFBFBD><0C><07><>'Dd,@kL<6B><1A><><1A><><EFBFBD><01>\\<EFBFBD>j2ͩ<32><CDA9><EFBFBD><1D><<3C>@_q<5F>2<>\0<EFBFBD>ձ<EFBFBD>)`<60><><18><><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>F\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>F<16><><*<2A>x*<03><><EFBFBD><EFBFBD>`<60><><EFBFBD><EFBFBD>-<2D><0C>\r<EFBFBD><EFBFBD><EFBFBD>|@<40><><EFBFBD><EFBFBD>7<EFBFBD>H@w<><13><><EFBFBD><08>H]<5D><><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_w<EFBFBD><EFBFBD>h0!<21>s<EFBFBD>1Ϗ<><CF8F>Ǭ<02>hW<68><0B>.<2E><0F>=W<><57>R*<2A>A_<03><02><>EDԷ<01>?1,Ub<55>9=t<>4è<34><05><>W<EFBFBD><57>^<5E><><EFBFBD>;<3B><><0E><><EFBFBD>@<40><>(1<D<>ÊHx<48>T()0z<30>`<14>_<EFBFBD>;<3B><>AL<41><0C>)\n<EFBFBD>K[f<>H<EFBFBD><48><EFBFBD>Wo<57>@bBK<42>iM<69><4D><EFBFBD>d+<2B>><3E>vI<76>(z:<3A><>.݀<><05>9uiѤDY<44><59><EFBFBD><EFBFBD><EFBFBD>O`<08><><EFBFBD>]I\0<EFBFBD><EFBFBD>R<13>Ć,K,<03><><EFBFBD>6L<36><4C>\"\"<EFBFBD>1g<15>(<28><><1C>|T.,<2C>9vb+\rk]u<>&<26><>|<7C><>b<EFBFBD>S<><53>d[<14>,g<1D><>aJ<61>(C<><43>k<><6B>\rF<EFBFBD>+ <09><><EFBFBD>9<><39>L<EFBFBD><05>))UA<55>B<EFBFBD>U<>h<68>g<0E><>c3x<>-n9<6E><39><EFBFBD><07><>x<><18>2<EFBFBD><32>q<EFBFBD>ib<69>rY7<><37>k<EFBFBD>y<EFBFBD>f<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>٪<>J:<3A>N<08>8<1C>Rcly\n<EFBFBD><EFBFBD>2<EFBFBD>W<EFBFBD>;<3B>.><3E>v6Q#A0<41><30>{έi<EFBFBD><EFBFBD><EFBFBD>7~@VX<56><58><EFBFBD>^<5E><>11-<2D>+<2B>v|<7C><>]Vf<56><66><EFBFBD>.<2E>{ <09><><EFBFBD>\r<EFBFBD><EFBFBD>;<3B>1lp<05>/<1B><04>uF<75><46>d<>\$PЮ0=@kS<14>0h<30><68>Ɉ@<07><>/*(O<>V.<0B><>G><15>(r<><72>!<21>6<EFBFBD><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y=XZ@<14>:<3A>'&0<>6kE|<7C><><EFBFBD>'|H;<3B><1B><>N<EFBFBD><4E>g<01>%<25>W<EFBFBD>+<2B><><EFBFBD>4<EFBFBD>;̓<><CD83>'x|<7C>f<EFBFBD>9<7F><39><EFBFBD>(O<><4F>d<EFBFBD><64><EFBFBD><EFBFBD>w%9]<5D><>f}<7D><>G<EFBFBD><47><EFBFBD>s<EFBFBD><73><EFBFBD>¾<EFBFBD><C2BE><EFBFBD><0C><>XM0<4D><30><02><01>gQ<18><><01>8̄<38>+O}<7D>͝0}<7D>9<><39><EFBFBD><EFBFBD><16><><EFBFBD>Nh<4E>/mgD<67><44><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>74勳P~}O)<29>Ug<55>9<><39><03>j<EFBFBD>8P<38><50>ݸ<EFBFBD>(<28>%<25><><EFBFBD><EFBFBD>j<EFBFBD>7oAB<41><42>i)<29><>K<EFBFBD><4B><EFBFBD><EFBFBD>u<EFBFBD><75><EFBFBD> <20>}s<>1<EFBFBD>=od<6F>V[Ĵ\n<EFBFBD><EFBFBD><EFBFBD>zl<EFBFBD>Mзr:F#{<EFBFBD><EFBFBD>*#<23>x<><1E>ܰ<10><Ds<44><73>k/mw :^<5E><><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ύD<CF8D><44>2<EFBFBD>z*<2A><>n<EFBFBD><6E>%<10><><EFBFBD><EFBFBD><11>i<EFBFBD>Ù *<2A>!8-<2D><><EFBFBD>tH<14>'<27><05><><EFBFBD>\r<EFBFBD>к<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8`<60><>\"<06><><EFBFBD><1D><>i]<5D>ZZ<5A>>Z\0ަ9<EFBFBD><EFBFBD><EFBFBD><EFBFBD>+䟂~<10><>\$ޭ<08><16>L<EFBFBD>P\\쇁<EFBFBD>XA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<><69><EFBFBD>z<EFBFBD>h<16>\$<05>SM<53>T'<1E><><EFBFBD>1<EFBFBD><05><>D<EFBFBD><44> <09><>5E<35>\0Ğ\$<EFBFBD>ttԮ<EFBFBD><EFBFBD>:\rMƷS<EFBFBD><EFBFBD>Ӗ<EFBFBD>ls<EFBFBD><EFBFBD>Af<>K<EFBFBD>k,N<>l<>D^zz<>dS<06><>/rt<72>N<EFBFBD>><3E><>o%i<><69>\0J<EFBFBD>B<EFBFBD>po<EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD><EFBFBD>/֘٫x\ny<EFBFBD>+<2B><>,e4<16><>q5Q'JD<4A>]<5D>B@m<><0E><><EFBFBD>R<EFBFBD>Ski~<7E><><EFBFBD><01>t0<74>[ 1<>z <09><><EFBFBD>&<26><>^<5E>\nO<EFBFBD><08><><EFBFBD>V<EFBFBD><56><12><>GV@T*<1F>H9<48>ωG0\0'<1B>`<60>Ѱ\r<EFBFBD><EFBFBD><EFBFBD>bQKsLd<02>*;\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.ĔUNp<>,L<>@TR<54>e<><65>b<EFBFBD><62>F<18><><EFBFBD>y<>n> IK<0C><1E>rG<0E> @<40><0C>?cI<63>ݓu%G<>O<10>1<EFBFBD><31><EFBFBD>C<EFBFBD>h<EFBFBD>5T<35>y<EFBFBD><15>I<EFBFBD><49>:\\0<05><06>X<EFBFBD><58>><18>ʊ<EFBFBD>0<18><EFBFBD>QB<51><1B><>EI/-LBT<>!b<><62><EFBFBD>6<EFBFBD><36><EFBFBD>k`jp\0K<0F><><EFBFBD>>k<>d<EFBFBD><64><EFBFBD><EFBFBD>/<02><><EFBFBD>ISk.+*<2A><><EFBFBD>R<EFBFBD>|gR<67><52><EFBFBD>W\\w<EFBFBD><EFBFBD><EFBFBD>t<05>.)<29>^Zc8<63>Z<EFBFBD>~F<><11>Sǵ<14>S<>m̕;b>\0jz=<3D><>T'<27>><1E><>q<EFBFBD>y}:<3A>u<EFBFBD><75>&<26><1E>W<EFBFBD>DQ<44><51>c-<2D><><EFBFBD><EFBFBD>6<[<5B><>e<EFBFBD>x<EFBFBD>ؠ<><D8A0><EFBFBD>[<5B><><EFBFBD>L<EFBFBD>\0wm<EFBFBD>l<EFBFBD>t<EFBFBD>z<EFBFBD><EFBFBD><S<>&<26><0B>db<>x<EFBFBD><78>oi<6F>gK<67>\r`<14>µ<EFBFBD>?D5u@b<><62><EFBFBD>N<EFBFBD><4E>O<EFBFBD>𤷤<EFBFBD><F0A4B7A4><EFBFBD>Y<15>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD>Nr鉞<EFBFBD>t<EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>tMs<>cBW?<3F>*D<>.p<><70><EFBFBD>'2<><0F>Ge\rp*#<23>e<EFBFBD><65><EFBFBD><1B><>C<EFBFBD><43><EFBFBD>\"<EFBFBD>QI\n<02><07>hi<68>Q<EFBFBD>@<40><><EFBFBD>\rl <09><><08><>_.<13><><EFBFBD>t*<2A>^<5E><>s<EFBFBD>9<EFBFBD><39><EFBFBD>Whq<68><71><02>~,<2C><>Yθ<59><CEB8>dQs¦\r<EFBFBD>Bj<EFBFBD><EFBFBD>D<EFBFBD>ǡ<><1D><<T)C<>\n<EFBFBD><12><><16><>&<26>D{\r<EFBFBD>l<><6C><EFBFBD>-R<><0B>\r@rk<><1B><>Ϣ<0F><>+Z<><5A><EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u8Ȩ<38><C8A8><1F><>s<EFBFBD>و<13><><EFBFBD>o<><6F>#<23><>g<02><>u\$F<EFBFBD>&\n-v\"P<13><><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>nnt<6E>1<EFBFBD><31>V<EFBFBD><56><14><><EFBFBD><EFBFBD>Awbx߄<78>D<EFBFBD>5<EFBFBD><35>-<2D>0<EFBFBD>a<EFBFBD>\0\r<EFBFBD>/!<21>I<EFBFBD><02><><EFBFBD>|/<2F><><EFBFBD><EFBFBD>h<EFBFBD><68>n<EFBFBD>Gf-Mdna<6E>^(e<>a<EFBFBD><61>¨<EFBFBD>Y<EFBFBD><59>Z,<2C>S<EFBFBD>E<EFBFBD>N<EFBFBD><4E>\\<13><><EFBFBD><03><>=<3D>4~Mʹ<4D>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ft<>Ŧ<15>u\"|`<60><>E<EFBFBD><45><EFBFBD>R<>z<><7A>D<EFBFBD>`<60>{<EFBFBD><EFBFBD>@<40>k/K<1C>Y<1A><><EFBFBD><EFBFBD>3sJ<73>䃿5XGͪ<47>%<16>9)Q<><51> <13>Q<1A><><EFBFBD><EFBFBD>1t<31>h<EFBFBD><0F>!TR<54><52><EFBFBD><11>H<02><><EFBFBD>Q<EFBFBD>\r<03>C<EFBFBD><10>E<EFBFBD>0<EFBFBD>#w<>G2<><32>/<2F><07><>/<2F><><EFBFBD>=^ <20>/Ժ<>ΐ<><02><><EFBFBD>E<EFBFBD><1C>\0{+<2B><><EFBFBD>t<1B>+<2B><>q<EFBFBD>б<EFBFBD><D0B1><EFBFBD>I<EFBFBD>t<EFBFBD>|<7C><><EFBFBD><EFBFBD>v<EFBFBD><76>q<EFBFBD><71>Ԉƌ&<26>\r\\<EFBFBD>Vߠ=<3D><><EFBFBD>Eb<45><62>nO<6E>rn<12><><EFBFBD>X({<EFBFBD>ɹuzK<EFBFBD><EFBFBD>`=:<10>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>%<25>:p<><70><08>q+<2B><>R<08>ldY<64><02><>\"<EFBFBD><EFBFBD>[V<>u{H-<2D><>H<EFBFBD>_<EFBFBD><5F><EFBFBD>8j<7F><6A>V<EFBFBD><56>5<><08><><04>\"\0\"N?E;+<11>O~<7E>wN<77>];L<14>'<27><><EFBFBD>SOF<15><><EFBFBD><EFBFBD>䁻<EFBFBD><E481BB>D<EFBFBD>-<2D>!#sN<73><<3C><><EFBFBD> ¯<><C2AF>mu<6D><75><EFBFBD><EFBFBD>G<EFBFBD>8<EFBFBD><38><EFBFBD>Tn]<5D><><EFBFBD><EFBFBD><EFBFBD>:<3A>zIMn<4D> O<>8<EFBFBD><38><EFBFBD>z5<7A><35><EFBFBD>o\\5<EFBFBD>7<><<16><>Ų#8<><38><EFBFBD><EFBFBD>?sN<4E>L<EFBFBD><4C> }<7D>x<1E><07>&4<><34>?<3F>[<5B>z<EFBFBD><7A><EFBFBD><EFBFBD><F3B3B7B6><EFBFBD><EFBFBD><*W<><57><EFBFBD><15><><EFBFBD>e}{HZ<48><5A><EFBFBD>,(<o<>o<EFBFBD>xW<>t<>2<><32><EFBFBD>#<23>A*<18><><EFBFBD><EFBFBD><EFBFBD>o\\<EFBFBD><EFBFBD>R<>}xH>NP<4E>|Qɚ|x<>'<27>-<2D> <20><>2\0<EFBFBD><15>?ƾ2*\r|]t<><74>p<0B>\"<EFBFBD>ڲJuuXyb<>D\n<EFBFBD>Z|<17>H7<48>_<EFBFBD>W<EFBFBD><57><EFBFBD>GuXyH>T\r<EFBFBD>G<1E><><EFBFBD><19>Ql<51><6C><EFBFBD><EFBFBD><EFBFBD><1F><><EFBFBD>n!<21>u'<27>*<2A>C5<43><35>>U<>2!b <1F><>9Pw<50><77>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>}y<>W<EFBFBD>|<7C><><EFBFBD><0B>a\$<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><18><>T<EFBFBD>U<EFBFBD><16>&~9(\\*<2A>!b_<><5F><EFBFBD><EFBFBD>w<EFBFBD>7\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]=<3D>\\*<2A><1E><>@<04>#N7ͪ<37><CDAA><EFBFBD>5QN`@<\0<EFBFBD>6!<21>9<EFBFBD><39>l<EFBFBD><6C>\$<EFBFBD>wI\$4<EFBFBD><EFBFBD><15>2<EFBFBD><32>\$<EFBFBD>&<26><><EFBFBD>.RZ<52><5A><EFBFBD><EFBFBD>Y<EFBFBD><59>uyᤳ<01>p<EFBFBD><70>&SI<53><49>@<40>EJiL<>c<EFBFBD><63><EFBFBD>V<EFBFBD>1F<31>1<EFBFBD><31>Z\r\r<EFBFBD><EFBFBD><EFBFBD>h<11><>k<><02><>HH<><02>˿<EFBFBD><CBBF><EFBFBD><05><>K<EFBFBD><4B><EFBFBD>?x<01><>-0\n<10><>d<>N3K<33><16>C<EFBFBD>59)ľ:B#<23><><EFBFBD>dN5A1<>Ɖ<EFBFBD><C689><EFBFBD><EFBFBD>Od[3ڠ<33><DAA0>h<11>[s~)<29>9<EFBFBD>DN<44>y<EFBFBD><79><EFBFBD><EFBFBD>><3E><><EFBFBD>X<EFBFBD><58>'Ƚ<>ϐH<CF90><48><EFBFBD>,<2C><>)ڂ<>\"<EFBFBD>e<EFBFBD>0;\0<EFBFBD>qeo><3E><>=<3D>|<7C>2<EFBFBD>G+B<>@z<17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02>@]}<7D><16>rQ<1D><1F><> k/<2F>|<7C>G<>:ѯ<18>W\0<EFBFBD>a4><3E><>^|<7C><><EFBFBD><EFBFBD>g<EFBFBD>o<>XE<>9p<39><70><1F>Lrg<72>A<EFBFBD><41>6<EFBFBD><36>p<EFBFBD>e<EFBFBD><65><EFBFBD><EFBFBD>1<EFBFBD><31>*<2A><07><><14>7<EFBFBD><37>[<5B>>]<5D>#<23>?jB<6A>~<7E>/<2F>}<7D>3<EFBFBD>:<3A><>U\$<05>?<3F><<3C><0B>G<EFBFBD><EFBFBD>a<EFBFBD><61><EFBFBD>\n>0#!i<>>.{A}'hQ<68>Lw<>~<7E>W_<57><5F><EFBFBD>Th#d<><64>û<0F><>d<EFBFBD><64>FQ<18><><EFBFBD><EFBFBD><EFBFBD>*{<EFBFBD><EFBFBD>\"<EFBFBD>\"<EFBFBD>P{<EFBFBD><EFBFBD><EFBFBD>}<03>4<EFBFBD>N<EFBFBD><4E><EFBFBD>i<EFBFBD><69><EFBFBD><15>\r_<EFBFBD><EFBFBD><EFBFBD><EFBFBD>e?l4<6C>2<EFBFBD>?\n<0F><>F<EFBFBD><46> <09><>q<EFBFBD>U<01><>Ľ<EFBFBD>_<EFBFBD><5F>`_<><5F><16><><EFBFBD>j<><6A>{_k_<>o<7F>~<7E><>c*#<23>(<28>/<1A>!Dn<44>F<>`<04><>?@s<>B<EFBFBD>!<21>?;<3B>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><>\0k<EFBFBD> <09>*N<><4E>D;<3B><08><>+d\nZZdB<EFBFBD><EFBFBD><1A> <20><>`B5<1B>P\n8<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><15><>c#ou<6F><75>k<>ˊM<01>ݯw<DDAF>.<0B><01>F<EFBFBD>J<EFBFBD><4A><EFBFBD>!|<7C>Ĉ2Fc<15>Y).<2E><><EFBFBD><EFBFBD>XHy<04>[<5B><>~<7E><><EFBFBD><EFBFBD>#/<2F>&<0E><><EFBFBD><EFBFBD>[<5B><><EFBFBD><EFBFBD><>Y@<40><><EFBFBD>(|\r\0,O<05><1A>0Yb<59><08>βŬ<CEB2>\$0<EFBFBD><EFBFBD><EFBFBD>aˑ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>A\$<0E><>0,<2C>@<07>Ӱ>>9<><39>\\t<18>i<01><<3C>\0<EFBFBD><EFBFBD>q\0<EFBFBD>}@`<60>\0fVj<EFBFBD><EFBFBD><EFBFBD><EFBFBD>dߠ'(<28><><EFBFBD><03> !_<>n<EFBFBD><6E>0+c<><63><EFBFBD>iig8a]'=-<2D>B!(<28><>8<EFBFBD>_<08><><04>x<EFBFBD>j<EFBFBD><08><><EFBFBD><EFBFBD>)\rH5H<EFBFBD><EFBFBD>Yn ,f<17>r<72><12>}-d\$<EFBFBD><EFBFBD>H<10><>2n鴆ܛ<E9B486>=<3D>-<2D>d<EFBFBD><64><EFBFBD>FE-d<><64><EFBFBD>a<EFBFBD><61>N_z4@<40><06>[<5B>n<EFBFBD><03>\$x!!i0T<><02><><07>u<EFBFBD>8<EFBFBD>ɸ<EFBFBD><04><02><>\0PZ8Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<><63><15><>+Њ<>AAF(<07><07><><EFBFBD>`mg*<2A>vS, dž<><1E>KcA<63>۬ &<26><1E>9<><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>0w<30>+<07>n<EFBFBD><6E>=<3D><07>)\$<EFBFBD><0E><07>Q<EFBFBD>~A<><41>a<EFBFBD>\0004\0u<07>{<EFBFBD>(<10><03>\$<EFBFBD><EFBFBD><EFBFBD>y !<0B><>B<08><> A<<3C>a<0F><>Az <20><><EFBFBD>ZA4\$ZY9.aX\r<12><>d<EFBFBD>A<EFBFBD>L<EFBFBD>v|oOz|<02>Z<C29A>(<28>e<1C>Z<EFBFBD>Ć<EFBFBD>");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo
|
||
lzw_decompress("v0<EFBFBD><EFBFBD>F<EFBFBD><EFBFBD><EFBFBD><EFBFBD>==<3D><>FS <09><>_6MƳ<4D><C6B3><EFBFBD>r:<3A>E<EFBFBD>CI<43><49>o:<3A>C<11><>Xc<58><63>\r<EFBFBD>J(:=<3D>E<EFBFBD><13><>a28<03>x<EFBFBD><78>?<0F>'<27>i<EFBFBD>SANN<02><><EFBFBD>xs<78>NB<><42>Vl0<6C><30><EFBFBD>S <09><>Ul<14>(D|҄<><D284>P<EFBFBD><50>><17>E<EFBFBD>㩶yHch<><68>-3Eb<45><62> <20>b<EFBFBD><62>pE<70>p<EFBFBD>9.<2E><><EFBFBD><EFBFBD>~\n<EFBFBD>?Kb<4B>iw|<7C>`<60><>d.<2E>x8EN<45><4E>!<21><>2<><05>3<EFBFBD><33><EFBFBD>\r<EFBFBD><1C><>Y<EFBFBD><59><EFBFBD>y6GFmY<6D>8o7\n\r<10>0<EFBFBD><d4<64>E'<27>\n#<1E>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E>C!<21>^t<>(<13><>bqH<71><48>.<2E><><07>s<EFBFBD><73><EFBFBD>2<>N<EFBFBD>q٤<71>9<39><EE8BA6>#{<02>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3nӸ2<D3B8><32>r<EFBFBD>:<<3C>+<2B>9<EFBFBD>CȨ<43><C8A8><EFBFBD>\n<<3C>\r`<60><>/b<>\\<EFBFBD><10><>!<21>H<>2SڙF#8Ј<38>I<13>78<37>K<EFBFBD><1A>*ں<>!<21><><EFBFBD>鎑<EFBFBD><E98E91>+<0F><>:+<2B><><EFBFBD>&<26>2|<7C>:<0B><1C>9<EFBFBD><39><EFBFBD>:<0E><>N<EFBFBD><4E><EFBFBD>pA/#<23><> <20>0D<04>\\<EFBFBD>'<27>1<EFBFBD><31><1E><><EFBFBD>2<>a@<40><>+J<><4A>.<2E>c,<2C><><0C><><EFBFBD>1<EFBFBD><31>@^.B<><42>ь<EFBFBD>`OK=<3D>`B<17><>P<EFBFBD>6<EFBFBD><36><EFBFBD><EFBFBD>>(<28>eK%! ^!Ϭ<>B<EFBFBD><42>HS<14>s8^9<>3<EFBFBD>O1<4F><31>.Xj+<2B><><EFBFBD><EFBFBD>M #+<2B>F<>:<3A>7<>S<EFBFBD>\$0<EFBFBD>V(<28>FQ<46>\r!I<07><10>*<2A>X<EFBFBD>/̊<><CC8A><0C><>67=<3D>۪X3݆؇<DD86><D887><EFBFBD>^<5E><>gf#W<><57>g<EFBFBD><67><EFBFBD>8ߋ<38>h<EFBFBD>7<EFBFBD><37>E<EFBFBD>k\r<EFBFBD>ŹG<EFBFBD>)<29><>t<EFBFBD>We4<65>V؝<56><D89D><EFBFBD><02>&7<0F>\0R<05><>N!0<>1W<31><57><EFBFBD>y<EFBFBD>CP<43><50>!<03><>i|<7C>gn<67><6E>.\r<EFBFBD>0<EFBFBD>9<EFBFBD>Aݸ<EFBFBD><EFBFBD><EFBFBD>۶<EFBFBD>^<04>8v<38>l\"<EFBFBD>b<>|<14>yHY<1F>2<1B>9<05>0<EFBFBD>߅<EFBFBD>.<2E><>:y<><79><1E><>6<EFBFBD>:<05>ؿ<EFBFBD>n<EFBFBD>\0Q<EFBFBD>7<EFBFBD><EFBFBD>bk<><\0<EFBFBD><EFBFBD>湸<EFBFBD>-<2D>B<EFBFBD>{<EFBFBD><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><10><>&<26>/n<><6E>w<><77>2A<41><D7B5><0C><><EFBFBD>A<0B>0yu)<1A><><EFBFBD>kLƹtk<74>\0<EFBFBD>;<16>d<EFBFBD>=%m.<2E><>ŏc5<63>f<><66><EFBFBD><EFBFBD><EFBFBD>*<2A>@4<><34> <20><16><>c<EFBFBD>Ƹ܆|<15>\"맳<EFBFBD>h<EFBFBD>\\<EFBFBD>f<08>P<05>N<EFBFBD><4E>q<EFBFBD><71><EFBFBD><EFBFBD>s<EFBFBD>f<EFBFBD>~P<><50>pHp\n~<7E><><EFBFBD>>T_<><5F>QOQ<4F>\$<EFBFBD>V<EFBFBD><EFBFBD>S<EFBFBD>pn1<1F>ʚ<EFBFBD><CA9A>}=<3D><><0B>L<><15>Jeuc<75><07><><EFBFBD><EFBFBD>aA|;<3B><>ȓN<C893><4E>-<2D><1B>Z<EFBFBD>@R<><07>ͳ<EFBFBD> <20> <09><>.<2E><1F>2<EFBFBD><32><EFBFBD><0C><><11>`RE<52><45><EFBFBD>^iP1&<17><>ވ(<28><><EFBFBD>\$<EFBFBD>C<0E>Y<EFBFBD>5<EFBFBD><35><EFBFBD><D883>axh@<40><>=Ʋ<1E><>+>`<60><>ע<><17><07>\r!<1C>b<EFBFBD><62><EFBFBD>r<0E><>2p<13>(=<3D><><18><17>!<21>es<65>X4G<34>Hhc <20>M<EFBFBD>S.<0E><>|YjH<><48>zB<>SV<53><56>0<>j<>\nf\r<EFBFBD><EFBFBD><EFBFBD><14><>D<EFBFBD>o<><6F>%<25><>\\1<EFBFBD><EFBFBD><01>MI`(<28>:<07>!<21>-<2D>3=0<><30><EFBFBD><0B><><13>S<EFBFBD><53><EFBFBD>gW<67>e5<65><35>z<EFBFBD>(h<05><>d<15>r<EFBFBD>ӫ<02>Ki<69>@Y.<2E><><12><><EFBFBD>\$@<40>s<0B>ѱEI&<26><>Df<44>SR}<7D><>rڽ?<3F>x\"<EFBFBD>@ng<6E><67><04><>PI\\U<><55><<3C>5X\"E0<1B><0B>t8<74><38>Y<EFBFBD>=<3D>`=<3D><>><3E>Q<19>4B<>k<EFBFBD><6B><EFBFBD>+p`<60>(8/N<>qSK<53>r<EFBFBD><72><EFBFBD><EFBFBD>i<01><>O*[J<1C><>RJY<4A>&u<><75><13>7<0F><><15><><EFBFBD><EFBFBD>#<23>><3E><><EFBFBD>Xû<>?AP<41><50><EFBFBD>CD<43>D<EFBFBD><44><EFBFBD>\$<14><><02><><EFBFBD>Y<EFBFBD><59><<3C><><EFBFBD><EFBFBD>X[<5B>d<EFBFBD>d<EFBFBD><64>:<3A><>a\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD><06>Π<><CEA0>W<EFBFBD><57>/ɂ<><C982>!+eYIw=9<><39><EFBFBD>i<EFBFBD>;q\r\n<EFBFBD><14><11>1<EFBFBD><31><01>x<EFBFBD>0]Q<><<3C>zI9~W<><57>9RD<0B>KI6<49><36>L<EFBFBD><4C><01>C<EFBFBD>z<EFBFBD>\"0NW<>WzH4<48><34>x<EFBFBD>g<EFBFBD>ת<EFBFBD>x&<26>F<EFBFBD>aӃ<61><D383>\\<EFBFBD>x<EFBFBD><EFBFBD>=<3D>^ԓ<><D493><EFBFBD>KH<4B><48>x<EFBFBD><78>ٓ0<D993>EÝ҂ɚ<D282><C99A>X<EFBFBD>k,<2C><0E>R<><52><EFBFBD>~ <09><>̛<EFBFBD><CC9B><EFBFBD>Ny<4E><79>Sz<53><05><>6\0D <09><><EFBFBD><EFBFBD><EFBFBD>؏<EFBFBD>hs|.<2E><>=I<>x}/<2F>uN<75><4E><08><>'R<><02><05>n'<27>|so8r<38><72><EFBFBD>t<><74><EFBFBD><EFBFBD>a<EFBFBD>\0<EFBFBD>5<EFBFBD>P<EFBFBD>֠dẘ<77><CC8A>̕q<><71><EFBFBD><EFBFBD>5(X<>Hp|K<>2`<02>]FU<46>~!<21><>=<3D> <20>|<7C>,up<75><70>\\<EFBFBD><EFBFBD><EFBFBD>C<>o<0B>T<EFBFBD>e╙C<E29599>}*<2A><>f<EFBFBD>#<23>shp<0C><>5<EFBFBD><35><1A><><EFBFBD>mZ<6D>x<EFBFBD><78>fn~v)DH4<48>e<EFBFBD><03>v<EFBFBD><08>V<EFBFBD><56>by<62><79>T<EFBFBD><54>̥,<2C><EFBFBD><7F><<3C>y,̫֞<D69E>2<EFBFBD><32><EFBFBD>z^<5E><><EFBFBD><EFBFBD>K<EFBFBD><4B>2<EFBFBD>xo <09> <20><><EFBFBD>2<EFBFBD> I<><49>a<EFBFBD>h<1C>~<7E><0B>c<><63>ej<65>6<EFBFBD><36>)<29>]<5D><04><><18>5<EFBFBD>͍dGE<D78A>t<EFBFBD>'N<>=V<><56>ɜ@<40><><EFBFBD><EFBFBD>b^<5E><><EFBFBD><EFBFBD>p:k<><6B>1<EFBFBD>StTԙ<>F<>F<EFBFBD><46>`<60><18>`<60><0E>{{<EFBFBD><1F><><EFBFBD>4<EFBFBD><34>7<EFBFBD>pcP<63>ط<EFBFBD><D8B7>V<EFBFBD><56>9<EFBFBD>ىLt<4C> M<><4D><EFBFBD><03><>{<EFBFBD>C<1F>l<EFBFBD><6C>n47s<37>PL<50><14>!<21>9{l a<><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!pG%<25><0F>)<29><<3C><>2*<2A><<3C>9rV<72><56><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D>W<EFBFBD>tn\r<ė<03>0<EFBFBD>vJ<76>栱I<05>i<EFBFBD><03>1<><31>Ys{uHհ?<3F>ۖ<EFBFBD><DB96><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>o<EFBFBD>Aߒr`S<><02>Cc<43><63><EFBFBD><EFBFBD>v<EFBFBD>˳J<12><>c<EFBFBD><63><19><><EFBFBD>=<3D><>-H/<05><><EFBFBD>q'E<><45><EFBFBD><EFBFBD>w|<7C><>N<EFBFBD>{\r};<3B><>><3E>x<>r<EFBFBD><1C><>u5<>B<EFBFBD>*\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><EFBFBD>\0<EFBFBD>{HU<08><><EFBFBD><EFBFBD>C<EFBFBD><43>W<EFBFBD>廳<EFBFBD>yB'<27><<3C>6<EFBFBD>[<5B><>s<EFBFBD><73><EFBFBD>y<EFBFBD><0B><><EFBFBD><EFBFBD><EFBFBD>@<40><>{<EFBFBD>Q<EFBFBD><EFBFBD><04><>>?/<<3C>K@<40> <20><><EFBFBD>B<>|aH\"<EFBFBD><1F> R <09>@>~@<40>BhE<0F>L\$<04><>[<5B><>Sa \"<EFBFBD>Ђ0<EFBFBD>Fe`b\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40>\n`<60>=<3D><><EFBFBD>n<EFBFBD><6E>.*̔<>O<EFBFBD><4F>Ϙ<EFBFBD><CF98><EFBFBD>n<EFBFBD><6E><EFBFBD><EFBFBD><jO<6A>lM<6C>\"mR<EFBFBD><03><>/<2F><03>*<2A>&T肙<04>T<EFBFBD> _E4<45><34><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><38><1A><>|R0*<2A>o<0C><>Bo>S%\$<EFBFBD><05> <20>N<><<3C>|<7C><>ξ<><CEBE><EFBFBD><01>y<06>7\n<EFBFBD><EFBFBD><EFBFBD><0E><>,鯢<><E9AFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쐬<EFBFBD>Pt<50><74>\"l&T<>o<EFBFBD><07>E05n<><03><><EFBFBD>o<EFBFBD><05>r<EFBFBD><72>v<EFBFBD><76><EFBFBD><02><><EFBFBD><EFBFBD>֣Bp<><70>p<EFBFBD><03>\n<EFBFBD><EFBFBD><EFBFBD>P<EFBFBD><0E><0B>.-,<2C><>q<16><><EFBFBD><EFBFBD>3\r/<2F>p<><70>P<EFBFBD><0B><07>b<EFBFBD><62><EFBFBD><EFBFBD>%m<12><><EFBFBD>P2?P<><13><><11>@<40><><EFBFBD>0(<28>/gpz<70>0<EFBFBD>`<60><0C>gυ<16><>ϑ<07>\\嬳q<1A><>><3E><>p<EFBFBD>@\\<EFBFBD><EFBFBD>u<17><0C>@<40><0E><>\$Ne<08>Q<0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0(A(<28>mc<6D>L'`Bh\r-<2D>!<21>b`<60><>k`<60><0B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`N<>0<EFBFBD> <09>ЯnN<6E>`<60><>D\0<EFBFBD>@~<7E><06><><EFBFBD>`K<><4B><EFBFBD>] <20>\r<11>|<7C><><1E>ʾ<EFBFBD>A#<23><>i<>Y<EFBFBD>xf<78><66>\r<EFBFBD>4 ,v<>\0ދQ<EFBFBD>ɠN<EFBFBD><EFBFBD>Xo<EFBFBD><02><><EFBFBD><05><> q<>'<07><>t<>r\$<EFBFBD><EFBFBD>np<EFBFBD>6%<03>%lyMb<4D>ʕ(<28>S)L')<29><>ޯL<DEAF>M<EFBFBD>I<>s {&<26> KH<1A>@d<>l<EFBFBD>wf0<66><30>x<><78>6<EFBFBD><36>~3<15>X<EFBFBD>h0\"<EFBFBD><12>D<EFBFBD>+<2B>A<EFBFBD>\$<EFBFBD><EFBFBD>`b<>\$<EFBFBD><EFBFBD>%2V<32>L<EFBFBD><4C> Q\"<EFBFBD><EFBFBD>%<25><><EFBFBD>R<>FV<04>Ny+F\n<EFBFBD><EFBFBD> <20>%fz<66><7A><EFBFBD>+1Z<31><5A><EFBFBD>Mɾ<4D>R<EFBFBD>%@ڝ6\"<EFBFBD>bN<EFBFBD>5.<2E><>\0<EFBFBD>W<EFBFBD><EFBFBD><0E>d<0C><>4<EFBFBD>'l|9.#`<60><>e憀<65>أj6<6A>Τ<EFBFBD>v<07><><EFBFBD><EFBFBD>vڥ<76>\rh\r<EFBFBD>s7<EFBFBD><EFBFBD>\"@<40>\\DŰi8cq8Ğ <09>\0ֶbL. <20>\rdTb@E <20> \\2`P( B'<27><0B><><0F><>0<EFBFBD><30>/<2F><>|<>3<EFBFBD><05><><EFBFBD>&R.Ss+-<2D><><EFBFBD>cAi4K<>}<06>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0O9,<2C>B<EFBFBD><42>@<40>CC<43><43>A'B@N=<07>;<3B><>7S<37><3<>DI<44><49>MW7<57><37>ED<45>\rŨ<0C>v<EFBFBD><76>@<40>DȺ<44>9 <20>l~\r<EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>5<EFBFBD>z^<13>r!<0F>}I<><49><17><><EFBFBD><EFBFBD>sB<73><1E>\0eT<>K<14>!<06>K<EFBFBD>UH<55><48><04>/<15><><EFBFBD><EFBFBD>2<EFBFBD>i%<=<03><><03>^ <20><>g<EFBFBD>8<EFBFBD>r7s<37><73><EFBFBD>%N<><4E>E@v<>sl5\rp<EFBFBD><EFBFBD>\$<EFBFBD>@<40><0C><><08>P<05><>\r<EFBFBD>\$=<02>%4<><34>nX\\Xd<EFBFBD><EFBFBD>z٬~O<><4F>x<EFBFBD>:<3A><>m\"<EFBFBD>&<26><>g5Qn<>(ൕ5&rs<> N\r9<EFBFBD><1E><>.I<>Y63g6<67>]Qsv<73>b/O <20>|<7C><0E>@<40>y<EFBFBD><79>^ur\"UvI<EFBFBD>{V-MVuOD<4F>h`<60>5<EFBFBD>t<><74><EFBFBD><EFBFBD>\0<EFBFBD><07>T<11>, (<28><><EFBFBD>q<15>R<>G<EFBFBD>.l6[S0@<40>%<25><><EFBFBD>C}T7<><37>85mY<6D><59><03>)<29>8<EFBFBD>C<EFBFBD><43>r<EFBFBD>;<3B>ئ)<29>M+<2B>4 <09> <20><>4<EFBFBD><34>|<7C>Ϊ1<CEAA>ZJ`5X,<2C>L\0<EFBFBD>7T\rx<EFBFBD><EFBFBD>H<EFBFBD><EFBFBD>dR*<2A><07><><EFBFBD>JЦ\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>52<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-Cm1S<31>R<EFBFBD><52><EFBFBD>T`N<>e@'Ʀ*<05>*`<60>><3E><><EFBFBD>\0|<7C><>I!<21>E,<2C>ag<61>.<2E><>cup<75>Ý9<13>`B<04><>aa<07><05><>p<EFBFBD>`<60>m<EFBFBD>6<><36>R~<7E>\0<EFBFBD><EFBFBD><EFBFBD>g-cmO<6D><4F>1<EFBFBD>\reIN<>QN<51>qo\r<EFBFBD><EFBFBD>nq<><71><0F><>R6<52>n<EFBFBD>Sn<53>t<EFBFBD>w<04>æ\r<EFBFBD>]a<><61><EFBFBD>-<2D>a*<2A><0F><>\\5Wpv^ OV`AF<41><46><07><>3#82p<>H'J'nM('M=j<>9k<16>ZbBn<42><<15>@<40><<3C> \0<EFBFBD>fe<EFBFBD>:\0<EFBFBD>K(<28><>N<1E><><EFBFBD>v<0E><0B><><1B>-!<21><>1<EFBFBD>ލH(<28>Qg<51><67>µ<1F><05><>y<03><<3C><14> <20>d<EFBFBD>\\<EFBFBD>c\\<EFBFBD>s,u<>˃q0<71>~<7E>i~<7E><><EFBFBD>e<EFBFBD>Ѷ<EFBFBD><D1B6>*<2A>~<7E><>Ƞ<EFBFBD>~<7E><>M<EFBFBD>m<7F><EFBFBD><7F>}Wؘ\r<EFBFBD><EFBFBD> <20>@<40>\"i<02>\$B<EFBFBD><EFBFBD><EFBFBD>c<EFBFBD>g<EFBFBD><EFBFBD><EFBFBD>5b?<3F>6!w<><77>+xl1<6C>`<60><>`<60><> s<><73> <17><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<16>vCnhEd Q<><51>id\"6<EFBFBD><EFBFBD><EFBFBD>`<60>\"&f<><66>x<EFBFBD>(\"<EFBFBD>2<EFBFBD><EFBFBD>Qz<><15>\$<EFBFBD>[0%<25>0lw u<1F><>>w<>%ر<><18>%<18>w<EFBFBD>Z<EFBFBD>\"-<2D><12><>u<EFBFBD>%<25><><0B><><15>Y<>g<><67>>x\\<EFBFBD>-<2D><><11>פ<><D7A4><EFBFBD>-v<>\\<EFBFBD><EFBFBD>x^'M <09>P<><50><EFBFBD>Y<03>P<EFBFBD><10><><10>)<29>8<EFBFBD>%<10>C<><43><EFBFBD>@<05>DF <20><>\r@<40>\0<EFBFBD>\\<EFBFBD><EFBFBD>0N<EFBFBD><EFBFBD>.<19><18>S\$<EFBFBD><EFBFBD>YI<EFBFBD><EFBFBD>C<EFBFBD>I<EFBFBD><EFBFBD> <20>i<18>>xP͒<CDB8>:ͷ<>=<3D><>T,<2C>'L<><4C>ٞ<EFBFBD>q<0E>Q2͌<32>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><0C><05>Δ<EFBFBD><CE94><0C>@<40>ђ<EFBFBD><D192><1C>9F<39><46><EFBFBD>`<60>O<EFBFBD><4F>f<0C>O<EFBFBD>w<EFBFBD>\\h<EFBFBD>=<3D>}S<>jGGW<47><18><><EFBFBD>A<EFBFBD><41>L<EFBFBD><4C>RJ\$JP+<2B>7<EFBFBD><37><EFBFBD>L<EFBFBD>v,ә(̵<><CCB5><EFBFBD>ZP<18>g<EFBFBD><67><EFBFBD><EFBFBD>&z+<2B><><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD>˘7<CB98>ͷ<EFBFBD><0E>-<2D>vA<76><41>w<EFBFBD><03>h <20>^9<>T<19>OD<4F><44><01>Z<15><>C<EFBFBD><0F><>m<EFBFBD><6D><EFBFBD><EFBFBD>`O<><4F>R<EFBFBD>yӒ<79><0E><>!<21>Gvzs<7A><73>G<EFBFBD>\$IhY<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>58<EFBFBD><EFBFBD>xF<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y9<EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<>ݍ8<DD8D><38>U<EFBFBD><55>C<EFBFBD><43>[<5B><16><>e<><18><>Zq<5A>uA<75><41>1<EFBFBD><31><EFBFBD>?<3F><><EFBFBD>و<EFBFBD>9!<21><><EFBFBD><EFBFBD>:<3A>ړ<><DA93><EFBFBD><EFBFBD><EFBFBD>b0<62><0B>{\r<EFBFBD>Qh`Md7<64>{2<EFBFBD> ۲8<>H`%Ƹ<><C6B8>{-<2D>l<EFBFBD>C<EFBFBD>Xk<58>H<0C><>Ӟ<EFBFBD><D39E>|\0<EFBFBD>}<7D>X`ShխX<>ց<EFBFBD><D681>\r<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>y<EFBFBD><EFBFBD>X<1F><><EFBFBD> <0F>:w7<77><37><EFBFBD><EFBFBD><EFBFBD>n<0C>鲌<EFBFBD>#<23>/<2F>:4<0C>(M<><0F>;<3B><><EFBFBD>c<EFBFBD>D<EFBFBD><44>z;<3B>Z3<5A><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>]<5D><>砛<EFBFBD>?<10>.<2E><><04><><EFBFBD>\r<EFBFBD>o<><6F><19>bO<62><4F>^`Ϻ<>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><EFBFBD>X<58>]<5D>|<13><><EFBFBD><EFBFBD><EFBFBD>^<5E>!%Xٽ<18><>8<EFBFBD><38><EFBFBD>\$<EFBFBD>;<3B><>z<EFBFBD>T<1A><>xK<78><4B>-~<7E> 8X)<!<21><>y<7F><79>x<78>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD>:<3A><> ىF<0F><><15><><13><><EFBFBD>x<EFBFBD>z+U<55><E0BA83><EFBFBD><EFBFBD><0C>A<EFBFBD>E<>;<3B><0C>'<27>%c<><63><EFBFBD><EFBFBD>Yߪ<59><DFAA><EFBFBD><EFBFBD>w<EFBFBD><{<EFBFBD><EFBFBD>9<EFBFBD><EFBFBD><EFBFBD>V:<3A><>`<60><>ʇ<<3C><><EFBFBD><EFBFBD>G<EFBFBD>ء<EFBFBD>Y<EFBFBD><1F>\0<EFBFBD><EFBFBD>Z<07><>U<18>Zq\nmx<05>)_<>}<13>YǏ<59>_<EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD><EFBFBD>y\r<EFBFBD>Y<EFBFBD><EFBFBD>,ۚ3<>L<EFBFBD><4C>٪<EFBFBD>Y<EFBFBD><59>ٸϻ><3E>M<03><> <09>M<11><><EFBFBD> <09>)<29><>P\0u8 S!Z{Y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>9θ<EFBFBD><EFBFBD><EFBFBD>fV3<EFBFBD>o<EFBFBD>Oϼ<EFBFBD>E<EFBFBD><03>`CЭ<43><D0AD>XU<58><55><19>}<1D>lw<6C><77>0<EFBFBD>}<7D><><EFBFBD><11><>͙<EFBFBD>7<EFBFBD>Y3ӬӔ<1D><>4<><34>G<EFBFBD><47>J<EFBFBD><19>&<26>ä<EFBFBD><C3A4>ͭ(<28><><EFBFBD>-A<><1C>V=f|<7C><14><>@E/<19>%\0r}<7D>ޮnn<0C>\0<EFBFBD><EFBFBD>Ly<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><+<2B><><EFBFBD>_<EFBFBD><5F>|<17><>#<23>A<EFBFBD><41>\"C[y<><79>EW<45><57><06>rW<72><07>f(\0<EFBFBD><EFBFBD><EFBFBD>Л<EFBFBD>><3E>)<29><05><><EFBFBD><EFBFBD>_<EFBFBD>U<EFBFBD><55>,U<>\\<EFBFBD>#<23><>e<EFBFBD><65><EFBFBD>*r<>`<60>N<EFBFBD>Y<EFBFBD> <20>*<2A>=a<>\\<EFBFBD><EFBFBD>&<26>^g4<67>mü<6D><C3BC><EFBFBD><EFBFBD><EFBFBD>e#<23><>^<5E>|ނ<>QXN<58><4E><EFBFBD><EFBFBD>I<EFBFBD>><3E><><EFBFBD>\0rƉ<72><C689><EFBFBD>4<EFBFBD><34>^Y<>V#<23>)<29><>k<EFBFBD>><3E><EFBFBD><D7BE><EFBFBD>Ι<EFBFBD>ԚF<D49A>W^<5E><><EFBFBD>%<25>ݒ\$+<2B>ՍP<D58D>kY*u<08>~<7E><>,<2C><0B>M<EFBFBD><4D>W͂hhG<68><47>K<><4B>\\C<EFBFBD><EFBFBD><EFBFBD>7HmZ<0B><><EFBFBD><EFBFBD>S<>Z_U<><55>%<25>\r<EFBFBD><EFBFBD>b)<29><>gg q<><71><EFBFBD><EFBFBD><0B><><1E>@@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>΅t<>\rJ<EFBFBD><EFBFBD><0E>۔<EFBFBD><DB94>7s<37><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>K_1<5F><31>t<EFBFBD>j&S<>Bi\0<EFBFBD><0C><> &\r<EFBFBD><EFBFBD><EFBFBD>`<60>:<12>j<12>F<EFBFBD>~=T̪<CCAA><7F>g<EFBFBD>侑<EFBFBD><E4BE91>!<21><1E><>^h<>^<5E>ו<EFBFBD><D795><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/[{<EFBFBD>B<02><><EFBFBD><11>(<28>/<2F>|<7C><><EFBFBD>g<EFBFBD><67><EFBFBD>j/<2F>d\\ޖSɗ<><C997>9<EFBFBD><39><EFBFBD>G`<60><>u<16><>1<19>M<EFBFBD><17>?<3F><><EFBFBD>3}<11>Q\$q<EFBFBD>I<EFBFBD>m~<7E><><EFBFBD><EFBFBD>G=<3D><>oVz<56>\0_p<EFBFBD><EFBFBD><EFBFBD>!t<><74>r{<EFBFBD><EFBFBD>^Z&<26><> <09><><EFBFBD>u<EFBFBD>X<><58>1@<40><01>G{<EFBFBD><1E><>Ь<EFBFBD> NI<0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\$=0<>Bu82<38>S\"<EFBFBD>6<EFBFBD><EFBFBD>Qpj<EFBFBD>ov\r<<3C><>ɶU<C9B6>\0.<02><><EFBFBD><0C><>E<01>M\n8<EFBFBD>V<EFBFBD>oQ\\<EFBFBD>`?<3F><><EFBFBD>L6<4C><0F><>=\r<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"<01><1E><><01><>B2pu<03>&\0<EFBFBD><16><>5<EFBFBD>\r<EFBFBD>j<01><19>0V<30>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>;v\0eH;<01><>ʇTJ<54><4A>6pH?/\\<EFBFBD>H<EFBFBD>@!pp<70>C<EFBFBD><43>+5<>\\+a<1A>8;<3B>\r(*<2A><>T<>Ƣ;<3B>O<>|<7C><><EFBFBD>^Ld<4C>&/<2F><>NI<4E>T<EFBFBD><03>|#<23><><06>G<EFBFBD><47>`j%Ǘ<><C797>D<><1C><><EFBFBD>Z<EFBFBD>ġ4<C4A1>ni<15>i<EFBFBD><69>4<EFBFBD><34>]@t<><74>#5c<35>ľ<EFBFBD><C4BE> <09>Z<EFBFBD><5A>R<EFBFBD>yR`@ँ\$I{z<EFBFBD><EFBFBD><EFBFBD><08>胇<05><>4|<1A> <20><><EFBFBD>܀@=hCE<43><06>H<EFBFBD><48>, ,Z<><5A><EFBFBD><02>i<EFBFBD><69><EFBFBD>K<0B><>àP<>|,g<>z*<2A><><16><><EFBFBD>E)AjknK\n<EFBFBD><EFBFBD>C\"J79<02>}4<>f<EFBFBD><66><EFBFBD><07>*<2A>4<EFBFBD>65<36><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D78F><EFBFBD>Q\\<EFBFBD><EFBFBD><EFBFBD>c<><1D>M<EFBFBD><4D>\r<EFBFBD>{<EFBFBD><EFBFBD>*<2A>1j<31><6A><EFBFBD><EFBFBD><EFBFBD>lF<6C><46>m<EFBFBD>4<EFBFBD><19>M<EFBFBD>*<2A>`<60>X<EFBFBD>G<EFBFBD>D<EFBFBD>A-qqab<61><62><05>1<EFBFBD>9R<01>H<EFBFBD><48><EFBFBD>b<EFBFBD><62>g8<67>+<2B>l/<11><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ń<0C> (<28>ʀL\" 8<0C><><EFBFBD>0(Dc<44><63>#ihc<68><63><EFBFBD>`<60><>8<EFBFBD><38><EFBFBD>A1<41>\\<EFBFBD>uK(<28>4!<21><><EFBFBD><EFBFBD><EFBFBD><08><>d<><01>3<EFBFBD>8<EFBFBD><38><EFBFBD><18>ш<EFBFBD>Ʈ4<C6AE>j<EFBFBD>;<3B>#<06><>Ø<EFBFBD><04><><0C>s8<><38><EFBFBD>5,ucnc<18>F<>N<1F><>pPa8<>G8<>r<EFBFBD>K<EFBFBD><07><><EFBFBD><EFBFBD><EFBFBD><14><>ύ<EFBFBD>k<EFBFBD>i<18>˕4<07>A<> <09>8TҨ<54>26 ;*i<><69>X<EFBFBD><58><EFBFBD><0C>2%M<02>BJG<> &<18>C*1T\n4 -#<23>.<2E>%<25><18><07>'z<>#<23>8<><38><EFBFBD>A+<11>@S.0<EFBFBD>׀<EFBFBD><EFBFBD><EFBFBD>II`U<>Q<EFBFBD><06>U<EFBFBD>dd\$)<29><>*]<5D><><EFBFBD>T<EFBFBD><54><EFBFBD><EFBFBD>C<EFBFBD><43>9M*<2A><> \$b+<2B><19>ѽΑ<>ydt<64>\0-<2D><>L<EFBFBD><4C>8\$<EFBFBD><EFBFBD>e\$<16><><EFBFBD><Aɍ!<21>d<EFBFBD>\$<EFBFBD>p@]<5D>d<EFBFBD><64><EFBFBD><EFBFBD>&<26><>M+2E<32><45>y߈((_|<7C>Md<16>vU<76>9!<21>eD <09>(<12><>W=<3D><><17>#<02><><EFBFBD>_<1A>'<27>bN<62>;<14><02>'<27><>\0<EFBFBD>O<EFBFBD><<3C>L<>iA<69><41> Р<>T<EFBFBD><54><EFBFBD><02><>\0<EFBFBD>Q<EFBFBD>J# }Ba(<28>/<2F>u<EFBFBD>GB<47><42><EFBFBD>%-)<29><17>h<EFBFBD><68>u<EFBFBD><75><EFBFBD><EFBFBD>~\0<EFBFBD>I<EFBFBD>U<EFBFBD><12>Pr<03>+1<><31><EFBFBD><0F><><0B><>%51<35><31>ɒL`ܞE'(<28>/<2F><>Q<EFBFBD>Ô<EFBFBD><C394>%T<>)9<>Or<4F><72>T<EFBFBD><54>],<2C>?<3F><<3C>a<EFBFBD> <09><><EFBFBD><C282>/|<05>\$O<EFBFBD>@Z<05><>I<EFBFBD>XN<58>|<7C>%<25>,<2C>SK:]ha<68><61>%<25><>)k<><6B>P\0,<10><><EFBFBD>'<27>0J<30>:<3A><> <09><><15>&<26><><EFBFBD><EFBFBD>V<EFBFBD>0<><30><EFBFBD><EFBFBD>jهJM<1B>*<2A>x<EFBFBD><78><EFBFBD>P)<29><><EFBFBD>j<EFBFBD>K<><4B>R <20><>\\\r<EFBFBD>u\r<EFBFBD>(ÐW<><18><>F: k<><6B><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><0B>NJ<02><>P!<21>Q2 'H<13> *\0<EFBFBD>g<EFBFBD>T|<7C><><EFBFBD><02>~g`D,<2C>Ͼ\0#<1F> <09>;(\0<EFBFBD><04> <20><>L<EFBFBD><4C><02><>f<EFBFBD>5<EFBFBD>'<11><>`'<27><><EFBFBD>&t(<28><>L<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD>\0<EFBFBD><04>'<27><>ksi<73><69><EFBFBD>&<26><02><15><>d<EFBFBD>m<01><15><>P\"<EFBFBD>Ng`O<>&<26><04><><1F><08> X@<40> <09><>%sh<02><>g_<01>sb<73><62>f<>5<EFBFBD><35>M>s3<73>@T<><54>77<37>+<2B><>nS<6E><53>dӧ5'<27>6s\0\\<EFBFBD><EFBFBD><EFBFBD>\0O:<3A><>NLS@ P<13>{;9<>Ͷp<CDB6>F<02><>@<40>78_<01>l<EFBFBD>9<EFBFBD><39>\n<EFBFBD><EFBFBD><04>)<29>Rg<52>9<EFBFBD>@a<><61>:i<>\0<EFBFBD>vS<>D<EFBFBD>g<EFBFBD><04>\0<EFBFBD>S<><53><EFBFBD><EFBFBD>\0<EFBFBD>s<>M\0B<02>\0<EFBFBD>+O<0F>q<EFBFBD>`<14><>><3E><>4 T9<><39>7=<3D>M<>v<EFBFBD>=q<>'y;<3B>'L<>f<EFBFBD>F<EFBFBD><0C>f<EFBFBD>)<29>ϖwP<77><50>T<EFBFBD>f<EFBFBD>>\0<EFBFBD>O<EFBFBD>|<13><>?0)O<>~<7E>|<7C><><EFBFBD><EFBFBD><EFBFBD>`#N<><EFBFBD><02>\0<EFBFBD><EFBFBD>><3E>'Ϫ}<7D>ՠ<EFBFBD><D5A0><EFBFBD><EFBFBD>><19><><EFBFBD>~<7E><06>e \0<EFBFBD>?<3F>*P<><50>3<EFBFBD><33>\\<EFBFBD><EFBFBD><EFBFBD>@<19>͌<07><1C>5\r'<27>C<EFBFBD><43>P<EFBFBD><50> O<>E\n<EFBFBD>MB<EFBFBD>#к<>T;<3B><><0C><>=jPރ49<34><39><10><>Ez#NƉ٢<><D9A2><EFBFBD>FY<46><59><EFBFBD>\\<EFBFBD><EFBFBD>\0CA<EFBFBD>QJ<51>TV<54><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><7F><EFBFBD><EFBFBD>7 \n<EFBFBD><EFBFBD>v<EFBFBD>0@<05><1A>_<EFBFBD><5F>Q<EFBFBD>L<EFBFBD>RRc!<21><>V<EFBFBD>|<7C>z<EFBFBD><7A>6<EFBFBD><36>KKю<4B><D18E>eS<65><53><04><><EFBFBD><EFBFBD>4<EFBFBD><15>\$<EFBFBD>aI<EFBFBD><EFBFBD>|P<><50>A+<2B><>.qKD-<02>S <20>EvbCO<>><3E><>H<EFBFBD><48><05><06><<3C><>\r#<23><>LPܘ<50>s⥺P֭2<D6AD>0<14> =<3D>*<2A><>WL<57><4C>2d<32>t<EFBFBD> \0<EFBFBD>!<21><>< <09>b<19>q<EFBFBD>\\pa@<40>Rd o<>fKM<4B><4D><EFBFBD>p <20><><EFBFBD>\0}<7D><><EFBFBD><EFBFBD>z<EFBFBD>\0<14><03><><EFBFBD><EFBFBD>2<EFBFBD>Ձ<EFBFBD><D581>3\"<EFBFBD> <20>)@\\*g<>r<EFBFBD>M#!<21><<3C><>O<EFBFBD>XT\"<EFBFBD>`\n];S<>C<EFBFBD><43><EFBFBD>Π<EFBFBD><CEA0>5<EFBFBD>B<EFBFBD>cP<1A>Ӳ<EFBFBD><D3B2>[<5B><><EFBFBD>\$4p<>&<26><>\"<EFBFBD><EFBFBD>i<>NP<4E>Ӡ<EFBFBD>'J<>\rE<EFBFBD>&8z<38><7A>p<EFBFBD>@><01><>BR<>ݛi\\<03><>uD*vz<76><7A>Sć\$*<08><>TZ<54>\nd<>6<EFBFBD>i<16><>+<2B><><EFBFBD>J<EFBFBD>D<EFBFBD>1I<31>:<3A>=<3D>P<13><03><><EFBFBD><EFBFBD><07><><EFBFBD>\"q@|<7C>p<13><>vjoT@SS<53>ڦ<><07>*<2A><16><>'8\n#<0B><><EFBFBD><EFBFBD>֠+`ɋ<><03><><EFBFBD><EFBFBD>SC!<21><0C><>:Q<><51>j<><6A><EFBFBD>|<7C>gXђϰd磬%a<>X<>^O<>uG<75><47>e<07><>'<12><13>p\0{V<EFBFBD><EFBFBD>\0<EFBFBD>gQWxX<1C>Z<EFBFBD><5A>o><3E><><EFBFBD>B'<27>= 'L<>)<29>v<EFBFBD><76>\0<02>7<EFBFBD>
1L<31><4C><EFBFBD>k<>T<EFBFBD>B<05>R<EFBFBD>t<EFBFBD>G<1B><><1E>,<2C><><01> <20>R<EFBFBD>MZRWL<57>U<EFBFBD><14> <09><>K <09>Wngl,T<>P<EFBFBD>\0<EFBFBD>:<3A><>`*Y<>tS<07>W\\<04>`\n<04><>S_<53>_K<5F><4B>kh&[<5B><>5\\<EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>U<19><><EFBFBD> <20><05>\0^\r<EFBFBD>rC\\<EFBFBD>;<3B>5E<35><45><08>?W<>%<25>:<3A><>\n!PZ<50><5A><EFBFBD>BwWW<57><57>\0{<16>7<EFBFBD><37>\$<EFBFBD>+<2B>[<5B>1h<31>B<><1E><>\0<EFBFBD><EFBFBD>63.kw,l0<><30>f<EFBFBD><66>:<16><><EFBFBD>5c<35>2X<32>F<EFBFBD>*<16><>j<EFBFBD>2<EFBFBD><32><18><>Ðe<>ee<1A>L<EFBFBD><4C>&<26><>}7<16><>,2<><32>߯<EFBFBD>y]D\\<EFBFBD><EFBFBD>G<EFBFBD><EFBFBD><EFBFBD>.g2<05>8\nj<EFBFBD><13>][]<5D>M dc<64><63>}{<EFBFBD><EFBFBD>T锘<EFBFBD>+xG<78>s,<2C>\"<EFBFBD><EFBFBD><17>:vQ<01><>\\n<EFBFBD>H<EFBFBD>7ڟ<EFBFBD>yu~ <20>X=B<>*<2A>d<EFBFBD>Q<EFBFBD>Es<0B>M<EFBFBD><4D><EFBFBD>u?Z<>FH<0E><>N<EFBFBD>,<2C>D_<44>R<EFBFBD>\0Mh<EFBFBD><EFBFBD>/<2F>~<16>y<1A><>|C<>V<EFBFBD><56><17>^<5E>5R<35><52>2%<25>Z<EFBFBD><5A>V<EFBFBD><1C>s*lo{,[<10>vB<76><42>1\0Ƭ<EFBFBD><EFBFBD><EFBFBD>><3E><><EFBFBD>/<2F><><08><>Z<EFBFBD>R<EFBFBD>a\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>E<EFBFBD> <20>A<EFBFBD><41>*<05>a<><16><0E>2<EFBFBD>\0a<03><>@z<><7A>\\70<EFBFBD>a<EFBFBD>r<><72><EFBFBD>ǩʐvfX<>°g8<67>Z^6g1<04>N<EFBFBD>o<02><>9%<25><>S<EFBFBD><53><10>t\\<19>OHH<02><><05>\r<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>W^&<07>A<EFBFBD><41><EFBFBD><EFBFBD>/<2F><>4<EFBFBD>{2<EFBFBD><EFBFBD><<0E>v<EFBFBD>&Xi<>_<EFBFBD><5F><EFBFBD>Ҭ<EFBFBD>f<EFBFBD><66>Z<EFBFBD><5A>Vз<0B>\\<EFBFBD>t<03>&<26><03>0\0<EFBFBD>gb<EFBFBD>;<3B>J<EFBFBD>I<>,ˠ\n)<29><>.R<>\n<EFBFBD>T-yD<79>Kx¡_<C2A1>/<01><><EFBFBD>x:<3A><>H<EFBFBD><48>W5^UQ5<51><35><EFBFBD>sUZ<55><5A>IUwfF<66><46><EFBFBD><EFBFBD>R<EFBFBD><52>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>}<7D>Dnz۶F<DBB6><0F><><EFBFBD><EFBFBD>\"\0\\<EFBFBD>1\nv<><76>W<EFBFBD>++g2р<><0B><>SR<53>K<EFBFBD>C<01>b<EFBFBD>L<>%&=7<>\n 6<><36>\0r )<29><>\n>g<>1<EFBFBD><31><03>ބ8)Xo<58><6F><EFBFBD><EFBFBD>\$U<04>;<3B><>P<EFBFBD>V<EFBFBD><56>z<EFBFBD><0B>J<EFBFBD><0B>}<7D>H;r+ѝdx<64><78>\r-<2D><07>%BA&\\;<3B><>'<27><>om|za<n<>p =<3D>^=|<11><>8<38>'@<40>`6<><36><EFBFBD><EFBFBD>teD<19><>)}q<>_d9\n<EFBFBD> A<><41>#}<7D><>_0<5F><30>m<EFBFBD><6D>`<06>{<EFBFBD><EFBFBD>\r<EFBFBD>rc><3E>篁~<7E>d߰L<DFB0>?b%<25>/<2F>}<7D><>\r<EFBFBD><EFBFBD><EFBFBD>><3E>;\0\\<EFBFBD>`ցP\"-!<21>n!<21><><EFBFBD><19><><EFBFBD>7<EFBFBD><1B>ϯ<EFBFBD>71̼@<40><><EFBFBD>M<><4D><12>B<EFBFBD><42>*<2A>A<10>jn<>\"`j<><6A><EFBFBD>Jҳ<4A><D2B3><EFBFBD>1<EFBFBD>E<EFBFBD>1m6<6D><36>/<2F>G<EFBFBD>_<><03>b <13><>s<EFBFBD>_z<5F><7A><EFBFBD>'~<14>]L:<3A><02>\\<13><><EFBFBD>cF<63>a-8()<29>G̩<47>a<EFBFBD><61>f,<2C><><EFBFBD>Fp<><70>E<EFBFBD><1E><>?<3F>X<EFBFBD><58>)2<><32><08>\")pi<70><69><EFBFBD><EFBFBD>4<EFBFBD>1<EFBFBD><EFBFBD><0E><07><1B><0B><><EFBFBD>^<02><><EFBFBD>p<EFBFBD>X5<58><35><EFBFBD>P<EFBFBD><50><EFBFBD>x<7F>܋<11>w<EFBFBD> <09><><EFBFBD>~@<40><><EFBFBD>5w <20><>DZ&<1F>J<EFBFBD><4A><EFBFBD><EFBFBD>z<EFBFBD>jl<6A>d<> `P<07><16><><03><><EFBFBD><EFBFBD>\"/d{8<EFBFBD><EFBFBD><EFBFBD><06><>X<EFBFBD>Q<EFBFBD>d)8<1E><> qx3<78><16><><15>ņb{<EFBFBD>,1<><31><07>qM<71><1C><01><><EFBFBD>>D\\X<EFBFBD><15>3g<><67><EFBFBD><EFBFBD>g<><67>Ťn<C5A4>I<EFBFBD><49><EFBFBD>b<EFBFBD>6xx<0F><0E><>3<EFBFBD>b<>dnU^!<21>&<26>|k<01> 9=Yv<59><76><EFBFBD>Lq<08><1C>\"<EFBFBD>:<3A><>D<EFBFBD>+<2B><><EFBFBD>w<><77><10>y<EFBFBD><79>#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t.<2E>X|D<>xn<78><6E><EFBFBD><qI<71>|Hb<><04>ĕ<EFBFBD>r-<2D><><11>n<EFBFBD><6E><EFBFBD>,Є<>:a<><61>^<5E>.<2E><>ȞF<C89E><46><1D>[_̭<5F><EFBFBD><7F><EFBFBD>/Oz<4F><7A><EFBFBD>8<EFBFBD><38><EFBFBD><1F><>\0<EFBFBD><06>;<01><><EFBFBD>l<EFBFBD>HW<48><03><>m<EFBFBD>O(<28><><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD>'@<40>\$Ȱ<>ǒCt >`tQB<51><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0C>lm̉8J<38>O<EFBFBD><4F><EFBFBD>m%<25>`<60>^Kp1<70><31>Q<EFBFBD><51><02><02>2K<32>\0<12>=<3D><>y)2<32>4<EFBFBD><34>P<EFBFBD><50>7#ȳ<><C8B3><EFBFBD><EFBFBD>ċ-TQ<54>><3E><1B><>.%<25>\rܥ<EFBFBD>Ҩ<><D2A8><EFBFBD>k<EFBFBD><01>6@<03>f@<40>y<0B><>^<5E><>;<3B><><18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HK<48>><3E>h)<0F>\"<EFBFBD>R2E(̠<><CCA0>-<2D>H<>0<EFBFBD>e.p<><70>\$<EFBFBD><EFBFBD>-<2D><>7%<25>)vo<76>\$/<2F><><EFBFBD>+.<2E><><08><>ce<63>;<3B>^<5E><><EFBFBD>ʁd<CA81>Wy<57><79><06>v<EFBFBD><76>@q<>47Fy;<3B>lY<><59><EFBFBD><EFBFBD>\n<EFBFBD>xJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1D>l<01>=<3D><>x<>&-<2D><>]<5D>*d}WA@.OM<4F><4D>;<ک<><DAA9><EFBFBD>\09Hl<0E>D+\0<EFBFBD>\0<11>&<26>UR9<52><16><>œ<EFBFBD><C593>&<26><>&`c<>C<CE80><18>D<EFBFBD><44>la<6C>}ܩ<>=h(<28>D@ЄG<D084><47><07><>hP<68>W<EFBFBD>f<>@<40>oB'<27><>@<40>&H\0<04><><EFBFBD>;<3B>;E<>N<><4E>-<2D><>zhoC<6F>9<EFBFBD><39>4mM}l<> z&<06>4v<34>\r{Ez<0F><><EFBFBD>4`?\rh{F<EFBFBD><EFBFBD>n<>@ӥB'<27>қ<EFBFBD>d<EFBFBD>f<EFBFBD>\0<EFBFBD>E<EFBFBD>B#xZa<>v<EFBFBD><17>9=7`<60><><19><>ٗ\0<EFBFBD><1D><><01><>\r<EFBFBD><15><>W<06><><12><>>j<>\r<EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+S<><53><e<><65>6<EFBFBD><36><EFBFBD>i<EFBFBD><69>f<EFBFBD><66>T<EFBFBD>Ԧ?<3F>|<1F><>jH<6A>Y<EFBFBD><10>Z5S<35>9<EFBFBD><39><EFBFBD><EFBFBD>6<EFBFBD>KN<4B>G<17>}+<2B>x<04>B<16>En)Dh舋<68><E8888B><EFBFBD>n[1<><31><EFBFBD>g<EFBFBD>ʙ<EFBFBD><1E>_<EFBFBD>}<7D>v<EFBFBD><76><EFBFBD>U<15><>IX\0<EFBFBD><1A>:kSA@R+<2B><><EFBFBD>V<EFBFBD><56>?<3F>b<EFBFBD><62><EFBFBD><10><>B<06><>jB<6A>7<EFBFBD>A<EFBFBD><41>X<EFBFBD>p6j#Gy<47><79>X<EFBFBD>\0<EFBFBD>R<><52>Xf6<66><36>C@r<><72><EFBFBD><01>P<EFBFBD><50><EFBFBD>ֹu<D6B9>d<EFBFBD><1D><>&<26><>&<26>@<40><><EFBFBD><1D><><EFBFBD>z<EFBFBD>a&<26><><EFBFBD>%<25>|h<><68>Y<EFBFBD>G<>/<2F><><EFBFBD><EFBFBD>y(Ŭ<17><>@<40>|,<2C>d<EFBFBD><64><EFBFBD>5۟<35><DB9F>0<EFBFBD>l<EFBFBD>eV<17>@=<3D><>}^[+ىW<D989><57>lR<6C><52>PN<50>,ٶ\nK<01>Q\0<EFBFBD>\\0<EFBFBD>0<EFBFBD><EFBFBD>C<EFBFBD>|<11><><EFBFBD>i<EFBFBD>,<2C><>0ͳ]|<7C>Og<4F><67><EFBFBD>٩<EFBFBD><D9A9><EFBFBD>q<EFBFBD>'<27><0F>{тUD`<60><>eLIP<49><50>!W<><57><03><><EFBFBD>tI<74>_<EFBFBD>C<EFBFBD>bDŽ<62>Ki<4B>ix<69><1B><06><>Q;<3B>j<EFBFBD>z<14>)<29>8 2<><32><EFBFBD><EFBFBD>b<17><><EFBFBD><EFBFBD><03>\0<EFBFBD>FO/%<25><>c<><63>v<07>L!<21>S^\0<17>[<5B><>T<EFBFBD>!ۚҍ<DB9A>֚<02>=h<>`<60>F\0D@<40>y2E\0<EFBFBD>ڌA <20>՚I<>DF<44><46>nf<6E>M<EFBFBD>t<EFBFBD>f<EFBFBD>i<1B><>Qb<51>J`<60>O\n<EFBFBD><EFBFBD>z<EFBFBD>WV<>&<15><><EFBFBD>(<13><><07>(<1F>P<EFBFBD><50><EFBFBD>YGH<47><48>嵮T <20><>ܡG<DCA1>Xp<58>I<0C>-\$懃@=<3D>,<2C><>L\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD>/<2F>T<EFBFBD><54><EFBFBD><EFBFBD><07>H<><48>w!<0B><><EFBFBD>XMz<4D><7A><0B>H<EFBFBD><48><EFBFBD>:wK<77>-;<|<7C>{<EFBFBD><EFBFBD>o\0u<EFBFBD>X<EFBFBD><EFBFBD>d<EFBFBD>?\\<08>f<EFBFBD>F<EFBFBD>{ˆ<>Iyܲ<79>I/q<>ݯ<02><1D>3<EFBFBD>(<1D>S<EFBFBD>@\n<EFBFBD><EFBFBD><01><19>̍<EFBFBD><CC8D><06><>w<EFBFBD> ) <09>m<EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD>Tij3<6A><1D>X<EFBFBD><58>~<17><>!\$<EFBFBD><EFBFBD>@<40>G<EFBFBD>(<28>8o<><6F>)<29>S!o<1D><>`{<EFBFBD>~<7E><>It<49><74><EFBFBD><EFBFBD><EFBFBD><><3E>8r7\nmÖ|<<3C><>?E<><1E>7\0<EFBFBD>9<EFBFBD>W<16><16>Vk<56>8<EFBFBD><38><EFBFBD><EFBFBD><01><><EFBFBD>%<25>Q<08>a<EFBFBD>s}<7D><><EFBFBD><EFBFBD><EFBFBD>7<0B><01><>61I<07><><1C><>M<EFBFBD>]<5D>/<1B>0N#o<><6F>N<EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD>a-<2D>#x<><02>n<EFBFBD><6E>N^b<>mҶ<6D>uE<75><45><EFBFBD>P<EFBFBD>kT\\<17>/<06><>Ȍ<EFBFBD><C88C>z<EFBFBD><7A><EFBFBD><EFBFBD>w<><77><EFBFBD>^Br_<72><5F>-x<>E3<45><33>N\0+)<29><><EFBFBD><EFBFBD><EFBFBD>xS{<EFBFBD>d<EFBFBD>,<2C><><EFBFBD>%쭲<><ECADB2><EFBFBD><EFBFBD>B<EFBFBD>%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ìi<0C>_<>pW<70><57>H,O<><4F><EFBFBD>zLo<1C>QQ7<51>q<EFBFBD><F<1D>Pz<1E>/i/3v<33>t<EFBFBD>p<EFBFBD>D<EFBFBD>l<EFBFBD><0E>ps<70><73><1C><>ri<72><69>k<EFBFBD><6B>W p<03><>:<03>p<EFBFBD><01><><EFBFBD><1C>f<02><17>}\r8gA<EFBFBD><17><><EFBFBD><EFBFBD>+:\0lȮt<EFBFBD><EFBFBD><EFBFBD><1C><>S]<1B>垩<03>ν\$/dt<64><74><0B>P-<2D>U<EFBFBD>،<EFBFBD>u<EFBFBD>D<><44><EFBFBD>><0B><><EFBFBD>ܶ<EFBFBD><DCB6><EFBFBD><EFBFBD>WT<57>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n'<27>p:e.<2E><>?2<><0B><>GrS?<<3C><>v<EFBFBD><76>9<EFBFBD><39><EFBFBD><EFBFBD><EFBFBD><18>{<0E>2R<32><52><0E><><07><>RӯX8%<25>!lZ<6C><5A><EFBFBD><EFBFBD>t,<2C>M<EFBFBD><4D>Sf<53>Kw<4B><77><16>8_<38>>jsl<73>\\<EFBFBD><EFBFBD>77<EFBFBD>g<EFBFBD>.<2E><><EFBFBD>݁<EFBFBD><DD81>:^e<>P<EFBFBD><50><0B>pL<70>K#@<13>`<60>\\GL<EFBFBD><EFBFBD>5١%<25><>B<EFBFBD>@<40>'zQ<7A>m<EFBFBD><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD>\$<EFBFBD><EFBFBD>3<EFBFBD><1D><><EFBFBD>!<21>\r<EFBFBD>V\n<EFBFBD><EFBFBD><0E> <09><><EFBFBD>\$<EFBFBD>YT<EFBFBD><EFBFBD><EFBFBD>02<EFBFBD><EFBFBD><0E>w<EFBFBD>% <20><13>,<2C>S<08>]<5D><0F><>s<EFBFBD><14>:u<><75>dc\r<EFBFBD><EFBFBD>3<EFBFBD>T<EFBFBD>ၻ7e(ؿv<D8BF><76>Or/<2F><>he.&0<><30><EFBFBD><EFBFBD>ns#<23><><EFBFBD><EFBFBD>Y>#)<29><04><><18>c_Rш<52><D188>q<EFBFBD><71><EFBFBD>x\n<07><><EFBFBD><EFBFBD>ZR<>jp5<70><35>r<>n<EFBFBD>Q<EFBFBD><51><EFBFBD>?<3F><>=<3D>i<EFBFBD>\0x<02>*<2A>-<2D><><1D><>{<EFBFBD>.<2E>6<EFBFBD>F?#1G|<7C><>\0.<2E>x#*<2A>nc><3E>`8k<>%`S<>S<EFBFBD>A<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD>7<11>\n<EFBFBD><0C>m<EFBFBD><6D>ڜ[<5B><>F<EFBFBD><46>;<3B>F<EFBFBD><46>\$\0T<EFBFBD>k<EFBFBD>_<EFBFBD><EFBFBD>_<EFBFBD>nv<6E>>8<><07><><1D><>2<EFBFBD><32><EFBFBD><EFBFBD>@<40>h<><68>W<EFBFBD><57>쩜,m<>b*v<>\"<EFBFBD><EFBFBD>0yv<EFBFBD><EFBFBD>p [<5B><<3C><06>#<23>/<2F>!+{<EFBFBD><EFBFBD>7<EFBFBD>v0<EFBFBD>O<EFBFBD><EFBFBD>_7귻<EFBFBD>@<40><>\r5~\\F̰<46><CCB0>N<EFBFBD>y<EFBFBD>`<60><><EFBFBD>z<EFBFBD>} <09>o/<2F><>лU<D0BB>ѻ<><D1BB><EFBFBD>8<EFBFBD>{<EFBFBD>#Zϣ<5A>u<EFBFBD><75><EFBFBD>턖<EFBFBD><ED8496><EFBFBD>xk<0F><>7'<27><>{de<EFBFBD><EFBFBD>y\\G<EFBFBD><EFBFBD><EFBFBD><0E><><04><><EFBFBD>ļ 1<01> d\$@<40>9\$M<>w6<77><36><EFBFBD>W_d<5F><64><EFBFBD>@<40><>\\=<1D>)wgsP<02><>=<3D><><EFBFBD><EFBFBD><08>=s<><73>^<5E><><EFBFBD><EFBFBD>t<EFBFBD><74>z<07>g<EFBFBD>h<>}C<06><><EFBFBD><EFBFBD><EFBFBD>njz'<27>{Y<EFBFBD>wi<EFBFBD>_<EFBFBD>}<7D><>4<EFBFBD><34>\r<06>3٫<33>\"g<EFBFBD>9<>؞<EFBFBD><D89E><EFBFBD>!r<><06>:y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD>C<EFBFBD><43>e<EFBFBD><EFBFBD>3<1B>\nwd<02><><EFBFBD><12><>`<60>pXR`<60>]L<><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>jDjUtמ<74><D79E>w<EFBFBD>><3E><>_<06><>+<2B>X=<3D><>^B<><42><EFBFBD>\r<EFBFBD>K<EFBFBD>b<EFBFBD>ߞSd<EFBFBD>4<>6I<36><11>P<EFBFBD><50>,^9<><39><EFBFBD><EFBFBD>áu,}0<><30><1F>x<EFBFBD><78><EFBFBD><11>\\<EFBFBD>D<EFBFBD>!<21><><EFBFBD><EFBFBD>:k뗅<6B><EB9785>>`1<>`:<3A><>P<11><><EFBFBD>_\\To\$F<EFBFBD>&<26>T<EFBFBD><54>i0Ⱥ<06><><EFBFBD><EFBFBD><EFBFBD>_n<17>J<><4A>/[<5B> ~<11><>{<EFBFBD><EFBFBD><EFBFBD>۷p<EFBFBD><EFBFBD><EFBFBD><01>C><3E><>n<EFBFBD><6E>\0<EFBFBD><EFBFBD>f<EFBFBD>@<1D><>y<0F><><EFBFBD><EFBFBD>[<5B>?<3F>D<EFBFBD><44><EFBFBD>G\0<EFBFBD><EFBFBD><EFBFBD>4Z\0ۍ=<3D>ށ,<2C>!<21>S<EFBFBD><53><EFBFBD>I\"<02>Ѳ<04><><EFBFBD>F]<5D><><EFBFBD>_%<25><>k߹<6B><DFB9>_\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<16>1<EFBFBD>v?<3F>t<EFBFBD>T<EFBFBD><54>\"^<5E><>8m<38><6D>e<65>^S7!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><>F <09>x<EFBFBD>f<EFBFBD>Б^#<23><>'<27><>oq<6F><71><1F><><EFBFBD><EFBFBD><EFBFBD>Ě<19><><EFBFBD>w<EFBFBD><77>Տ<EFBFBD>E<EFBFBD><45>.<2E><>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>(o<><6F><EFBFBD><EFBFBD><04><>qN؇<4E><D887><EFBFBD>yĤ<14>p[nw3:<3A>봌<EFBFBD>;L<>ہ<EFBFBD><DB81><07><0E><>\0<EFBFBD>;*<2A>P6)<16><>*Ȏ<><C88E><EFBFBD><EFBFBD><13><>U<03><>д<EFBFBD>=<04>\$<EFBFBD><EFBFBD><EFBFBD>\r<14><>V%\nRRA}<7D><><19>\"<EFBFBD>f<EFBFBD><EFBFBD>P<EFBFBD><EFBFBD>=<3D>1<EFBFBD>4<EFBFBD>=&:><3E>\$<EFBFBD>^RMp<1F><><EFBFBD>\$IL\0<EFBFBD>1<18><>𥀔<EFBFBD><F0A58094><EFBFBD>}<7D><><02>a H<>z<03><05> <09><> <09><><02>@<40>1<EFBFBD>V<EFBFBD>=&<26>L A @̔<>T<EFBFBD><54><02><\r<EFBFBD>^<5E>j<EFBFBD>x.<2E>%<1D>p.<2E>\0Q<03><><EFBFBD><EFBFBD>9\n<01>(<28>. <19>@<40><><EFBFBD>`(<28>J\0ʦ<EFBFBD>><3E><><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>!@2D<11>֒<EFBFBD>\$iE\0f<0B><07>@<40>v\n<EFBFBD>*`<60><>d<0B>W<EFBFBD>s<EFBFBD>\\<02>|<7C>><3E>H<EFBFBD><48>*<2A><>@<40><><EFBFBD>Q<EFBFBD>j<EFBFBD><6A><01>P<EFBFBD>;<3B>|<|!I<><49><EFBFBD><EFBFBD>0#@<40>=)<29>k<><6B><0B>X0W<30><57>1<EFBFBD>ݐZ@<40>U,D@<40> (P_@<40>t<EFBFBD><74>p)A<01>/<2F>c<EFBFBD><63><10>0-Am<02><0B>k<EFBFBD><6B> P2<50><32>BQ<42>5<EFBFBD>T1A<>%{<03><><EFBFBD>=\$<EFBFBD>PI=K(<28><>T<EFBFBD>V<03><15>*@sAҢ<41><D2A2><EFBFBD><02><0B>7@<40>Y<><59><EFBFBD>̕\$\0<EFBFBD><EFBFBD><EFBFBD>`.<2E>9<EFBFBD><39><06><10>A\$<EFBFBD><07>Rp{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>PV<<3C><07>(O<>#\$ po<70><6F>*dPNA<`<60> AG<06><><EFBFBD><EFBFBD>@<40>TD\$<EFBFBD>I<EFBFBD>QBLN<4C>C<EFBFBD>=\0<EFBFBD><EFBFBD><EFBFBD><0C><01><>[<1F><EFBFBD><7F><'<27>A<> <09><07>i%<25><><EFBFBD>У\$BW<42>6%S <09>\nЙ<18><>L&<26>@}<08>p<EFBFBD>A \\<0C><11><><03>`<60><>#t<0E>ǭ<EFBFBD> <09>,p&'z[<10><>C<05> `5B<35><42><EFBFBD>\$`<60>At<41>BS07A<37><41>L<10><>x <09>\$<EFBFBD> <09><> <20><>bBA <09>/<06>B<EFBFBD>U,,0\0ޖt<1C>2@<40>l\r<EFBFBD>RB<EFBFBD>i/<2F><><EFBFBD><EFBFBD><EFBFBD>L.r<><72><02>.<2E>_<EFBFBD>X(<28><>\rC\n<EFBFBD>/<05>B<EFBFBD>\n<EFBFBD><10>A<EFBFBD>!02C5<,ЇB<D087><08>.ж<x<><78><EFBFBD><EFBFBD>-<2D>t<03>]PW<50>o<0B><0F><><EFBFBD>N <09><05>ֲ<EFBFBD><D6B2>@<40><>J<EFBFBD><4A><03>F@<40>.<2E><<3C><05>\nC<EFBFBD><0E>`<17><><EFBFBD><EFBFBD>れl<E3828C><19><><EFBFBD>\\\"<EFBFBD><EFBFBD> !<0E><0E><><EFBFBD>D<01>;`3<>^<02>\n@<17><>'<27> C`<60><><11><>(<05><1B>(<28><><EFBFBD>&<12><>\$<EFBFBD><1A>\rL:<10><07><><13><>ð<EFBFBD><C3B0><EFBFBD>AjC<6A><0E><<3C><<3C>vQ<><51>0<EFBFBD><30>\0<EFBFBD><EFBFBD>C<EFBFBD><EFBFBD>XH\0002<EFBFBD>^;] ~<7E><><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0>c<10>D1<11><>(5(<14><05><><EFBFBD>49<34>FQ<11><> <17>M<11>E1<1E>@<10>;<3B>?D\$k<EFBFBD><EFBFBD><13>AD<>#DsDG<44>D<><0F>I<EFBFBD>fD<66>J<>#ıTKQ .<2E><><EFBFBD>C<EFBFBD><12>H<EFBFBD><48>ĭ<Gq\0<EFBFBD>=<3D>!<21>jC<6A><43>a<EFBFBD>q <20>5 <09><><EFBFBD>L<0E>M<EFBFBD>=<3D><><EFBFBD>ˍ@<40>O<13>;<3B><1D>\r@<40><><EFBFBD>E\"<EFBFBD>iq<EFBFBD>gO<><4F><EFBFBD><EFBFBD>49<34>T<EFBFBD><54>+<0E><>D5<0F>?0<><30><EFBFBD><0F><><10><>2<0F><>AMD<4D>F<>7đ<11>E<EFBFBD>7<EFBFBD>\\<02>F<10><>R<EFBFBD>dRQ6D<36><12>N1<15>Z<16>V<EFBFBD>r<15>A+vE\r\\M<EFBFBD>D<>LV1Y<31>kO<>c<EFBFBD>k<15>YqXE|X@<40>C<EFBFBD>2c<32>iD<69>lLQ^śY<>'<02><>QoEY,\\1fE<EFBFBD>\n<EFBFBD><10><>h<EFBFBD><68>]Qd<51>]W<>YE<59><16>F)#<14>h<EFBFBD>p<EFBFBD><70><|*d<><64>2x<><78>7<EFBFBD><37>;<3B><>G<EFBFBD>^<03><05>\"<EFBFBD>\$h%Jv\0<EFBFBD>X<05><16>/<0F>+<2B><0E>w3G<33><0E>b<14>3<EFBFBD><1D>q<18>Fq<46><71>5D9<44>Y<EFBFBD><59>\0<08>.@<40><03><0F>69\nt+S<>E<0B>*<2A><><EFBFBD>4\0D<EFBFBD><EFBFBD><1F><>qS<71><53><04><11>x<>8<0C><><1F>\r|g@<40>!_<01><10>1<02><17><><EFBFBD><EFBFBD>\$4<EFBFBD><EFBFBD>w<EFBFBD>~<7E><><13>1<EFBFBD><31>n<>r<EFBFBD>\0*\0<EFBFBD>#E<><45><EFBFBD>0?<3F> <09>'\0d<EFBFBD> <09><>(Hx<08>F<><1B>\$<EFBFBD><EFBFBD>\0<EFBFBD>H<>`(<28><><01><0E><><EFBFBD><EFBFBD>x<>GD<47>tH<74>!<21>\nɁ <20><><EFBFBD><14>FJJ|<03>6<EFBFBD>>?)PBQF<03><>q<EFBFBD>\$`<60>\0>/j<0E>T<EFBFBD>\r<EFBFBD><EFBFBD>Z\\s<EFBFBD>: (+ <20>En<03><0F>!Fq<>^<5E><>֬s1n2<6E><32>dD1<44><31>x\0a/<2F>~F<11><>|<7C>xH<78>>4Z<03>\\<EFBFBD>6<EFBFBD>П<EFBFBD>_<EFBFBD><EFBFBD>5z8<><38>y<EFBFBD>P?<3F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4 7<><37>\0<EFBFBD><EFBFBD>\$y<EFBFBD>0<EFBFBD>Z<EFBFBD>>\0<EFBFBD><1D>|<7C><>Gΐ<47>s,<2C><><EFBFBD><16><><EFBFBD>^DS|s )<29><><EFBFBD>X<11>5<04><>q1<71>(LG#<23>[<1F><><EFBFBD>'HL<>i[<03><1C>H&H ܁<>1 S[&y<05><03>K #G<>f<EFBFBD>K!<10>[i\0#5<>i<>+<2B>\$N(<28><><EFBFBD>-Jf<4A><66><EFBFBD><EFBFBD>&9.E<><45>\$<EFBFBD>T<EFBFBD><EFBFBD><EFBFBD>B3!p<><70><06>\$<EFBFBD>0<EFBFBD><EFBFBD><06><0F>r<EFBFBD><72><06>:<3A><>e<EFBFBD>,<16><><EFBFBD>[<5B>0<EFBFBD><30><EFBFBD>1Ϻ|<12>E!<21><><EFBFBD>\$,<2C><>,<2C>K<1F><>@; <20><>0<EFBFBD>l\\<EFBFBD>~\0<EFBFBD><EFBFBD>L1Q<EFBFBD><EFBFBD>و\0%x@3<><33><1C><> 2G`L[<5B>ܯB<DCAF><42>b<EFBFBD><62><EFBFBD><EFBFBD>2d<32>L\0<EFBFBD><EFBFBD>I<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><18><><EFBFBD>n+r<02><><EFBFBD>;<3B>\n:<3A><0C>7H<37>\ri<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\$lO<EFBFBD><EFBFBD>I4Xd<58>\r)D1<44>r<EFBFBD>5)<29><1F>Q<EFBFBD>W<EFBFBD>J<EFBFBD><4A>#<23><>H0Հ<<3C><><EFBFBD><EFBFBD>%hrE<72><45><EFBFBD><EFBFBD><0C>QH<51>\$<EFBFBD>s# <09>ؙi<>W<EFBFBD>f<03>gHa8!q̾<71><02>D<EFBFBD><44> ^H<>T<EFBFBD>ق9%̏<04>\0<EFBFBD><03><0E><>H<EFBFBD>!Ѝ*JGi<1C>\"<EFBFBD>ߌ,M<><4D>\$<EFBFBD><EFBFBD><13><08><0E>M Y\"<EFBFBD>II<EFBFBD><EFBFBD>X;ɟ)(<28><>@<40>s<EFBFBD><10><>P<EFBFBD><50>\0<EFBFBD><EFBFBD><0C><><EFBFBD>/a'PO<50><4F><EFBFBD><EFBFBD><EFBFBD>\0!`2<><32><16>Ʊ<EFBFBD><C6B1>,<2C>O<><4F>r<1B><>ˀ<EFBFBD>-Ĝ<>::L<><4C><EFBFBD>D~-<2D>C<EFBFBD>_<EFBFBD>F<19><>R]HF <09>x9T<03><>r<EFBFBD><72><EFBFBD><EFBFBD>Hb*p<>[(<28><>2<EFBFBD><32>B\r<EFBFBD>T<EFBFBD><EFBFBD>;-(<28>GҎ,:<3A>|<7C><><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>f<EFBFBD><EFBFBD><EFBFBD>jD<f<><66>p<16><>@)(Ó<08>i2<69>(<28><>O<EFBFBD><03><>[<5B><><EFBFBD><EFBFBD><EFBFBD>L<EFBFBD><4C><EFBFBD><EFBFBD><0C><><EFBFBD>2<EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'<27>H<EFBFBD>1P<0E><><EFBFBD>g ĕ<><C495><EFBFBD>P\nԕ\0<EFBFBD>ʵ%k]<03>\0<EFBFBD>(<28>b <20>H<EFBFBD>(<28><>aHH# I@)<29>ҙ\0<EFBFBD><EFBFBD>)<29><>+C<11>J<EFBFBD>\rl<EFBFBD>oN\0<EFBFBD>̩<1E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09>n<EFBFBD><6E>g,0n<30><6E><04>+<2B>H\"<EFBFBD>I<EFBFBD>7\$<EFBFBD><EFBFBD><EFBFBD>It<EFBFBD><EFBFBD>\r <<02>a0H@<40><><EFBFBD>+<2B><><05>)<29>d<>!a<><61>T<>r<EFBFBD><72>D<EFBFBD><44><EFBFBD>rՀ<72>,p\rD<><44>`MGX<47><58><EFBFBD>N=5 ZƯ<5A>><<10>P/<2F><>^g`<0F><><04>*+u<>i%m%Ӧ<>e<EFBFBD><65>'L <20><>ԚҞ\nK.<2E>Q<EFBFBD><14><>),<2C><>˫.<2E>!<21>]K<>.ԧ<>gK<67>\"4<EFBFBD>\"݈<EFBFBD>(<28><><EFBFBD>\$y-ø )<29><>W<EFBFBD>r<><72>{/<2F>M<EFBFBD><4D>K<EFBFBD>/<2F><><EFBFBD><EFBFBD>c/£R<C2A3>,E <20>Q<EFBFBD>A\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>HQ<48>BL\"Ҥ<EFBFBD><0E>2<EFBFBD>/\$<EFBFBD>%/<2F><>3<08>/0<><30>2<L,<2C><0C>s\r@ -<2D><><EFBFBD>y<EFBFBD>`;<3B><>2<EFBFBD>\$N|<7C><>Y<16>.<2E>Æo<06>0Ĝ<30><19>c%<25><><EFBFBD>k˹+<2B><>@<40>f<16>ܲ<EFBFBD><DCB2>^<5E>s/<2F><>O<EFBFBD>̄Bi%M<>\0<EFBFBD>2<14>\"W<EFBFBD><EFBFBD><EFBFBD>+A<>!\$<EFBFBD><EFBFBD>)<29><>%<25><>L<EFBFBD><4C>2<>9/<06>0<EFBFBD>ˠ<EFBFBD><06>t,<2C>33?'<27>̪y̸C<>f<0B>F<EFBFBD><46><EFBFBD>ħ<0C>\0<EFBFBD><EFBFBD>T <20><><14><>6<>pȋ3<C88B><33>2<EFBFBD><32><02><><EFBFBD><EFBFBD>'<27><><1B><><EFBFBD><EFBFBD>Q#<23><><EFBFBD><EFBFBD>H\n<EFBFBD><EFBFBD>UL<EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>۷\\X <09>j<EFBFBD><6A><16>C<EFBFBD><43>M\$<EFBFBD><EFBFBD>w<EFBFBD>T\0<EFBFBD>)4<>U\nL<EFBFBD>k<EFBFBD>O{<EFBFBD><EFBFBD>\"D<EFBFBD>!<0B><>\n<EFBFBD><EFBFBD>\0ۂ<EFBFBD><EFBFBD>h>!?<3F>G5[%<25><03>t<>_(<28>kQL<51>><0C>ȫI<C8AB><04><><EFBFBD><EFBFBD><EFBFBD>ə\$,f<><18>i<1E><><EFBFBD><EFBFBD>Ǹ<EFBFBD>dڲǹ#<23><>sl<73><6C><1E>\n<EFBFBD>\0I<EFBFBD>JK<EFBFBD><EFBFBD>\r<EFBFBD>m%09ͳ<><CDB3>*<2A>!<21>E9ĭr<C4AD><05><14>*i<0E><><EFBFBD>̎2S<32>w\$|<7C>\0<EFBFBD>J<EFBFBD><19>a<EFBFBD><61><EFBFBD>j<EFBFBD>[+<2B><><EFBFBD>)ρd<CF81>K<04>T<EFBFBD>#F8(<28>a<>d<0E><><EFBFBD>/I.,<2C>MtH<74>1<EFBFBD>P!H)<29><><EFBFBD><EFBFBD>R<EFBFBD>N<c<><63>oJ<6F><4A>Ԩ<EFBFBD><D4A8><03>8<14>j~ɡ,{<EFBFBD><13>Z<>@\n<EFBFBD><EFBFBD>?<3F>8q<38><71><02>i9Ď<39><0E>J<EFBFBD>\$<EFBFBD>I<EFBFBD><EFBFBD>8S<EFBFBD>\0)GC9<43>b<EFBFBD><62>\0<EFBFBD><1A>鲦<EFBFBD>Y%iv<69>\r<EFBFBD><EFBFBD>)0<><30><EFBFBD>0& T<><54><EFBFBD><11><>L<EFBFBD>G<EFBFBD>|<7C><>\0<EFBFBD>-q2<71><32><EFBFBD>+d<>o<EFBFBD><05><1D>8<EFBFBD><38>KL-D<><11>D<EFBFBD>%<<3C><>t^s<>\nk;ĭ&o\"^8<0C>:̊<><CC8A>P\"<EFBFBD> <09>;s[3<>N<EFBFBD>5<EFBFBD><0C>,9<>5<EFBFBD><0C>,<2C><19>c<EFBFBD><13>r_<72>̀<EFBFBD>Y<><59><18>c-<<3C>1<EFBFBD>\0<11><><02>Fd<><64><10>e-,<2C><13><>⨨Z<E2A8A8><5A><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><03>eH-<2D>̇<EFBFBD>=<3D><><EFBFBD><EFBFBD><EFBFBD>_-<2D><><EFBFBD>̉_-r#<23><M<>-B<><42><EFBFBD>͉>@\r<EFBFBD><EFBFBD>Τd<64><D881><EFBFBD>:<3A>5<EFBFBD>̚<EFBFBD>.<2E>@9ϭ<18>\r<EFBFBD><EFBFBD>E,`(81<38><31><EFBFBD><14><>^ˊ P2\"<EFBFBD><EFBFBD>+q-N<>&<26>D<EFBFBD><44><1B>&<26>!<21>9\n<EFBFBD>+4<><34><EFBFBD>HT\r|<7C><><EFBFBD><EFBFBD><EFBFBD>4I<34><49>#<23>Y<1C>Z<EFBFBD>;<3B>w.Ě<><C49A>M<EFBFBD><10>b<><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0F>K<EFBFBD><4B><EFBFBD>s<EFBFBD><73>;@<40>(.<2E>J<EFBFBD><4A><EFBFBD>a\n\0<EFBFBD>ILsb<19>\$<EFBFBD>Ɇ<0B>N\n<EFBFBD><EFBFBD><EFBFBD>so _3<5F><02>8<EFBFBD>5-t<><12><>/-pC<70><43><EFBFBD>;A<><41><EFBFBD><0E><>)<29><><EFBFBD><17><>?<3F>S<><53><EFBFBD>+<2B>\$1<EFBFBD>4<EFBFBD>賑<EFBFBD>D<EFBFBD>\r]\0002\\\0<EFBFBD><13><><EFBFBD><EFBFBD>L<EFBFBD>)<0C>\$<EFBFBD>2\\<EFBFBD><EFBFBD>2M<EFBFBD>2<12><><EFBFBD><03>(<28><>@<40><>G2<14><>ăw>d<>M1P<31>8ms!W(<28>kQQEH<03>T<EFBFBD>\0<EFBFBD>\ny<1B>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>p<>a'<27><>G<16>B<EFBFBD><42>'<27><><EFBFBD>s<0C><><EFBFBD>HHT|u-<2D>L<EFBFBD>C<EFBFBD>B<EFBFBD><42>K<EFBFBD>\$DvŸ<><C5B8>3<>˰A=<3D>W<EFBFBD>.l;!,<2C><>B<EFBFBD><42>P<02>/<2F><13><><EFBFBD>b<EFBFBD><62>j<EFBFBD>L/?<3F><><13><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0B><>5T[Qp<51>d<EFBFBD>[<5B><>D<EFBFBD><44>MQt?<3F><13>^<5E><>E<02><>QQ[D<>?T_QL)-<19>:Q<>EU<18>!<21>CF\\<EFBFBD><EFBFBD>nJ<1B>L<><4C>̕<18><>ѐ<08>ilQ<6C><08>l<><6C><0E><>\r<EFBFBD>G\$<EFBFBD>r<><06>E<EFBFBD>Ty<54><79>F<EFBFBD>T{Q<EFBFBD><EFBFBD>4gQCG(9xQ<78>F=<12><><EFBFBD>G\\<EFBFBD><EFBFBD>}Q<>H<0C>`7<>mĬ<03><><EFBFBD>-!<21><><EFBFBD>\$<16><0C><><EFBFBD> 8%T<>R,R\$lԍ<EFBFBD>mC<EFBFBD><05><>Xd<><64><16>F%\$<EFBFBD><EFBFBD>T<>̂<EFBFBD><CC82>ɋ <20>g2V<32>T<02>!d<><64>4<EFBFBD>(kT=<3D><>+<2B>4<EFBFBD><34>Z<EFBFBD><5A> %<25><>~<7E><>ɔ<EFBFBD><16>T<><54><EFBFBD><EFBFBD><EFBFBD>+<0E>R<>;<3B>80\r<EFBFBD><EFBFBD><1C><><EFBFBD><EFBFBD>L^<0C><><EFBFBD>QZXQ<58>6<EFBFBD><36>8}<7D><>I<EFBFBD>9\"dewK8;t<><14>F]-<2D>JO<4A><4F><EFBFBD>Ja<4A>Z\$`~<7E><15>V<EFBFBD><56>\n<EFBFBD><EFBFBD><EFBFBD>-<2D>0<03><>AK<02>a<>p<EFBFBD>%X<14>\0<EFBFBD>&<26><>)<29><>8<>Z<EFBFBD>;<3B><>0<04>A?I<><49><EFBFBD>#\0<EFBFBD>G<EFBFBD><EFBFBD>M3<EFBFBD> <20>F<><46><EFBFBD>H<EFBFBD><48>\r<EFBFBD><EFBFBD><EFBFBD>M<>'HQH<51><0C>\rx<EFBFBD>V<EFBFBD>^<0C>3<EFBFBD>M<EFBFBD>M̃D<>o0\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<08>yR<C293>;<3B><>0I?!(DRͰ<52>( <09><03>G<EFBFBD>O<04><><EFBFBD>3\0\r+<2B><>`RL<52>`<60><>QI<><49><EFBFBD><04><>T<EFBFBD>r<EFBFBD>Q\0#<23>k@ <0E>O(<28>a<0B>C<EFBFBD>` mj<><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><1E>\0>\0F%<25><>)]H<><48>\rƶ<EFBFBD><EFBFBD><05>] <20>B<EFBFBD>\r<EFBFBD>3<EFBFBD><EFBFBD>f4<66>&\rR<EFBFBD>Tj<54>\"R<EFBFBD>]/d<><0F>?<3F>\n`Ïğx\n@ <20>r?C@(<02>\n<EFBFBD><EFBFBD>T4\n@<08>&\0<EFBFBD>@@ <09>r<EFBFBD><72><EFBFBD>\nx<EFBFBD><EFBFBD><05>\nd?\n<EFBFBD>\0<EFBFBD>P<EFBFBD>zUO<>\0\\<EFBFBD> <13><>(\n<EFBFBD><EFBFBD>'<27>`<08>DHd<48><1A>b<EFBFBD>aRD)a<>p1Z<10>F<><46>'\0<17>\rO<EFBFBD><05><><EFBFBD><EFBFBD><1E>[<5B>KR<4B>PE@P<>TU@<40>TT}Ag!<21><><14>@ C<><08><0E>_<EFBFBD>v<0C><>s<EFBFBD><73><EFBFBD><EFBFBD>ji<6A>F<>?X<><58>\"<EFBFBD><EFBFBD>?*<2A>0<EFBFBD><30>&<0B>g!<21>%Pm><3E><><EFBFBD><EFBFBD>O<EFBFBD>?<3F>.<2E><>=,,<2C><>T<EFBFBD>e <09>b<EFBFBD>\0^<01>(9<>qO<71>}uJ<17><0F>ʪKԟSJJP/Ԩ <09>J<EFBFBD>ET<45>TeK<65><4B>T<EFBFBD>7<>l\0Y<08>'<27>MT<4D>P<><50>U)\n<EFBFBD>Z<EFBFBD>MԖB<08>\0<EFBFBD><EFBFBD>x <09>Wл<57>AWkÕeP<65>]<5D><08>U0<55>-*<03><><EFBFBD><EFBFBD>W<13><05>6ը3\\;<3B><>F=VY<56><59>N<EFBFBD><4E>4=<3D>h<EFBFBD><68>V<EFBFBD>Z<EFBFBD><5A>%V<>[`6U<36>,A!M3<4D>)0<05><12><><EFBFBD><EFBFBD>^`9F(<28><><EFBFBD><EFBFBD>|<11>W<EFBFBD>x<EFBFBD>YU<59>W<EFBFBD>i<EFBFBD><<3C><>Wڜ5<DA9C><35>NH<4E>^<5E><1D><><14>a<EFBFBD><61><EFBFBD>Xa<58>H\0<EFBFBD>?ebc<0E>Z<EFBFBD><5A><15><>XC<58><43><EFBFBD><EFBFBD>X<><58><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD>dU<64>V+\rdT-gX<67>y<EFBFBD><79>V\\<03>dIVD<56>i<>z<EFBFBD>YXSH<53><48>V<14>dA<64><19>W<EFBFBD>hg<><67><0F>b<EFBFBD>ڀ<EFBFBD>7<EFBFBD>9<15>+\0<05><1C>EZx<0E><><06><>}jc@V<>X<EFBFBD>iխ\0[X<>P<14><03>Z<EFBFBD>j<13><><EFBFBD>Z<EFBFBD><5A>5<EFBFBD><35>Z<0E>:3<Vem<65><18><>X<><58><EFBFBD><03>[<5B>O<EFBFBD>4V<34>h<U<>L[<5B>h<EFBFBD>M<18>\0O<EFBFBD><EFBFBD><EFBFBD>&<26>Hmu<6D>,j/cr<63>+(\ru<EFBFBD><EFBFBD><EFBFBD>\\\raf6V<EFBFBD>Z<EFBFBD><EFBFBD><EFBFBD><EFBFBD>V<14><01>@7\0[X<>,4<><34>\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><>U<EFBFBD>SZՃL<D583><4C>V`\roU<EFBFBD>H<EFBFBD><16><><EFBFBD><EFBFBD>\nM<r`<60><>G<10><>@/<2F>\r]<5D>K <20>WlP<6C>%C75<37>E&-<2D>\r<EFBFBD><<3C>`+s[<5B><>j<><6A><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD>\0<EFBFBD>^<5E>k<15><14><>r<><72>Z]%^<5E><W<>^<5E>{<EFBFBD><EFBFBD>.<2E>5f<35>1W<31><57><EFBFBD>:<14>W<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD>&9^<5E>wq:W<>^R<>u<EFBFBD>ׁ]<5D>75<37>Wy_<79>P<EFBFBD>Y`Z<><5A>5`0[U<><55>o_<6F>Vi<56><69><EFBFBD>l<><6C><EFBFBD><EFBFBD>q`=V<04>~<7E><><EFBFBD>@<40>?+_<>*6X2<03><>Bߌ<42>C=G<><47>@,<2C><>V<07>5^X<><58><EFBFBD>X`Ņ<>E\rBx!<21>2<EFBFBD>Y<18><><EFBFBD><15>/^=y6<1B>_<14>64<>`my6Dh<>gi<67><69>z)5<>C\n<EFBFBD><1F>J<EFBFBD><4A><EFBFBD>[b<1D>v\"ؤ<03><><EFBFBD>֝_<D69D><5F>v.ح\\<EFBFBD>[C<>\n<EFBFBD>N!%5<><35>0e}AM <09>(<28>g<EFBFBD><67><EFBFBD>b2d<32> &9a(\"QF<EFBFBD><EFBFBD>c<EFBFBD><EFBFBD>6\$X<EFBFBD>0e<30><65><EFBFBD><EFBFBD>\n<EFBFBD>j<EFBFBD><EFBFBD>V<08><>VAI<41> s<>CVE`<60>><3E>|k<><6B>G<EFBFBD><47><EFBFBD>5<EFBFBD>tr<03>d<EFBFBD><64>VL<02>Z<EFBFBD><5A>vNY\"E<>r<EFBFBD><05>e<15><>3<EFBFBD><33>\r<EFBFBD> #<01><>XU<58>T<>Z]<5D>e\$<EFBFBD>^\rs<EFBFBD>W<>}y?<3F>a`❖V<>a<EFBFBD><61>̨<EFBFBD>Jr<4A><72><EFBFBD><EFBFBD>X<EFBFBD>^]<5D><15>ׅf%<25><>e<EFBFBD>wcxCRSX+f<>wVi5bU<62>@2Xx<08><>6;Y<>]<5D>hvpي,<2C><><EFBFBD>T<EFBFBD><54>f<EFBFBD><66>ɝ<EFBFBD><C99D>]<5D>vl<76><6C><14>Gj~<7E> g<>\r<EFBFBD>^<5E><>^]<5D>!jX<6A>f}~<7E>qY<71>2\$\0<EFBFBD><07> <20><>uٱg͛K<CD9B><4B><EFBFBD>m}<7D>|Y<>hyv\0<EFBFBD>(}<7D>\0007I<EFBFBD><1B>+<2B>o<EFBFBD>,<05>\0<EFBFBD><0E><10>0fU<66><55>6<EFBFBD><36><18><><EFBFBD><EFBFBD><EFBFBD>, U<>6<EFBFBD><36>[h<>=Aj<41>@<40><0E><><EFBFBD>=c<>q<EFBFBD>s<EFBFBD><73>c<EFBFBD><63>쮅5h<35><68><EFBFBD><EFBFBD>\n5d<EFBFBD><EFBFBD>`<60>X<EFBFBD>5<EFBFBD>B<EFBFBD><42><EFBFBD>s5<73><35>`<60><>kaTVQx<51>i<>P֗<50><D697><1B>a<EFBFBD>Bڣh<DAA3><68>օ\$6m|<7C><>Y&<26><><EFBFBD>}<7D><>j<EFBFBD>?J~ֿ73Q<33><51>Zh<><68><15><><EFBFBD><EFBFBD>X<0E>5<EFBFBD>eh\r<EFBFBD><EFBFBD>><3E>7-ymWа<57>z<EFBFBD>Ѵ<EFBFBD>]0i<14>YOge<67><14>W\0I<EFBFBD>DU<EFBFBD>4EZ<10><><EFBFBD>c(<28>uk\0<EFBFBD>VųwD9W<39><57>.<2E>k<><6B><EFBFBD>>\r<EFBFBD>.\0<EFBFBD><0E><><EFBFBD><EFBFBD>֢<EFBFBD><1B><>}`<dG<64>Z<EFBFBD>l<EFBFBD>u<EFBFBD><06><>,m]<5D><>Z Wm<57><6D><EFBFBD><EFBFBD><EFBFBD>6E<36>Ad<41>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>.<2E><><10><>Zmŵ<6D><C5B5>,Am<41><6D><EFBFBD><EFBFBD>[<5B>#<23><><EFBFBD><EFBFBD> 1d=<3D>V<EFBFBD>sn<73>t6=<3D><>!<21><><EFBFBD>3[<5B>n<EFBFBD><6E>SV<>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD>Ume<6D><65><EFBFBD>N<EFBFBD>^<13>ֈ<05>ku<6B>v<EFBFBD>Z<EFBFBD>n<EFBFBD><6E>6<EFBFBD>ۍo<DB8D><6F>`<60>םó<6F><CD81><EFBFBD>a-<2D><><EFBFBD><EFBFBD>r<EFBFBD><05>L[couZ<75><5A>[o<><6F>v<EFBFBD><76><EFBFBD><EFBFBD>\r<EFBFBD>@<40>[x>q6<71> <09><>\n<EFBFBD>( МUgw<04>+pe<70><65><EFBFBD>Yymݿ<6D> <09><>n<EFBFBD><6E><EFBFBD>\\U]<5D><><EFBFBD>\\\\<EFBFBD>u<EFBFBD><EFBFBD><1F>t<EFBFBD>%<25>c5<63>}fd<66>Uz9-p<>\r<EFBFBD><1E>?g}<7D>J<EFBFBD>֏B\r<EFBFBD>N`܉r5<72><35>%<25><>b<EFBFBD><62><EFBFBD><EFBFBD>V<EFBFBD>om<6F><6D><08>3v<33>)<29><>սd%<25><>r͵w<03>*axZ<78><5A><EFBFBD>qV7)U<>r<EFBFBD><72><EFBFBD><EFBFBD>\\<EFBFBD>e<EFBFBD>Ƣƴ^vj/a><3E>Gsu_W8\\<EFBFBD>[h><3E>\\<EFBFBD>q<EFBFBD><EFBFBD>f<EFBFBD>[mb=<3D>w<02>'<27>X<11>[!W<14>1FV<><56><EFBFBD><EFBFBD>[9Wm]<5D><>5r<35><72><EFBFBD>`<60><>r<EFBFBD><72>w<0C>mc<6D><63>/<2F><>u=ϕ<>s<><73>:]Gr<47>e4<65><34>YVi<56>BA<42><41><1B>o҇<6F>7Z2A<><41>sK<73>><3E><><EFBFBD><EFBFBD>><3E><><EFBFBD>)\n<EFBFBD>i<EFBFBD>#&{Q<01>`<60>@<40>%<25>)<29>r<EFBFBD><72><02>N<EFBFBD> <20><>><3E><>c<>V<EFBFBD>\"q\n<02>]vڅn<><6E>\ne<EFBFBD>@\$<EFBFBD>ޛ<EFBFBD><EFBFBD>hB<02><02>\0集<EFBFBD>v%<25> <20><05>><3E>鸧<>@ <09><>]<5D>=3\0*<2A>R-<2D>J<02>T?<3F>\n@#<23><>><3E> <09>(]<5D><15><>r]<5D>vE<76>e<><65>w<EFBFBD>0<EFBFBD>h<02>xx`)<29><>Qh<51>)<29>G<EFBFBD><02>+<2B>1vM<76>J<EFBFBD><4A><EFBFBD><02> <09>ƀ<EFBFBD>;\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F>0<EFBFBD><30><0F><02>@\"ݴ<EFBFBD><EFBFBD><0B>+<2B>*><3E><0B><>\0<EFBFBD>g<>(>-E@!<21><>v<EFBFBD><76>wv<77><76>(<28>u@^mx<6D><78><EFBFBD><02>'vm<76><6D><EFBFBD>]<5D>v<EFBFBD> <09><>^<5E>?\"qWm^<5E>v`,7<>ސX<08>&rJp<4A><70>^<5E>z<EFBFBD><7A><17>ޥx<DEA5><78><EFBFBD><EFBFBD><02><><EFBFBD> <09>!<21><><EFBFBD>3{W<EFBFBD>ޝv<EFBFBD>ۗeݾ<EFBFBD>-<2D>W<EFBFBD>\0t-<2D><>\$<EFBFBD><EFBFBD><EFBFBD><05><><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>\n <20><><02>DI<44>^<5E>wPi<><69><EFBFBD><02><>W<EFBFBD><0F>v<EFBFBD><76>\0(&<26>\n@,<2C><>x]<5D>^<5E>|<1D><17><><EFBFBD>wؕ7<D895>\0W<0F><>׃^W}5<>w<EFBFBD>&<26>(<28><><EFBFBD><EFBFBD><EFBFBD>|<15>`&]<5D>y<EFBFBD><79><17>]<5D><01><>ׯ<EFBFBD>?<05><>A<0F>xU<78>C<EFBFBD>{u<EFBFBD>w<EFBFBD>^/}E<>7<EFBFBD><37>x<><78>w<EFBFBD><77><EFBFBD>\nE<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{yE<EFBFBD>W<EFBFBD><02>yu<79>\0<0F>?]<5D><>']<5D>{<EFBFBD><EFBFBD>7e<EFBFBD><EFBFBD>|<7C>j<EFBFBD><6A>_<EFBFBD><02><><EFBFBD><EFBFBD><EFBFBD>?}\r<EFBFBD>w<EFBFBD><EFBFBD>S<><08><>֞<>W<7F><57>n}<7D>7<EFBFBD><37><EFBFBD>y<EFBFBD>\0<EFBFBD><EFBFBD>_<EFBFBD><1B><><EFBFBD><EFBFBD><EFBFBD>&-<2D><><EFBFBD><EFBFBD>Q}<7D>k7c^1y<31><79>I<EFBFBD><49>y<>W<>`{<EFBFBD><01><><EFBFBD><19><>t<EFBFBD>mTSQX<51><58>o<EFBFBD><02>F*<2A>_)Q<>g<EFBFBD>^<5E>p\\<EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD><EFBFBD>G8<02><><EFBFBD>ڀ&<06>?<3F><><EFBFBD>m_<15><><EFBFBD><EFBFBD>ꀘ<02> <09><>`~?<3F>\n<EFBFBD>m'<27>|<7C><>ױ<EFBFBD><D7B1>=<3D>bU<0B>H7<48><37>1<31><7F>.'<03><><EFBFBD>U`<60><>\r<EFBFBD>!<21><>{<EFBFBD><EFBFBD><EFBFBD>'<10><>x&<26>1<EFBFBD>=E<>Ta<54><61><EFBFBD>i<EFBFBD><69>̫<EFBFBD>\r<EFBFBD>!\0<EFBFBD>|]<5D>8<11><>FTU<54><55><EFBFBD><EFBFBD>`<60>|<7C>o<EFBFBD><6F>ޕ<EFBFBD><DE95><EFBFBD><17><>y\0<EFBFBD>T<>?<3F><><EFBFBD><EFBFBD>G]v<>ס]<5D><><EFBFBD>\\<EFBFBD>&<26><>>뀥v<EB80A5><76>8F<38>!<21>]DW<44>GcP<63> i<><69>O<EFBFBD><18>U<0F><><EFBFBD><EFBFBD><EFBFBD>D^<5E>|]Cj<43>^(<28><><EFBFBD>ݙ}z<><7A><EFBFBD><EFBFBD>p^<15><><EFBFBD>7<EFBFBD>\nx\$a<EFBFBD>?<3F><>c<EFBFBD><63>D<01>i\$<03>?<3F><12><><EFBFBD><EFBFBD>&<19>\"މ<1B>xm<02><><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>E<EFBFBD> <20>W<EFBFBD>a<EFBFBD>}~a<><61>5<EFBFBD><35><EFBFBD><EFBFBD>Р<EFBFBD><D0A0><EFBFBD>?<3F><>HC<>C<EFBFBD>?@<40>@(a<><61><EFBFBD>Xja<6A><61><EFBFBD><03>ޯv<DEAF> 8}<02>{*<2A>8<1C>\n.\r<17><>)<29><>8m<38><6D><EFBFBD><EFBFBD><13><><EFBFBD><EFBFBD><EFBFBD>c<>b<17>f<><66>aՈ<61><D588><EFBFBD>ʀ<EFBFBD>}<7D>\$\n<EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD>r\0\0<EFBFBD>2jɬ&z<03><08>#<23><><EFBFBD>=C<><43><EFBFBD>ܭ@<08><><EFBFBD><EFBFBD>?<3F> <09><>*<2A><><05><>;_<17>f<08>*+Z<>n\0\$<EFBFBD>qQP5\"ݐ@0\\<EFBFBD><EFBFBD><EFBFBD>x@Mر<4D><D8B1><EFBFBD>.8<>b<EFBFBD>|<7C><16><><05>{<04>av\n<EFBFBD><17>b<EFBFBD>%/<2F><><EFBFBD><EFBFBD>a<EFBFBD>~<7E>8i<38><69><EFBFBD><EFBFBD><1A>><3E>/<2F>>8<>bՇn#Wܦ<57><DCA6>P<EFBFBD><50><EFBFBD>⧅<EFBFBD><E2A785>8<EFBFBD><38>=|zkjT<6A><54>*m<><14><><EFBFBD> <20><>e<EFBFBD><65><1A>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD>u<11>J<EFBFBD><08>x&]<5D>E<EFBFBD><45><EFBFBD>)K<><4B><EFBFBD>\\<EFBFBD>_A~<7E>w<>c?<3F><>*<2A><0E><><EFBFBD><1D>8ӏ<38>(<28>w<EFBFBD>Tq<54><71><EFBFBD><18><02><>6<19>3<EFBFBD>~6<><36>_`<16><><EFBFBD>]<5D><>xq`<60><><EFBFBD>-<2D>I<EFBFBD><49>&6<><36><EFBFBD>و<EFBFBD><1A><>c<EFBFBD>zu帕cw<63>&-<2D><><EFBFBD>݆<EFBFBD><12><>ݤ<EFBFBD><DDA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?V3<56><33><EFBFBD>*<2A>@\n<EFBFBD><EFBFBD>bɊ<EFBFBD>6<EFBFBD>v\0<EFBFBD><EFBFBD><EFBFBD><<3C><><0F>S<EFBFBD>x<>\0V<EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD>c<EFBFBD><EFBFBD><EFBFBD> )<29><>ox6><3E>j<EFBFBD>\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c<EFBFBD><EFBFBD>h\nx<EFBFBD><EFBFBD><EFBFBD>?<3F>z9\0<EFBFBD><15>.<0E><>`#<23><>=<3D> bE}<7D>><3E>+<2B>@rx<72><78><EFBFBD><EFBFBD>w0<77><30>e<EFBFBD><65><EFBFBD>0<><30>a<EFBFBD><61>& <><14><>C<EFBFBD><43>]ي<1D>x<EFBFBD><78>_|,|\n<EFBFBD>bL<1A>EU>&o<>2<EFBFBD><32>b<EFBFBD>֝N)X \0<EFBFBD>4|<7C>&<15>kW<6B><57><01>bzX<0F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\nf<07>vdIw^&<26><1B><><1E><>ĝ<><C49D><03><>na\0!<21><><EFBFBD><EFBFBD>D<EFBFBD><44>&<26><><15>y2<79><32>wX <09><><EFBFBD>ҠE<D2A0>D<EFBFBD><44><EFBFBD><EFBFBD>u<EFBFBD><75>7<EFBFBD>у<EFBFBD>+<2B>\n<EFBFBD>.x<><78><EFBFBD><EFBFBD>-C<><43><EFBFBD><1C>P0<50>]<5D><>:<3A><>s<EFBFBD>-|\"<EFBFBD><EFBFBD>!`tX@'<27>n?.R`&<26><>?<3F>g<EFBFBD>r<EFBFBD>ߏ}C<><43>cK<63><4B>\n<EFBFBD> <20><>^SM뀯w<EB80AF>\\<EFBFBD>Ï<EFBFBD><EFBFBD>\"k<EFBFBD>`<60>y<EFBFBD>8 /<2F><>? <20>7<EFBFBD><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><0C><01><>I<EFBFBD>a<><02>\n<EFBFBD>\"<EFBFBD><EFBFBD>` <09>*cB<63><42>X<EFBFBD>c<EFBFBD>^<5E><>Y@<40>&{wx <09><>Ǿ?<3F><><EFBFBD>>_<>·<><C2B7>e<EFBFBD>v<EFBFBD>[<5B><06><><EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>dƚ><07><18>S<EFBFBD><53>4<EFBFBD>\$<EFBFBD><1B><>]<5D><>e<EFBFBD><65><EFBFBD>^!<21>e<EFBFBD>X<><58><EFBFBD>&<26>S<EFBFBD>_@(d<><64>F]<5D><>堭:<3A>*<2A><>}<7D>z<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD>kX<6B>_<EFBFBD>za2<61><32>\0<EFBFBD><02>rC<72>f#v<><76><EFBFBD>ᙘ<><E19998>9<EFBFBD><39>1we<77>1<EFBFBD><31>o<EFBFBD>n<><6E><EFBFBD>5<EFBFBD><35>d4_f(<28>^eY<65>F<EFBFBD>c<><63><EFBFBD>A<EFBFBD><41>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X5`Ҟ.<18><>U<EFBFBD>n`<60><><EFBFBD>j<EFBFBD><<3C>D<04><><EFBFBD>%N<>⧥<EFBFBD>6<1E>#]<5D><1D>Y \$Gb<EFBFBD>m<EFBFBD><EFBFBD><EFBFBD>b<EFBFBD><EFBFBD>b}<7D>f<><66><EFBFBD>C<EFBFBD><43>ᅓ0<E18593>UT<><54>x#`<60><>kz<6B>ԧ<EFBFBD><D4A7><EFBFBD>m)<29><>;<3B>^m*<2A>_<11>N<14> ᳇( <09>f-<2D><>n#<23>c<EFBFBD><63><EFBFBD>o<EFBFBD><6F>\n<02><0B><><EFBFBD>)<29><>p<EFBFBD><70>Ǜ<>g <09>+U<><0B><>\0<EFBFBD>E<EFBFBD>p<19><15>Nq<4E><71>&<26><>5<EFBFBD> <20><>T\ni<EFBFBD> <20><>{<EFBFBD><1D><>a<EFBFBD>v.rJߓ,?FuX<75><58>X<EFBFBD><58>zp<7A><0F><>(<28>Rɖ?(<28>y\"<EFBFBD><EFBFBD>S<EFBFBD>y<>gH<67>\r<EFBFBD><EFBFBD>?<3F>T<EFBFBD><54><EFBFBD><EFBFBD>#<0F>S<EFBFBD><08><>gs<67><73> <09><>\0i<EFBFBD><EFBFBD>)<29>*\0q<EFBFBD><EFBFBD>o<EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>Vz<EFBFBD>\"<EFBFBD>A<EFBFBD><EFBFBD>jX<EFBFBD>e<EFBFBD>><3E><><EFBFBD><EFBFBD>(b?b<><62><0F><>w0 \0/<2F><>w<EFBFBD><77> <09>(b<02>r\$<EFBFBD>՜<>q<EFBFBD><71>)<29><>rc<72><63>\r<EFBFBD><EFBFBD>~<7E><><EFBFBD>A<EFBFBD>~<0B><>a<EFBFBD>y5<79>W<EFBFBD>(b<>\n<EFBFBD>ɟf2hsϦ<EFBFBD>zh`<19>L<02>y<EFBFBD><79>禹<EFBFBD><E7A6B9><EFBFBD>0'/<2F>G`\"'<27><>Z<EFBFBD>*=]<5D>}<02><><02>9<EFBFBD>j<EFBFBD>Y<<3C><><EFBFBD>5E@+<2B><>L<EFBFBD>}<7D><><EFBFBD><EFBFBD>?\0<0B>5\0<EFBFBD><EFBFBD>&Hy<48>fo<66><6F><EFBFBD>ؠ<0F>6jI<6A>\0<EFBFBD><EFBFBD><EFBFBD>{X<EFBFBD>g%<25><>~9<><39><EFBFBD>xg<>\$h<EFBFBD>Sz<53>!<21><01><><0E>P呀.X^z<01><><EFBFBD>p<EFBFBD><70>s<EFBFBD><73>'<27>S<EFBFBD><53><EFBFBD><EFBFBD><EFBFBD>~Nhz3G<33><47>VD &'ڢ<>~t[<5B>㊮<EFBFBD><E38AAE><01><><EFBFBD><EFBFBD>z<18>c<EFBFBD>?<3F><>-<2D><0F>{<EFBFBD><EFBFBD><11>b<EFBFBD>?<3F>&<26><><EFBFBD>V<EFBFBD><56><EFBFBD><0F>&<26><03><>ɞH<C99E><48>4<EFBFBD><34><EFBFBD><EFBFBD>OX<4F><58><EFBFBD>S<EFBFBD><53><EFBFBD>\$<EFBFBD>͌\\<EFBFBD>\n <20>ɕ<02><><EFBFBD> <09><>~<12> <20>I<EFBFBD><49>PY<50>h<EFBFBD><68><EFBFBD>q<EFBFBD><71><EFBFBD><15>Vix<69><78>EP<45>1<EFBFBD><31><EFBFBD>\"N7<>h<EFBFBD>vVh<56><68>dEx<45>j<EFBFBD><6A>^<15>֗<EFBFBD>;ϥ<>C@)dZ<64><5A><EFBFBD><EFBFBD>-<2D><><02>/<2F><><EFBFBD><EFBFBD>`<0B>[<5B>a<EFBFBD>u<EFBFBD><75>h<0F><><EFBFBD><EFBFBD>z<1A><>|^<5E> <09>饃P<E9A583>y++<2B><>eF<65><46>f'<27>F.<2E><>&z<>R<EFBFBD>U;+Z<>#PY<50>ݺ<EFBFBD><DDBA><EFBFBD><18><>5<EFBFBD><35><EFBFBD>W<EFBFBD><57><EFBFBD>|.U<>hUw<55>1<17>*<2A>Q<EFBFBD><51>*<2A><><EFBFBD><EFBFBD><EFBFBD>p<12>a<13><>C<EFBFBD><43><EFBFBD><EFBFBD><EFBFBD>H)<29>'p<>j<EFBFBD>@>eɚ<65>#<23><><03>tw<74>g#<23><>jW<6A><57>Մ<EFBFBD><07> <09><>><3E><><EFBFBD><EFBFBD>6@\"@<<3C><><EFBFBD>ʝ<EFBFBD><CA9D><EFBFBD>f`d<>9<EFBFBD><0E>[!\0<EFBFBD><EFBFBD>C<1E>\r@VO.(b\rl<EFBFBD>/! ;@ڃ<>-4<><34>I<>L<EFBFBD>B<EFBFBD>TT<>:<3A><>o\"<EFBFBD><EFBFBD>aj<EFBFBD><EFBFBD>\r}&<26><1E>bT<62>!R<><52><13>ٚ<EFBFBD><D99A>N<0C><>R<EFBFBD><52>L<1E><><EFBFBD>G`<0E><>3<EFBFBD>j<03>dYj<59>^hzr<7A><72>[J\0IS<EFBFBD><EFBFBD><EFBFBD>><3E>z<EFBFBD>\0۫<EFBFBD>]\0<EFBFBD>j<EFBFBD>?&<26><>ψ `.<2E>l<EFBFBD><6C>i<EFBFBD><69><EFBFBD><EFBFBD>{C:<3A><>R<EFBFBD><19>%\0003<EFBFBD><EFBFBD>j<> <20>W泺ʜ<E6B3BA><CA9C><1B><>k3@]<5D><>3<EFBFBD>*ѥ<<3C><><EFBFBD><EFBFBD>{Vc<EFBFBD><EFBFBD><EFBFBD>M<EFBFBD>A[<5B>\0<EFBFBD>y@<<3C><>?<3F>yC<79><43>㚠\n`++O<><4F>|<7C><>b<EFBFBD>X<><58>c^ ~Ny)<29><><EFBFBD><1A> <09><><EFBFBD>#<23><>F<EFBFBD>&<26><><EFBFBD><EFBFBD>zX<1C>C<EFBFBD>&<26><> k<><6B>^QYJcI<63>^N<><4E>뵍N4<4E><34>`<60><><EFBFBD><EFBFBD><EFBFBD><19><>*}<7D><>k<EFBFBD>}<06>:<3A>k<EFBFBD>z%<25>w<EFBFBD>k<EFBFBD>@H <1A><><EFBFBD><EFBFBD>Ri<52>]<5D><><1D>w<EFBFBD>+,<15>C@Ø<><C398><EFBFBD>><3E>HJ0<>><3E>\0<EFBFBD><EFBFBD>PUT<11><> <20>v<EFBFBD><08><>\0?<3F>\nj<EFBFBD>FI<EFBFBD><EFBFBD>.<2E><>Hж<48><D0B6><EFBFBD><12>{4<EFBFBD>ɨ]<5D>\"<04><>U#<23><><EFBFBD><16>)!U)<29><><EFBFBD>!d<><64><EFBFBD>\0<EFBFBD>\"<0C><><EFBFBD>L<EFBFBD><13><>T<EFBFBD>J<EFBFBD><4A><0B><><06>@\$<EFBFBD><EFBFBD>K,Ӵ<06>%<07>Q5<51><35><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD>M<EFBFBD><4D>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD>P#<02><>%<10><>R 01<30><31><1A><>]+<2B>8<EFBFBD>4<1D>F<EFBFBD><46><1C>@<40>`d<>ؙ<EFBFBD><1A><S<13>)C<><43><EFBFBD>9<EFBFBD><39><03><>1<EFBFBD>l<EFBFBD>D<1B>r<EFBFBD><13>#\n+ 4<>kK8<><38><EFBFBD><EFBFBD>K!<21>{\"<EFBFBD><EFBFBD>*<2A><>>\0번5{%<25>\$<EFBFBD><EFBFBD>kA<EFBFBD><EFBFBD>Ƽ<EFBFBD><EFBFBD>A<EFBFBD>9<><39><EFBFBD><EFBFBD>T<>Ǿ<>Tr\0<EFBFBD><EFBFBD>O<EFBFBD>\0as<EFBFBD><EFBFBD><EFBFBD><01>m<EFBFBD><6D><EFBFBD>hȕ<><C895><EFBFBD>/<1F>f<EFBFBD><66>O`<60>m<EFBFBD> <09><> <09>tCz><tD&<03>\r<EFBFBD>ش<01>M@<1C><1A><>R<03>ur(m )<29>R.<2E><>bQ<62><51><EFBFBD>j<EFBFBD>Z<EFBFBD><5A>a)<29><><EFBFBD><EFBFBD>L<EFBFBD>l/۫<0E>%W<><05>F;<1B>8<7F><38><EFBFBD>m<EFBFBD>/<2F>}<7D>vGaB|~<7E><>m<EFBFBD>+'<27>vm<76>-<2D>s'<27><>6<><36><04>P<EFBFBD><50>1<EFBFBD><31>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>IB<49>˱<EFBFBD><CBB1><EFBFBD><EFBFBD>l<EFBFBD>.8o[zR<7A>1<EFBFBD><31>1<><31><EFBFBD>r\$<12>R@\$S<><53><EFBFBD>̱<EFBFBD><CCB1>\0<EFBFBD>N!F<>aX<61>f<>RV<52>h6<>s<EFBFBD>\\<EFBFBD>P;<3B><>[G(Jc1j<31>><3E>!<21>Ѷ\r<EFBFBD><EFBFBD><01>nwV<77><56><1A>͓<EFBFBD><CD93><EFBFBD>:<3A>\r<13>L<EFBFBD>o<EFBFBD><6F>m<EFBFBD>黤\n˸<EFBFBD><EFBFBD>:<3A>=<3D><><1C>b<EFBFBD>}V<><56>[<5B> _<>`J{<EFBFBD>#!<19>?3'<27><><EFBFBD><EFBFBD>ߡ<EFBFBD><DFA1><03><>{<EFBFBD><EFBFBD><EFBFBD>:`hrZ77v<37>r8<72>紽<EFBFBD>AT<41><54><EFBFBD>x<EFBFBD>nJth<74><68><EFBFBD><EFBFBD><EFBFBD>\nh<EFBFBD>aV{Q<12><><EFBFBD><EFBFBD>W<EFBFBD>4́<34>F,D<><06><>C<EFBFBD><43>:<3A>i[<5B><><EFBFBD>h<0C><1A><>`<60><>Æ<EFBFBD>ݼ<EFBFBD>ee<65><65><EFBFBD><EFBFBD>3σ<33>L<EFBFBD><4C>;IH<1B>El <20><>d<EFBFBD><64><EFBFBD><1D>P<0C><>/M\$X<><58><EFBFBD><EFBFBD><EFBFBD>3|<7C><><EFBFBD><EFBFBD><EFBFBD>!Us6<73><36><EFBFBD>a<EFBFBD><61>C<EFBFBD><43># 6<><36>ҡ<EFBFBD>s<EFBFBD>{\"<EFBFBD>Z<EFBFBD>V<EFBFBD><EFBFBD><05><>c<EFBFBD><63>!<21><04>k<EFBFBD><6B>r_U<5F>0V<30>m<EFBFBD><6D>%<25><><e<><65>z<EFBFBD><7A>4<EFBFBD><0B> <0E><><EFBFBD><EFBFBD><04><13>d<EFBFBD><64>%C?F<>[+<2B><><EFBFBD><<3C>!,ur<14>[baxg<78><19><><EFBFBD><EFBFBD><EFBFBD>%<25><>!<21><>#o<>ZX8!F<>\$M<EFBFBD><EFBFBD><EFBFBD>:<3A><13>2ml<6D><6C>OX<4F><58>;O<><4F><EFBFBD><EFBFBD><13><>#`mwSS><3E>lrNk0<6B><30><07>@3N<33><4E>3I<1C>><3E><><EFBFBD><EFBFBD>n<EFBFBD><6E>FD<46>`_Z&|C<><13><>`<60>Img<06><>V<EFBFBD>6e<36><65><14>u>վ<><D5BE><04>k<EFBFBD>j<EFBFBD>j<><6A>=<3D>A<EFBFBD>G<EFBFBD>Os<4F><73>dp<64><70>E<11><05><>,<2C><>'<27>,<2C>t[Q<><05><><EFBFBD>@<40> _<>x%[I<><0F><>C<>c3<63>\n3<EFBFBD><EFBFBD>6t<>!,<2C><> <20><><04><> mDXr<58><72>5<EFBFBD><14><>3J}<7D>P\"[<5B><><EFBFBD>4<><34>CNL+q <0E><<3C>\$ZX;<3B><03><16><>@<40><03>I܁<49><DC81><EFBFBD>.<2E><>\0<<3C><03>Z<EFBFBD>V<EFBFBD>r#\r<EFBFBD>[ 4\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>`F<><46>\0ɬ<EFBFBD><EFBFBD>q<EFBFBD>l\\<EFBFBD><EFBFBD> <20>k<EFBFBD><6B>#|Z<>%K0K.\nIZ<EFBFBD>̠@܄<><DC84>L<EFBFBD><4C>-<2D><><EFBFBD>Pd<50>^<5E><><16>1S<31><53><0C><><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><44>H.<2E>iZì}<7D>Z<EFBFBD><5A>\r<EFBFBD>ͦ<EFBFBD>m<EFBFBD><17><>ھ<><DABE>\r<EFBFBD>:<3A><>k<EFBFBD>,s<><73>\0<EFBFBD><EFBFBD>G<1C><><EFBFBD><EFBFBD><EFBFBD>W\0001\0ȼ<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD>ݬ_\\xq<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mZ<EFBFBD><EFBFBD>G<13>6<EFBFBD>\r<EFBFBD><><7F>?'b2r<07>?5<><35><17>G@<40><><01>o\"\\<EFBFBD>r\"o yq<79>IG!<21><><EFBFBD>_ǯ#<23>k\0<EFBFBD><EFBFBD>['St<53>Eγ<><CEB3><EFBFBD>OK7%2c<32>?<3F>n<EFBFBD><6E><<3C>4'\\urf<1A>A\\'H<>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WL=/N<><4E><EFBFBD>u<EFBFBD>NmUwv<><7F>N<>E<><45><1C><><EFBFBD><EFBFBD>y[G<>P&<26><>2<EFBFBD>^<5E><><EFBFBD>G?M<>*f<><66>M8<1B>)<29>s<EFBFBD><73><1C><10>c<EFBFBD><63><14><>Y<EFBFBD>uvk[E<>:<3A><><EFBFBD>\0ǿ<EFBFBD><EFBFBD><15>H9<48>x<EFBFBD>d<EFBFBD><64><17><11>`0<><30>,hCB<43><42><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD>{<EFBFBD>J|<7C><><EFBFBD>2[<5B><>Җ,K<13>s <09>{A1<1D><><08>u<EFBFBD>ar<61><72>><3E><>+<2B>Vaz#<23>͈W<CD88><57><EFBFBD><1B>ʭ<EFBFBD>74`<60>)<29><19>5+<2B>00\$,<2C>sE<73><45>8;\"<EFBFBD>ta <09>W<EFBFBD>[<5B><><EFBFBD><EFBFBD><18>͛<><CD9B>p<EFBFBD><70>\nF<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD>[`G0&<26><03><><EFBFBD> <20><>s<EFBFBD>2\\ſ<EFBFBD><EFBFBD>\\<EFBFBD>s \\<EFBFBD><EFBFBD><EFBFBD>͒t/5<><35>va<12><><EFBFBD><EFBFBD><EFBFBD>N<EFBFBD>\"V <09>g`<60>+bMpG<1C><1<><31><EFBFBD><11>(<<3C><><EFBFBD><EFBFBD><EFBFBD>D<EFBFBD><44>sʟ=<3D><>sϴ),vN<76><4E><EFBFBD><13>\0<02>@<40>\\<17><><EFBFBD>=<3D>ٹ<EFBFBD><D9B9>xa<13>v<03><><<3C><>O<04>@<40><02><>u:<3A><>o<EFBFBD>ϗA <20><>f<EFBFBD><66>6<EFBFBD><36>s[>}J<><4A>\\5<EFBFBD><EFBFBD><08><EFBFBD>\r<EFBFBD>9<EFBFBD>&G͜<>Ҋ<04><03><>=G<>˘W<CB98><57>5<EFBFBD>y<EFBFBD>;\\Ū˧H<<3C>Ӿ7\0SGs-͟H<CD9F>&<04><>H<EFBFBD>!<21><>y<EFBFBD>j<EFBFBD>{<16><19><><EFBFBD>\"B;<3B>lk5a8T<38><54><EFBFBD><EFBFBD><02><05>W<EFBFBD><57>Z<EFBFBD>L<EFBFBD>.<2E><1A>5<EFBFBD><35>t<EFBFBD>`<60>L<EFBFBD>W<EFBFBD><57><0C>M\"<EFBFBD>t<EFBFBD><19>M<EFBFBD><4D><EFBFBD><03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IGM<47><4D><EFBFBD><EFBFBD>f<>7t<><02>Ţ<EFBFBD>u<0F>9c<39>'\nW<EFBFBD>*<2A>6<EFBFBD><36><EFBFBD>&گa<DAAF><61>\0<1C>/!˓<><CB93><EFBFBD>\\<EFBFBD><11><><EFBFBD>><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04><><EFBFBD><EFBFBD><1A><><EFBFBD> YC<59>ᆚ?O.<2E>l<EFBFBD>@O=*<2A><03><>@<40><18>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>j@`<60><03><>Ċ|<7C><>\r<EFBFBD>p9<1B><>b<1A>N4<>W<EFBFBD>9<EFBFBD>@<40><>M<>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Q|@<40>Q<EFBFBD>O>]R<>K<EFBFBD><4B>+<1C><>W<EFBFBD>g[<5B><><EFBFBD><EFBFBD><EFBFBD>\\|<7C>s<EFBFBD>b<EFBFBD>H<1C>t<EFBFBD>\\<EFBFBD>K<EFBFBD>r<EFBFBD><EFBFBD><EFBFBD>;<3B>y<EFBFBD>t`/^]N]t<1B>&<26><><EFBFBD><EFBFBD><EFBFBD>g<14><>W\$<EFBFBD><02>f<EFBFBD>_qOP<4F>9<EFBFBD>W\\`<60>]C<><43>A?F<>C<EFBFBD>A<EFBFBD>pj v%B<>b<EFBFBD><62><EFBFBD>Ӿ<EFBFBD><15><># q<>4<EFBFBD>Y5<59>P<EFBFBD>4<EFBFBD><34><18>Cк1T<31><54><EFBFBD>oq<6F>tAG<15>\\<EFBFBD>&/k2}<7D><<3C>L<EFBFBD>A6<41>5\"Wg,<2C>#<23>g <20><><EFBFBD>Z]<5D>1<>¤<EFBFBD>I<EFBFBD>ń<EFBFBD><C584>GS\nHk\\<EFBFBD><EFBFBD>]<5D>g=<3D><>(=C<>/ւ<>R<EFBFBD>]9ک<39><DAA9>m24<32><34><11><><EFBFBD><EFBFBD><EFBFBD>r<EFBFBD>\\<EFBFBD>ւ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?k<>w<EFBFBD><77><1C><><EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>gP<67><50>u<19><><EFBFBD>2u<32>H<0B>݉ <09>͓=<3D><>?<3F>X<EFBFBD><58>2<EFBFBD><32>gkQ<6B><51><EFBFBD><EFBFBD><EFBFBD>l5<03>֙ew8l_ܧn<DCA7><6E><EFBFBD>Mr<0E>v<EFBFBD>w9<77><39><EFBFBD><EFBFBD>4<EFBFBD>O<EFBFBD>ws><3E>a%D<>]<5D>IE<49>e}lt<6C>({<EFBFBD>]<5D>__Oc<4F><63>vH<0C>C<EFBFBD>9)<29>m<EFBFBD><6D>u<15>M}=<3D>\0<EFBFBD>@07B _<>S<EFBFBD><53><EFBFBD>\\<EFBFBD>2Bݽ<EFBFBD><EFBFBD><EFBFBD>U<04> <20><><0F>e]nB<6E><42>M-v<><08>\r<EFBFBD>v\0<EFBFBD><EFBFBD>pMɕ̤<EFBFBD><EFBFBD>u!@w<><77>H&<26><><EFBFBD>Ӳ<EFBFBD>t<11>֖<EFBFBD><D696>n<EFBFBD><6E>u<0F>\"_<EFBFBD>@<40><>)N<><4E><EFBFBD>ڿoN<6F>W<EFBFBD><57><EFBFBD>s\n<EFBFBD><EFBFBD><EFBFBD>Q<EFBFBD><EFBFBD>N<EFBFBD>lw\"<EFBFBD>|<7C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AjF/-<0F><><EFBFBD>w<EFBFBD><77>4q}<7D><>e<EFBFBD>ox<6F><78><EFBFBD>\"9=<3D><><EFBFBD>z3_P<5F><50>K<><4B>:<3A>fN<66><4E>h<EFBFBD><68>Qs<51><73>_X<5F>Sj<02><><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD>5<EFBFBD>%<25><><EFBFBD>v<EFBFBD><76><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><14><><EFBFBD><EFBFBD>FB<17>;R<><52>pGG<47>\00063<EFBFBD><EFBFBD><EFBFBD>@61<36><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{%<25>+LS<4C><53><EFBFBD><EFBFBD>?+<2B><><EFBFBD><EFBFBD>f<EFBFBD><66>Iu7<><37><EFBFBD>t<EFBFBD><74>at<61>\r7<EFBFBD><EFBFBD><02><04>0<EFBFBD>i<EFBFBD><69><EFBFBD><1F>Wi<57><69>?<3F>3<EFBFBD><33>@<40>n<EFBFBD><6E>R<EFBFBD>@<40><>m<EFBFBD><6D>f<EFBFBD><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lg!<21><>A<15>F&v<15>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^\$<EFBFBD>Y<EFBFBD><13><>aj<61><6A>(<28><><EFBFBD>_<EFBFBD><1C><>o<1F><><EFBFBD>?<18><>ە<EFBFBD><DB95><EFBFBD>rK<72>dC<16><><EFBFBD><EFBFBD>3w<16>I̤<><CCA4><EFBFBD>5<1D>\0q۰<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;wj<77><6A><EFBFBD><EFBFBD>[<5B><04><><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><61>596<39><1F>#<23>L<EFBFBD>kvo]<5D><>d~a<>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'V<>u<EFBFBD>4<>@<40><><EFBFBD>`<60><>{<EFBFBD>G-<2D>_<EFBFBD><5F><EFBFBD>j<EFBFBD>eI:<3A><><EFBFBD><EFBFBD><13><>Q<EFBFBD><04><>ze{y<>,i:<3A>v<EFBFBD><76><EFBFBD>z<EFBFBD>}`<60><>I<EFBFBD>%<25><><EFBFBD><EFBFBD>7'<27><><EFBFBD>]]<5D><><EFBFBD><EFBFBD>y<EFBFBD>_gI;<1B><1F><>R v<><76>ϡ<EFBFBD>ބ<EFBFBD><DE84>x\rc@sk<73><0F><><EFBFBD>&+<2B>O<EFBFBD><4F><EFBFBD>n%赵r<E8B5B5>r<EFBFBD>#t<>'<27><>϶4<CFB6><1E>WV<57><56><EFBFBD>U<EFBFBD><55>=<3D>066<07>]觥}kS9w<39><77><EFBFBD>zb<12>9><3E>Y\n<EFBFBD><EFBFBD> <20>zb<7A><62>M<EFBFBD>Uze<>Y2<59><32><1D><>\\<EFBFBD><EFBFBD><EFBFBD>;<3B>?<3F><><EFBFBD>x4M<34><4D>Ӆz<D385><08>?>.<2E>鏨><3E>q\"U`<60>Ӊܘ7;2<><32>*t<><05><>aa n<>o<>%?<3F>Q<03><><EFBFBD><EFBFBD><EFBFBD>Vz<56>ܧ<EFBFBD>K<EFBFBD>Ϋ러><3E><>5<1E><>A<EFBFBD>q<1B>'*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>><3E>>F<03>ơF<C6A1>Kс\"<EFBFBD><EFBFBD>m<>/?<<3C><>k<EFBFBD>)<29>ޞt<DE9E>Z|<7C>~ɬf~<7E><>M<EFBFBD>%<25><EFBFBD><7F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=\r<EFBFBD><EFBFBD>t3<g\\<04>yl|<7C><><EFBFBD><EFBFBD><0C>l<EFBFBD>Q`X<>Y\\<EFBFBD>[<5B>m<1D>'<27><>x<EFBFBD><1C><>\$©<EFBFBD><EFBFBD>\\sCㄺ8<EFBFBD>D<EFBFBD>t\\<EFBFBD><EFBFBD><0E>\$<1F><>ͯ<EFBFBD><CDAF>p<EFBFBD>w<EFBFBD><77>g<EFBFBD>^<5E>%<25><EFBFBD><7F>a<EFBFBD>W<EFBFBD><1D><><EFBFBD><EFBFBD>/<2F>w<EFBFBD>>b<04><><EFBFBD>7<EFBFBD>;<3B>`[<5B>^<5E>J <09><>}s{<0F><EFBFBD><7F><EFBFBD><EFBFBD>]<5D>o<EFBFBD>>G\\<EFBFBD><EFBFBD>=<3D><><EFBFBD><EFBFBD><EFBFBD><13><><EFBFBD><EFBFBD>{<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><07>'A<>\\<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD>{<EFBFBD>O`<60>[<5B><>Ks<4B>W<EFBFBD><57><EFBFBD>k<>5<EFBFBD><35><EFBFBD><EFBFBD><18>*<2A><><EFBFBD><EFBFBD>ϯ<EFBFBD>{<EFBFBD><03>.<2E>\0je<EFBFBD><EFBFBD><EFBFBD>\0000<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\mzp gA<67><04><><EFBFBD><EFBFBD><11>Eٟ<01><><EFBFBD><1C><>@<40>V<EFBFBD>N<EFBFBD><4E><EFBFBD><EFBFBD>S<53>Ͽ<06><0B>O<EFBFBD><17><><07><15><>,h<>D<><44><EFBFBD><EFBFBD>*S<>z<EFBFBD><7A><1E>=<3D><15><>w<EFBFBD><77>+v<><76><EFBFBD>+|A<><41><EFBFBD><EFBFBD><EFBFBD>P6*<2A><>vgBfŰ<66><C5B0><EFBFBD><EFBFBD>J<><4A>WQ<57>g²<67><C2B2>{<EFBFBD>(O<><19>bu1<75><31>J<EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD>!<21><><EFBFBD><EFBFBD><EFBFBD>^<5E>!<21><>g<>CT<43><54>\\<EFBFBD> Ԁʱ6<>x{<EFBFBD><EFBFBD>Q<<3C><>:~G?<3F><>{7<EFBFBD><EFBFBD>\r<EFBFBD>KuM<EFBFBD> X\\<EFBFBD><EFBFBD>])w<><77><EFBFBD>}+)<>}SI<1F><>[<5B>;<3B><><08><><EFBFBD>J稒?H<><48>Կ<EFBFBD>_I<5F><49><EFBFBD>G<EFBFBD><47><EFBFBD><EFBFBD>B<>vGtM<74><4D>3|<05><>C\0<EFBFBD>p<08>gOR<4F><52>-<2D>H <20>@<40>q;^<5E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>IPʉ<50><0E>\r<03><>f<EFBFBD>w3<77><33><EFBFBD>ﶟ{!<21><17><>C<EFBFBD><43><EFBFBD><EFBFBD>ℏ<D7B5>茜Huڐ<75>T<EFBFBD>8{V<02>v<7F><76><EFBFBD>OHb1G<31>k<EFBFBD><6B>\n<EFBFBD><EFBFBD>C<EFBFBD>8K<EFBFBD>f<EFBFBD><EFBFBD><EFBFBD>'ߪp<DFAA><70>+R<><52><EFBFBD><EFBFBD><EFBFBD>>Xt<58><74>L<EFBFBD><4C>2mU!<21><><EFBFBD>?K<>6O<36>2~1<><31><EFBFBD>ۣ<EFBFBD>))g2a<32>%<25>O\\<1D>wZeȿZ<C8BF><5A><EFBFBD>ei_<69>u?<3F><><EFBFBD><EFBFBD><EFBFBD>ׂ\n<EFBFBD><EFBFBD>W6}<7D>YYڲ<1D><><EFBFBD>P<EFBFBD>_~=<3D><1E>7\"<EFBFBD>+<2B><><EFBFBD>F<><46><EFBFBD>g\\<EFBFBD><EFBFBD>'<27><07>b<EFBFBD>&h<>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>IϜ<49><CF9C><EFBFBD>֯<EFBFBD><EFBFBD><7F><EFBFBD>\n<EFBFBD>D<EFBFBD>_~<7E>ey<65><79>;\0B<1E><>E<03><><1A><>OU0\$Sz<EFBFBD><EFBFBD>&<26>*oU<>FMS<4D>rRt2<74>r/<2F>2<EFBFBD>e<1B><><EFBFBD>,T<><54>Me<1D><1B>1<>a<01>eE<65><45>T&.P<>%&<26><>W%ɡ<>u<EFBFBD><75><EFBFBD>F<EFBFBD><46><03>Sz<><7A>RT.<2E>̚P<CC9A><50>6<1F><19><1B><><EFBFBD>Q~<7E><>g<EFBFBD>`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><11>P<0F><>X<EFBFBD>\$<17><1D>9<1A><15>D%<25>V\$j<10><>MTEY<45><59>C<EFBFBD><1B><0E>Yի<14>BP<42><50><EFBFBD><0E>Wc <1F>W<EFBFBD><57><EFBFBD>%'<27><11><>IU<49><18><><EFBFBD><EFBFBD><EFBFBD><7F>=<3D>?<3F>C<EFBFBD>G2<01><EFBFBD>f<EFBFBD><66><EFBFBD>]63]<5D><15><EFBFBD>[<5B>j<6A>U<EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>\0<EFBFBD>Z<EFBFBD>ÿ<EFBFBD><04><><EFBFBD>s<EFBFBD>s<73>l2<6C><15>M<EFBFBD>²<EFBFBD>XX<58><58>t\0e<EFBFBD><EFBFBD><04>9<02>VD<56>Yfp<06>F<06><>[<5B>\0=_<>ѓ<EFBFBD><D193>A<>@<18><0F><>\\<01>\0<EFBFBD><1B> <09>'V<>F*(<1B><><EFBFBD>[<5B>@\"Z<EFBFBD><EFBFBD><EFBFBD>]<5D><18><05>]<5D><1E>Rc<52><63>u|g<><67><EFBFBD>-<06>SEL<03><>e<EFBFBD> <19>&<02><><EFBFBD><<08>h<08>\n<EFBFBD>P\0f<EFBFBD>t<EFBFBD><EFBFBD><13>0\"J<EFBFBD>Q<EFBFBD>?<3F>D<18>W<><57>TSO<53>@<40><><EFBFBD>q<C287>k<EFBFBD>G2<47><32>)?<3F>0)g\0<EFBFBD>`5<>*<2A><0E><>\0<EFBFBD>T<1A>_<05>\0<EFBFBD>(<02>L<EFBFBD>*<2A><07><><EFBFBD>G\np<EFBFBD>z;<3B>J<03><><EFBFBD>gh<67><68><EFBFBD>&Z\\,<2C>ʖ<>B<EFBFBD><04><>,4<>M<EFBFBD>y3<79><33>,<2C>M<16>\\J\n\0Oi<EFBFBD><05>o<EFBFBD><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD>@0|<7C>\n<EFBFBD><EFBFBD><EFBFBD><0F><>Uv<55><76><EFBFBD>yo%^<5E><>Q<EFBFBD>)~~<7E><> ި҈C\n<07>g<1E>E<EFBFBD><45>v<><76><1D>Y<EFBFBD>td<74><64><EFBFBD><02><><10><><EFBFBD>r<EFBFBD><72>j<1F><><EFBFBD>uF<75><46>516<0F>ɵ<EFBFBD>dEO<45><4F><19>@<40>d<EFBFBD>E<><45><EFBFBD><EFBFBD>6<04><19>`c<>h\n<EFBFBD><0C>2,<2C>W<EFBFBD><57>sk<73><6B>y9<79><39>`A<><41>b2<62>``<60>i<EFBFBD>S\"8<1C>;<3B>`<15><0F><>U<EFBFBD>\n`*̩<><CCA9>\0E\0<EFBFBD>U<EFBFBD><07>Rp<52>)<16><>b<EFBFBD><62>=<3D>ҧ<EFBFBD> (<28> <09>Aa~<7E>!<21><>Z<EFBFBD> ,8 <20>0<EFBFBD>h<04><>A<EFBFBD>T<EFBFBD><54>`<60><><EFBFBD>ih<69><68>(\"<EFBFBD><EFBFBD>ظA#^:ʸ<>( ,]`<60><><EFBFBD>aU<04><><EFBFBD><11>%`U?<3F>&\0V<EFBFBD>͚F<>hl<68>X<EFBFBD><58>_\0<EFBFBD>5<><35>;<3B>l%^X<><58><EFBFBD>er<65>ٓBcz<63><19>1<EFBFBD>\0W<03><><EFBFBD>6X)<29><>Y<EFBFBD>AS<41><53>ӥ<EFBFBD><D3A5>h K<><4B><EFBFBD>A<05><><EFBFBD><EFBFBD><EFBFBD>t<15>v0C`<60>Abj<08><15><>0V<30><56><EFBFBD>oeLí<4C><C3AD>%O<>GٯAN<41>Eh<02><07>.⠒4<E2A092>a<EFBFBD><05>,<12>PV<50><56><EFBFBD><EFBFBD>^<5E><><EFBFBD>/<2F>f<0F>*`<60><><EFBFBD>d<EFBFBD><64>ň<EFBFBD>H&<26>cXs<58>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD>x}<7D><01><Y<>@<40>a<EFBFBD>N<EFBFBD><4E><1F>Zؔ1<D894>b<EFBFBD>ā<EFBFBD><C481><15>7Pi`<60>*z<>Y<05><>|X,<2C>j<EFBFBD>\\\0+<2B>)<06><>X-<2D>F؈1<02><><1F>?37<33>4<EFBFBD>H<EFBFBD><48><EFBFBD>zb@<40>q<EFBFBD>4QP`<60>)b<><06><><EFBFBD><11>Pt <20><>სM<>+<0E>4<EFBFBD>f<17>1,^<<1F><><EFBFBD><>Z 14c<34><63><04><>^FX<46>S<14>u\0<EFBFBD><EFBFBD>A<EFBFBD>3-<06>-<1F>i<EFBFBD><69>h<EFBFBD><68>]<5D>;F<10><>d6@<40>f<EFBFBD>-S<>'EE<45>\r<EFBFBD>ɱ<EFBFBD>ah<EFBFBD>ђ<EFBFBD>\\e<><65><EFBFBD>߲<EFBFBD>+0M<30>V \rDɿ<EFBFBD><EFBFBD>e<EFBFBD>v<>88,#<23>ު#_3<08>!<21>6<04>/<2F><>k<08><>d\"8C<EFBFBD><EFBFBD><1F><><EFBFBD>m<EFBFBD><08><>p<><70><EFBFBD><EFBFBD>^=7M{b֕+R<>F<EFBFBD><46><EFBFBD><EFBFBD><EFBFBD>0f4<0B><02>8FP<><50><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><56>a<EFBFBD><61>}<7D>Z<EFBFBD>j<EFBFBD><6A><EFBFBD>qf<1A>1<EFBFBD>1V<31>0<EFBFBD><30>j4gg6<67>@z<><7A>-<2D>E<EFBFBD>A<07>T<EFBFBD><54>?<3F>0<EFBFBD>#A<><0F><1F><><EFBFBD>U<01><><EFBFBD> <20><>m<EFBFBD><6D>^L<><11><>;%L<<3C>\nG\nRPGF<47><46>%S<>umd<6D>嵪=v<><76>,A<>9<EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD> <09>C<>t<1D><><EFBFBD>GH<47><48><EFBFBD><EFBFBD>st<73>@~[<5B><>5),<2C>F8<>c<EFBFBD>sؼ\"m><3E>Lj9<6A>qm<71><11>#<23>lr<6C><72><1C>m#<23>[<14><>|<1C>Ŷ<EFBFBD><C5B6>6ˉ<36>M<0F>llf<6C><66>(<28>7#<23>ͣ<14>6<EFBFBD>Ipѵ<08>ĭ<><C4AD>M;xH<0C>0v<30>=<3D>ύ<EFBFBD><02><04>l<EFBFBD>#}<7D><>y<EFBFBD><79>A<EFBFBD><41><EFBFBD><EFBFBD>F<04><><EFBFBD>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6a:\n<EFBFBD>U<EFBFBD><EFBFBD> <20>ɉ<EFBFBD>:<3A>Zl<5A><6C>|\$i<10><>H<0C>l<EFBFBD><6C>MK<12><><10><><EFBFBD>6<EFBFBD>~L7<4C>2<EFBFBD>V<><56>Kۇ<4B><DB87><0C><><EFBFBD><17>0<13><><EFBFBD>̤C<0C>ղ<17>tP<74>D<EFBFBD>Q<EFBFBD><51><EFBFBD><EFBFBD>v<EFBFBD>q\"<EFBFBD><EFBFBD>c5o&ᇆ<>m<EFBFBD><0B><>J<EFBFBD>1<EFBFBD>Ϋ8<><08>3L<13><11><>\r<EFBFBD><EFBFBD>G<EFBFBD>)<03>11<31><31>FHd0<64><30>G<01>O<EFBFBD>ܤk+<2B><>b<EFBFBD>C<06><16><><EFBFBD><EFBFBD><18>S<EFBFBD><53>П\r@;x<03>g<EFBFBD><67>\n{T<EFBFBD><EFBFBD>T<0F>%]ؠp<D8A0>J<EFBFBD>Ԗ<EFBFBD><11>(<1C><01>.<2E>)<29><><EFBFBD>f<EFBFBD><66><EFBFBD><EFBFBD>wT\r 8<>G<EFBFBD><47>gܛ7<DC9B><0B><><EFBFBD>a2\\RCb<18><>D<08><1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6<EFBFBD>O\\<01>盲m<><14><08>rvp<76><70>{<EFBFBD>6<EFBFBD>0Ɠ<EFBFBD>9<EFBFBD><EFBFBD>^-B<1F><><EFBFBD>t<CE8B>7z<37><7A>+<2B><><EFBFBD><EFBFBD><10><11><>%<25>;lHq<48>C<><43>ɭ8<>W<EFBFBD><57>F<EFBFBD>7=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><11>54r<34><72>3<><33>)<02><><EFBFBD>.G:܅9b9#A(<28><>%<25>vh<76><1D><>h<EFBFBD>4<EFBFBD> \0gK5<0E>c<EFBFBD><63>gע<67>=<3D>H<01><>oE<04>mڣo<DAA3><6F><EFBFBD> 6t<<3C><><EFBFBD>!<21>\0s\0<EFBFBD><1E><07>vP<>86X<><58><1E><><EFBFBD><EFBFBD>n[C<>\r<12><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>э<EFBFBD>(R<>Y<01><12>ʴ<EFBFBD>P<EFBFBD><1B><><EFBFBD>m<EFBFBD><0F><13>ݠM<DDA0><4D><1E><>RnZ<6E><5A><EFBFBD><EFBFBD>?<3F>F<EFBFBD><46>[<5B><><EFBFBD><EFBFBD><11><02><><EFBFBD><EFBFBD>aj*<2A><04><><EFBFBD><1F>}@-<2D>R<1B>\r<EFBFBD>~<7E>=<3D>?P<><04><><01>\\<1C><><EFBFBD><EFBFBD><EFBFBD><07>)<29><12><>PD<50>\\UtBEy1 ŕ<><C595>K<EFBFBD><4B>h<15><>ȅ<EFBFBD>&<1E><>><3E><><EFBFBD><EFBFBD>¼B؆<42><D886>\"<19>)<29>^Td<54>lC<6C><43><0F><>jD/N<>;<3B>\nD+竆<><E7AB86><0B><0E><>\n<16><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"(!HYt<59>1<>D<EFBFBD><44>c<EFBFBD>\"+:<04>`3EH<45><48><EFBFBD>\")<29>O<EFBFBD><4F>2#E<><45>KO<1F><>΅<EFBFBD>ߙM|<7C><05>k<EFBFBD>7<>n<>i\nC~ec<65><18>:<3A>oNT<4E><54>F<><46><EFBFBD><EFBFBD>D<EFBFBD><44>@<40><><EFBFBD>:\$<13><14><><EFBFBD><EFBFBD>>D<><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><H<>eq#P<>D@?<10>8<EFBFBD>c<EFBFBD><63>e<EFBFBD><65><EFBFBD>&<26>Z<EFBFBD>15 bp<62>i<EFBFBD>9\"PD<EFBFBD>9<0F><><EFBFBD>7x*6\\@k<>8<EFBFBD><38>8<EFBFBD><38>W<EFBFBD>J\0<EFBFBD>j<01>=t&<26>TA<54>Ca<43><1C><><EFBFBD><EFBFBD><EFBFBD><15>%<25><><EFBFBD>ˑ/Έ<><CE88>\0<EFBFBD>\r\n@p<>mn{<EFBFBD><9ꅩ &k<>&<26>I)<29>g<EFBFBD>0]L<><4C><EFBFBD>4<08><><EFBFBD>R\"h<EFBFBD>gsx<EFBFBD><1C>Aț<41>7ҢD<D2A2>*<2A><><EFBFBD><16>?'<27>I<EFBFBD>\"Z<EFBFBD>RZ~<7E><>&I<>7S<37>y<EFBFBD><79>D<EFBFBD>,_'<27>s<EFBFBD>J<EFBFBD><4A>֦-~<7E><>2<EFBFBD><32>lN<6C>I<EFBFBD>/<2F>d<EFBFBD>@tKpBdD<64><44>n]\"<EFBFBD>\0d<EFBFBD><14>%<25>X<EFBFBD><58>5<10>3<><33><EFBFBD><1E>\r<EFBFBD><QG<51>1BU<42><55>o<><6F>A<EFBFBD>Pآ<50><D8A2><EFBFBD>w<EFBFBD>Ʌ<EFBFBD>q<>cȨ<63><C8A8><EFBFBD>\"<EFBFBD>7.s<>:(<28>R<EFBFBD>;<3B>J<EFBFBD>@<40>yT<79><54><0C>`k<><6B>ʢ<1C><14><><EFBFBD><EFBFBD>8#<23>ȧ<EFBFBD><C8A7><EFBFBD><EFBFBD><<3C>\\<EFBFBD><EFBFBD>]^\"Jx<EFBFBD>p<1D>.w<14><>tLH<><48>]_k<19>M<EFBFBD>J*`<60>ȫ/eމ8<DE89><38><EFBFBD>\n<EFBFBD>-<2D>`<60>`<60>=<3D><><EFBFBD><04>)<29>UH<55> KS<><53><13><>y<1C>T<EFBFBD><54>\n<EFBFBD>M*C<>R0<52><30>+<2B><><EFBFBD><EFBFBD>T<><54><03><15><>z<<3C><>QZ<51><5A>K<04><>v+є<08><>Z<EFBFBD><5A>6(w<>kd+<2B><>4 c<>ѿ<01><><EFBFBD>0Sᘲ<53><E198B2><1E><><EFBFBD>l<EFBFBD><6C><EFBFBD>#j<>T<EFBFBD>'<27><>)<29>-Y<><59>ͽ<EFBFBD>YX<59><58><EFBFBD>ߗ><3E>t<EFBFBD>n:᧪+_<>#<23>1<03><>5B,Xȯ<58>b<><62>CG<43><16>'<27>X:<3A><>AT<41>qG`\n<EFBFBD><EFBFBD>sn<EFBFBD><EFBFBD>Il<EFBFBD>-<2D><>><3E><0C><><EFBFBD>]V<><1D><><0C><03><>n<18>et<65>p<EFBFBD>Ak&A<><41>a+ڧ<>J<EFBFBD><4A>L<EFBFBD><4C>%l_!<1D>ڥ<EFBFBD><DAA5>V<EFBFBD>(=<3D><>TM<>ب<><D8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n:<04>N<EFBFBD>ĘkIA<49><41><01>\0<EFBFBD><01>bbؗ<62>o<EFBFBD>Ԫ:<3A>l<EFBFBD>F/ʽT<CABD>Cwx7<78>ut<75><1C><><EFBFBD>\r^<5E><>s<EFBFBD><73><EFBFBD>-[<5B><><EFBFBD><EFBFBD>A<EFBFBD><41>.mj=XT<58><18><><EFBFBD><EFBFBD>R<EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD>0Y<1F><> \"O<EFBFBD>A<EFBFBD><EFBFBD>bLd<EFBFBD>ABx?<3F>#SO<53><4F><EFBFBD>!<21>t<EFBFBD><74><EFBFBD><0F>S<EFBFBD>ȅ<EFBFBD><C885>4<EFBFBD> <09> `<60>F_<46><5F>K~<7E><>n<EFBFBD>x<EFBFBD><78><EFBFBD>\0<EFBFBD><EFBFBD>:<3A>yN<79>\r%<25>RgÉ<67><C389>&D<><44><EFBFBD><EFBFBD>y<EFBFBD><03>Ʊw<14><><EFBFBD>Gae<>C<EFBFBD><43>D/Fa<46><61><14>h*<2A><><EFBFBD>\0rG<>e}<7D><><EFBFBD>f<><66> m<><6D><EFBFBD>At<06>I<EFBFBD><49>g<17><><EFBFBD>R/Fv<46>Z<EFBFBD>\\PLH<4C>@~c:W-7ÿ<37>mK<6D><4B><EFBFBD>&<26>8-,h<><68> <20><>f<EFBFBD><66>-?{I8r<18>')<29><07><><EFBFBD>r<>M<EFBFBD>2Jp\r`<1C><15>_z<5F><7A><EFBFBD><EFBFBD><EFBFBD>j8ԪT<>F<EFBFBD>{<EFBFBD>\r <20><>\$V<EFBFBD>A\n<EFBFBD>=<3D>?[\r<EFBFBD>JH<12><>mG<6D><47><EFBFBD>L湝<4C><E6B99D><EFBFBD>5~\r<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>d<EFBFBD>2u7)<29>s7<73>s<02><>%<25><><EFBFBD>-<11>\"<EFBFBD><04><><EFBFBD><EFBFBD><EFBFBD>Ғ;h<><68> P<><50><EFBFBD>N<EFBFBD>B\$<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1&<26>b<EFBFBD>z|<7C><19>BxI<78>+<2B>tL<74>Zs:<3A>z+<2B>{<EFBFBD>{n<EFBFBD>^<5E>\0h%<25>ۯW~\nz@<40>\"<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD>7p\"g;<3B>3^<5E><><EFBFBD>sz<73><7A>-0,<2C>Y<EFBFBD>|<7C><0B>oA<>3<EFBFBD>H<EFBFBD>.{#xF^mt<6D><74>N#<23>ȗiݞʶYs<59>n'{<EFBFBD>w=<3D>Ƃ<EFBFBD>Ų,<2C><>mS<6D><53><EFBFBD><EFBFBD><EFBFBD>H;(<28><>@=W<>i=<<3C><13><17><>{<EFBFBD>'ӑ<>\"<EFBFBD><EFBFBD><EFBFBD>x`<60><><EFBFBD><EFBFBD>|(<28>1΄<31><0<0C><>a<EFBFBD>c<EFBFBD>ȩ<11>#<23><><EFBFBD>u<EFBFBD><75><EFBFBD>ū<EFBFBD><C5AB>[<5B><><EFBFBD><EFBFBD><EFBFBD>q{P<><50>qx<71>i<69>;<0F>3H\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?\0<EFBFBD><EFBFBD>[<5B>t<EFBFBD>>Qf^<5E><>M<><4D>q<EFBFBD><71><EFBFBD><EFBFBD><EFBFBD>텕<EFBFBD><ED8595>pn6<6E><36>/k<>F<EFBFBD>.\\<EFBFBD><EFBFBD>%zt<1E>\$6<EFBFBD>݇<EFBFBD>Q<EFBFBD>U<>1lR<6C><52>^lju;*dpF<70><46><EFBFBD><EFBFBD><EFBFBD> 4B8<42><38><EFBFBD> ^<5E><>z}<7D><>\n<16><11>5<><35>(<28><><EFBFBD>{<EFBFBD><EFBFBD>ǩ,<2C><><EFBFBD><1E><>2<EFBFBD>g\n<EFBFBD><EFBFBD>ګ<1C>G}<7D>3Ӱ<0C><><EFBFBD><EFBFBD>=<3D>\n4<EFBFBD><EFBFBD>@R6<><36>>Ǭu̡V=<3D><>(<28><><EFBFBD>`<1F><>zx<7A>8*Q<>)Oj#<23><14><13> M%<25>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD>:<3A>ZA<>D|<7C><>1<EFBFBD>b+<2B><>\\Uu\0<18><><EFBFBD><EFBFBD><EFBFBD><7F>\0q\r<1F><>h(<08><>t<EFBFBD><74><06><>V?C<><43>\\<11>^<>I<EFBFBD><49><1F><><12><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@e<>:0!k<>3.є<11><>[<5B><><EFBFBD><EFBFBD><1A><>L<EFBFBD>J<13>8<EFBFBD>n<14><><EFBFBD>S<EFBFBD><53><EFBFBD><EFBFBD>`F<>m3<14><>FH<46><48>ac<61>:<3A>{<EFBFBD><16><>;<3B><><EFBFBD><EFBFBD>n<14>6\"<EFBFBD><EFBFBD>!c<>)<04><>A*<<3C>|<7C><><EFBFBD>;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0<EFBFBD><EFBFBD>a}<7D><EFBFBD><DEB9>Kx<4B><02>]<5D>Ō<EFBFBD><C58C>15(܃<><DC83>Oj<18><12> <20><>Df<44><66><EFBFBD><11>!<21><>ЏvB%(<28><><EFBFBD>>,\$<EFBFBD><10><>B<EFBFBD>\0##] HT<1A><><EFBFBD>d<><64>&\nXM@<40><>2t<32>\\<13><>E<EFBFBD><45>!<21><1F><><EFBFBD>^8ħѶ<C4A7>7<EFBFBD>#<23><><EFBFBD><EFBFBD>a<EFBFBD><61>S 0<>7E<37>XB<58><42>.<2E><>\0M<EFBFBD><EFBFBD>H<EFBFBD>F/ZO`;ʝT<CA9D><54>?A<>Gtv<74><76>(<1C><><EFBFBD>r6ǚu<C79A><75><EFBFBD>8<02>(<28>Oj><04><>5 r<<3C><><EFBFBD><EFBFBD><04>ӂH@Qy\"<EFBFBD><EFBFBD><EFBFBD>FgyIO<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6nEa<45><61><15>3\\<EFBFBD><EFBFBD>k<EFBFBD>\\<EFBFBD><EFBFBD><EFBFBD>Zi<14><><EFBFBD><15><>#x<><X<><58>w<EFBFBD><77>b<EFBFBD>C9<43>p3#ʻ<>7'<27>|b<>!wZ<7F><5A><EFBFBD>Ҫ7<D2AA><37><EFBFBD>Ik<49>&<26><><EFBFBD><EFBFBD>/<2F>J<EFBFBD><4A><EFBFBD>U*gUb2ISZ`\0 .*i0<><30><EFBFBD>C<EFBFBD><43>{,<2C><>K?<3F>H<><48><03><06><><EFBFBD>4<EFBFBD>tIUC#E<>Z<EFBFBD>2^<5E>edk <09>T<EFBFBD>#iUJ<17>{<EFBFBD>7<EFBFBD>I!jC<6A><43><EFBFBD>S<EFBFBD>'<27>V<EFBFBD><<3C>v?<3F>~<7E><><EFBFBD>⫡<0E>ڤ<EFBFBD><DAA4>ŀ<EFBFBD><C580><EFBFBD>G<EFBFBD><47><EFBFBD>i0<16><>x%؇<><D887>K<EFBFBD>`_hr<68>g<EFBFBD><67>D!nH<6E><48>\$<0B><><EFBFBD><EFBFBD>EW<45><57>>Ip<49>P<0E>?<3F><>ː@<40> L<>WBEU<45>I5<49>buZ(U<>RO<52><4F>+%VO\$<EFBFBD>\"Ha<EFBFBD>ej¤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<>`a`s\0<EFBFBD><EFBFBD>PW<EFBFBD>\$<EFBFBD>bP6I*<2A>S\\<EFBFBD>+&<26><><EFBFBD>5tr0)#F<>A<EFBFBD>&[*<2A>mW<10>y\$<0C><><EFBFBD>ے<EFBFBD><DB92><EFBFBD>Ka<4B><61><EFBFBD><EFBFBD>XQ<05>c<EFBFBD>&\"\$Y<14><>-<0F>d<EFBFBD>?CVB<56><42>Id<49>BRa<52>䌈v<E48C88><76>}&Ki<4B><69>`<60><>_?gG#=<3D>D<12>g<EFBFBD><67>W<EFBFBD>A*\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><14>}<7D><>I<EFBFBD>0<EFBFBD>'<<3C>ɉ<1B>6<EFBFBD>s<EFBFBD><73><EFBFBD><EFBFBD>bAq<>l<10>'<27>R\0'11,<2C>z<0F>5UO<55><4F><EFBFBD><EFBFBD><EFBFBD>.j<>V<07>B<><42>a <09>Ԃ<EFBFBD>OĚ;fJ`a`<60>3h<33><68><EFBFBD>y<EFBFBD>&<26>C씀<43>5\0'\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ή<>_:<3A><>}<02><>Ro<52><6F><EFBFBD><18><><EFBFBD>A<41><7F><EFBFBD><EFBFBD><0B><><EFBFBD><EFBFBD>^<5E>'Q~\\<EFBFBD>i<,hױ<68><D7B1>]<5D><03><>R<><52><10>Ӕ<0C>d<EFBFBD><64>@K4Fh<46>:\n/M<><4D><EFBFBD><EFBFBD>x4<><34><EFBFBD><EFBFBD>W<EFBFBD>ׂ|<7C>}<7D>;<04>K싙<4B><EC8B99>Yg<59>%<25><>2<EFBFBD><32><EFBFBD><EFBFBD>@)3fb<66><62>P<EFBFBD>2FeEٿ<45><D9BF>g<EFBFBD><67>IvK5<>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD>μ<EFBFBD>3<>|<7C>h <20><><EFBFBD>T<EFBFBD>Q<05>&?<3F><><EFBFBD><EFBFBD>1Jg<4A><1F><><EFBFBD>=<3D><><EFBFBD><10><>0<EFBFBD>g<EFBFBD>U<EFBFBD><55>#?<3F>|<7C><0F><><EFBFBD>*<2A><>x<EFBFBD>Q3<51>mpf<70><66><EFBFBD>b4M<34>><3E>ւpWI<57>4*<2A><><EFBFBD><EFBFBD>CA<43><41><0F>0<EFBFBD><30>(<28><><EFBFBD><EFBFBD>,<2C><>,<2C>/\$˔<EFBFBD>P<EFBFBD><EFBFBD><EFBFBD>F<16>eX<>4b4M|<7C>l<EFBFBD><6C><08><><EFBFBD>??cF<01><>sG<73>m<EFBFBD>%W<><13><>R<EFBFBD>*Kf<><66>'\$ׇ<EFBFBD>i<EFBFBD>ɉ<EFBFBD>\\ (<0F>W<EFBFBD>/ <09><>j <09><>!<21>F<EFBFBD><46><1A><>\n+L<>1<EFBFBD><31>A(<28>͡ц5vf<>`8z9A<39>̈́<EFBFBD>YH<>yi<79>Ӥ<EFBFBD>J<EFBFBD>\"<EFBFBD><EFBFBD> Q!<21><>Y<><59>TD<54><44>r<EFBFBD>0@?t<><74><13>Bvm= <09><>h<EFBFBD><68>S<EFBFBD>T@36m,\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD>l<EFBFBD><6C><EFBFBD><EFBFBD><EFBFBD>+8L<38>##<23>W\n8 [XxR<08><>A<EFBFBD><41><EFBFBD><EFBFBD>H<>l<><6C><EFBFBD><EFBFBD><EFBFBD>`Jې<13>V <20>DR<44><52><EFBFBD><06>2<EFBFBD>+,:<06>n!ף<>k<04>'ۓ<><DB93><EFBFBD>P<EFBFBD><50>E9r<39>%<25><15>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EuL<75><4C><EFBFBD> 4<>7e<37>\\<EFBFBD><EFBFBD><EFBFBD>H<EFBFBD>u5<EFBFBD>9{؉ֈtG<74>{<0E>ٰ(<08>IY<49><59><EFBFBD>Ha98<39>w<EFBFBD>e:<14><0C>TZ3zS<7A>t<EFBFBD><74><EFBFBD>K<EFBFBD>r<>_-STW<54><57>b{A<EFBFBD>;CI<19>7<EFBFBD><37>711<31>D<02><18><><EFBFBD><EFBFBD>r<EFBFBD><07><> <09><>><05><>59<35><03><><EFBFBD><EFBFBD>cD<63><44><EFBFBD>w<EFBFBD>fFLH<4C>Ӄ <09><<3C>\$N8<EFBFBD>I<EFBFBD><EFBFBD>b<EFBFBD><EFBFBD> <09><><EFBFBD>l~V&YLcpH<11>S3)@<40>2<EFBFBD><15><>A).R㊾<52>yH<79><48><EFBFBD><EFBFBD><EFBFBD>gګ&<26>\$<1F>\\<EFBFBD><EFBFBD><EFBFBD>[<5B>[<5B><>N<EFBFBD><15>6<EFBFBD><07><>6><3E><>H<EFBFBD><48>!<21><>KN<4B>P3<1B><>\r<EFBFBD>䟥>7<><37><EFBFBD>A<EFBFBD><41>d<EFBFBD>:<3A>&<26>Z<EFBFBD>%7k<16>(<28>װM<D7B0><1F>˚[trp.I<19><>Q<EFBFBD><51><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Y<>(<28>_<0E>&5#<23>d<EFBFBD>)<1C><>)m<><6D><EFBFBD><EFBFBD>H,<2C><><EFBFBD>r?dlH<6C>(<28>r]<5D><14>X`<0B>!@B<>\$\\|<7C><><EFBFBD>Ke<10><0C>\0<EFBFBD>\0I<EFBFBD><EFBFBD><EFBFBD><EFBFBD>h<EFBFBD>Lk<><08>xh&<26><><EFBFBD><1B>9<EFBFBD>1\0p\0<EFBFBD><01>U<>r<EFBFBD>@<1B>8\0j\0<EFBFBD><01><>9{<EFBFBD>\0<19>7!\0<EFBFBD>fĽ<EFBFBD> \r@\0006<EFBFBD><EFBFBD>\0<EFBFBD><01><><EFBFBD><06><><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><35>/<2F>_@<03><06><><EFBFBD><EFBFBD>3<EFBFBD><33>0<01>I<>R<EFBFBD><52><EFBFBD><EFBFBD> <09>/<2F>`<1C><>}`<0C><>K<EFBFBD>6\0<EFBFBD><01><><EFBFBD> <0C><><EFBFBD><EFBFBD>\0q/<2F><01><><EFBFBD>|<7C>\r<EFBFBD>\0000<EFBFBD><EFBFBD>0J^<5E> <06><><EFBFBD>L <20><>0<EFBFBD>_\0i<><69><EFBFBD>%<25><>\0g/<2F>_<EFBFBD><5F>SaS<05><1B>\n<EFBFBD><EFBFBD>T<EFBFBD><01><>9<EFBFBD><39>&<08>4<EFBFBD><34>\0<EFBFBD><01><>I~<7E><>\0<1C>,<2C><>/<2F><01><03><>&!L5<4C><35>\0<EFBFBD>b<EFBFBD><EFBFBD>)<29><>\r<EFBFBD><EFBFBD><02>L<EFBFBD>\0<EFBFBD><01><>i~<7E>%<25><><19><><01><01>p<06><01><19>_<EFBFBD><5F>1Fc4<63>i<EFBFBD><69><EFBFBD>fKޘ<4B>\0<EFBFBD>b<EFBFBD><EFBFBD>)<29><>f\0000\0b\0<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD>2<>&*<2A><13><>0<EFBFBD><01><>ً3<1C>\0005<EFBFBD>0<>aP <09>2<EFBFBD>fL&\$1h<01><>I<EFBFBD><49><EFBFBD><EFBFBD>\0005<EFBFBD>0~`4<>Y{<EFBFBD>\r<EFBFBD>QK<EFBFBD><EFBFBD>o/<2F>c<EFBFBD><63>9<EFBFBD>S&<13>F<EFBFBD><46>0<EFBFBD>_<EFBFBD><5F>@`\r <\0c<EFBFBD><EFBFBD>\0<EFBFBD>a\$Ǔ<EFBFBD>S-<2D>L|<7C><>0<EFBFBD>e<EFBFBD> <09>_Kޘ<4B>0~`<60><>)<29>3fV<66>}\0b\0<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD><EFBFBD>S&K<>r<EFBFBD><72>2f_<66>©|2<>Lu<4C><75>1`d<>ٓ<EFBFBD>0<EFBFBD>L<<3C><>/<2F>_l<5F>~<7E>@L<><4C><EFBFBD><04>c<EFBFBD><63>ɐ`\rfh<EFBFBD>b\0j<04>a<0C>Y<EFBFBD><07>o\0004<EFBFBD>3_<>ę<EFBFBD>3\r@<1C>4<EFBFBD>=0jbL<62><4C><EFBFBD><EFBFBD>5fJ\0004<EFBFBD><EFBFBD>36^<5E><><EFBFBD><EFBFBD><EFBFBD>@<40>g<EFBFBD>&<26>90Za<5A>ɹ<EFBFBD><12><>X<EFBFBD>5<EFBFBD><35>/<2F>h(i<>s%@LŘ/<2F>g\\<EFBFBD>i<EFBFBD>s\rf\$M(<28><>4Nd\\<EFBFBD>I\r<EFBFBD>&p<>Q<EFBFBD><51>\0<EFBFBD>`<60><>I<EFBFBD><49>\"f<EFBFBD>KޘU0<EFBFBD>hĿ<EFBFBD><EFBFBD>D<>\0004<EFBFBD>q0\"bҹ}s &<26>\0002\0i/za<7A><61>)<29><>%&\nL<EFBFBD><EFBFBD><EFBFBD>3^jt<6A><74>aS&<26>̙<EFBFBD>5*cT<63>顓\r@<40><><EFBFBD><EFBFBD>4\0<EFBFBD>f<EFBFBD>ɐSV<53>5<EFBFBD>><3E><>\0<EFBFBD>jT<EFBFBD> <09>:<3A>jL\0g4jf<1C>Y<59><7F>&<26>L?<3F>5<>a,<2C> 3!<21>9L<39><4C>3fa<66>Ѡ3?<3F><>K<EFBFBD><4B><EFBFBD>0_D<5F>T<EFBFBD><54>f<><66><EFBFBD><EFBFBD><EFBFBD>2kܿI<DCBF>3A%<25>K0<EF99A5><01><>9|<7C> f<>L<EFBFBD><4C>y0:j<><6A>9<EFBFBD><39>:&<26>L<EFBFBD>\0c3<EFBFBD>ll<EFBFBD>i<EFBFBD><EFBFBD>g<EFBFBD>8M <20><>5<EFBFBD>c<EFBFBD><63>y<EFBFBD><79>.<2E><>̝<EFBFBD><CC9D>2fg<1C>Y<EFBFBD>S\"f{<EFBFBD>\0<EFBFBD><EFBFBD>3<EFBFBD>ht<EFBFBD>@7<>y͢<79><CDA2>0njT<6A>)<29><><16>rL<72>L<EFBFBD>l(<01>k <09><>\0<EFBFBD>\$<EFBFBD>q<EFBFBD><EFBFBD>5<EFBFBD>f<14>)<29>%<25>ͼ<EFBFBD>5<>X\\<EFBFBD>i<EFBFBD>sS&<26>M4<4D><34>6b<1C>飳rf<72>͆<EFBFBD>A1\"i<EFBFBD>й<EFBFBD><EFBFBD>[f0L<1A><<3C><><14>I<EFBFBD>sX&<12>0<EFBFBD><30>/<2F>k<EFBFBD>ɉ<EFBFBD><C989>~<7E>L͋<4C>10<31>c8<03><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2J`D<>Y<EFBFBD><59>AJ<41><4A>\0<EFBFBD><EFBFBD>1<EFBFBD>iԿ<EFBFBD>3+f<>M%<25><>1<EFBFBD>n\\<EFBFBD><EFBFBD><EFBFBD>Sf<>M<EFBFBD><4D>+4<>j|<7C>i<EFBFBD><1B><>L<4C>5jbd<62>I<EFBFBD>Sfn<66>S5<53>0<EFBFBD><<3C><>Y<EFBFBD><59><1F>Q%<25>W6<57>i<EFBFBD><EFBFBD>3v<33><76>L<EFBFBD><4C>8Jh<4A><68>)<29>sGH<47>N\0<EFBFBD><EFBFBD>0Bi<EFBFBD><EFBFBD><EFBFBD><EFBFBD>P<>'L(<28><>16m<36><6D>Ub<13>ͅLq<4C><71>0<EFBFBD>j<EFBFBD><6A>9<EFBFBD>@f5MQ<4D><51>2Bd<04>Y<EFBFBD>s<EFBFBD><73>tLH<4C>q5<71>l<<3C> <09><>P<EFBFBD><50>K<EFBFBD><4B>g0nr<6E><72>i@&<26><><EFBFBD><EFBFBD>Zk<5A>s\\Ɣ<EFBFBD><EFBFBD><03>E<EFBFBD>J<EFBFBD><4A>3<EFBFBD>r<EFBFBD>Ʃ<EFBFBD>R<EFBFBD><52>F<EFBFBD>r<EFBFBD><72>5<EFBFBD>p<EFBFBD>Ʃ<EFBFBD>S\0%<25><>f<EFBFBD>w3<77>cl<63>9<EFBFBD>ӄ&kL<6B><4C>=1<>a<EFBFBD><61>)<29><>t<EFBFBD>=N<><4E>M3`ѩ<>gΓ<><CE93>9\nd<04>y<EFBFBD><79>A<EFBFBD><41><EFBFBD>{<EFBFBD><EFBFBD>0pL<70>Y<EFBFBD><59>(<28><>NQ<4E>M7<4D>p<EFBFBD><70>9<EFBFBD><39>l<EFBFBD>\0<EFBFBD>ʛ2\"k<0C><><EFBFBD>3:&<26>N:<3A>o4zv<7A><76>937<33>4Mq<4D>%:Nhtۃ_<DB83>\n<EFBFBD><EFBFBD>́<EFBFBD><EFBFBD>2Js<EFBFBD><EFBFBD>I<EFBFBD><13>&<26>M<19><>5\nl,<2C>9<EFBFBD><39>'BM;<3B><>8Nw|<7C>y<EFBFBD>3<EFBFBD>&L<><4C><EFBFBD>2fs\\<EFBFBD>9<EFBFBD>-f<10>k<EFBFBD>0<>a<EFBFBD><61> <09><><EFBFBD><EFBFBD>e<EFBFBD>m<EFBFBD>W/<2F>nt<6E><74><EFBFBD>3<EFBFBD>f<EFBFBD>N<EFBFBD><4E><EFBFBD>3<EFBFBD>l\\<EFBFBD>)<29>s<EFBFBD>'/6<><36><EFBFBD>/<2F>r<14>y<EFBFBD>S <09>.ο<>-7ot<6F><74><EFBFBD><EFBFBD>g'<27>8<EFBFBD>;5X<35><58>)<29>S<>5Β<35><CE92>0<EFBFBD>eDӉ<44>svg<76><67>\n<EFBFBD><EFBFBD>0Z`<60><>9<EFBFBD><39><EFBFBD>g<EFBFBD>M<EFBFBD><4D> 0<>j4<6A>)<29>s*<2A>=N\r<EFBFBD>s2vw<EFBFBD><EFBFBD><EFBFBD>ѓN<EFBFBD><12>%<25>=;nj<6E><6A>9<EFBFBD><39>5<EFBFBD>2<EFBFBD><32><EFBFBD>7ud<75>٭<13><><12>L<EFBFBD><4C>=\"o<EFBFBD><EFBFBD>9<EFBFBD>s<EFBFBD>&D=<3D><>/<2F>c<EFBFBD><63>y<EFBFBD><12><><1B><>:33fd<66>ݹ<EFBFBD>Ӽ<EFBFBD><D3BC>O\n<EFBFBD><EFBFBD>7{T<EFBFBD>i<EFBFBD>S<05>IM#<23><>6<EFBFBD>`<60><>YƳ+<2B><>O#<23><>9ȩ<39><C8A9> <09>f&<26>M<1E>\0<04>k<EFBFBD><6B>Y{<EFBFBD><<3C><>MM<4D>%5jx,<2C><>8Ӂ<38>A<EFBFBD>d<EFBFBD><64><<3C>d<EFBFBD><64><EFBFBD><EFBFBD><EFBFBD>H<EFBFBD><48>O<EFBFBD><4F><EFBFBD><<3C>z|<7C> <09><> '<27>M<11><>9<EFBFBD>m<0C>Y<EFBFBD>3e&?O<11>}3<>g<EFBFBD><67><EFBFBD><EFBFBD>S&<26><>3<EFBFBD><33>/<2F>o<EFBFBD><6F><19><>\$<EFBFBD><EFBFBD><EFBFBD><1E><>><3E>d<14>I<EFBFBD>k<>e;<65>+>ReqS<71><53> <20>\$N<1B><><Fp<46><70>Y<EFBFBD>2<EFBFBD><32>O<EFBFBD>X`<01>x,<2C><><EFBFBD><EFBFBD><EFBFBD>']<5D>\0<EFBFBD><EFBFBD>26k<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϋ><3E>:<3A>p<EFBFBD><70><19>3<EFBFBD>f<EFBFBD>Nƚ<4E>7<EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD>r<EFBFBD><72><EFBFBD>M<EFBFBD><4D><EFBFBD>2bf<62><66> <09>3H<33>hL<68><4C><EFBFBD>/<2F>t<EFBFBD><74>|<7C><><EFBFBD>l<EFBFBD>̚<EFBFBD>:h\$<EFBFBD>Y<EFBFBD>=<3D><>N\n<EFBFBD>C=>q<><71><EFBFBD><EFBFBD><13>&0<><30>L<EFBFBD><4C><EFBFBD>a<EFBFBD><61> <09><13><>V<EFBFBD>!<21>]3<>k<EFBFBD><6B><19>SR(<02>^<5E><>2.n<><6E>:sx<73>@M<><4D>1@>lt<6C>Y<EFBFBD>s<EFBFBD>f̀<><CC80>6<16><><EFBFBD>ɨ\"%<25>L<EFBFBD><1B>3vaU<03><04><13>LH<4C>G4<47>pt<70> <09><13>&zM<7A>I@<40>x<EFBFBD><78>Y<EFBFBD>s<EFBFBD><73>rϩ<72><CFA9>1Bn4<6E>ɕg}Mٙ<4D>4.}<04>٦<EFBFBD>Q<EFBFBD><51>K<EFBFBD><4B><EFBFBD>=6z\$<EFBFBD>I<EFBFBD>3<EFBFBD>f<02>G<EFBFBD>Gkə<><C999><EFBFBD>fxMt<4D><74>0ց<30><D681>Y<EFBFBD><59>[&\rϸ<EFBFBD>!0>m<0C><>f-M\"<EFBFBD>2<>h<EFBFBD><68><EFBFBD><EFBFBD>S<EFBFBD>&<26><>Ι+9N{m9<>2<EFBFBD>&<26>OJ<4F><4A>><3E><><EFBFBD><EFBFBD>鲓<EFBFBD>'ROb<4F>E<<3C>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD><18>fN<1F>g<h4<68><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С7=s<><73><EFBFBD>3<7F><33>J̒<4A><CC92>2<EFBFBD><32><EFBFBD><EFBFBD>ɱ<13><>9L<4C>'?r<><72>ǩ<EFBFBD><C7A9>v<EFBFBD><76><EFBFBD><EFBFBD><EFBFBD>@vg|<7C><><EFBFBD><EFBFBD>+<2B>9<EFBFBD>s<EFBFBD><73>Afzl<7A> <09><>&<26>Lj<4C><6A>::<3A><14>Zөh\n@<40>F<EFBFBD> <20>^T<><16>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD>]<5D><>ՑEP<45>K<EFBFBD>ٜ<EFBFBD><D99C>e<EFBFBD><65><EFBFBD>N#\n<EFBFBD>]@Y30<33>cnM٢<4D><D9A2>`<60><><EFBFBD>h<EFBFBD>2)hf<68>9<EFBFBD>=F<15><>I<EFBFBD><49><EFBFBD>^<5E><><EFBFBD><10>XP?<3F>i<EFBFBD>Ģ8<C4A2>N\rK<19><1D>xY<78>3<08><><EFBFBD>a<EFBFBD><61><EFBFBD>(I<>Q<EFBFBD><51>3na<6E><61>Q<EFBFBD><51><14>7,B<>)+<2B>N<EFBFBD><1E><><1B>&<26><><EFBFBD>bBQ<06> <0E>ȸ<><C8B8><EFBFBD><EFBFBD><EFBFBD>\r^<5E>ɞN#<07>ORj<52>-\n<EFBFBD><EFBFBD><EFBFBD><02><><19>( <0F><><EFBFBD>j<0F>ɚ\n<02><>w<EFBFBD>V<EFBFBD><56>QaDi<44><69><15>8<EFBFBD><14>,<2C><>'<<3C> +A<>3K<33>貇<EFBFBD>_`<0E>KA<4B>%l<>(<28><>L<EFBFBD><4C><EFBFBD><EFBFBD>N;<0C>'(<28>(<28><>v^<12>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><04>%F<><46><EFBFBD>+Ū<>\0@#(<28><>w`)<>~U<>l(<28><>K<02>9<EFBFBD><39>ȁ<EFBFBD><C881>da<0E>y_<79>u<>kq2<71><32>لI<D984><49>*M1<4D><31>0<EFBFBD>F<EFBFBD><08>I<>_<EFBFBD> <09>ҧx0<78>c<EFBFBD>}3_<>FĭL\r<EFBFBD>+<2B>H<EFBFBD>ѱ\0<EFBFBD><EFBFBD> <09>B<EFBFBD><42>J<EFBFBD>p<EFBFBD>m<EFBFBD><6D><0F>MT<4D><54>Tr!<08><>\0<EFBFBD>G&E<1B>[<5B>֠<EFBFBD><07><>m!<21><><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>Rq<52><71>,P<><13><>NH<4E><48>/<06><>D<EFBFBD>Q<EFBFBD>^x6<78>E<EFBFBD><45><EFBFBD>Y\n<EFBFBD>Ԛ%V&<26><>Xp5<70><06>ϔ<1A>#v<>Bڙ\$\\\0P&<26>C]<5D> <>#2<><32><EFBFBD>G<EFBFBD><47><EFBFBD>4\n9K<EFBFBD><05><>;j<>,<01><>:@<40>|Y<><59>S`O<>|<7C><>Pk@إ2<D8A5><32>8<EFBFBD><38>\\<EFBFBD><EFBFBD>4<EFBFBD>|<7C>^Q#e&<26>\$<>2<EFBFBD>0״<30><D7B4><EFBFBD>>ʉ<>3.<2E>w<EFBFBD><10>x3\0P<EFBFBD>-<2D><><14><>JJ<4A><4A><EFBFBD><EFBFBD>H<EFBFBD><48>iv<69><1B> <20><><EFBFBD>65lZ4<5A>)<29>C0&Y.<2E>!<21><><EFBFBD>IBe9<65>KFE<46><45>(<28>Q'IM<49><4D><EFBFBD>-<2D>Y<EFBFBD><59>Qq<51>ѱ<D1B1>0<EFBFBD><30><EFBFBD>}<7D>D<EFBFBD><44>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\nF<EFBFBD><EFBFBD>eY]<01>c<16><><EFBFBD>K3%<25><14>i/Rq`<60>F<EFBFBD>+\n12<EFBFBD>9<EFBFBD><EFBFBD><EFBFBD>u<EFBFBD><EFBFBD>NxL<EFBFBD> x?dݩ8<DDA9><38>d<EFBFBD>'&<06>F<>=iC<69><43>d<EFBFBD><0B><><EFBFBD><14>Q<EFBFBD>X<1F><>h<EFBFBD><68><EFBFBD>b<EFBFBD>\\<07>d<EFBFBD>M<EFBFBD><4D>d<EFBFBD><64><EFBFBD>?<3F><>t<p.<2E>L<EFBFBD>;<3B>j<EFBFBD>ɖ<EFBFBD><12>5#d<>m<EFBFBD><6D>/f6H5<48>E<14><><EFBFBD><EFBFBD>(<28>D)<29><><EFBFBD><EFBFBD>F<EFBFBD><46>ʐ<19><><0C><><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD>cA<63><15>d(ΩF<CEA9>,VR,<2C>:<3A>7\n<EFBFBD>%<25>5<>\n<EFBFBD>w\0<EFBFBD>ʚ<EFBFBD><EFBFBD>ϝ}(<02><>l<EFBFBD><6C>VVED<45>c<07><><EFBFBD>gWƨqTp<54>Տs(+Ph<50>ѕ<7F><D195>@<40><><10><>̾K<><4B><EFBFBD> (j<><6A>@t<><74><EFBFBD>Qf<51><66>I<EFBFBD>N<EFBFBD><17>5!<21><><EFBFBD>@<40>^пf<D0BF><66>v<><76><EFBFBD>iwAV^<5E><>E<EFBFBD><45><15>鴀h<E9B480><68> c<>К!><3E> <19><>p^<5E><1F><><EFBFBD>?Zb<5A>kiuAN<41>H<EFBFBD>m<EFBFBD><6D>F<>@<10><><EFBFBD>D_hÞ<68>8fw<66><77>i2<><32><EFBFBD>L<EFBFBD>x9<><39><EFBFBD>ŗ<EFBFBD>QY<51>^Ʋ%\"B<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\0V<EFBFBD>Mv<EFBFBD>V<05>Ř!<21><>c` <1A>U3<55> <20><>ɪ<EFBFBD><C9AA>`<60>M2<4D><32><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD>SXbM<11><><EFBFBD><EFBFBD>9˺XZ/<2F><>,<2C>\n<EFBFBD><EFBFBD>4ZO<EFBFBD>{)+R<><52><EFBFBD><EFBFBD>a<EFBFBD>CH2tŚ<74><C59A><EFBFBD><EFBFBD>gH<67><48>Sƾ<><C6BE> <20><><EFBFBD><EFBFBD>K<01>kHb̫<62><CCAB><EFBFBD>Re<52><65><EFBFBD><EFBFBD>5ZOlhW<68>Ʀ,<2C><><EFBFBD>}u<>l<EFBFBD><6C>`<60>x<EFBFBD><78>N<18>M0<4D>0^il<69>Z<EFBFBD><5A>LZ<4C><5A><0B>s<EFBFBD><73>i<EFBFBD>4;aN<><4E><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F>)<29>S`<60><>N)}<7D>8f<38>Բ?Ӟ<><D39E>K<EFBFBD>\n<EFBFBD>3x0Y <09>2<EFBFBD>k<EFBFBD>N<19><>1f<31>+<2B><><EFBFBD>Ss<53><0C>Θ<EFBFBD><CE98><EFBFBD>pԤ`<60>1g<>LY7<><37><EFBFBD>6<EFBFBD>œf<C593><66><06><>a8<61>D<EFBFBD>o<EFBFBD><6F><EFBFBD><EFBFBD>'Kɯ*{l<EFBFBD>U<11><><EFBFBD><EFBFBD>O<EFBFBD>E;z-<14>i+<2B><><EFBFBD>J\n<EFBFBD>#<0B>}t<>)<29>A<EFBFBD>hzOJ<4F>c(4<><34>i<EFBFBD>S<EFBFBD>co<02>v<EFBFBD>1Z~<7E><><03><>F<><46>v<EFBFBD><76>%<25>c<EFBFBD>鐇<><E99087><EFBFBD>\0<EFBFBD><EFBFBD>%@<40>f0S<30>*<2A>)<29>T<EFBFBD><54><EFBFBD>7<>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD><05>kL\re3<EFBFBD>s<EFBFBD>鞲t<E99EB2>H<EFBFBD>b<EFBFBD>,<2C>e<EFBFBD>oj<01>)<29><><EFBFBD>f<EFBFBD>U=x6<78><36>i<EFBFBD><69>Od^<5E>Ҡ}CJkL<6B><4C><EFBFBD><EFBFBD>-b<>Mf<4D>S\"<EFBFBD>k<EFBFBD><0F><><EFBFBD>_<EFBFBD>5֚<>DF4<46><34>)<29><><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F>D<>F[<5B>S<>_<EFBFBD>֛<>):n<><6E><EFBFBD><EFBFBD><EFBFBD>Y<EFBFBD><59>O<EFBFBD><4F><EFBFBD>G<EFBFBD>!<21>g<EFBFBD><67>ӄ<EFBFBD><D384>Oq<4F><71>,<2C>L<><4C>ű<EFBFBD><C5B1>U<><55>U92<><32><EFBFBD><EFBFBD>Ӕ<EFBFBD>O<><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>ӟ<><D39F>N<EFBFBD><4E>=ARui<>S(<28>R<1F><>]B<><42>T<EFBFBD>)<29>Tg<54>)C<><43>H<>X<EFBFBD><58>)d<><EFBFBD><7F>P(]<11>9@i<><69>e<EFBFBD>O<06>U<:<3A><>(j+A<><41><EFBFBD>Q*<2A>UEz{<EFBFBD><EFBFBD>SR<><52>M=<10>,\\)<29>B<04><><06><>/D̹<44>lԸ`YO<59><4F>t!ztT<74>h<EFBFBD>S<EFBFBD><53>3O<33>v<EFBFBD>!<21>gZ4S.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~M)<29>Tτ9D\"<EFBFBD><EFBFBD>L(C<>\0(<28>/G^b<62><C286>@jcUi<>1<EFBFBD><31>AH<02>Mf+<0C><>mT<6D><54>Þ<>E2<45><32>4<EFBFBD>i<EFBFBD>A<0B>9LȮ\r3J=TF<54><46><EFBFBD>%&<26>S<EFBFBD><53><EFBFBD>B<EFBFBD><42>5=jp/d<><64>P<EFBFBD>><3E>C<EFBFBD><43><EFBFBD><EFBFBD>*SV<53>{S<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD><EFBFBD>j!<15><>T<1A>5 x 5j<>TKb<4B>T^<5E>}Lz@p@i<>TT]<5D>QZ\rEꈴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD><EFBFBD>*<2A>5<18><>U-aQ<><51><EFBFBD>F<EFBFBD>q5*:0\nh=Q¨<51>G&z<>9<EFBFBD>z<EFBFBD><7A>&<26><>\" 8r,9<><39>07<30>sN^<5E>\rG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><1D>R<19><><1A><>><3E>AT<41><54>1O<31><4F><EFBFBD>PZ<50><5A>E<EFBFBD>F<EFBFBD>t<EFBFBD><74>U<EFBFBD><55><EFBFBD>NZ<4E><5A>AjPU<1D>EU\"<EFBFBD>-Jz<4A><7A>*`<60>Ԭb<D4AC><62>~<7E>eU:[<5B>=<3D><>T<EFBFBD><54><EFBFBD><EFBFBD><EFBFBD><13>}<7D>\0<EFBFBD>|<7C><><1B>aOzsR2i<32><69><EFBFBD><EFBFBD>2f^z<>ʬ`\0<0B>\\<EFBFBD>w<EFBFBD><EFBFBD>\0<EFBFBD>&<26><>6<EFBFBD>|<7C><>Z7/t<>漂<EFBFBD><E6BC82>R<>̭<EFBFBD><CCAD><EFBFBD>1<EFBFBD><31>VZ<56><5A>7j<37>k<EFBFBD>*<2A>\0TFܻ<EFBFBD><02>va<76>;<3B>дբ<D0B4>-<2D>I;*)<29>k<19><>jg<6A><67><EFBFBD>{Q<EFBFBD><EFBFBD>'<08>\0<EFBFBD><EFBFBD><EFBFBD>|H<02><><EFBFBD>\n<EFBFBD>4<EFBFBD>)<29>/L<>oV抳<0C> \0<17>~Qx<0F><><02>S&:D<>jI<6A>R<EFBFBD>`n|<7C><>A<EFBFBD><41><EFBFBD>^jU<6A><55><EFBFBD>(\$u]ʴyٳ<79>S\0<EFBFBD>V6<EFBFBD>)<29>Bp<42>`<60><><EFBFBD>d<EFBFBD>;V7<56>~j<><6A>q<EFBFBD><71><EFBFBD><EFBFBD>Mm<1E><>Tn鈳y<E988B3><79>X<16><><17><1E>3<EFBFBD><33><EFBFBD>\0<EFBFBD><EFBFBD>sM'<04>Z<EFBFBD>Jf0<1F><>q=<1A><><EFBFBD>e<0C>'fgXq<58><71>W)B<>i)t2_<><5F><EFBFBD><EFBFBD>y=0 *<2A><>jUȧ<55><C8A7><EFBFBD><EFBFBD><EFBFBD>bz<62><7A>}<7D><><EFBFBD>/d^<5E>N<EFBFBD>cf<63>u|I<>4(QXʍ<58>-<2D><>Mv+<13>Q\0<EFBFBD>Xn<EFBFBD>udz<EFBFBD><EFBFBD><EFBFBD><EFBFBD>!\0CF<EFBFBD>O<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD>}<7D>j<>T<EFBFBD>&<26>Px<02>><3E>~<7E>g+)\0Y<EFBFBD>5YF<EFBFBD><EFBFBD>>²<>+*\0M<EFBFBD><EFBFBD>Yb<EFBFBD>8<>?<3F><><EFBFBD>(Vh<56>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)Ք ~<7E><16><>Mְ<4D><04>RU<52><55>H3<48>`%Lγ<05>̴F<CCB4>@/\n<EFBFBD><EFBFBD>J<>O<EFBFBD><4F>5<EFBFBD>+EV<45><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>r<EFBFBD>I<EFBFBD><49><EFBFBD>_<EFBFBD>ZM<5A>#9<1A>lkLV<4C>g'K<><4B>K:Ҵ<>X<EFBFBD>ѱ<EFBFBD>(<28><><EFBFBD>EMZ<4D>L<EFBFBD>)tѱ<74>P<EFBFBD>F<EFBFBD><46>3B<33>l<EFBFBD>k\$V<EFBFBD>&oV<6F><56><EFBFBD>kf\0<EFBFBD><EFBFBD><EFBFBD>n<EFBFBD><EFBFBD><EFBFBD>kZ<EFBFBD><EFBFBD><EFBFBD>Y6-Tu <20><><EFBFBD>cGm<47>\rlr<EFBFBD>l<EFBFBD>Y<EFBFBD>3<EFBFBD>hT<EFBFBD><EFBFBD><EFBFBD>V0<EFBFBD><EFBFBD><EFBFBD>:<3A>Qe<51>K2<4B>mP<6D>!UB@#<23>ʪR6<52>U`<0B>7Y<37><07>\0<EFBFBD><EFBFBD><EFBFBD><05><16><>o<EFBFBD><6F><EFBFBD><EFBFBD>'=[<5B>Q<EFBFBD>?<3F><10><>+<12><15><>V<EFBFBD><56><EFBFBD>,\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD>{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>G<EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><EFBFBD><0C><><EFBFBD>V<EFBFBD>k<EFBFBD><6B>Q<EFBFBD>+3<>><3E>Y<><07>\0<EFBFBD>W<EFBFBD><EFBFBD>el*<2A>@\n<1A><>H'<27>}<7D><> <20>bu<62><75><EFBFBD>3yf'Y.<2E>C1<43>B<EFBFBD>ę]<5D><01>\0<1F><>+1<>K<><4B>/<2F><>G[)<29><>s<16><><EFBFBD>`<60>Э5Z<35><5A><EFBFBD>^<5E>E`<12><>5<05>YHU<48><55>\n8A<>k<EFBFBD>2<EFBFBD>\0<EFBFBD>[<5B><><EFBFBD>!<21><>,<03> <09><>6<EFBFBD>>}q<>=<3D><>j<EFBFBD><6A>Kh@<40><>S<EFBFBD>#<23><>EQ<><03><><EFBFBD>Q2<51>K<0F><>U֙b<D699><0F>&V<><56>#p+<2B>\0³<EFBFBD>k<EFBFBD>L<EFBFBD><EFBFBD><EFBFBD><EFBFBD>uڍ6<EFBFBD>+<2B><04><><EFBFBD>iz<69>_<EFBFBD>`MD{//<2F>8<EFBFBD>Y8\n<EFBFBD><EFBFBD><EFBFBD>*<2A>т<EFBFBD><D182>)<29><>C(<28>U<> <09><>^<5E><><>x<EFBFBD>lխk<D5AD>ד<EFBFBD><D793>^V<>l<1C><>L<04><>\0T<EFBFBD><EFBFBD>^v<><76>vMh<>ߨ<EFBFBD>^q<>%\"*K\0<13><>\0We^<5E>S<EFBFBD>**L+<2B><>w<EFBFBD><77>ko^n<><6E>`<60><>x+<2B>5<EFBFBD>i_[)<29><>I<EFBFBD>^<5E><><EFBFBD><EFBFBD><EFBFBD>η<>ֽ<>f+<2B><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>xa=|<7C><07>@VK\0<EFBFBD>\\\$<17>u<EFBFBD><75>V<EFBFBD>d<EFBFBD><64><1E>Ud<55>C<EFBFBD><43><EFBFBD>%Rn&<26>L<EFBFBD><4C>#\$<EFBFBD>'<15><>=Rqb<71>K2<4B><32><EFBFBD>iFu<46>I<EFBFBD>.ʀ<>Fy<46><79><0E>N5.<2E><>҃c<<3C>I<EFBFBD>'R}4<><34> <09><><EFBFBD>&<26>!<21><>0<EFBFBD><30><EFBFBD>=Y<><59>@<40>eI<65>}<7D>v<EFBFBD><76>U<EFBFBD>+<2B>VK<0F><>ε<EFBFBD>*<2A>l )<29>V<EFBFBD>`V<><56><EFBFBD>y3<79>Su<53><75><EFBFBD><EFBFBD><1E>6N<36><4E><EFBFBD>PV<07><>A<0E>AX<41><01>ϛ{<05><><EFBFBD>G0?<3F><>^<5E><>|&<04>7XD<58><44>f;`y<1B>*<05><>5*<2A><><EFBFBD><EFBFBD>]!<21>\0Bi<42><15>*<2A>K<EFBFBD>d<64><CDB9>Z<><5A><15>*<2A>)_aU<02><><EFBFBD>Bg<42><67>Xd<58>[<5B>,<2C>͡<EFBFBD><CDA1>K\0<14>2<><0F>т<EFBFBD>\0<05><><EFBFBD>♒0?<3F><>NI<4E>%<25><>\rՙ<EFBFBD><EFBFBD>X<1E><>[<5B>><3E><><EFBFBD>\n<EFBFBD><1A><>X!<21><>V<EFBFBD><56><EFBFBD><10>4k<34>Y<EFBFBD>\0G <09><><EFBFBD><EFBFBD>b<EFBFBD><62>a<14><19>W&<26>a<EFBFBD><61>Շ&I<>ujɳ2`xM6<4D><36>:֫<>?d<D7B8>N<>R<EFBFBD>Sz<53>b<EFBFBD>a<EFBFBD><61><EFBFBD><EFBFBD>Ζ-<2D>*Xv<16><>X`<60><><EFBFBD>&<26><>e<>\r<EFBFBD><12>\$<EFBFBD>bt<1D>ZY<5A>,<2C><ص<08><01><>m<EFBFBD><6D> \n<1B><01>SEf<45><66><18><>aZ<61><5A>+<2B>jJa<4A><0B>5S<35><53>dhK<68>@<40>\n\\<EFBFBD>)he_٪<5F>T<14>ȕ<EFBFBD><C895>01<04>I<EFBFBD><49><EFBFBD>*<2A>q p<><70>f<EFBFBD><66><01><><EFBFBD>80@3ʡG<>Ԓ̈D<CC88>jQt;a<>I*<2A><EFBFBD><01> <02>S3<53>0<EFBFBD>6%<25>a<><61><02>\$<EFBFBD><0C><17>b<EFBFBD>2<04>I <09><>!n<>>Ϙ<12><><EFBFBD>Șn[\"<EFBFBD>l<><6C>V<>dP,[#<23>}<15>Y J\0<EFBFBD><EFBFBD>t<>\$<EFBFBD>.,<2C><>%<25>4Œ<>#!<21><><EFBFBD>\09<EFBFBD>ed~<7E>|<7C><>M<>];:31<33><31><EFBFBD>!<21><0E>Yl<59><6C>8<EFBFBD><38>0<EFBFBD><30>-<2D>K'<27>\r,<2C><><1A>d<7F>&<26><><EFBFBD>'<27>Q<EFBFBD><51>YQ<59>Id<49><64>8{)<29>O<EFBFBD><4F><EFBFBD>1<EFBFBD><31>d<EFBFBD><64>p[&<26>W<EFBFBD><57>Y\\Ien<65>y<>-Ff<46>Yk<59><6B>e<EFBFBD>c\r<EFBFBD>,<2C>V,<2C><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD>1<EFBFBD><31>k.BЬ<42>YB<59><42>e<EFBFBD><65><EFBFBD><EFBFBD>{/\0<17><>!<21><><EFBFBD>eN<65>Ք<EFBFBD>0<EFBFBD>_<EFBFBD>j<EFBFBD>h<EFBFBD><68>eV<65>\r<EFBFBD>/3<><33><EFBFBD>Y]<5D>+8̭<>{1vQ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7dRh]<5D>dv`<60><><EFBFBD>p<EFBFBD><70>4.<2E>U<EFBFBD>,<2C><17><><EFBFBD>P<EFBFBD>Uebh]<5D>4vd<76><64>Y<EFBFBD><59>?djh]<5D><>5<EFBFBD>`<60><><EFBFBD>c<EFBFBD>wf<77><66>՚y<D59A><79>g<EFBFBD><67><EFBFBD>B*{e<EFBFBD>c<EFBFBD><EFBFBD><EFBFBD>q,<2C>٫<EFBFBD>f<><66>Ř9<C598><39>a<EFBFBD><61><EFBFBD>F<EFBFBD>f<><66>m<EFBFBD><6D><EFBFBD><EFBFBD>k<EFBFBD><6B><EFBFBD>ҲOe<4F>p-<2D><>9 <17>ٺ<><D9BA>eNp-<2D><><<3C>P<EFBFBD>ٚ<><D99A>dR<64>m<EFBFBD><6D>:6z'\"Y<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD>m<EFBFBD><EFBFBD>>v{&T<><54><EFBFBD><EFBFBD>e<EFBFBD>_\r<EFBFBD><EFBFBD>=vQ<76>\0<EFBFBD>в<EFBFBD>hȵ<>;@6~<7E><03><14><>g<EFBFBD><67>m<EFBFBD><6D><EFBFBD>V<EFBFBD><56><EFBFBD>YB<59><42>gR<67><1D><>\$<EFBFBD><EFBFBD>-\n<EFBFBD>F<EFBFBD><EFBFBD>gr<EFBFBD>ݡ<EFBFBD>;<3B>x<EFBFBD>yY<79><59><EFBFBD>hJ̵<4A>K,VZ&a<><61><EFBFBD>3h<33><68>U<EFBFBD><55>9<16><><1D>-<2D>1h<31><68><EFBFBD>ػE<D8BB>mY<><59>qh<71><68>5<EFBFBD><35>F<EFBFBD>1<EFBFBD><1D>ϴvtf<74>=<3D>C<><43><EFBFBD>ZG<5A>ohF<68><1C><>H<EFBFBD><48>-(\0_<EFBFBD><EFBFBD>h<EFBFBD>Ҭ<EFBFBD>KH6<EFBFBD><EFBFBD>(<28>洸~tE<74><45>6<EFBFBD><36>-\nZc<EFBFBD>h<><68><05><>-<13>-*ZK<5A>5:\"<EFBFBD>Ŧ<EFBFBD><EFBFBD>s<EFBFBD>--<2D>U<EFBFBD>izӵ<7A><D3B5><f<><66>Z_<5A><5F>i<EFBFBD><69>]<5D><>L<EFBFBD><4C>l<EFBFBD><6C>h<EFBFBD><68>hr<68>4<EFBFBD><34>Ms<1F>8ډ<38><DA89>i<EFBFBD><69>L<EFBFBD><4C>Qv<51><76>=<3D>˲wjT<01><>+`<60>Z_<5A>9j<0E><>[)x<>NZ<4E><5A>Wjr<6A>m<EFBFBD>KS<4B><53>mSڢ<53><1E><06>%<25>kV<16><><EFBFBD>ڳ<EFBFBD>9j<39><6A>m<EFBFBD>;N6<4E><36>W<EFBFBD><57><EFBFBD>Sj<53><6A><EFBFBD><EFBFBD><EFBFBD>VV<56><56>><3E>C<EFBFBD><43>i*Յ<>;4v<34>m'<27>'<27><>j<EFBFBD><6A>%<25><>X<EFBFBD><58><EFBFBD>bZ<62>XCi<12><1D>{R<EFBFBD><EFBFBD>-k<>H<EFBFBD><48><EFBFBD><EFBFBD>n]<5D><>W֓mo<6D><17><>k6Յ<36>+\\<EFBFBD>'<14>#<23><>kR<6B><52><EFBFBD>k\\mwZ<77><5A><EFBFBD>\0<EFBFBD>LӉ<4C>t1-gZ<67><12>k<EFBFBD>iĽ<69><C4BD>;<3B>XLa<4C><61>k^k<><6B>{\\\r<EFBFBD>-<2D>Z<EFBFBD><5A>\rl6<EFBFBD>d<EFBFBD>;b<04><>1[w;ذ9<><39><EFBFBD>gQ<67>#<23>lrj5<6A>\\V<EFBFBD><EFBFBD><EFBFBD>[ <20><>j<EFBFBD>hu<68>ZV<5A>-xZ<78><5A>Kl<4B><6C>ů<EFBFBD>d<EFBFBD>z<EFBFBD><7A>Z<EFBFBD>*{lr_<EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>Wk<EFBFBD>h<EFBFBD><EFBFBD><EFBFBD>^V<><56>G[8<>ikּ<>[c<>H<EFBFBD><48><EFBFBD><14>a1<61><31>]<5D>i6<69><36>sMp<4D><70>m<0E>d<EFBFBD><64>iv<69><76><EFBFBD>Z<EFBFBD><5A><EFBFBD>lra]<5D>i֯<69>5<EFBFBD>`<60><>mzڥ<7A>Ʉ<EFBFBD><C984>-<2D>[<14><>m<EFBFBD><6D><EFBFBD><EFBFBD> <09>v<EFBFBD>%<25><>t<EFBFBD><74>k^_e<5F>Kl<4B><6C><EFBFBD><EFBFBD>[t<>[m<><6D>m<EFBFBD>y<EFBFBD><79><EFBFBD>-<2D>ھ5<DABE>lrbm<62><6D>n<EFBFBD><6E>&\$ۈ<EFBFBD><EFBFBD>k<EFBFBD>_<EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><EFBFBD>-<2D><><1A>n\"<EFBFBD>*<2A><10>V<EFBFBD>@<40>[#XYd.<2E><><EFBFBD>KYj<59><6A><EFBFBD>[<5B>&N<04><>M<EFBFBD>y<EFBFBD>V<EFBFBD>mʁ\$<EFBFBD>b<EFBFBD> %<25><>s<EFBFBD><73>m<EFBFBD><6D>O=nzݵ<7A><DDB5>f<EFBFBD><66><EFBFBD>ۜ<>uk<75><6B>=<3D><>x\0n<EFBFBD><EFBFBD>[<5B><><EFBFBD>n<EFBFBD>ԕ<EFBFBD>9{<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۚ<EFBFBD><EFBFBD>kr<EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><EFBFBD>-<2D>[<5B><><EFBFBD>oN<6F>5<EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD>[ڷ[k<><6B>TӋvV<76><56><EFBFBD>[<5B><>o<><6F>]<5D>Kgv<67><76><EFBFBD>[<5B><>So_m<5F>ɂ<EFBFBD><C982><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j^ޭ<>i<EFBFBD><69><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>o<EFBFBD><6F>̽٠<CCBD><D9A0>-<2D><><02>[0*<2A><><EFBFBD>[t<><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>9l<39><6C>m<EFBFBD><6D>v<EFBFBD><76>n<06>m<06>m<EFBFBD>`}Aڙ<><DA99>m\"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>\0<EFBFBD>\\<1E><>n<EFBFBD><6E>,[<5B>n<EFBFBD><6E>3Z<33><5A>Sp<53><70>}<7D>I<EFBFBD><49><EFBFBD>-<2D>[ᶙp<E1B699><70>M<EFBFBD>kj\r<EFBFBD>\0<EFBFBD><EFBFBD>-1<><31>,<2C><>u<EFBFBD>֮\\\n<EFBFBD><EFBFBD>m~<7E>\r<EFBFBD><1B>7m<><6D>e<EFBFBD><65>p<EFBFBD>d<64>mwm<><6D>o<EFBFBD><6F>qa<><61><EFBFBD>x<EFBFBD><78>m<EFBFBD>͡<EFBFBD>9m<39><6D><EFBFBD><EFBFBD><19>V<EFBFBD>-<2D><><EFBFBD><EFBFBD>q<><71><EFBFBD><EFBFBD><1B>V<EFBFBD><56><EFBFBD><EFBFBD>d<EFBFBD>8J<38>%<25>sS4-<2D><>?<3F><>7.<2E><>Ʋd<C6B2>Fn\0<EFBFBD><19>,tf<74>)ћr<D19B>Fn9,,:3qb<71>Ϳ<EFBFBD>y<EFBFBD>!<21><18><><EFBFBD><EFBFBD>n<EFBFBD><6E><01>{<EFBFBD><EFBFBD>m<>wjf<6A><66><EFBFBD><EFBFBD>yV<79>nA<6E>ɹ,<1A><>e<EFBFBD><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Eܒ<45><DC92>rnޥ<6E>S?<3F>.=\\<EFBFBD><EFBFBD><EFBFBD>r~`<60><><EFBFBD>~<7E>f\\<EFBFBD><EFBFBD>r<>٥<0E>/<2F>5\$<EFBFBD><EFBFBD>g{<11><>Qڂ5^<5E>3hT<10>A<EFBFBD>\n`<12>pU<17><>T^<5E><>Q<EFBFBD><16>'*<2A>U\0<EFBFBD>Oª<EFBFBD>RBqL\"<EFBFBD><EFBFBD>/5b<35>UҨ+C<><43><EFBFBD><EFBFBD>Z4/wc<77><63><EFBFBD><EFBFBD><EFBFBD>QxE<10><>b4_s<11>H<04>-<2D>E<EFBFBD>RQ<52><51>fQQ<51>\rS<EFBFBD><EFBFBD>U<EFBFBD><EFBFBD>m<EFBFBD>l<EFBFBD><EFBFBD>Q⪍(<28>OB<02>9<EFBFBD>ժ<EFBFBD>e<>{<04>Z_Wi<57>%R<><52>d뚰<>*<2A><><17><>T^<5E><><1A><>e<17>ՕG<D595>L<EFBFBD><4C><12><>=<3D><>w<>]<5D><><EFBFBD>j<EFBFBD><6A>jM<6A>JJ S<16>~<7E><02>un<75>\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>07a<EFBFBD>L<EFBFBD><EFBFBD>e8j<EFBFBD>k<EFBFBD>iIA_<EFBFBD><EFBFBD>M.<2E><>I<EFBFBD>l<EFBFBD>o鑓й<E99193>U<EFBFBD><55><EFBFBD>R<EFBFBD><52><EFBFBD>RX<52>Uͺ<55><CDBA>r<EFBFBD><72>8k<38><6B>ߩ<EFBFBD><DFA9><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><05>+<2B><>9no<6E>*<2A>-uj<75>M<EFBFBD>˜<EFBFBD>q)<29><>L<EFBFBD><4C><EFBFBD>\"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S.x<><78><EFBFBD>\ru<EFBFBD><EFBFBD>;)P<08>V.<2E><>P<EFBFBD>ou<6F><75><EFBFBD>j[<5B>>)<29><>v<EFBFBD><76>I<EFBFBD><49><EFBFBD><EFBFBD>ˠ宁/t<><74><EFBFBD><1C>vWB+<2B>S<EFBFBD><53><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*OS<4F><53><EFBFBD>)<29><><18>xTk<54><6B>]Q<>;M<> <09>k<EFBFBD><6B>ѫI<><49><EFBFBD>Y@<40>u<1A>Dk<44>Z\\S<EFBFBD><EFBFBD>GRQ<EFBFBD><EFBFBD>?<3F>&T=<3D>%U<><55>gR§s\r*<2A>wn <20>]<5D>a<EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD>Z<07>&su<12>U̫<55><CCAB><EFBFBD><EFBFBD>%\\Ϩ<EFBFBD>Tr\r<EFBFBD><EFBFBD>:<3A><>mn<6D><6E>U<EFBFBD>uuZOeD<65><44>9.o]c<>wn<77><6E><EFBFBD>f%7:<1D>[<5B>Ku<4B><75>}֢<><D6A2><03><>T<EFBFBD><54><16><02><><EFBFBD>ʜ<EFBFBD>_.<2E>S<EFBFBD><53><EFBFBD>U2<55>5G<35>[0p<30>DR<44>^;v<1D><><1C><><EFBFBD><EFBFBD><EFBFBD>>ݓ<>}R~N<><0B>U'<27><>A<EFBFBD>T<EFBFBD>R~<7E><1A><>U<03><>AۻN\0<EFBFBD> 6(<28>j(<28>B\$<EFBFBD>-J&<26>l<><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>5t<35><74>eu<65><75>̞<EFBFBD>l<EFBFBD>8e<38><65>6<EFBFBD>5|<16>t<EFBFBD>k<EFBFBD>.ө<>J6<0F>))QW~lB<04>7G<37>\n<EFBFBD><EFBFBD><EFBFBD>=,<2C>l@<40><>\0<EFBFBD>R<EFBFBD>S<1A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD>+K\"<EFBFBD>3<04>H<EFBFBD><48><05><>nL<6E>Q.<10>K<18>s[<11><1E><>yr<13>7[A<>֤]mK+ɻ<>e<EFBFBD><65><EFBFBD>Q\"<EFBFBD><EFBFBD>%{E1<>wK`Ӂ<><D381>pr|<7C>!<21>;V<><56>@<40><02>;bN-:b<><62><EFBFBD>7<EFBFBD><37>!ނ|<7C>Hl<48><6C>{<EFBFBD>Ω<EFBFBD>/C6eN<65><4E>0s<30>g(<28>P<EFBFBD><05><>R<EFBFBD><52>!DU<44>H<EFBFBD>W<EFBFBD><57>f^<5E>4 <09><><EFBFBD><EFBFBD>A<w<>\n#<23>Hx<48>-<2D><><EFBFBD><EFBFBD>|ף<><D7A3>C<18>\r<EFBFBD><1D>{<EFBFBD><EFBFBD><EFBFBD>(<28>Ĩu=<0C>8A<38><41><EFBFBD><EFBFBD><18><><EFBFBD><EFBFBD><EFBFBD><16><><EFBFBD>A;<3B><><12>D^[xr<78>ټp<14>q<EFBFBD>B<EFBFBD><42>=O<><4F><EFBFBD>A0<41><30>`<18>1<EFBFBD>]DZ<44><5A>_<01><><EFBFBD><EFBFBD>R<EFBFBD><52>7u<03><><EFBFBD>6<EFBFBD>C<><43>aJ<61><4A><EFBFBD>r<EFBFBD>z<12>(<28><>\\<EFBFBD><EFBFBD><EFBFBD>́<EFBFBD>Oت|̈<>:<3A><><EFBFBD><EFBFBD>R<><52>^m<><6D><EFBFBD><EFBFBD><EFBFBD>@\0=5<>l!zQ<7A>|<7C><><EFBFBD> <09>B<>W<EFBFBD><57><1A>#d<><64>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD>h<><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>\rGE<EFBFBD>+<2B>|@U<><55><EFBFBD>71<37>!<21>;R<04>9QC<51>47Y<37><59>z_#<23><>y<EFBFBD><79>`\"k<EFBFBD>7Ȕ;<3B>au<61><12><11>ݤ<EFBFBD><DDA4><EFBFBD>ҳ^<5E>j<><6A>C<EFBFBD>s<EFBFBD>Y<EFBFBD><59>]f6artْ<74>h<EFBFBD><68><13>ض<EFBFBD>p<EFBFBD>y<EFBFBD><79>{Z<EFBFBD>A<><41>T<EFBFBD><54>t<EFBFBD>f<><66><EFBFBD><EFBFBD>X<EFBFBD><58>Y=<3D><><EFBFBD> )<29>ۦȠ\r<EFBFBD><EFBFBD><EFBFBD><EFBFBD>7yR<><52>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD>_[W, r<>]<5D>W@nˇ>_a<5F>#|y<><79>&<26><>ۡ<><DBA1>_<07>DI<44><49><EFBFBD> ?Λ\0<EFBFBD><EFBFBD>*u6<><36>V<EFBFBD><56><EFBFBD><1B>H߀<02><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><56><EFBFBD>c<01>:<3A>YL\rj<1A><><06>.<2E><>d<EFBFBD><64>h\nB<EFBFBD><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD>.o<>ߙ<EFBFBD>bY<02><><EFBFBD><EFBFBD><EFBFBD>!<21>ܘ}<7D>G<19><><EFBFBD>0'<27>w<EFBFBD><77>/Uſ,U}nK<6E><4B><EFBFBD> ttGȿ!~<7E>g@<1A>Ҏ/<2F>߱\\40<EFBFBD><EFBFBD>K<EFBFBD>[<5B><><o<>D<EFBFBD><44><EFBFBD>L<0E><>+<2B><><EFBFBD><01>^<5E><19>/33<33><33>+7<><37><1B><>nz<6E>f<EFBFBD><66><EFBFBD><EFBFBD><0E>J<EFBFBD>%<25>ҿ<EFBFBD>\"<EFBFBD><EFBFBD>[<5B> s/<2F><02>rp,վe<D5BE><65><EFBFBD><EFBFBD>R<EFBFBD>q<14><><EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD><EFBFBD><7F><0E>8*8G<02>f<EFBFBD><66><EFBFBD>ۇ<EFBFBD><DB87>r<EFBFBD><72>8<EFBFBD><38><EFBFBD>%K_<4B><0E><><EFBFBD><14>\0<EFBFBD><EFBFBD>7<EFBFBD>o/<2F><>^l]<5D>\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\$<EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1M<>o<EFBFBD>7<EFBFBD>Rwz<77>##i<>ݍ<EFBFBD>[L<>cGz<>V<EFBFBD><56><EFBFBD>la <20>L<EFBFBD>@<40><>H \\HP<EFBFBD><EFBFBD>dC<64><04><>\$cc<><63><EFBFBD><0C><><EFBFBD>.xh<18><01><03>fɜ<66>#9<18>z<><7A>4]5\0<EFBFBD>\0<EFBFBD>Ŋ<EFBFBD>idi<EFBFBD>Q<>O<EFBFBD>0`Q<04><><EFBFBD><EFBFBD><EFBFBD><04><11>.8<13>y<11>2<EFBFBD>gW<67><1D>g<EFBFBD>3<EFBFBD>Z<EFBFBD>Ϳ<EFBFBD><CDBF><EFBFBD><0C>\r<EFBFBD>ܶ<EFBFBD>\"<EFBFBD><EFBFBD><EFBFBD>ki<6B>Z<EFBFBD><5A>A.+<2B><>'<27><><03>f<O7Dئ<44><D8A6><EFBFBD>6O<03>1<EFBFBD>X`Ho<48><03><><EFBFBD>n<>\"ڨ<EFBFBD><EFBFBD>ߨ<EFBFBD>`<60>S<03><>`(<28><><EFBFBD>=<>\rv<11>><3E>V<17>J<EFBFBD>\0n<EFBFBD>OU<><55><EFBFBD>(`λ<><07>j<EFBFBD><6A><EFBFBD><17>\\h<EFBFBD>G<EFBFBD><EFBFBD>JB<EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>=<3D>|ݰQ<DDB0><EFBFBD>{<05> <20>A<EFBFBD><41>J<EFBFBD><4A><EFBFBD>Q/~<0B>T&j<>^nE<6E>|z<1C>C<EFBFBD>6<EFBFBD>/<2F>Q<EFBFBD>6<EFBFBD>݉<><1D><>w<>p[߁<><DF81><EFBFBD><EFBFBD>@a\r<EFBFBD>Gd6<EFBFBD><EFBFBD>H<EFBFBD><01><><EFBFBD>\0000<EFBFBD><01>σ<>ޘ\$<EFBFBD><EFBFBD>x8<EFBFBD>L`<60>7k<37><6B>ݨ!K<><EFBFBD>U<EFBFBD><55><EFBFBD>[<5B><>\"g <0E><>P=<3D>wr<77><72><EFBFBD><1A><08>d<EFBFBD>@@<40><>\0G<17>IQN<51>7.,ba~~lK<><4B>! <09><><EFBFBD>E)Mz<4D>JB<04>XFA<46>X<EFBFBD><02>ZOA!<21><><EFBFBD>B <1F>p<><70>xi<10><><EFBFBD><EFBFBD>F<EFBFBD><46><EFBFBD>i<EFBFBD>Q<18>g<EFBFBD><67><EFBFBD>J<><4A><EFBFBD><EFBFBD><10>cT/<2F><>+r<>US<55><53>Fs\$<EFBFBD> <09>&<26>=<3D>h<EFBFBD><68>V<>XXI<58>ޫ<EFBFBD><DEAB> <20>J<03><><EFBFBD>Ճ[p<05>6T-q4<1E>;<3B><>EPU<>\0Q<0C>\0<EFBFBD><02><><EFBFBD>P\" <09><><EFBFBD><EFBFBD>b{g )<29>\ni<EFBFBD>ah4<68>L<EFBFBD>\n<EFBFBD>1l+<2B><>@9<>i\0NU<><55>ȄNk\r`O<>KJ<4B>g<0B><>.<2E>c<EFBFBD>?h<0E>j<EFBFBD> <09><><EFBFBD>\rR<14>T_<54><5F><EFBFBD><0B>_t,5 ֥W<D6A5>ob<6F>>U<><55><EFBFBD><EFBFBD>I<EFBFBD>w;5<06><><EFBFBD>բs<D5A2><73><12>a<EFBFBD><61><EFBFBD><EFBFBD><14><>Ɛ");}elseif($_GET["file"]=="logo.png"){header("Content-Type: image/png");echo"<EFBFBD>PNG\r\n\n\0\0\0\rIHDR\0\0\09\0\0\09\0\0\0~6<><36>\0\0\0000PLTE\0\0\0<EFBFBD><EFBFBD><EFBFBD>+NvYt<59>s<EFBFBD><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>su<73>IJ<49><4A><EFBFBD><EFBFBD>/.<2E><07><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<04><>\0\0\0tRNS\0@<40><>f\0\0\0 pHYs\0\0\0\0\0<EFBFBD><EFBFBD>\0\0<01>IDAT8<54>Ք<EFBFBD>N<EFBFBD>@<10><>E<><45>l϶<><01>p6<1A>G.\$=<12><><EFBFBD>><3E><> w5r}<7D>z7<7A>><3E><>P<13>#\$<EFBFBD><EFBFBD>K<EFBFBD>j<EFBFBD>7<EFBFBD><EFBFBD>ݶ<><DDB6><EFBFBD><EFBFBD>?4m<34><6D><EFBFBD><EFBFBD><EFBFBD>t&<26>~<7E>3!0<>0<EFBFBD><30>^<5E><>Af0<66>\"<EFBFBD><EFBFBD><11>,<2C><>*<2A><>4<EFBFBD><34><EFBFBD>o<EFBFBD>E<EFBFBD><45><08><>X(*Y<><59><EFBFBD><EFBFBD> 6 <09>PcOW<4F><15><>܊m<DC8A><6D>r<EFBFBD>0<EFBFBD>~/<2F><>L<EFBFBD>\rXj#<23>m<><6D><EFBFBD>j<EFBFBD>C<EFBFBD>]G<>m<EFBFBD>\0<EFBFBD>}<16><><04>ߑu<DF91>A9<41>X<EFBFBD>\n<EFBFBD><EFBFBD>8<EFBFBD>V<EFBFBD>Y<>+<2B>D#<23>iq<69>nKQ8J<38>1Q6<11><>Y0<59>`<60><1D>P<EFBFBD>bQ<>\\h<>~><3E>:pSɀ<1D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GE<47>Q=<3D>I<EFBFBD>{<EFBFBD>*<2A>3<>2<EFBFBD>7<EFBFBD>\ne<>L<>B<EFBFBD>~<7E>/R(\$<EFBFBD>)<29><><EFBFBD> <20><>HQn<51>i<EFBFBD>6J<> <<3C><>-.<2E>w<EFBFBD>ɪj<C9AA>Vm<56><6D><EFBFBD>m<EFBFBD>?S<>H<EFBFBD><48>v<EFBFBD><76><EFBFBD><EFBFBD>Ʃ<EFBFBD><C6A9>\0<EFBFBD><EFBFBD>^<5E>q<EFBFBD><1B>)<29><0F><>]<5D><>U<>92<39>,;<3B>Ǎ<17>'p<><70><EFBFBD>!X˃<58><CB83><EFBFBD><EFBFBD>L<EFBFBD>D.<2E>tæ<74><C3A6>/w<14><><EFBFBD><EFBFBD>R<><1B> w<>d<EFBFBD><64>r2<72>Ƥ<EFBFBD>4[=<3D>E5<45>S+<2B><>c\0\0\0\0IEND<EFBFBD>B`<60>";}exit;}if($_GET["script"]=="version"){$o=get_temp_dir()."/adminer.version";@unlink($o);$q=file_open_lock($o);if($q)file_write_unlock($q,serialize(array("signature"=>$_POST["signature"],"version"=>$_POST["version"])));exit;}if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";if($_SERVER["HTTP_X_FORWARDED_PREFIX"])$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define('Adminer\HTTPS',($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));@ini_set("session.use_trans_sid",'0');if(!defined("SID")){session_cache_limiter("");session_name("adminer_sid");session_set_cookie_params(0,preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),"",HTTPS,true);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Xc);if(function_exists("get_magic_quotes_runtime")&&get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("precision",'15');function
|
||
lang($u,$uf=null){$ua=func_get_args();$ua[0]=$u;return
|
||
call_user_func_array('Adminer\lang_format',$ua);}function
|
||
lang_format($Ii,$uf=null){if(is_array($Ii)){$vg=($uf==1?0:1);$Ii=$Ii[$vg];}$Ii=str_replace("'",'’',$Ii);$ua=func_get_args();array_shift($ua);$jd=str_replace("%d","%s",$Ii);if($jd!=$Ii)$ua[0]=format_number($uf);return
|
||
vsprintf($jd,$ua);}define('Adminer\LANG','en');abstract
|
||
class
|
||
SqlDb{static$fe;var$extension;var$flavor='';var$server_info;var$affected_rows=0;var$info='';var$errno=0;var$error='';protected$multi;abstract
|
||
function
|
||
attach($N,$V,$F);abstract
|
||
function
|
||
quote($Q);abstract
|
||
function
|
||
select_db($Lb);abstract
|
||
function
|
||
query($H,$Ti=false);function
|
||
multi_query($H){return$this->multi=$this->query($H);}function
|
||
store_result(){return$this->multi;}function
|
||
next_result(){return
|
||
false;}}if(extension_loaded('pdo')){abstract
|
||
class
|
||
PdoDb
|
||
extends
|
||
SqlDb{protected$pdo;function
|
||
dsn($kc,$V,$F,array$Lf=array()){$Lf[\PDO::ATTR_ERRMODE]=\PDO::ERRMODE_SILENT;$Lf[\PDO::ATTR_STATEMENT_CLASS]=array('Adminer\PdoResult');try{$this->pdo=new
|
||
\PDO($kc,$V,$F,$Lf);}catch(\Exception$Fc){return$Fc->getMessage();}$this->server_info=@$this->pdo->getAttribute(\PDO::ATTR_SERVER_VERSION);return'';}function
|
||
quote($Q){return$this->pdo->quote($Q);}function
|
||
query($H,$Ti=false){$I=$this->pdo->query($H);$this->error="";if(!$I){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error='Unknown error.';return
|
||
false;}$this->store_result($I);return$I;}function
|
||
store_result($I=null){if(!$I){$I=$this->multi;if(!$I)return
|
||
false;}if($I->columnCount()){$I->num_rows=$I->rowCount();return$I;}$this->affected_rows=$I->rowCount();return
|
||
true;}function
|
||
next_result(){$I=$this->multi;if(!is_object($I))return
|
||
false;$I->_offset=0;return@$I->nextRowset();}}class
|
||
PdoResult
|
||
extends
|
||
\PDOStatement{var$_offset=0,$num_rows;function
|
||
fetch_assoc(){return$this->fetch_array(\PDO::FETCH_ASSOC);}function
|
||
fetch_row(){return$this->fetch_array(\PDO::FETCH_NUM);}private
|
||
function
|
||
fetch_array($ff){$J=$this->fetch($ff);return($J?array_map(array($this,'unresource'),$J):$J);}private
|
||
function
|
||
unresource($X){return(is_resource($X)?stream_get_contents($X):$X);}function
|
||
fetch_field(){$K=(object)$this->getColumnMeta($this->_offset++);$U=$K->pdo_type;$K->type=($U==\PDO::PARAM_INT?0:15);$K->charsetnr=($U==\PDO::PARAM_LOB||(isset($K->flags)&&in_array("blob",(array)$K->flags))?63:0);return$K;}function
|
||
seek($D){for($s=0;$s<$D;$s++)$this->fetch();}}}function
|
||
add_driver($t,$C){SqlDriver::$ec[$t]=$C;}function
|
||
get_driver($t){return
|
||
SqlDriver::$ec[$t];}abstract
|
||
class
|
||
SqlDriver{static$fe;static$ec=array();static$Nc=array();static$pe;protected$conn;protected$types=array();var$insertFunctions=array();var$editFunctions=array();var$unsigned=array();var$operators=array();var$functions=array();var$grouping=array();var$onActions="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";var$inout="IN|OUT|INOUT";var$enumLength="'(?:''|[^'\\\\]|\\\\.)*'";var$generated=array();static
|
||
function
|
||
connect($N,$V,$F){$f=new
|
||
Db;return($f->attach($N,$V,$F)?:$f);}function
|
||
__construct(Db$f){$this->conn=$f;}function
|
||
types(){return
|
||
call_user_func_array('array_merge',array_values($this->types));}function
|
||
structuredTypes(){return
|
||
array_map('array_keys',$this->types);}function
|
||
enumLength(array$m){}function
|
||
unconvertFunction(array$m){}function
|
||
select($R,array$M,array$Z,array$td,array$Nf=array(),$z=1,$E=0,$Cg=false){$ke=(count($td)<count($M));$H=adminer()->selectQueryBuild($M,$Z,$td,$Nf,$z,$E);if(!$H)$H="SELECT".limit(($_GET["page"]!="last"&&$z&&$td&&$ke&&JUSH=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$M)."\nFROM ".table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($td&&$ke?"\nGROUP BY ".implode(", ",$td):"").($Nf?"\nORDER BY ".implode(", ",$Nf):""),$z,($E?$z*$E:0),"\n");$Th=microtime(true);$J=$this->conn->query($H);if($Cg)echo
|
||
adminer()->selectQuery($H,$Th,!$J);return$J;}function
|
||
delete($R,$Lg,$z=0){$H="FROM ".table($R);return
|
||
queries("DELETE".($z?limit1($R,$H,$Lg):" $H$Lg"));}function
|
||
update($R,array$O,$Lg,$z=0,$xh="\n"){$mj=array();foreach($O
|
||
as$x=>$X)$mj[]="$x = $X";$H=table($R)." SET$xh".implode(",$xh",$mj);return
|
||
queries("UPDATE".($z?limit1($R,$H,$Lg,$xh):" $H$Lg"));}function
|
||
insert($R,array$O){return
|
||
queries("INSERT INTO ".table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES").$this->insertReturning($R));}function
|
||
insertReturning($R){return"";}function
|
||
insertUpdate($R,array$L,array$G){return
|
||
false;}function
|
||
begin(){return
|
||
queries("BEGIN");}function
|
||
commit(){return
|
||
queries("COMMIT");}function
|
||
rollback(){return
|
||
queries("ROLLBACK");}function
|
||
slowQuery($H,$wi){}function
|
||
convertSearch($u,array$X,array$m){return$u;}function
|
||
convertOperator($Hf){return$Hf;}function
|
||
value($X,array$m){return(method_exists($this->conn,'value')?$this->conn->value($X,$m):$X);}function
|
||
quoteBinary($kh){return
|
||
q($kh);}function
|
||
warnings(){}function
|
||
tableHelp($C,$ne=false){}function
|
||
hasCStyleEscapes(){return
|
||
false;}function
|
||
engines(){return
|
||
array();}function
|
||
supportsIndex(array$S){return!is_view($S);}function
|
||
checkConstraints($R){return
|
||
get_key_vals("SELECT c.CONSTRAINT_NAME, CHECK_CLAUSE
|
||
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS c
|
||
JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t ON c.CONSTRAINT_SCHEMA = t.CONSTRAINT_SCHEMA AND c.CONSTRAINT_NAME = t.CONSTRAINT_NAME
|
||
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
|
||
AND t.TABLE_NAME = ".q($R)."
|
||
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'",$this->conn);}function
|
||
allFields(){$J=array();foreach(get_rows("SELECT TABLE_NAME AS tab, COLUMN_NAME AS field, IS_NULLABLE AS nullable, DATA_TYPE AS type, CHARACTER_MAXIMUM_LENGTH AS length".(JUSH=='sql'?", COLUMN_KEY = 'PRI' AS `primary`":"")."
|
||
FROM INFORMATION_SCHEMA.COLUMNS
|
||
WHERE TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
|
||
ORDER BY TABLE_NAME, ORDINAL_POSITION",$this->conn)as$K){$K["null"]=($K["nullable"]=="YES");$J[$K["tab"]][]=$K;}return$J;}}add_driver("sqlite","SQLite");if(isset($_GET["sqlite"])){define('Adminer\DRIVER',"sqlite");if(class_exists("SQLite3")&&$_GET["ext"]!="pdo"){abstract
|
||
class
|
||
SqliteDb
|
||
extends
|
||
SqlDb{var$extension="SQLite3";private$link;function
|
||
attach($o,$V,$F){$this->link=new
|
||
\SQLite3($o);$pj=$this->link->version();$this->server_info=$pj["versionString"];return'';}function
|
||
query($H,$Ti=false){$I=@$this->link->query($H);$this->error="";if(!$I){$this->errno=$this->link->lastErrorCode();$this->error=$this->link->lastErrorMsg();return
|
||
false;}elseif($I->numColumns())return
|
||
new
|
||
Result($I);$this->affected_rows=$this->link->changes();return
|
||
true;}function
|
||
quote($Q){return(is_utf8($Q)?"'".$this->link->escapeString($Q)."'":"x'".first(unpack('H*',$Q))."'");}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($I){$this->result=$I;}function
|
||
fetch_assoc(){return$this->result->fetchArray(SQLITE3_ASSOC);}function
|
||
fetch_row(){return$this->result->fetchArray(SQLITE3_NUM);}function
|
||
fetch_field(){$d=$this->offset++;$U=$this->result->columnType($d);return(object)array("name"=>$this->result->columnName($d),"type"=>($U==SQLITE3_TEXT?15:0),"charsetnr"=>($U==SQLITE3_BLOB?63:0),);}function
|
||
__destruct(){$this->result->finalize();}}}elseif(extension_loaded("pdo_sqlite")){abstract
|
||
class
|
||
SqliteDb
|
||
extends
|
||
PdoDb{var$extension="PDO_SQLite";function
|
||
attach($o,$V,$F){$this->dsn(DRIVER.":$o","","");$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}}}if(class_exists('Adminer\SqliteDb')){class
|
||
Db
|
||
extends
|
||
SqliteDb{function
|
||
attach($o,$V,$F){parent::attach($o,$V,$F);$this->query("PRAGMA foreign_keys = 1");$this->query("PRAGMA busy_timeout = 500");return'';}function
|
||
select_db($o){if(is_readable($o)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$o)?$o:dirname($_SERVER["SCRIPT_FILENAME"])."/$o")." AS a"))return!self::attach($o,'','');return
|
||
false;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Nc=array("SQLite3","PDO_SQLite");static$pe="sqlite";protected$types=array(array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0));var$insertFunctions=array();var$editFunctions=array("integer|real|numeric"=>"+/-","text"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("hex","length","lower","round","unixepoch","upper");var$grouping=array("avg","count","count distinct","group_concat","max","min","sum");static
|
||
function
|
||
connect($N,$V,$F){if($F!="")return'Database does not support password.';return
|
||
parent::connect(":memory:","","");}function
|
||
__construct(Db$f){parent::__construct($f);if(min_version(3.31,0,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
structuredTypes(){return
|
||
array_keys($this->types[0]);}function
|
||
insertUpdate($R,array$L,array$G){$mj=array();foreach($L
|
||
as$O)$mj[]="(".implode(", ",$O).")";return
|
||
queries("REPLACE INTO ".table($R)." (".implode(", ",array_keys(reset($L))).") VALUES\n".implode(",\n",$mj));}function
|
||
tableHelp($C,$ne=false){if($C=="sqlite_sequence")return"fileformat2.html#seqtab";if($C=="sqlite_master")return"fileformat2.html#$C";}function
|
||
checkConstraints($R){preg_match_all('~ CHECK *(\( *(((?>[^()]*[^() ])|(?1))*) *\))~',get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$this->conn),$Ne);return
|
||
array_combine($Ne[2],$Ne[2]);}function
|
||
allFields(){$J=array();foreach(tables_list()as$R=>$U){foreach(fields($R)as$m)$J[$R][]=$m;}return$J;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($ed){return
|
||
array();}function
|
||
limit($H,$Z,$z,$D=0,$xh=" "){return" $H$Z".($z?$xh."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$xh="\n"){return(preg_match('~^INTO~',$H)||get_val("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?limit($H,$Z,1,0,$xh):" $H WHERE rowid = (SELECT rowid FROM ".table($R).$Z.$xh."LIMIT 1)");}function
|
||
db_collation($j,$hb){return
|
||
get_val("PRAGMA encoding");}function
|
||
logged_user(){return
|
||
get_current_user();}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");}function
|
||
count_tables($i){return
|
||
array();}function
|
||
table_status($C=""){$J=array();foreach(get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$K){$K["Rows"]=get_val("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence".($C!=""?" WHERE name = ".q($C):""),null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return$J;}function
|
||
is_view($S){return$S["Engine"]=="view";}function
|
||
fk_support($S){return!get_val("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
|
||
fields($R){$J=array();$G="";foreach(get_rows("PRAGMA table_".(min_version(3.31)?"x":"")."info(".table($R).")")as$K){$C=$K["name"];$U=strtolower($K["type"]);$k=$K["dflt_value"];$J[$C]=array("field"=>$C,"type"=>(preg_match('~int~i',$U)?"integer":(preg_match('~char|clob|text~i',$U)?"text":(preg_match('~blob~i',$U)?"blob":(preg_match('~real|floa|doub~i',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~^'(.*)'$~",$k,$B)?str_replace("''","'",$B[1]):($k=="NULL"?null:$k)),"null"=>!$K["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["pk"],);if($K["pk"]){if($G!="")$J[$G]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$U))$J[$C]["auto_increment"]=true;$G=$C;}}$Nh=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R));$u='(("[^"]*+")+|[a-z0-9_]+)';preg_match_all('~'.$u.'\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$Nh,$Ne,PREG_SET_ORDER);foreach($Ne
|
||
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($J[$C])$J[$C]["collation"]=trim($B[3],"'");}preg_match_all('~'.$u.'\s.*GENERATED ALWAYS AS \((.+)\) (STORED|VIRTUAL)~i',$Nh,$Ne,PREG_SET_ORDER);foreach($Ne
|
||
as$B){$C=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));$J[$C]["default"]=$B[3];$J[$C]["generated"]=strtoupper($B[4]);}return$J;}function
|
||
indexes($R,$g=null){$g=connection($g);$J=array();$Nh=get_val("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q($R),0,$g);if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i',$Nh,$B)){$J[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$Ne,PREG_SET_ORDER);foreach($Ne
|
||
as$B){$J[""]["columns"][]=idf_unescape($B[2]).$B[4];$J[""]["descs"][]=(preg_match('~DESC~i',$B[5])?'1':null);}}if(!$J){foreach(fields($R)as$C=>$m){if($m["primary"])$J[""]=array("type"=>"PRIMARY","columns"=>array($C),"lengths"=>array(),"descs"=>array(null));}}$Rh=get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".q($R),$g);foreach(get_rows("PRAGMA index_list(".table($R).")",$g)as$K){$C=$K["name"];$v=array("type"=>($K["unique"]?"UNIQUE":"INDEX"));$v["lengths"]=array();$v["descs"]=array();foreach(get_rows("PRAGMA index_info(".idf_escape($C).")",$g)as$jh){$v["columns"][]=$jh["name"];$v["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(idf_escape($C).' ON '.idf_escape($R),'~').' \((.*)\)$~i',$Rh[$C],$Wg)){preg_match_all('/("[^"]*+")+( DESC)?/',$Wg[2],$Ne);foreach($Ne[2]as$x=>$X){if($X)$v["descs"][$x]='1';}}if(!$J[""]||$v["type"]!="UNIQUE"||$v["columns"]!=$J[""]["columns"]||$v["descs"]!=$J[""]["descs"]||!preg_match("~^sqlite_~",$C))$J[$C]=$v;}return$J;}function
|
||
foreign_keys($R){$J=array();foreach(get_rows("PRAGMA foreign_key_list(".table($R).")")as$K){$p=&$J[$K["id"]];if(!$p)$p=$K;$p["source"][]=$K["from"];$p["target"][]=$K["to"];}return$J;}function
|
||
view($C){return
|
||
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU','',get_val("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = ".q($C))));}function
|
||
collations(){return(isset($_GET["create"])?get_vals("PRAGMA collation_list",1):array());}function
|
||
information_schema($j){return
|
||
false;}function
|
||
error(){return
|
||
h(connection()->error);}function
|
||
check_sqlite_name($C){$Nc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Nc)\$~",$C)){connection()->error=sprintf('Please use one of the extensions %s.',str_replace("|",", ",$Nc));return
|
||
false;}return
|
||
true;}function
|
||
create_database($j,$c){if(file_exists($j)){connection()->error='File exists.';return
|
||
false;}if(!check_sqlite_name($j))return
|
||
false;try{$_=new
|
||
Db();$_->attach($j,'','');}catch(\Exception$Fc){connection()->error=$Fc->getMessage();return
|
||
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE adminer (i)');$_->query('DROP TABLE adminer');return
|
||
true;}function
|
||
drop_databases($i){connection()->attach(":memory:",'','');foreach($i
|
||
as$j){if(!@unlink($j)){connection()->error='File exists.';return
|
||
false;}}return
|
||
true;}function
|
||
rename_database($C,$c){if(!check_sqlite_name($C))return
|
||
false;connection()->attach(":memory:",'','');connection()->error='File exists.';return@rename(DB,$C);}function
|
||
auto_increment(){return" PRIMARY KEY AUTOINCREMENT";}function
|
||
alter_table($R,$C,$n,$gd,$mb,$vc,$c,$_a,$kg){$fj=($R==""||$gd);foreach($n
|
||
as$m){if($m[0]!=""||!$m[1]||$m[2]){$fj=true;break;}}$b=array();$Yf=array();foreach($n
|
||
as$m){if($m[1]){$b[]=($fj?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$Yf[$m[0]]=$m[1][0];}}if(!$fj){foreach($b
|
||
as$X){if(!queries("ALTER TABLE ".table($R)." $X"))return
|
||
false;}if($R!=$C&&!queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)))return
|
||
false;}elseif(!recreate_table($R,$C,$b,$Yf,$gd,$_a))return
|
||
false;if($_a){queries("BEGIN");queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($C));if(!connection()->affected_rows)queries("INSERT INTO sqlite_sequence (name, seq) VALUES (".q($C).", $_a)");queries("COMMIT");}return
|
||
true;}function
|
||
recreate_table($R,$C,array$n,array$Yf,array$gd,$_a="",$w=array(),$gc="",$ja=""){if($R!=""){if(!$n){foreach(fields($R)as$x=>$m){if($w)$m["auto_increment"]=0;$n[]=process_field($m,$m);$Yf[$x]=idf_escape($x);}}$Bg=false;foreach($n
|
||
as$m){if($m[6])$Bg=true;}$ic=array();foreach($w
|
||
as$x=>$X){if($X[2]=="DROP"){$ic[$X[1]]=true;unset($w[$x]);}}foreach(indexes($R)as$re=>$v){$e=array();foreach($v["columns"]as$x=>$d){if(!$Yf[$d])continue
|
||
2;$e[]=$Yf[$d].($v["descs"][$x]?" DESC":"");}if(!$ic[$re]){if($v["type"]!="PRIMARY"||!$Bg)$w[]=array($v["type"],$re,$e);}}foreach($w
|
||
as$x=>$X){if($X[0]=="PRIMARY"){unset($w[$x]);$gd[]=" PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(foreign_keys($R)as$re=>$p){foreach($p["source"]as$x=>$d){if(!$Yf[$d])continue
|
||
2;$p["source"][$x]=idf_unescape($Yf[$d]);}if(!isset($gd[" $re"]))$gd[]=" ".format_foreign_key($p);}queries("BEGIN");}$Ta=array();foreach($n
|
||
as$m){if(preg_match('~GENERATED~',$m[3]))unset($Yf[array_search($m[0],$Yf)]);$Ta[]=" ".implode($m);}$Ta=array_merge($Ta,array_filter($gd));foreach(driver()->checkConstraints($R)as$Va){if($Va!=$gc)$Ta[]=" CHECK ($Va)";}if($ja)$Ta[]=" CHECK ($ja)";$qi=($R==$C?"adminer_$C":$C);if(!queries("CREATE TABLE ".table($qi)." (\n".implode(",\n",$Ta)."\n)"))return
|
||
false;if($R!=""){if($Yf&&!queries("INSERT INTO ".table($qi)." (".implode(", ",$Yf).") SELECT ".implode(", ",array_map('Adminer\idf_escape',array_keys($Yf)))." FROM ".table($R)))return
|
||
false;$Pi=array();foreach(triggers($R)as$Ni=>$xi){$Mi=trigger($Ni,$R);$Pi[]="CREATE TRIGGER ".idf_escape($Ni)." ".implode(" ",$xi)." ON ".table($C)."\n$Mi[Statement]";}$_a=$_a?"":get_val("SELECT seq FROM sqlite_sequence WHERE name = ".q($R));if(!queries("DROP TABLE ".table($R))||($R==$C&&!queries("ALTER TABLE ".table($qi)." RENAME TO ".table($C)))||!alter_indexes($C,$w))return
|
||
false;if($_a)queries("UPDATE sqlite_sequence SET seq = $_a WHERE name = ".q($C));foreach($Pi
|
||
as$Mi){if(!queries($Mi))return
|
||
false;}queries("COMMIT");}return
|
||
true;}function
|
||
index_sql($R,$U,$C,$e){return"CREATE $U ".($U!="INDEX"?"INDEX ":"").idf_escape($C!=""?$C:uniqid($R."_"))." ON ".table($R)." $e";}function
|
||
alter_indexes($R,$b){foreach($b
|
||
as$G){if($G[0]=="PRIMARY")return
|
||
recreate_table($R,$R,array(),array(),array(),"",$b);}foreach(array_reverse($b)as$X){if(!queries($X[2]=="DROP"?"DROP INDEX ".idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
|
||
false;}return
|
||
true;}function
|
||
truncate_tables($T){return
|
||
apply_queries("DELETE FROM",$T);}function
|
||
drop_views($rj){return
|
||
apply_queries("DROP VIEW",$rj);}function
|
||
drop_tables($T){return
|
||
apply_queries("DROP TABLE",$T);}function
|
||
move_tables($T,$rj,$oi){return
|
||
false;}function
|
||
trigger($C,$R){if($C=="")return
|
||
array("Statement"=>"BEGIN\n\t;\nEND");$u='(?:[^`"\s]+|`[^`]*`|"[^"]*")+';$Oi=trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$u\\s*(".implode("|",$Oi["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($u))?\\s+ON\\s*$u\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",get_val("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".q($C)),$B);$wf=$B[3];return
|
||
array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($wf?" OF":""),"Of"=>idf_unescape($wf),"Trigger"=>$C,"Statement"=>$B[4],);}function
|
||
triggers($R){$J=array();$Oi=trigger_options();foreach(get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R))as$K){preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*('.implode("|",$Oi["Timing"]).')\s*(.*?)\s+ON\b~i',$K["sql"],$B);$J[$K["name"]]=array($B[1],$B[2]);}return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
|
||
begin(){return
|
||
queries("BEGIN");}function
|
||
last_id($I){return
|
||
get_val("SELECT LAST_INSERT_ROWID()");}function
|
||
explain($f,$H){return$f->query("EXPLAIN QUERY PLAN $H");}function
|
||
found_rows($S,$Z){}function
|
||
types(){return
|
||
array();}function
|
||
create_sql($R,$_a,$Xh){$J=get_val("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".q($R));foreach(indexes($R)as$C=>$v){if($C=='')continue;$J
|
||
.=";\n\n".index_sql($R,$v['type'],$C,"(".implode(", ",array_map('Adminer\idf_escape',$v['columns'])).")");}return$J;}function
|
||
truncate_sql($R){return"DELETE FROM ".table($R);}function
|
||
use_sql($Lb){}function
|
||
trigger_sql($R){return
|
||
implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".q($R)));}function
|
||
show_variables(){$J=array();foreach(get_rows("PRAGMA pragma_list")as$K){$C=$K["name"];if($C!="pragma_list"&&$C!="compile_options"){$J[$C]=array($C,'');foreach(get_rows("PRAGMA $C")as$K)$J[$C][1].=implode(", ",$K)."\n";}}return$J;}function
|
||
show_status(){$J=array();foreach(get_vals("PRAGMA compile_options")as$Kf)$J[]=explode("=",$Kf,2)+array('','');return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Sc){return
|
||
preg_match('~^(check|columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Sc);}}add_driver("pgsql","PostgreSQL");if(isset($_GET["pgsql"])){define('Adminer\DRIVER',"pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){class
|
||
PgsqlDb
|
||
extends
|
||
SqlDb{var$extension="PgSQL";var$timeout=0;private$link,$string,$database=true;function
|
||
_error($Ac,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
|
||
attach($N,$V,$F){$j=adminer()->database();set_error_handler(array($this,'_error'));$this->string="host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' user='".addcslashes($V,"'\\")."' password='".addcslashes($F,"'\\")."'";$Sh=adminer()->connectSsl();if(isset($Sh["mode"]))$this->string
|
||
.=" sslmode='".$Sh["mode"]."'";$this->link=@pg_connect("$this->string dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->link&&$j!=""){$this->database=false;$this->link=@pg_connect("$this->string dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}restore_error_handler();if($this->link)pg_set_client_encoding($this->link,"UTF8");return($this->link?'':$this->error);}function
|
||
quote($Q){return(function_exists('pg_escape_literal')?pg_escape_literal($this->link,$Q):"'".pg_escape_string($this->link,$Q)."'");}function
|
||
value($X,array$m){return($m["type"]=="bytea"&&$X!==null?pg_unescape_bytea($X):$X);}function
|
||
select_db($Lb){if($Lb==adminer()->database())return$this->database;$J=@pg_connect("$this->string dbname='".addcslashes($Lb,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($J)$this->link=$J;return$J;}function
|
||
close(){$this->link=@pg_connect("$this->string dbname='postgres'");}function
|
||
query($H,$Ti=false){$I=@pg_query($this->link,$H);$this->error="";if(!$I){$this->error=pg_last_error($this->link);$J=false;}elseif(!pg_num_fields($I)){$this->affected_rows=pg_affected_rows($I);$J=true;}else$J=new
|
||
Result($I);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$J;}function
|
||
warnings(){return
|
||
h(pg_last_notice($this->link));}function
|
||
copyFrom($R,array$L){$this->error='';set_error_handler(function($Ac,$l){$this->error=(ini_bool('html_errors')?html_entity_decode($l):$l);return
|
||
true;});$J=pg_copy_from($this->link,$R,$L);restore_error_handler();return$J;}}class
|
||
Result{var$num_rows;private$result,$offset=0;function
|
||
__construct($I){$this->result=$I;$this->num_rows=pg_num_rows($I);}function
|
||
fetch_assoc(){return
|
||
pg_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
pg_fetch_row($this->result);}function
|
||
fetch_field(){$d=$this->offset++;$J=new
|
||
\stdClass;$J->orgtable=pg_field_table($this->result,$d);$J->name=pg_field_name($this->result,$d);$J->type=pg_field_type($this->result,$d);$J->charsetnr=($J->type=="bytea"?63:0);return$J;}function
|
||
__destruct(){pg_free_result($this->result);}}}elseif(extension_loaded("pdo_pgsql")){class
|
||
PgsqlDb
|
||
extends
|
||
PdoDb{var$extension="PDO_PgSQL";var$timeout=0;function
|
||
attach($N,$V,$F){$j=adminer()->database();$kc="pgsql:host='".str_replace(":","' port='",addcslashes($N,"'\\"))."' client_encoding=utf8 dbname='".($j!=""?addcslashes($j,"'\\"):"postgres")."'";$Sh=adminer()->connectSsl();if(isset($Sh["mode"]))$kc
|
||
.=" sslmode='".$Sh["mode"]."'";return$this->dsn($kc,$V,$F);}function
|
||
select_db($Lb){return(adminer()->database()==$Lb);}function
|
||
query($H,$Ti=false){$J=parent::query($H,$Ti);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$J;}function
|
||
warnings(){}function
|
||
copyFrom($R,array$L){$J=$this->pdo->pgsqlCopyFromArray($R,$L);$this->error=idx($this->pdo->errorInfo(),2)?:'';return$J;}function
|
||
close(){}}}if(class_exists('Adminer\PgsqlDb')){class
|
||
Db
|
||
extends
|
||
PgsqlDb{function
|
||
multi_query($H){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$H),$B)){$L=explode("\n",$B[2]);$this->affected_rows=count($L);return$this->copyFrom($B[1],$L);}return
|
||
parent::multi_query($H);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Nc=array("PgSQL","PDO_PgSQL");static$pe="pgsql";var$operators=array("=","<",">","<=",">=","!=","~","!~","LIKE","LIKE %%","ILIKE","ILIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("char_length","lower","round","to_hex","to_timestamp","upper");var$grouping=array("avg","count","count distinct","max","min","sum");static
|
||
function
|
||
connect($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f))return$f;$pj=get_val("SELECT version()",0,$f);$f->flavor=(preg_match('~CockroachDB~',$pj)?'cockroach':'');$f->server_info=preg_replace('~^\D*([\d.]+[-\w]*).*~','\1',$pj);if(min_version(9,0,$f))$f->query("SET application_name = 'Adminer'");if($f->flavor=='cockroach')add_driver(DRIVER,"CockroachDB");return$f;}function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20),'Date and time'=>array("date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0),'Strings'=>array("character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0),'Binary'=>array("bit"=>0,"bit varying"=>0,"bytea"=>0),'Network'=>array("cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0),'Geometry'=>array("box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0),);if(min_version(9.2,0,$f)){$this->types['Strings']["json"]=4294967295;if(min_version(9.4,0,$f))$this->types['Strings']["jsonb"]=4294967295;}$this->insertFunctions=array("char"=>"md5","date|time"=>"now",);$this->editFunctions=array(number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",);if(min_version(12,0,$f))$this->generated=array("STORED");}function
|
||
enumLength(array$m){$xc=$this->types['User types'][$m["type"]];return($xc?type_values($xc):"");}function
|
||
setUserTypes($Si){$this->types['User types']=array_flip($Si);}function
|
||
insertReturning($R){$_a=array_filter(fields($R),function($m){return$m['auto_increment'];});return(count($_a)==1?" RETURNING ".idf_escape(key($_a)):"");}function
|
||
insertUpdate($R,array$L,array$G){foreach($L
|
||
as$O){$bj=array();$Z=array();foreach($O
|
||
as$x=>$X){$bj[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$bj)." WHERE ".implode(" AND ",$Z))&&connection()->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
|
||
false;}return
|
||
true;}function
|
||
slowQuery($H,$wi){$this->conn->query("SET statement_timeout = ".(1000*$wi));$this->conn->timeout=1000*$wi;return$H;}function
|
||
convertSearch($u,array$X,array$m){$ti="char|text";if(strpos($X["op"],"LIKE")===false)$ti
|
||
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$ti~",$m["type"])?$u:"CAST($u AS text)");}function
|
||
quoteBinary($kh){return"'\\x".bin2hex($kh)."'";}function
|
||
warnings(){return$this->conn->warnings();}function
|
||
tableHelp($C,$ne=false){$Ge=array("information_schema"=>"infoschema","pg_catalog"=>($ne?"view":"catalog"),);$_=$Ge[$_GET["ns"]];if($_)return"$_-".str_replace("_","-",$C).".html";}function
|
||
supportsIndex(array$S){return$S["Engine"]!="view";}function
|
||
hasCStyleEscapes(){static$Pa;if($Pa===null)$Pa=(get_val("SHOW standard_conforming_strings",0,$this->conn)=="off");return$Pa;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($ed){return
|
||
get_vals("SELECT datname FROM pg_database
|
||
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
|
||
ORDER BY datname");}function
|
||
limit($H,$Z,$z,$D=0,$xh=" "){return" $H$Z".($z?$xh."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$xh="\n"){return(preg_match('~^INTO~',$H)?limit($H,$Z,1,0,$xh):" $H".(is_view(table_status1($R))?$Z:$xh."WHERE ctid = (SELECT ctid FROM ".table($R).$Z.$xh."LIMIT 1)"));}function
|
||
db_collation($j,$hb){return
|
||
get_val("SELECT datcollate FROM pg_database WHERE datname = ".q($j));}function
|
||
logged_user(){return
|
||
get_val("SELECT user");}function
|
||
tables_list(){$H="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$H
|
||
.="
|
||
UNION ALL
|
||
SELECT matviewname, 'MATERIALIZED VIEW'
|
||
FROM pg_matviews
|
||
WHERE schemaname = current_schema()";$H
|
||
.="
|
||
ORDER BY 1";return
|
||
get_key_vals($H);}function
|
||
count_tables($i){$J=array();foreach($i
|
||
as$j){if(connection()->select_db($j))$J[$j]=count(tables_list());}return$J;}function
|
||
table_status($C=""){static$Cd;if($Cd===null)$Cd=get_val("SELECT 'pg_table_size'::regproc");$J=array();foreach(get_rows("SELECT
|
||
c.relname AS \"Name\",
|
||
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\"".($Cd?",
|
||
pg_table_size(c.oid) AS \"Data_length\",
|
||
pg_indexes_size(c.oid) AS \"Index_length\"":"").",
|
||
obj_description(c.oid, 'pg_class') AS \"Comment\",
|
||
".(min_version(12)?"''":"CASE WHEN c.relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
|
||
c.reltuples as \"Rows\",
|
||
n.nspname
|
||
FROM pg_class c
|
||
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
|
||
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
|
||
".($C!=""?"AND relname = ".q($C):"ORDER BY relname"))as$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return
|
||
in_array($S["Engine"],array("view","materialized view"));}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$J=array();$ra=array('timestamp without time zone'=>'timestamp','timestamp with time zone'=>'timestamptz',);foreach(get_rows("SELECT
|
||
a.attname AS field,
|
||
format_type(a.atttypid, a.atttypmod) AS full_type,
|
||
pg_get_expr(d.adbin, d.adrelid) AS default,
|
||
a.attnotnull::int,
|
||
col_description(c.oid, a.attnum) AS comment".(min_version(10)?",
|
||
a.attidentity".(min_version(12)?",
|
||
a.attgenerated":""):"")."
|
||
FROM pg_class c
|
||
JOIN pg_namespace n ON c.relnamespace = n.oid
|
||
JOIN pg_attribute a ON c.oid = a.attrelid
|
||
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
|
||
WHERE c.relname = ".q($R)."
|
||
AND n.nspname = current_schema()
|
||
AND NOT a.attisdropped
|
||
AND a.attnum > 0
|
||
ORDER BY a.attnum")as$K){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$K["full_type"],$B);list(,$U,$y,$K["length"],$ka,$va)=$B;$K["length"].=$va;$Xa=$U.$ka;if(isset($ra[$Xa])){$K["type"]=$ra[$Xa];$K["full_type"]=$K["type"].$y.$va;}else{$K["type"]=$U;$K["full_type"]=$K["type"].$y.$ka.$va;}if(in_array($K['attidentity'],array('a','d')))$K['default']='GENERATED '.($K['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$K["generated"]=($K["attgenerated"]=="s"?"STORED":"");$K["null"]=!$K["attnotnull"];$K["auto_increment"]=$K['attidentity']||preg_match('~^nextval\(~i',$K["default"])||preg_match('~^unique_rowid\(~',$K["default"]);$K["privileges"]=array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1);if(preg_match('~(.+)::[^,)]+(.*)~',$K["default"],$B))$K["default"]=($B[1]=="NULL"?null:idf_unescape($B[1]).$B[2]);$J[$K["field"]]=$K;}return$J;}function
|
||
indexes($R,$g=null){$g=connection($g);$J=array();$gi=get_val("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($R),0,$g);$e=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $gi AND attnum > 0",$g);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, (indpred IS NOT NULL)::int as indispartial
|
||
FROM pg_index i, pg_class ci
|
||
WHERE i.indrelid = $gi AND ci.oid = i.indexrelid
|
||
ORDER BY indisprimary DESC, indisunique DESC",$g)as$K){$Xg=$K["relname"];$J[$Xg]["type"]=($K["indispartial"]?"INDEX":($K["indisprimary"]?"PRIMARY":($K["indisunique"]?"UNIQUE":"INDEX")));$J[$Xg]["columns"]=array();$J[$Xg]["descs"]=array();if($K["indkey"]){foreach(explode(" ",$K["indkey"])as$Xd)$J[$Xg]["columns"][]=$e[$Xd];foreach(explode(" ",$K["indoption"])as$Yd)$J[$Xg]["descs"][]=(intval($Yd)&1?'1':null);}$J[$Xg]["lengths"]=array();}return$J;}function
|
||
foreign_keys($R){$J=array();foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
|
||
FROM pg_constraint
|
||
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = ".q($R)." AND pn.nspname = current_schema())
|
||
AND contype = 'f'::char
|
||
ORDER BY conkey, conname")as$K){if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$K['definition'],$B)){$K['source']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$B[2],$Le)){$K['ns']=idf_unescape($Le[2]);$K['table']=idf_unescape($Le[4]);}$K['target']=array_map('Adminer\idf_unescape',array_map('trim',explode(',',$B[3])));$K['on_delete']=(preg_match("~ON DELETE (".driver()->onActions.")~",$B[4],$Le)?$Le[1]:'NO ACTION');$K['on_update']=(preg_match("~ON UPDATE (".driver()->onActions.")~",$B[4],$Le)?$Le[1]:'NO ACTION');$J[$K['conname']]=$K;}}return$J;}function
|
||
view($C){return
|
||
array("select"=>trim(get_val("SELECT pg_get_viewdef(".get_val("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = ".q($C)).")")));}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="information_schema";}function
|
||
error(){$J=h(connection()->error);if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$J,$B))$J=$B[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($B[3]).'})(.*)~','\1<b>\2</b>',$B[2]).$B[4];return
|
||
nl_br($J);}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($c?" ENCODING ".idf_escape($c):""));}function
|
||
drop_databases($i){connection()->close();return
|
||
apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');}function
|
||
rename_database($C,$c){connection()->close();return
|
||
queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($C));}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$C,$n,$gd,$mb,$vc,$c,$_a,$kg){$b=array();$Kg=array();if($R!=""&&$R!=$C)$Kg[]="ALTER TABLE ".table($R)." RENAME TO ".table($C);$yh="";foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b[]="DROP $d";else{$lj=$X[5];unset($X[5]);if($m[0]==""){if(isset($X[6]))$X[1]=($X[1]==" bigint"?" big":($X[1]==" smallint"?" small":" "))."serial";$b[]=($R!=""?"ADD ":" ").implode($X);if(isset($X[6]))$b[]=($R!=""?"ADD":" ")." PRIMARY KEY ($X[0])";}else{if($d!=$X[0])$Kg[]="ALTER TABLE ".table($C)." RENAME $d TO $X[0]";$b[]="ALTER $d TYPE$X[1]";$zh=$R."_".idf_unescape($X[0])."_seq";$b[]="ALTER $d ".($X[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) STORED~','EXPRESSION\1',$X[3]):(isset($X[6])?"SET DEFAULT nextval(".q($zh).")":"DROP DEFAULT"));if(isset($X[6]))$yh="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($zh)." OWNED BY ".idf_escape($R).".$X[0]";$b[]="ALTER $d ".($X[2]==" NULL"?"DROP NOT":"SET").$X[2];}if($m[0]!=""||$lj!="")$Kg[]="COMMENT ON COLUMN ".table($C).".$X[0] IS ".($lj!=""?substr($lj,9):"''");}}$b=array_merge($b,$gd);if($R=="")array_unshift($Kg,"CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)");elseif($b)array_unshift($Kg,"ALTER TABLE ".table($R)."\n".implode(",\n",$b));if($yh)array_unshift($Kg,$yh);if($mb!==null)$Kg[]="COMMENT ON TABLE ".table($C)." IS ".q($mb);foreach($Kg
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
alter_indexes($R,$b){$h=array();$fc=array();$Kg=array();foreach($b
|
||
as$X){if($X[0]!="INDEX")$h[]=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");elseif($X[2]=="DROP")$fc[]=idf_escape($X[1]);else$Kg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($h)array_unshift($Kg,"ALTER TABLE ".table($R).implode(",",$h));if($fc)array_unshift($Kg,"DROP INDEX ".implode(", ",$fc));foreach($Kg
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
truncate_tables($T){return
|
||
queries("TRUNCATE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
drop_views($rj){return
|
||
drop_tables($rj);}function
|
||
drop_tables($T){foreach($T
|
||
as$R){$P=table_status1($R);if(!queries("DROP ".strtoupper($P["Engine"])." ".table($R)))return
|
||
false;}return
|
||
true;}function
|
||
move_tables($T,$rj,$oi){foreach(array_merge($T,$rj)as$R){$P=table_status1($R);if(!queries("ALTER ".strtoupper($P["Engine"])." ".table($R)." SET SCHEMA ".idf_escape($oi)))return
|
||
false;}return
|
||
true;}function
|
||
trigger($C,$R){if($C=="")return
|
||
array("Statement"=>"EXECUTE PROCEDURE ()");$e=array();$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($R)." AND trigger_name = ".q($C);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$K)$e[]=$K["event_object_column"];$J=array();foreach(get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement"
|
||
FROM information_schema.triggers'."
|
||
$Z
|
||
ORDER BY event_manipulation DESC")as$K){if($e&&$K["Event"]=="UPDATE")$K["Event"].=" OF";$K["Of"]=implode(", ",$e);if($J)$K["Event"].=" OR $J[Event]";$J=$K;}return$J;}function
|
||
triggers($R){$J=array();foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($R))as$K){$Mi=trigger($K["trigger_name"],$R);$J[$Mi["Trigger"]]=array($Mi["Timing"],$Mi["Event"]);}return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE","INSERT OR UPDATE","INSERT OR UPDATE OF","DELETE OR INSERT","DELETE OR UPDATE","DELETE OR UPDATE OF","DELETE OR INSERT OR UPDATE","DELETE OR INSERT OR UPDATE OF"),"Type"=>array("FOR EACH ROW","FOR EACH STATEMENT"),);}function
|
||
routine($C,$U){$L=get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
|
||
FROM information_schema.routines
|
||
WHERE routine_schema = current_schema() AND specific_name = '.q($C));$J=idx($L,0,array());$J["returns"]=array("type"=>$J["type_udt_name"]);$J["fields"]=get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
|
||
FROM information_schema.parameters
|
||
WHERE specific_schema = current_schema() AND specific_name = '.q($C).'
|
||
ORDER BY ordinal_position');return$J;}function
|
||
routines(){return
|
||
get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
|
||
FROM information_schema.routines
|
||
WHERE routine_schema = current_schema()
|
||
ORDER BY SPECIFIC_NAME');}function
|
||
routine_languages(){return
|
||
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
|
||
routine_id($C,$K){$J=array();foreach($K["fields"]as$m){$y=$m["length"];$J[]=$m["type"].($y?"($y)":"");}return
|
||
idf_escape($C)."(".implode(", ",$J).")";}function
|
||
last_id($I){$K=(is_object($I)?$I->fetch_row():array());return($K?$K[0]:0);}function
|
||
explain($f,$H){return$f->query("EXPLAIN $H");}function
|
||
found_rows($S,$Z){if(preg_match("~ rows=([0-9]+)~",get_val("EXPLAIN SELECT * FROM ".idf_escape($S["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Wg))return$Wg[1];}function
|
||
types(){return
|
||
get_key_vals("SELECT oid, typname
|
||
FROM pg_type
|
||
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
|
||
AND typtype IN ('b','d','e')
|
||
AND typelem = 0");}function
|
||
type_values($t){$_c=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $t ORDER BY enumsortorder");return($_c?"'".implode("', '",array_map('addslashes',$_c))."'":"");}function
|
||
schemas(){return
|
||
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
|
||
get_schema(){return
|
||
get_val("SELECT current_schema()");}function
|
||
set_schema($mh,$g=null){if(!$g)$g=connection();$J=$g->query("SET search_path TO ".idf_escape($mh));driver()->setUserTypes(types());return$J;}function
|
||
foreign_keys_sql($R){$J="";$P=table_status1($R);$cd=foreign_keys($R);ksort($cd);foreach($cd
|
||
as$bd=>$ad)$J
|
||
.="ALTER TABLE ONLY ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." ADD CONSTRAINT ".idf_escape($bd)." $ad[definition] ".($ad['deferrable']?'DEFERRABLE':'NOT DEFERRABLE').";\n";return($J?"$J\n":$J);}function
|
||
create_sql($R,$_a,$Xh){$ch=array();$_h=array();$P=table_status1($R);if(is_view($P)){$qj=view($R);return
|
||
rtrim("CREATE VIEW ".idf_escape($R)." AS $qj[select]",";");}$n=fields($R);if(count($P)<2||empty($n))return
|
||
false;$J="CREATE TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." (\n ";foreach($n
|
||
as$m){$hg=idf_escape($m['field']).' '.$m['full_type'].default_value($m).($m['null']?"":" NOT NULL");$ch[]=$hg;if(preg_match('~nextval\(\'([^\']+)\'\)~',$m['default'],$Ne)){$zh=$Ne[1];$Mh=first(get_rows((min_version(10)?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($zh)):"SELECT * FROM $zh"),null,"-- "));$_h[]=($Xh=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $zh;\n":"")."CREATE SEQUENCE $zh INCREMENT $Mh[increment_by] MINVALUE $Mh[min_value] MAXVALUE $Mh[max_value]".($_a&&$Mh['last_value']?" START ".($Mh["last_value"]+1):"")." CACHE $Mh[cache_value];";}}if(!empty($_h))$J=implode("\n\n",$_h)."\n\n$J";$G="";foreach(indexes($R)as$Vd=>$v){if($v['type']=='PRIMARY'){$G=$Vd;$ch[]="CONSTRAINT ".idf_escape($Vd)." PRIMARY KEY (".implode(', ',array_map('Adminer\idf_escape',$v['columns'])).")";}}foreach(driver()->checkConstraints($R)as$sb=>$ub)$ch[]="CONSTRAINT ".idf_escape($sb)." CHECK $ub";$J
|
||
.=implode(",\n ",$ch)."\n) WITH (oids = ".($P['Oid']?'true':'false').");";if($P['Comment'])$J
|
||
.="\n\nCOMMENT ON TABLE ".idf_escape($P['nspname']).".".idf_escape($P['Name'])." IS ".q($P['Comment']).";";foreach($n
|
||
as$Uc=>$m){if($m['comment'])$J
|
||
.="\n\nCOMMENT ON COLUMN ".idf_escape($P['nspname']).".".idf_escape($P['Name']).".".idf_escape($Uc)." IS ".q($m['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($R).($G?" AND indexname != ".q($G):""),null,"-- ")as$K)$J
|
||
.="\n\n$K[indexdef];";return
|
||
rtrim($J,';');}function
|
||
truncate_sql($R){return"TRUNCATE ".table($R);}function
|
||
trigger_sql($R){$P=table_status1($R);$J="";foreach(triggers($R)as$Li=>$Ki){$Mi=trigger($Li,$P['Name']);$J
|
||
.="\nCREATE TRIGGER ".idf_escape($Mi['Trigger'])." $Mi[Timing] $Mi[Event] ON ".idf_escape($P["nspname"]).".".idf_escape($P['Name'])." $Mi[Type] $Mi[Statement];;\n";}return$J;}function
|
||
use_sql($Lb){return"\connect ".idf_escape($Lb);}function
|
||
show_variables(){return
|
||
get_rows("SHOW ALL");}function
|
||
process_list(){return
|
||
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(min_version(9.2)?"pid":"procpid"));}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Sc){return
|
||
preg_match('~^(check|database|table|columns|sql|indexes|descidx|comment|view|'.(min_version(9.3)?'materializedview|':'').'scheme|'.(min_version(11)?'procedure|':'').'routine|sequence|trigger|type|variables|drop_col'.(connection()->flavor=='cockroach'?'':'|processlist').'|kill|dump)$~',$Sc);}function
|
||
kill_process($X){return
|
||
queries("SELECT pg_terminate_backend(".number($X).")");}function
|
||
connection_id(){return"SELECT pg_backend_pid()";}function
|
||
max_connections(){return
|
||
get_val("SHOW max_connections");}}add_driver("oracle","Oracle (beta)");if(isset($_GET["oracle"])){define('Adminer\DRIVER',"oracle");if(extension_loaded("oci8")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
SqlDb{var$extension="oci8";var$_current_db;private$link;function
|
||
_error($Ac,$l){if(ini_bool("html_errors"))$l=html_entity_decode(strip_tags($l));$l=preg_replace('~^[^:]*: ~','',$l);$this->error=$l;}function
|
||
attach($N,$V,$F){$this->link=@oci_new_connect($V,$F,$N,"AL32UTF8");if($this->link){$this->server_info=oci_server_version($this->link);return'';}$l=oci_error();return$l["message"];}function
|
||
quote($Q){return"'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Lb){$this->_current_db=$Lb;return
|
||
true;}function
|
||
query($H,$Ti=false){$I=oci_parse($this->link,$H);$this->error="";if(!$I){$l=oci_error($this->link);$this->errno=$l["code"];$this->error=$l["message"];return
|
||
false;}set_error_handler(array($this,'_error'));$J=@oci_execute($I);restore_error_handler();if($J){if(oci_num_fields($I))return
|
||
new
|
||
Result($I);$this->affected_rows=oci_num_rows($I);oci_free_statement($I);}return$J;}}class
|
||
Result{var$num_rows;private$result,$offset=1;function
|
||
__construct($I){$this->result=$I;}private
|
||
function
|
||
convert($K){foreach((array)$K
|
||
as$x=>$X){if(is_a($X,'OCILob')||is_a($X,'OCI-Lob'))$K[$x]=$X->load();}return$K;}function
|
||
fetch_assoc(){return$this->convert(oci_fetch_assoc($this->result));}function
|
||
fetch_row(){return$this->convert(oci_fetch_row($this->result));}function
|
||
fetch_field(){$d=$this->offset++;$J=new
|
||
\stdClass;$J->name=oci_field_name($this->result,$d);$J->type=oci_field_type($this->result,$d);$J->charsetnr=(preg_match("~raw|blob|bfile~",$J->type)?63:0);return$J;}function
|
||
__destruct(){oci_free_statement($this->result);}}}elseif(extension_loaded("pdo_oci")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_OCI";var$_current_db;function
|
||
attach($N,$V,$F){return$this->dsn("oci:dbname=//$N;charset=AL32UTF8",$V,$F);}function
|
||
select_db($Lb){$this->_current_db=$Lb;return
|
||
true;}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Nc=array("OCI8","PDO_OCI");static$pe="oracle";var$insertFunctions=array("date"=>"current_date","timestamp"=>"current_timestamp",);var$editFunctions=array("number|float|double"=>"+/-","date|timestamp"=>"+ interval/- interval","char|clob"=>"||",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");var$functions=array("length","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("number"=>38,"binary_float"=>12,"binary_double"=>21),'Date and time'=>array("date"=>10,"timestamp"=>29,"interval year"=>12,"interval day"=>28),'Strings'=>array("char"=>2000,"varchar2"=>4000,"nchar"=>2000,"nvarchar2"=>4000,"clob"=>4294967295,"nclob"=>4294967295),'Binary'=>array("raw"=>2000,"long raw"=>2147483648,"blob"=>4294967295,"bfile"=>4294967296),);}function
|
||
begin(){return
|
||
true;}function
|
||
insertUpdate($R,array$L,array$G){foreach($L
|
||
as$O){$bj=array();$Z=array();foreach($O
|
||
as$x=>$X){$bj[]="$x = $X";if(isset($G[idf_unescape($x)]))$Z[]="$x = $X";}if(!(($Z&&queries("UPDATE ".table($R)." SET ".implode(", ",$bj)." WHERE ".implode(" AND ",$Z))&&connection()->affected_rows)||queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES (".implode(", ",$O).")")))return
|
||
false;}return
|
||
true;}function
|
||
hasCStyleEscapes(){return
|
||
true;}}function
|
||
idf_escape($u){return'"'.str_replace('"','""',$u).'"';}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($ed){return
|
||
get_vals("SELECT DISTINCT tablespace_name FROM (
|
||
SELECT tablespace_name FROM user_tablespaces
|
||
UNION SELECT tablespace_name FROM all_tables WHERE tablespace_name IS NOT NULL
|
||
)
|
||
ORDER BY 1");}function
|
||
limit($H,$Z,$z,$D=0,$xh=" "){return($D?" * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z) t WHERE rownum <= ".($z+$D).") WHERE rnum > $D":($z?" * FROM (SELECT $H$Z) WHERE rownum <= ".($z+$D):" $H$Z"));}function
|
||
limit1($R,$H,$Z,$xh="\n"){return" $H$Z";}function
|
||
db_collation($j,$hb){return
|
||
get_val("SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'");}function
|
||
logged_user(){return
|
||
get_val("SELECT USER FROM DUAL");}function
|
||
get_current_db(){$j=connection()->_current_db?:DB;unset(connection()->_current_db);return$j;}function
|
||
where_owner($_g,$bg="owner"){if(!$_GET["ns"])return'';return"$_g$bg = sys_context('USERENV', 'CURRENT_SCHEMA')";}function
|
||
views_table($e){$bg=where_owner('');return"(SELECT $e FROM all_views WHERE ".($bg?:"rownum < 0").")";}function
|
||
tables_list(){$qj=views_table("view_name");$bg=where_owner(" AND ");return
|
||
get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = ".q(DB)."$bg
|
||
UNION SELECT view_name, 'view' FROM $qj
|
||
ORDER BY 1");}function
|
||
count_tables($i){$J=array();foreach($i
|
||
as$j)$J[$j]=get_val("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = ".q($j));return$J;}function
|
||
table_status($C=""){$J=array();$qh=q($C);$j=get_current_db();$qj=views_table("view_name");$bg=where_owner(" AND ");foreach(get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = '.q($j).$bg.($C!=""?" AND table_name = $qh":"")."
|
||
UNION SELECT view_name, 'view', 0, 0 FROM $qj".($C!=""?" WHERE view_name = $qh":"")."
|
||
ORDER BY 1")as$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return$S["Engine"]=="view";}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$J=array();$bg=where_owner(" AND ");foreach(get_rows("SELECT * FROM all_tab_columns WHERE table_name = ".q($R)."$bg ORDER BY column_id")as$K){$U=$K["DATA_TYPE"];$y="$K[DATA_PRECISION],$K[DATA_SCALE]";if($y==",")$y=$K["CHAR_COL_DECL_LENGTH"];$J[$K["COLUMN_NAME"]]=array("field"=>$K["COLUMN_NAME"],"full_type"=>$U.($y?"($y)":""),"type"=>strtolower($U),"length"=>$y,"default"=>$K["DATA_DEFAULT"],"null"=>($K["NULLABLE"]=="Y"),"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),);}return$J;}function
|
||
indexes($R,$g=null){$J=array();$bg=where_owner(" AND ","aic.table_owner");foreach(get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
|
||
FROM all_ind_columns aic
|
||
LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
|
||
LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
|
||
WHERE aic.table_name = ".q($R)."$bg
|
||
ORDER BY ac.constraint_type, aic.column_position",$g)as$K){$Vd=$K["INDEX_NAME"];$jb=$K["DATA_DEFAULT"];$jb=($jb?trim($jb,'"'):$K["COLUMN_NAME"]);$J[$Vd]["type"]=($K["CONSTRAINT_TYPE"]=="P"?"PRIMARY":($K["CONSTRAINT_TYPE"]=="U"?"UNIQUE":"INDEX"));$J[$Vd]["columns"][]=$jb;$J[$Vd]["lengths"][]=($K["CHAR_LENGTH"]&&$K["CHAR_LENGTH"]!=$K["COLUMN_LENGTH"]?$K["CHAR_LENGTH"]:null);$J[$Vd]["descs"][]=($K["DESCEND"]&&$K["DESCEND"]=="DESC"?'1':null);}return$J;}function
|
||
view($C){$qj=views_table("view_name, text");$L=get_rows('SELECT text "select" FROM '.$qj.' WHERE view_name = '.q($C));return
|
||
reset($L);}function
|
||
collations(){return
|
||
array();}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){return
|
||
h(connection()->error);}function
|
||
explain($f,$H){$f->query("EXPLAIN PLAN FOR $H");return$f->query("SELECT * FROM plan_table");}function
|
||
found_rows($S,$Z){}function
|
||
auto_increment(){return"";}function
|
||
alter_table($R,$C,$n,$gd,$mb,$vc,$c,$_a,$kg){$b=$fc=array();$Uf=($R?fields($R):array());foreach($n
|
||
as$m){$X=$m[1];if($X&&$m[0]!=""&&idf_escape($m[0])!=$X[0])queries("ALTER TABLE ".table($R)." RENAME COLUMN ".idf_escape($m[0])." TO $X[0]");$Tf=$Uf[$m[0]];if($X&&$Tf){$yf=process_field($Tf,$Tf);if($X[2]==$yf[2])$X[2]="";}if($X)$b[]=($R!=""?($m[0]!=""?"MODIFY (":"ADD ("):" ").implode($X).($R!=""?")":"");else$fc[]=idf_escape($m[0]);}if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)");return(!$b||queries("ALTER TABLE ".table($R)."\n".implode("\n",$b)))&&(!$fc||queries("ALTER TABLE ".table($R)." DROP (".implode(", ",$fc).")"))&&($R==$C||queries("ALTER TABLE ".table($R)." RENAME TO ".table($C)));}function
|
||
alter_indexes($R,$b){$fc=array();$Kg=array();foreach($b
|
||
as$X){if($X[0]!="INDEX"){$X[2]=preg_replace('~ DESC$~','',$X[2]);$h=($X[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($X[1]):"\nADD".($X[1]!=""?" CONSTRAINT ".idf_escape($X[1]):"")." $X[0] ".($X[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$X[2]).")");array_unshift($Kg,"ALTER TABLE ".table($R).$h);}elseif($X[2]=="DROP")$fc[]=idf_escape($X[1]);else$Kg[]="CREATE INDEX ".idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R)." (".implode(", ",$X[2]).")";}if($fc)array_unshift($Kg,"DROP INDEX ".implode(", ",$fc));foreach($Kg
|
||
as$H){if(!queries($H))return
|
||
false;}return
|
||
true;}function
|
||
foreign_keys($R){$J=array();$H="SELECT c_list.CONSTRAINT_NAME as NAME,
|
||
c_src.COLUMN_NAME as SRC_COLUMN,
|
||
c_dest.OWNER as DEST_DB,
|
||
c_dest.TABLE_NAME as DEST_TABLE,
|
||
c_dest.COLUMN_NAME as DEST_COLUMN,
|
||
c_list.DELETE_RULE as ON_DELETE
|
||
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
|
||
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
|
||
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
|
||
AND c_list.CONSTRAINT_TYPE = 'R'
|
||
AND c_src.TABLE_NAME = ".q($R);foreach(get_rows($H)as$K)$J[$K['NAME']]=array("db"=>$K['DEST_DB'],"table"=>$K['DEST_TABLE'],"source"=>array($K['SRC_COLUMN']),"target"=>array($K['DEST_COLUMN']),"on_delete"=>$K['ON_DELETE'],"on_update"=>null,);return$J;}function
|
||
truncate_tables($T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views($rj){return
|
||
apply_queries("DROP VIEW",$rj);}function
|
||
drop_tables($T){return
|
||
apply_queries("DROP TABLE",$T);}function
|
||
last_id($I){return
|
||
0;}function
|
||
schemas(){$J=get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");return($J?:get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = ".q(DB)." ORDER BY 1"));}function
|
||
get_schema(){return
|
||
get_val("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");}function
|
||
set_schema($oh,$g=null){if(!$g)$g=connection();return$g->query("ALTER SESSION SET CURRENT_SCHEMA = ".idf_escape($oh));}function
|
||
show_variables(){return
|
||
get_rows('SELECT name, display_value FROM v$parameter');}function
|
||
show_status(){$J=array();$L=get_rows('SELECT * FROM v$instance');foreach(reset($L)as$x=>$X)$J[]=array($x,$X);return$J;}function
|
||
process_list(){return
|
||
get_rows('SELECT
|
||
sess.process AS "process",
|
||
sess.username AS "user",
|
||
sess.schemaname AS "schema",
|
||
sess.status AS "status",
|
||
sess.wait_class AS "wait_class",
|
||
sess.seconds_in_wait AS "seconds_in_wait",
|
||
sql.sql_text AS "sql_text",
|
||
sess.machine AS "machine",
|
||
sess.port AS "port"
|
||
FROM v$session sess LEFT OUTER JOIN v$sql sql
|
||
ON sql.sql_id = sess.sql_id
|
||
WHERE sess.type = \'USER\'
|
||
ORDER BY PROCESS
|
||
');}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Sc){return
|
||
preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~',$Sc);}}add_driver("mssql","MS SQL");if(isset($_GET["mssql"])){define('Adminer\DRIVER',"mssql");if(extension_loaded("sqlsrv")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
SqlDb{var$extension="sqlsrv";private$link,$result;private
|
||
function
|
||
get_error(){$this->error="";foreach(sqlsrv_errors()as$l){$this->errno=$l["code"];$this->error
|
||
.="$l[message]\n";}$this->error=rtrim($this->error);}function
|
||
attach($N,$V,$F){$tb=array("UID"=>$V,"PWD"=>$F,"CharacterSet"=>"UTF-8");$Sh=adminer()->connectSsl();if(isset($Sh["Encrypt"]))$tb["Encrypt"]=$Sh["Encrypt"];if(isset($Sh["TrustServerCertificate"]))$tb["TrustServerCertificate"]=$Sh["TrustServerCertificate"];$j=adminer()->database();if($j!="")$tb["Database"]=$j;$this->link=@sqlsrv_connect(preg_replace('~:~',',',$N),$tb);if($this->link){$Zd=sqlsrv_server_info($this->link);$this->server_info=$Zd['SQLServerVersion'];}else$this->get_error();return($this->link?'':$this->error);}function
|
||
quote($Q){$Ui=strlen($Q)!=strlen(utf8_decode($Q));return($Ui?"N":"")."'".str_replace("'","''",$Q)."'";}function
|
||
select_db($Lb){return$this->query(use_sql($Lb));}function
|
||
query($H,$Ti=false){$I=sqlsrv_query($this->link,$H);$this->error="";if(!$I){$this->get_error();return
|
||
false;}return$this->store_result($I);}function
|
||
multi_query($H){$this->result=sqlsrv_query($this->link,$H);$this->error="";if(!$this->result){$this->get_error();return
|
||
false;}return
|
||
true;}function
|
||
store_result($I=null){if(!$I)$I=$this->result;if(!$I)return
|
||
false;if(sqlsrv_field_metadata($I))return
|
||
new
|
||
Result($I);$this->affected_rows=sqlsrv_rows_affected($I);return
|
||
true;}function
|
||
next_result(){return$this->result?!!sqlsrv_next_result($this->result):false;}}class
|
||
Result{var$num_rows;private$result,$offset=0,$fields;function
|
||
__construct($I){$this->result=$I;}private
|
||
function
|
||
convert($K){foreach((array)$K
|
||
as$x=>$X){if(is_a($X,'DateTime'))$K[$x]=$X->format("Y-m-d H:i:s");}return$K;}function
|
||
fetch_assoc(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_ASSOC));}function
|
||
fetch_row(){return$this->convert(sqlsrv_fetch_array($this->result,SQLSRV_FETCH_NUMERIC));}function
|
||
fetch_field(){if(!$this->fields)$this->fields=sqlsrv_field_metadata($this->result);$m=$this->fields[$this->offset++];$J=new
|
||
\stdClass;$J->name=$m["Name"];$J->type=($m["Type"]==1?254:15);$J->charsetnr=0;return$J;}function
|
||
seek($D){for($s=0;$s<$D;$s++)sqlsrv_fetch($this->result);}function
|
||
__destruct(){sqlsrv_free_stmt($this->result);}}function
|
||
last_id($I){return
|
||
get_val("SELECT SCOPE_IDENTITY()");}function
|
||
explain($f,$H){$f->query("SET SHOWPLAN_ALL ON");$J=$f->query($H);$f->query("SET SHOWPLAN_ALL OFF");return$J;}}else{abstract
|
||
class
|
||
MssqlDb
|
||
extends
|
||
PdoDb{function
|
||
select_db($Lb){return$this->query(use_sql($Lb));}function
|
||
lastInsertId(){return$this->pdo->lastInsertId();}}function
|
||
last_id($I){return
|
||
connection()->lastInsertId();}function
|
||
explain($f,$H){}if(extension_loaded("pdo_sqlsrv")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_SQLSRV";function
|
||
attach($N,$V,$F){return$this->dsn("sqlsrv:Server=".str_replace(":",",",$N),$V,$F);}}}elseif(extension_loaded("pdo_dblib")){class
|
||
Db
|
||
extends
|
||
MssqlDb{var$extension="PDO_DBLIB";function
|
||
attach($N,$V,$F){return$this->dsn("dblib:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F);}}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Nc=array("SQLSRV","PDO_SQLSRV","PDO_DBLIB");static$pe="mssql";var$insertFunctions=array("date|time"=>"getdate");var$editFunctions=array("int|decimal|real|float|money|datetime"=>"+/-","char|text"=>"+",);var$operators=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL");var$functions=array("len","lower","round","upper");var$grouping=array("avg","count","count distinct","max","min","sum");var$generated=array("PERSISTED","VIRTUAL");var$onActions="NO ACTION|CASCADE|SET NULL|SET DEFAULT";static
|
||
function
|
||
connect($N,$V,$F){if($N=="")$N="localhost:1433";return
|
||
parent::connect($N,$V,$F);}function
|
||
__construct(Db$f){parent::__construct($f);$this->types=array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"int"=>10,"bigint"=>20,"bit"=>1,"decimal"=>0,"real"=>12,"float"=>53,"smallmoney"=>10,"money"=>20),'Date and time'=>array("date"=>10,"smalldatetime"=>19,"datetime"=>19,"datetime2"=>19,"time"=>8,"datetimeoffset"=>10),'Strings'=>array("char"=>8000,"varchar"=>8000,"text"=>2147483647,"nchar"=>4000,"nvarchar"=>4000,"ntext"=>1073741823),'Binary'=>array("binary"=>8000,"varbinary"=>8000,"image"=>2147483647),);}function
|
||
insertUpdate($R,array$L,array$G){$n=fields($R);$bj=array();$Z=array();$O=reset($L);$e="c".implode(", c",range(1,count($O)));$Oa=0;$de=array();foreach($O
|
||
as$x=>$X){$Oa++;$C=idf_unescape($x);if(!$n[$C]["auto_increment"])$de[$x]="c$Oa";if(isset($G[$C]))$Z[]="$x = c$Oa";else$bj[]="$x = c$Oa";}$mj=array();foreach($L
|
||
as$O)$mj[]="(".implode(", ",$O).")";if($Z){$Od=queries("SET IDENTITY_INSERT ".table($R)." ON");$J=queries("MERGE ".table($R)." USING (VALUES\n\t".implode(",\n\t",$mj)."\n) AS source ($e) ON ".implode(" AND ",$Z).($bj?"\nWHEN MATCHED THEN UPDATE SET ".implode(", ",$bj):"")."\nWHEN NOT MATCHED THEN INSERT (".implode(", ",array_keys($Od?$O:$de)).") VALUES (".($Od?$e:implode(", ",$de)).");");if($Od)queries("SET IDENTITY_INSERT ".table($R)." OFF");}else$J=queries("INSERT INTO ".table($R)." (".implode(", ",array_keys($O)).") VALUES\n".implode(",\n",$mj));return$J;}function
|
||
begin(){return
|
||
queries("BEGIN TRANSACTION");}function
|
||
tableHelp($C,$ne=false){$Ge=array("sys"=>"catalog-views/sys-","INFORMATION_SCHEMA"=>"information-schema-views/",);$_=$Ge[get_schema()];if($_)return"relational-databases/system-$_".preg_replace('~_~','-',strtolower($C))."-transact-sql";}}function
|
||
idf_escape($u){return"[".str_replace("]","]]",$u)."]";}function
|
||
table($u){return($_GET["ns"]!=""?idf_escape($_GET["ns"]).".":"").idf_escape($u);}function
|
||
get_databases($ed){return
|
||
get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");}function
|
||
limit($H,$Z,$z,$D=0,$xh=" "){return($z?" TOP (".($z+$D).")":"")." $H$Z";}function
|
||
limit1($R,$H,$Z,$xh="\n"){return
|
||
limit($H,$Z,1,0,$xh);}function
|
||
db_collation($j,$hb){return
|
||
get_val("SELECT collation_name FROM sys.databases WHERE name = ".q($j));}function
|
||
logged_user(){return
|
||
get_val("SELECT SUSER_NAME()");}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ORDER BY name");}function
|
||
count_tables($i){$J=array();foreach($i
|
||
as$j){connection()->select_db($j);$J[$j]=get_val("SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES");}return$J;}function
|
||
table_status($C=""){$J=array();foreach(get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT value FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment
|
||
FROM sys.all_objects AS ao
|
||
WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$K)$J[$K["Name"]]=$K;return$J;}function
|
||
is_view($S){return$S["Engine"]=="VIEW";}function
|
||
fk_support($S){return
|
||
true;}function
|
||
fields($R){$ob=get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', ".q(get_schema()).", 'table', ".q($R).", 'column', NULL)");$J=array();$ei=get_val("SELECT object_id FROM sys.all_objects WHERE schema_id = SCHEMA_ID(".q(get_schema()).") AND type IN ('S', 'U', 'V') AND name = ".q($R));foreach(get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, d.definition [default], d.name default_constraint, i.is_primary_key
|
||
FROM sys.all_columns c
|
||
JOIN sys.types t ON c.user_type_id = t.user_type_id
|
||
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.object_id
|
||
LEFT JOIN sys.index_columns ic ON c.object_id = ic.object_id AND c.column_id = ic.column_id
|
||
LEFT JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
|
||
WHERE c.object_id = ".q($ei))as$K){$U=$K["type"];$y=(preg_match("~char|binary~",$U)?intval($K["max_length"])/($U[0]=='n'?2:1):($U=="decimal"?"$K[precision],$K[scale]":""));$J[$K["name"]]=array("field"=>$K["name"],"full_type"=>$U.($y?"($y)":""),"type"=>$U,"length"=>$y,"default"=>(preg_match("~^\('(.*)'\)$~",$K["default"],$B)?str_replace("''","'",$B[1]):$K["default"]),"default_constraint"=>$K["default_constraint"],"null"=>$K["is_nullable"],"auto_increment"=>$K["is_identity"],"collation"=>$K["collation_name"],"privileges"=>array("insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1),"primary"=>$K["is_primary_key"],"comment"=>$ob[$K["name"]],);}foreach(get_rows("SELECT * FROM sys.computed_columns WHERE object_id = ".q($ei))as$K){$J[$K["name"]]["generated"]=($K["is_persisted"]?"PERSISTED":"VIRTUAL");$J[$K["name"]]["default"]=$K["definition"];}return$J;}function
|
||
indexes($R,$g=null){$J=array();foreach(get_rows("SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
|
||
FROM sys.indexes i
|
||
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
|
||
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
|
||
WHERE OBJECT_NAME(i.object_id) = ".q($R),$g)as$K){$C=$K["name"];$J[$C]["type"]=($K["is_primary_key"]?"PRIMARY":($K["is_unique"]?"UNIQUE":"INDEX"));$J[$C]["lengths"]=array();$J[$C]["columns"][$K["key_ordinal"]]=$K["column_name"];$J[$C]["descs"][$K["key_ordinal"]]=($K["is_descending_key"]?'1':null);}return$J;}function
|
||
view($C){return
|
||
array("select"=>preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU','',get_val("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = ".q($C))));}function
|
||
collations(){$J=array();foreach(get_vals("SELECT name FROM fn_helpcollations()")as$c)$J[preg_replace('~_.*~','',$c)][]=$c;return$J;}function
|
||
information_schema($j){return
|
||
get_schema()=="INFORMATION_SCHEMA";}function
|
||
error(){return
|
||
nl_br(h(preg_replace('~^(\[[^]]*])+~m','',connection()->error)));}function
|
||
create_database($j,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).(preg_match('~^[a-z0-9_]+$~i',$c)?" COLLATE $c":""));}function
|
||
drop_databases($i){return
|
||
queries("DROP DATABASE ".implode(", ",array_map('Adminer\idf_escape',$i)));}function
|
||
rename_database($C,$c){if(preg_match('~^[a-z0-9_]+$~i',$c))queries("ALTER DATABASE ".idf_escape(DB)." COLLATE $c");queries("ALTER DATABASE ".idf_escape(DB)." MODIFY NAME = ".idf_escape($C));return
|
||
true;}function
|
||
auto_increment(){return" IDENTITY".($_POST["Auto_increment"]!=""?"(".number($_POST["Auto_increment"]).",1)":"")." PRIMARY KEY";}function
|
||
alter_table($R,$C,$n,$gd,$mb,$vc,$c,$_a,$kg){$b=array();$ob=array();$Uf=fields($R);foreach($n
|
||
as$m){$d=idf_escape($m[0]);$X=$m[1];if(!$X)$b["DROP"][]=" COLUMN $d";else{$X[1]=preg_replace("~( COLLATE )'(\\w+)'~",'\1\2',$X[1]);$ob[$m[0]]=$X[5];unset($X[5]);if(preg_match('~ AS ~',$X[3]))unset($X[1],$X[2]);if($m[0]=="")$b["ADD"][]="\n ".implode("",$X).($R==""?substr($gd[$X[0]],16+strlen($X[0])):"");else{$k=$X[3];unset($X[3]);unset($X[6]);if($d!=$X[0])queries("EXEC sp_rename ".q(table($R).".$d").", ".q(idf_unescape($X[0])).", 'COLUMN'");$b["ALTER COLUMN ".implode("",$X)][]="";$Tf=$Uf[$m[0]];if(default_value($Tf)!=$k){if($Tf["default"]!==null)$b["DROP"][]=" ".idf_escape($Tf["default_constraint"]);if($k)$b["ADD"][]="\n $k FOR $d";}}}}if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (".implode(",",(array)$b["ADD"])."\n)");if($R!=$C)queries("EXEC sp_rename ".q(table($R)).", ".q($C));if($gd)$b[""]=$gd;foreach($b
|
||
as$x=>$X){if(!queries("ALTER TABLE ".table($C)." $x".implode(",",$X)))return
|
||
false;}foreach($ob
|
||
as$x=>$X){$mb=substr($X,9);queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = ".q(get_schema()).", @level1type = N'Table', @level1name = ".q($C).", @level2type = N'Column', @level2name = ".q($x));queries("EXEC sp_addextendedproperty
|
||
@name = N'MS_Description',
|
||
@value = $mb,
|
||
@level0type = N'Schema',
|
||
@level0name = ".q(get_schema()).",
|
||
@level1type = N'Table',
|
||
@level1name = ".q($C).",
|
||
@level2type = N'Column',
|
||
@level2name = ".q($x));}return
|
||
true;}function
|
||
alter_indexes($R,$b){$v=array();$fc=array();foreach($b
|
||
as$X){if($X[2]=="DROP"){if($X[0]=="PRIMARY")$fc[]=idf_escape($X[1]);else$v[]=idf_escape($X[1])." ON ".table($R);}elseif(!queries(($X[0]!="PRIMARY"?"CREATE $X[0] ".($X[0]!="INDEX"?"INDEX ":"").idf_escape($X[1]!=""?$X[1]:uniqid($R."_"))." ON ".table($R):"ALTER TABLE ".table($R)." ADD PRIMARY KEY")." (".implode(", ",$X[2]).")"))return
|
||
false;}return(!$v||queries("DROP INDEX ".implode(", ",$v)))&&(!$fc||queries("ALTER TABLE ".table($R)." DROP ".implode(", ",$fc)));}function
|
||
found_rows($S,$Z){}function
|
||
foreign_keys($R){$J=array();$Ef=array("CASCADE","NO ACTION","SET NULL","SET DEFAULT");foreach(get_rows("EXEC sp_fkeys @fktable_name = ".q($R).", @fktable_owner = ".q(get_schema()))as$K){$p=&$J[$K["FK_NAME"]];$p["db"]=$K["PKTABLE_QUALIFIER"];$p["ns"]=$K["PKTABLE_OWNER"];$p["table"]=$K["PKTABLE_NAME"];$p["on_update"]=$Ef[$K["UPDATE_RULE"]];$p["on_delete"]=$Ef[$K["DELETE_RULE"]];$p["source"][]=$K["FKCOLUMN_NAME"];$p["target"][]=$K["PKCOLUMN_NAME"];}return$J;}function
|
||
truncate_tables($T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views($rj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$rj)));}function
|
||
drop_tables($T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables($T,$rj,$oi){return
|
||
apply_queries("ALTER SCHEMA ".idf_escape($oi)." TRANSFER",array_merge($T,$rj));}function
|
||
trigger($C,$R){if($C=="")return
|
||
array();$L=get_rows("SELECT s.name [Trigger],
|
||
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
|
||
c.text
|
||
FROM sysobjects s
|
||
JOIN syscomments c ON s.id = c.id
|
||
WHERE s.xtype = 'TR' AND s.name = ".q($C));$J=reset($L);if($J)$J["Statement"]=preg_replace('~^.+\s+AS\s+~isU','',$J["text"]);return$J;}function
|
||
triggers($R){$J=array();foreach(get_rows("SELECT sys1.name,
|
||
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
|
||
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
|
||
FROM sysobjects sys1
|
||
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
|
||
WHERE sys1.xtype = 'TR' AND sys2.name = ".q($R))as$K)$J[$K["name"]]=array($K["Timing"],$K["Event"]);return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("AS"),);}function
|
||
schemas(){return
|
||
get_vals("SELECT name FROM sys.schemas");}function
|
||
get_schema(){if($_GET["ns"]!="")return$_GET["ns"];return
|
||
get_val("SELECT SCHEMA_NAME()");}function
|
||
set_schema($mh){$_GET["ns"]=$mh;return
|
||
true;}function
|
||
create_sql($R,$_a,$Xh){if(is_view(table_status1($R))){$qj=view($R);return"CREATE VIEW ".table($R)." AS $qj[select]";}$n=array();$G=false;foreach(fields($R)as$C=>$m){$X=process_field($m,$m);if($X[6])$G=true;$n[]=implode("",$X);}foreach(indexes($R)as$C=>$v){if(!$G||$v["type"]!="PRIMARY"){$e=array();foreach($v["columns"]as$x=>$X)$e[]=idf_escape($X).($v["descs"][$x]?" DESC":"");$C=idf_escape($C);$n[]=($v["type"]=="INDEX"?"INDEX $C":"CONSTRAINT $C ".($v["type"]=="UNIQUE"?"UNIQUE":"PRIMARY KEY"))." (".implode(", ",$e).")";}}foreach(driver()->checkConstraints($R)as$C=>$Va)$n[]="CONSTRAINT ".idf_escape($C)." CHECK ($Va)";return"CREATE TABLE ".table($R)." (\n\t".implode(",\n\t",$n)."\n)";}function
|
||
foreign_keys_sql($R){$n=array();foreach(foreign_keys($R)as$gd)$n[]=ltrim(format_foreign_key($gd));return($n?"ALTER TABLE ".table($R)." ADD\n\t".implode(",\n\t",$n).";\n\n":"");}function
|
||
truncate_sql($R){return"TRUNCATE TABLE ".table($R);}function
|
||
use_sql($Lb){return"USE ".idf_escape($Lb);}function
|
||
trigger_sql($R){$J="";foreach(triggers($R)as$C=>$Mi)$J
|
||
.=create_trigger(" ON ".table($R),trigger($C,$R)).";";return$J;}function
|
||
convert_field($m){}function
|
||
unconvert_field($m,$J){return$J;}function
|
||
support($Sc){return
|
||
preg_match('~^(check|comment|columns|database|drop_col|dump|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~',$Sc);}}class
|
||
Adminer{static$fe;var$error='';function
|
||
name(){return"<a href='https://www.adminer.org/'".target_blank()." id='h1'><img src='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.2.1")."' width='24' height='24' alt='' id='logo'>Adminer</a>";}function
|
||
credentials(){return
|
||
array(SERVER,$_GET["username"],get_password());}function
|
||
connectSsl(){}function
|
||
permanentLogin($h=false){return
|
||
password_file($h);}function
|
||
bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
|
||
serverName($N){return
|
||
h($N);}function
|
||
database(){return
|
||
DB;}function
|
||
databases($ed=true){return
|
||
get_databases($ed);}function
|
||
pluginsLinks(){}function
|
||
operators(){return
|
||
driver()->operators;}function
|
||
schemas(){return
|
||
schemas();}function
|
||
queryTimeout(){return
|
||
2;}function
|
||
headers(){}function
|
||
csp(array$Eb){return$Eb;}function
|
||
head($Ib=null){return
|
||
true;}function
|
||
css(){$J=array();foreach(array("","-dark")as$ff){$o="adminer$ff.css";if(file_exists($o))$J[]="$o?v=".crc32(file_get_contents($o));}return$J;}function
|
||
loginForm(){echo"<table class='layout'>\n",adminer()->loginFormField('driver','<tr><th>'.'System'.'<td>',html_select("auth[driver]",SqlDriver::$ec,DRIVER,"loginDriver(this);")),adminer()->loginFormField('server','<tr><th>'.'Server'.'<td>','<input name="auth[server]" value="'.h(SERVER).'" title="hostname[:port]" placeholder="localhost" autocapitalize="off">'),adminer()->loginFormField('username','<tr><th>'.'Username'.'<td>','<input name="auth[username]" id="username" autofocus value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'.script("const authDriver = qs('#username').form['auth[driver]']; authDriver && authDriver.onchange();")),adminer()->loginFormField('password','<tr><th>'.'Password'.'<td>','<input type="password" name="auth[password]" autocomplete="current-password">'),adminer()->loginFormField('db','<tr><th>'.'Database'.'<td>','<input name="auth[db]" value="'.h($_GET["db"]).'" autocapitalize="off">'),"</table>\n","<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function
|
||
loginFormField($C,$Ed,$Y){return$Ed.$Y."\n";}function
|
||
login($He,$F){if($F=="")return
|
||
sprintf('Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.',target_blank());return
|
||
true;}function
|
||
tableName(array$di){return
|
||
h($di["Name"]);}function
|
||
fieldName(array$m,$Nf=0){$U=$m["full_type"];$mb=$m["comment"];return'<span title="'.h($U.($mb!=""?($U?": ":"").$mb:'')).'">'.h($m["field"]).'</span>';}function
|
||
selectLinks(array$di,$O=""){echo'<p class="links">';$Ge=array("select"=>'Select data');if(support("table")||support("indexes"))$Ge["table"]='Show structure';$ne=false;if(support("table")){$ne=is_view($di);if($ne)$Ge["view"]='Alter view';else$Ge["create"]='Alter table';}if($O!==null)$Ge["edit"]='New item';$C=$di["Name"];foreach($Ge
|
||
as$x=>$X)echo" <a href='".h(ME)."$x=".urlencode($C).($x=="edit"?$O:"")."'".bold(isset($_GET[$x])).">$X</a>";echo
|
||
doc_link(array(JUSH=>driver()->tableHelp($C,$ne)),"?"),"\n";}function
|
||
foreignKeys($R){return
|
||
foreign_keys($R);}function
|
||
backwardKeys($R,$ci){return
|
||
array();}function
|
||
backwardKeysPrint(array$Da,array$K){}function
|
||
selectQuery($H,$Th,$Qc=false){$J="</p>\n";if(!$Qc&&($uj=driver()->warnings())){$t="warnings";$J=", <a href='#$t'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."$J<div id='$t' class='hidden'>\n$uj</div>\n";}return"<p><code class='jush-".JUSH."'>".h(str_replace("\n"," ",$H))."</code> <span class='time'>(".format_time($Th).")</span>".(support("sql")?" <a href='".h(ME)."sql=".urlencode($H)."'>".'Edit'."</a>":"").$J;}function
|
||
sqlCommandQuery($H){return
|
||
shorten_utf8(trim($H),1000);}function
|
||
sqlPrintAfter(){}function
|
||
rowDescription($R){return"";}function
|
||
rowDescriptions(array$L,array$hd){return$L;}function
|
||
selectLink($X,array$m){}function
|
||
selectVal($X,$_,array$m,$Xf){$J=($X===null?"<i>NULL</i>":(preg_match("~char|binary|boolean~",$m["type"])&&!preg_match("~var~",$m["type"])?"<code>$X</code>":(preg_match('~json~',$m["type"])?"<code class='jush-js'>$X</code>":$X)));if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!is_utf8($X))$J="<i>".lang_format(array('%d byte','%d bytes'),strlen($Xf))."</i>";return($_?"<a href='".h($_)."'".(is_url($_)?target_blank():"").">$J</a>":$J);}function
|
||
editVal($X,array$m){return$X;}function
|
||
config(){return
|
||
array();}function
|
||
tableStructurePrint(array$n,$di=null){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr><th>".'Column'."<td>".'Type'.(support("comment")?"<td>".'Comment':"")."</thead>\n";$Wh=driver()->structuredTypes();foreach($n
|
||
as$m){echo"<tr><th>".h($m["field"]);$U=h($m["full_type"]);$c=h($m["collation"]);echo"<td><span title='$c'>".(in_array($U,(array)$Wh['User types'])?"<a href='".h(ME.'type='.urlencode($U))."'>$U</a>":$U.($c&&isset($di["Collation"])&&$c!=$di["Collation"]?" $c":""))."</span>",($m["null"]?" <i>NULL</i>":""),($m["auto_increment"]?" <i>".'Auto Increment'."</i>":"");$k=h($m["default"]);echo(isset($m["default"])?" <span title='".'Default value'."'>[<b>".($m["generated"]?"<code class='jush-".JUSH."'>$k</code>":$k)."</b>]</span>":""),(support("comment")?"<td>".h($m["comment"]):""),"\n";}echo"</table>\n","</div>\n";}function
|
||
tableIndexesPrint(array$w){echo"<table>\n";foreach($w
|
||
as$C=>$v){ksort($v["columns"]);$Cg=array();foreach($v["columns"]as$x=>$X)$Cg[]="<i>".h($X)."</i>".($v["lengths"][$x]?"(".$v["lengths"][$x].")":"").($v["descs"][$x]?" DESC":"");echo"<tr title='".h($C)."'><th>$v[type]<td>".implode(", ",$Cg)."\n";}echo"</table>\n";}function
|
||
selectColumnsPrint(array$M,array$e){print_fieldset("select",'Select',$M);$s=0;$M[""]=array();foreach($M
|
||
as$x=>$X){$X=idx($_GET["columns"],$x,array());$d=select_input(" name='columns[$s][col]'",$e,$X["col"],($x!==""?"selectFieldChange":"selectAddRow"));echo"<div>".(driver()->functions||driver()->grouping?html_select("columns[$s][fun]",array(-1=>"")+array_filter(array('Functions'=>driver()->functions,'Aggregation'=>driver()->grouping)),$X["fun"]).on_help("event.target.value && event.target.value.replace(/ |\$/, '(') + ')'",1).script("qsl('select').onchange = function () { helpClose();".($x!==""?"":" qsl('select, input', this.parentNode).onchange();")." };","")."($d)":$d)."</div>\n";$s++;}echo"</div></fieldset>\n";}function
|
||
selectSearchPrint(array$Z,array$e,array$w){print_fieldset("search",'Search',$Z);foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT")echo"<div>(<i>".implode("</i>, <i>",array_map('Adminer\h',$v["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$s]' value='".h($_GET["fulltext"][$s])."'>",script("qsl('input').oninput = selectFieldChange;",""),checkbox("boolean[$s]",1,isset($_GET["boolean"][$s]),"BOOL"),"</div>\n";}$Sa="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],array(array()))as$s=>$X){if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],adminer()->operators())))echo"<div>".select_input(" name='where[$s][col]'",$e,$X["col"],($X?"selectFieldChange":"selectAddRow"),"(".'anywhere'.")"),html_select("where[$s][op]",adminer()->operators(),$X["op"],$Sa),"<input type='search' name='where[$s][val]' value='".h($X["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $Sa }, onkeydown: selectSearchKeydown, onsearch: selectSearchSearch});",""),"</div>\n";}echo"</div></fieldset>\n";}function
|
||
selectOrderPrint(array$Nf,array$e,array$w){print_fieldset("sort",'Sort',$Nf);$s=0;foreach((array)$_GET["order"]as$x=>$X){if($X!=""){echo"<div>".select_input(" name='order[$s]'",$e,$X,"selectFieldChange"),checkbox("desc[$s]",1,isset($_GET["desc"][$x]),'descending')."</div>\n";$s++;}}echo"<div>".select_input(" name='order[$s]'",$e,"","selectAddRow"),checkbox("desc[$s]",1,false,'descending')."</div>\n","</div></fieldset>\n";}function
|
||
selectLimitPrint($z){echo"<fieldset><legend>".'Limit'."</legend><div>","<input type='number' name='limit' class='size' value='".intval($z)."'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
|
||
selectLengthPrint($ui){if($ui!==null)echo"<fieldset><legend>".'Text length'."</legend><div>","<input type='number' name='text_length' class='size' value='".h($ui)."'>","</div></fieldset>\n";}function
|
||
selectActionPrint(array$w){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>"," <span id='noindex' title='".'Full table scan'."'></span>","<script".nonce().">\n","const indexColumns = ";$e=array();foreach($w
|
||
as$v){$Hb=reset($v["columns"]);if($v["type"]!="FULLTEXT"&&$Hb)$e[$Hb]=1;}$e[""]=1;foreach($e
|
||
as$x=>$X)json_row($x);echo";\n","selectFieldChange.call(qs('#form')['select']);\n","</script>\n","</div></fieldset>\n";}function
|
||
selectCommandPrint(){return!information_schema(DB);}function
|
||
selectImportPrint(){return!information_schema(DB);}function
|
||
selectEmailPrint(array$sc,array$e){}function
|
||
selectColumnsProcess(array$e,array$w){$M=array();$td=array();foreach((array)$_GET["columns"]as$x=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],driver()->functions)||in_array($X["fun"],driver()->grouping)))){$M[$x]=apply_sql_function($X["fun"],($X["col"]!=""?idf_escape($X["col"]):"*"));if(!in_array($X["fun"],driver()->grouping))$td[]=$M[$x];}}return
|
||
array($M,$td);}function
|
||
selectSearchProcess(array$n,array$w){$J=array();foreach($w
|
||
as$s=>$v){if($v["type"]=="FULLTEXT"&&$_GET["fulltext"][$s]!="")$J[]="MATCH (".implode(", ",array_map('Adminer\idf_escape',$v["columns"])).") AGAINST (".q($_GET["fulltext"][$s]).(isset($_GET["boolean"][$s])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$x=>$X){$fb=$X["col"];if("$fb$X[val]"!=""&&in_array($X["op"],adminer()->operators())){$qb=array();foreach(($fb!=""?array($fb=>$n[$fb]):$n)as$C=>$m){$_g="";$pb=" $X[op]";if(preg_match('~IN$~',$X["op"])){$Sd=process_length($X["val"]);$pb
|
||
.=" ".($Sd!=""?$Sd:"(NULL)");}elseif($X["op"]=="SQL")$pb=" $X[val]";elseif(preg_match('~^(I?LIKE) %%$~',$X["op"],$B))$pb=" $B[1] ".adminer()->processInput($m,"%$X[val]%");elseif($X["op"]=="FIND_IN_SET"){$_g="$X[op](".q($X["val"]).", ";$pb=")";}elseif(!preg_match('~NULL$~',$X["op"]))$pb
|
||
.=" ".adminer()->processInput($m,$X["val"]);if($fb!=""||(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"]))))$qb[]=$_g.driver()->convertSearch(idf_escape($C),$X,$m).$pb;}$J[]=(count($qb)==1?$qb[0]:($qb?"(".implode(" OR ",$qb).")":"1 = 0"));}}return$J;}function
|
||
selectOrderProcess(array$n,array$w){$J=array();foreach((array)$_GET["order"]as$x=>$X){if($X!="")$J[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$X)?$X:idf_escape($X)).(isset($_GET["desc"][$x])?" DESC":"");}return$J;}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$hd){return
|
||
false;}function
|
||
selectQueryBuild(array$M,array$Z,array$td,array$Nf,$z,$E){return"";}function
|
||
messageQuery($H,$vi,$Qc=false){restart_session();$Gd=&get_session("queries");if(!idx($Gd,$_GET["db"]))$Gd[$_GET["db"]]=array();if(strlen($H)>1e6)$H=preg_replace('~[\x80-\xFF]+$~','',substr($H,0,1e6))."\n…";$Gd[$_GET["db"]][]=array($H,time(),$vi);$Ph="sql-".count($Gd[$_GET["db"]]);$J="<a href='#$Ph' class='toggle'>".'SQL command'."</a>\n";if(!$Qc&&($uj=driver()->warnings())){$t="warnings-".count($Gd[$_GET["db"]]);$J="<a href='#$t' class='toggle'>".'Warnings'."</a>, $J<div id='$t' class='hidden'>\n$uj</div>\n";}return" <span class='time'>".@date("H:i:s")."</span>"." $J<div id='$Ph' class='hidden'><pre><code class='jush-".JUSH."'>".shorten_utf8($H,1000)."</code></pre>".($vi?" <span class='time'>($vi)</span>":'').(support("sql")?'<p><a href="'.h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Gd[$_GET["db"]])-1)).'">'.'Edit'.'</a>':'').'</div>';}function
|
||
editRowPrint($R,array$n,$K,$bj){}function
|
||
editFunctions(array$m){$J=($m["null"]?"NULL/":"");$bj=isset($_GET["select"])||where($_GET);foreach(array(driver()->insertFunctions,driver()->editFunctions)as$x=>$od){if(!$x||(!isset($_GET["call"])&&$bj)){foreach($od
|
||
as$og=>$X){if(!$og||preg_match("~$og~",$m["type"]))$J
|
||
.="/$X";}}if($x&&$od&&!preg_match('~set|blob|bytea|raw|file|bool~',$m["type"]))$J
|
||
.="/SQL";}if($m["auto_increment"]&&!$bj)$J='Auto Increment';return
|
||
explode("/",$J);}function
|
||
editInput($R,array$m,$ya,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$ya value='-1' checked><i>".'original'."</i></label> ":"").($m["null"]?"<label><input type='radio'$ya value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").enum_input("radio",$ya,$m,$Y,$Y===0?0:null);return"";}function
|
||
editHint($R,array$m,$Y){return"";}function
|
||
processInput(array$m,$Y,$r=""){if($r=="SQL")return$Y;$C=$m["field"];$J=q($Y);if(preg_match('~^(now|getdate|uuid)$~',$r))$J="$r()";elseif(preg_match('~^current_(date|timestamp)$~',$r))$J=$r;elseif(preg_match('~^([+-]|\|\|)$~',$r))$J=idf_escape($C)." $r $J";elseif(preg_match('~^[+-] interval$~',$r))$J=idf_escape($C)." $r ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$Y)?$Y:$J);elseif(preg_match('~^(addtime|subtime|concat)$~',$r))$J="$r(".idf_escape($C).", $J)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$r))$J="$r($J)";return
|
||
unconvert_field($m,$J);}function
|
||
dumpOutput(){$J=array('text'=>'open','file'=>'save');if(function_exists('gzencode'))$J['gz']='gzip';return$J;}function
|
||
dumpFormat(){return(support("dump")?array('sql'=>'SQL'):array())+array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function
|
||
dumpDatabase($j){}function
|
||
dumpTable($R,$Xh,$ne=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Xh)dump_csv(array_keys(fields($R)));}else{if($ne==2){$n=array();foreach(fields($R)as$C=>$m)$n[]=idf_escape($C)." $m[full_type]";$h="CREATE TABLE ".table($R)." (".implode(", ",$n).")";}else$h=create_sql($R,$_POST["auto_increment"],$Xh);set_utf8mb4($h);if($Xh&&$h){if($Xh=="DROP+CREATE"||$ne==1)echo"DROP ".($ne==2?"VIEW":"TABLE")." IF EXISTS ".table($R).";\n";if($ne==1)$h=remove_definer($h);echo"$h;\n\n";}}}function
|
||
dumpData($R,$Xh,$H){if($Xh){$Pe=(JUSH=="sqlite"?0:1048576);$n=array();$Pd=false;if($_POST["format"]=="sql"){if($Xh=="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";$Pd=true;break;}}}}$I=connection()->query($H,1);if($I){$de="";$Na="";$se=array();$pd=array();$Zh="";$Tc=($R!=''?'fetch_assoc':'fetch_row');$Ab=0;while($K=$I->$Tc()){if(!$se){$mj=array();foreach($K
|
||
as$X){$m=$I->fetch_field();if(idx($n[$m->name],'generated')){$pd[$m->name]=true;continue;}$se[]=$m->name;$x=idf_escape($m->name);$mj[]="$x = VALUES($x)";}$Zh=($Xh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$mj):"").";\n";}if($_POST["format"]!="sql"){if($Xh=="table"){dump_csv($se);$Xh="INSERT";}dump_csv($K);}else{if(!$de)$de="INSERT INTO ".table($R)." (".implode(", ",array_map('Adminer\idf_escape',$se)).") VALUES";foreach($K
|
||
as$x=>$X){if($pd[$x]){unset($K[$x]);continue;}$m=$n[$x];$K[$x]=($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");}$kh=($Pe?"\n":" ")."(".implode(",\t",$K).")";if(!$Na)$Na=$de.$kh;elseif(JUSH=='mssql'?$Ab%1000!=0:strlen($Na)+4+strlen($kh)+strlen($Zh)<$Pe)$Na
|
||
.=",$kh";else{echo$Na.$Zh;$Na=$de.$kh;}}$Ab++;}if($Na)echo$Na.$Zh;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",connection()->error)."\n";if($Pd)echo"SET IDENTITY_INSERT ".table($R)." OFF;\n";}}function
|
||
dumpFilename($Nd){return
|
||
friendly_url($Nd!=""?$Nd:(SERVER!=""?SERVER:"localhost"));}function
|
||
dumpHeaders($Nd,$hf=false){$ag=$_POST["output"];$Lc=(preg_match('~sql~',$_POST["format"])?"sql":($hf?"tar":"csv"));header("Content-Type: ".($ag=="gz"?"application/x-gzip":($Lc=="tar"?"application/x-tar":($Lc=="sql"||$ag!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($ag=="gz"){ob_start(function($Q){return
|
||
gzencode($Q);},1e6);}return$Lc;}function
|
||
dumpFooter(){if($_POST["format"]=="sql")echo"-- ".gmdate("Y-m-d H:i:s e")."\n";}function
|
||
importServerPath(){return"adminer.sql";}function
|
||
homepage(){echo'<p class="links">'.($_GET["ns"]==""&&support("database")?'<a href="'.h(ME).'database=">'.'Alter database'."</a>\n":""),(support("scheme")?"<a href='".h(ME)."scheme='>".($_GET["ns"]!=""?'Alter schema':'Create schema')."</a>\n":""),($_GET["ns"]!==""?'<a href="'.h(ME).'schema=">'.'Database schema'."</a>\n":""),(support("privileges")?"<a href='".h(ME)."privileges='>".'Privileges'."</a>\n":"");return
|
||
true;}function
|
||
navigation($ef){echo"<h1>".adminer()->name()." <span class='version'>".VERSION;$pf=$_COOKIE["adminer_version"];echo" <a href='https://www.adminer.org/#download'".target_blank()." id='version'>".(version_compare(VERSION,$pf)<0?h($pf):"")."</a>","</span></h1>\n";if($ef=="auth"){$ag="";foreach((array)$_SESSION["pwds"]as$oj=>$Bh){foreach($Bh
|
||
as$N=>$jj){$C=h(get_setting("vendor-$oj-$N")?:get_driver($oj));foreach($jj
|
||
as$V=>$F){if($F!==null){$Ob=$_SESSION["db"][$oj][$N][$V];foreach(($Ob?array_keys($Ob):array(""))as$j)$ag
|
||
.="<li><a href='".h(auth_url($oj,$N,$V,$j))."'>($C) ".h($V.($N!=""?"@".adminer()->serverName($N):"").($j!=""?" - $j":""))."</a>\n";}}}}if($ag)echo"<ul id='logins'>\n$ag</ul>\n".script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");}else{$T=array();if($_GET["ns"]!==""&&!$ef&&DB!=""){connection()->select_db(DB);$T=table_status('',true);}adminer()->syntaxHighlighting($T);adminer()->databasesPrint($ef);$ia=array();if(DB==""||!$ef){if(support("sql")){$ia[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".'SQL command'."</a>";$ia[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".'Import'."</a>";}$ia[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".'Export'."</a>";}$Td=$_GET["ns"]!==""&&!$ef&&DB!="";if($Td)$ia[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".'Create table'."</a>";echo($ia?"<p class='links'>\n".implode("\n",$ia)."\n":"");if($Td){if($T)adminer()->tablesPrint($T);else
|
||
echo"<p class='message'>".'No tables.'."</p>\n";}}}function
|
||
syntaxHighlighting(array$T){echo
|
||
script_src(preg_replace("~\\?.*~","",ME)."?file=jush.js&version=5.2.1",true);if(support("sql")){echo"<script".nonce().">\n";if($T){$Ge=array();foreach($T
|
||
as$R=>$U)$Ge[]=preg_quote($R,'/');echo"var jushLinks = { ".JUSH.": [ '".js_escape(ME).(support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$Ge).")\\b/g ] };\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"])){$ki=array_fill_keys(array_keys($T),array());foreach(driver()->allFields()as$R=>$n){foreach($n
|
||
as$m)$ki[$R][]=$m["field"];}echo"addEventListener('DOMContentLoaded', () => { autocompleter = jush.autocompleteSql('".idf_escape("")."', ".json_encode($ki)."); });\n";}}echo"</script>\n";}echo
|
||
script("syntaxHighlighting('".preg_replace('~^(\d\.?\d).*~s','\1',connection()->server_info)."', '".connection()->flavor."');");}function
|
||
databasesPrint($ef){$i=adminer()->databases();if(DB&&$i&&!in_array(DB,$i))array_unshift($i,DB);echo"<form action=''>\n<p id='dbs'>\n";hidden_fields_get();$Mb=script("mixin(qsl('select'), {onmousedown: dbMouseDown, onchange: dbChange});");echo"<label title='".'Database'."'>".'DB'.": ".($i?html_select("db",array(""=>"")+$i,DB).$Mb:"<input name='db' value='".h(DB)."' autocapitalize='off' size='19'>\n")."</label>","<input type='submit' value='".'Use'."'".($i?" class='hidden'":"").">\n";if(support("scheme")){if($ef!="db"&&DB!=""&&connection()->select_db(DB)){echo"<br><label>".'Schema'.": ".html_select("ns",array(""=>"")+adminer()->schemas(),$_GET["ns"])."$Mb</label>";if($_GET["ns"]!="")set_schema($_GET["ns"]);}}foreach(array("import","sql","schema","dump","privileges")as$X){if(isset($_GET[$X])){echo
|
||
input_hidden($X);break;}}echo"</p></form>\n";}function
|
||
tablesPrint(array$T){echo"<ul id='tables'>".script("mixin(qs('#tables'), {onmouseover: menuOver, onmouseout: menuOut});");foreach($T
|
||
as$R=>$P){$R="$R";$C=adminer()->tableName($P);if($C!="")echo'<li><a href="'.h(ME).'select='.urlencode($R).'"'.bold($_GET["select"]==$R||$_GET["edit"]==$R,"select")." title='".'Select data'."'>".'select'."</a> ",(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($R).'"'.bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"],$_GET["check"],$_GET["view"])),(is_view($P)?"view":"structure"))." title='".'Show structure'."'>$C</a>":"<span>$C</span>")."\n";}echo"</ul>\n";}}class
|
||
Plugins{private
|
||
static$ta=array('dumpFormat'=>true,'dumpOutput'=>true,'editRowPrint'=>true,'editFunctions'=>true,'config'=>true);var$plugins;var$error='';private$hooks=array();function
|
||
__construct($tg){if($tg===null){$tg=array();$Ha="adminer-plugins";if(is_dir($Ha)){foreach(glob("$Ha/*.php")as$o)$Ud=include_once"./$o";}$Fd=" href='https://www.adminer.org/plugins/#use'".target_blank();if(file_exists("$Ha.php")){$Ud=include_once"./$Ha.php";if(is_array($Ud)){foreach($Ud
|
||
as$sg)$tg[get_class($sg)]=$sg;}else$this->error
|
||
.=sprintf('%s must <a%s>return an array</a>.',"<b>$Ha.php</b>",$Fd)."<br>";}foreach(get_declared_classes()as$cb){if(!$tg[$cb]&&preg_match('~^Adminer\w~i',$cb)){$Ug=new
|
||
\ReflectionClass($cb);$vb=$Ug->getConstructor();if($vb&&$vb->getNumberOfRequiredParameters())$this->error
|
||
.=sprintf('<a%s>Configure</a> %s in %s.',$Fd,"<b>$cb</b>","<b>$Ha.php</b>")."<br>";else$tg[$cb]=new$cb;}}}$this->plugins=$tg;$la=new
|
||
Adminer;$tg[]=$la;$Ug=new
|
||
\ReflectionObject($la);foreach($Ug->getMethods()as$cf){foreach($tg
|
||
as$sg){$C=$cf->getName();if(method_exists($sg,$C))$this->hooks[$C][]=$sg;}}}function
|
||
__call($C,array$fg){$ua=array();foreach($fg
|
||
as$x=>$X)$ua[]=&$fg[$x];$J=null;foreach($this->hooks[$C]as$sg){$Y=call_user_func_array(array($sg,$C),$ua);if($Y!==null){if(!self::$ta[$C])return$Y;$J=$Y+(array)$J;}}return$J;}}abstract
|
||
class
|
||
Plugin{protected$translations=array();function
|
||
description(){return$this->lang('');}function
|
||
screenshot(){return"";}protected
|
||
function
|
||
lang($u,$uf=null){$ua=func_get_args();$ua[0]=idx($this->translations[LANG],$u)?:$u;return
|
||
call_user_func_array('Adminer\lang_format',$ua);}}Adminer::$fe=(function_exists('adminer_object')?adminer_object():(is_dir("adminer-plugins")||file_exists("adminer-plugins.php")?new
|
||
Plugins(null):new
|
||
Adminer));SqlDriver::$ec=array("server"=>"MySQL / MariaDB")+SqlDriver::$ec;if(!defined('Adminer\DRIVER')){define('Adminer\DRIVER',"server");if(extension_loaded("mysqli")&&$_GET["ext"]!="pdo"){class
|
||
Db
|
||
extends
|
||
\MySQLi{static$fe;var$extension="MySQLi",$flavor='';function
|
||
__construct(){parent::init();}function
|
||
attach($N,$V,$F){mysqli_report(MYSQLI_REPORT_OFF);list($Jd,$ug)=explode(":",$N,2);$Sh=adminer()->connectSsl();if($Sh)$this->ssl_set($Sh['key'],$Sh['cert'],$Sh['ca'],'','');$J=@$this->real_connect(($N!=""?$Jd:ini_get("mysqli.default_host")),($N.$V!=""?$V:ini_get("mysqli.default_user")),($N.$V.$F!=""?$F:ini_get("mysqli.default_pw")),null,(is_numeric($ug)?intval($ug):ini_get("mysqli.default_port")),(is_numeric($ug)?$ug:null),($Sh?($Sh['verify']!==false?2048:64):0));$this->options(MYSQLI_OPT_LOCAL_INFILE,false);return($J?'':$this->error);}function
|
||
set_charset($Ua){if(parent::set_charset($Ua))return
|
||
true;parent::set_charset('utf8');return$this->query("SET NAMES $Ua");}function
|
||
next_result(){return
|
||
self::more_results()&&parent::next_result();}function
|
||
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!((ini_bool("sql.safe_mode")||ini_bool("mysql.allow_local_infile"))&&extension_loaded("pdo_mysql"))){class
|
||
Db
|
||
extends
|
||
SqlDb{private$link;function
|
||
attach($N,$V,$F){if(ini_bool("mysql.allow_local_infile"))return
|
||
sprintf('Disable %s or enable %s or %s extensions.',"'mysql.allow_local_infile'","MySQLi","PDO_MySQL");$this->link=@mysql_connect(($N!=""?$N:ini_get("mysql.default_host")),("$N$V"!=""?$V:ini_get("mysql.default_user")),("$N$V$F"!=""?$F: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($Ua){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Ua,$this->link))return
|
||
true;mysql_set_charset('utf8',$this->link);}return$this->query("SET NAMES $Ua");}function
|
||
quote($Q){return"'".mysql_real_escape_string($Q,$this->link)."'";}function
|
||
select_db($Lb){return
|
||
mysql_select_db($Lb,$this->link);}function
|
||
query($H,$Ti=false){$I=@($Ti?mysql_unbuffered_query($H,$this->link):mysql_query($H,$this->link));$this->error="";if(!$I){$this->errno=mysql_errno($this->link);$this->error=mysql_error($this->link);return
|
||
false;}if($I===true){$this->affected_rows=mysql_affected_rows($this->link);$this->info=mysql_info($this->link);return
|
||
true;}return
|
||
new
|
||
Result($I);}}class
|
||
Result{var$num_rows;private$result;private$offset=0;function
|
||
__construct($I){$this->result=$I;$this->num_rows=mysql_num_rows($I);}function
|
||
fetch_assoc(){return
|
||
mysql_fetch_assoc($this->result);}function
|
||
fetch_row(){return
|
||
mysql_fetch_row($this->result);}function
|
||
fetch_field(){$J=mysql_fetch_field($this->result,$this->offset++);$J->orgtable=$J->table;$J->charsetnr=($J->blob?63:0);return$J;}function
|
||
__destruct(){mysql_free_result($this->result);}}}elseif(extension_loaded("pdo_mysql")){class
|
||
Db
|
||
extends
|
||
PdoDb{var$extension="PDO_MySQL";function
|
||
attach($N,$V,$F){$Lf=array(\PDO::MYSQL_ATTR_LOCAL_INFILE=>false);$Sh=adminer()->connectSsl();if($Sh){if($Sh['key'])$Lf[\PDO::MYSQL_ATTR_SSL_KEY]=$Sh['key'];if($Sh['cert'])$Lf[\PDO::MYSQL_ATTR_SSL_CERT]=$Sh['cert'];if($Sh['ca'])$Lf[\PDO::MYSQL_ATTR_SSL_CA]=$Sh['ca'];if(isset($Sh['verify']))$Lf[\PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT]=$Sh['verify'];}return$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\d)~',';port=\1',$N)),$V,$F,$Lf);}function
|
||
set_charset($Ua){return$this->query("SET NAMES $Ua");}function
|
||
select_db($Lb){return$this->query("USE ".idf_escape($Lb));}function
|
||
query($H,$Ti=false){$this->pdo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,!$Ti);return
|
||
parent::query($H,$Ti);}}}class
|
||
Driver
|
||
extends
|
||
SqlDriver{static$Nc=array("MySQLi","MySQL","PDO_MySQL");static$pe="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($N,$V,$F){$f=parent::connect($N,$V,$F);if(is_string($f)){if(function_exists('iconv')&&!is_utf8($f)&&strlen($kh=iconv("windows-1250","utf-8",$f))>strlen($f))$f=$kh;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('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>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['Strings']["json"]=4294967295;if(min_version('',10.7,$f)){$this->types['Strings']["uuid"]=128;$this->insertFunctions['uuid']='uuid';}if(min_version(9,'',$f)){$this->types['Numbers']["vector"]=16383;$this->insertFunctions['vector']='string_to_vector';}if(min_version(5.7,10.2,$f))$this->generated=array("STORED","VIRTUAL");}function
|
||
unconvertFunction(array$m){return(preg_match("~binary~",$m["type"])?"<code class='jush-sql'>UNHEX</code>":($m["type"]=="bit"?doc_link(array('sql'=>'bit-value-literals.html'),"<code>b''</code>"):(preg_match("~geometry|point|linestring|polygon~",$m["type"])?"<code class='jush-sql'>GeomFromText</code>":"")));}function
|
||
insert($R,array$O){return($O?parent::insert($R,$O):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function
|
||
insertUpdate($R,array$L,array$G){$e=array_keys(reset($L));$_g="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$mj=array();foreach($e
|
||
as$x)$mj[$x]="$x = VALUES($x)";$Zh="\nON DUPLICATE KEY UPDATE ".implode(", ",$mj);$mj=array();$y=0;foreach($L
|
||
as$O){$Y="(".implode(", ",$O).")";if($mj&&(strlen($_g)+$y+strlen($Y)+strlen($Zh)>1e6)){if(!queries($_g.implode(",\n",$mj).$Zh))return
|
||
false;$mj=array();$y=0;}$mj[]=$Y;$y+=strlen($Y)+2;}return
|
||
queries($_g.implode(",\n",$mj).$Zh);}function
|
||
slowQuery($H,$wi){if(min_version('5.7.8','10.1.2')){if($this->conn->flavor=='maria')return"SET STATEMENT max_statement_time=$wi FOR $H";elseif(preg_match('~^(SELECT\b)(.+)~is',$H,$B))return"$B[1] /*+ MAX_EXECUTION_TIME(".($wi*1000).") */ $B[2]";}}function
|
||
convertSearch($u,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($u USING ".charset($this->conn).")":$u);}function
|
||
warnings(){$I=$this->conn->query("SHOW WARNINGS");if($I&&$I->num_rows){ob_start();print_select_result($I);return
|
||
ob_get_clean();}}function
|
||
tableHelp($C,$ne=false){$Je=($this->conn->flavor=='maria');if(information_schema(DB))return
|
||
strtolower("information-schema-".($Je?"$C-table/":str_replace("_","-",$C)."-table.html"));if(DB=="mysql")return($Je?"mysql$C-table/":"system-schema.html");}function
|
||
hasCStyleEscapes(){static$Pa;if($Pa===null){$Qh=get_val("SHOW VARIABLES LIKE 'sql_mode'",1,$this->conn);$Pa=(strpos($Qh,'NO_BACKSLASH_ESCAPES')===false);}return$Pa;}function
|
||
engines(){$J=array();foreach(get_rows("SHOW ENGINES")as$K){if(preg_match("~YES|DEFAULT~",$K["Support"]))$J[]=$K["Engine"];}return$J;}}function
|
||
idf_escape($u){return"`".str_replace("`","``",$u)."`";}function
|
||
table($u){return
|
||
idf_escape($u);}function
|
||
get_databases($ed){$J=get_session("dbs");if($J===null){$H="SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME";$J=($ed?slow_query($H):get_vals($H));restart_session();set_session("dbs",$J);stop_session();}return$J;}function
|
||
limit($H,$Z,$z,$D=0,$xh=" "){return" $H$Z".($z?$xh."LIMIT $z".($D?" OFFSET $D":""):"");}function
|
||
limit1($R,$H,$Z,$xh="\n"){return
|
||
limit($H,$Z,1,0,$xh);}function
|
||
db_collation($j,array$hb){$J=null;$h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1);if(preg_match('~ COLLATE ([^ ]+)~',$h,$B))$J=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$h,$B))$J=$hb[$B[1]][-1];return$J;}function
|
||
logged_user(){return
|
||
get_val("SELECT USER()");}function
|
||
tables_list(){return
|
||
get_key_vals("SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME");}function
|
||
count_tables(array$i){$J=array();foreach($i
|
||
as$j)$J[$j]=count(get_vals("SHOW TABLES IN ".idf_escape($j)));return$J;}function
|
||
table_status($C="",$Rc=false){$J=array();foreach(get_rows($Rc?"SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($C!=""?"AND TABLE_NAME = ".q($C):"ORDER BY Name"):"SHOW TABLE STATUS".($C!=""?" LIKE ".q(addcslashes($C,"%_\\")):""))as$K){if($K["Engine"]=="InnoDB")$K["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\1',$K["Comment"]);if(!isset($K["Engine"]))$K["Comment"]="";if($C!="")$K["Name"]=$C;$J[$K["Name"]]=$K;}return$J;}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){$Je=(connection()->flavor=='maria');$J=array();foreach(get_rows("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ".q($R)." ORDER BY ORDINAL_POSITION")as$K){$m=$K["COLUMN_NAME"];$U=$K["COLUMN_TYPE"];$qd=$K["GENERATION_EXPRESSION"];$Oc=$K["EXTRA"];preg_match('~^(VIRTUAL|PERSISTENT|STORED)~',$Oc,$pd);preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~',$U,$Me);$k=$K["COLUMN_DEFAULT"];if($k!=""){$me=preg_match('~text|json~',$Me[1]);if(!$Je&&$me)$k=preg_replace("~^(_\w+)?('.*')$~",'\2',stripslashes($k));if($Je||$me){$k=($k=="NULL"?null:preg_replace_callback("~^'(.*)'$~",function($B){return
|
||
stripslashes(str_replace("''","'",$B[1]));},$k));}if(!$Je&&preg_match('~binary~',$Me[1])&&preg_match('~^0x(\w*)$~',$k,$B))$k=pack("H*",$B[1]);}$J[$m]=array("field"=>$m,"full_type"=>$U,"type"=>$Me[1],"length"=>$Me[2],"unsigned"=>ltrim($Me[3].$Me[4]),"default"=>($pd?($Je?$qd:stripslashes($qd)):$k),"null"=>($K["IS_NULLABLE"]=="YES"),"auto_increment"=>($Oc=="auto_increment"),"on_update"=>(preg_match('~\bon update (\w+)~i',$Oc,$B)?$B[1]:""),"collation"=>$K["COLLATION_NAME"],"privileges"=>array_flip(explode(",","$K[PRIVILEGES],where,order")),"comment"=>$K["COLUMN_COMMENT"],"primary"=>($K["COLUMN_KEY"]=="PRI"),"generated"=>($pd[1]=="PERSISTENT"?"STORED":$pd[1]),);}return$J;}function
|
||
indexes($R,$g=null){$J=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$K){$C=$K["Key_name"];$J[$C]["type"]=($C=="PRIMARY"?"PRIMARY":($K["Index_type"]=="FULLTEXT"?"FULLTEXT":($K["Non_unique"]?($K["Index_type"]=="SPATIAL"?"SPATIAL":"INDEX"):"UNIQUE")));$J[$C]["columns"][]=$K["Column_name"];$J[$C]["lengths"][]=($K["Index_type"]=="SPATIAL"?null:$K["Sub_part"]);$J[$C]["descs"][]=null;}return$J;}function
|
||
foreign_keys($R){static$og='(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';$J=array();$Bb=get_val("SHOW CREATE TABLE ".table($R),1);if($Bb){preg_match_all("~CONSTRAINT ($og) FOREIGN KEY ?\\(((?:$og,? ?)+)\\) REFERENCES ($og)(?:\\.($og))? \\(((?:$og,? ?)+)\\)(?: ON DELETE (".driver()->onActions."))?(?: ON UPDATE (".driver()->onActions."))?~",$Bb,$Ne,PREG_SET_ORDER);foreach($Ne
|
||
as$B){preg_match_all("~$og~",$B[2],$Kh);preg_match_all("~$og~",$B[5],$oi);$J[idf_unescape($B[1])]=array("db"=>idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('Adminer\idf_unescape',$Kh[0]),"target"=>array_map('Adminer\idf_unescape',$oi[0]),"on_delete"=>($B[6]?:"RESTRICT"),"on_update"=>($B[7]?:"RESTRICT"),);}}return$J;}function
|
||
view($C){return
|
||
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU','',get_val("SHOW CREATE VIEW ".table($C),1)));}function
|
||
collations(){$J=array();foreach(get_rows("SHOW COLLATION")as$K){if($K["Default"])$J[$K["Charset"]][-1]=$K["Collation"];else$J[$K["Charset"]][]=$K["Collation"];}ksort($J);foreach($J
|
||
as$x=>$X)sort($J[$x]);return$J;}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,$c){return
|
||
queries("CREATE DATABASE ".idf_escape($j).($c?" COLLATE ".q($c):""));}function
|
||
drop_databases(array$i){$J=apply_queries("DROP DATABASE",$i,'Adminer\idf_escape');restart_session();set_session("dbs",null);return$J;}function
|
||
rename_database($C,$c){$J=false;if(create_database($C,$c)){$T=array();$rj=array();foreach(tables_list()as$R=>$U){if($U=='VIEW')$rj[]=$R;else$T[]=$R;}$J=(!$T&&!$rj)||move_tables($T,$rj,$C);drop_databases($J?array(DB):array());}return$J;}function
|
||
auto_increment(){$Aa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$v){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$v["columns"],true)){$Aa="";break;}if($v["type"]=="PRIMARY")$Aa=" UNIQUE";}}return" AUTO_INCREMENT$Aa";}function
|
||
alter_table($R,$C,array$n,array$gd,$mb,$vc,$c,$_a,$kg){$b=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;}$b[]=($R!=""?($m[0]!=""?"CHANGE ".idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:"");}else$b[]="DROP ".idf_escape($m[0]);}$b=array_merge($b,$gd);$P=($mb!==null?" COMMENT=".q($mb):"").($vc?" ENGINE=".q($vc):"").($c?" COLLATE ".q($c):"").($_a!=""?" AUTO_INCREMENT=$_a":"");if($R=="")return
|
||
queries("CREATE TABLE ".table($C)." (\n".implode(",\n",$b)."\n)$P$kg");if($R!=$C)$b[]="RENAME TO ".table($C);if($P)$b[]=ltrim($P);return($b||$kg?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$b).$kg):true);}function
|
||
alter_indexes($R,$b){$Ta=array();foreach($b
|
||
as$X)$Ta[]=($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(",",$Ta));}function
|
||
truncate_tables(array$T){return
|
||
apply_queries("TRUNCATE TABLE",$T);}function
|
||
drop_views(array$rj){return
|
||
queries("DROP VIEW ".implode(", ",array_map('Adminer\table',$rj)));}function
|
||
drop_tables(array$T){return
|
||
queries("DROP TABLE ".implode(", ",array_map('Adminer\table',$T)));}function
|
||
move_tables(array$T,array$rj,$oi){$Yg=array();foreach($T
|
||
as$R)$Yg[]=table($R)." TO ".idf_escape($oi).".".table($R);if(!$Yg||queries("RENAME TABLE ".implode(", ",$Yg))){$Tb=array();foreach($rj
|
||
as$R)$Tb[table($R)]=view($R);connection()->select_db($oi);$j=idf_escape(DB);foreach($Tb
|
||
as$C=>$qj){if(!queries("CREATE VIEW $C AS ".str_replace(" $j."," ",$qj["select"]))||!queries("DROP VIEW $j.$C"))return
|
||
false;}return
|
||
true;}return
|
||
false;}function
|
||
copy_tables(array$T,array$rj,$oi){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
|
||
as$R){$C=($oi==DB?table("copy_$R"):idf_escape($oi).".".table($R));if(($_POST["overwrite"]&&!queries("\nDROP TABLE IF EXISTS $C"))||!queries("CREATE TABLE $C LIKE ".table($R))||!queries("INSERT INTO $C SELECT * FROM ".table($R)))return
|
||
false;foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K){$Mi=$K["Trigger"];if(!queries("CREATE TRIGGER ".($oi==DB?idf_escape("copy_$Mi"):idf_escape($oi).".".idf_escape($Mi))." $K[Timing] $K[Event] ON $C FOR EACH ROW\n$K[Statement];"))return
|
||
false;}}foreach($rj
|
||
as$R){$C=($oi==DB?table("copy_$R"):idf_escape($oi).".".table($R));$qj=view($R);if(($_POST["overwrite"]&&!queries("DROP VIEW IF EXISTS $C"))||!queries("CREATE VIEW $C AS $qj[select]"))return
|
||
false;}return
|
||
true;}function
|
||
trigger($C,$R){if($C=="")return
|
||
array();$L=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($C));return
|
||
reset($L);}function
|
||
triggers($R){$J=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$K)$J[$K["Trigger"]]=array($K["Timing"],$K["Event"]);return$J;}function
|
||
trigger_options(){return
|
||
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
|
||
routine($C,$U){$ra=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$Lh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$xc=driver()->enumLength;$Ri="((".implode("|",array_merge(array_keys(driver()->types()),$ra)).")\\b(?:\\s*\\(((?:[^'\")]|$xc)++)\\))?"."\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$og="$Lh*(".($U=="FUNCTION"?"":driver()->inout).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$Ri";$h=get_val("SHOW CREATE $U ".idf_escape($C),2);preg_match("~\\(((?:$og\\s*,?)*)\\)\\s*".($U=="FUNCTION"?"RETURNS\\s+$Ri\\s+":"")."(.*)~is",$h,$B);$n=array();preg_match_all("~$og\\s*,?~is",$B[1],$Ne,PREG_SET_ORDER);foreach($Ne
|
||
as$eg)$n[]=array("field"=>str_replace("``","`",$eg[2]).$eg[3],"type"=>strtolower($eg[5]),"length"=>preg_replace_callback("~$xc~s",'Adminer\normalize_enum',$eg[6]),"unsigned"=>strtolower(preg_replace('~\s+~',' ',trim("$eg[8] $eg[7]"))),"null"=>true,"full_type"=>$eg[4],"inout"=>strtoupper($eg[1]),"collation"=>strtolower($eg[9]),);return
|
||
array("fields"=>$n,"comment"=>get_val("SELECT ROUTINE_COMMENT FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE() AND ROUTINE_NAME = ".q($C)),)+($U!="FUNCTION"?array("definition"=>$B[11]):array("returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",));}function
|
||
routines(){return
|
||
get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = DATABASE()");}function
|
||
routine_languages(){return
|
||
array();}function
|
||
routine_id($C,array$K){return
|
||
idf_escape($C);}function
|
||
last_id($I){return
|
||
get_val("SELECT LAST_INSERT_ID()");}function
|
||
explain(Db$f,$H){return$f->query("EXPLAIN ".(min_version(5.1)&&!min_version(5.7)?"PARTITIONS ":"").$H);}function
|
||
found_rows(array$S,array$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
|
||
create_sql($R,$_a,$Xh){$J=get_val("SHOW CREATE TABLE ".table($R),1);if(!$_a)$J=preg_replace('~ AUTO_INCREMENT=\d+~','',$J);return$J;}function
|
||
truncate_sql($R){return"TRUNCATE ".table($R);}function
|
||
use_sql($Lb){return"USE ".idf_escape($Lb);}function
|
||
trigger_sql($R){$J="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$K)$J
|
||
.="\nCREATE TRIGGER ".idf_escape($K["Trigger"])." $K[Timing] $K[Event] ON ".table($K["Table"])." FOR EACH ROW\n$K[Statement];;\n";return$J;}function
|
||
show_variables(){return
|
||
get_rows("SHOW VARIABLES");}function
|
||
show_status(){return
|
||
get_rows("SHOW STATUS");}function
|
||
process_list(){return
|
||
get_rows("SHOW FULL PROCESSLIST");}function
|
||
convert_field(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,$J){if(preg_match("~binary~",$m["type"]))$J="UNHEX($J)";if($m["type"]=="bit")$J="CONVERT(b$J, UNSIGNED)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"])){$_g=(min_version(8)?"ST_":"");$J=$_g."GeomFromText($J, $_g"."SRID($m[field]))";}return$J;}function
|
||
support($Sc){return!preg_match("~scheme|sequence|type|view_trigger|materializedview".(min_version(8)?"":"|descidx".(min_version(5.1)?"":"|event|partitioning")).(min_version('8.0.16','10.2.1')?"":"|check")."~",$Sc);}function
|
||
kill_process($X){return
|
||
queries("KILL ".number($X));}function
|
||
connection_id(){return"SELECT CONNECTION_ID()";}function
|
||
max_connections(){return
|
||
get_val("SELECT @@max_connections");}function
|
||
types(){return
|
||
array();}function
|
||
type_values($t){return"";}function
|
||
schemas(){return
|
||
array();}function
|
||
get_schema(){return"";}function
|
||
set_schema($mh,$g=null){return
|
||
true;}}define('Adminer\JUSH',Driver::$pe);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($yi,$l="",$Ma=array(),$zi=""){page_headers();if(is_ajax()&&$l){page_messages($l);exit;}if(!ob_get_level())ob_start('ob_gzhandler',4096);$_i=$yi.($zi!=""?": $zi":"");$Ai=strip_tags($_i.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".adminer()->name());echo'<!DOCTYPE html>
|
||
<html lang="en" dir="ltr">
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
<meta name="robots" content="noindex">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>',$Ai,'</title>
|
||
<link rel="stylesheet" href="',h(preg_replace("~\\?.*~","",ME)."?file=default.css&version=5.2.1"),'">
|
||
';$Fb=adminer()->css();$Bd=false;$_d=false;foreach($Fb
|
||
as$o){if(strpos($o,"adminer.css")!==false)$Bd=true;if(strpos($o,"adminer-dark.css")!==false)$_d=true;}$Ib=($Bd?($_d?null:false):($_d?:null));$Ve=" media='(prefers-color-scheme: dark)'";if($Ib!==false)echo"<link rel='stylesheet'".($Ib?"":$Ve)." href='".h(preg_replace("~\\?.*~","",ME)."?file=dark.css&version=5.2.1")."'>\n";echo"<meta name='color-scheme' content='".($Ib===null?"light dark":($Ib?"dark":"light"))."'>\n",script_src(preg_replace("~\\?.*~","",ME)."?file=functions.js&version=5.2.1");if(adminer()->head($Ib))echo"<link rel='icon' href='data:image/gif;base64,R0lGODlhEAAQAJEAAAQCBPz+/PwCBAROZCH5BAEAAAAALAAAAAAQABAAAAI2hI+pGO1rmghihiUdvUBnZ3XBQA7f05mOak1RWXrNq5nQWHMKvuoJ37BhVEEfYxQzHjWQ5qIAADs='>\n","<link rel='apple-touch-icon' href='".h(preg_replace("~\\?.*~","",ME)."?file=logo.png&version=5.2.1")."'>\n";foreach($Fb
|
||
as$X)echo"<link rel='stylesheet'".(preg_match('~-dark\.~',$X)&&!$Ib?$Ve:"")." href='".h($X)."'>\n";echo"\n<body class='".'ltr'." nojs'>\n";$o=get_temp_dir()."/adminer.version";if(!$_COOKIE["adminer_version"]&&function_exists('openssl_verify')&&file_exists($o)&&filemtime($o)+86400>time()){$pj=unserialize(file_get_contents($o));$Ig="-----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($pj["version"],base64_decode($pj["signature"]),$Ig)==1)$_COOKIE["adminer_version"]=$pj["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('You are offline.')."';
|
||
const thousandsSeparator = '".js_escape(',')."';"),"<div id='help' class='jush-".JUSH." jsonly hidden'></div>\n",script("mixin(qs('#help'), {onmouseover: () => { helpOpen = 1; }, onmouseout: helpMouseout});"),"<div id='content'>\n","<span id='menuopen' class='jsonly'>".icon("move","","menu","")."</span>".script("qs('#menuopen').onclick = event => { qs('#foot').classList.toggle('foot'); event.stopPropagation(); }");if($Ma!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?:".").'">'.get_driver(DRIVER).'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=adminer()->serverName(SERVER);$N=($N!=""?$N:'Server');if($Ma===false)echo"$N\n";else{echo"<a href='".h($_)."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ma)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ma)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ma
|
||
as$x=>$X){$Vb=(is_array($X)?$X[1]:h($X));if($Vb!="")echo"<a href='".h(ME."$x=").urlencode(is_array($X)?$X[0]:$X)."'>$Vb</a> » ";}}echo"$yi\n";}}echo"<h2>$_i</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($l);$i=&get_session("dbs");if(DB!=""&&$i&&!in_array(DB,$i,true))$i=null;stop_session();define('Adminer\PAGE_HEADER',1);}function
|
||
page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-Frame-Options: deny");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");foreach(adminer()->csp(csp())as$Eb){$Dd=array();foreach($Eb
|
||
as$x=>$X)$Dd[]="$x $X";header("Content-Security-Policy: ".implode("; ",$Dd));}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$rf;if(!$rf)$rf=base64_encode(rand_string());return$rf;}function
|
||
page_messages($l){$cj=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$bf=idx($_SESSION["messages"],$cj);if($bf){echo"<div class='message'>".implode("</div>\n<div class='message'>",$bf)."</div>".script("messagesPrint();");unset($_SESSION["messages"][$cj]);}if($l)echo"<div class='error'>$l</div>\n";if(adminer()->error)echo"<div class='error'>".adminer()->error."</div>\n";}function
|
||
page_footer($ef=""){echo"</div>\n\n<div id='foot' class='foot'>\n<div id='menu'>\n";adminer()->navigation($ef);echo"</div>\n";if($ef!="auth")echo'<form action="" method="post">
|
||
<p class="logout">
|
||
<span>',h($_GET["username"])."\n",'</span>
|
||
<input type="submit" name="logout" value="Logout" id="logout">
|
||
',input_token(),'</form>
|
||
';echo"</div>\n\n",script("setupSubmitHighlight(document);");}function
|
||
int32($jf){while($jf>=2147483648)$jf-=4294967296;while($jf<=-2147483649)$jf+=4294967296;return(int)$jf;}function
|
||
long2str(array$W,$tj){$kh='';foreach($W
|
||
as$X)$kh
|
||
.=pack('V',$X);if($tj)return
|
||
substr($kh,0,end($W));return$kh;}function
|
||
str2long($kh,$tj){$W=array_values(unpack('V*',str_pad($kh,4*ceil(strlen($kh)/4),"\0")));if($tj)$W[]=strlen($kh);return$W;}function
|
||
xxtea_mx($_j,$zj,$ai,$qe){return
|
||
int32((($_j>>5&0x7FFFFFF)^$zj<<2)+(($zj>>3&0x1FFFFFFF)^$_j<<4))^int32(($ai^$zj)+($qe^$_j));}function
|
||
encrypt_string($Vh,$x){if($Vh=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Vh,true);$jf=count($W)-1;$_j=$W[$jf];$zj=$W[0];$Jg=floor(6+52/($jf+1));$ai=0;while($Jg-->0){$ai=int32($ai+0x9E3779B9);$mc=$ai>>2&3;for($cg=0;$cg<$jf;$cg++){$zj=$W[$cg+1];$if=xxtea_mx($_j,$zj,$ai,$x[$cg&3^$mc]);$_j=int32($W[$cg]+$if);$W[$cg]=$_j;}$zj=$W[0];$if=xxtea_mx($_j,$zj,$ai,$x[$cg&3^$mc]);$_j=int32($W[$jf]+$if);$W[$jf]=$_j;}return
|
||
long2str($W,false);}function
|
||
decrypt_string($Vh,$x){if($Vh=="")return"";if(!$x)return
|
||
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Vh,false);$jf=count($W)-1;$_j=$W[$jf];$zj=$W[0];$Jg=floor(6+52/($jf+1));$ai=int32($Jg*0x9E3779B9);while($ai){$mc=$ai>>2&3;for($cg=$jf;$cg>0;$cg--){$_j=$W[$cg-1];$if=xxtea_mx($_j,$zj,$ai,$x[$cg&3^$mc]);$zj=int32($W[$cg]-$if);$W[$cg]=$zj;}$_j=$W[$jf];$if=xxtea_mx($_j,$zj,$ai,$x[$cg&3^$mc]);$zj=int32($W[0]-$if);$W[0]=$zj;$ai=int32($ai-0x9E3779B9);}return
|
||
long2str($W,true);}$qg=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$qg[$x]=$X;}}function
|
||
add_invalid_login(){$Fa=get_temp_dir()."/adminer.invalid";foreach(glob("$Fa*")?:array($Fa)as$o){$q=file_open_lock($o);if($q)break;}if(!$q)$q=file_open_lock("$Fa-".rand_string());if(!$q)return;$ie=unserialize(stream_get_contents($q));$vi=time();if($ie){foreach($ie
|
||
as$je=>$X){if($X[0]<$vi)unset($ie[$je]);}}$he=&$ie[adminer()->bruteForceKey()];if(!$he)$he=array($vi+30*60,0);$he[1]++;file_write_unlock($q,serialize($ie));}function
|
||
check_invalid_login(array&$qg){$ie=array();foreach(glob(get_temp_dir()."/adminer.invalid*")as$o){$q=file_open_lock($o);if($q){$ie=unserialize(stream_get_contents($q));file_unlock($q);break;}}$he=idx($ie,adminer()->bruteForceKey(),array());$qf=($he[1]>29?$he[0]-time():0);if($qf>0)auth_error(lang_format(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($qf/60)),$qg);}$za=$_POST["auth"];if($za){session_regenerate_id();$oj=$za["driver"];$N=$za["server"];$V=$za["username"];$F=(string)$za["password"];$j=$za["db"];set_password($oj,$N,$V,$F);$_SESSION["db"][$oj][$N][$V][$j]=true;if($za["permanent"]){$x=implode("-",array_map('base64_encode',array($oj,$N,$V,$j)));$Dg=adminer()->permanentLogin(true);$qg[$x]="$x:".base64_encode($Dg?encrypt_string($F,$Dg):"");cookie("adminer_permanent",implode(" ",$qg));}if(count($_POST)==1||DRIVER!=$oj||SERVER!=$N||$_GET["username"]!==$V||DB!=$j)redirect(auth_url($oj,$N,$V,$j));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent($qg);redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.'.' '.'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.');}elseif($qg&&!$_SESSION["pwds"]){session_regenerate_id();$Dg=adminer()->permanentLogin();foreach($qg
|
||
as$x=>$X){list(,$bb)=explode(":",$X);list($oj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));set_password($oj,$N,$V,decrypt_string(base64_decode($bb),$Dg));$_SESSION["db"][$oj][$N][$V][$j]=true;}}function
|
||
unset_permanent(array&$qg){foreach($qg
|
||
as$x=>$X){list($oj,$N,$V,$j)=array_map('base64_decode',explode("-",$x));if($oj==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$j==DB)unset($qg[$x]);}cookie("adminer_permanent",implode(" ",$qg));}function
|
||
auth_error($l,array&$qg){$Ch=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Ch]||$_GET[$Ch])&&!$_SESSION["token"])$l='Session expired, please login again.';else{restart_session();add_invalid_login();$F=get_password();if($F!==null){if($F===false)$l
|
||
.=($l?'<br>':'').sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.',target_blank(),'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent($qg);}}if(!$_COOKIE[$Ch]&&$_GET[$Ch]&&ini_bool("session.use_only_cookies"))$l='Session support must be enabled.';$fg=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?:rand_string()),$fg["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header('Login',$l,null);echo"<form action='' method='post'>\n","<div>";if(hidden_fields($_POST,array("auth")))echo"<p class='message'>".'The action will be performed after successful login with the same credentials.'."\n";echo"</div>\n";adminer()->loginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!class_exists('Adminer\Db')){unset($_SESSION["pwds"][DRIVER]);unset_permanent($qg);page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",Driver::$Nc)),false);page_footer("auth");exit;}$f='';if(isset($_GET["username"])&&is_string(get_password())){list($Jd,$ug)=explode(":",SERVER,2);if(preg_match('~^\s*([-+]?\d+)~',$ug,$B)&&($B[1]<1024||$B[1]>65535))auth_error('Connecting to privileged ports is not allowed.',$qg);check_invalid_login($qg);$Db=adminer()->credentials();$f=Driver::connect($Db[0],$Db[1],$Db[2]);if(is_object($f)){Db::$fe=$f;Driver::$fe=new
|
||
Driver($f);if($f->flavor)save_settings(array("vendor-".DRIVER."-".SERVER=>get_driver(DRIVER)));}}$He=null;if(!is_object($f)||($He=adminer()->login($_GET["username"],get_password()))!==true){$l=(is_string($f)?nl_br(h($f)):(is_string($He)?$He:'Invalid credentials.')).(preg_match('~^ | $~',get_password())?'<br>'.'There is a space in the input password which might be the cause.':'');auth_error($l,$qg);}if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($za&&$_POST["token"])$_POST["token"]=get_token();$l='';if($_POST){if(!verify_token()){$ae="max_input_vars";$Te=ini_get($ae);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$Te||$X<$Te)){$ae=$x;$Te=$X;}}}$l=(!$_POST["token"]&&$Te?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$ae'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$l=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$l
|
||
.=' '.'You can upload a big SQL file via FTP and import it from server.';}function
|
||
print_select_result($I,$g=null,array$Rf=array(),$z=0){$Ge=array();$w=array();$e=array();$Ka=array();$Si=array();$J=array();for($s=0;(!$z||$s<$z)&&($K=$I->fetch_row());$s++){if(!$s){echo"<div class='scrollable'>\n","<table class='nowrap odds'>\n","<thead><tr>";for($oe=0;$oe<count($K);$oe++){$m=$I->fetch_field();$C=$m->name;$Qf=(isset($m->orgtable)?$m->orgtable:"");$Pf=(isset($m->orgname)?$m->orgname:$C);if($Rf&&JUSH=="sql")$Ge[$oe]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Qf!=""){if(isset($m->table))$J[$m->table]=$Qf;if(!isset($w[$Qf])){$w[$Qf]=array();foreach(indexes($Qf,$g)as$v){if($v["type"]=="PRIMARY"){$w[$Qf]=array_flip($v["columns"]);break;}}$e[$Qf]=$w[$Qf];}if(isset($e[$Qf][$Pf])){unset($e[$Qf][$Pf]);$w[$Qf][$Pf]=$oe;$Ge[$oe]=$Qf;}}if($m->charsetnr==63)$Ka[$oe]=true;$Si[$oe]=$m->type;echo"<th".($Qf!=""||$m->name!=$Pf?" title='".h(($Qf!=""?"$Qf.":"").$Pf)."'":"").">".h($C).($Rf?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C),'mariadb'=>"explain/#the-columns-in-explain-select",)):"");}echo"</thead>\n";}echo"<tr>";foreach($K
|
||
as$x=>$X){$_="";if(isset($Ge[$x])&&!$e[$Ge[$x]]){if($Rf&&JUSH=="sql"){$R=$K[array_search("table=",$Ge)];$_=ME.$Ge[$x].urlencode($Rf[$R]!=""?$Rf[$R]:$R);}else{$_=ME."edit=".urlencode($Ge[$x]);foreach($w[$Ge[$x]]as$fb=>$oe)$_
|
||
.="&where".urlencode("[".bracket_escape($fb)."]")."=".urlencode($K[$oe]);}}elseif(is_url($X))$_=$X;if($X===null)$X="<i>NULL</i>";elseif($Ka[$x]&&!is_utf8($X))$X="<i>".lang_format(array('%d byte','%d bytes'),strlen($X))."</i>";else{$X=h($X);if($Si[$x]==254)$X="<code>$X</code>";}if($_)$X="<a href='".h($_)."'".(is_url($_)?target_blank():'').">$X</a>";echo"<td".($Si[$x]<=9||$Si[$x]==246?" class='number'":"").">$X";}}echo($s?"</table>\n</div>":"<p class='message'>".'No rows.')."\n";return$J;}function
|
||
referencable_primary($vh){$J=array();foreach(table_status('',true)as$fi=>$R){if($fi!=$vh&&fk_support($R)){foreach(fields($fi)as$m){if($m["primary"]){if($J[$fi]){unset($J[$fi]);break;}$J[$fi]=$m;}}}}return$J;}function
|
||
textarea($C,$Y,$L=10,$ib=80){echo"<textarea name='".h($C)."' rows='$L' cols='$ib' class='sqlarea jush-".JUSH."' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
|
||
as$X)echo
|
||
h($X[0])."\n\n\n";}else
|
||
echo
|
||
h($Y);echo"</textarea>";}function
|
||
select_input($ya,array$Lf,$Y="",$Ff="",$rg=""){$ni=($Lf?"select":"input");return"<$ni$ya".($Lf?"><option value=''>$rg".optionlist($Lf,$Y,true)."</select>":" size='10' value='".h($Y)."' placeholder='$rg'>").($Ff?script("qsl('$ni').onchange = $Ff;",""):"");}function
|
||
json_row($x,$X=null){static$Yc=true;if($Yc)echo"{";if($x!=""){echo($Yc?"":",")."\n\t\"".addcslashes($x,"\r\n\t\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'null');$Yc=false;}else{echo"\n}\n";$Yc=true;}}function
|
||
edit_type($x,array$m,array$hb,array$id=array(),array$Pc=array()){$U=$m["type"];echo"<td><select name='".h($x)."[type]' class='type' aria-labelledby='label-type'>";if($U&&!array_key_exists($U,driver()->types())&&!isset($id[$U])&&!in_array($U,$Pc))$Pc[]=$U;$Wh=driver()->structuredTypes();if($id)$Wh['Foreign keys']=$id;echo
|
||
optionlist(array_merge($Pc,$Wh),$U),"</select><td>","<input name='".h($x)."[length]' value='".h($m["length"])."' size='3'".(!$m["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":"")." aria-labelledby='label-length'>","<td class='options'>",($hb?"<input list='collations' name='".h($x)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'")." value='".h($m["collation"])."' placeholder='(".'collation'.")'>":''),(driver()->unsigned?"<select name='".h($x)."[unsigned]'".(!$U||preg_match(number_type(),$U)?"":" class='hidden'").'><option>'.optionlist(driver()->unsigned,$m["unsigned"]).'</select>':''),(isset($m['on_update'])?"<select name='".h($x)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".'ON UPDATE'.")","CURRENT_TIMESTAMP"),(preg_match('~^CURRENT_TIMESTAMP~i',$m["on_update"])?"CURRENT_TIMESTAMP":$m["on_update"])).'</select>':''),($id?"<select name='".h($x)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".'ON DELETE'.")".optionlist(explode("|",driver()->onActions),$m["on_delete"])."</select> ":" ");}function
|
||
get_partitions_info($R){$md="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($R);$I=connection()->query("SELECT PARTITION_METHOD, PARTITION_EXPRESSION, PARTITION_ORDINAL_POSITION $md ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");$J=array();list($J["partition_by"],$J["partition"],$J["partitions"])=$I->fetch_row();$lg=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $md AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$J["partition_names"]=array_keys($lg);$J["partition_values"]=array_values($lg);return$J;}function
|
||
process_length($y){$zc=driver()->enumLength;return(preg_match("~^\\s*\\(?\\s*$zc(?:\\s*,\\s*$zc)*+\\s*\\)?\\s*\$~",$y)&&preg_match_all("~$zc~",$y,$Ne)?"(".implode(",",$Ne[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$y)));}function
|
||
process_type(array$m,$gb="COLLATE"){return" $m[type]".process_length($m["length"]).(preg_match(number_type(),$m["type"])&&in_array($m["unsigned"],driver()->unsigned)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $gb ".(JUSH=="mssql"?$m["collation"]:q($m["collation"])):"");}function
|
||
process_field(array$m,array$Qi){if($m["on_update"])$m["on_update"]=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$m["on_update"]);return
|
||
array(idf_escape(trim($m["field"])),process_type($Qi),($m["null"]?" NULL":" NOT NULL"),default_value($m),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(support("comment")&&$m["comment"]!=""?" COMMENT ".q($m["comment"]):""),($m["auto_increment"]?auto_increment():null),);}function
|
||
default_value(array$m){$k=$m["default"];$pd=$m["generated"];return($k===null?"":(in_array($pd,driver()->generated)?(JUSH=="mssql"?" AS ($k)".($pd=="VIRTUAL"?"":" $pd")."":" GENERATED ALWAYS AS ($k) $pd"):" DEFAULT ".(!preg_match('~^GENERATED ~i',$k)&&(preg_match('~char|binary|text|json|enum|set~',$m["type"])||preg_match('~^(?![a-z])~i',$k))?(JUSH=="sql"&&preg_match('~text|json~',$m["type"])?"(".q($k).")":q($k)):str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",(JUSH=="sqlite"?"($k)":$k)))));}function
|
||
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}function
|
||
edit_fields(array$n,array$hb,$U="TABLE",array$id=array()){$n=array_values($n);$Qb=(($_POST?$_POST["defaults"]:get_setting("defaults"))?"":" class='hidden'");$nb=(($_POST?$_POST["comments"]:get_setting("comments"))?"":" class='hidden'");echo"<thead><tr>\n",($U=="PROCEDURE"?"<td>":""),"<th id='label-name'>".($U=="TABLE"?'Column name':'Parameter name'),"<td id='label-type'>".'Type'."<textarea id='enum-edit' rows='4' cols='12' wrap='off' style='display: none;'></textarea>".script("qs('#enum-edit').onblur = editingLengthBlur;"),"<td id='label-length'>".'Length',"<td>".'Options';if($U=="TABLE")echo"<td id='label-null'>NULL\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='".'Auto Increment'."'>AI</abbr>",doc_link(array('sql'=>"example-auto-increment.html",'mariadb'=>"auto_increment/",'sqlite'=>"autoinc.html",'pgsql'=>"datatype-numeric.html#DATATYPE-SERIAL",'mssql'=>"t-sql/statements/create-table-transact-sql-identity-property",)),"<td id='label-default'$Qb>".'Default value',(support("comment")?"<td id='label-comment'$nb>".'Comment':"");echo"<td>".icon("plus","add[".(support("move_col")?0:count($n))."]","+",'Add next'),"</thead>\n<tbody>\n",script("mixin(qsl('tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput});");foreach($n
|
||
as$s=>$m){$s++;$Sf=$m[($_POST?"orig":"field")];$bc=(isset($_POST["add"][$s-1])||(isset($m["field"])&&!idx($_POST["drop_col"],$s)))&&(support("drop_col")||$Sf=="");echo"<tr".($bc?"":" style='display: none;'").">\n",($U=="PROCEDURE"?"<td>".html_select("fields[$s][inout]",explode("|",driver()->inout),$m["inout"]):"")."<th>";if($bc)echo"<input name='fields[$s][field]' value='".h($m["field"])."' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'>";echo
|
||
input_hidden("fields[$s][orig]",$Sf);edit_type("fields[$s]",$m,$hb,$id);if($U=="TABLE")echo"<td>".checkbox("fields[$s][null]",1,$m["null"],"","","block","label-null"),"<td><label class='block'><input type='radio' name='auto_increment_col' value='$s'".($m["auto_increment"]?" checked":"")." aria-labelledby='label-ai'></label>","<td$Qb>".(driver()->generated?html_select("fields[$s][generated]",array_merge(array("","DEFAULT"),driver()->generated),$m["generated"])." ":checkbox("fields[$s][generated]",1,$m["generated"],"","","","label-default")),"<input name='fields[$s][default]' value='".h($m["default"])."' aria-labelledby='label-default'>",(support("comment")?"<td$nb><input name='fields[$s][comment]' value='".h($m["comment"])."' data-maxlength='".(min_version(5.5)?1024:255)."' aria-labelledby='label-comment'>":"");echo"<td>",(support("move_col")?icon("plus","add[$s]","+",'Add next')." ".icon("up","up[$s]","↑",'Move up')." ".icon("down","down[$s]","↓",'Move down')." ":""),($Sf==""||support("drop_col")?icon("cross","drop_col[$s]","x",'Remove'):"");}}function
|
||
process_fields(array&$n){$D=0;if($_POST["up"]){$ye=0;foreach($n
|
||
as$x=>$m){if(key($_POST["up"])==$x){unset($n[$x]);array_splice($n,$ye,0,array($m));break;}if(isset($m["field"]))$ye=$D;$D++;}}elseif($_POST["down"]){$kd=false;foreach($n
|
||
as$x=>$m){if(isset($m["field"])&&$kd){unset($n[key($_POST["down"])]);array_splice($n,$D,0,array($kd));break;}if(key($_POST["down"])==$x)$kd=$m;$D++;}}elseif($_POST["add"]){$n=array_values($n);array_splice($n,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
|
||
false;return
|
||
true;}function
|
||
normalize_enum(array$B){$X=$B[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($X[0].$X[0],$X[0],substr($X,1,-1))),'\\'))."'";}function
|
||
grant($rd,array$Fg,$e,$Cf){if(!$Fg)return
|
||
true;if($Fg==array("ALL PRIVILEGES","GRANT OPTION"))return($rd=="GRANT"?queries("$rd ALL PRIVILEGES$Cf WITH GRANT OPTION"):queries("$rd ALL PRIVILEGES$Cf")&&queries("$rd GRANT OPTION$Cf"));return
|
||
queries("$rd ".preg_replace('~(GRANT OPTION)\([^)]*\)~','\1',implode("$e, ",$Fg).$e).$Cf);}function
|
||
drop_create($fc,$h,$hc,$ri,$jc,$A,$af,$Ye,$Ze,$_f,$nf){if($_POST["drop"])query_redirect($fc,$A,$af);elseif($_f=="")query_redirect($h,$A,$Ze);elseif($_f!=$nf){$Cb=queries($h);queries_redirect($A,$Ye,$Cb&&queries($fc));if($Cb)queries($hc);}else
|
||
queries_redirect($A,$Ye,queries($ri)&&queries($jc)&&queries($fc)&&queries($h));}function
|
||
create_trigger($Cf,array$K){$xi=" $K[Timing] $K[Event]".(preg_match('~ OF~',$K["Event"])?" $K[Of]":"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).(JUSH=="mssql"?$Cf.$xi:$xi.$Cf).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
|
||
create_routine($gh,array$K){$O=array();$n=(array)$K["fields"];ksort($n);foreach($n
|
||
as$m){if($m["field"]!="")$O[]=(preg_match("~^(".driver()->inout.")\$~",$m["inout"])?"$m[inout] ":"").idf_escape($m["field"]).process_type($m,"CHARACTER SET");}$Sb=rtrim($K["definition"],";");return"CREATE $gh ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".($gh=="FUNCTION"?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").(JUSH=="pgsql"?" AS ".q($Sb):"\n$Sb;");}function
|
||
remove_definer($H){return
|
||
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$H);}function
|
||
format_foreign_key(array$p){$j=$p["db"];$sf=$p["ns"];return" FOREIGN KEY (".implode(", ",array_map('Adminer\idf_escape',$p["source"])).") REFERENCES ".($j!=""&&$j!=$_GET["db"]?idf_escape($j).".":"").($sf!=""&&$sf!=$_GET["ns"]?idf_escape($sf).".":"").idf_escape($p["table"])." (".implode(", ",array_map('Adminer\idf_escape',$p["target"])).")".(preg_match("~^(".driver()->onActions.")\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^(".driver()->onActions.")\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
|
||
tar_file($o,$Bi){$J=pack("a100a8a8a8a12a12",$o,644,0,0,decoct($Bi->size),decoct(time()));$ab=8*32;for($s=0;$s<strlen($J);$s++)$ab+=ord($J[$s]);$J
|
||
.=sprintf("%06o",$ab)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$Bi->send();echo
|
||
str_repeat("\0",511-($Bi->size+511)%512);}function
|
||
ini_bytes($ae){$X=ini_get($ae);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
|
||
doc_link(array$ng,$si="<sup>?</sup>"){$Ah=connection()->server_info;$pj=preg_replace('~^(\d\.?\d).*~s','\1',$Ah);$ej=array('sql'=>"https://dev.mysql.com/doc/refman/$pj/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(connection()->flavor=='cockroach'?"current":$pj)."/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s','\1\2',$Ah)."&id=",);if(connection()->flavor=='maria'){$ej['sql']="https://mariadb.com/kb/en/";$ng['sql']=(isset($ng['mariadb'])?$ng['mariadb']:str_replace(".html","/",$ng['sql']));}return($ng[JUSH]?"<a href='".h($ej[JUSH].$ng[JUSH].(JUSH=='mssql'?"?view=sql-server-ver$pj":""))."'".target_blank().">$si</a>":"");}function
|
||
db_size($j){if(!connection()->select_db($j))return"?";$J=0;foreach(table_status()as$S)$J+=$S["Data_length"]+$S["Index_length"];return
|
||
format_number($J);}function
|
||
set_utf8mb4($h){static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$h)){$O=true;echo"SET NAMES ".charset(connection()).";\n\n";}}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?connection()->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}if(DB!=""){header("HTTP/1.1 404 Not Found");page_header('Database'.": ".h(DB),'Invalid database.',true);}else{if($_POST["db"]&&!$l)queries_redirect(substr(ME,0,-1),'Databases have been dropped.',drop_databases($_POST["db"]));page_header('Select database',$l,false);echo"<p class='links'>\n";foreach(array('database'=>'Create database','privileges'=>'Privileges','processlist'=>'Process list','variables'=>'Variables','status'=>'Status',)as$x=>$X){if(support($x))echo"<a href='".h(ME)."$x='>$X</a>\n";}echo"<p>".sprintf('%s version: %s through PHP extension %s',get_driver(DRIVER),"<b>".h(connection()->server_info)."</b>","<b>".connection()->extension."</b>")."\n","<p>".sprintf('Logged as: %s',"<b>".h(logged_user())."</b>")."\n";$i=adminer()->databases();if($i){$oh=support("scheme");$hb=collations();echo"<form action='' method='post'>\n","<table class='checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),"<thead><tr>".(support("database")?"<td>":"")."<th>".'Database'.(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".'Refresh'."</a>":"")."<td>".'Collation'."<td>".'Tables'."<td>".'Size'." - <a href='".h(ME)."dbsize=1'>".'Compute'."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n";$i=($_GET["dbsize"]?count_tables($i):array_flip($i));foreach($i
|
||
as$j=>$T){$fh=h(ME)."db=".urlencode($j);$t=h("Db-".$j);echo"<tr>".(support("database")?"<td>".checkbox("db[]",$j,in_array($j,(array)$_POST["db"]),"","","",$t):""),"<th><a href='$fh' id='$t'>".h($j)."</a>";$c=h(db_collation($j,$hb));echo"<td>".(support("database")?"<a href='$fh".($oh?"&ns=":"")."&database=' title='".'Alter database'."'>$c</a>":$c),"<td align='right'><a href='$fh&schema=' id='tables-".h($j)."' title='".'Database schema'."'>".($_GET["dbsize"]?$T:"?")."</a>","<td align='right' id='size-".h($j)."'>".($_GET["dbsize"]?db_size($j):"?"),"\n";}echo"</table>\n",(support("database")?"<div class='footer'><div>\n"."<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>\n".input_hidden("all").script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };")."<input type='submit' name='drop' value='".'Drop'."'>".confirm()."\n"."</div></fieldset>\n"."</div></div>\n":""),input_token(),"</form>\n",script("tableCheck();");}if(!empty(adminer()->plugins)){echo"<div class='plugins'>\n","<h3>".'Loaded plugins'."</h3>\n<ul>\n";foreach(adminer()->plugins
|
||
as$sg){$Wb=(method_exists($sg,'description')?$sg->description():"");if(!$Wb){$Ug=new
|
||
\ReflectionObject($sg);if(preg_match('~^/[\s*]+(.+)~',$Ug->getDocComment(),$B))$Wb=$B[1];}$ph=(method_exists($sg,'screenshot')?$sg->screenshot():"");echo"<li><b>".get_class($sg)."</b>".h($Wb?": $Wb":"").($ph?" (<a href='".h($ph)."'".target_blank().">".'screenshot'."</a>)":"")."\n";}echo"</ul>\n";adminer()->pluginsLinks();echo"</div>\n";}}page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header('Schema'.": ".h($_GET["ns"]),'Invalid schema.',true);page_footer("ns");exit;}}}class
|
||
TmpFile{private$handler;var$size;function
|
||
__construct(){$this->handler=tmpfile();}function
|
||
write($xb){$this->size+=strlen($xb);fwrite($this->handler,$xb);}function
|
||
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$n=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=driver()->select($a,$M,array(where($_GET,$n)),$M);$K=($I?$I->fetch_row():array());echo
|
||
driver()->value($K[0],$n[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$n=fields($a);if(!$n)$l=error()?:'No tables.';$S=table_status1($a);$C=adminer()->tableName($S);page_header(($n&&is_view($S)?$S['Engine']=='materialized view'?'Materialized view':'View':'Table').": ".($C!=""?$C:h($a)),$l);$eh=array();foreach($n
|
||
as$x=>$m)$eh+=$m["privileges"];adminer()->selectLinks($S,(isset($eh["insert"])||!support("table")?"":null));$mb=$S["Comment"];if($mb!="")echo"<p class='nowrap'>".'Comment'.": ".h($mb)."\n";if($n)adminer()->tableStructurePrint($n,$S);if(support("indexes")&&driver()->supportsIndex($S)){echo"<h3 id='indexes'>".'Indexes'."</h3>\n";$w=indexes($a);if($w)adminer()->tableIndexesPrint($w);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.'Alter indexes'."</a>\n";}if(!is_view($S)){if(fk_support($S)){echo"<h3 id='foreign-keys'>".'Foreign keys'."</h3>\n";$id=foreign_keys($a);if($id){echo"<table>\n","<thead><tr><th>".'Source'."<td>".'Target'."<td>".'ON DELETE'."<td>".'ON UPDATE'."<td></thead>\n";foreach($id
|
||
as$C=>$p){echo"<tr title='".h($C)."'>","<th><i>".implode("</i>, <i>",array_map('Adminer\h',$p["source"]))."</i>";$_=($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ME):ME));echo"<td><a href='".h($_."table=".urlencode($p["table"]))."'>".($p["db"]!=""&&$p["db"]!=DB?"<b>".h($p["db"])."</b>.":"").($p["ns"]!=""&&$p["ns"]!=$_GET["ns"]?"<b>".h($p["ns"])."</b>.":"").h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('Adminer\h',$p["target"]))."</i>)","<td>".h($p["on_delete"]),"<td>".h($p["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($C)).'">'.'Alter'.'</a>',"\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.'Add foreign key'."</a>\n";}if(support("check")){echo"<h3 id='checks'>".'Checks'."</h3>\n";$Wa=driver()->checkConstraints($a);if($Wa){echo"<table>\n";foreach($Wa
|
||
as$x=>$X)echo"<tr title='".h($x)."'>","<td><code class='jush-".JUSH."'>".h($X),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($x))."'>".'Alter'."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.'Create check'."</a>\n";}}if(support(is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".'Triggers'."</h3>\n";$Pi=triggers($a);if($Pi){echo"<table>\n";foreach($Pi
|
||
as$x=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($x)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($x))."'>".'Alter'."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.'Add trigger'."</a>\n";}}elseif(isset($_GET["schema"])){page_header('Database schema',"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$hi=array();$ii=array();$ca=($_GET["schema"]?:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ca,$Ne,PREG_SET_ORDER);foreach($Ne
|
||
as$s=>$B){$hi[$B[1]]=array($B[2],$B[3]);$ii[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$Ei=0;$Ga=-1;$mh=array();$Tg=array();$Be=array();$sa=driver()->allFields();foreach(table_status('',true)as$R=>$S){if(is_view($S))continue;$vg=0;$mh[$R]["fields"]=array();foreach($sa[$R]as$m){$vg+=1.25;$m["pos"]=$vg;$mh[$R]["fields"][$m["field"]]=$m;}$mh[$R]["pos"]=($hi[$R]?:array($Ei,0));foreach(adminer()->foreignKeys($R)as$X){if(!$X["db"]){$_e=$Ga;if(idx($hi[$R],1)||idx($hi[$X["table"]],1))$_e=min(idx($hi[$R],1,0),idx($hi[$X["table"]],1,0))-1;else$Ga-=.1;while($Be[(string)$_e])$_e-=.0001;$mh[$R]["references"][$X["table"]][(string)$_e]=array($X["source"],$X["target"]);$Tg[$X["table"]][$R][(string)$_e]=$X["target"];$Be[(string)$_e]=true;}}$Ei=max($Ei,$mh[$R]["pos"][0]+2.5+$vg);}echo'<div id="schema" style="height: ',$Ei,'em;">
|
||
<script',nonce(),'>
|
||
qs(\'#schema\').onselectstart = () => false;
|
||
const tablePos = {',implode(",",$ii)."\n",'};
|
||
const em = qs(\'#schema\').offsetHeight / ',$Ei,';
|
||
document.onmousemove = schemaMousemove;
|
||
document.onmouseup = partialArg(schemaMouseup, \'',js_escape(DB),'\');
|
||
</script>
|
||
';foreach($mh
|
||
as$C=>$R){echo"<div class='table' style='top: ".$R["pos"][0]."em; left: ".$R["pos"][1]."em;'>",'<a href="'.h(ME).'table='.urlencode($C).'"><b>'.h($C)."</b></a>",script("qsl('div').onmousedown = schemaMousedown;");foreach($R["fields"]as$m){$X='<span'.type_class($m["type"]).' title="'.h($m["type"].($m["length"]?"($m[length])":"").($m["null"]?" NULL":'')).'">'.h($m["field"]).'</span>';echo"<br>".($m["primary"]?"<i>$X</i>":$X);}foreach((array)$R["references"]as$pi=>$Vg){foreach($Vg
|
||
as$_e=>$Qg){$Ae=$_e-idx($hi[$C],1);$s=0;foreach($Qg[0]as$Kh)echo"\n<div class='references' title='".h($pi)."' id='refs$_e-".($s++)."' style='left: $Ae"."em; top: ".$R["fields"][$Kh]["pos"]."em; padding-top: .5em;'>"."<div style='border-top: 1px solid gray; width: ".(-$Ae)."em;'></div></div>";}}foreach((array)$Tg[$C]as$pi=>$Vg){foreach($Vg
|
||
as$_e=>$e){$Ae=$_e-idx($hi[$C],1);$s=0;foreach($e
|
||
as$oi)echo"\n<div class='references arrow' title='".h($pi)."' id='refd$_e-".($s++)."' style='left: $Ae"."em; top: ".$R["fields"][$oi]["pos"]."em;'>"."<div style='height: .5em; border-bottom: 1px solid gray; width: ".(-$Ae)."em;'></div>"."</div>";}}echo"\n</div>\n";}foreach($mh
|
||
as$C=>$R){foreach((array)$R["references"]as$pi=>$Vg){foreach($Vg
|
||
as$_e=>$Qg){$df=$Ei;$Re=-10;foreach($Qg[0]as$x=>$Kh){$wg=$R["pos"][0]+$R["fields"][$Kh]["pos"];$xg=$mh[$pi]["pos"][0]+$mh[$pi]["fields"][$Qg[1][$x]]["pos"];$df=min($df,$wg,$xg);$Re=max($Re,$wg,$xg);}echo"<div class='references' id='refl$_e' style='left: $_e"."em; top: $df"."em; padding: .5em 0;'><div style='border-right: 1px solid gray; margin-top: 1px; height: ".($Re-$df)."em;'></div></div>\n";}}}echo'</div>
|
||
<p class="links"><a href="',h(ME."schema=".urlencode($ca)),'" id="schema-link">Permanent link</a>
|
||
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$l){save_settings(array_intersect_key($_POST,array_flip(array("output","format","db_style","types","routines","events","table_style","auto_increment","triggers","data_style"))),"adminer_export");$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Lc=dump_headers((count($T)==1?key($T):DB),(DB==""||count($T)>1));$le=preg_match('~sql~',$_POST["format"]);if($le){echo"-- Adminer ".VERSION." ".get_driver(DRIVER)." ".str_replace("\n"," ",connection()->server_info)." dump\n\n";if(JUSH=="sql"){echo"SET NAMES utf8;
|
||
SET time_zone = '+00:00';
|
||
SET foreign_key_checks = 0;
|
||
".($_POST["data_style"]?"SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||
":"")."
|
||
";connection()->query("SET time_zone = '+00:00'");connection()->query("SET sql_mode = ''");}}$Xh=$_POST["db_style"];$i=array(DB);if(DB==""){$i=$_POST["databases"];if(is_string($i))$i=explode("\n",rtrim(str_replace("\r","",$i),"\n"));}foreach((array)$i
|
||
as$j){adminer()->dumpDatabase($j);if(connection()->select_db($j)){if($le&&preg_match('~CREATE~',$Xh)&&($h=get_val("SHOW CREATE DATABASE ".idf_escape($j),1))){set_utf8mb4($h);if($Xh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($j).";\n";echo"$h;\n";}if($le){if($Xh)echo
|
||
use_sql($j).";\n\n";$Zf="";if($_POST["types"]){foreach(types()as$t=>$U){$_c=type_values($t);if($_c)$Zf
|
||
.=($Xh!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($U).";;\n":"")."CREATE TYPE ".idf_escape($U)." AS ENUM ($_c);\n\n";else$Zf
|
||
.="-- Could not export type $U\n\n";}}if($_POST["routines"]){foreach(routines()as$K){$C=$K["ROUTINE_NAME"];$gh=$K["ROUTINE_TYPE"];$h=create_routine($gh,array("name"=>$C)+routine($K["SPECIFIC_NAME"],$gh));set_utf8mb4($h);$Zf
|
||
.=($Xh!='DROP+CREATE'?"DROP $gh IF EXISTS ".idf_escape($C).";;\n":"")."$h;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K){$h=remove_definer(get_val("SHOW CREATE EVENT ".idf_escape($K["Name"]),3));set_utf8mb4($h);$Zf
|
||
.=($Xh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$h;;\n\n";}}echo($Zf&&JUSH=='sql'?"DELIMITER ;;\n\n$Zf"."DELIMITER ;\n\n":$Zf);}if($_POST["table_style"]||$_POST["data_style"]){$rj=array();foreach(table_status('',true)as$C=>$S){$R=(DB==""||in_array($C,(array)$_POST["tables"]));$Jb=(DB==""||in_array($C,(array)$_POST["data"]));if($R||$Jb){$Bi=null;if($Lc=="tar"){$Bi=new
|
||
TmpFile;ob_start(array($Bi,'write'),1e5);}adminer()->dumpTable($C,($R?$_POST["table_style"]:""),(is_view($S)?2:0));if(is_view($S))$rj[]=$C;elseif($Jb){$n=fields($C);adminer()->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($n,$n)." FROM ".table($C));}if($le&&$_POST["triggers"]&&$R&&($Pi=trigger_sql($C)))echo"\nDELIMITER ;;\n$Pi\nDELIMITER ;\n";if($Lc=="tar"){ob_end_flush();tar_file((DB!=""?"":"$j/")."$C.csv",$Bi);}elseif($le)echo"\n";}}if(function_exists('Adminer\foreign_keys_sql')){foreach(table_status('',true)as$C=>$S){$R=(DB==""||in_array($C,(array)$_POST["tables"]));if($R&&!is_view($S))echo
|
||
foreign_keys_sql($C);}}foreach($rj
|
||
as$qj)adminer()->dumpTable($qj,$_POST["table_style"],1);if($Lc=="tar")echo
|
||
pack("x512");}}}adminer()->dumpFooter();exit;}page_header('Export',$l,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
|
||
<form action="" method="post">
|
||
<table class="layout">
|
||
';$Nb=array('','USE','DROP+CREATE','CREATE');$ji=array('','DROP+CREATE','CREATE');$Kb=array('','TRUNCATE+INSERT','INSERT');if(JUSH=="sql")$Kb[]='INSERT+UPDATE';$K=get_settings("adminer_export");if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"<tr><th>".'Output'."<td>".html_radios("output",adminer()->dumpOutput(),$K["output"])."\n","<tr><th>".'Format'."<td>".html_radios("format",adminer()->dumpFormat(),$K["format"])."\n",(JUSH=="sqlite"?"":"<tr><th>".'Database'."<td>".html_select('db_style',$Nb,$K["db_style"]).(support("type")?checkbox("types",1,$K["types"],'User types'):"").(support("routine")?checkbox("routines",1,$K["routines"],'Routines'):"").(support("event")?checkbox("events",1,$K["events"],'Events'):"")),"<tr><th>".'Tables'."<td>".html_select('table_style',$ji,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],'Auto Increment').(support("trigger")?checkbox("triggers",1,$K["triggers"],'Triggers'):""),"<tr><th>".'Data'."<td>".html_select('data_style',$Kb,$K["data_style"]),'</table>
|
||
<p><input type="submit" value="Export">
|
||
',input_token(),'
|
||
<table>
|
||
',script("qsl('table').onclick = dumpClick;");$Ag=array();if(DB!=""){$Ya=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Ya>".'Tables'."</label>".script("qs('#check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th style='text-align: right;'><label class='block'>".'Data'."<input type='checkbox' id='check-data'$Ya></label>".script("qs('#check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$rj="";$li=tables_list();foreach($li
|
||
as$C=>$U){$_g=preg_replace('~_.*~','',$C);$Ya=($a==""||$a==(substr($a,-1)=="%"?"$_g%":$C));$Cg="<tr><td>".checkbox("tables[]",$C,$Ya,$C,"","block");if($U!==null&&!preg_match('~table~i',$U))$rj
|
||
.="$Cg\n";else
|
||
echo"$Cg<td align='right'><label class='block'><span id='Rows-".h($C)."'></span>".checkbox("data[]",$C,$Ya)."</label>\n";$Ag[$_g]++;}echo$rj;if($li)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{echo"<thead><tr><th style='text-align: left;'>","<label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"").">".'Database'."</label>",script("qs('#check-databases').onclick = partial(formCheck, /^databases\\[/);",""),"</thead>\n";$i=adminer()->databases();if($i){foreach($i
|
||
as$j){if(!information_schema($j)){$_g=preg_replace('~_.*~','',$j);echo"<tr><td>".checkbox("databases[]",$j,$a==""||$a=="$_g%",$j,"","block")."\n";$Ag[$_g]++;}}}else
|
||
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
|
||
</form>
|
||
';$Yc=true;foreach($Ag
|
||
as$x=>$X){if($x!=""&&$X>1){echo($Yc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$x%")."'>".h($x)."</a>";$Yc=false;}}}elseif(isset($_GET["privileges"])){page_header('Privileges');echo'<p class="links"><a href="'.h(ME).'user=">'.'Create user'."</a>";$I=connection()->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$rd=$I;if(!$I)$I=connection()->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo
|
||
input_hidden("db",DB),($rd?"":input_hidden("grant")),"<table class='odds'>\n","<thead><tr><th>".'Username'."<th>".'Server'."<th></thead>\n";while($K=$I->fetch_assoc())echo'<tr><td>'.h($K["User"])."<td>".h($K["Host"]).'<td><a href="'.h(ME.'user='.urlencode($K["User"]).'&host='.urlencode($K["Host"])).'">'.'Edit'."</a>\n";if(!$rd||DB!="")echo"<tr><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".'Edit'."'>\n";echo"</table>\n","</form>\n";}elseif(isset($_GET["sql"])){if(!$l&&$_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers("sql");adminer()->dumpTable("","");adminer()->dumpData("","table",$_POST["query"]);adminer()->dumpFooter();exit;}restart_session();$Hd=&get_session("queries");$Gd=&$Hd[DB];if(!$l&&$_POST["clear"]){$Gd=array();redirect(remove_from_uri("history"));}stop_session();page_header((isset($_GET["import"])?'Import':'SQL command'),$l);$Fe='--'.(JUSH=='sql'?' ':'');if(!$l&&$_POST){$q=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$Oh=adminer()->importServerPath();$q=@fopen((file_exists($Oh)?$Oh:"compress.zlib://$Oh.gz"),"rb");$H=($q?fread($q,1e6):false);}else$H=get_file("sql_file",true,";");if(is_string($H)){if(function_exists('memory_get_usage')&&($We=ini_bytes("memory_limit"))!="-1")@ini_set("memory_limit",max($We,strval(2*strlen($H)+memory_get_usage()+8e6)));if($H!=""&&strlen($H)<1e6){$Jg=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$Gd||first(end($Gd))!=$Jg){restart_session();$Gd[]=array($Jg,time());set_session("queries",$Hd);stop_session();}}$Lh="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$Fe)[^\n]*\n?|--\r?\n)";$Ub=";";$D=0;$uc=true;$g=connect();if($g&&DB!=""){$g->select_db(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$g);}$lb=0;$Bc=array();$gg='[\'"'.(JUSH=="sql"?'`#':(JUSH=="sqlite"?'`[':(JUSH=="mssql"?'[':''))).']|/\*|'.$Fe.'|$'.(JUSH=="pgsql"?'|\$[^$]*\$':'');$Fi=microtime(true);$ma=get_settings("adminer_import");$lc=adminer()->dumpFormat();unset($lc["sql"]);while($H!=""){if(!$D&&preg_match("~^$Lh*+DELIMITER\\s+(\\S+)~i",$H,$B)){$Ub=preg_quote($B[1]);$H=substr($H,strlen($B[0]));}elseif(!$D&&JUSH=='pgsql'&&preg_match("~^($Lh*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$H,$B)){$Ub="\n\\\\\\.\r?\n";$D=strlen($B[0]);}else{preg_match("($Ub\\s*|$gg)",$H,$B,PREG_OFFSET_CAPTURE,$D);list($kd,$vg)=$B[0];if(!$kd&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{if(!$kd&&rtrim($H)=="")break;$D=$vg+strlen($kd);if($kd&&!preg_match("(^$Ub)",$kd)){$Qa=driver()->hasCStyleEscapes()||(JUSH=="pgsql"&&($vg>0&&strtolower($H[$vg-1])=="e"));$og=($kd=='/*'?'\*/':($kd=='['?']':(preg_match("~^$Fe|^#~",$kd)?"\n":preg_quote($kd).($Qa?'|\\\\.':''))));while(preg_match("($og|\$)s",$H,$B,PREG_OFFSET_CAPTURE,$D)){$kh=$B[0][0];if(!$kh&&$q&&!feof($q))$H
|
||
.=fread($q,1e5);else{$D=$B[0][1]+strlen($kh);if(!$kh||$kh[0]!="\\")break;}}}else{$uc=false;$Jg=substr($H,0,$vg+($Ub[0]=="\n"?3:0));$lb++;$Cg="<pre id='sql-$lb'><code class='jush-".JUSH."'>".adminer()->sqlCommandQuery($Jg)."</code></pre>\n";if(JUSH=="sqlite"&&preg_match("~^$Lh*+ATTACH\\b~i",$Jg,$B)){echo$Cg,"<p class='error'>".'ATTACH queries are not supported.'."\n";$Bc[]=" <a href='#sql-$lb'>$lb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Cg;ob_flush();flush();}$Th=microtime(true);if(connection()->multi_query($Jg)&&$g&&preg_match("~^$Lh*+USE\\b~i",$Jg))$g->query($Jg);do{$I=connection()->store_result();if(connection()->error){echo($_POST["only_errors"]?$Cg:""),"<p class='error'>".'Error in query'.(connection()->errno?" (".connection()->errno.")":"").": ".error()."\n";$Bc[]=" <a href='#sql-$lb'>$lb</a>";if($_POST["error_stops"])break
|
||
2;}else{$vi=" <span class='time'>(".format_time($Th).")</span>".(strlen($Jg)<1000?" <a href='".h(ME)."sql=".urlencode(trim($Jg))."'>".'Edit'."</a>":"");$oa=connection()->affected_rows;$uj=($_POST["only_errors"]?"":driver()->warnings());$vj="warnings-$lb";if($uj)$vi
|
||
.=", <a href='#$vj'>".'Warnings'."</a>".script("qsl('a').onclick = partial(toggle, '$vj');","");$Jc=null;$Rf=null;$Kc="explain-$lb";if(is_object($I)){$z=$_POST["limit"];$Rf=print_select_result($I,$g,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$tf=$I->num_rows;echo"<p class='sql-footer'>".($tf?($z&&$tf>$z?sprintf('%d / ',$z):"").lang_format(array('%d row','%d rows'),$tf):""),$vi;if($g&&preg_match("~^($Lh|\\()*+SELECT\\b~i",$Jg)&&($Jc=explain($g,$Jg)))echo", <a href='#$Kc'>Explain</a>".script("qsl('a').onclick = partial(toggle, '$Kc');","");$t="export-$lb";echo", <a href='#$t'>".'Export'."</a>".script("qsl('a').onclick = partial(toggle, '$t');","")."<span id='$t' class='hidden'>: ".html_select("output",adminer()->dumpOutput(),$ma["output"])." ".html_select("format",$lc,$ma["format"]).input_hidden("query",$Jg)."<input type='submit' name='export' value='".'Export'."'>".input_token()."</span>\n"."</form>\n";}}else{if(preg_match("~^$Lh*+(CREATE|DROP|ALTER)$Lh++(DATABASE|SCHEMA)\\b~i",$Jg)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h(connection()->info)."'>".lang_format(array('Query executed OK, %d row affected.','Query executed OK, %d rows affected.'),$oa)."$vi\n";}echo($uj?"<div id='$vj' class='hidden'>\n$uj</div>\n":"");if($Jc){echo"<div id='$Kc' class='hidden explain'>\n";print_select_result($Jc,$g,$Rf);echo"</div>\n";}}$Th=microtime(true);}while(connection()->next_result());}$H=substr($H,$D);$D=0;}}}}if($uc)echo"<p class='message'>".'No commands to execute.'."\n";elseif($_POST["only_errors"])echo"<p class='message'>".lang_format(array('%d query executed OK.','%d queries executed OK.'),$lb-count($Bc))," <span class='time'>(".format_time($Fi).")</span>\n";elseif($Bc&&$lb>1)echo"<p class='error'>".'Error in query'.": ".implode("",$Bc)."\n";}else
|
||
echo"<p class='error'>".upload_error($H)."\n";}echo'
|
||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||
';$Hc="<input type='submit' value='".'Execute'."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$Jg=$_GET["sql"];if($_POST)$Jg=$_POST["query"];elseif($_GET["history"]=="all")$Jg=$Gd;elseif($_GET["history"]!="")$Jg=idx($Gd[$_GET["history"]],0);echo"<p>";textarea("query",$Jg,20);echo
|
||
script(($_POST?"":"qs('textarea').focus();\n")."qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"<p>";adminer()->sqlPrintAfter();echo"$Hc\n",'Limit rows'.": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".'File upload'."</legend><div>";$xd=(extension_loaded("zlib")?"[.gz]":"");echo(ini_bool("file_uploads")?"SQL$xd (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$Hc":'File uploads are disabled.'),"</div></fieldset>\n";$Rd=adminer()->importServerPath();if($Rd)echo"<fieldset><legend>".'From server'."</legend><div>",sprintf('Webserver file %s',"<code>".h($Rd)."$xd</code>"),' <input type="submit" name="webfile" value="'.'Run file'.'">',"</div></fieldset>\n";echo"<p>";}echo
|
||
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])||$_GET["error_stops"]),'Stop on error')."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),'Show only errors')."\n",input_token();if(!isset($_GET["import"])&&$Gd){print_fieldset("history",'History',$_GET["history"]!="");for($X=end($Gd);$X;$X=prev($Gd)){$x=key($Gd);list($Jg,$vi,$pc)=$X;echo'<a href="'.h(ME."sql=&history=$x").'">'.'Edit'."</a>"." <span class='time' title='".@date('Y-m-d',$vi)."'>".@date("H:i:s",$vi)."</span>"." <code class='jush-".JUSH."'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace("~^(#|$Fe).*~m",'',$Jg)))),80,"</code>").($pc?" <span class='time'>($pc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".'Clear'."'>\n","<a href='".h(ME."sql=&history=all")."'>".'Edit all'."</a>\n","</div></fieldset>\n";}echo'</form>
|
||
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$n=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$n):""):where($_GET,$n));$bj=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
|
||
as$C=>$m){if(!isset($m["privileges"][$bj?"update":"insert"])||adminer()->fieldName($m)==""||$m["generated"])unset($n[$C]);}if($_POST&&!$l&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($bj?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$w=indexes($a);$Wi=unique_array($_GET["where"],$w);$Mg="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,'Item has been deleted.',driver()->delete($a,$Mg,$Wi?0:1));else{$O=array();foreach($n
|
||
as$C=>$m){$X=process_input($m);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($bj){if(!$O)redirect($A);queries_redirect($A,'Item has been updated.',driver()->update($a,$O,$Mg,$Wi?0:1));if(is_ajax()){page_headers();page_messages($l);exit;}}else{$I=driver()->insert($a,$O);$ze=($I?last_id($I):0);queries_redirect($A,sprintf('Item%s has been inserted.',($ze?" $ze":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($n
|
||
as$C=>$m){if(isset($m["privileges"]["select"])){$wa=($_POST["clone"]&&$m["auto_increment"]?"''":convert_field($m));$M[]=($wa?"$wa AS ":"").idf_escape($C);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=driver()->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));if(!$I)$l=error();else{$K=$I->fetch_assoc();if(!$K)$K=false;}if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$n){if(!$Z){$I=driver()->select($a,array("*"),array(),array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array(driver()->primary=>"");}if($K){foreach($K
|
||
as$x=>$X){if(!$Z)$K[$x]=null;$n[$x]=array("field"=>$x,"null"=>($x!=driver()->primary),"auto_increment"=>($x==driver()->primary));}}}edit_form($a,$n,$K,$bj,$l);}elseif(isset($_GET["create"])){$a=$_GET["create"];$ig=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$x)$ig[$x]=$x;$Sg=referencable_primary($a);$id=array();foreach($Sg
|
||
as$fi=>$m)$id[str_replace("`","``",$fi)."`".str_replace("`","``",$m["field"])]=$fi;$Uf=array();$S=array();if($a!=""){$Uf=fields($a);$S=table_status1($a);if(count($S)<2)$l='No tables.';}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST)save_settings(array("comments"=>$_POST["comments"],"defaults"=>$_POST["defaults"]));if($_POST&&!process_fields($K["fields"])&&!$l){if($_POST["drop"])queries_redirect(substr(ME,0,-1),'Table has been dropped.',drop_tables(array($a)));else{$n=array();$sa=array();$fj=false;$gd=array();$Tf=reset($Uf);$qa=" FIRST";foreach($K["fields"]as$x=>$m){$p=$id[$m["type"]];$Qi=($p!==null?$Sg[$p]:$m);if($m["field"]!=""){if(!$m["generated"])$m["default"]=null;$Hg=process_field($m,$Qi);$sa[]=array($m["orig"],$Hg,$qa);if(!$Tf||$Hg!==process_field($Tf,$Tf)){$n[]=array($m["orig"],$Hg,$qa);if($m["orig"]!=""||$qa)$fj=true;}if($p!==null)$gd[idf_escape($m["field"])]=($a!=""&&JUSH!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$id[$m["type"]],'source'=>array($m["field"]),'target'=>array($Qi["field"]),'on_delete'=>$m["on_delete"],));$qa=" AFTER ".idf_escape($m["field"]);}elseif($m["orig"]!=""){$fj=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$Tf=next($Uf);if(!$Tf)$qa="";}}$kg="";if(support("partitioning")){if(isset($ig[$K["partition_by"]])){$fg=array();foreach($K
|
||
as$x=>$X){if(preg_match('~^partition~',$x))$fg[$x]=$X;}foreach($fg["partition_names"]as$x=>$C){if($C==""){unset($fg["partition_names"][$x]);unset($fg["partition_values"][$x]);}}if($fg!=get_partitions_info($a)){$lg=array();if($fg["partition_by"]=='RANGE'||$fg["partition_by"]=='LIST'){foreach($fg["partition_names"]as$x=>$C){$Y=$fg["partition_values"][$x];$lg[]="\n PARTITION ".idf_escape($C)." VALUES ".($fg["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$kg
|
||
.="\nPARTITION BY $fg[partition_by]($fg[partition])";if($lg)$kg
|
||
.=" (".implode(",",$lg)."\n)";elseif($fg["partitions"])$kg
|
||
.=" PARTITIONS ".(+$fg["partitions"]);}}elseif(preg_match("~partitioned~",$S["Create_options"]))$kg
|
||
.="\nREMOVE PARTITIONING";}$Xe='Table has been altered.';if($a==""){cookie("adminer_engine",$K["Engine"]);$Xe='Table has been created.';}$C=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$Xe,alter_table($a,$C,(JUSH=="sqlite"&&($fj||$gd)?$sa:$n),$gd,($K["Comment"]!=$S["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$S["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$S["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$kg));}}page_header(($a!=""?'Alter table':'Create table'),$l,array("table"=>$a),h($a));if(!$_POST){$Si=driver()->types();$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Si["int"])?"int":(isset($Si["integer"])?"integer":"")),"on_update"=>"")),"partition_names"=>array(""),);if($a!=""){$K=$S;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($Uf
|
||
as$m){$m["generated"]=$m["generated"]?:(isset($m["default"])?"DEFAULT":"");$K["fields"][]=$m;}if(support("partitioning")){$K+=get_partitions_info($a);$K["partition_names"][]="";$K["partition_values"][]="";}}}$hb=collations();if(is_array(reset($hb)))$hb=call_user_func_array('array_merge',array_values($hb));$wc=driver()->engines();foreach($wc
|
||
as$vc){if(!strcasecmp($vc,$K["Engine"])){$K["Engine"]=$vc;break;}}echo'
|
||
<form action="" method="post" id="form">
|
||
<p>
|
||
';if(support("columns")||$a==""){echo'Table name'.": <input name='name'".($a==""&&!$_POST?" autofocus":"")." data-maxlength='64' value='".h($K["name"])."' autocapitalize='off'>\n",($wc?html_select("Engine",array(""=>"(".'engine'.")")+$wc,$K["Engine"]).on_help("event.target.value",1).script("qsl('select').onchange = helpClose;")."\n":"");if($hb)echo"<datalist id='collations'>".optionlist($hb)."</datalist>\n",(preg_match("~sqlite|mssql~",JUSH)?"":"<input list='collations' name='Collation' value='".h($K["Collation"])."' placeholder='(".'collation'.")'>\n");echo"<input type='submit' value='".'Save'."'>\n";}if(support("columns")){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($K["fields"],$hb,"TABLE",$id);echo"</table>\n",script("editFields();"),"</div>\n<p>\n",'Auto Increment'.": <input type='number' name='Auto_increment' class='size' value='".h($K["Auto_increment"])."'>\n",checkbox("defaults",1,($_POST?$_POST["defaults"]:get_setting("defaults")),'Default values',"columnShow(this.checked, 5)","jsonly");$ob=($_POST?$_POST["comments"]:get_setting("comments"));echo(support("comment")?checkbox("comments",1,$ob,'Comment',"editingCommentsClick(this, true);","jsonly").' '.(preg_match('~\n~',$K["Comment"])?"<textarea name='Comment' rows='2' cols='20'".($ob?"":" class='hidden'").">".h($K["Comment"])."</textarea>":'<input name="Comment" value="'.h($K["Comment"]).'" data-maxlength="'.(min_version(5.5)?2048:60).'"'.($ob?"":" class='hidden'").'>'):''),'<p>
|
||
<input type="submit" value="Save">
|
||
';}echo'
|
||
';if($a!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$a));if(support("partitioning")){$jg=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",'Partition by',$K["partition_by"]);echo"<p>".html_select("partition_by",array(""=>"")+$ig,$K["partition_by"]).on_help("event.target.value.replace(/./, 'PARTITION BY \$&')",1).script("qsl('select').onchange = partitionByChange;"),"(<input name='partition' value='".h($K["partition"])."'>)\n",'Partitions'.": <input type='number' name='partitions' class='size".($jg||!$K["partition_by"]?" hidden":"")."' value='".h($K["partitions"])."'>\n","<table id='partition-table'".($jg?"":" class='hidden'").">\n","<thead><tr><th>".'Partition name'."<th>".'Values'."</thead>\n";foreach($K["partition_names"]as$x=>$X)echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'" autocapitalize="off">',($x==count($K["partition_names"])-1?script("qsl('input').oninput = partitionNameChange;"):''),'<td><input name="partition_values[]" value="'.h(idx($K["partition_values"],$x)).'">';echo"</table>\n</div></fieldset>\n";}echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$Wd=array("PRIMARY","UNIQUE","INDEX");$S=table_status1($a,true);if(preg_match('~MyISAM|M?aria'.(min_version(5.6,'10.0.5')?'|InnoDB':'').'~i',$S["Engine"]))$Wd[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.(min_version(5.7,'10.2.2')?'|InnoDB':'').'~i',$S["Engine"]))$Wd[]="SPATIAL";$w=indexes($a);$G=array();if(JUSH=="mongo"){$G=$w["_id_"];unset($Wd[0]);unset($w["_id_"]);}$K=$_POST;if($K)save_settings(array("index_options"=>$K["options"]));if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$b=array();foreach($K["indexes"]as$v){$C=$v["name"];if(in_array($v["type"],$Wd)){$e=array();$De=array();$Xb=array();$O=array();ksort($v["columns"]);foreach($v["columns"]as$x=>$d){if($d!=""){$y=idx($v["lengths"],$x);$Vb=idx($v["descs"],$x);$O[]=idf_escape($d).($y?"(".(+$y).")":"").($Vb?" DESC":"");$e[]=$d;$De[]=($y?:null);$Xb[]=$Vb;}}$Ic=$w[$C];if($Ic){ksort($Ic["columns"]);ksort($Ic["lengths"]);ksort($Ic["descs"]);if($v["type"]==$Ic["type"]&&array_values($Ic["columns"])===$e&&(!$Ic["lengths"]||array_values($Ic["lengths"])===$De)&&array_values($Ic["descs"])===$Xb){unset($w[$C]);continue;}}if($e)$b[]=array($v["type"],$C,$O);}}foreach($w
|
||
as$C=>$Ic)$b[]=array($Ic["type"],$C,"DROP");if(!$b)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),'Indexes have been altered.',alter_indexes($a,$b));}page_header('Indexes',$l,array("table"=>$a),h($a));$n=array_keys(fields($a));if($_POST["add"]){foreach($K["indexes"]as$x=>$v){if($v["columns"][count($v["columns"])]!="")$K["indexes"][$x]["columns"][]="";}$v=end($K["indexes"]);if($v["type"]||array_filter($v["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($w
|
||
as$x=>$v){$w[$x]["name"]=$x;$w[$x]["columns"][]="";}$w[]=array("columns"=>array(1=>""));$K["indexes"]=$w;}$De=(JUSH=="sql"||JUSH=="mssql");$Fh=($_POST?$_POST["options"]:get_setting("index_options"));echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
<thead><tr>
|
||
<th id="label-type">Index Type
|
||
<th><input type="submit" class="wayoff">','Columns'.($De?"<span class='idxopts".($Fh?"":" hidden")."'> (".'length'.")</span>":"");if($De||support("descidx"))echo
|
||
checkbox("options",1,$Fh,'Options',"indexOptionsShow(this.checked)","jsonly")."\n";echo'<th id="label-name">Name
|
||
<th><noscript>',icon("plus","add[0]","+",'Add next'),'</noscript>
|
||
</thead>
|
||
';if($G){echo"<tr><td>PRIMARY<td>";foreach($G["columns"]as$x=>$d)echo
|
||
select_input(" disabled",$n,$d),"<label><input disabled type='checkbox'>".'descending'."</label> ";echo"<td><td>\n";}$oe=1;foreach($K["indexes"]as$v){if(!$_POST["drop_col"]||$oe!=key($_POST["drop_col"])){echo"<tr><td>".html_select("indexes[$oe][type]",array(-1=>"")+$Wd,$v["type"],($oe==count($K["indexes"])?"indexesAddRow.call(this);":""),"label-type"),"<td>";ksort($v["columns"]);$s=1;foreach($v["columns"]as$x=>$d){echo"<span>".select_input(" name='indexes[$oe][columns][$s]' title='".'Column'."'",($n?array_combine($n,$n):$n),$d,"partial(".($s==count($v["columns"])?"indexesAddColumn":"indexesChangeColumn").", '".js_escape(JUSH=="sql"?"":$_GET["indexes"]."_")."')"),"<span class='idxopts".($Fh?"":" hidden")."'>",($De?"<input type='number' name='indexes[$oe][lengths][$s]' class='size' value='".h(idx($v["lengths"],$x))."' title='".'Length'."'>":""),(support("descidx")?checkbox("indexes[$oe][descs][$s]",1,idx($v["descs"],$x),'descending'):""),"</span> </span>";$s++;}echo"<td><input name='indexes[$oe][name]' value='".h($v["name"])."' autocapitalize='off' aria-labelledby='label-name'>\n","<td>".icon("cross","drop_col[$oe]","x",'Remove').script("qsl('button').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");}$oe++;}echo'</table>
|
||
</div>
|
||
<p>
|
||
<input type="submit" value="Save">
|
||
',input_token(),'</form>
|
||
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$l&&!$_POST["add"]){$C=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),'Database has been dropped.',drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),'Database has been renamed.',rename_database($C,$K["collation"]));}else{$i=explode("\n",str_replace("\r","",$C));$Yh=true;$ye="";foreach($i
|
||
as$j){if(count($i)==1||$j!=""){if(!create_database($j,$K["collation"]))$Yh=false;$ye=$j;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($ye),'Database has been created.',$Yh);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),'Database has been altered.');}}page_header(DB!=""?'Alter database':'Create database',$l,array(),h(DB));$hb=collations();$C=DB;if($_POST)$C=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$hb);elseif(JUSH=="sql"){foreach(get_vals("SHOW GRANTS")as$rd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$rd,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
',($_POST["add"]||strpos($C,"\n")?'<textarea autofocus name="name" rows="10" cols="40">'.h($C).'</textarea><br>':'<input name="name" autofocus value="'.h($C).'" data-maxlength="64" autocapitalize="off">')."\n".($hb?html_select("collation",array(""=>"(".'collation'.")")+$hb,$K["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mariadb'=>"supported-character-sets-and-collations/",'mssql'=>"relational-databases/system-functions/sys-fn-helpcollations-transact-sql",)):""),'<input type="submit" value="Save">
|
||
';if(DB!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',DB))."\n";elseif(!$_POST["add"]&&$_GET["db"]=="")echo
|
||
icon("plus","add[0]","+",'Add next')."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,'Schema has been dropped.');else{$C=trim($K["name"]);$_
|
||
.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,'Schema has been created.');elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,'Schema has been altered.');else
|
||
redirect($_);}}page_header($_GET["ns"]!=""?'Alter schema':'Create schema',$l);if(!$K)$K["name"]=$_GET["ns"];echo'
|
||
<form action="" method="post">
|
||
<p><input name="name" autofocus value="',h($K["name"]),'" autocapitalize="off">
|
||
<input type="submit" value="Save">
|
||
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$_GET["ns"]))."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["call"])){$ba=($_GET["name"]?:$_GET["call"]);page_header('Call'.": ".h($ba),$l);$gh=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$Sd=array();$Zf=array();foreach($gh["fields"]as$s=>$m){if(substr($m["inout"],-3)=="OUT")$Zf[$s]="@".idf_escape($m["field"])." AS ".idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$Sd[]=$s;}if(!$l&&$_POST){$Ra=array();foreach($gh["fields"]as$x=>$m){$X="";if(in_array($x,$Sd)){$X=process_input($m);if($X===false)$X="''";if(isset($Zf[$x]))connection()->query("SET @".idf_escape($m["field"])." = $X");}$Ra[]=(isset($Zf[$x])?"@".idf_escape($m["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".table($ba)."(".implode(", ",$Ra).")";$Th=microtime(true);$I=connection()->multi_query($H);$oa=connection()->affected_rows;echo
|
||
adminer()->selectQuery($H,$Th,!$I);if(!$I)echo"<p class='error'>".error()."\n";else{$g=connect();if($g)$g->select_db(DB);do{$I=connection()->store_result();if(is_object($I))print_select_result($I,$g);else
|
||
echo"<p class='message'>".lang_format(array('Routine has been called, %d row affected.','Routine has been called, %d rows affected.'),$oa)." <span class='time'>".@date("H:i:s")."</span>\n";}while(connection()->next_result());if($Zf)print_select_result(connection()->query("SELECT ".implode(", ",$Zf)));}}echo'
|
||
<form action="" method="post">
|
||
';if($Sd){echo"<table class='layout'>\n";foreach($Sd
|
||
as$x){$m=$gh["fields"][$x];$C=$m["field"];echo"<tr><th>".adminer()->fieldName($m);$Y=idx($_POST["fields"],$C);if($Y!=""){if($m["type"]=="set")$Y=implode(",",$Y);}input($m,$Y,idx($_POST["function"],$C,""));echo"\n";}echo"</table>\n";}echo'<p>
|
||
<input type="submit" value="Call">
|
||
',input_token(),'</form>
|
||
|
||
<pre>
|
||
';function
|
||
pre_tr($kh){return
|
||
preg_replace('~^~m','<tr>',preg_replace('~\|~','<td>',preg_replace('~\|$~m',"",rtrim($kh))));}$R='(\+--[-+]+\+\n)';$K='(\| .* \|\n)';echo
|
||
preg_replace_callback("~^$R?$K$R?($K*)$R?~m",function($B){$Zc=pre_tr($B[2]);return"<table>\n".($B[1]?"<thead>$Zc</thead>\n":$Zc).pre_tr($B[4])."\n</table>";},preg_replace('~(\n( -|mysql)> )(.+)~',"\\1<code class='jush-sql'>\\3</code>",preg_replace('~(.+)\n---+\n~',"<b>\\1</b>\n",h($gh['comment']))));echo'</pre>
|
||
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$K=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$oi=array();foreach($K["source"]as$x=>$X)$oi[$x]=$K["target"][$x];$K["target"]=$oi;}if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(" $C"=>($K["drop"]?"":" ".format_foreign_key($K))));else{$b="ALTER TABLE ".table($a);$I=($C==""||queries("$b DROP ".(JUSH=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C)));if(!$K["drop"])$I=queries("$b ADD".format_foreign_key($K));}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Foreign key has been dropped.':($C!=""?'Foreign key has been altered.':'Foreign key has been created.')),$I);if(!$K["drop"])$l='Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.';}page_header('Foreign key',$l,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($C!=""){$id=foreign_keys($a);$K=$id[$C];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}echo'
|
||
<form action="" method="post">
|
||
';$Kh=array_keys(fields($a));if($K["db"]!="")connection()->select_db($K["db"]);if($K["ns"]!=""){$Vf=get_schema();set_schema($K["ns"]);}$Rg=array_keys(array_filter(table_status('',true),'Adminer\fk_support'));$oi=array_keys(fields(in_array($K["table"],$Rg)?$K["table"]:reset($Rg)));$Ff="this.form['change-js'].value = '1'; this.form.submit();";echo"<p><label>".'Target table'.": ".html_select("table",$Rg,$K["table"],$Ff)."</label>\n";if(support("scheme")){$nh=array_filter(adminer()->schemas(),function($mh){return!preg_match('~^information_schema$~i',$mh);});echo"<label>".'Schema'.": ".html_select("ns",$nh,$K["ns"]!=""?$K["ns"]:$_GET["ns"],$Ff)."</label>";if($K["ns"]!="")set_schema($Vf);}elseif(JUSH!="sqlite"){$Ob=array();foreach(adminer()->databases()as$j){if(!information_schema($j))$Ob[]=$j;}echo"<label>".'DB'.": ".html_select("db",$Ob,$K["db"]!=""?$K["db"]:$_GET["db"],$Ff)."</label>";}echo
|
||
input_hidden("change-js"),'<noscript><p><input type="submit" name="change" value="Change"></noscript>
|
||
<table>
|
||
<thead><tr><th id="label-source">Source<th id="label-target">Target</thead>
|
||
';$oe=0;foreach($K["source"]as$x=>$X){echo"<tr>","<td>".html_select("source[".(+$x)."]",array(-1=>"")+$Kh,$X,($oe==count($K["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$x)."]",$oi,idx($K["target"],$x),"","label-target");$oe++;}echo'</table>
|
||
<p>
|
||
<label>ON DELETE: ',html_select("on_delete",array(-1=>"")+explode("|",driver()->onActions),$K["on_delete"]),'</label>
|
||
<label>ON UPDATE: ',html_select("on_update",array(-1=>"")+explode("|",driver()->onActions),$K["on_update"]),'</label>
|
||
',doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'mariadb'=>"foreign-keys/",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"t-sql/statements/create-table-transact-sql",'oracle'=>"SQLRF01111",)),'<p>
|
||
<input type="submit" value="Save">
|
||
<noscript><p><input type="submit" name="add" value="Add column"></noscript>
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;$Wf="VIEW";if(JUSH=="pgsql"&&$a!=""){$P=table_status1($a);$Wf=strtoupper($P["Engine"]);}if($_POST&&!$l){$C=trim($K["name"]);$wa=" AS\n$K[select]";$A=ME."table=".urlencode($C);$Xe='View has been altered.';$U=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$C&&JUSH!="sqlite"&&$U=="VIEW"&&$Wf=="VIEW")query_redirect((JUSH=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$wa,$A,$Xe);else{$qi=$C."_adminer_".uniqid();drop_create("DROP $Wf ".table($a),"CREATE $U ".table($C).$wa,"DROP $U ".table($C),"CREATE $U ".table($qi).$wa,"DROP $U ".table($qi),($_POST["drop"]?substr(ME,0,-1):$A),'View has been dropped.',$Xe,'View has been created.',$a,$C);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;$K["materialized"]=($Wf!="VIEW");if(!$l)$l=error();}page_header(($a!=""?'Alter view':'Create view'),$l,array("table"=>$a),h($a));echo'
|
||
<form action="" method="post">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',(support("materializedview")?" ".checkbox("materialized",1,$K["materialized"],'Materialized view'):""),'<p>';textarea("select",$K["select"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($a!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$a));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$ge=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Uh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$l){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),'Event has been dropped.');elseif(in_array($K["INTERVAL_FIELD"],$ge)&&isset($Uh[$K["STATUS"]])){$lh="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".q($K["ENDS"]):""):"AT ".q($K["STARTS"]))." ON COMPLETION".($K["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?'Event has been altered.':'Event has been created.'),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$lh.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$lh)."\n".$Uh[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?'Alter event'.": ".h($aa):'Create event'),$l);if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
|
||
<form action="" method="post">
|
||
<table class="layout">
|
||
<tr><th>Name<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" data-maxlength="64" autocapitalize="off">
|
||
<tr><th title="datetime">Start<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
|
||
<tr><th title="datetime">End<td><input name="ENDS" value="',h($K["ENDS"]),'">
|
||
<tr><th>Every<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',html_select("INTERVAL_FIELD",$ge,$K["INTERVAL_FIELD"]),'<tr><th>Status<td>',html_select("STATUS",$Uh,$K["STATUS"]),'<tr><th>Comment<td><input name="EVENT_COMMENT" value="',h($K["EVENT_COMMENT"]),'" data-maxlength="64">
|
||
<tr><th><td>',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",'On completion preserve'),'</table>
|
||
<p>';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($aa!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$aa));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["procedure"])){$ba=($_GET["name"]?:$_GET["procedure"]);$gh=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$l){$Sf=routine($_GET["procedure"],$gh);$qi="$K[name]_adminer_".uniqid();foreach($K["fields"]as$x=>$m){if($m["field"]=="")unset($K["fields"][$x]);}drop_create("DROP $gh ".routine_id($ba,$Sf),create_routine($gh,$K),"DROP $gh ".routine_id($K["name"],$K),create_routine($gh,array("name"=>$qi)+$K),"DROP $gh ".routine_id($qi,$K),substr(ME,0,-1),'Routine has been dropped.','Routine has been altered.','Routine has been created.',$ba,$K["name"]);}page_header(($ba!=""?(isset($_GET["function"])?'Alter function':'Alter procedure').": ".h($ba):(isset($_GET["function"])?'Create function':'Create procedure')),$l);if(!$_POST){if($ba=="")$K["language"]="sql";else{$K=routine($_GET["procedure"],$gh);$K["name"]=$ba;}}$hb=get_vals("SHOW CHARACTER SET");sort($hb);$hh=routine_languages();echo($hb?"<datalist id='collations'>".optionlist($hb)."</datalist>":""),'
|
||
<form action="" method="post" id="form">
|
||
<p>Name: <input name="name" value="',h($K["name"]),'" data-maxlength="64" autocapitalize="off">
|
||
',($hh?"<label>".'Language'.": ".html_select("language",$hh,$K["language"])."</label>\n":""),'<input type="submit" value="Save">
|
||
<div class="scrollable">
|
||
<table class="nowrap">
|
||
';edit_fields($K["fields"],$hb,$gh);if(isset($_GET["function"])){echo"<tr><td>".'Return type';edit_type("returns",$K["returns"],$hb,array(),(JUSH=="pgsql"?array("void","trigger"):array()));}echo'</table>
|
||
',script("editFields();"),'</div>
|
||
<p>';textarea("definition",$K["definition"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($ba!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$ba));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["sequence"])){$da=$_GET["sequence"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);$C=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($da),$_,'Sequence has been dropped.');elseif($da=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,'Sequence has been created.');elseif($da!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($da)." RENAME TO ".idf_escape($C),$_,'Sequence has been altered.');else
|
||
redirect($_);}page_header($da!=""?'Alter sequence'.": ".h($da):'Create sequence',$l);if(!$K)$K["name"]=$da;echo'
|
||
<form action="" method="post">
|
||
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
|
||
<input type="submit" value="Save">
|
||
';if($da!="")echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$da))."\n";echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["type"])){$ea=$_GET["type"];$K=$_POST;if($_POST&&!$l){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ea),$_,'Type has been dropped.');else
|
||
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,'Type has been created.');}page_header($ea!=""?'Alter type'.": ".h($ea):'Create type',$l);if(!$K)$K["as"]="AS ";echo'
|
||
<form action="" method="post">
|
||
<p>
|
||
';if($ea!=""){$Si=driver()->types();$_c=type_values($Si[$ea]);if($_c)echo"<code class='jush-".JUSH."'>ENUM (".h($_c).")</code>\n<p>";echo"<input type='submit' name='drop' value='".'Drop'."'>".confirm(sprintf('Drop %s?',$ea))."\n";}else{echo'Name'.": <input name='name' value='".h($K['name'])."' autocapitalize='off'>\n",doc_link(array('pgsql'=>"datatype-enum.html",),"?");textarea("as",$K["as"]);echo"<p><input type='submit' value='".'Save'."'>\n";}echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["check"])){$a=$_GET["check"];$C=$_GET["name"];$K=$_POST;if($K&&!$l){if(JUSH=="sqlite")$I=recreate_table($a,$a,array(),array(),array(),"",array(),"$C",($K["drop"]?"":$K["clause"]));else{$I=($C==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($C)));if(!$K["drop"])$I=queries("ALTER TABLE ".table($a)." ADD".($K["name"]!=""?" CONSTRAINT ".idf_escape($K["name"]):"")." CHECK ($K[clause])");}queries_redirect(ME."table=".urlencode($a),($K["drop"]?'Check has been dropped.':($C!=""?'Check has been altered.':'Check has been created.')),$I);}page_header(($C!=""?'Alter check'.": ".h($C):'Create check'),$l,array("table"=>$a));if(!$K){$Za=driver()->checkConstraints($a);$K=array("name"=>$C,"clause"=>$Za[$C]);}echo'
|
||
<form action="" method="post">
|
||
<p>';if(JUSH!="sqlite")echo'Name'.': <input name="name" value="'.h($K["name"]).'" data-maxlength="64" autocapitalize="off"> ';echo
|
||
doc_link(array('sql'=>"create-table-check-constraints.html",'mariadb'=>"constraint/",'pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",'mssql'=>"relational-databases/tables/create-check-constraints",'sqlite'=>"lang_createtable.html#check_constraints",),"?"),'<p>';textarea("clause",$K["clause"]);echo'<p><input type="submit" value="Save">
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C="$_GET[name]";$Oi=trigger_options();$K=(array)trigger($C,$a)+array("Trigger"=>$a."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$Oi["Timing"])&&in_array($_POST["Event"],$Oi["Event"])&&in_array($_POST["Type"],$Oi["Type"])){$Cf=" ON ".table($a);$fc="DROP TRIGGER ".idf_escape($C).(JUSH=="pgsql"?$Cf:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($fc,$A,'Trigger has been dropped.');else{if($C!="")queries($fc);queries_redirect($A,($C!=""?'Trigger has been altered.':'Trigger has been created.'),queries(create_trigger($Cf,$_POST)));if($C!="")queries(create_trigger($Cf,$K+array("Type"=>reset($Oi["Type"]))));}}$K=$_POST;}page_header(($C!=""?'Alter trigger'.": ".h($C):'Create trigger'),$l,array("table"=>$a));echo'
|
||
<form action="" method="post" id="form">
|
||
<table class="layout">
|
||
<tr><th>Time<td>',html_select("Timing",$Oi["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>Event<td>',html_select("Event",$Oi["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$Oi["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>Type<td>',html_select("Type",$Oi["Type"],$K["Type"]),'</table>
|
||
<p>Name: <input name="Trigger" value="',h($K["Trigger"]),'" data-maxlength="64" autocapitalize="off">
|
||
',script("qs('#form')['Timing'].onchange();"),'<p>';textarea("Statement",$K["Statement"]);echo'<p>
|
||
<input type="submit" value="Save">
|
||
';if($C!="")echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',$C));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["user"])){$fa=$_GET["user"];$Fg=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$yb)$Fg[$yb][$K["Privilege"]]=$K["Comment"];}$Fg["Server Admin"]+=$Fg["File access on server"];$Fg["Databases"]["Create routine"]=$Fg["Procedures"]["Create routine"];unset($Fg["Procedures"]["Create routine"]);$Fg["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Fg["Columns"][$X]=$Fg["Tables"][$X];unset($Fg["Server Admin"]["Usage"]);foreach($Fg["Tables"]as$x=>$X)unset($Fg["Databases"][$x]);$mf=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$mf[$X]=(array)$mf[$X]+idx($_POST["grants"],$x,array());}$sd=array();$Af="";if(isset($_GET["host"])&&($I=connection()->query("SHOW GRANTS FOR ".q($fa)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\([^)]+\))?~',$B[1],$Ne,PREG_SET_ORDER)){foreach($Ne
|
||
as$X){if($X[1]!="USAGE")$sd["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$sd["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$B))$Af=$B[1];}}if($_POST&&!$l){$Bf=(isset($_GET["host"])?q($fa)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Bf",ME."privileges=",'User has been dropped.');else{$of=q($_POST["user"])."@".q($_POST["host"]);$mg=$_POST["pass"];if($mg!=''&&!$_POST["hashed"]&&!min_version(8)){$mg=get_val("SELECT PASSWORD(".q($mg).")");$l=!$mg;}$Cb=false;if(!$l){if($Bf!=$of){$Cb=queries((min_version(5)?"CREATE USER":"GRANT USAGE ON *.* TO")." $of IDENTIFIED BY ".(min_version(8)?"":"PASSWORD ").q($mg));$l=!$Cb;}elseif($mg!=$Af)queries("SET PASSWORD FOR $of = ".q($mg));}if(!$l){$dh=array();foreach($mf
|
||
as$vf=>$rd){if(isset($_GET["grant"]))$rd=array_filter($rd);$rd=array_keys($rd);if(isset($_GET["grant"]))$dh=array_diff(array_keys(array_filter($mf[$vf],'strlen')),$rd);elseif($Bf==$of){$zf=array_keys((array)$sd[$vf]);$dh=array_diff($zf,$rd);$rd=array_diff($rd,$zf);unset($sd[$vf]);}if(preg_match('~^(.+)\s*(\(.*\))?$~U',$vf,$B)&&(!grant("REVOKE",$dh,$B[2]," ON $B[1] FROM $of")||!grant("GRANT",$rd,$B[2]," ON $B[1] TO $of"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($Bf!=$of)queries("DROP USER $Bf");elseif(!isset($_GET["grant"])){foreach($sd
|
||
as$vf=>$dh){if(preg_match('~^(.+)(\(.*\))?$~U',$vf,$B))grant("REVOKE",array_keys($dh),$B[2]," ON $B[1] FROM $of");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?'User has been altered.':'User has been created.'),!$l);if($Cb)connection()->query("DROP USER $of");}}page_header((isset($_GET["host"])?'Username'.": ".h("$fa@$_GET[host]"):'Create user'),$l,array("privileges"=>array('','Privileges')));$K=$_POST;if($K)$sd=$mf;else{$K=$_GET+array("host"=>get_val("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$Af;if($Af!="")$K["hashed"]=true;$sd[(DB==""||$sd?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
|
||
<table class="layout">
|
||
<tr><th>Server<td><input name="host" data-maxlength="60" value="',h($K["host"]),'" autocapitalize="off">
|
||
<tr><th>Username<td><input name="user" data-maxlength="80" value="',h($K["user"]),'" autocapitalize="off">
|
||
<tr><th>Password<td><input name="pass" id="pass" value="',h($K["pass"]),'" autocomplete="new-password">
|
||
',($K["hashed"]?"":script("typePassword(qs('#pass'));")),(min_version(8)?"":checkbox("hashed",1,$K["hashed"],'Hashed',"typePassword(this.form['pass'], this.checked);")),'</table>
|
||
|
||
',"<table class='odds'>\n","<thead><tr><th colspan='2'>".'Privileges'.doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($sd
|
||
as$vf=>$rd){echo'<th>'.($vf!="*.*"?"<input name='objects[$s]' value='".h($vf)."' size='10' autocapitalize='off'>":input_hidden("objects[$s]","*.*")."*.*");$s++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>'Server',"Databases"=>'Database',"Tables"=>'Table',"Columns"=>'Column',"Procedures"=>'Routine',)as$yb=>$Vb){foreach((array)$Fg[$yb]as$Eg=>$mb){echo"<tr><td".($Vb?">$Vb<td":" colspan='2'").' lang="en" title="'.h($mb).'">'.h($Eg);$s=0;foreach($sd
|
||
as$vf=>$rd){$C="'grants[$s][".h(strtoupper($Eg))."]'";$Y=$rd[strtoupper($Eg)];if($yb=="Server Admin"&&$vf!=(isset($sd["*.*"])?"*.*":".*"))echo"<td>";elseif(isset($_GET["grant"]))echo"<td><select name=$C><option><option value='1'".($Y?" selected":"").">".'Grant'."<option value='0'".($Y=="0"?" selected":"").">".'Revoke'."</select>";else
|
||
echo"<td align='center'><label class='block'>","<input type='checkbox' name=$C value='1'".($Y?" checked":"").($Eg=="All privileges"?" id='grants-$s-all'>":">".($Eg=="Grant option"?"":script("qsl('input').onclick = function () { if (this.checked) formUncheck('grants-$s-all'); };"))),"</label>";$s++;}}}echo"</table>\n",'<p>
|
||
<input type="submit" value="Save">
|
||
';if(isset($_GET["host"]))echo'<input type="submit" name="drop" value="Drop">',confirm(sprintf('Drop %s?',"$fa@$_GET[host]"));echo
|
||
input_token(),'</form>
|
||
';}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST&&!$l){$ue=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$ue++;}queries_redirect(ME."processlist=",lang_format(array('%d process has been killed.','%d processes have been killed.'),$ue),$ue||!$_POST["kill"]);}}page_header('Process list',$l);echo'
|
||
<form action="" method="post">
|
||
<div class="scrollable">
|
||
<table class="nowrap checkable odds">
|
||
',script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");$s=-1;foreach(process_list()as$s=>$K){if(!$s){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($K
|
||
as$x=>$X)echo"<th>$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"REFRN30223",));echo"</thead>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$K[JUSH=="sql"?"Id":"pid"],0):"");foreach($K
|
||
as$x=>$X)echo"<td>".((JUSH=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||(JUSH=="pgsql"&&$x=="current_query"&&$X!="<IDLE>")||(JUSH=="oracle"&&$x=="sql_text"&&$X!="")?"<code class='jush-".JUSH."'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($K["db"]!=""?"db=".urlencode($K["db"])."&":"")."sql=".urlencode($X)).'">'.'Clone'.'</a>':h($X));echo"\n";}echo'</table>
|
||
</div>
|
||
<p>
|
||
';if(support("kill"))echo($s+1)."/".sprintf('%d in total',max_connections()),"<p><input type='submit' value='".'Kill'."'>\n";echo
|
||
input_token(),'</form>
|
||
',script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$w=indexes($a);$n=fields($a);$id=column_foreign_keys($a);$xf=$S["Oid"];$na=get_settings("adminer_import");$eh=array();$e=array();$rh=array();$Of=array();$ui="";foreach($n
|
||
as$x=>$m){$C=adminer()->fieldName($m);$kf=html_entity_decode(strip_tags($C),ENT_QUOTES);if(isset($m["privileges"]["select"])&&$C!=""){$e[$x]=$kf;if(is_shortable($m))$ui=adminer()->selectLengthProcess();}if(isset($m["privileges"]["where"])&&$C!="")$rh[$x]=$kf;if(isset($m["privileges"]["order"])&&$C!="")$Of[$x]=$kf;$eh+=$m["privileges"];}list($M,$td)=adminer()->selectColumnsProcess($e,$w);$M=array_unique($M);$td=array_unique($td);$ke=count($td)<count($M);$Z=adminer()->selectSearchProcess($n,$w);$Nf=adminer()->selectOrderProcess($n,$w);$z=adminer()->selectLimitProcess();if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Xi=>$K){$wa=convert_field($n[key($K)]);$M=array($wa?:idf_escape(key($K)));$Z[]=where_check($Xi,$n);$J=driver()->select($a,$M,$Z,$M);if($J)echo
|
||
first($J->fetch_row());}exit;}$G=$Zi=array();foreach($w
|
||
as$v){if($v["type"]=="PRIMARY"){$G=array_flip($v["columns"]);$Zi=($M?$G:array());foreach($Zi
|
||
as$x=>$X){if(in_array(idf_escape($x),$M))unset($Zi[$x]);}break;}}if($xf&&!$G){$G=$Zi=array($xf=>0);$w[]=array("type"=>"PRIMARY","columns"=>array($xf));}if($_POST&&!$l){$xj=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Za=array();foreach($_POST["check"]as$Va)$Za[]=where_check($Va,$n);$xj[]="((".implode(") OR (",$Za)."))";}$xj=($xj?"\nWHERE ".implode(" AND ",$xj):"");if($_POST["export"]){save_settings(array("output"=>$_POST["output"],"format"=>$_POST["format"]),"adminer_import");dump_headers($a);adminer()->dumpTable($a,"");$md=($M?implode(", ",$M):"*").convert_fields($e,$n,$M)."\nFROM ".table($a);$vd=($td&&$ke?"\nGROUP BY ".implode(", ",$td):"").($Nf?"\nORDER BY ".implode(", ",$Nf):"");$H="SELECT $md$xj$vd";if(is_array($_POST["check"])&&!$G){$Vi=array();foreach($_POST["check"]as$X)$Vi[]="(SELECT".limit($md,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n).$vd,1).")";$H=implode(" UNION ALL ",$Vi);}adminer()->dumpData($a,"table",$H);adminer()->dumpFooter();exit;}if(!adminer()->selectEmailProcess($Z,$id)){if($_POST["save"]||$_POST["delete"]){$I=true;$oa=0;$O=array();if(!$_POST["delete"]){foreach($_POST["fields"]as$C=>$X){$X=process_input($n[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$O){$H=($_POST["clone"]?"INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a):"");if($_POST["all"]||($G&&is_array($_POST["check"]))||$ke){$I=($_POST["delete"]?driver()->delete($a,$xj):($_POST["clone"]?queries("INSERT $H$xj".driver()->insertReturning($a)):driver()->update($a,$O,$xj)));$oa=connection()->affected_rows;if(is_object($I))$oa+=$I->num_rows;}else{foreach((array)$_POST["check"]as$X){$wj="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$n);$I=($_POST["delete"]?driver()->delete($a,$wj,1):($_POST["clone"]?queries("INSERT".limit1($a,$H,$wj)):driver()->update($a,$O,$wj,1)));if(!$I)break;$oa+=connection()->affected_rows;}}}$Xe=lang_format(array('%d item has been affected.','%d items have been affected.'),$oa);if($_POST["clone"]&&$I&&$oa==1){$ze=last_id($I);if($ze)$Xe=sprintf('Item%s has been inserted.'," $ze");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Xe,$I);if(!$_POST["delete"]){$yg=(array)$_POST["fields"];edit_form($a,array_intersect_key($n,$yg),$yg,!$_POST["clone"],$l);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l='Ctrl+click on a value to modify it.';else{$I=true;$oa=0;foreach($_POST["val"]as$Xi=>$K){$O=array();foreach($K
|
||
as$x=>$X){$x=bracket_escape($x,true);$O[idf_escape($x)]=(preg_match('~char|text~',$n[$x]["type"])||$X!=""?adminer()->processInput($n[$x],$X):"NULL");}$I=driver()->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Xi,$n),($ke||$G?0:1)," ");if(!$I)break;$oa+=connection()->affected_rows;}queries_redirect(remove_from_uri(),lang_format(array('%d item has been affected.','%d items have been affected.'),$oa),$I);}}elseif(!is_string($Wc=get_file("csv_file",true)))$l=upload_error($Wc);elseif(!preg_match('~~u',$Wc))$l='File must be in UTF-8 encoding.';else{save_settings(array("output"=>$na["output"],"format"=>$_POST["separator"]),"adminer_import");$I=true;$ib=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$Wc,$Ne);$oa=count($Ne[0]);driver()->begin();$xh=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($Ne[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$xh]*)$xh~",$X.$xh,$Oe);if(!$x&&!array_diff($Oe[1],$ib)){$ib=$Oe[1];$oa--;}else{$O=array();foreach($Oe[1]as$s=>$fb)$O[idf_escape($ib[$s])]=($fb==""&&$n[$ib[$s]]["null"]?"NULL":q(preg_match('~^".*"$~s',$fb)?str_replace('""','"',substr($fb,1,-1)):$fb));$L[]=$O;}}$I=(!$L||driver()->insertUpdate($a,$L,$G));if($I)driver()->commit();queries_redirect(remove_from_uri("page"),lang_format(array('%d row has been imported.','%d rows have been imported.'),$oa),$I);driver()->rollback();}}}$fi=adminer()->tableName($S);if(is_ajax()){page_headers();ob_start();}else
|
||
page_header('Select'.": $fi",$l);$O=null;if(isset($eh["insert"])||!support("table")){$fg=array();foreach((array)$_GET["where"]as$X){if(isset($id[$X["col"]])&&count($id[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&(is_array($X["val"])||!preg_match('~[_%]~',$X["val"])))))$fg["set"."[".bracket_escape($X["col"])."]"]=$X["val"];}$O=$fg?"&".http_build_query($fg):"";}adminer()->selectLinks($S,$O);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($n?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?input_hidden("db",DB).(isset($_GET["ns"])?input_hidden("ns",$_GET["ns"]):""):""),input_hidden("select",$a),"</div>\n";adminer()->selectColumnsPrint($M,$e);adminer()->selectSearchPrint($Z,$rh,$w);adminer()->selectOrderPrint($Nf,$Of,$w);adminer()->selectLimitPrint($z);adminer()->selectLengthPrint($ui);adminer()->selectActionPrint($w);echo"</form>\n";$E=$_GET["page"];$ld=null;if($E=="last"){$ld=get_val(count_rows($a,$Z,$ke,$td));$E=floor(max(0,intval($ld)-1)/$z);}$sh=$M;$ud=$td;if(!$sh){$sh[]="*";$zb=convert_fields($e,$n,$M);if($zb)$sh[]=substr($zb,2);}foreach($M
|
||
as$x=>$X){$m=$n[idf_unescape($X)];if($m&&($wa=convert_field($m)))$sh[$x]="$wa AS $X";}if(!$ke&&$Zi){foreach($Zi
|
||
as$x=>$X){$sh[]=idf_escape($x);if($ud)$ud[]=idf_escape($x);}}$I=driver()->select($a,$sh,$Z,$ud,$Nf,$z,$E,true);if(!$I)echo"<p class='error'>".error()."\n";else{if(JUSH=="mssql"&&$E)$I->seek($z*$E);$tc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($E&&JUSH=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&$z&&$td&&$ke&&JUSH=="sql")$ld=get_val(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".'No rows.'."\n";else{$Ea=adminer()->backwardKeys($a,$fi);echo"<div class='scrollable'>","<table id='table' class='nowrap checkable odds'>",script("mixin(qs('#table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});"),"<thead><tr>".(!$td&&$M?"":"<td><input type='checkbox' id='all-page' class='jsonly'>".script("qs('#all-page').onclick = partial(formCheck, /check/);","")." <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$lf=array();$od=array();reset($M);$Og=1;foreach($L[0]as$x=>$X){if(!isset($Zi[$x])){$X=idx($_GET["columns"],key($M))?:array();$m=$n[$M?($X?$X["col"]:current($M)):$x];$C=($m?adminer()->fieldName($m,$Og):($X["fun"]?"*":h($x)));if($C!=""){$Og++;$lf[$x]=$C;$d=idf_escape($x);$Kd=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$Vb="&desc%5B0%5D=1";echo"<th id='th[".h(bracket_escape($x))."]'>".script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});","");$nd=apply_sql_function($X["fun"],$C);$Jh=isset($m["privileges"]["order"])||$nd;echo($Jh?'<a href="'.h($Kd.($Nf[0]==$d||$Nf[0]==$x||(!$Nf&&$ke&&$td[0]==$d)?$Vb:'')).'">'."$nd</a>":$nd),"<span class='column hidden'>";if($Jh)echo"<a href='".h($Kd.$Vb)."' title='".'descending'."' class='text'> ↓</a>";if(!$X["fun"]&&isset($m["privileges"]["where"]))echo'<a href="#fieldset-search" title="'.'Search'.'" class="text jsonly"> =</a>',script("qsl('a').onclick = partial(selectSearch, '".js_escape($x)."');");echo"</span>";}$od[$x]=$X["fun"];next($M);}}$De=array();if($_GET["modify"]){foreach($L
|
||
as$K){foreach($K
|
||
as$x=>$X)$De[$x]=max($De[$x],min(40,strlen(utf8_decode($X))));}}echo($Ea?"<th>".'Relations':"")."</thead>\n";if(is_ajax())ob_end_clean();foreach(adminer()->rowDescriptions($L,$id)as$jf=>$K){$Wi=unique_array($L[$jf],$w);if(!$Wi){$Wi=array();foreach($L[$jf]as$x=>$X){if(!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~',$x))$Wi[$x]=$X;}}$Xi="";foreach($Wi
|
||
as$x=>$X){$m=(array)$n[$x];if((JUSH=="sql"||JUSH=="pgsql")&&preg_match('~char|text|enum|set~',$m["type"])&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".(JUSH!='sql'||preg_match("~^utf8~",$m["collation"])?$x:"CONVERT($x USING ".charset(connection()).")").")";$X=md5($X);}$Xi
|
||
.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X===false?"f":$X):"null%5B%5D=".urlencode($x));}echo"<tr>".(!$td&&$M?"":"<td>".checkbox("check[]",substr($Xi,1),in_array(substr($Xi,1),(array)$_POST["check"])).($ke||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Xi)."' class='edit'>".'edit'."</a>"));foreach($K
|
||
as$x=>$X){if(isset($lf[$x])){$m=(array)$n[$x];$X=driver()->value($X,$m);if($X!=""&&(!isset($tc[$x])||$tc[$x]!=""))$tc[$x]=(is_mail($X)?$lf[$x]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$m["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($x).$Xi;if(!$_&&$X!==null){foreach((array)$id[$x]as$p){if(count($id[$x])==1||end($p["source"])==$x){$_="";foreach($p["source"]as$s=>$Kh)$_
|
||
.=where_link($s,$p["target"][$s],$L[$jf][$Kh]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($p["db"]),ME):ME).'select='.urlencode($p["table"]).$_;if($p["ns"])$_=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($p["ns"]),$_);if(count($p["source"])==1)break;}}}if($x=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Wi))$_
|
||
.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Wi
|
||
as$qe=>$W)$_
|
||
.=where_link($s++,$qe,$W);}$Ld=select_value($X,$_,$m,$ui);$t=h("val[$Xi][".bracket_escape($x)."]");$zg=idx(idx($_POST["val"],$Xi),bracket_escape($x));$oc=!is_array($K[$x])&&is_utf8($Ld)&&$L[$jf][$x]==$K[$x]&&!$od[$x]&&!$m["generated"];$si=preg_match('~text|json|lob~',$m["type"]);echo"<td id='$t'".(preg_match(number_type(),$m["type"])&&($X===null||is_numeric(strip_tags($Ld)))?" class='number'":"");if(($_GET["modify"]&&$oc&&$X!==null)||$zg!==null){$yd=h($zg!==null?$zg:$K[$x]);echo">".($si?"<textarea name='$t' cols='30' rows='".(substr_count($K[$x],"\n")+1)."'>$yd</textarea>":"<input name='$t' value='$yd' size='$De[$x]'>");}else{$Ie=strpos($Ld,"<i>…</i>");echo" data-text='".($Ie?2:($si?1:0))."'".($oc?"":" data-warning='".h('Use edit link to modify this value.')."'").">$Ld";}}}if($Ea)echo"<td>";adminer()->backwardKeysPrint($Ea,$L[$jf]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n","</div>\n";}if(!is_ajax()){if($L||$E){$Gc=true;if($_GET["page"]!="last"){if(!$z||(count($L)<$z&&($L||!$E)))$ld=($E?$E*$z:0)+count($L);elseif(JUSH!="sql"||!$ke){$ld=($ke?false:found_rows($S,$Z));if(intval($ld)<max(1e4,2*($E+1)*$z))$ld=first(slow_query(count_rows($a,$Z,$ke,$td)));else$Gc=false;}}$dg=($z&&($ld===false||$ld>$z||$E));if($dg)echo(($ld===false?count($L)+1:$ld-$E*$z)>$z?'<p><a href="'.h(remove_from_uri("page")."&page=".($E+1)).'" class="loadmore">'.'Load more data'.'</a>'.script("qsl('a').onclick = partial(selectLoadMore, $z, '".'Loading'."…');",""):''),"\n";echo"<div class='footer'><div>\n";if($dg){$Qe=($ld===false?$E+(count($L)>=$z?2:1):floor(($ld-1)/$z));echo"<fieldset>";if(JUSH!="simpledb"){echo"<legend><a href='".h(remove_from_uri("page"))."'>".'Page'."</a></legend>",script("qsl('a').onclick = function () { pageClick(this.href, +prompt('".'Page'."', '".($E+1)."')); return false; };"),pagination(0,$E).($E>5?" …":"");for($s=max(1,$E-4);$s<min($Qe,$E+5);$s++)echo
|
||
pagination($s,$E);if($Qe>0)echo($E+5<$Qe?" …":""),($Gc&&$ld!==false?pagination($Qe,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Qe'>".'last'."</a>");}else
|
||
echo"<legend>".'Page'."</legend>",pagination(0,$E).($E>1?" …":""),($E?pagination($E,$E):""),($Qe>$E?pagination($E+1,$E).($Qe>$E+1?" …":""):"");echo"</fieldset>\n";}echo"<fieldset>","<legend>".'Whole result'."</legend>";$cc=($Gc?"":"~ ").$ld;$Gf="const checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$cc' : checked); selectCount('selected2', this.checked || !checked ? '$cc' : checked);";echo
|
||
checkbox("all",1,0,($ld!==false?($Gc?"":"~ ").lang_format(array('%d row','%d rows'),$ld):""),$Gf)."\n","</fieldset>\n";if(adminer()->selectCommandPrint())echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div>
|
||
<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'>
|
||
</div></fieldset>
|
||
<fieldset><legend>Selected <span id="selected"></span></legend><div>
|
||
<input type="submit" name="edit" value="Edit">
|
||
<input type="submit" name="clone" value="Clone">
|
||
<input type="submit" name="delete" value="Delete">',confirm(),'</div></fieldset>
|
||
';$jd=adminer()->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($jd['sql']);break;}}if($jd){print_fieldset("export",'Export'." <span id='selected2'></span>");$ag=adminer()->dumpOutput();echo($ag?html_select("output",$ag,$na["output"])." ":""),html_select("format",$jd,$na["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}adminer()->selectEmailPrint(array_filter($tc,'strlen'),$e);echo"</div></div>\n";}if(adminer()->selectImportPrint())echo"<p>","<a href='#import'>".'Import'."</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"<span id='import'".($_POST["import"]?"":" class='hidden'").">: ","<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$na["format"])," <input type='submit' name='import' value='".'Import'."'>","</span>";echo
|
||
input_token(),"</form>\n",(!$td&&$M?"":script("tableCheck();"));}}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$P=isset($_GET["status"]);page_header($P?'Status':'Variables');$nj=($P?show_status():show_variables());if(!$nj)echo"<p class='message'>".'No rows.'."\n";else{echo"<table>\n";foreach($nj
|
||
as$K){echo"<tr>";$x=array_shift($K);echo"<th><code class='jush-".JUSH.($P?"status":"set")."'>".h($x)."</code>";foreach($K
|
||
as$X)echo"<td>".nl_br(h($X));}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$bi=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$S){json_row("Comment-$C",h($S["Comment"]));if(!is_view($S)){foreach(array("Engine","Collation")as$x)json_row("$x-$C",h($S[$x]));foreach($bi+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($S[$x]!=""){$X=format_number($S[$x]);if($X>=0)json_row("$x-$C",($x=="Rows"&&$X&&$S["Engine"]==(JUSH=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($bi[$x]))$bi[$x]+=($S["Engine"]!="InnoDB"||$x!="Data_free"?$S[$x]:0);}elseif(array_key_exists($x,$S))json_row("$x-$C","?");}}}foreach($bi
|
||
as$x=>$X)json_row("sum-$x",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{$mi=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($mi&&!$l&&!$_POST["search"]){$I=true;$Xe="";if(JUSH=="sql"&&$_POST["tables"]&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$I=truncate_tables($_POST["tables"]);$Xe='Tables have been truncated.';}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Xe='Tables have been moved.';}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Xe='Tables have been copied.';}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$Xe='Tables have been dropped.';}elseif(JUSH=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$R){foreach(get_rows("PRAGMA integrity_check(".q($R).")")as$K)$Xe
|
||
.="<b>".h($R)."</b>: ".h($K["integrity_check"])."<br>";}}elseif(JUSH!="sql"){$I=(JUSH=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$Xe='Tables have been optimized.';}elseif(!$_POST["tables"])$Xe='No tables.';elseif($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('Adminer\idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc())$Xe
|
||
.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$Xe,$I);}page_header(($_GET["ns"]==""?'Database'.": ".h(DB):'Schema'.": ".h($_GET["ns"])),$l,true);if(adminer()->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".'Tables and views'."</h3>\n";$li=tables_list();if(!$li)echo"<p class='message'>".'No tables.'."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".'Search data in tables'." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');","")," <input type='submit' name='search' value='".'Search'."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=driver()->convertOperator("LIKE %%");search_tables();}}echo"<div class='scrollable'>\n","<table class='nowrap checkable odds'>\n",script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});"),'<thead><tr class="wrap">','<td><input id="check-all" type="checkbox" class="jsonly">'.script("qs('#check-all').onclick = partial(formCheck, /^(tables|views)\[/);",""),'<th>'.'Table','<td>'.'Engine'.doc_link(array('sql'=>'storage-engines.html')),'<td>'.'Collation'.doc_link(array('sql'=>'charset-charsets.html','mariadb'=>'supported-character-sets-and-collations/')),'<td>'.'Data Length'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286')),'<td>'.'Index Length'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT')),'<td>'.'Data Free'.doc_link(array('sql'=>'show-table-status.html')),'<td>'.'Auto Increment'.doc_link(array('sql'=>'example-auto-increment.html','mariadb'=>'auto_increment/')),'<td>'.'Rows'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286')),(support("comment")?'<td>'.'Comment'.doc_link(array('sql'=>'show-table-status.html','pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')):''),"</thead>\n";$T=0;foreach($li
|
||
as$C=>$U){$qj=($U!==null&&!preg_match('~table|sequence~i',$U));$t=h("Table-".$C);echo'<tr><td>'.checkbox(($qj?"views[]":"tables[]"),$C,in_array("$C",$mi,true),"","","",$t),'<th>'.(support("table")||support("indexes")?"<a href='".h(ME)."table=".urlencode($C)."' title='".'Show structure'."' id='$t'>".h($C).'</a>':h($C));if($qj)echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($C).'" title="'.'Alter view'.'">'.(preg_match('~materialized~i',$U)?'Materialized view':'View').'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($C).'" title="'.'Select data'.'">?</a>';else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",'Alter table'),"Index_length"=>array("indexes",'Alter indexes'),"Data_free"=>array("edit",'New item'),"Auto_increment"=>array("auto_increment=1&create",'Alter table'),"Rows"=>array("select",'Select data'),)as$x=>$_){$t=" id='$x-".h($C)."'";echo($_?"<td align='right'>".(support("table")||$x=="Rows"||(support("indexes")&&$x!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($C)."'$t title='$_[1]'>?</a>":"<span$t>?</span>"):"<td id='$x-".h($C)."'>");}$T++;}echo(support("comment")?"<td id='Comment-".h($C)."'>":""),"\n";}echo"<tr><td><th>".sprintf('%d in total',count($li)),"<td>".h(JUSH=="sql"?get_val("SELECT @@default_storage_engine"):""),"<td>".h(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$x)echo"<td align='right' id='sum-$x'>";echo"\n","</table>\n","</div>\n";if(!information_schema(DB)){echo"<div class='footer'><div>\n";$kj="<input type='submit' value='".'Vacuum'."'> ".on_help("'VACUUM'");$Jf="<input type='submit' name='optimize' value='".'Optimize'."'> ".on_help(JUSH=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'");echo"<fieldset><legend>".'Selected'." <span id='selected'></span></legend><div>".(JUSH=="sqlite"?$kj."<input type='submit' name='check' value='".'Check'."'> ".on_help("'PRAGMA integrity_check'"):(JUSH=="pgsql"?$kj.$Jf:(JUSH=="sql"?"<input type='submit' value='".'Analyze'."'> ".on_help("'ANALYZE TABLE'").$Jf."<input type='submit' name='check' value='".'Check'."'> ".on_help("'CHECK TABLE'")."<input type='submit' name='repair' value='".'Repair'."'> ".on_help("'REPAIR TABLE'"):"")))."<input type='submit' name='truncate' value='".'Truncate'."'> ".on_help(JUSH=="sqlite"?"'DELETE'":"'TRUNCATE".(JUSH=="pgsql"?"'":" TABLE'")).confirm()."<input type='submit' name='drop' value='".'Drop'."'>".on_help("'DROP TABLE'").confirm()."\n";$i=(support("scheme")?adminer()->schemas():adminer()->databases());if(count($i)!=1&&JUSH!="sqlite"){$j=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p><label>".'Move to other database'.": ",($i?html_select("target",$i,$j):'<input name="target" value="'.h($j).'" autocapitalize="off">'),"</label> <input type='submit' name='move' value='".'Move'."'>",(support("copy")?" <input type='submit' name='copy' value='".'Copy'."'> ".checkbox("overwrite",1,$_POST["overwrite"],'overwrite'):""),"\n";}echo"<input type='hidden' name='all' value=''>",script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $T);":"")." }"),input_token(),"</div></fieldset>\n","</div></div>\n";}echo"</form>\n",script("tableCheck();");}echo"<p class='links'><a href='".h(ME)."create='>".'Create table'."</a>\n",(support("view")?"<a href='".h(ME)."view='>".'Create view'."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".'Routines'."</h3>\n";$ih=routines();if($ih){echo"<table class='odds'>\n",'<thead><tr><th>'.'Name'.'<td>'.'Type'.'<td>'.'Return type'."<td></thead>\n";foreach($ih
|
||
as$K){$C=($K["SPECIFIC_NAME"]==$K["ROUTINE_NAME"]?"":"&name=".urlencode($K["ROUTINE_NAME"]));echo'<tr>','<th><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($K["SPECIFIC_NAME"]).$C).'">'.h($K["ROUTINE_NAME"]).'</a>','<td>'.h($K["ROUTINE_TYPE"]),'<td>'.h($K["DTD_IDENTIFIER"]),'<td><a href="'.h(ME.($K["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($K["SPECIFIC_NAME"]).$C).'">'.'Alter'."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.'Create procedure'.'</a>':'').'<a href="'.h(ME).'function=">'.'Create function'."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".'Sequences'."</h3>\n";$_h=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($_h){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($_h
|
||
as$X)echo"<tr><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."sequence='>".'Create sequence'."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".'User types'."</h3>\n";$ij=types();if($ij){echo"<table class='odds'>\n","<thead><tr><th>".'Name'."</thead>\n";foreach($ij
|
||
as$X)echo"<tr><th><a href='".h(ME)."type=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."type='>".'Create type'."</a>\n";}if(support("event")){echo"<h3 id='events'>".'Events'."</h3>\n";$L=get_rows("SHOW EVENTS");if($L){echo"<table>\n","<thead><tr><th>".'Name'."<td>".'Schedule'."<td>".'Start'."<td>".'End'."<td></thead>\n";foreach($L
|
||
as$K)echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?'At given time'."<td>".$K["Execute at"]:'Every'." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.'Alter'.'</a>';echo"</table>\n";$Ec=get_val("SELECT @@event_scheduler");if($Ec&&$Ec!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($Ec)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.'Create event'."</a>\n";}if($li)echo
|
||
script("ajaxSetHtml('".js_escape(ME)."script=db');");}}}page_footer(); |