<?php
/**
 * AdminNeo - Powerful database manager in a single PHP file
 * v5.8.0
 *
 * Compiled with
 * drivers:   pgsql
 * languages: en
 * themes:    default-blue, default-green, default-orange, default-purple, default-red
 * config:    no
 *
 * @link https://www.adminneo.org/
 *
 * @author Peter Knut
 * @author Jakub Vrana (https://www.vrana.cz/)
 *
 * @copyright 2007-2025 Jakub Vrána
 * @copyright 2024-2025 Peter Knut
 *
 * @license Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
 * @license GNU General Public License, version 2 (https://www.gnu.org/licenses/gpl-2.0.html)
 */namespace
AdminNeo;use
Exception;use
stdClass;use
PDO;use
PDOStatement;abstract
class
Plugin{protected$admin;protected$config;protected$settings;protected$locale;function
inject($za,Config$Tb,Settings$N,Locale$Bg){$this->admin=$za;$this->config=$Tb;$this->settings=$N;$this->locale=$Bg;}}abstract
class
Origin
extends
Plugin{private$errors=[];private
static$instance=null;static
function
create(array$Tb=[],array$Pi=[]){if(self::$instance)die("Admin instance already exists.\n");$za=new
static();if(!$Tb&&file_exists("adminneo-config.php")){$Tb=include_once("adminneo-config.php");if(!is_array($Tb)){$Tb=[];$vg="href=https://github.com/adminneo-org/adminneo#configuration ".target_blank();$za->addError(lang(0,"<b>adminneo-config.php</b>")." <a $vg>".lang(1)."</a>");}}$Tb=new
Config($Tb);$N=new
Settings($Tb);if(!$Pi&&file_exists("adminneo-plugins.php")){$Pi=include_once("adminneo-plugins.php");if(!is_array($Pi)){$Pi=[];$vg="href=https://github.com/adminneo-org/adminneo#plugins ".target_blank();$za->addError(lang(0,"<b>adminneo-plugins.php</b>")." <a $vg>".lang(1)."</a>");}}self::$instance=$Pi?new
Pluginer($za,$Pi):$za;$za->inject(self::$instance,$Tb,$N,Locale::get());foreach($Pi
as$Oi)$Oi->inject(self::$instance,$Tb,$N,Locale::get());return
self::$instance;}static
function
get(){if(!self::$instance)die("Admin instance not found. Create instance by Admin::create() method at first.\n");return
self::$instance;}protected
function
__construct(){}function
getConfig(){return$this->config;}function
getSettings(){return$this->settings;}abstract
function
getOperators();function
getLikeOperator(){return
Driver::get()->getLikeOperator();}function
getRegexpOperator(){return
null;}function
init(){}function
addError($i){$this->errors[]=$i;}function
getErrors(){return$this->errors;}abstract
function
getServiceTitle();function
getCredentials(){$M=$this->config->getServer(SERVER);return[$M?$M->getServer():SERVER,$_GET["username"],get_password()];}function
verifyDefaultPassword($E){$Le=$this->config->getDefaultPasswordHash();if($Le===null||$Le==="")return
lang(2);elseif(!password_verify($E,$Le))return
lang(3);return
true;}function
authenticate($U,$E){if($E==""){$Le=$this->config->getDefaultPasswordHash();if($Le===null)return
lang(4,target_blank());else
return$Le==="";}return
true;}function
getPrivateKey($gc=false){return
get_private_key($gc);}function
getBruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function
getServerName($M,$Ej=true,$Jd=null){if($M==""){if(!$Ej)return"";$M=Connection::exists()?Connection::get()->getDefaultServerName():"";if($M=="")return$Jd!==null?$Jd:lang(5);$qk=null;}else$qk=$this->config->getServer($M);return$qk?$qk->getName():preg_replace('~^https?://~',"",$M);}abstract
function
getDatabase();function
getDatabases($ge=true){$f=$this->filterListWithWildcards(get_databases($ge),$this->config->getHiddenDatabases(),false,Driver::get()->getSystemDatabases());if(DB!=""&&!in_array(DB,$f))array_unshift($f,DB);return$f;}function
getSchemas($_h=false){$Qe=$this->config->getHiddenSchemas();if($_h&&!in_array("__system",$Qe))$Qe[]="__system";$Yj=$this->filterListWithWildcards(schemas(),$Qe,false,Driver::get()->getSystemSchemas());if(isset($_GET["ns"])&&$_GET["ns"]!=""&&!in_array($_GET["ns"],$Yj))array_unshift($Yj,$_GET["ns"]);return$Yj;}function
getCollations(array$Sf=[]){$Pm=$this->config->getVisibleCollations();$Xd=$Pm?array_merge($Pm,$Sf):[];return$this->filterListWithWildcards(collations(),$Xd,true);}private
function
filterListWithWildcards(array$Y,array$Xd,$Uf,array$hl=[]){if(!$Y||!$Xd)return$Y;$r=array_search("__system",$Xd);if($r!==false){unset($Xd[$r]);$Xd=array_merge($Xd,$hl);}array_walk($Xd,function(&$X){$X=str_replace('\\*',".*",preg_quote($X,"~"));});$Ji='~^('.implode("|",$Xd).')$~';return$this->filterListWithPattern($Y,$Ji,$Uf);}private
function
filterListWithPattern(array$Y,$Ji,$Uf){$H=[];foreach($Y
as$t=>$X){if(is_array($X)){if($Xk=$this->filterListWithPattern($X,$Ji,$Uf))$H[$t]=$Xk;}elseif(($Uf&&preg_match($Ji,$X))||(!$Uf&&!preg_match($Ji,$X)))$H[$t]=$X;}return$H;}abstract
function
getQueryTimeout();function
sendHeaders(){}function
updateCspHeader(array&$jc){}function
printFavicons(){$Db=validate_color_variant($this->config->getColorVariant());echo"<link rel='icon' type='image/x-icon' href='",link_files("favicon-$Db.ico",[]),"' sizes='32x32'>\n","<link rel='icon' type='image/svg+xml' href='",link_files("favicon-$Db.svg",[]),"'>\n","<link rel='apple-touch-icon' href='",link_files("apple-touch-icon-$Db.png",[]),"'>\n";}abstract
function
printToHead();function
getCssUrls(){$vm=$this->config->getCssUrls();foreach(["adminneo.css","adminneo-light.css","adminneo-dark.css"]as$m){if(file_exists($m))$vm[]="$m?v=".filemtime($m);}return$vm;}function
isLightModeForced(){return$this->isColorSchemeForced(false);}function
isDarkModeForced(){return$this->isColorSchemeForced(true);}private
function
isColorSchemeForced($oc){$jh=$oc?Settings::$ColorSchemeDark:Settings::$ColorSchemeLight;$kh=$oc?Settings::$ColorSchemeLight:Settings::$ColorSchemeDark;$Td=file_exists("adminneo-$jh.css");$Ud=file_exists("adminneo-$kh.css");if($Td&&!$Ud)return
true;return$this->settings->getColorScheme()==$jh&&!($Td
xor$Ud);}function
getJsUrls(){$vm=$this->config->getJsUrls();$m="adminneo.js";if(file_exists($m))$vm[]="$m?v=".filemtime($m);return$vm;}abstract
function
printLoginForm();function
getLoginFormRow($Nd,$bg,$j){if($bg)return"<tr><th>$bg</th><td>$j</td></tr>\n";else
return"$j\n";}function
printLogout(){echo"<div class='logout'>","<form action='' method='post'>\n","<span title='",lang(6),"'>",h($_GET["username"]),"</span>","<input type='submit' class='button' name='logout' value='",lang(7),"' id='logout'>",input_token(),"</form>","</div>\n";}function
getTableName(array$ll){return
h($ll["Name"]);}abstract
function
getFieldName(array$j,$C=0);function
formatComment($Lb){return
h($Lb);}abstract
function
printTableMenu(array$ll,$xf);function
getForeignKeys($Q){return
foreign_keys($Q);}function
getBackwardKeys($Q,$jl){if(!$this->settings->isRelationLinks())return[];$K=backward_keys($Q);$Wf=[];foreach($K
as$J){$q=$J["table_schema"].".".$J["table_name"];$Wf[$q]["schema"]=$J["table_schema"];$Wf[$q]["table"]=$J["table_name"];$Wf[$q]["constraints"][$J["constraint_name"]][$J["column_name"]]=$J["referenced_column_name"];}foreach($Wf
as$q=>$t){$_=$this->admin->getTableName(table_status1($t["table"],true));if($_!=""){$ak=preg_quote($jl);$kk="(:|\\s*-)?\\s+";$Wf[$q]["name"]=(preg_match("(^$ak$kk(.+)|^(.+?)$kk$ak\$)iu",$_,$y)?$y[2].$y[3]:$_);}else
unset($Wf[$q]);}return$Wf;}function
printBackwardKeys(array$Va,array$J){foreach($Va
as$t){foreach($t["constraints"]as$Yb){$Tg=preg_replace('~&ns=[^&]+&~',"&ns=".urldecode($t["schema"])."&",ME);$w=$Tg.'select='.urlencode($t["table"]);$p=0;foreach($Yb
as$b=>$W){if(!isset($J[$W]))continue
2;$w
.=where_link($p++,$b,$J[$W]);}$_=preg_replace('(^'.preg_quote($_GET["select"]).(substr($_GET["select"],-1)=="s"?"?":"").'_)',"_",$t["name"]);$S=implode(", ",array_keys($Yb));echo"<a href='".h($w)."' title='".h($S)."'>".h($_)."</a>";$w=$Tg.'edit='.urlencode($t["table"]);foreach($Yb
as$b=>$W)$w
.="&preset".urlencode("[".bracket_escape($b)."]")."=".urlencode($J[$W]);echo"<a href='".h($w)."' title='".lang(8)."'>",icon_solo("add"),"</a> ";}}}abstract
function
formatSelectQuery($G,$Rk,$Id=false);abstract
function
formatMessageQuery($G,$Ml,$Id=false);abstract
function
formatSqlCommandQuery($G);function
printAfterSqlCommand(){}abstract
function
getTableDescriptionFieldName($Q);abstract
function
fillForeignDescriptions(array$K,array$je);function
getFieldValueLink($W,$j){if(is_mail($W))return"mailto:$W";if(is_web_url($W))return$W;return
null;}abstract
function
formatSelectionValue($W,$w,$j,$mi);abstract
function
formatFieldValue($X,array$j);abstract
function
printTableStructure(array$k);abstract
function
printTablePartitions(array$Ai);abstract
function
printRelatedTables(array$vl);abstract
function
printTableIndexes(array$s,array$ll);abstract
function
printSelectionColumns(array$L,array$c);abstract
function
printSelectionSearch(array$Z,array$c,array$s);abstract
function
printSelectionOrder(array$C,array$c,array$s);abstract
function
printSelectionLimit($v);abstract
function
printSelectionLength($Gl);abstract
function
printSelectionAction(array$s);function
isDataEditAllowed(){return!information_schema(DB);}abstract
function
processSelectionColumns(array$c,array$s);abstract
function
processSelectionSearch(array$k,array$s);abstract
function
processSelectionOrder(array$k,array$s);function
processSelectionLimit(){if(!isset($_GET["limit"]))return$this->settings->getRecordsPerPage();return$_GET["limit"]!=""?(int)$_GET["limit"]:0;}abstract
function
processSelectionLength();abstract
function
getFieldFunctions(array$j);abstract
function
getFieldInput($Q,array$j,$Na,$X,$o);function
getFieldInputHint($Q,array$j,$X){return
support("comment")?$this->admin->formatComment($j["comment"]):"";}abstract
function
processFieldInput(array$j,$X,$o="");function
detectJson($Od,&$X,$aj=null){if(is_array($X)){$ee=JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|($this->config->isJsonValuesAutoFormat()?JSON_PRETTY_PRINT:0);$X=json_encode($X,$ee);return
true;}$ee=JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES|($aj?JSON_PRETTY_PRINT:0);if(preg_match('~^jsonb?$~',$Od)){if($X!=null&&$aj!==null&&$this->config->isJsonValuesAutoFormat())$X=json_encode(json_decode($X),$ee);return
true;}if(!$this->config->isJsonValuesDetection())return
false;if(is_string($X)&&$X!=""&&preg_match('~varchar|text|character varying|String|keyword~',$Od)&&($X[0]=="{"||$X[0]=="[")&&($Qf=json_decode($X))){if($aj!==null&&$this->config->isJsonValuesAutoFormat())$X=json_encode($Qf,$ee);return
true;}return
false;}function
getServerVariables(){return
show_variables();}function
getStatusVariables(){return
show_status();}abstract
function
getDumpOutputs();abstract
function
getDumpFormats();abstract
function
sendDumpHeaders($bf,$nh=false);function
dumpDatabase($rc){}abstract
function
dumpTable($Q,$Wk,$Mm=0);abstract
function
dumpData($Q,$Wk,$G);abstract
function
getImportFilePath();abstract
function
printDatabaseMenu();abstract
function
printNavigation($hh);abstract
function
printDatabaseSwitcher($hh);function
printTablesFilter(){echo"<div class='tables-filter jsonly'>"."<input id='tables-filter' type='search' class='input' autocomplete='off' placeholder='".lang(9)."'>".script("initTablesFilter(".json_encode($this->admin->getDatabase(),JSON_HEX_TAG).");")."</div>\n";}abstract
function
printTableList(array$vl);function
getSettingsRows($Be){$N=[];if($Be==1){$B=get_language_options();if($B)$N["lang"]="<tr><th id='label-language'>".lang(10)."</th>"."<td>".html_select("lang",get_language_options(),Locale::get()->getLanguage(),"","label-language")."</td></tr>\n";$Rl=get_theme_titles($this->config->getColorVariant());if(count($Rl)>1){list($Jl)=validate_theme($this->config->getTheme(),$this->config->getColorVariant());$B=[""=>lang(11)." ($Rl[$Jl])"]+$Rl;$N["theme"]="<tr><th id='label-theme'>".lang(12)."</th>"."<td>".html_select("theme",$B,($ra=$this->settings->getParameter("theme"))!==null?$ra:"","","label-theme")."</td></tr>\n";}$B=[""=>lang(13),Settings::$ColorSchemeLight=>lang(14),Settings::$ColorSchemeDark=>lang(15)];$N["colorScheme"]="<tr><th>".lang(16)."</th>"."<td>".html_radios("colorScheme",$B,($ra=$this->settings->getParameter("colorScheme"))!==null?$ra:"")."</td></tr>\n";}elseif($Be==2){$B=[""=>lang(11),true=>lang(17),false=>lang(18),];$h=$B[$this->config->isRelationLinks()];$B[""].=" ($h)";$N["relationLinks"]="<tr><th>".lang(19)."</th>"."<td>".html_radios("relationLinks",$B,($ra=$this->settings->getParameter("relationLinks"))!==null?$ra:"")."<span class='input-hint'>".lang(20)."</span>"."</td></tr>\n";$h=$this->config->getRecordsPerPage();$B=[""=>lang(11)." ($h)","20","30","50","70","100",];$N["recordsPerPage"]="<tr><th id='label-records'>".lang(21)."</th>"."<td>".html_select("recordsPerPage",$B,($ra=$this->settings->getParameter("recordsPerPage"))!==null?$ra:"","","label-records")."<span class='input-hint'>".lang(22)."</span>"."</td></tr>\n";$h=($ra=$this->config->getEnumAsSelectThreshold())!==null?$ra:lang(23);$B=[""=>lang(11)." ($h)",-1=>lang(23),0=>lang(24),3=>lang(25,3),5=>lang(25,5),10=>lang(25,10),20=>lang(25,20),];$N["enumAsSelectThreshold"]="<tr><th id='label-enum'>".lang(26)."</th>"."<td>".html_select("enumAsSelectThreshold",$B,($ra=$this->settings->getParameter("enumAsSelectThreshold"))!==null?$ra:"","","label-enum",true)."<span class='input-hint'>".lang(27)."</span>"."</td></tr>\n";}return$N;}abstract
function
getForeignColumnInfo(array$je,$b);}class
Pluginer{private
static$InternalMethods=["inject"=>true,"getConfig"=>true,];private
static$AppendMethods=["getErrors"=>true,"getFieldFunctions"=>true,"getDumpOutputs"=>true,"getDumpFormats"=>true,"getSettingsRows"=>true,];private$plugins;private$hooks=[];function
__construct(Origin$za,array$Pi){$this->plugins=$Pi;foreach(get_class_methods('\AdminNeo\Origin')as$eh){$this->hooks[$eh]=[];if(!(isset(self::$InternalMethods[$eh])?self::$InternalMethods[$eh]:false)){foreach($Pi
as$Oi){if(method_exists($Oi,$eh))$this->hooks[$eh][]=$Oi;}}if(isset(self::$AppendMethods[$eh])?self::$AppendMethods[$eh]:false)array_unshift($this->hooks[$eh],$za);else$this->hooks[$eh][]=$za;}}function
getPlugins(){return$this->plugins;}function
__call($_,array$ui){$Ia=isset(self::$AppendMethods[$_])?self::$AppendMethods[$_]:false;$H=$Ia?[]:null;assert(isset($this->hooks[$_]),"Calling unknown plugin method: $_");foreach($this->hooks[$_]as$Oi){$X=call_user_func_array([$Oi,$_],$ui);if($X!==null){if($Ia)$H+=$X;else
return$X;}}return$H;}function
updateCspHeader(array&$jc){$this->__call(__FUNCTION__,[&$jc]);}function
detectJson($Od,&$X,$aj=null){return$this->__call(__FUNCTION__,[$Od,&$X,$aj]);}}class
Admin
extends
Origin{function
getOperators(){return
Driver::get()->getOperators();}function
getServiceTitle(){return"<a href='".h(HOME_URL)."'><svg role='img' class='logo' width='133' height='28'><desc>AdminNeo</desc>"."<use href='".link_files("logo.svg",[])."#logo'/></svg></a>";}function
getDatabase(){return
DB;}function
getQueryTimeout(){return
2;}function
printToHead(){echo"<link rel='stylesheet' href='",link_files("jush.css",[]),"'>";if(!$this->admin->isLightModeForced())echo"<link rel='stylesheet' ".(!$this->admin->isDarkModeForced()?"media='(prefers-color-scheme: dark)' ":"")."href='",link_files("jush-dark.css",[]),"'>\n";echo
script_src(link_files("jush.js",[]),true);}function
printLoginForm(){$Vc=Drivers::getList();$rk=$this->config->getServerPairs($Vc);$M=SERVER?:$this->config->getDefaultServer();echo"<table class='box box-light'>\n";if($rk)echo$this->admin->getLoginFormRow('server',lang(5),"<select name='auth[server]'>".optionlist($rk,$M,true)."</select>");else{$Tc=DRIVER?:$this->config->getDefaultDriver($Vc);if(count($Vc)>1)echo$this->admin->getLoginFormRow('driver',lang(28),html_select("auth[driver]",$Vc,$Tc).script("initLoginDriver(qsl('select'));",""));else
echo$this->admin->getLoginFormRow('driver','',input_hidden("auth[driver]",$Tc));echo$this->admin->getLoginFormRow('server',lang(5),"<input class='input' name='auth[server]' value='".h($M)."' title='".lang(29)."' placeholder='localhost' autocapitalize='off'>");}echo$this->admin->getLoginFormRow('username',lang(6),'<input class="input" name="auth[username]" id="username" value="'.h($_GET["username"]).'" autocomplete="username" autocapitalize="off">'),$this->admin->getLoginFormRow('password',lang(30),'<input type="password" class="input" name="auth[password]" autocomplete="current-password">');if(!$rk){$rc=isset($_GET["db"])?$_GET["db"]:$this->config->getDefaultDatabase();echo$this->admin->getLoginFormRow('db',lang(31),'<input class="input" name="auth[db]" value="'.h($rc).'" autocapitalize="off">');}echo"</table>\n","<p>","<input type='submit' class='button default' value='".lang(32)."'>",checkbox("auth[permanent]",1,$_COOKIE["neo_permanent"],lang(33)),"</p>\n";}function
getFieldName(array$j,$C=0){$T=$j["full_type"].($j["null"]?" NULL":"");$Lb=$j["comment"];$kk=$T&&$Lb!=""?": ":"";return'<span title="'.h($T.$kk.$Lb).'">'.h($j["field"]).'</span>';}function
printTableMenu(array$ll,$xf){echo'<p class="links top-tabs">';$wg=[];$gk=($this->settings->isSelectionPreferred()&&!$this->settings->isNavigationReversed())||(!$this->settings->isSelectionPreferred()&&$this->settings->isNavigationReversed());if($gk)$wg["select"]=[lang(34),"data"];if(support("table")||support("indexes"))$wg["table"]=[lang(35),"structure"];if(!$gk)$wg["select"]=[lang(34),"data"];$Q=$ll["Name"];$Lf=false;if(support("table")){$Lf=is_view($ll);if(!$Lf){if($Q!="")$wg["create"]=[lang(36),"edit"];}elseif(support("view"))$wg["view"]=[lang(37),"edit"];}if($xf!==null)$wg["edit"]=[lang(8),"item-add"];$ui=$xf?"&".http_build_query($xf):"";foreach($wg
as$t=>$W)echo" <a href='",h(ME),"$t=",urlencode($Q),($t=="edit"?$ui:""),"'",bold(isset($_GET[$t])),">",icon($W[1]),"$W[0]</a>";echo
doc_link([DIALECT=>Driver::get()->tableHelp($Q,$Lf)],icon("help").lang(38)),"\n";}function
formatSelectQuery($G,$Rk,$Id=false){$cl=support("sql");$Tm=!$Id?Driver::get()->warnings():null;if($cl)$G
.=";";$fl=DIALECT=="elastic"||DIALECT=="mongo"?"json":DIALECT;$I="<pre><code class='jush-$fl'>".h(str_replace("\n"," ",$G))."</code></pre>\n";$I
.="<p class='links'>";if($cl)$I
.="<a href='".h(ME)."sql=".urlencode($G)."'>".icon("edit").lang(39)."</a>";if($Tm)$I
.="<a href='#warnings' class='toggle'>".lang(40).icon_chevron_down()."</a>";$I
.=" <span class='time'>(".format_time($Rk).")</span>";$I
.="</p>\n";if($Tm){$I
.=script("initToggles(qsl('p'));");$I
.="<div id='warnings' class='warnings hidden'>\n$Tm\n</div>\n";}return$I;}function
formatMessageQuery($G,$Ml,$Id=false){restart_session();$Se=&get_session("queries");if(!isset($Se[$_GET["db"]]))$Se[$_GET["db"]]=[];if(strlen($G)>1e6)$G=preg_replace('~[\x80-\xFF]+$~','',substr($G,0,1e6))."\n…";$Se[$_GET["db"]][]=[$G,time(),$Ml];$cl=support("sql");$Tm=!$Id?Driver::get()->warnings():null;$Ok="sql-".count($Se[$_GET["db"]]);$Um="warnings-".count($Se[$_GET["db"]]);$I=" ";if($Tm)$I
.="<a href='#$Um' class='toggle'>".lang(40).icon_chevron_down()."</a>, ";$lj=support("sql")?lang(41):lang(42);$I
.="<a href='#$Ok' class='toggle'>$lj".icon_chevron_down()."</a>";$I
.=" <span class='time'>".@date("H:i:s")."</span>\n";if($Tm)$I
.="<div id='$Um' class='warnings hidden'>\n$Tm</div>\n";$I
.="<div id='$Ok' class='hidden'>\n";$fl=DIALECT=="elastic"||DIALECT=="mongo"?"json":DIALECT;$I
.="<pre><code class='jush-$fl'>".truncate_utf8($G,1000)."</code></pre>\n";$I
.="<p class='links'>";if($cl)$I
.="<a href='".h(str_replace("db=".urlencode(DB),"db=".urlencode($_GET["db"]),ME).'sql=&history='.(count($Se[$_GET["db"]])-1))."'>".icon("edit").lang(39)."</a>";if($Ml)$I
.=" <span class='time'>($Ml)</span>";$I
.="</p>\n";$I
.="</div>\n";return$I;}function
formatSqlCommandQuery($G){if(preg_match('~^DELIMITER\s~i',$G))return"";return
truncate_utf8($G,1000);}function
getTableDescriptionFieldName($Q){return"";}function
fillForeignDescriptions(array$K,array$je){return$K;}function
formatSelectionValue($W,$w,$j,$mi){if($W===null)$Fl="<i>NULL</i>";elseif(!$j)$Fl=$W;elseif(preg_match("~char|binary|boolean~",$j["type"])&&!preg_match("~var~",$j["type"]))$Fl="<code>$W</code>";elseif(is_blob($j)&&!is_utf8($W))$Fl="<i>".lang(43,strlen($mi))."</i>";elseif($this->admin->detectJson($j["full_type"],$mi))$Fl="<code class='jush-json'>$W</code>";else$Fl=$W;if($w)$Fl="<a href='".h($w)."'".(is_web_url($w)?target_blank():"").">$Fl</a>";return$Fl;}function
formatFieldValue($X,array$j){return$X;}function
printTableStructure(array$k){echo"<div class='scrollable'>\n","<table class='nowrap'>\n","<thead><tr>","<th>",lang(44),"</th>","<td>",lang(45),"</td>","<td>",lang(46),"</td>";if(support("comment"))echo"<td>",lang(47),"</td>";echo"</tr></thead>\n";$Am=Driver::get()->getUserTypes();foreach($k
as$j){echo"<tr>","<th>",h($j["field"]),"</th>","<td>";$T=h($j["full_type"]);if(in_array($T,$Am))echo"<a href='".h(ME.'type='.urlencode($T))."'>$T</a>";else
echo$T;if($j["null"])echo" <i>NULL</i>";if($j["auto_increment"])echo" <i>".lang(48)."</i>";$h=h($j["default"]);if(isset($j["default"]))echo" <span title='".lang(49)."'>[<b>",$j["generated"]?"<code class='jush-".DIALECT."'>$h</code>":$h,"</b>]</span>";echo"</td>","<td>",h($j["collation"]),"</td>";if(support("comment"))echo"<td>",$this->admin->formatComment($j["comment"]),"</td>";echo"\n";}echo"</table>\n","</div>\n";}function
printTablePartitions(array$Ai){$Ak=isset($Ai["partition_names"]);echo"<p>","<code class='jush-".DIALECT."'>BY {$Ai["partition_by"]} ({$Ai["partition"]})</code>";if(!$Ak&&isset($Ai["partitions"]))echo" ".lang(50).": ".h($Ai["partitions"]);echo"</p>";if($Ak){echo"<table>\n","<thead><tr><th>".lang(51)."</th><td>".lang(52)."</td></tr></thead>\n";foreach($Ai["partition_names"]as$t=>$_){echo"<tr><th>";if(DIALECT=="pgsql")echo"<a href='",h(ME."table=".urlencode($_)),"'>";echo
h($_);if(DIALECT=="pgsql")echo"</a>";echo"</th><td>".h($Ai["partition_values"][$t])."\n";}echo"</table>\n";}}function
printRelatedTables(array$vl){echo"<ul class='links'>\n";foreach($vl
as$J){$w=preg_replace('~ns=[^&]*~',"ns=".urlencode($J["ns"]),ME);echo"<li><a href='",h($w."table=".urlencode($J["table"])),"'>",icon("structure");if($J["ns"]!=$_GET["ns"])echo"<b>".h($J["ns"])."</b>.";echo
h($J["table"]),"</a>";}echo"</ul>\n";}function
printTableIndexes(array$s,array$ll){$wc=first(Driver::get()->getIndexAlgorithms($ll));$yi=false;foreach($s
as$r){if(isset($r["partial"])?$r["partial"]:false){$yi=true;break;}}echo"<table>\n","<thead><tr>","<th>",lang(45),"</th>","<td>",lang(53)," (",lang(54),")</td>";if($yi)echo"<td>",lang(55),"</td>";echo"</tr></thead>\n";foreach($s
as$_=>$r){ksort($r["columns"]);$dj=[];foreach($r["columns"]as$t=>$W)$dj[]="<i>".h($W)."</i>".($r["lengths"][$t]?"(".h($r["lengths"][$t]).")":"").($r["descs"][$t]?" DESC":"");echo"<tr title='",h($_),"'>","<th>",h($r["type"]);if(isset($r['algorithm'])&&$r['algorithm']!=$wc)echo" (",h($r['algorithm']),")";echo"</th>","<td>",implode(", ",$dj),"</td>";if($yi){echo"<td>";if($r['partial'])echo"<code class='jush-",DIALECT,"'>WHERE ",h($r['partial']),"</code>";echo"</td>";}echo"</tr>\n";}echo"</table>\n";}function
printSelectionColumns(array$L,array$c){print_fieldset_start("select",lang(56),"columns",(bool)$L,true);$L[""]=[];$p=0;foreach($L
as$t=>$W){$W=isset($_GET["columns"][$t])?$_GET["columns"][$t]:[];$b=select_input("name='columns[$p][col]'",$c,isset($W["col"])?$W["col"]:null,$t!==""?"selectFieldChange":"selectAddRow");echo"<div ",($t!=""?"":"class='no-sort'"),">",icon("handle","handle jsonly");if(Driver::get()->getFunctions()||Driver::get()->getGrouping())echo
html_select("columns[$p][fun]",[-1=>""]+array_filter([lang(57)=>Driver::get()->getFunctions(),lang(58)=>Driver::get()->getGrouping()]),isset($W["fun"])?$W["fun"]:null),help_script_command("value && value.replace(/ |\$/, '(') + ')'",true),script("qsl('select').onchange = (event) => { ".($t!==""?"":" qsl('select, input:not(.remove)', event.target.parentNode).onchange();")." };",""),"($b)";else
echo$b;echo" <button class='button light remove jsonly' title='",lang(59),"'>",icon_solo("remove"),"</button>",script("qsl('#fieldset-select .remove').onclick = selectRemoveRow;",""),"</div>\n";$p++;}print_fieldset_end("select",true);}function
printSelectionSearch(array$Z,array$c,array$s){print_fieldset_start("search",lang(60),"search",(bool)$Z);foreach($s
as$p=>$r){if($r["type"]=="FULLTEXT"){echo"<div>(<i>".implode("</i>, <i>",array_map('AdminNeo\h',$r["columns"]))."</i>) AGAINST","<input type='text' class='input' name='fulltext[$p]' value='".h(isset($_GET["fulltext"][$p])?$_GET["fulltext"][$p]:null)."'>",script("qsl('input').oninput = selectFieldChange;","");if(DIALECT=='sql')echo
checkbox("boolean[$p]",1,isset($_GET["boolean"][$p]),"BOOL");echo"</div>\n";}}$mb="this.parentNode.firstChild.onchange();";foreach(array_merge((array)$_GET["where"],[[]])as$p=>$W){if(!$W||("$W[col]$W[val]"!=""&&in_array($W["op"],$this->getOperators())))echo"<div>",select_input(" name='where[$p][col]'",$c,$W["col"],($W?"selectFieldChange":"selectAddRow"),"(".lang(61).")"),html_select("where[$p][op]",$this->getOperators(),$W["op"],$mb),"<input type='text' class='input' name='where[$p][val]' value='".h($W["val"])."'>",script("mixin(qsl('input'), {oninput: function () { $mb }, onkeydown: selectSearchKeydown});","")," <button class='button light remove jsonly' title='".lang(59)."'>",icon_solo("remove"),"</button>",script('qsl("#fieldset-search .remove").onclick = selectRemoveRow;',""),"</div>\n";}print_fieldset_end("search");}function
printSelectionOrder(array$C,array$c,array$s){print_fieldset_start("sort",lang(62),"sort",(bool)$C,true);$_GET["order"][""]="";$p=0;foreach((array)$_GET["order"]as$t=>$W){if($t!=""&&$W=="")continue;echo"<div ",($t!=""?"":"class='no-sort'"),">",icon("handle","handle jsonly"),select_input("name='order[$p]'",$c,$W,$t!==""?"selectFieldChange":"selectAddRow")," ",checkbox("desc[$p]",1,isset($_GET["desc"][$t]),lang(63))," <button class='button light remove jsonly' title='",lang(59),"'>",icon_solo("remove"),"</button>",script('qsl("#fieldset-sort .remove").onclick = selectRemoveRow;',""),"</div>\n";$p++;}print_fieldset_end("sort",true);}function
printSelectionLimit($v){echo"<fieldset><legend>".lang(64)."</legend><div class='fieldset-content'>","<input type='number' name='limit' class='input size' value='$v'>",script("qsl('input').oninput = selectFieldChange;",""),"</div></fieldset>\n";}function
printSelectionLength($Gl){if($Gl!==null)echo"<fieldset><legend>".lang(65)."</legend><div class='fieldset-content'>","<input type='number' name='text_length' class='input size' value='".h($Gl)."'>","</div></fieldset>\n";}function
printSelectionAction(array$s){echo"<fieldset><legend>".lang(66)."</legend><div class='fieldset-content'>","<input type='submit' class='button' value='".lang(56)."'>"," <span id='noindex' title='".lang(67)."'></span>","<script".nonce().">\n";$c=new
stdClass();foreach($s
as$r){$lc=reset($r["columns"]);if($r["type"]!="FULLTEXT"&&$lc)$c->$lc=null;}echo"const indexColumns = ".json_encode($c,JSON_UNESCAPED_UNICODE|JSON_HEX_TAG).";\n","selectFieldChange.call(gid('form')['select']);\n","</script>\n","</div></fieldset>\n";}function
processSelectionColumns(array$c,array$s){$L=[];$_e=[];foreach((array)$_GET["columns"]as$t=>$W){if($W["fun"]=="count"||($W["col"]!=""&&(!$W["fun"]||in_array($W["fun"],Driver::get()->getFunctions())||in_array($W["fun"],Driver::get()->getGrouping())))){$L[$t]=apply_sql_function($W["fun"],($W["col"]!=""?idf_escape($W["col"]):"*"));if(!in_array($W["fun"],Driver::get()->getGrouping()))$_e[]=$L[$t];}}return[$L,$_e];}function
processSelectionSearch(array$k,array$s){$I=[];foreach($s
as$p=>$r){if($r["type"]=="FULLTEXT"&&isset($_GET["fulltext"])&&$_GET["fulltext"][$p]!="")$I[]="MATCH (".implode(", ",array_map('AdminNeo\idf_escape',$r["columns"])).") AGAINST (".q($_GET["fulltext"][$p]).(isset($_GET["boolean"][$p])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$Z){$_b=$Z["col"];$Qh=$Z["op"];$W=$Z["val"];if("$_b$W"!=""&&in_array($Qh,$this->getOperators())){$Sb=[];foreach(($_b!=""?[$_b=>$k[$_b]]:$k)as$_=>$j){$Yi="";$Rb=" $Qh";$Hh=DIALECT=="pgsql"&&$Qh=="="&&$j["type"]=="oid";if($Hh)$Rb
.=" ".$this->admin->processFieldInput($j,$W)."::regproc";elseif(preg_match('~IN$~',$Qh)){$gf=process_length($W);$Rb
.=" ".($gf!=""?$gf:"(NULL)");}elseif($Qh=="SQL")$Rb=" $W";elseif(preg_match('~^(I?LIKE) %%$~',$Qh,$y))$Rb=" $y[1] ".$this->admin->processFieldInput($j,"%$W%");elseif($Qh=="FIND_IN_SET"){$Yi="$Qh(".q($W).", ";$Rb=")";}elseif(!preg_match('~NULL$~',$Qh))$Rb
.=" ".$this->admin->processFieldInput($j,$W);if($_b!=""||(isset($j["privileges"]["where"])&&(preg_match('~^[-\d.'.(preg_match('~IN$~',$Qh)?',':'').']+$~',$W)||!preg_match('~'.number_type().'|bit~',$j["type"]))&&(!preg_match("~[\x80-\xFF]~",$W)||preg_match('~char|text|enum|set~',$j["type"]))&&(!preg_match('~date|timestamp~',$j["type"])||preg_match('~^\d+-\d+-\d+~',$W))&&(!preg_match('~^elastic~',DRIVER)||$j["type"]!="boolean"||preg_match('~true|false~',$W))&&(!preg_match('~^elastic~',DRIVER)||strpos($Qh,"regexp")===false||preg_match('~text|keyword~',$j["type"])))){if($Hh)$Sb[]=$Yi.idf_escape($_).$Rb;else$Sb[]=$Yi.Driver::get()->convertSearch(idf_escape($_),$Z,$j).$Rb;}}if(count($Sb)==1)$I[]=$Sb[0];elseif($Sb)$I[]="(".implode(" OR ",$Sb).")";else$I[]="1 = 0";}}return$I;}function
processSelectionOrder(array$k,array$s){$I=[];foreach((array)$_GET["order"]as$t=>$W){if($W!="")$I[]=(preg_match('~^((COUNT\(DISTINCT |[A-Z0-9_]+\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\)|COUNT\(\*\))$~',$W)?$W:idf_escape($W)).(isset($_GET["desc"][$t])?" DESC".(DIALECT=="pgsql"&&(isset($k[$W]["null"])?$k[$W]["null"]:null)?" NULLS LAST":""):"");}return$I;}function
processSelectionLength(){return
isset($_GET["text_length"])?$_GET["text_length"]:"100";}function
getFieldFunctions(array$j){$I=($j["null"]?"NULL/":"");$sm=isset($_GET["select"])||where($_GET);foreach([Driver::get()->getInsertFunctions(),Driver::get()->getEditFunctions()]as$t=>$ve){if(!$t||(!isset($_GET["call"])&&$sm)){foreach($ve
as$Ji=>$W){if(!$Ji||preg_match("~$Ji~",$j["type"]))$I
.="/$W";}}if($t&&$ve&&!preg_match('~enum|set|bool~',$j["type"])&&!is_blob($j))$I
.="/SQL";}if($j["auto_increment"]&&!$sm)$I=lang(48);return
explode("/",$I);}function
getFieldInput($Q,array$j,$Na,$X,$o){return"";}function
processFieldInput(array$j,$X,$o=""){if($o=="SQL")return$X;if(isset($j["full_type"]))$this->admin->detectJson($j["full_type"],$X,false);$_=$j["field"];$I=q($X);if(preg_match('~^(now|getdate|uuid)$~',$o))$I="$o()";elseif(preg_match('~^current_(date|timestamp)$~',$o))$I=$o;elseif(preg_match('~^([+-]|\|\|)$~',$o))$I=idf_escape($_)." $o $I";elseif(preg_match('~^[+-] interval$~',$o))$I=idf_escape($_)." $o ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+\$~i",$X)&&DIALECT!="pgsql"?$X:$I);elseif(preg_match('~^(addtime|subtime|concat)$~',$o))$I="$o(".idf_escape($_).", $I)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$o))$I="$o($I)";elseif($j["type"]=="boolean"&&DIALECT=="elastic")$I=$I=="0"?"false":"true";return
unconvert_field($j,$I);}function
getDumpOutputs(){$qi=['file'=>lang(68),'text'=>lang(69),];if(function_exists('gzencode'))$qi['gz']='gzip';return$qi;}function
getDumpFormats(){return(support("dump")?['sql'=>'SQL']:[])+['csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV'];}function
sendDumpHeaders($bf,$nh=false){$pi=$_POST["output"];$Fd=(str_contains($_POST["format"],"sql")?"sql":($nh?"tar":"csv"));if($pi=="gz"){header("Content-Type: application/x-gzip");ob_start(function($P){return
gzencode($P);},1e6);}elseif($Fd=="tar")header("Content-Type: application/x-tar");elseif($Fd=="sql"||$pi=="text")header("Content-Type: text/plain; charset=utf-8");else
header("Content-Type: text/csv; charset=utf-8");return$Fd;}function
dumpTable($Q,$Wk,$Mm=0){if($_POST["format"]!="sql"){echo"\xef\xbb\xbf";if($Wk)dump_csv(array_keys(fields($Q)));}else{if($Mm==2){$k=[];foreach(fields($Q)as$_=>$j)$k[]=idf_escape($_)." $j[full_type]";$gc="CREATE TABLE ".table($Q)." (".implode(", ",$k).")";}else$gc=create_sql($Q,$_POST["auto_increment"],$Wk);set_utf8mb4($gc);if($Wk&&$gc){if($Wk=="DROP+CREATE"||$Mm==1)echo"DROP ".($Mm==2?"VIEW":"TABLE")." IF EXISTS ".table($Q).";\n";if($Mm==1)$gc=remove_definer($gc);echo"$gc;\n\n";}}}function
dumpData($Q,$Wk,$G){if($Wk){$Mg=(DIALECT=="sqlite"?0:1048576);$k=[];$cf=false;if($_POST["format"]=="sql"){if($Wk=="TRUNCATE+INSERT")echo
truncate_sql($Q).";\n";$k=fields($Q);if(DIALECT=="mssql"){foreach($k
as$j){if($j["auto_increment"]){echo"SET IDENTITY_INSERT ".table($Q)." ON;\n";$cf=true;break;}}}}$H=Connection::get()->query($G,1);if($H){$vf="";$fb="";$Wf=[];$xe=[];$Zk="";$fc=0;while($J=($Q!=''?$H->fetchAssoc():$H->fetchRow())){if(!$Wf){$Y=[];foreach($J
as$W){$j=$H->fetchField();if(!empty($k[$j->name]['generated'])){$xe[$j->name]=true;continue;}$Wf[]=$j->name;$t=idf_escape($j->name);$Y[]="$t = VALUES($t)";}$Zk=($Wk=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Y):"").";\n";}if($_POST["format"]!="sql"){if($Wk=="table"){dump_csv($Wf);$Wk="INSERT";}dump_csv($J);}else{if(!$vf)$vf="INSERT INTO ".table($Q)." (".implode(", ",array_map('AdminNeo\idf_escape',$Wf)).") VALUES";foreach($J
as$t=>$W){if(isset($xe[$t])){unset($J[$t]);continue;}$j=$k[$t];$J[$t]=($W===null?"NULL":($W===false?0:unconvert_field($j,preg_match(number_type(),$j["type"])&&!preg_match('~\[~',$j["full_type"])&&is_numeric($W)?$W:(!is_blob($j)||is_utf8($W)?q($W):Driver::get()->quoteBinary($W)))));}$Qj=($Mg?"\n":" ")."(".implode(",\t",$J).")";if(!$fb)$fb=$vf.$Qj;elseif(DIALECT=="mssql"?$fc%1000!=0:strlen($fb)+4+strlen($Qj)+strlen($Zk)<$Mg)$fb
.=",$Qj";else{echo$fb.$Zk;$fb=$vf.$Qj;}}$fc++;}if($fb)echo$fb.$Zk;}elseif($_POST["format"]=="sql")echo"-- ".str_replace("\n"," ",Connection::get()->getError())."\n";if($cf)echo"SET IDENTITY_INSERT ".table($Q)." OFF;\n";}}function
getImportFilePath(){return"adminneo.sql";}function
printDatabaseMenu(){echo"<p class='links top-links'>\n";$Bh=isset($_GET["ns"])?$_GET["ns"]:null;if($Bh==""&&support("database"))echo'<a href="',h(ME),'database=">',icon("edit"),lang(70),"</a>\n";if($Bh!=""&&support("scheme"))echo"<a href='",h(ME),"scheme='>",icon("edit"),lang(71),"</a>\n";if($Bh!=="")echo'<a href="',h(ME),'schema=">',icon("schema"),lang(72),"</a>\n";echo"</p>\n";}function
printNavigation($hh){if($hh=="auth"){$pi="";foreach((array)$_SESSION["pwds"]as$Im=>$vk){foreach($vk
as$M=>$Bm){foreach($Bm
as$U=>$E){if($E!==null){$uc=$_SESSION["db"][$Im][$M][$U];foreach(($uc?array_keys($uc):[""])as$g){$sk=$this->admin->getServerName($M,false);$S=h(get_driver_name($Im,$M)).($U!=""||$sk!=""?" - ":"").h($U).($U!=""&&$sk!=""?"@":"").h($sk).($g!=""?h(" - $g"):"");$pi
.="<li><a href='".h(auth_url($Im,$M,$U,$g))."' class='primary' title='$S'>$S</a></li>\n";}}}}}if($pi)echo"<nav id='logins'><menu>\n$pi</menu></nav>\n";}else{$this->admin->printDatabaseSwitcher($hh);$va=[];if(DB==""||!$hh){if(support("sql")){$va[]="<a href='".h(ME)."sql='".bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".icon("command").lang(41)."</a>";$va[]="<a href='".h(ME)."import='".bold(isset($_GET["import"])).">".icon("import").lang(73)."</a>";}$va[]="<a href='".h(ME)."dump=".urlencode(isset($_GET["table"])?$_GET["table"]:$_GET["select"])."' id='dump'".bold(isset($_GET["dump"])).">".icon("export").lang(74)."</a>";}if(DB=="")$va[]='<a href="'.h(ME).'database="'.bold($_GET["database"]==="").">".icon("database-add").lang(75)."</a>\n";if(DB!=""&&$_GET["ns"]===""&&!$hh)$va[]='<a href="'.h(ME).'scheme="'.bold($_GET["scheme"]==="").">".icon("database-add").lang(76)."</a>\n";if(DB!=""&&$_GET["ns"]!==""&&!$hh)$va[]='<a href="'.h(ME).'create="'.bold($_GET["create"]==="").">".icon("table-add").lang(77)."</a>\n";if($va)echo"<p class='links'>".implode("\n",$va)."</p>";$vl=[];if($_GET["ns"]!==""&&!$hh&&DB!=""){Connection::get()->selectDatabase(DB);$vl=table_status('',true);}if($_GET["ns"]!==""&&!$hh&&DB!=""){if($vl){$this->admin->printTablesFilter();$this->admin->printTableList($vl);}else
echo"<div id='tables'><p>".lang(78)."</p></div>\n";}elseif($_GET["ns"]!==""&&DB!="")echo"<div id='tables'></div>\n";if(support("sql")||DIALECT=="elastic"||DIALECT=="mongo"){echo"<script".nonce().">\n";if(support("sql")&&$vl){$wg=[];foreach($vl
as$Q=>$T)$wg[]=js_escape_re($Q);$kl=support("table")&&!$this->config->isSelectionPreferred()?"table":"select";echo"window.jushLinks = { ".DIALECT.": {\n",js_escape_key(ME.$kl.'=$&'),': /\b(?<!\$)('.implode('|',$wg).')(?!\$)\b/g';$Pk=["sql","check","event","procedure","trigger","view","type","table","processlist"];if(support('routine')&&array_intersect_key($_GET,array_flip($Pk))){foreach(routines()as$J)echo",\n",js_escape_key(ME.'function='.urlencode($J["SPECIFIC_NAME"]).'&name=$&'),': /\b'.js_escape_re($J["ROUTINE_NAME"]).'(?=["`\]]?\()/g';}echo"\n}};\n";foreach(["bac","bra","sqlite_quo","mssql_bra"]as$W)echo"jushLinks.$W = jushLinks.".DIALECT.";\n";}if(DIALECT!="elastic"&&DIALECT!="mongo"&&$this->getConfig()->isSqlAutocompletionEnabled()&&(isset($_GET["sql"])||isset($_GET["trigger"])||isset($_GET["check"]))){$wl=array_fill_keys(array_keys($vl),[]);foreach(Driver::get()->getAllFields()as$Q=>$k){foreach($k
as$j)$wl[$Q][]=$j["field"];}echo"window.addEventListener('DOMContentLoaded', () => { autocompletion = jush.autocompleteSql('".idf_escape("")."', ".json_encode($wl,JSON_HEX_TAG)."); });\n";}echo"</script>\n";}echo
script("let autocompletion;\nwindow.addEventListener('DOMContentLoaded', () => { initSyntaxHighlighting('".js_escape(doc_version())."', '".js_escape(Connection::get()->getFlavor())."', autocompletion); });");}}function
printDatabaseSwitcher($hh){$f=$this->admin->getDatabases();if(!$f&&DIALECT!="sqlite")return;echo"<div class='db-selector'><form action=''>";hidden_fields_get();echo"<div>";if($f)echo"<select id='database-select' name='db' title='",lang(31),"'>".optionlist([""=>"(".lang(79).")"]+$f,DB)."</select>".script("mixin(gid('database-select'), {onmousedown: dbMouseDown, onchange: dbChange});");else
echo"<input id='database-select' class='input' name='db' value='".h(DB)."' title='",lang(31),"' autocapitalize='off'>\n";echo"<input type='submit' value='".lang(80)."' class='button ".($f?"hidden":"")."'>\n","</div>";if(support("scheme")&&$hh!="db"&&DB!=""&&Connection::get()->selectDatabase(DB)){echo"<div>","<select id='scheme-select' name='ns' title='",lang(81),"'>".optionlist([""=>"(".lang(82).")"]+$this->admin->getSchemas(),$_GET["ns"])."</select>".script("mixin(gid('scheme-select'), {onmousedown: dbMouseDown, onchange: dbChange});"),"</div>";if($_GET["ns"]!="")set_schema($_GET["ns"]);}foreach(["import","sql","schema","dump","privileges"]as$W){if(isset($_GET[$W])){echo
input_hidden($W);break;}}echo"</form></div>\n";}function
printTableList(array$vl){$ad=$this->settings->isNavigationDual()||$this->settings->isNavigationHover();$Vg=($ad?"class='dual".($this->settings->isNavigationHover()?" hover":"")."'":($this->settings->isNavigationReversed()?"class='reversed'":""));echo"<nav id='tables'><div class='scroll-marker'></div><menu $Vg>";foreach($vl
as$Q=>$O){$Q="$Q";$_=$this->admin->getTableName($O);if($_==""||(isset($O["Partition"])?$O["Partition"]:false))continue;echo"<li>";$wa=in_array($Q,[$_GET["table"],$_GET["select"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"],$_GET["check"],$_GET["view"]]);$xb="primary".(is_view($O)?" view":"");$dl=support("table")||support("indexes");$dk=h(ME)."select=".urlencode($Q);$ml=h(ME)."table=".urlencode($Q);if($this->settings->isSelectionPreferred()){if($this->settings->isNavigationReversed()&&$dl)echo" <a href='$ml' title='",lang(35),"' class='secondary'>",icon("structure"),"</a>";echo"<a href='$dk'",bold($wa,$xb)," data-primary='true' title='$_'>$_</a>";if($ad&&$dl)echo" <a href='$ml' title='",lang(35),"' class='secondary'>",icon_solo("structure"),"</a>";}else{if($this->settings->isNavigationReversed())echo" <a href='$dk' title='",lang(34),"' class='secondary'>",icon("data"),"</a>";if($dl)echo"<a href='$ml'",bold($wa,$xb)," data-primary='true' title='$_'>$_</a>";else
echo"<span data-primary='true'",bold($wa,$xb),">$_</span>";if($ad)echo" <a href='$dk' title='",lang(34),"' class='secondary'>",icon_solo("data"),"</a>";}echo"</li>\n";}echo"</menu></nav>\n",script("initTablesList(".json_encode($this->admin->getDatabase(),JSON_HEX_TAG).");");}function
getSettingsRows($Be){$N=parent::getSettingsRows($Be);if($Be==1){$B=[""=>lang(11),Config::$NavigationSimple=>lang(83),Config::$NavigationDual=>lang(84),Config::$NavigationHover=>lang(85),Config::$NavigationReversed=>lang(86)];$h=$B[$this->config->getNavigationMode()];$B[""].=" ($h)";$N["navigationMode"]="<tr><th>".lang(87)."</th>"."<td>".html_radios("navigationMode",$B,($ra=$this->settings->getParameter("navigationMode"))!==null?$ra:"")."<span class='input-hint'>".lang(88)."</span>"."</td></tr>\n";$B=[""=>lang(11),0=>lang(35),1=>lang(34),];$h=$B[$this->config->isSelectionPreferred()?1:0];$B[""].=" ($h)";$N["preferSelection"]="<tr><th id='label-links'>".lang(89)."</th>"."<td>".html_select("preferSelection",$B,($ra=$this->settings->getParameter("preferSelection"))!==null?$ra:"","","label-links",true)."<span class='input-hint'>".lang(90)."</span>"."</td></tr>\n";}return$N;}function
getForeignColumnInfo(array$je,$b){return
null;}}class
TmpFile{private$handler;private$size;function
__construct(){$this->handler=tmpfile();}function
getSize(){return$this->size;}function
write($ac){if(!$this->handler)return;$this->size+=strlen($ac);fwrite($this->handler,$ac);}function
send(){if(!$this->handler)return;fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}function
print_select_result(Result$H,$d=null,array$gi=[],$v=0){$wg=[];$s=[];$c=[];$bb=[];$im=[];$I=[];for($p=0;(!$v||$p<$v)&&($J=$H->fetchRow());$p++){if(!$p){echo"<div class='scrollable'>\n","<table class='nowrap'>\n","<thead><tr>";for($Of=0;$Of<count($J);$Of++){$j=$H->fetchField();if(!$j){echo"<th></th>";continue;}$_=$j->name;$fi=isset($j->orgtable)?$j->orgtable:"";$ei=isset($j->orgname)?$j->orgname:$_;if(isset($j->table))$I[$j->table]=$fi;if($gi&&DIALECT=="sql")$wg[$Of]=($_=="table"?"table=":($_=="possible_keys"?"indexes=":null));elseif($fi!=""){if(!isset($s[$fi])){$s[$fi]=[];foreach(indexes($fi,$d)as$r){if($r["type"]=="PRIMARY"){$s[$fi]=array_flip($r["columns"]);break;}}$c[$fi]=$s[$fi];}if(isset($c[$fi][$ei])){unset($c[$fi][$ei]);$s[$fi][$ei]=$Of;$wg[$Of]=$fi;}}if($j->charsetnr==63)$bb[$Of]=true;$im[$Of]=$j->type;$S=trim(($fi!=""?"$fi.$ei":($j->name!=$ei?$ei:""))." ".Driver::get()->getTypeName($j));echo"<th".($S!=""?" title='".h($S)."'":"").">".h($_).($gi?'':"");}echo"</thead>\n";}echo"<tr>";foreach($J
as$t=>$W){$w="";if(isset($wg[$t])&&!$c[$wg[$t]]){if($gi&&DIALECT=="sql"){$Q=$J[array_search("table=",$wg)];$w=ME.$wg[$t].urlencode($gi[$Q]!=""?$gi[$Q]:$Q);}else{$w=ME."edit=".urlencode($wg[$t]);foreach($s[$wg[$t]]as$_b=>$Of)$w
.="&where".urlencode("[".bracket_escape($_b)."]")."=".urlencode($J[$Of]);}}$T=($bb[$t]?'blob':($im[$t]==254?'char':''));$j=['full_type'=>$T,'type'=>$T,];$W=select_value($W,$w,$j,null);$xb=$im[$t]<=9||$im[$t]==246?"class='number'":"";echo"<td $xb>$W</td>";}}if($p)echo"</table>\n</div>";else
echo"<p class='message'>".lang(91);echo"\n";return$I;}function
referencable_primary($ik){$I=[];foreach(table_status('',true)as$ol=>$Q){if($ol!=$ik&&fk_support($Q)){foreach(fields($ol)as$j){if($j["primary"]){if($I[$ol]){unset($I[$ol]);break;}$I[$ol]=$j;}}}}return$I;}function
textarea($_,$X,$K=10,$Gb=80){echo"<textarea name='".h($_)."' rows='$K' cols='$Gb' class='sqlarea jush-".DIALECT."' spellcheck='false' wrap='off'>";if(is_array($X)){foreach($X
as$W)echo
h($W[0])."\n\n\n";}else
echo
h($X);echo"</textarea>";}function
select_input($Na,$B,$X="",$Oh="",$Mi=""){if($B&&$X!=""&&!isset($B[$X]))$B=[$X=>$X]+$B;$_l=($B?"select":"input");return"<$_l $Na".($B?"><option value=''>$Mi".optionlist($B,$X,true)."</select>":" size='10' value='".h($X)."' placeholder='$Mi'>").($Oh?script("qsl('$_l').onchange = $Oh;",""):"");}function
json_row($t,$W=null){static$Zd=true;if($Zd)echo"{";if($t!=""){echo($Zd?"":",")."\n\t\"".addcslashes($t,"\r\n\t\"\\/").'": '.($W!==null?'"'.addcslashes($W,"\r\n\t\"\\/").'"':'null');$Zd=false;}else{echo"\n}\n";$Zd=true;}}function
edit_type($t,$j,$Cb,$ke=[],$Hd=[]){$T=isset($j["type"])?$j["type"]:null;echo'<td><select name="',h($t),'[type]" class="type" aria-labelledby="label-type">';$Uc=Driver::get()->getTypes();if($T&&!isset($Uc[$T])&&!isset($ke[$T])&&!in_array($T,$Hd))$Hd[]=$T;$Vk=Driver::get()->getStructuredTypes();if($ke)$Vk[lang(92)]=$ke;echo
optionlist(array_merge($Hd,$Vk),$T),'</select><td><input name="',h($t),'[length]" value="',h(isset($j["length"])?$j["length"]:null),'" size="3"',(!(isset($j["length"])?$j["length"]:null)&&preg_match('~var(char|binary)$~',$T)?" class='input required'":" class='input'"),' aria-labelledby="label-length"><td class="options">',($Cb?"<select name='".h($t)."[collation]'".option_types($T,'(char|text|enum|set)$').'><option value="">('.lang(93).')'.optionlist($Cb,isset($j["collation"])?$j["collation"]:null).'</select>':''),(Driver::get()->getUnsigned()?"<select name='".h($t)."[unsigned]'".option_types($T,'^$|'.number_type()).'><option>'.optionlist(Driver::get()->getUnsigned(),isset($j["unsigned"])?$j["unsigned"]:null).'</select>':''),(isset($j['on_update'])?"<select name='".h($t)."[on_update]'".option_types($T,'timestamp|datetime').'>'.optionlist([""=>"(".lang(94).")","CURRENT_TIMESTAMP"],(preg_match('~^CURRENT_TIMESTAMP~i',$j["on_update"])?"CURRENT_TIMESTAMP":$j["on_update"])).'</select>':''),($ke?"<select name='".h($t)."[on_delete]'".option_types($T,'`')."><option value=''>(".lang(95).")".optionlist(Driver::get()->getOnActions(),isset($j["on_delete"])?$j["on_delete"]:null)."</select> ":" ");}function
option_types($T,$im){return" data-types='".h($im)."'".(preg_match("~$im~",$T)?"":" class='hidden'");}function
process_length($u){$rd=Driver::$EnumLengthPattern;return(preg_match("~^\\s*\\(?\\s*$rd(?:\\s*,\\s*$rd)*+\\s*\\)?\\s*\$~",$u)&&preg_match_all("~$rd~",$u,$z)?"(".implode(",",$z[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$u)));}function
process_type($j,$Ab="COLLATE"){return" $j[type]".process_length($j["length"]).(preg_match(number_type(),$j["type"])&&in_array($j["unsigned"],Driver::get()->getUnsigned())?" $j[unsigned]":"").(preg_match('~char|text|enum|set~',$j["type"])&&$j["collation"]?" $Ab ".(DIALECT=="mssql"?$j["collation"]:q($j["collation"])):"");}function
process_field($j,$hm){if($j["on_update"])$j["on_update"]=preg_replace('~current_timestamp(\(\))?~i',"CURRENT_TIMESTAMP",$j["on_update"]);return[idf_escape(trim($j["field"])),process_type($hm),($j["null"]?" NULL":" NOT NULL"),default_value($j),(preg_match('~timestamp|datetime~',$j["type"])&&$j["on_update"]?" ON UPDATE ".$j["on_update"]:""),(support("comment")&&$j["comment"]!=""?" COMMENT ".q(normalize_newlines($j["comment"])):""),($j["auto_increment"]?auto_increment():null),];}function
normalize_newlines($X){return
str_replace("\r","",(string)$X);}function
default_value($j){if($j["default"]===null)return"";$h=normalize_newlines($j["default"]);$we=$j["generated"];if(in_array($we,Driver::get()->getGenerated())){if(DIALECT=="mssql")return" AS ($h)".($we=="VIRTUAL"?"":" $we");else
return" GENERATED ALWAYS AS ($h) $we";}if(stripos($h,"GENERATED ")===0)return" $h";if(preg_match('~char|binary|text|json|enum|set~',$j["type"])||preg_match('~^(?![a-z])~i',$h)){if(DIALECT=="sql"&&preg_match('~text|json~',$j["type"]))return" DEFAULT (".q($h).")";else
return" DEFAULT ".q($h);}else{$h=str_ireplace("current_timestamp()","CURRENT_TIMESTAMP",$h);return" DEFAULT ".(DIALECT=="sqlite"?"($h)":$h);}}function
type_class($T){foreach(['char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',]as$xb=>$Ji){if(preg_match("~$xb|$Ji~",$T))return"class='$xb'";}return"";}function
edit_fields(array$k,array$Cb,$T="TABLE",$ke=[]){$k=array_values($k);$Ob=$_POST?$_POST["comments"]:Admin::get()->getSettings()->getParameter("commentsOpened");$Mb=$Ob?"":"class='hidden'";echo"<thead><tr>\n";if(support("move_col"))echo"<th class='jsonly'></th>";if($T=="PROCEDURE")echo"<td></td>";echo"<th id='label-name'>",($T=="TABLE"?lang(96):lang(97)),"</th>\n","<td id='label-type'>",lang(45),"<textarea id='enum-edit' rows='4' cols='12' wrap='off' hidden></textarea>",script("gid('enum-edit').onblur = onFieldLengthBlur;"),"</td>\n","<td id='label-length'>",lang(98),"</td>\n","<td>",lang(99),"</td>\n";if($T=="TABLE")echo"<td id='label-null'>NULL</td>\n","<td><input type='radio' name='auto_increment_col' value=''><abbr id='label-ai' title='",lang(48),"'>AI</abbr>",doc_link(['pgsql'=>"datatype-numeric.html#DATATYPE-SERIAL",]),"</td>\n","<td id='label-default'>",lang(49),"</td>\n",support("comment")?"<td id='label-comment' $Mb>".lang(47)."</td>\n":"";echo"<td>","<button name='add[",(support("move_col")?0:count($k)),"]' value='1' title='",lang(100),"' class='button light'>",icon_solo("add"),"</button>",(support("move_col")?"":script("qsl('button').onclick = onAddLastFieldRowClick;")),script("row_count = ".count($k).";"),"</td>\n","</tr></thead>\n";$xb=support("move_col")?"class='sortable'":"";echo"<tbody $xb>\n";foreach($k
as$p=>$j){$p++;$hi=$j[($_POST?"orig":"field")];$Kc=(isset($_POST["add"][$p-1])||(isset($j["field"])&&!(isset($_POST["drop_col"][$p])?$_POST["drop_col"][$p]:null)))&&(support("drop_col")||$hi=="");echo"<tr",($Kc?"":" hidden"),">\n";if(support("move_col"))echo"<th class='handle jsonly'>",icon_solo("handle"),"</td>";if($T=="PROCEDURE")echo"<td>",html_select("fields[$p][inout]",Driver::get()->getInOut(),$j["inout"]),"</td>\n";echo"<th>";if($Kc)echo"<input class='input' name='fields[$p][field]' value='",h($j["field"]),"' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name' ".(isset($_POST["add"][$p-1])?"autofocus":"").">";echo
input_hidden("fields[$p][orig]",$hi);edit_type("fields[$p]",$j,$Cb,$ke);echo"</th>\n";if($T=="TABLE"){echo"<td>",checkbox("fields[$p][null]",1,$j["null"],"","","block","label-null"),"</td>\n";$sb=$j["auto_increment"]?"checked":"";echo"<td><label class='block'><input type='radio' name='auto_increment_col' value='$p' $sb aria-labelledby='label-ai'></label></td>\n","<td class='default-value'>";if(Driver::get()->getGenerated())echo
html_select("fields[$p][generated]",array_merge(["","DEFAULT"],Driver::get()->getGenerated()),$j["generated"]);else
echo
checkbox("fields[$p][generated]",1,$j["generated"],"","","","label-default");$Na="name='fields[$p][default]' aria-labelledby='label-default'";$X=h($j["default"]);if(str_contains($X,"\n")){if($X[0]=="\n")$X="\n$X";echo"<textarea $Na rows='3' cols='30' style='vertical-align: bottom;'>$X</textarea>";}else
echo"<input class='input' $Na value='$X'>";echo"</td>\n";if(support("comment")){$Lg=Connection::get()->isMinVersion("5.5")?1024:255;$Na="name='fields[$p][comment]' data-maxlength='$Lg' aria-labelledby='label-comment'";$X=h($j["comment"]);echo"<td $Mb>";if(str_contains($X,"\n")){if($X[0]=="\n")$X="\n$X";echo"<textarea $Na rows='3' cols='30' style='vertical-align: bottom;'>$X</textarea>";}else
echo"<input class='input' $Na value='$X'>";echo"</td>\n";}}echo"<td>";if(support("move_col"))echo"<button name='add[$p]' value='1' title='".lang(100)."' class='button light'>",icon_solo("add"),"</button>","<button name='up[$p]' value='1' title='".lang(101)."' class='button light hidden'>",icon_solo("arrow-up"),"</button>","<button name='down[$p]' value='1' title='".lang(102)."' class='button light hidden'>",icon_solo("arrow-down"),"</button>";if($hi==""||support("drop_col"))echo"<button name='drop_col[$p]' value='1' title='".lang(59)."' class='button light'>",icon_solo("remove"),"</button>";echo"</td>\n</tr>\n";}echo"</tbody>";}function
process_fields(&$k){$Fh=0;if($_POST["up"]){$gg=0;foreach($k
as$t=>$j){if(key($_POST["up"])==$t){unset($k[$t]);array_splice($k,$gg,0,[$j]);break;}if(isset($j["field"]))$gg=$Fh;$Fh++;}}elseif($_POST["down"]){$pe=false;foreach($k
as$t=>$j){if(isset($j["field"])&&$pe){unset($k[key($_POST["down"])]);array_splice($k,$Fh,0,[$pe]);break;}if(key($_POST["down"])==$t)$pe=$j;$Fh++;}}elseif($_POST["add"]){$k=array_values($k);array_splice($k,key($_POST["add"]),0,[[]]);}elseif(!$_POST["drop_col"])return
false;return
true;}function
normalize_enum($y){$W=$y[0];return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($W[0].$W[0],$W[0],substr($W,1,-1))),'\\'))."'";}function
grant($ze,array$fj,$c,$Mh,$_m){if(!$fj)return
true;if($fj==["ALL PRIVILEGES","GRANT OPTION"]){if($ze)return(bool)queries("GRANT ALL PRIVILEGES ON $Mh TO $_m WITH GRANT OPTION");else
return
queries("REVOKE ALL PRIVILEGES ON $Mh FROM $_m")&&queries("REVOKE GRANT OPTION ON $Mh FROM $_m");}if($fj==["GRANT OPTION","PROXY"]){if($ze)return(bool)queries("GRANT PROXY ON $Mh TO $_m WITH GRANT OPTION");else
return(bool)queries("REVOKE PROXY ON $Mh FROM $_m");}return(bool)queries(($ze?"GRANT ":"REVOKE ").preg_replace('~(GRANT OPTION)\([^)]*\)~','$1',implode("$c, ",$fj).$c)." ON $Mh ".($ze?"TO ":"FROM ").$_m);}function
drop_create($Wc,$gc,$Xc,$El,$Yc,$x,$Zg,$Xg,$Yg,$Lh,$yh){if($_POST["drop"])query_redirect($Wc,$x,$Zg);elseif($Lh=="")query_redirect($gc,$x,$Yg);elseif($Lh!=$yh){$ic=queries($gc);queries_redirect($x,$Xg,$ic&&queries($Wc));if($ic)queries($Xc);}else
queries_redirect($x,$Xg,queries($El)&&queries($Yc)&&queries($Wc)&&queries($gc));}function
create_trigger($Mh,array$dm){$Ol=" $dm[Timing] $dm[Event]".(preg_match('~ OF~',$dm["Event"])?" $dm[Of]":"");return"CREATE TRIGGER ".idf_escape($dm["Trigger"]).(DIALECT=="mssql"?$Mh.$Ol:$Ol.$Mh).rtrim(" $dm[Type]\n$dm[Statement]",";").";";}function
create_routine($Mj,$J){$yk=[];$k=(array)$J["fields"];ksort($k);$hf=implode("|",Driver::get()->getInOut());foreach($k
as$j){if($j["field"]!="")$yk[]=(preg_match("~^($hf)\$~",$j["inout"])?"$j[inout] ":"").idf_escape($j["field"]).process_type($j,"CHARACTER SET");}$_c=rtrim($J["definition"],";");return"CREATE $Mj ".idf_escape(trim($J["name"]))." (".implode(", ",$yk).")".($Mj=="FUNCTION"?" RETURNS".process_type($J["returns"],"CHARACTER SET"):"").($J["language"]?" LANGUAGE $J[language]":"").(DIALECT=="pgsql"?" AS ".q($_c):"\n$_c;");}function
remove_definer($G){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\1)',logged_user()).'`~','\1',$G);}function
format_foreign_key($n){$Nh=implode("|",Driver::get()->getOnActions());$g=$n["db"];$Bh=$n["ns"];return" FOREIGN KEY (".implode(", ",array_map('AdminNeo\idf_escape',$n["source"])).") REFERENCES ".($g!=""&&$g!=$_GET["db"]?idf_escape($g).".":"").($Bh!=""&&$Bh!=$_GET["ns"]?idf_escape($Bh).".":"").idf_escape($n["table"])." (".implode(", ",array_map('AdminNeo\idf_escape',$n["target"])).")".(preg_match("~^($Nh)\$~",$n["on_delete"])?" ON DELETE $n[on_delete]":"").(preg_match("~^($Nh)\$~",$n["on_update"])?" ON UPDATE $n[on_update]":"").(isset($n["deferrable"])?" $n[deferrable]":"");}function
tar_file($m,TmpFile$Sl){$Ne=pack("a100a8a8a8a12a12",$m,644,0,0,decoct($Sl->getSize()),decoct(time()));$ub=8*32;for($p=0;$p<strlen($Ne);$p++)$ub+=ord($Ne[$p]);$Ne
.=sprintf("%06o",$ub)."\0 ";echo$Ne,str_repeat("\0",512-strlen($Ne));$Sl->send();echo
str_repeat("\0",511-($Sl->getSize()+511)%512);}function
doc_link(array$Ii,$Fl="<sup>?</sup>"){if(!(isset($Ii[DIALECT])?$Ii[DIALECT]:null))return"";$Jm=doc_version();$vm=['sql'=>"https://dev.mysql.com/doc/refman/$Jm/en/",'sqlite'=>"https://www.sqlite.org/",'pgsql'=>"https://www.postgresql.org/docs/".(Connection::get()->isCockroachDB()?"current":$Jm)."/",'mssql'=>"https://learn.microsoft.com/en-us/sql/",'oracle'=>"https://www.oracle.com/pls/topic/lookup?ctx=db".str_replace(".","",$Jm)."&id=",'elastic'=>"https://www.elastic.co/guide/en/elasticsearch/reference/$Jm/",];if(Connection::get()->isMariaDB()){$vm['sql']="https://mariadb.com/docs/server/";$Ii['sql']=isset($Ii['mariadb'])?$Ii['mariadb']:str_replace(".html","",$Ii['sql']);}return"<a href='".h($vm[DIALECT].$Ii[DIALECT].(DIALECT=='mssql'?"?view=sql-server-ver$Jm":""))."'".target_blank().">$Fl</a>";}function
doc_version(){return
preg_replace('~^(\d\.?\d).*~s','\1',Connection::get()->getVersion());}function
db_size($g){if(!Connection::get()->selectDatabase($g))return"?";$I=0;foreach(table_status()as$R)$I+=$R["Data_length"]+$R["Index_length"];return
format_number($I);}function
set_utf8mb4($gc){static$yk=false;if(!$yk&&preg_match('~\butf8mb4~i',$gc)){$yk=true;echo"SET NAMES ".charset(Connection::get()).";\n\n";}}error_reporting(E_ALL&~E_DEPRECATED);set_error_handler(function($td,$i){return(bool)preg_match('~^Undefined (array key|offset|index)~',$i);},E_WARNING|E_NOTICE);;$Wd=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Wd||ini_get("filter.default_flags")){foreach(['_GET','_POST','_COOKIE','_SERVER']as$W){$pm=filter_input_array(constant("INPUT$W"),FILTER_UNSAFE_RAW);if($pm)$$W=$pm;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");class
Server{private$params;private$key;function
__construct(array$ui,$t=null){$this->params=$ui;$this->key=$t;}function
getKey(){return
isset($this->key)?$this->key:substr(md5($this->getDriver().$this->getServer()),0,8);}function
getDriver(){return$this->params["driver"];}function
getServer(){return
isset($this->params["server"])?$this->params["server"]:"";}function
getDatabase(){return
isset($this->params["database"])?$this->params["database"]:"";}function
getName(){return
isset($this->params["name"])?$this->params["name"]:(isset($this->params["server"])?$this->params["server"]:"");}function
getUsername(){return
isset($this->params["username"])?$this->params["username"]:"";}function
getPassword(){return
isset($this->params["password"])?$this->params["password"]:"";}function
hasCredentials(){return$this->getUsername()!=""||$this->getPassword()!="";}function
getConfigParams(){$ui=isset($this->params["config"])?$this->params["config"]:[];$ye=["servers"];foreach($ye
as$ti){if(isset($ui[$ti]))unset($ui[$ti]);}return$ui;}}class
Config{static$NavigationSimple="simple";static$NavigationDual="dual";static$NavigationHover="hover";static$NavigationReversed="reversed";private$params;private$servers=[];function
__construct(array$ui){$this->params=$ui;if(isset($this->params["servers"])){foreach($this->params["servers"]as$t=>$M){$qk=new
Server($M,is_string($t)?$t:null);$this->params["servers"][$t]=$qk;$this->servers[$qk->getKey()]=$qk;}}}function
getTheme(){return
isset($this->params["theme"])?$this->params["theme"]:"default";}function
getColorVariant(){return
isset($this->params["colorVariant"])?$this->params["colorVariant"]:"blue";}function
getCssUrls(){return$this->parseList(isset($this->params["cssUrls"])?$this->params["cssUrls"]:[]);}function
getJsUrls(){return$this->parseList(isset($this->params["jsUrls"])?$this->params["jsUrls"]:[]);}function
getNavigationMode(){return
isset($this->params["navigationMode"])?$this->params["navigationMode"]:self::$NavigationSimple;}function
isNavigationSimple(){return$this->getNavigationMode()==self::$NavigationSimple;}function
isNavigationDual(){return$this->getNavigationMode()==self::$NavigationDual;}function
isNavigationReversed(){return$this->getNavigationMode()==self::$NavigationReversed;}function
isSelectionPreferred(){return
isset($this->params["preferSelection"])?$this->params["preferSelection"]:false;}function
isJsonValuesDetection(){return
isset($this->params["jsonValuesDetection"])?$this->params["jsonValuesDetection"]:false;}function
isJsonValuesAutoFormat(){return
isset($this->params["jsonValuesAutoFormat"])?$this->params["jsonValuesAutoFormat"]:false;}function
isRelationLinks(){return
isset($this->params["relationLinks"])?$this->params["relationLinks"]:false;}function
getRecordsPerPage(){return(int)(isset($this->params["recordsPerPage"])?$this->params["recordsPerPage"]:50);}function
getEnumAsSelectThreshold(){if(array_key_exists("enumAsSelectThreshold",$this->params))return$this->params["enumAsSelectThreshold"]!==null?(int)$this->params["enumAsSelectThreshold"]:null;else
return
5;}function
isVersionVerificationEnabled(){return
isset($this->params["versionVerification"])?$this->params["versionVerification"]:true;}function
isSqlAutocompletionEnabled(){return
isset($this->params["sqlAutocompletion"])?$this->params["sqlAutocompletion"]:true;}function
getHiddenDatabases(){return$this->parseList(isset($this->params["hiddenDatabases"])?$this->params["hiddenDatabases"]:[]);}function
getHiddenSchemas(){return$this->parseList(isset($this->params["hiddenSchemas"])?$this->params["hiddenSchemas"]:[]);}function
getVisibleCollations(){return$this->parseList(isset($this->params["visibleCollations"])?$this->params["visibleCollations"]:[]);}function
getDefaultDriver(array$Vc){$Tc=isset($this->params["defaultDriver"])?$this->params["defaultDriver"]:null;return$Tc&&isset($Vc[$Tc])?$Tc:key($Vc);}function
getDefaultServer(){$M=isset($this->params["defaultServer"])?$this->params["defaultServer"]:null;if($M===null)return
null;$qk=isset($this->params["servers"][$M])?$this->params["servers"][$M]:null;if($qk)return$qk->getKey();return$M;}function
getDefaultDatabase(){return
isset($this->params["defaultDatabase"])?$this->params["defaultDatabase"]:null;}function
getDefaultPasswordHash(){return
isset($this->params["defaultPasswordHash"])?$this->params["defaultPasswordHash"]:null;}function
getSslKey(){return
isset($this->params["sslKey"])?$this->params["sslKey"]:null;}function
getSslCertificate(){return
isset($this->params["sslCertificate"])?$this->params["sslCertificate"]:null;}function
getSslCaCertificate(){return
isset($this->params["sslCaCertificate"])?$this->params["sslCaCertificate"]:null;}function
getSslTrustServerCertificate(){return
isset($this->params["sslTrustServerCertificate"])?$this->params["sslTrustServerCertificate"]:null;}function
getSslEncrypt(){return
isset($this->params["sslEncrypt"])?$this->params["sslEncrypt"]:null;}function
getSslMode(){return
isset($this->params["sslMode"])?$this->params["sslMode"]:null;}function
hasServers(){return
isset($this->params["servers"]);}function
getServerPairs(array$Vc){$Dk=null;foreach($this->servers
as$M){if(!isset($Vc[$M->getDriver()]))continue;if(!$Dk)$Dk=$M->getDriver();elseif($M->getDriver()!=$Dk){$Dk=null;break;}}$rk=[];foreach($this->servers
as$t=>$M){if(!isset($Vc[$M->getDriver()]))continue;$pk=$M->getName();if($Dk&&$pk)$rk[$t]=$pk;else$rk[$t]=$Vc[$M->getDriver()].($pk!=""?" - $pk":"");}return$rk;}function
getServer($ok){return
isset($this->servers[$ok])?$this->servers[$ok]:null;}function
applyServer($M){$M=$this->getServer($M);if(!$M)return;$this->params=array_merge($this->params,$M->getConfigParams());}private
function
parseList($yg){if(is_array($yg))return$yg;return
preg_split('~\s*,\s*~',(string)$yg);}}class
Settings{private
static$CookieName="neo_settings";static$ColorSchemeLight="light";static$ColorSchemeDark="dark";static$NavigationWidthMin=10;static$NavigationWidthMax=30;private$config;private$params=[];function
__construct(Config$Tb){$this->config=$Tb;if(isset($_COOKIE[self::$CookieName])){parse_str($_COOKIE[self::$CookieName],$this->params);$this->save();}if(isset($_COOKIE["neo_lang"])){$this->updateParameter("lang",$_COOKIE["neo_lang"]);unset($_COOKIE["neo_lang"]);cookie("neo_lang","",-3600);}}static
function
readParameter($t){parse_str(isset($_COOKIE[self::$CookieName])?$_COOKIE[self::$CookieName]:"",$ui);return
isset($ui[$t])?$ui[$t]:null;}function
getParameter($t,$h=null){return
isset($this->params[$t])?$this->params[$t]:$h;}function
updateParameter($t,$X){$this->updateParameters([$t=>$X]);}function
updateParameters(array$ui){$this->params=array_filter(array_merge($this->params,$ui),function($X){return$X!==null;});$this->save();}private
function
save(){cookie(self::$CookieName,http_build_query($this->params),7776000);}function
getTheme(){return($ra=$this->getParameter("theme"))!==null?$ra:$this->config->getTheme();}function
getColorScheme(){return$this->getParameter("colorScheme");}function
getNavigationMode(){return($ra=$this->getParameter("navigationMode"))!==null?$ra:$this->config->getNavigationMode();}function
isNavigationSimple(){return$this->getNavigationMode()==Config::$NavigationSimple;}function
isNavigationDual(){return$this->getNavigationMode()==Config::$NavigationDual;}function
isNavigationHover(){return$this->getNavigationMode()==Config::$NavigationHover;}function
isNavigationReversed(){return$this->getNavigationMode()==Config::$NavigationReversed;}function
getNavigationWidth(){$an=$this->getParameter("navigationWidth");if($an===null)return
null;return
min(max((float)$an,self::$NavigationWidthMin),self::$NavigationWidthMax);}function
isSelectionPreferred(){return($ra=$this->getParameter("preferSelection"))!==null?$ra:$this->config->isSelectionPreferred();}function
isRelationLinks(){return
isset($this->params["relationLinks"])?$this->params["relationLinks"]:$this->config->isRelationLinks();}function
getRecordsPerPage(){return($ra=$this->getParameter("recordsPerPage"))!==null?$ra:$this->config->getRecordsPerPage();}function
getEnumAsSelectThreshold(){$X=$this->getParameter("enumAsSelectThreshold");if($X<0)return
null;return$X!==null?(int)$X:$this->config->getEnumAsSelectThreshold();}}class
Hash{static
function
hkdf($u,$t,$qf="",$Rj=""){if(extension_loaded("hash")&&PHP_VERSION_ID>=70120)return
hash_hkdf("sha1",$t,$u,$qf,$Rj);if($Rj=="")$Rj=str_repeat("\0",20);$gj=self::hmacSha1($t,$Rj);$Jh="";for($Vf="",$cb=1;!isset($Jh[$u-1]);$cb++){$Vf=self::hmacSha1($Vf.$qf.chr($cb),$gj);$Jh
.=$Vf;}return
substr($Jh,0,$u);}static
function
hmacSha1($e,$t){if(!extension_loaded("hash"))return
hash_hmac("sha1",$e,$t,true);if(strlen($t)>64)$t=sha1($t,true);$t=str_pad($t,64,"\0");$Df=($t^str_repeat("\x36",64));$Rh=($t^str_repeat("\x5C",64));return
sha1($Rh.sha1($Df.$e,true),true);}}class
Random{static
function
strongKey(){return
strtr(rtrim(base64_encode(Random::bytes(32)),"="),"+/","-_");}static
function
bytes($u){if(PHP_VERSION_ID>=70000)return
random_bytes($u);$H=self::tryAlternatives($u);if($H!==false)return$H;$H=self::lastResortRandom($u);if($H!==false)return$H;throw
new
Exception("Error generating random bytes");}private
static
function
tryAlternatives($u){if(extension_loaded("libsodium"))return
\Sodium\randombytes_buf($u);$om=DIRECTORY_SEPARATOR==="/";if($om){$H=self::readDevUrandom($u);if($H!==false)return$H;}$gb=$om&&PHP_VERSION_ID>50609&&PHP_VERSION_ID<50613;if(extension_loaded("mcrypt")&&!$gb){$H=mcrypt_create_iv($u,MCRYPT_DEV_URANDOM);if($H!==false)return$H;}$hb=PHP_VERSION_ID<50444||(PHP_VERSION_ID>50500&&PHP_VERSION_ID<50528)||(PHP_VERSION_ID>50600&&PHP_VERSION_ID<50612);if(extension_loaded("openssl")&&!$hb){$H=openssl_random_pseudo_bytes($u,$Uk);if($Uk)return$H;}return
false;}private
static
function
readDevUrandom($u){static$l=null;if($l===null)$l=@fopen("/dev/urandom","rb");if(!$l)return
false;$Cj=$u;$H="";do{$e=fread($l,$Cj);if($e===false)return
false;$Cj-=strlen($e);$H
.=$e;}while($Cj>0);return$H;}private
static
function
readCapicom($u){$Ib=new
\COM("CAPICOM.Utilities.1");$Cj=$u;$H="";do{$e=base64_decode((string)$Ib->GetRandom($u,0));$Cj-=strlen($e);$H
.=$e;}while($Cj>0);return$H;}private
static
function
lastResortRandom($u){static$t=null;static$Rj=null;if($t===null){$e=$_SERVER;$e[]=uniqid("",true);shuffle($e);$t=sha1(serialize($e),true);if(extension_loaded("openssl"))$Rj=openssl_random_pseudo_bytes(20);else{$Rj="";for($p=0;$p<20;$p++)$Rj
.=chr((mt_rand()^mt_rand())%256);}}else{if((ord($t)%2===0)===(ord($Rj)%2===0))$t=Hash::hmacSha1($t,$Rj);else$Rj=Hash::hmacSha1($Rj,$t);}return
Hash::hkdf($u,$t,"$u",$Rj);}}if(!function_exists("str_starts_with")){function
str_starts_with($Me,$wh){return
strpos($Me,$wh)===0;}}if(!function_exists("str_contains")){function
str_contains($Me,$wh){return
strpos($Me,$wh)!==false;}}if(!function_exists("password_verify")){function
password_verify($E,$Le){return
false;}}if(!function_exists("ini_set")){function
ini_set($Xh,$X){return
false;}}function
version(){return
VERSION;}function
idf_unescape($df){if(!preg_match('~^[`\'"[]~',$df))return$df;$gg=substr($df,-1);return
str_replace($gg.$gg,$gg,substr($df,1,-1));}function
q($P){return
Connection::get()->quote($P);}function
number($W){return
preg_replace('~[^0-9]+~','',$W);}function
number_type(){return'((^|[^o])int(?!er)|numeric|real|float|double|decimal|money)';}function
remove_slashes(array$Y,$Wd=false){$I=[];foreach($Y
as$t=>$W)$I[stripslashes($t)]=(is_array($W)?remove_slashes($W,$Wd):($Wd?$W:stripslashes($W)));return$I;}function
bracket_escape($df,$Ua=false){static$Yl=[':'=>':1',']'=>':2','['=>':3','"'=>':4'];return
strtr($df,($Ua?array_flip($Yl):$Yl));}function
min_version($Jm,$Fg=null,$d=null){if(!$d)$d=Connection::get();if($Fg&&$d->isMariaDB())$Jm=$Fg;return$Jm&&$d->isMinVersion($Jm);}function
charset(Connection$d){return($d->isMinVersion("5.5.3")?"utf8mb4":"utf8");}function
link_files($_,array$Vd){switch($_){case'favicon-blue.ico':$m='favicon-blue-0f5ce53a66b1e25395d0048da369f19e__dc9919c6.ico';break;case'favicon-green.ico':$m='favicon-green-def78cfa7c465c8b0e9966e3eb87407d__dc9919c6.ico';break;case'favicon-orange.ico':$m='favicon-orange-cd68622e75276fdf7c60d1e9d4deee14__dc9919c6.ico';break;case'favicon-purple.ico':$m='favicon-purple-d4b02fdcc3abcc374a77c65f88513c01__dc9919c6.ico';break;case'favicon-red.ico':$m='favicon-red-c2ebb34a8df5aba28e15d87728a151df__dc9919c6.ico';break;case'favicon-blue.svg':$m='favicon-blue-17e440832c1eac07527560a0d6f0d2ee__dc9919c6.svg';break;case'favicon-green.svg':$m='favicon-green-bb254c95a033f67e3d433a3df63e160d__dc9919c6.svg';break;case'favicon-orange.svg':$m='favicon-orange-53ca3b502d7fb29f01bfbf87fc4d6b24__dc9919c6.svg';break;case'favicon-purple.svg':$m='favicon-purple-4cfd57d31ab991e8071fe34060cd3123__dc9919c6.svg';break;case'favicon-red.svg':$m='favicon-red-a006e401273230fd6be80568c8361b57__dc9919c6.svg';break;case'apple-touch-icon-blue.png':$m='apple-touch-icon-blue-f2a5f6f50418d7293b806faf273fe381__dc9919c6.png';break;case'apple-touch-icon-green.png':$m='apple-touch-icon-green-903cc109ea077cd9e91508416c5e335a__dc9919c6.png';break;case'apple-touch-icon-orange.png':$m='apple-touch-icon-orange-6efda14fd1d3c45382c67d7f324bdccf__dc9919c6.png';break;case'apple-touch-icon-purple.png':$m='apple-touch-icon-purple-2388fa66883b7c5e6b4cf5c795eae8fc__dc9919c6.png';break;case'apple-touch-icon-red.png':$m='apple-touch-icon-red-507228751d2170d047e72142d2c02390__dc9919c6.png';break;case'logo.svg':$m='logo-de272eb4bdca9c6fffd38c073270fb1a__9d7e398f.svg';break;case'jush.css':$m='jush-b3a93b18444da26820ff61746521dede__c1fc09bb.css';break;case'jush-dark.css':$m='jush-dark-f8dac59c6ad1018686e52a0e0357e421__2ec7793c.css';break;case'jush.js':$m='jush-9e355eb4d469abcfdb02830fb404cb16__e60c1fa7.js';break;case'icons.svg':$m='icons-70163a2695280bf75edba563e7b5471b__2ec7793c.svg';break;case'default-blue.css':$m='default-blue-e7acfdb81453b86f081569afa115859e__58308477.css';break;case'default-green.css':$m='default-green-268f042072e76ab07aa2fd0350e0aa0c__58308477.css';break;case'default-orange.css':$m='default-orange-e4e5ea626cdcbe83e07c7933dc04f916__58308477.css';break;case'default-purple.css':$m='default-purple-6b1de1f635d52b55797976fef486a515__58308477.css';break;case'default-red.css':$m='default-red-0f424ea89c2a43c6eb0ec8f0e22362a5__58308477.css';break;case'default-blue-dark.css':$m='default-blue-dark-1061ad7d216f143e3626560b92b66061__136f6b79.css';break;case'default-green-dark.css':$m='default-green-dark-6176b1c7b42ee9f244b3a9c3d8065728__136f6b79.css';break;case'default-orange-dark.css':$m='default-orange-dark-ef164a8d58dc89b2719f881377f73c89__136f6b79.css';break;case'default-purple-dark.css':$m='default-purple-dark-0f4fa03fa2d9287ef390780e90d9b06d__136f6b79.css';break;case'default-red-dark.css':$m='default-red-dark-3c1e28afe2cc92815bc7347df0d5776f__136f6b79.css';break;case'main.js':$m='main-0864f21d8576870afa2ea1b4d2bb6be8__169bbed7.js';break;default:$m=null;break;}if(!$m)return
null;return
BASE_URL."?file=".urldecode($m);}function
ini_bool($Xh){$W=ini_get($Xh);return
preg_match('~^(on|true|yes)$~i',$W)||(int)$W;}function
ini_bytes($sf){$W=ini_get($sf);switch(strtolower(substr($W,-1))){case'g':$W=(int)$W*1024;case'm':$W=(int)$W*1024;case'k':$W=(int)$W*1024;}return$W;}function
max_input_vars($J,$ni){$Ig=(int)ini_get("max_input_vars");return($Ig?(int)floor(($Ig-$ni)/$J):0);}function
max_input_vars_error(){$sf="max_input_vars";return
lang(103,"$sf = ".(int)ini_get($sf));}function
sid(){static$I;if($I===null)$I=(session_id()&&!($_COOKIE&&ini_bool("session.use_cookies")));return$I;}function
save_driver_name($Tc,$M,$_){restart_session();$_SESSION["drivers"][$Tc][$M]=$_;stop_session();}function
get_driver_name($Tc,$M=null){return
isset($_SESSION["drivers"][$Tc][$M])?$_SESSION["drivers"][$Tc][$M]:Drivers::get($Tc);}function
save_login($Tc,$M,$U,$E,$g=""){$t=isset($_COOKIE["neo_key"])?$_COOKIE["neo_key"]:null;$_SESSION["pwds"][$Tc][$M][$U]=$t?[encrypt_string($E,$t)]:$E;$_SESSION["db"][$Tc][$M][$U][$g]=true;}function
delete_login($Tc,$M,$U){unset($_SESSION["pwds"][$Tc][$M][$U]);unset($_SESSION["db"][$Tc][$M][$U]);}function
get_password(){$E=get_session("pwds");if(is_array($E))return$_COOKIE["neo_key"]?decrypt_string($E[0],$_COOKIE["neo_key"]):false;return$E;}function
get_vals($G,$b=0){$I=[];$H=Connection::get()->query($G);if(is_object($H)){while($J=$H->fetchRow())$I[]=$J[$b];}return$I;}function
get_key_vals($G,$d=null,$zk=true){if(!$d)$d=Connection::get();$I=[];$H=$d->query($G);if(is_object($H)){while($J=$H->fetchRow()){if($zk)$I[$J[0]]=$J[1];else$I[]=$J[0];}}return$I;}function
get_rows($G,$d=null,$i="<p class='error'>"){if(!$d)$d=Connection::get();$I=[];$H=$d->query($G);if(is_object($H)){while($J=$H->fetchAssoc())$I[]=$J;}elseif(!$H&&!is_object($d)&&$i&&(defined("AdminNeo\PAGE_HEADER")||$i=="-- "))echo$i.error()."\n";return$I;}function
unique_array(array$J,array$s){foreach($s
as$r){if(!preg_match("~PRIMARY|UNIQUE~",$r["type"])&&!$r["partial"])continue;$lm=[];foreach($r["columns"]as$t){if(!isset($J[$t]))continue
2;$lm[$t]=$J[$t];}return$lm;}return
null;}function
escape_key($t){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$t,$y))return$y[1].idf_escape(idf_unescape($y[2])).$y[3];return
idf_escape($t);}function
where($Z,$k=[]){$Sb=[];foreach((array)$Z["where"]as$t=>$W){$t=bracket_escape($t,true);$b=escape_key($t);$j=isset($k[$t])?$k[$t]:null;$Rd=isset($j["type"])?$j["type"]:null;$te=isset($j["full_type"])?$j["full_type"]:null;$Hf=$j&&(is_blob($j)||preg_match('~binary~',$Rd));if($Hf&&!is_utf8($W))$Sb[]="$b = ".Driver::get()->quoteBinary($W);elseif(DIALECT=="sql"&&$Rd=="json")$Sb[]="$b = CAST(".q($W)." AS JSON)";elseif(DIALECT=="pgsql"&&preg_match('~^jsonb?$~',$te))$Sb[]="$b::jsonb = ".q($W)."::jsonb";elseif(DIALECT=="sql"&&is_numeric($W)&&strpos($W,".")!==false)$Sb[]="$b LIKE ".q($W);elseif(DIALECT=="mssql"&&strpos($Rd,"datetime")===false)$Sb[]="$b LIKE ".q(preg_replace('~[_%[]~','[\0]',$W));else$Sb[]="$b = ".(isset($k[$t])?unconvert_field($k[$t],q($W)):q($W));if(DIALECT=="sql"&&preg_match('~char|text~',$Rd)&&preg_match("~[^ -@]~",$W))$Sb[]="$b = ".q($W)." COLLATE ".charset(Connection::get())."_bin";}foreach((array)$Z["null"]as$t)$Sb[]=escape_key($t)." IS NULL";return
implode(" AND ",$Sb);}function
where_columns($Z,$k=[]){$c=[];foreach((array)$Z["null"]as$t)$c[$t]=true;foreach((array)$Z["where"]as$t=>$W){$t=bracket_escape($t,true);foreach($k
as$_=>$j){if($t==$_||strpos($t,idf_escape($_))!==false)$c[$_]=true;}}return$c;}function
where_check($W,$k=[]){parse_str($W,$ob);remove_slashes([&$ob]);return
where($ob,$k);}function
where_link($p,$b,$X,$Uh="="){return"&where%5B$p%5D%5Bcol%5D=".urlencode($b)."&where%5B$p%5D%5Bop%5D=".urlencode(($X!==null?$Uh:"IS NULL"))."&where%5B$p%5D%5Bval%5D=".urlencode($X);}function
convert_fields(array$c,array$k,array$L=[]){$H="";foreach($c
as$t=>$W){if($L&&!in_array(idf_escape($t),$L))continue;$Ma=convert_field($k[$t]);if($Ma)$H
.=", $Ma AS ".idf_escape($t);}return$H;}function
cookie_path(){return
strtr(preg_replace('~\?.*~','',$_SERVER["REQUEST_URI"]),[";"=>"%3B",","=>"%2C"]);}function
cookie($_,$X,$qg=2592000){header("Set-Cookie: $_=".rawurlencode($X).($qg?"; expires=".gmdate("D, d M Y H:i:s",time()+$qg)." GMT":"")."; path=".cookie_path().(HTTPS?"; secure":"")."; HttpOnly; SameSite=lax",false);}function
get_url($um,$bc){$I=@file_get_contents($um,false,$bc);if(function_exists('http_get_last_response_headers'))$http_response_header=($ra=http_get_last_response_headers())!==null?$ra:[];return[$I,isset($http_response_header)?$http_response_header:[]];}function
get_settings($ec="neo_settings"){parse_str(isset($_COOKIE[$ec])?$_COOKIE[$ec]:"",$N);return$N;}function
get_setting($t,$ec="neo_settings"){$N=get_settings($ec);return
isset($N[$t])?$N[$t]:null;}function
save_settings(array$N,$ec="neo_settings"){cookie($ec,http_build_query($N+get_settings($ec)));}function
restart_session(){if(!ini_bool("session.use_cookies")&&session_status()==PHP_SESSION_NONE)session_start();}function
stop_session($he=false){$ym=ini_bool("session.use_cookies");if(!$ym||$he){session_write_close();if($ym&&ini_set("session.use_cookies","0")===false)session_start();}}function&get_session($t){return$_SESSION[$t][DRIVER][SERVER][$_GET["username"]];}function
set_session($t,$W){$_SESSION[$t][DRIVER][SERVER][$_GET["username"]]=$W;}function
auth_url($Im,$M,$U,$g=null){$tm=remove_from_uri(implode("|",array_keys(Drivers::getList()))."|username|ext|".($g!==null?"db|":"").($Im=='mssql'||$Im=='pgsql'?"":"ns|").session_name());preg_match('~([^?]*)\??(.*)~',$tm,$y);return"$y[1]?".(sid()?session_name()."=".urlencode(session_id())."&":"").urlencode($Im)."=".urlencode($M)."&".($_GET["ext"]?"ext=".urlencode($_GET["ext"])."&":"")."username=".urlencode($U).($g!=""?"&db=".urlencode($g):"").($y[2]?"&$y[2]":"");}function
is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function
redirect($x,$Wg=null){if($Wg!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($x!==null?$x:$_SERVER["REQUEST_URI"]))][]=$Wg;}if($x!==null){if($x=="")$x=".";header("Location: $x");exit;}}function
query_redirect($G,$x,$Wg,$tj=true,$zd=true,$Id=false,$Ml=""){if($zd){$Rk=microtime(true);$Id=!Connection::get()->query($G);$Ml=format_time($Rk);}$Nk=$G?Admin::get()->formatMessageQuery($G,$Ml,$Id):"";if($Id){Admin::get()->addError(error().$Nk.script("initToggles();"));return
false;}if($tj)redirect($x,$Wg.$Nk);return
true;}function
queries_redirect($x,$Wg,$tj){$kj=implode("\n",Queries::$queries);$Ml=format_time(Queries::$start);return
query_redirect($kj,$x,$Wg,$tj,false,!$tj,$Ml);}class
Queries{static$queries=[];static$start=0.0;}function
queries($G){if(!Queries::$start)Queries::$start=microtime(true);if(support("sql")){Queries::$queries[]=(preg_match('~;$~',$G)?"DELIMITER ;;\n$G;\nDELIMITER ":$G).";";return
Connection::get()->query($G);}else{Queries::$queries[]=$G;return[];}}function
apply_queries($G,array$vl,$vd='AdminNeo\table'){foreach($vl
as$Q){if(!queries("$G ".$vd($Q)))return
false;}return
true;}function
format_time($Rk){return
lang(104,max(0,microtime(true)-$Rk));}function
relative_uri(){return
str_replace(":","%3a",preg_replace('~^[^?]*/([^?]*)~','\1',$_SERVER["REQUEST_URI"]));}function
remove_from_uri($ti=""){return
substr(preg_replace("~(?<=[?&])($ti".(sid()?"":"|".session_name()).")=[^&]*&~",'',relative_uri()."&"),0,-1);}function
get_file($t,$vc=false,$Ac=""){$l=$_FILES[$t];if(!$l)return
null;foreach($l
as$t=>$W)$l[$t]=(array)$W;$I='';foreach($l["error"]as$t=>$i){if($i)return$i;$_=$l["name"][$t];$Tl=$l["tmp_name"][$t];$Zb=file_get_contents($vc&&preg_match('~\.gz$~',$_)?"compress.zlib://$Tl":$Tl);if($vc){$Rk=substr($Zb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Rk))$Zb=iconv("utf-16","utf-8",$Zb);elseif($Rk=="\xEF\xBB\xBF")$Zb=substr($Zb,3);}if($Ac){if(!preg_match("~$Ac\\s*\$~",$Zb))$Zb
.=";";$Zb
.="\n\n";}$I
.=$Zb;}return$I;}function
upload_error($i){$Qg=($i==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($i?lang(105).($Qg?" ".lang(106,$Qg):""):lang(107));}function
repeat_pattern($Ji,$u){return
str_repeat("$Ji{0,65535}",$u/65535)."$Ji{0,".($u%65535)."}";}function
is_utf8($W){return(preg_match('~~u',$W)&&!preg_match('~[\0-\x8\xB\xC\xE-\x1F]~',$W));}function
format_number($W){return
strtr(number_format($W,0,".",lang(108)),preg_split('~~u',lang(109),-1,PREG_SPLIT_NO_EMPTY));}function
format_rows(array$R){$K=$R["Rows"];$Ja=($K&&(DIALECT=="sqlite"||(isset($R["Engine"])?$R["Engine"]:"")==(DIALECT=="pgsql"?"table":"InnoDB")));return($Ja?"~ ":"").format_number($K);}function
friendly_url($W){return
preg_replace('~\W~i','-',$W);}function
table_status1($Q,$Kd=false){$I=table_status($Q,$Kd);return($I?reset($I):["Name"=>$Q]);}function
column_foreign_keys($Q){$I=[];foreach(Admin::get()->getForeignKeys($Q)as$n){foreach($n["source"]as$W)$I[$W][]=$n;}return$I;}function
fields_from_edit(){$I=[];foreach((array)$_POST["field_keys"]as$t=>$W){if($W!=""){$W=bracket_escape($W);$_POST["function"][$W]=$_POST["field_funs"][$t];$_POST["fields"][$W]=$_POST["field_vals"][$t];}}foreach((array)$_POST["fields"]as$t=>$W){$_=bracket_escape($t,true);$I[$_]=["field"=>$_,"full_type"=>"varchar","type"=>"varchar","privileges"=>["insert"=>1,"update"=>1,"where"=>1,"order"=>1],"null"=>true,"auto_increment"=>($t==Driver::get()->primary),];}return$I;}function
dump_headers($bf,$oh=false){$bf=friendly_url($bf).date("-Ymd-His");$Fd=Admin::get()->sendDumpHeaders($bf,$oh);$pi=$_POST["output"];if($pi!="text")header("Content-Disposition: attachment; filename=$bf.$Fd".($pi!="file"&&preg_match('~^[0-9a-z]+$~',$pi)?".$pi":""));session_write_close();if(!ob_get_level())ob_start(null,4096);ob_flush();flush();return$Fd;}function
dump_table_order(array$uh,array$zj){$Zf=array_flip($uh);$ci=[];$Rm=[];$nc=false;$Qm=function($_)use(&$Qm,&$ci,&$Rm,&$nc,$Zf,$zj){if(isset($ci[$_]))return;if(isset($Rm[$_])){$nc=true;return;}$Rm[$_]=true;foreach(isset($zj[$_])?$zj[$_]:[]as$xj){if(isset($Zf[$xj]))$Qm($xj);}unset($Rm[$_]);$ci[$_]=true;};foreach($uh
as$_)$Qm($_);return($nc?null:array_keys($ci));}function
dump_csv($J){$gm=$_POST["format"]=="tsv";foreach($J
as$t=>$W){if(preg_match('~["\n]|^0[^.]|\.\d*0$|'.($gm?'\t':'[,;]|^$').'~',$W))$J[$t]='"'.str_replace('"','""',$W).'"';}echo
implode(($_POST["format"]=="csv"?",":($gm?"\t":";")),$J)."\r\n";}function
apply_sql_function($o,$b){return($o?($o=="unixepoch"?"DATETIME($b, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$b)"):$b);}function
get_temp_dir(){$Hi=ini_get("upload_tmp_dir");if(!$Hi)$Hi=sys_get_temp_dir();return$Hi;}function
open_file_with_lock($m){if(is_link($m))return
null;$l=@fopen($m,"c+");if(!$l)return
null;@chmod($m,0660);if(!flock($l,LOCK_EX)){fclose($l);return
null;}return$l;}function
write_and_unlock_file($l,$e){rewind($l);fwrite($l,$e);ftruncate($l,strlen($e));unlock_file($l);}function
unlock_file($l){flock($l,LOCK_UN);fclose($l);}function
first(array$La){return
reset($La);}function
get_private_key($gc){$m=get_temp_dir()."/adminneo.key";if(!$gc&&!file_exists($m))return
false;$l=open_file_with_lock($m);if(!$l)return
false;$t=stream_get_contents($l);if(!$t){$t=Random::strongKey();write_and_unlock_file($l,$t);}else
unlock_file($l);return$t;}function
get_random_string(){return
Random::strongKey();}function
select_value($W,$w,$j,$Il){if(is_array($W)){$I="";if(array_filter($W,'is_array')==array_values($W)){$Wf=[];foreach($W
as$V)$Wf+=array_fill_keys(array_keys($V),null);foreach(array_keys($Wf)as$Rf)$I
.="<th>".h($Rf);foreach($W
as$V){$I
.="<tr>";foreach(array_merge($Wf,$V)as$Cm)$I
.="<td>".select_value($Cm,$w,$j,$Il);}}else{foreach($W
as$Rf=>$V)$I
.="<tr>".($W!=array_values($W)?"<th>".h($Rf):"")."<td>".select_value($V,$w,$j,$Il);}return"<table>$I</table>";}$Wj="";if($j&&$W!==null&&($Il===null||strlen($W)<=$Il)&&($Y=Driver::get()->explodeArrayValue($W,$j["full_type"],$Wj))){$Vj=$j;$Vj["type"]=$Vj["full_type"]=$Wj;$I=select_array_value($Y,$W,$w,$Vj,$Il);return
Driver::get()->implodeArrayValues($I,$j["full_type"]);}if(!$w)$w=Admin::get()->getFieldValueLink($W,$j);if($j)$W=Connection::get()->formatValue($W,$j);$I=$j?Admin::get()->formatFieldValue($W,$j):$W;if($I!==null){if(!is_utf8($I))$I="\0";elseif($Il!=""&&is_shortable($j))$I=truncate_utf8($I,max(0,+$Il));else$I=h($I);}return
Admin::get()->formatSelectionValue($I,$w,$j,$W);}function
select_array_value(array$Y,$W,$w,array$j,$Il){$H=[];foreach($Y
as$X){if(is_array($X))$H[]=select_array_value($X,$W,$w,$j,$Il);else{$ag=preg_replace('~(where%5B\d+%5D%5Bval%5D=)'.preg_quote(urlencode($W),"~")."~",'${1}'.urlencode($X),$w);$H[]=select_value($X,$ag,$j,$Il);}}return$H;}function
is_blob(array$j){$im=Driver::get()->getStructuredTypes();$T=lang(110);return
preg_match('~blob|bytea|raw|file'.(DIALECT=="mssql"?'|binary|image':'').'~',$j["type"])&&!in_array($j["type"],isset($im[$T])?$im[$T]:[]);}function
is_generated_always(array$j){return(isset($j["generated"])?$j["generated"]:"")!=""||stripos((string)(isset($j["default"])?$j["default"]:""),"GENERATED ALWAYS AS ")===0;}function
is_mail($X){return
is_string($X)&&filter_var($X,FILTER_VALIDATE_EMAIL);}function
is_web_url($X){if(!is_string($X)||!preg_match('~^(https?:)?//~i',$X))return
false;$Pb=parse_url($X);if(!$Pb)return
false;$um=$X;if(isset($Pb['path'])){$nd=array_map('urlencode',explode('/',$Pb['path']));$um=str_replace($Pb['path'],implode('/',$nd),$um);}if(isset($Pb['query'])){parse_str($Pb['query'],$ui);$um=str_replace($Pb['query'],http_build_query($ui),$um);}if(!isset($Pb['scheme']))$um="https:$um";return(bool)filter_var($um,FILTER_VALIDATE_URL);}function
is_shortable($j){return$j&&!preg_match('~'.number_type().'|date|time|year~',$j["type"]);}function
host_port($M){return(preg_match('~^(:([^:].*)|(\[(.+)]|(([^:]+://)?[^:]+))(:(\d+))?)$~',$M,$y)?[(isset($y[4])?$y[4]:"").(isset($y[5])?$y[5]:""),$y[2].(isset($y[8])?$y[8]:"")]:[$M,'']);}function
count_rows($Q,$Z,$If,$_e){$G=" FROM ".table($Q).($Z?" WHERE ".implode(" AND ",$Z):"");return($If&&(DIALECT=="sql"||count($_e)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$_e).")$G":"SELECT COUNT(*)".($If?" FROM (SELECT 1$G GROUP BY ".implode(", ",$_e).") x":$G));}function
slow_query($G){$g=Admin::get()->getDatabase();$Nl=Admin::get()->getQueryTimeout();$Fk=Driver::get()->slowQuery($G,$Nl);$d=null;if(!$Fk&&support("kill")){$d=connect();if($d&&($g==""||$d->selectDatabase($g))){$Xf=number($d->getValue(connection_id()));echo'<script',nonce(),'>
	const timeout = setTimeout(() => {
		ajax(\'',js_escape(ME),'script=kill\', function() {
		}, \'kill=',$Xf,'&token=',get_token(),'\');
	}, ',1000*$Nl,');
</script>
';}}ob_flush();flush();$I=@get_key_vals(($Fk?:$G),$d,false);if($d){echo
script("clearTimeout(timeout);");ob_flush();flush();}return$I;}function
get_token(){$pj=rand(1,1e6);return($pj^$_SESSION["token"]).":$pj";}function
verify_token(){list($Ul,$pj)=explode(":",$_POST["token"]);return($pj^$_SESSION["token"])==$Ul&&in_array($_SERVER["HTTP_SEC_FETCH_SITE"],["","same-origin"]);}function
script($Jk,$Xl="\n"){return"<script".nonce().">$Jk</script>$Xl";}function
script_src($um,$zc=false){return"<script src='".h($um)."'".nonce().($zc?" defer":"")."></script>\n";}function
nonce(){return' nonce="'.get_nonce().'"';}function
input_hidden($_,$X=""){return"<input type='hidden' name='".h($_)."' value='".h($X)."'>";}function
input_token(){return
input_hidden("token",get_token());}function
target_blank(){return' target="_blank" rel="noreferrer noopener"';}function
h($P){if($P===null||$P==="")return"";return
str_replace(["&","<","\"","'","\0"],["&amp;","&lt;","&quot;","&#039;","&#0;"],$P);}function
truncate_utf8($P,$u=80){if($P=="")return"";if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{10FFFF}]",$u).")($)?)u",$P,$y))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$u).")($)?)",$P,$y);return
h($y[1]).(isset($y[2])?"":"<i>…</i>");}function
icon_solo($q){return
icon($q,"solo");}function
icon_chevron_down(){return
icon("chevron-down","chevron");}function
icon_chevron_right(){return
icon("chevron-down","chevron-right");}function
icon($q,$xb=null){$q=h($q);return"<svg class='icon ic-$q $xb'><use href='".link_files("icons.svg",[])."#$q'/></svg>";}function
checkbox($_,$X,$sb,$bg="",$Ph="",$xb="",$dg=""){$I="<input type='checkbox' name='$_' value='".h($X)."'".($sb?" checked":"").($dg?" aria-labelledby='$dg'":"").">".($Ph?script("qsl('input').onclick = function () { $Ph };",""):"");return($bg!=""||$xb?"<label".($xb?" class='$xb'":"").">$I".h($bg)."</label>":$I);}function
optionlist($B,$fk=null,$zm=false){$I="";foreach($B
as$Rf=>$V){$Zh=[$Rf=>$V];if(is_array($V)){$I
.='<optgroup label="'.h($Rf).'">';$Zh=$V;}foreach($Zh
as$t=>$W)$I
.='<option'.($zm||is_string($t)?' value="'.h($t).'"':'').($fk!==null&&($zm||is_string($t)?(string)$t:$W)===$fk?' selected':'').'>'.h($W);if(is_array($V))$I
.='</optgroup>';}return$I;}function
html_select($_,$B,$X="",$Oh="",$dg="",$zm=false){static$bg=0;$cg="";if(!$dg&&substr(isset($B[""])?$B[""]:"",0,1)=="("){$bg++;$dg="label-$bg";$cg="<option value='' id='$dg'>".h($B[""]);unset($B[""]);}return"<select name='".h($_)."'".($dg?" aria-labelledby='$dg'":"").">".$cg.optionlist($B,$X,$zm)."</select>".($Oh?script("qsl('select').onchange = function () { $Oh };",""):"");}function
html_radios($_,$B,$X=""){$H="<span class='labels'>";foreach($B
as$t=>$W)$H
.="<label><input type='radio' name='".h($_)."' value='".h($t)."'".($t==$X?" checked":"").">".h($W)."</label>";$H
.="</span>";return$H;}function
confirm($Wg="",$hk="qsl('input')"){return
script("$hk.onclick = () => confirm('".js_escape($Wg?:lang(111))."');","");}function
print_fieldset_start($q,$mg,$af,$Om=false,$Hk=false){echo"<fieldset id='fieldset-$q' class='closable ".(!$Om?" closed":"")."'>","<legend><a href='#'>$mg</a></legend>",icon($af,"fieldset-icon jsonly"),"<div class='fieldset-content".($Hk?" sortable":"")."'>";}function
print_fieldset_end($q,$Hk=false){echo"</div>",script("initFieldset('$q');","");if($Hk)echo
script("initSortable('#fieldset-$q .fieldset-content');","");echo"</fieldset>\n";}function
bold($db,$xb=""){return($db?" class='$xb active'":($xb?" class='$xb'":""));}function
js_escape($P){return
str_replace("<","\\x3C",addcslashes($P,"\r\n'\\"));}function
js_escape_key($P){return'"'.str_replace("<","\\x3C",addcslashes($P,"\r\n\t\"\\")).'"';}function
js_escape_re($P){return
addcslashes(preg_quote($P,"/"),"\r\n");}function
pagination($D,$kc){return"<li>".($D==$kc?"<strong>".($D+1)."</strong>":'<a href="'.h(remove_from_uri("page").($D?"&page=$D".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($D+1)."</a>")."</li>";}function
print_hidden_fields(array$hj,array$ef=[],$Yi=""){$H=false;foreach($hj
as$t=>$W){if(!in_array($t,$ef)){if(is_array($W))print_hidden_fields($W,[],$t);else{$H=true;echo
input_hidden($Yi?$Yi."[$t]":$t,$W);}}}return$H;}function
hidden_fields_get(){if(sid())echo
input_hidden(session_name(),session_id());if(SERVER!==null)echo
input_hidden(DRIVER,SERVER);echo
input_hidden("username",$_GET["username"]);}function
enum_input($Na,array$j,$X,$kd=null,$rb=false){preg_match_all("~'((?:[^']|'')*)'~",$j["length"],$z);$Y=$z[1];$Ll=Admin::get()->getSettings()->getEnumAsSelectThreshold();$L=!$rb&&$Ll!==null&&count($Y)>$Ll;$T=$rb?"checkbox":"radio";$xa=$L?"selected":"checked";$H=$L?"<select $Na>":"<span class='labels'>";if($L&&$j["null"]&&$kd!==""){$sb=$X===null?$xa:"";$H
.="<option value='__adminneo_empty__' disabled $sb></option>";}if($kd!==null){$sb=(is_array($X)?in_array($kd,$X):$X===$kd)?$xa:"";if($L)$H
.="<option value='$kd' $sb>".lang(112)."</option>";else$H
.="<label><input type='$T' $Na value='$kd' $sb><i>".lang(112)."</i></label>";}foreach($Y
as$W){if($kd===""&&$W==="")continue;$W=stripcslashes(str_replace("''","'",$W));$sb=is_array($X)?in_array($W,$X):$X===$W;$sb=$sb?$xa:"";$oe=$W===""?("<i>".lang(112)."</i>"):h(Admin::get()->formatFieldValue($W,$j));if($L)$H
.="<option value='".h($W)."' $sb>$oe</option>";else$H
.=" <label><input type='$T' $Na value='".h($W)."' $sb>$oe</label>";}$H
.=$L?"</select>":"</span>";return$H;}function
input($j,$X,$o,$Ra=false){$_=h(bracket_escape($j["field"]));$im=Driver::get()->getTypes();$Jf=isset($j["full_type"])&&Admin::get()->detectJson($j["full_type"],$X,true);$Dj=(DIALECT=="mssql"&&$j["auto_increment"]&&!$_POST["clone"]);if($Dj&&!$_POST["save"])$o=null;if(in_array($j["type"],Driver::get()->getUserTypes())){$sd=type_values($im[$j["type"]]);if($sd){$j["type"]="enum";$j["length"]=$sd;}}$Na=" name='fields[$_]' ".($Ra?" autofocus":"");$ve=(isset($_GET["select"])||$Dj?["orig"=>lang(113)]:[])+Admin::get()->getFieldFunctions($j);$Je=(in_array($o,$ve)||isset($ve[$o]));echo"<td class='function'>",Driver::get()->getUnconvertFunction($j)." ";if(count($ve)>1){$fk=$o===null||$Je?$o:"";echo"<select name='function[$_]'>".optionlist($ve,$fk)."</select>",help_script_command("value.replace(/^SQL\$/, '')",true),script("qsl('select').onchange = functionChange;","");}else
echo
h(reset($ve));echo"</td><td>";$tf=Admin::get()->getFieldInput(isset($_GET["edit"])?$_GET["edit"]:null,$j,$Na,$X,$o);if($tf!="")echo$tf;elseif(preg_match('~bool~',$j["type"]))echo"<input type='hidden'$Na value='0'>"."<input type='checkbox'".(preg_match('~^(1|t|true|y|yes|on)$~i',$X)?" checked":"")."$Na value='1'>";elseif($j["type"]=="enum")echo
enum_input($Na,$j,$X);elseif($j["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$j["length"],$z);echo"<span class='labels'>";foreach($z[1]as$W){$W=stripcslashes(str_replace("''","'",$W));$sb=$X!==null&&in_array($W,explode(",",$X),true);$sb=$sb?"checked":"";$oe=$W===""?("<i>".lang(112)."</i>"):h(Admin::get()->formatFieldValue($W,$j));echo" <label><input type='checkbox' name='fields[$_][]' value='".h($W)."' $sb>$oe</label>";}echo"</span>";}elseif(is_blob($j)&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$_'>";elseif($Jf)echo"<textarea $Na cols='50' rows='12' class='jush-json'>".h($X).'</textarea>';elseif(($Fl=preg_match('~text|lob|memo|json~i',$j["type"]))||preg_match("~\n~",$X)){if($Fl&&DIALECT!="sqlite")$Na
.=" cols='50' rows='12'";else{$K=min(12,substr_count($X,"\n")+1);$Na
.=" cols='30' rows='$K'";}echo"<textarea $Na>".h($X).'</textarea>';}else{$Sg=!preg_match('~int~',$j["type"])&&preg_match('~^(\d+)(,(\d+))?$~',$j["length"],$y)?((preg_match("~binary~",$j["type"])?2:1)*$y[1]+($y[3]?1:0)+($y[2]&&!$j["unsigned"]?1:0)):($im&&$im[$j["type"]]?$im[$j["type"]]+($j["unsigned"]?0:1):0);if(DIALECT=='sql'&&Connection::get()->isMinVersion("5.6")&&preg_match('~time~',$j["type"]))$Sg+=7;echo"<input class='input'".((!$Je||$o==="")&&preg_match('~(?<!o)int(?!er)~',$j["type"])&&!preg_match('~\[]~',$j["full_type"])?" type='number'":"").($o!="now"?" value='".h($X)."'":" data-last-value='".h($X)."'").($Sg?" data-maxlength='$Sg'":"").(preg_match('~char|binary~',$j["type"])&&$Sg>20?" size='44'":"")."$Na>";}$Re=Admin::get()->getFieldInputHint($_GET["edit"],$j,$X);if($Re!="")echo" <span class='input-hint'>$Re</span>";if(count($ve)>1)echo
script("qs('select', qsl('td').previousSibling).onchange(null, true);","");$ae=0;foreach($ve
as$t=>$W){if($t===""||!$W)break;$ae++;}if(count($ve)>1)echo
script("qsl('td').oninput = partial(skipOriginal, $ae);");}function
process_input($j){if(is_generated_always($j))return
null;$df=bracket_escape($j["field"]);$o=isset($_POST["function"][$df])?$_POST["function"][$df]:"";if($o=="orig")return(preg_match('~^CURRENT_TIMESTAMP~i',$j["on_update"])?idf_escape($j["field"]):false);if($o=="NULL")return
Driver::get()->getNull();if(is_blob($j)&&ini_bool("file_uploads")){$l=get_file("fields-$df");if(!is_string($l))return
false;return
Driver::get()->quoteBinary($l);}$X=isset($_POST["fields"][$df])?$_POST["fields"][$df]:(isset($_FILES["fields"]["name"][$df])?$_FILES["fields"]["name"][$df]:null);if($X===null)return
false;if($j["auto_increment"]&&$X=="")return
null;if($j["type"]=="set")$X=implode(",",(array)$X);if($o=="json"){$X=json_decode($X,true);if(!is_array($X))return
false;return$X;}return
Admin::get()->processFieldInput($j,$X,$o);}function
search_tables(){$_GET["where"][0]["val"]=$_POST["query"];$Ij=$ud=[];foreach(table_status("",true)as$Q=>$R){$ol=Admin::get()->getTableName($R);if(!isset($R["Engine"])||$ol==""||($_POST["tables"]&&!in_array($Q,$_POST["tables"])))continue;$H=Connection::get()->query("SELECT".limit("1 FROM ".table($Q)," WHERE ".implode(" AND ",Admin::get()->processSelectionSearch(fields($Q),[])),1));if($H&&!$H->fetchRow())continue;$w=h(ME."select=".urlencode($Q)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]));if($H)$Ij[]="<li><a href='$w'>".icon("search")."$ol</a></li>";else$ud[]="<div class='error'><a href='$w'>$ol</a>: ".error()."</div>";}if($Ij)echo"<ul class='links'>\n",implode("\n",$Ij),"</ul>\n";if($ud)echo
implode("\n",$ud),"\n";if(!$Ij&&!$ud)echo"<p class='message'>".lang(78)."</p>\n";}function
help_script($Fl,$Ck=false){return
script("initHelpFor(qsl('select, input'), '".h($Fl)."', $Ck);","");}function
help_script_command($Jb,$Ck=false){return
script("initHelpFor(qsl('select, input'), (value) => { return $Jb; }, $Ck);","");}function
edit_form($Q,$k,$J,$sm){$ol=Admin::get()->getTableName(table_status1($Q,true));$S=$sm?lang(39):lang(114);page_header("$S: $ol",["select"=>[$Q,$ol],$S]);if($J===false){echo"<p class='error'>".lang(91)."\n";return;}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";$gd=false;$Zm=($sm&&!isset($_GET["select"])?where_columns($_GET,$k):[]);$cc=(count($Zm)!=count($k));if(!$cc)$Zm=[];if(!$k)echo"<p class='error'>".lang(115)."\n";else{echo"<table class='box'>".script("qsl('table').onkeydown = onEditingKeydown;");$Ra=!$_POST;foreach($k
as$_=>$j){echo"<tr".(isset($Zm[$_])?" class='where-column'":"")."><th>".Admin::get()->getFieldName($j);$t=bracket_escape($_);$h=isset($_GET["preset"][$t])?$_GET["preset"][$t]:null;if($h===null){$h=$j["default"];if($j["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$h,$Aj))$h=$Aj[1];if(DIALECT=="sql"&&preg_match('~binary~',$j["type"]))$h=bin2hex($h);}$X=($J!==null?($J[$_]!=""&&DIALECT=="sql"&&preg_match("~enum|set~",$j["type"])&&is_array($J[$_])?implode(",",$J[$_]):(is_bool($J[$_])?+$J[$_]:$J[$_])):(!$sm&&$j["auto_increment"]?"":(isset($_GET["select"])?false:$h)));if(!$_POST["save"]&&is_string($X))$X=Admin::get()->formatFieldValue($X,$j);if(($sm&&!isset($j["privileges"]["update"]))||is_generated_always($j)){echo"<td class='function'></td><td>";if($sm||!$j["generated"])echo
select_value($X,'',$j,null);else
echo"<code class='jush-".DIALECT."'>",h($X),"</code>";echo"</td>";}else{$gd=true;$o=($_POST["save"]?isset($_POST["function"][$t])?$_POST["function"][$t]:"":($sm&&preg_match('~^CURRENT_TIMESTAMP~i',$j["on_update"])?"now":($X===false?null:($X!==null?'':'NULL'))));if(!$_POST&&!$sm&&$X==$j["default"]&&preg_match('~^[\w.]+\(~',$X))$o="SQL";if(preg_match("~time~",$j["type"])&&preg_match('~^CURRENT_TIMESTAMP~i',$X)){$X="";$o="now";}if($j["type"]=="uuid"&&$X=="uuid()"){$X="";$o="uuid";}if($Ra!==false)$Ra=($j["auto_increment"]||$o=="now"||$o=="uuid"?null:true);input($j,$X,$o,(bool)$Ra);if($Ra)$Ra=false;}echo"\n";}if(!support("table")&&!fields($Q))echo"<tr>"."<th><input class='input' name='field_keys[]'>".script("qsl('input').oninput = fieldChange;","")."<td class='function'>".html_select("field_funs[]",Admin::get()->getFieldFunctions(["null"=>isset($_GET["select"])]))."<td><input class='input' name='field_vals[]'>"."\n";echo"</table>\n",script("initToggles(gid('form'));");if($Zm)echo
script("initWhereChange();");}echo"<p>";if($gd){echo"<input type='submit' class='button default' value='".lang(116)."'>\n";if(!isset($_GET["select"])&&$cc){$Jc=($Zm&&Admin::get()->getErrors()?" disabled":"");echo"<input type='submit' class='button' name='insert' value='".($sm?lang(117):lang(118))."' title='Ctrl+Shift+Enter'$Jc>\n",($sm?script("qsl('input').onclick = function () { return !ajaxForm(this.form, '".js_escape(lang(119))."', this); };"):"");}}echo($sm?"<input type='submit' class='button' name='delete' value='".lang(120)."'>".confirm()."\n":"");if(isset($_GET["select"]))print_hidden_fields(["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
file_upload_form_script($le,$uf){$Kg=ini_get("max_file_uploads");$Qg=ini_get("upload_max_filesize");$Rg=ini_bytes("upload_max_filesize");return
script("initFilesUploadForm('".js_escape($le)."', '".js_escape($uf)."', "."$Kg, '".js_escape(lang(121,$Kg,"'max_file_uploads'"))."', "."$Rg, '".js_escape(lang(122,$Qg,"'upload_max_filesize'"))."')");}function
compress_alphabet(){return
strtr(implode(range('"','~')),"'\\","!\n");}function
decompress_string($P){$Ga=array_flip(str_split(compress_alphabet()));$u=strlen($P);$Fm=($u?13*($u-1)/2-$Ga[$P[0]]:0);$Za="";$Gj=0;$Hj=0;for($p=1;$p<$u;$p+=2){$Gj=($Gj<<13)+$Ga[$P[$p]]*93+$Ga[$P[$p+1]];$Hj+=13;while($Hj>=8&&$Fm>=8){$Hj-=8;$Fm-=8;$Za
.=chr($Gj>>$Hj);$Gj&=(1<<$Hj)-1;}}if($Za=="")return"";return
function_exists('gzinflate')?gzinflate($Za):inflate($Za);}function
inflate($Za){$ng=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258];$og=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];$Mc=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577];$Oc=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];$I="";$F=0;do{$Yd=inflate_bits($Za,$F,1);$T=inflate_bits($Za,$F,2);if(!$T){$F=($F+7)&~7;$u=inflate_bits($Za,$F,16);$F+=16;$I
.=substr($Za,$F>>3,$u);$F+=$u<<3;}else{if($T==1){$_g=array_merge(array_fill(0,144,8),array_fill(0,112,9),array_fill(0,24,7),array_fill(0,8,8));$Pc=array_fill(0,30,5);}else{$zg=inflate_bits($Za,$F,5)+257;$Nc=inflate_bits($Za,$F,5)+1;$C=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];$ch=array_fill(0,19,0);$bh=inflate_bits($Za,$F,4)+4;for($p=0;$p<$bh;$p++)$ch[$C[$p]]=inflate_bits($Za,$F,3);$dh=inflate_table($ch);$pg=[];while(count($pg)<$zg+$Nc){$el=inflate_symbol($Za,$F,$dh);if($el==16)$pg=array_merge($pg,array_fill(0,inflate_bits($Za,$F,2)+3,end($pg)));elseif($el==17)$pg=array_merge($pg,array_fill(0,inflate_bits($Za,$F,3)+3,0));elseif($el==18)$pg=array_merge($pg,array_fill(0,inflate_bits($Za,$F,7)+11,0));else$pg[]=$el;}$_g=array_slice($pg,0,$zg);$Pc=array_slice($pg,$zg);}$Ag=inflate_table($_g);$Rc=inflate_table($Pc);while(($el=inflate_symbol($Za,$F,$Ag))!=256){if($el<256)$I
.=chr($el);else{$u=$ng[$el-257]+inflate_bits($Za,$F,$og[$el-257]);$Qc=inflate_symbol($Za,$F,$Rc);$Fh=strlen($I)-$Mc[$Qc]-inflate_bits($Za,$F,$Oc[$Qc]);for($p=0;$p<$u;$p++)$I
.=$I[$Fh+$p];}}}}while(!$Yd);return$I;}function
inflate_bits($Za,&$F,$fc){$I=0;for($p=0;$p<$fc;$p++){$I+=((ord($Za[$F>>3])>>($F&7))&1)<<$p;$F++;}return$I;}function
inflate_table(array$pg){$Q=[];$zb=0;for($ab=1;$ab<=max($pg);$ab++){foreach($pg
as$el=>$u){if($u==$ab){$Q[$ab][$zb]=$el;$zb++;}}$zb<<=1;}return$Q;}function
inflate_symbol($Za,&$F,array$Q){$zb=0;$ab=0;do{$zb=($zb<<1)+inflate_bits($Za,$F,1);$ab++;}while(!isset($Q[$ab][$zb]));return$Q[$ab][$zb];}if(isset($_GET["file"]))load_compiled_file($_GET["file"]);function
load_compiled_file($m){if($m==""){http_response_code(404);exit;}if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){http_response_code(304);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");$Fd=pathinfo($m,PATHINFO_EXTENSION);switch($Fd){case"css":header("Content-Type: text/css; charset=utf-8");break;case"js":header("Content-Type: text/javascript; charset=utf-8");break;case"ico":header("Content-Type: image/x-icon");break;case"png":header("Content-Type: image/png");break;case"svg":header("Content-Type: image/svg+xml");break;}switch($m){case'favicon-blue-0f5ce53a66b1e25395d0048da369f19e__dc9919c6.ico':$e='AAABAAEAICAAAAEAIAC6AQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAYFJREFUeNrV1wEEGmEYh/FztCYBRATANhCAAEGAEGZowEUFhM2G6A4QAJksoMi2AYRlAxgcAUgthAS2yTFo5d2DDzbO6r2PhB9APY73z+cUn3+6qbsJcFGCjxlCbPHL2CLEDD5KcG0EPESAH5ArfUeAtDbgCb5BElrjsSbgI8SSD5qAM8SSsyZAbNIErCGWrDQBTYglTe0ZNnCAKB3gJR2iAnwsIBdawEchyRC9jompoYUe3hg9tFCL+dNX2ivo4wEcpTT6EF0AsEMHeTgXyqODnf4M489phC7aeGq00cUIK1s7sLr1DryEWPJCE5DBBJLQBJkkO9DAHnKlPbwkO/AMjuGijCGWiCD/iLDEEGW4f/2WIuA3qnBiZPHIyMKJUcVJe4ZHDJCDc6UcBjhqz/AEMSKMUf9PTA51jBFBAN0X+AKJEWGDr8YGESTGZ02AB7HE0wSk8B6S0DuktDvgYgRRegvXxsuogjnkQnNUrL8NUUSAKUL8NEJMEaB4x4/TG/gDMBOIUjRp9w0AAAAASUVORK5CYII=';break;case'favicon-green-def78cfa7c465c8b0e9966e3eb87407d__dc9919c6.ico':$e='AAABAAEAICAAAAEAIAC+AQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAYVJREFUeNpiYOhiAFBfBxBohGEcxs/RmgQQEQDbQAACBAFCmBDgogLCZkN0BwiATBZQZNsAgmwAgyMAuRZCAtvkGLTy7sEHcFbvfWT4AbjH8f75Huq/CXBRgY8lQuzx29gjxBI+KnBtBDxFgJ+QO/1AgKw24AW+Q1La4rkm4DPEkk+agCvEkqsmQKxSBGwhlkSagA7Eko72DNs4QZRO8NIOUQk+1pAbreGjlGaI3ibENNDFEO+MIbpoJHz0jfYKRngCRymLEUQXABzQRxHOjYro4wBJGwAAEaYYoIeXRg8DTBHZ2oHo0TvwGmLJK01ADnNISnPkFAEA2jhC7nSEl2YHmnAMF1VMsEEMAQDE2GCCKlw4RlMT8Ad1OAnyeGbk4SSo46I9wzPGKMC5UwFjnLVneIEYMWZo/SOmgBZmiCGA7g98hSSIscM3Y4cYkuCLJsCDWOJpAjL4CEnpAzLaHXAxhSi9h2vjZVTDCnKjFWqw/jYsI8ACIX4ZIRYIUMbfEW3maO8YAIxSqCXQN5/tAAAAAElFTkSuQmCC';break;case'favicon-orange-cd68622e75276fdf7c60d1e9d4deee14__dc9919c6.ico':$e='AAABAAEAICAAAAEAIAC7AQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAYJJREFUeNrV1wHkGnEUwPFztCYBRATANhCAAEGAEGbIwEUFhM2G6A4QAJksoMi2AQTZAAZHAEsthAS2yTFo5f2/OHCcv3v3I+EDcO/reI+f9fO1dVN3E2CjAhcL+NjjX2gPHwu4qMA2EfAUHv5AEvoND1ltwAv8gqS0xXNNwFeIIV80AVeIIVdNgBilCNhCDNloAtoQQ9raNWzhBFE6wUl7iEpwsUoweAUXpTSH6H1MTAMdDPAhNEAHjZih77RbMMQTWEpZDCG6AOCAHooJBhfRw0G/hvHrNEEfXbwMddHHBBtTd2Bz6zvwFmLIG01ADjNISjPk0tyBFo6QhI5w0tyBV7BCNqoYY40AEhFgjTGqsCPfShzwH3VYMfJ4FsrDilHHRbuGZ4xQgJVQASOctWt4ifzeKZooPDK0iSkCCKD7A98hMQLs8CO0iwyM+qYJcCCGOJqADD5DUvqEjPYO2JhAlD7CNvEyqmGZYPASNRh/G5bhYQ4ff0M+5vBQvrfH6W09ALYCTFLvUfsXAAAAAElFTkSuQmCC';break;case'favicon-purple-d4b02fdcc3abcc374a77c65f88513c01__dc9919c6.ico':$e='AAABAAEAICAAAAEAIAC6AQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAYFJREFUeNrV1wEEGmEYh/FztCYBRATANhCAAEGAEGYIcFEBYbMhugM0AJksoMi2AYRlAxgcAUgthAS2yTFo5d2DDzbO6r2PhB9APY73z+e8Ln66qbsJcFGCjxlCbPHL2CLEDD5KcG0EPESAH5ArfUeAtDbgCb5BElrjsSbgI8SSD5qAM8SSsyZAbNIErCGWrDQBTYglTe0ZNnCAKB3gJR2iAnwsIBdawEchyRC9iompoYUe3hg9tFCL+dOX2ivo4wEcpTT6EF0AsEMHeTgXyqODnf4M489phC7aeGq00cUIK1s7sLr1DryAWPJcE5DBBJLQBJkkO9DAHnKlPbwkO/AMjuGijCGWiCD/iLDEEGW4f/2WIuA3qnBiZPHIyMKJUcVJe4ZHDJCDc6UcBjhqz/AEMSKMUf9PTA51jBFBAN0X+AKJEWGDr8YGESTGZ02AB7HE0wSk8B6S0DuktDvgYgRRegvXxsuogjnkQnNUrL8NUUSAKUL8NEJMEaB4x4/TG/gD0xZAYUYkFLAAAAAASUVORK5CYII=';break;case'favicon-red-c2ebb34a8df5aba28e15d87728a151df__dc9919c6.ico':$e='AAABAAEAICAAAAEAIAC7AQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAYJJREFUeNrV1wHkGnEUwPFztCYBRAQY20AAAgQBQpghwEUFhM2G6A4QAJksoMi2AQTZBhgcAUgthAS2yTFo5f2/OHCcv3v3I+EDcO/reI+f9eOZdVN3E2CjAhcL+NjjX2gPHwu4qMA2EfAUHv5AEvoND1ltwEv8gqS0xQtNwFeIIV80AVeIIVdNgBilCNhCDNloAtoQQ9raNWzhBFE6wUl7iEpwsUoweAUXpTSH6H1MTAMdDPAhNEAHjZih77RbMMQTWEpZDCG6AOCAHooJBhfRw0G/hvHrNEEfXbwKddHHBBtTd2Bz6zvwFmLIG01ADjNISjPk0tyBFo6QhI5w0tyB17BCNqoYY40AEhFgjTGqsCPfShzwH3VYMfJ4HsrDilHHRbuGZ4xQgJVQASOctWt4ifzeKZooPDK0iSkCCKD7A98hMQLs8DO0iwyM+qYJcCCGOJqADD5DUvqEjPYO2JhAlD7CNvEyqmGZYPASNRh/G5bhYQ4ff0M+5vBQvrfH6W09AE8YAEN5XivhAAAAAElFTkSuQmCC';break;case'favicon-blue-17e440832c1eac07527560a0d6f0d2ee__dc9919c6.svg':$e='+<bATb3V?$so%el,wEIwK&mlYjGZ$a8-HGs8y$j)-UBmQx`Cf?>]C6?xmhS1<w
ZNSJl63"aZ]nB<rgk|tG)vC,pHYx;Wb2NVXBMxd!lQ=g0"!mM[]c*SW?7
E^]B7t[fHolNczfsymCW
CM~8Ult[(brlOx`71nDc
H;N~ybgNd*l6LMbRk;>%06rQeBnDc14r_7Z0b9uqO=xV5=22d05hr#V]F`V>ZD,#JA9[$XEV-*TBfz7Z%
rEJw!G!cT+[7>-u:iVU)N$iv%ySN.`._&}sV@FUIuH)%cY-0#OXWPT8t./3Oid8~R]3?9n;/Qs
Y2!K`1Q9d
tys6C=xmJfXFCT%0xl`H&%njK7`N[.q6jET6kV
VqmiJoIrZ#rsP~q0vDN<FH1w9l4R-?A#H:#onn0@0]3dNk3,E{<7r;2q
u)F!d(nhskXC~JT4N!~!g52r#`3hF[%j
oPE~ZV(W_~g#t?WXQCxEe7)ZQKGxei4.gu_R>pAL]HDZf!uSL)$_)^vZ:Xk![_HKh=C|S~PjqHcgjUutq#-~?PmA#<MYyg2R';break;case'favicon-green-bb254c95a033f67e3d433a3df63e160d__dc9919c6.svg':$e='&<bATb3V?$so%eo_t_hLePj9EjS(Ic^3}i[Os!U@i%X`9w9h7
[@
I:KPV|A4v9o?tG^4G8Kl/Za|j!Q;%pO#+U]tOQ@f!m@5m(iU+Xd
:mOOX[.7/V%^=Dj0`KWYnDy%^,cfeZsrK*5P&I[0
$m~<+JorKkYLM7yy$Aw$[w/57.-wX^0JIMH;`
EW/c}a9c

eAhG[68u92FB)
ToD/k0uYFG=PN>>d,^BJ&icL,/i,2N?:udHuPgxk>l07BF^82,>cspK:`^P,q[%?5=4<`h.?.kJ"X_a_mu|Z>-SL,/k)gDk#g):;if"T:5u9
?>JfFYF#KP)D%8xDljc2l^mJ<^%4+Iu=v?FB.Y^67X>9:@KMfCyqQL.-Kmn#DsAler%=^*ps8vI)CEG%8
bknN$znn
D-t3DO&3,C5<7r@2q],)F!d(nhsf)H-JU7?!^"9+Xtpm.q8>NCVHgU$kcVodiJa6[qLov!)IR#}x3*ku*P%3jGe?w?dILBVvhJ~,bFMpBcD%CK/#{0d-|Mu[Pn{fe.3aFbOf6.%,.opHOIuO9';break;case'favicon-orange-53ca3b502d7fb29f01bfbf87fc4d6b24__dc9919c6.svg':$e='&<bATb3V?$so%el,wEIwL!M$a_R(Ic^2cYP0
-+_=VtkTnq5G
]9Lh@D6K6GH(sVGneM;s+raV;M^D!*+KY*IOa=3Z`PmB;9_2Obq7yBg2Z%>bw,v+Y%P7|fhq*F156s0beWd,6`ay=p@_gN3Z=jciDmX_i72]oyww{Z~&Ut4M]*axgl)b!a1ju/uH<*9Xo
=
Ul9*$m_7{*MB>d@6aDhpC0Rt_1D-,/u//bLNxN!Dc[m?bh@-`9rmyGW2b(F%J[Qafv1UZr>a>F6JA8g[!0b@[fJtmTv4e%TYc-0#j"5iK2z=wl
*E@MT<:>g<H|W|2(rwB
g5j1,D7hGqj!`uuvXM9_hJa7+NN~VgB]NK[T3a!z#1A}OTmcvh["nTvNeTw$$;eT6q?q1?CDM!=<1SnN]QTt9lj&eNk(4c>}6hisx;^`kO(cefsRGicdC|"j9npLdO:cM^+&QT[{IL-Wu]3@7yXoO46wh/&9Sd+Vo~(7pzhcG()N3^n#?6MAX=Pd
]uX2I0XtRaah;-u5eKzydbLJw$UJhJ]
fe:Fe6mt>cu';break;case'favicon-purple-4cfd57d31ab991e8071fe34060cd3123__dc9919c6.svg':$e='+<bAU6+V?$so%eoa6[DcHOAP_Cx(^^F;2nJOs!U09RM?Tw1h7?fDMh@D6K6GH(sW:c#bW`9DTcKpCf,1a1E%kD+5q+F]4B,8UB|ML]o,4O$F:-Sutmd.1l:6ly,?7MjE>rM=td#VYm/o}bPN3Z=AH2GFCrK4TIrcvu65o!8H3d"9V^}B7s3mnUM&Wx87ya:7X
mAh1Y7Wu72FB8FRoD/k0uYFG=PV;h%?KNUP%#GQ^
2w"
SkNgvI0*kTGqx))i0|m-597vz$R_y_,e<pwj=Y`"7[1E)$2(fp:Ex.$(:Op<o1CeTD_yBV
#FT:r
y-y?.@i`K.+Yg?j_Hk`_>f$l~LS;5RSh?>{b"
&+evz;:0eol+,pv/]hQo|q*A;p{F69^H{
F#X:3c%4:=Hdpu{k&lMXV@E/#GL#?#)e-WHQiGP@.%eYsSRXBg!n9tO*z&WP*$Up~J1]E18NCC{!iER:u`UBQ5(*#viS-0S(llO)OsT0bALBjGk4Bt}3Hwkvp!81Fs-^5[}2H/0[(gXX++<t3ZZ577
3fS]`cB;^5uWM3tX';break;case'favicon-red-a006e401273230fd6be80568c8361b57__dc9919c6.svg':$e='+<bAU6+V?$so%eoa6[DcEe<SKeo.[BnWu^_0
-+j@96@+X_5GA4^m3%R;yn_USCF5vXi6B6jvyvvy?qZYfND@5~KR9wPw1q,+w{:cwGa2aY)<GPqWy/nLYzy>c3Au_/MA7,dc
}`rf-`x<FH$&bI]FGspJPra.)yE]$w~aKaM]on_y4%i2=`y?0`vYw6}rUy&B3JD1F
/B
o8ro30<1Tp4r,.qWnFpndQQq#ek`C+.f19/9#q+uNg4bc6H.9(02NJtu){yYINu`Uzs:%?o1GH"Lgtxvhu>9uq8)/:th8&TH,OT*]5<Ydlap!w8k>zUUDvh@h+)F+>T8=R`(;8*p2Il^<$eSAzo6lU8L_P_Yh-i#lD(4lV7"52"_UdLUTuCV+Yf/[^)f(~i
.,!Hkau}dsr
i84
>s)_:!#hJQ9:ex&|].#nB#/g7`Ds1xz$U+"f!p-.*YXigq8vUBF!9lVoojveL
+8ox,X;hOaXS*cTW+ODnn.]r,!3BBNvdJ~,brQumcAQJa9E)x*rt!$x~u(xCb
69OF`xI}1->oD?M:yg2R';break;case'apple-touch-icon-blue-f2a5f6f50418d7293b806faf273fe381__dc9919c6.png':$e='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';break;case'apple-touch-icon-green-903cc109ea077cd9e91508416c5e335a__dc9919c6.png':$e='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';break;case'apple-touch-icon-orange-6efda14fd1d3c45382c67d7f324bdccf__dc9919c6.png':$e='iVBORw0KGgoAAAANSUhEUgAAALQAAAC0CAMAAAAKE/YAAAAC1lBMVEX//////v7yyqv//v3qrX399/PZaRL44tLjkFH9+fX007rpp3XWXgLXYQbbciH34M7jkVLggzvkk1byyqz007nYZg7+/Pr228b++vfqrHzhiEP33svii0j67OH67eL++fb//fzwxaTopXH+/PvstInwwp/++/njj0/XYAXabhv559rZaBHhiUXhiETbcyLii0npqXjZahXghT/YZQz228f66+D23crXYQfijEr45NX45NTz0LX89e/ffzXZaBLstYvhh0Lww6DpqHb9+PTabBfefTPjj07opHD12MLxyqv22sTbbx378OfbcSDcdSX89O7aaxb67ePz0bbnnmfpqnnjkFDmm2Lll1vbbxzklFbffzb11r/abBjkllnghkHkk1X23cntt43338ztupL44tHijEnqrH3oom355tjlmV7z0LbopG/rsYXvwZ3fgDfccyPfgjvuvpjoo2700rjopXLzz7TvwZ777uTstYr45dbbcB788er11r7ZaxX66t7YZAvww6HbcR/tuZH00rnrroDcdSbnomz01b3eezDwxaPstoz34c/zz7PdeCr55tfxyKn56dzzzrHnn2jfgjrnoGrpp3Txyan77+fklVn99fD88uruvZfmnmb77+bqq3vefjT++/jZaRPtt47vwJzefTLdei301Lzvv5rxxqXyzbDnoWvfgTjnoGnhiUb77uXttozeey/qrn/99/LZahTtuJDuu5TpqXflmV/ijUvlmF389O3mnWXvvpnddynwxKLssobxx6f88+z669/YZw/23MjhikfghD7deSzabhrfgTnyzK/YZQ388uv118DzzrLxyKjrsILuvJX449Pdei7cdCTghD3z0bfbciLggzzklFfss4jWXgHXYwnXYgj78enefDH56NrstIr56Nvqqnncdif78OjYYwropnPqq3rXYgfcdijqrX7XYAT01LvrsYTWXQDabRnWXwPcHI28AAAFZElEQVR42uzBgQAAAACAoP2pF6kCAAAAAACYHXuAjqRLwzj+1MS27Yw939i2Z23btm2PbduKbdvdwZMce42u2uqkC3NuLX5Hcf6Nqnve9z/e/3V0hoYEBgQEhoR2duA/Qm93Dx30dPfC6jzcbVSwuXvA0iZ5UoXnJFiXWwydcHeDRfl40ylvH1iSmzfHESzBitw5rkFLXoOcgAWvRg9P/lXfyMjIu/lPd//8aR//ytPDsm+OUQBJdv7DMIBRq75BegMcorEoWy3a1vbK/nvOs6cPcwura0YjhoZejtZUF+YeevosZ6L/103HaHxYLZoDMN+DJTGxEXQiYvp7du+AUz3yaOl3atF2mGxBv72ZE2h+/Os4qOqgPBo3AlWi2QUTec2aQRd9dG8V/l2nLPq3AIL8+Re+suhOmCYnnprci4NSqCz60GEA7+Rf1MmiG2GSd8RTs4VBkAuRRT8MSQOkLJL8uSy6AaaQmoaow9AKyATKoo9wFoClk0lOkkXXwwwP7lGnrKVwECCL/gb5AQBRJFNk0TaY4Ngp6rYs02n0EzIiAUATedb86F/QgPc6fXsUkXxDJOA2jT8w/e2xm4YMO7sQv0mSqQC++OUB0y/EPTTkO85uecP8iyIAX9pj+i3PTkNOKw4XRfRXvwIgzvTDhcYMKY5xRTTbMwGYfozTmDH8S49KNC8oou2wVnS3WjR/I48esFh0r00tuqUDzocA8dFwV4tmfrT6uCU0Wn2wvct/Wmj6YNtKQ+YKWSE00JC3CFnW3KEhMULWYkFDNCDAS8MCMtgHZhmhAelQcnOnE4MSTOM2h7rFSqKW6h7e1Omta6DGY9BGBdugB8wlVTRTB/+ncKZ3wE4H9oE2mO+77dRs3Rsxnq7OxoZ6m62+obGzC6+GVL6dmvRskiBe2pNYf7rIf3pKMizis5+rpgu+d/UKLOXFk4eP6Vzzjw99fz7E+9gUKJSUXb10uSabMtk1uZeu/ug5FH5SCxG4fQfUJCd4zRs+f+7R2XPnz8zzSkiGmpLAMYhArsyETsfyKCqaH9kFXRKOUlw0d/pCh7qbFBlNzgnXnFxLCo4m14W5wWVuP20nLRBN2jMi4ZLIk98mxUY7WNtYWSVhXJLX7dfvJEVHKxzPentcMlSlvW3F+uV0JDRaoXjlgQ9WVJaf+WGiD+CTGDRcXlnxiQMr51JJfLSqllaqExrdQkOKIcJFGlILES7QkA0Q4RkNCYMIbstoQKEEIYLGqNuQFwQ5Qt2uQ5gY6vQtCHRL34apEkIVTaZmryuDYB79Q9Qke/UaiLc4vpkua565CNYwJXUqXbK8vwtiOc60SRmxr3ECrdNWRct/XQD/JjhKCu+vpjPN1/x8o+Fo5DWIwLHNUPhD6cc3zAz0pwP/GTNTH5WWQKF0TNQQsGUr1EQ+f+EVFR4WFh7l9eJ5JNRcKRA3uWx7H3T5/BdEjlvLN0OHjVPFzohDd5KgkY/fkPDBdkY4NKnbZolpvLZMgouk87+0zArh8aOtcMHhgz3W2nuc7lecHgpJn/xUPknR0XOp0HL5qhdUvWvF9FYqTLXO3mP2qdz7/ekZSxbMj06av+DTn0nvv5/bPts6e4+HNORXEOE2DXkEEUqKacDLBxDiOg0YgRg3blK3tWsgyEnqtgrC+FGnAYgjvZm6vB8iZU6jDvGRECotlZr5pUG0sAhq8rIIFjClnRoc/Rkswe1rX6eLAlMkWMWxE8fpgpu3MmElv796jRNoP3EDllO1ejKd2jJrMazJrXRk/ZuoxNGsD22UYGmJm/bu35eXX9DaUpCft2//QNgu/Kk9OBYAAAAAGORvPYi9FRsAAAAAAAAABIY9HLkA16UTAAAAAElFTkSuQmCC';break;case'apple-touch-icon-purple-2388fa66883b7c5e6b4cf5c795eae8fc__dc9919c6.png':$e='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';break;case'apple-touch-icon-red-507228751d2170d047e72142d2c02390__dc9919c6.png':$e='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';break;case'logo-de272eb4bdca9c6fffd38c073270fb1a__9d7e398f.svg':$e='(]^+JbP.FqjXYdorFxH%oTmn1#,Na[(-^<}T{`+Ahl-RItQoM;{4bK}l["$V3F6U&V6Ey@S8#w=t>3kaN[hLow+fWEUH+K<LoXqyEy6JupFy-JyK4S8q(7tl96;KLl/F|,Cz)p?p(B)[axu/4u77-)nvU
R?vPex0x2ynqlE!VMsqy.7^Mtiv[hKzB^oh,VovqjM1XCS0v]mXW-smT}3TK7IVEL2YtHsc^Dne,}uyaN:]l/HJnieEbYSTw;KD$c_8p_B2y&,]pd?W+OvtUWi,FjFuW3Gsr=[=,k5ZhU;]w50sP*<)SM
tcO5=+WoZrY8Iq)IW=_gPo=RG*5hngIJV?j"daOWXS`x~L$e])]A/t{9it,:r%.89Z!;1rZhBw]6K6fQlvHN$Hw,QuiFcFpKmc{y#sO=!8QV,<+O&P/25]6vLiFL^ILo%v=7LZHx2=IpuT_qcxR7puVAY]-[aZk-!Hsk3@pU2?.=/khk7TY+8^U^mMe^&3|d[5+h9;Y
kr~/LPx3%=u>(#a3Hf@EX)<u
hpxoYBBVp`W(PvmMW
B#sK.gGL@Vd{:",35}yAFD8*Arm#eht>.nM#/VX$c0nfYn>@aFR7y~^p#M;>Hr]/"5-YOhURoN?g"zr)rf03v&=U+I-CNf2fyI`@2rCNwy$T>{3b.C"<mw^pUpNV.:1gW1HboUDhY6rSWb#t&3^ZZCWe([&88L?Tb:rJC{:,[0cUZh4Z?E>_4(eVbK+W4cj3K
6JZ,1OCPNi-r:-0+h9c@$6(OPFO,>/K_<D>?aD4|c[qNng
#]abQba^dg.vgT
jO4.nVHH3Y??RBOkYeEql7Z%i$fv:!`8=ol
<6HDyKdV^.GOQE<w848Z0)$;-[WOZ($QN.)/E#@[UhS3g@bs8$w@iRav#q,^!">riV0ad4mzAx-tm;I$7+G<hFV$knOjWB`9D:,!6.B`@~D~lLM@<M0y2w8SF<2z*Q?8suZ!O(%O"i>PX9(r?[=%/{TBK"Y5o,?wUbppvc%SDB9:2sH.!E?uV/?
m,@iTyWH"kU~.Qf,)]TyKwNyoX6LeQ(^HfM@6j
4o+qU-cQZ:uU]TVg=la`BE{x<YgRQys@]DNHkxs-[I/xZDH(tx~I,OKPNZ/@fA]-^.jOn630BkZbx.P^-,m);cooD1IAp.,``B4+,etGxX"U8fa;-m84^sKe*v>@/HAeYMWEKTQ)eqhf~:)bj!p<2bBA{<+-LC46:QPR:9CjzQATX#[YXUysw]
N.c{F{GlQ+bj=,TT-!C{[nb4XXv@IXBg4/"YW.M7"&I]1:iT"%EKDl:j![3j6cJm@H6qxXW2/Z3Cbs2d^_Mps>DM!ccnZ<i*Bk_oLtHcB*IHFOrym<(YWVBvJs)l@)0Z
=r:E0<}*va7n8dz1"9z&IAIi9Vql_/_GmWkv_:7+J@p:0<f]@QLtEi=rp`*wKM:5vfI1|nK.ne&[~?Dw9$GKV(o;/%`Hmip$>""Ue?0@$iQ%0E@-8u^"L:b>FLzv@>2F,<8Oa+M=?1oWnKWe[PvjmLPP1h}>?=m6-g]sv1UozX%`5v(*-1kTxb9=scVhWiuXQq$+!BPCVI)xDF&Cnc4ACZZ;UYX0(]s_GY!vk8WEz/4F"DLf=_6%>e[r;9[xM
*??SKd):Aiccqb{<(e68*v9Xya1
}IiKS_We9OJP11tEgIuGCfq=227bEC06#b8:]191/`0PF4dN3NCRTej;PMj)t1HQ
Jk-U9uH!E]5fjhHQ[+SE@:i^g{tA^Al~K<U3Js9&fM#B=^50#vEFbxFZ5L?Y3#pI^GKK[GYdMVSZS-kM<^><@^4f#(*V&b>jq3*^KjD3*Rj:sZUT"F5[bbKNE?X;A{TeBBBDDh+O^.lXKwEfA")l6+[^TWA?4gsuw|<
F:E?URQb2aF,p$7S90=|txQTehv2K|GQ]/#8t!]{/N<29Gp"TPCb9HnMc}q@$*7z?v`WcA(@>t%Q%t2zFCg.^la~3eLCq_$QqZ>erybXCLsr`Q)1Xvng-<,eXT8Gismd[Kh5k)PClZRUu<<uVag@F,=B#6wrEv$LS(Zs^CXo2:d/o%A%n/ZC1%4vJi9[DJ7|ViE>Q+(A:M5wRMExVg">y+d/OirXu6Z@>[`*:xk1k:,a64QavY*$xgkb=eYrj?%BUFsiBT>VTy`OsXZ8T]!(4(9)TVb`f![p</Q,?n.6x;Vcy,ezD|@X0Xca@ad["tI%:wj?P}^e*sm]oP?U`&OhkEg+TWAAc5FL5H.DImYqS
4fIvQ%7XhX2^!kthV*<ddA1ed`@9m6@mZ7)ocp_a%uQl@q0U??@Nf?_0.+DqepA/LGctQ1X(#=m3EmLVkn?I+7r~foFQN=BUF~8$nF"4
{9LE>C+$c%w8vSvNB?}93S#K4kkm/+t;`RE%e
;(Yq`=YE$3,5|@/mXG|%z7YbGWWmFH+IC;f:U$J6vpyr)hV7nU62e3PYwL~yj.31;lgq)EK$.>bGaY5`n6mlwn3@/u`vQ:9lc4J6.&&ga%^j!0joCA$LU&#g7trww.(CN=l2:G1CfPS:KH=d>Hfpi7[$X`,7wJZoJvRF?YKmSVzNW0`Q0FdOqAIS
n9lrNOU01c?:p/5y16+Zkgo}`M)D6xm>7RiQ_b%p%ocllip!0).myrT"w[53iGRZBt8z<.d6p9("_WYy1v;v.xBx%3c3&hfawJgMtuxeflyK1.-:wQo"f_z&)W';break;case'jush-b3a93b18444da26820ff61746521dede__c1fc09bb.css':$e='%X.mPb3V?!K0u25Dm[994[Zg@N#Q)YOC=2R_hE~4)=>cbdia55M!*B>tthOR~qe;I4(JE7nkwCcvDp&`dDJK
f-B>jO*,sE/El7[<CeY-WtHaF_.kmd7o@TK)f,bmf|yor7&?P^<qeg8="Q1IULQ7R}m#!4#2";]EMU!F1OpTIT56:qJms/Dv-ge06DN|n`FW&*;(q:eY(cbjkU?x]gUap[%36X.0y?`E_>T!nUPeLxWQNBQNxgW
`cW13j?"h~G+;>ckmN2+
!n%Sl8/pL[B8
M3BQ=4I8t<Wims^cdx*+69AM:3(4#D7NrL5JU;F-nR)NxQWs7{b*3#%wvQ^i5"h{.StgdiF@(/BD"LK.,r2{$e&b4#$3x
`jO"8tQQ1CKB,TYk$:TIGnJ]L
WcYUpj,c5;pfH7%lebNsHuwv44..jP:
oZb0YJ@}qOxs&)5?s0oVA*
swu
jafJPvJQCQ5?:;JN^klF$8EV7&
J?y"=oJ8]]rh5ZK31++0s/h[@)W/]t4{Do0LZsyY]Ui=F:=Lj0OiN0Q{mj^W2%j7&7^of",u?pagL&"iw=-;EKZzP?gdKNd/SR.wcU#s5@q~Y}(R:VF$Q8dZ,L)ey.Hq2O=)g/K}w)n3hY`Mh>::q<VI?VE1nU^-^D/qa9JwIPcYCppQ/X@!6ZZjyFhzsSz&E^ke1)2F[wC7uibhCB4fEU_/mdWy=C$?"]4Jab*)fpfaP{Xx=d3$rPj<p5Yo$$mqn$a[gdSRbtw^Cd:8IL9Ep@:NwGhGJP+=>bUa%5!)#P![lKsPx,lj]_TA`s)}ui[?@K5<"=yhHX9ac1.(pCt<=mY#,*@Ho8y`eb"03`0_6Wx1`zEp[UTJnLo&k`Z*%U;u_AP@.ah.ussF)SKcuGHm@)HJg~D|K@x[(QcKT7b133MD8{9lxGHdF&gk".u/dfBj;$`frs[]W0RtuZ<]q+TW7f)<cBALJpw,4G-PO&to>Pl>;:<vNY$aUe;BxF$7V3N~j=h.gDd*D(06YWAm/nioW)g>F(ql[`!L/h`[Z(V`2J';break;case'jush-dark-f8dac59c6ad1018686e52a0e0357e421__2ec7793c.css':$e=',Gjwm6?!R"-YJmoGR`r@~cEv;#i.*-_KUyr[0$CF,>/n=#+liP*01.(73:+G.C]Ek+^-h&|hnGDq1:ccpxU98SxFh5MU%c+]DCcezAcUOWmDiL$
)yZA,ICx<`.i#E%U;lo*kf6u&LQx+!%1t]iP#G9;zGT,4U2"ha>hB#am`y1YU6$z!l#C%';break;case'jush-9e355eb4d469abcfdb02830fb404cb16__e60c1fa7.js':$e='%hc]XtE.QH5tWOsHz^:Y=uvE6j`-DC^dLu(a^lBn=_]GY8L8t-gQw;<G`/gyzk1lVX"X9q:uoU<
zMqZs_sbjGHy%+sJ1GqLseiq8xn#2,/F3;8BAV^
<y63olGxcMr3YX0nK:|,se8L5C)y
D"bKsot3(kY"["%nK(8%ehLza(.G0kC_GaR*j)c<8"J9L.(sg/.8g/E]nwFj_YH$l/Eoha*/a6-R,{c:d&Cbc8WGe;Ih1-5S,fkVn#QVQAd#hD.aupp4t9fVP[8*X}iM[WHSF{M9fd_FcYV$wT4+u)_FTM&p2gy+ZEDZ"B[k0_,L>]-+v+C8y{hsoVU&lg4<a_P%<<el4v.b]Dx=ea={N+(xN@[/<(9d*)Kt(Cy>L7F;D=591@,qZc^.vMY8iS:rex2*N#?vTm41!YqHR*Ttkhyj=45
jBpqlaqOEb+&rk21ZqHF#cfvM4mK@O1cu1LNoyvW*$jJcDXo,1O|9p_J5kh+sl,A2`3Qxq4Gs(cgCyX{w#x
ueGp[Zr~2A<UW~
On$
h]RhUp!#a+0*W=2J`pPI_^wx}nVe],S>[yRWqy99Y,:*ih
j^nAUub<"fyIE|U:+ArVkbMVU=sefh+n7
q$kQ,2

r+Y*+qX^?O3IRL""UP%Bu8a6^H,.^/WGvQ
t5t]P"3f$gCP`i#O8XL32LVJn->3o
L+`Fy)Vm;L=KiIA//WF@BE3(YWy
6d/Sww)-m,_S?Wl)Yp#,ku8L}2#LWq?7]ZXy,V]>vM~>Xa]^9jGP,IlR~$r&$7d=>."+KhRiyPCf{#;jm,4wtt]iytV;iPdy0eUTns2%M6ySAUj>]"7+:X;^=k{,FWCk8?Gbpjc8@^0E}[Kpc/[i6K($])zPY&{u^k:P=a&sXUnlNjFJh5Xfce2@&&yYH=!%+RWyMV>wNn!,y`i*6rHa"lSFvmFZGFlM]^6+T9?y,,HBI&nOn+##-IZ)[qHQ"aGVvQCtcAG4s+C#dEahom4R5YEY)B5vU&NGRsTRMN@OlN
J&+km5,mM
wUIMOELdc9F$Qx6kUs-fUAC=wa0^#gA9>{:pMR+.sk%?AV2L>PB&a8]fxV_x7@C*@MKedq(-kT6IK+y`YJNEVxdjn~108C`ZkO!paAB8F_g7tX/0+Y
aJT4d3W"{f7+{yIA:j1Q<skXB#[d2E(NkdQI[/Kx^llWhcqiV2(05e{_@2Du"JR6Xo8,X^J$=Lxl8KWS+Jy^Exu3,?GNz4SeTsu-E8y;Devr"`3Y1qk5XVk%odb?dF_9i$}x]Hr1v(Ju8*dY*
</Ke3>o@j3)<[r"],bCt^B46qF("j$X9~]P8XA<^{Koj;Z:6lS(8j&mc4O6(]LwCQ^K-K/B+Z$Ti
qe
w*vk&;o]&qL"K5X[4-sl4&!,^T&j"%u#_#=:!E(Hh:;PJT*1e>+h:Ni-vBj,q9m0N
k:Fan@9Xt$B[CBYQu"`hvkZT8(.!=;beU#!>~.(N0+>3Md6e~GQ8w7*1D[bggD0m]qt;rG^xrX5`e+5wDj""r-4--Y=MZ!:b<d/3d
BQqbF]=FodnZu
]3(fqV4=TRt*$D{hCC&@`dJlo#XQnM2LNouTd1m[]g0Pvp-M%l@Eb_7Ml1fA05h0E5
On#Yl(0D-Rs4
49L@L;(`P+
AWv*D_xogSkRc57R!H$X2S%zoR,&1b-?Nt8y=xQ@5J`R(+4"2sZeH*;&!%-c0fAHF7ZzyAk3;(qs;!qSdSE45HkkFI+%4J*#rSA}

C|>BW9km1=-;*3X+U-NU,XwfF0foTTOrpQIHQ;Ni^beyNy^dPAP(#!O0Fa4J?nvVSp,{h1^m_-qNY+p{2PC7]>8ln{MF/0gJZiZkhlh-Rb7..&t)6O.5Wac7:.HS+W(gf&E2"|6PhOS%,r#8K6_}#HKv1?#{+#kU,W^Len_>B@]qmBO
NHR5bf5ihz:.A4)oeZKq[v%[)?EWKuD`J,tv"tE":j5YhLYW$=T&is@})ZT0/C;H1E"~:(6moCLgMIyIF.MxK"gRHV%?C;fFNT&bTT:e"j
}N<<5$h_B[R>})Ms3##Z..qk&xi5gMW"l<}#TvBP|BN<fbJp$Nqpp)]:,GxGE
g"]%txmH3Wx.kcb[P!>9Z@l<|y-*2G>9DC;xb6Q0Cfs^)UBoOu3@k%//w:M5@t19zujVhm$k!E^-=pm:`93/:20xqjA<k5hHifX_91C-b"^[0Re114OZn2xfFi"9@qsiRs=N~
&Mu#O.IG;"M9vCOp!q=WKOZ5opSW1^;%Wy}.!.YFumIs6*o?%6$g+L,l<-d/D_#m[]9Gw@^UwwJ05r6]e+MV"*/b@yn
)h6xCAo>*c7g:S)^[m#x.e&%=Y?
h=rkNGa1e!2KH2QwF&(bS#J>TPl62_>&^Ym,5)a8:*zW)YXGO@;rZX:Y*<Z)-2=$uS8&4j%(3BfowMu/z%&S75qJW33^wJB+h"tI[u=]*ux?Bvj^Ca.iMB*7M6$VsK
;+#catatj4k_%jZTU"vYtdc}@P"0;{n`nHgSSV_z)@kNkn+i>B/
RlPpp[lz4"*{$;.Z,I<6$"b,:7Lgt#gxAG!_W?QC)
DJ"zESUD)}7$&FUUx%j@"ZGCJWbB!n.|r!hH_-wNr#+KYPN[2HUQyVs=)qoc.#!(:02dNawO,!u$c
$:YTs}:,7rCiKYA"+ItZRq.O<gVL8ISh!WYyaU90I2k58(49:@P1$6xzdYvzQT!.={M.9z0zBVde!j;.3J_|5f({<9aOB*D%#-"U=O.yTbDSz%9BuvmZ0oJEta#>)rgv`9[S@PIwr}"z`D!;t><2^)4QY#89CR>r2fS/;NYjX-`evRR8`J.Ne}#>*2a0-dh"tjx)Oy8>1EVup,7IDBks^d8Z7T,emo*]k<.3@D)4@]r|Oj&Ru~"vQ"N.fKl}%B<q:!5+1aj,P62&>w0$)([jJ6?OCK=LXj<aQZPu-}0oDGB[.p=kQR#7&ze-HzCY92NGoXywR[;?P|h2[OFKL
"q_G@
/rff.Q79`$5_cXjp5#SM@Pm}_QJJGJXR,#ZAU`3(1.=x4K6_4o7sSG)|.F[2OIE^Ztigyb8XEokbW61}RvBbI~ptd*kM1z>:^aElIR<3?v*{Q~%xN6->WdbkCzrDmpbQH2Mpi[G783ChY}4_+}L&@;u.%:7Qv|m
XLFaEJ%D5^s,BYxD1[6)3CjQgT%d!f^Ma^!Vb;KV9Q+18h2nA&uD@<#95v1DFY>G#ywbL#`]!jS?RU5]!bZz_/w@(!J3K66*UxuY#.G8r<KEQ@?a/.@MQa`pENG~N3F@a2Fe#UOi)U[c4cH"oU_?.[ioL>E0kS3#>aEIfh!=Z;ETNyN>n&Ok`G8/S
>elU@G:K$#3|?mthn@?j/LDAkD>!9jrGE?T*nI5/9_AgvF4
=U9xM]O!%bv}KiX|!yH2Jt?~?J_DG-!$tQf%MID01X1/Zs(OVCsJk*i_q;hy"#v*:?_!%X_ConFe3u?u5Wv+3{#G_b[%SpcmJ&ln;Yf1F4DSk*+*7R4[C4_%=(Zw#WFx(RdE)1uCF[
A#RKGt`_3.B2iPztp`:F~$9RBs1(Lo%SV:(dou~+(d;R-!xwUTq4[*1)[hfC:9h^SK!ux+>D0P&twWA3G95Vt$D!8tr)!7F^n3fv=mE[U#KU-Eo^Tu-k.V(!.#?dCq{8>NJ"rqSYejyh<7n3Wib0?M1*&1jw;cy2OSf)H<8^6Z[Ac2BrE(jEEI<<tBfft@BB&n,EvF&$14,y+W8^9AR"p,iOB.qdnoWHIyVnpTSxmt(.qM<yb[jk(c&Iq>s_y
Bu#24sO`Zxk#w=]D*)i+=?wUB:v`<0b8(;5Tq-Y^TZHI))nsRUj4VJN#6G7]38_8+0N!W2@$%(vm?i2X2i;v87mg&.Bkgi`$8,{6.UUl.Ias^v>N_A*nJ>?
5cI7CwQov]q=Kv!AiTOMZcu_]thqXP[czh<jN/JNzW8a6w2a*y+nUvmUgXPVk7eO7t
J3+7]&D_>9X}#r#uJdMChTXXFsE(6i<D`QRMG|Y
9
yVx-Z?.s]El:jMJoHj%[2"LK_~WGH^gW+0XW?--_K66)+*7u^!>`g[;)b,)@_Gm<H"UyR;bQ7>s0J>9$S)nA@mx<F0F2owrF5.nkrMYfF?v6OJUrYxJWx:1=XRRV__c?F(4wj/$``^?m7|"_=Malky)jZ%]BV-1>
6V.mS*
7@n)3sZg=O_4pJ$lKZ(Y&^G>B<Gz+S504vtinOVdfFm6ppG7C}v%4ol+Fzj>_M2wD:Mm=%MNB4+z-I4uVRO(l
gI?2ypDa#LHAe>N8,o%i42V8#p"jCp8Qx)S/]niUZks1
ne~Do49U-]?`SGGp`Yx7d]PhFsb[`0WM1(Lcc8sO.j@i`.e$9.UuB5}YEsq?^mlJTMHH[xwxv;[33V|)c+9mumuw{xq_Mu<jXmv<b+L*0$%#&t>fMB&sN*DuUkB>6CrNv[V47mgH%HsrPaXXlMh%"e+Nj,V.^gDg{M
cfy5
FRYrlhF2(ArAt25_@P`f=?r@.6l1:Wae.e9B46Kv~"KJ.y1e5#zh[1H
JtOa]a2g),6h
FKk]%F=6)DXKga#|o%y6[x;vD9RyC,sAF>+4xG9Evo>d?
Cn)q=qi3bExNJE6W+[LPa]H*2,_e
4pCeo:xuWO$W#G$]|3o
zBh9rKxs"RvxI*hlj"7n;9JPF]`CkrTW@"J.RRGv)$c1X]K&yxqFppuMeL{r0_4o2><J:tLR9GnpOnUf>>}voiRipD&rw-6cN%[+T(>!jKs#VA@l[Esf"
o.d-RV#SxaL75*,=#)2;Zw>`!K46(kbnm
;R@34
P63pb!*<Fyx4%J*u@,Je^)~IfBN%jM#@Lh2y3w)h&YwUO#vD(rW4$sgNKHCKj>c*xXN0
2gC&ZTKtFG"oFvSV`Q65Flw:U.H0/Ojz%akq$;GBy`P4]jumpCvv72PgLf?rM_j$W.b^ylV??I_Cx}uk0N!1rR><dktvC-o6>h^ZcpyFc@xT`nyw=ifQ)_tUXy&P)5`7;bHcW&AH4#,Al",YT=oe"cZ@N.B%^!@?Ux$j[,ht*%u1!8d7pOAxGU4(8QOK@Jn~B
P,;PSw:#P0sS`JE(BmF[J|[>>hR#=;ww.Q<QwYLlgijd^fi@0lbi.JvoqGK;/fd+l5N`iG-4WT[$!sav<Q#bC@bdX]R=a/Oavh>8rDq.b}mr!yNj0srz!dn]Sl&KWBCEu$nu-T9}8>1%.(;)tzY:SV[n$setPpD-$$[6n3y}YRuVaNue%-1KS8y5$Y/Nb@-n@#rpGXnHmb51tQV0:)Yj!"vGZ}8<dnsWOwL]^xeIet+fe}AaL.#&<?Hq>fT7wL2zIKU$iwAhJ1;]%i6/C,),nM;mtcM#[v89,G(p_{Loow*03?F0)bY=o(4EeDSKdG1ijPl4!0;*B-%B^R6+!!c`$TxBWi74h24wL$!1GmOGj5H?A~y7Qr*9an<A;*(rJ{jyM"qSx[R[4EQyM%bnb22BE~3y,Wqkw6xXi(],lO,zm7616Et16ubb+.rMn5=@q.5cfHmbJAn:/(=_)3mj@6xZeLFk?5"$S"A|[+M@!v,FEyN;*S:2Tx2I<i5sg"L[,ylws$ya>P(r7^n|R+GV_N$
wJCahBs#v]S5uW&T+|BAht#dCr4nw+!54!I3_rrMi<oH,Sve$jlN[58.@ZX8Bjf2O~v
,FD`[cTV-^k,=F2&r
O,_^kYx~8gq24CSVgFQZ)p^c5*x`xAXQw8q98"SR*a<wBAss[2wzMR,p#SS{8G3z/9L/i;-_5>7();w>fx*Tckc:?t:kx_w"k7Z)=+t1a`PCx,?TXn+"Bl6VlZk7c#0UL4Ro+^K`#p6];[CC4vv~P}<sUrErm0xgmI>oC.OznUq3Ce/{h@M|M7k|1mCpP<lX%hi;;md%3OdZaxB{wI)#E=4GgM_1NYdA)^hBuIIic{vlhmx3O=4Xr!`S<FV@s2`t+5(,-8bcef<A3_]yko[`V-n[f{Z}g3,=UyRq$[OJbqH#:_ujnDjwlYMID{;;nPK]="V
Wx5T5a85Cl%g=D"ZoE_2vla*s>l9;V
]6|Uykls}bZF8$gT8s(&&8]b:^dnHXffRB&tS>h!)*=OyEF?o@`8!P}H#)(.+o[tbMY+Q4IhvCYYM:i8:VH7[@#M_>`*;jp+~)LJRp^(0E7b39S
Z!iKFS^>t=QGTxz5?oJYicm9}s,@yl@Hvvp$3A860N4`!9>?GXGBN=5=K/r$QL;*dhN4AU|CK9XGm_uUAieOl[>
noO:=eYX?v`mnV"AnKsW,FHX-H_3==l4pK-"1Mc;W*YcZE7el0Pa2IO_{Qal*_6BOGYh$08oVWGCy
X,MfN]Nb0nf2)5[<{O;0rLMTT(s;cE,sZOj!}RC"n:eaf:pPAkC]IDJ(y`IIWFNo&,nlBcCM^B2u+@xe,3B:Q+c:).[)9%o*!dhf2TS+2py,kos4Or>ewqiu44QKzL}s2LPBM3*z)9QNodjpHjrpS1$dB0|b2<Dj%#/Jz>uBVUU1(Sut5nAAR`^[QR16N+3RFEmhG_sLKLfi{WR7?aa?]jfbrCP73
(Z"-/SUJ~6Yh4)-$
N5CgBp?
1hm?][F;a(+rDY$i+@-mRVFtQ$SpXE/8"!A)T5UAH0rCPEC{CA7jh
GJm0K/9}Ha<lH3bO&UsuVa<0AAX.d}3uRe5V6w=d)|"2":J%YT0+pQm7ovMdC,9N"Sw83b!`(SA78vRSg;6RFLg/JLIA>zu$Hb-|A6&Jt}nkno2J/A90]gey4m<WamGI=)M"yPq>h
5(gmg}+jKbpdY8"I
FbT$nmxcqFn`&uO0xC(a%]CK")uvBy<"v:;(Sbn*4MwOP*$sUVD%7w(8==6>4+(maxBHBjJ<zfc.9,U"dLa_g[Lae&lc."=>$dv&_E"UINBUQW0XGn&^;-P6):_ggJYj%nhS4LJ^qSVDhb:.yiF&n/oRjn~q}X8f_7W&Xf~mB:T#5/m^S.8:k$-nAPlg"w:=RJPb)qYlFfy8A=T;u-w3#L(r.mn0=*?=D$!R.Z@FHP-[p0yr}hT5XWiXvMf,MTIxOgu[t)?1[!pmI6bg!#X+Pj31MMZ6=ufs{$O#vgLQ;suG)vDt?ql58uPbJ]f8yksG-K~[s)P#g
-<VL85"ic_um2=T6G2h1[
Tb}j8YQ%<-rFU>rLZ4Cct<|c8c@5MOGnA@D6PBJ?%Luc*6>gsQZxmqE@,f]ja(Nl@7hu,8BXv"l:gijcqDZLj-+m$7NNfbo"]0x,%2ABDKP!kU8&<([FzZ&dhj}m#kE"o4}Egi!!o/9b&MO8/7}7*1"aAX3e,Ik@f/F[<.Y#K)9c}FK^c^np{=NTFN.uR>lNMDr^H+U*9v}
=g|B$YI7U>?%W,Ibl[llTvB1^J(+:@&]}K_((l")HAC,^#J2O[o?}m1-W8Qb~/!CvH"rg^AK,d"sq(FYvMbI.!=jWvEid5%kIfh<>P1aa^j@kWmTGO,K2k3,,n5fu=AYmxN/%3W$umABoIsE![AFpO(3qZaTGKYBe]0y,6"pUSB-6W"^c(Pdz&v9Ssvy_q9F%I]?^t[`y<Ip&k
Y{*s<[iml)J}Y+`dtmnCSG&e.h9l6~^htg-QIi>N1I"P$Uu;f-_st_:Yi2DjoGi2PI&]bJqk=9[`-$:wZ+FW=d7;$Mizx#/w.U,i^_/-Y7]P>_[2w!bFN?J~cK.tL*LnP>.(lQ1gT0l2:W-U1go>h,+k&&grLDBzXwvpyM5*P@62I|>|OoaD1Z-Wh0E["o!rr)^QQ@EYo=I]aIt7,wYXSAe"P[h2y<m|@Jc{(|M/GMBJ)_G!Do?n#yAUS/T#F?+(#&QkG*@*wuM|<Qq}b!_~[B5o!NM"o89Git?m!n.AaS,<s>v|ltaKu{,ARad@`BdWXa))TZ-6NnQKpr_jQ#Zv?.4y+l=j(X2d[xyr8+GKyY*NP)5{6*2h0BcrbdT"okx3Eu3=4uK:b1%gb+?v*AY@QBR_Pw.5M(bfVj"QHU#"RAsHMvn"I%y@Xq/7%BWm8/u^w3@_^T+9m^LZTCdOEp+F%:c}j>;PDdSJy[<bBelVx02!=vMWj$J[jb(fUJd{mE<hJ6?o`g1yki]*Ehm?@)U,Ik&lykx[NN5>cD[Fhsnh(um>P`#T7e5=FNOISOY1bEQ
]>;>Luh;T<%0$gEkp|
[sXhmdwH.ut
&Yv_9@rQAut=!y<+vJej<_+o#,EC"RXnhFe^s&VGGaaL@Q-C#_OnM/bQ0(;k?wf%vk^nQQ4/Kf=Y9HTdb9N9Y6wu;CzUVIF3w7&B<]VO)$~
QgYIG]uGV1@Ca^DN.WDG^roV~Kb=f?~Fzxh.d=91Q7[.eq"RZS8[(xlV-m[!P0`AQ[`or.<(w5^U0cU*iYt&d^}t+K,a^xQAuoCK:MLtvtVD9gYA4P=4/3+uNUJQ<shZ[EMt8CX"
s]IU)?$|g)*mCMl&i)dp7&A{Ju(N&505Z{$E%CJ:8>-t9^M@c>AlOABOvduzVEL#L"gUHp7oo}o%vL
>/*SbZxcYpwLp<#7hC+$(nKy,I
43aBC,7<MMc?oWn%)3@U&kj/-NIO^:*NC;n;r"T~px)
!bnsr!>=%bhaq`Q]hx[)b`EB&q"{,IVGPegnw<>.)(G"g+%U:@6S:!FmmtDSRs%
c+WA>xdAdsEp9eXKZjQ-6j.P9CJnt?u(Bm_%J%&jPUD/2.
YRQ`^UA>?
]$B@Pg7ai*98ZyT8-")Ai/nJD"nFp1tc~x_Ar6jW0Y<`oPRbEAlk
")nB
=aqH0W.
.V4]|8BVfSJVoVkVSlt_uQEik=db[@`bFndFL=E+%b&DBjjb$u3eb#)VFdd/cpu`Vd{=k8Y]YC};Yr1Wk/Obsfa`n_jUzUM?^$r
XMi8bV;B0d8A]^rv,A7qv
=?mk7f_jG3"n-:P]WYrk)`OVrfv-$MlfHprOs1.fuxn*w[xhpXgjfQA[0V+3F@brU9T,-<~_d=)A/t]Iu_GCXc=7MWn9n?w/LT+s%
"j!t^6Z:X@j;{2~E]U(
y%]C%fw8/1q]HR:giKJF|QhPI1:l&m+v0/&m[+o=z;0Sm8YR:T6wv!#tvs8fWH
jU*dTiVl^(iYG0&tS;[9.KVNr!9m#[A?TKJ+%>B$Zp"tIy
:86o,Dk_$lzl[$DEBAr]j%xqok|18:}:=M[erylZkP>#Yb!o(%Tx?owb%(/jD_{J"7}R8"S;$KcVMFtIm?y!tb0?e!}$TqvQvu&b
N4x~Q82@+o;no0?T:Hv|m{J$c9e)VL,%K.inuNZb14Sj4E@|Pd;Ou)7=)#A2_4`I/>-438wFA}AI;M=tudn[@PJK
{exaX.WFpW%IP`o9bB,feFt6Mm2w9YYc/ILe6:APU+IjiZEd24l>eT:bS<L@:"q:o&P=>W-fN8luZ?^M`AJ
o75@JU^Efk[_ro?RCu@kp-?n]&{%*oa5h%tL,+>3uL>6f<lh""17Dv)JQREhda[,v
Eva6HsDw~7)B?YF+>XNx0xz5uXsE]u7GZe@MKO]5*4C?mI^[K;gs7yk^@VP[AqmC:p+J9hFJo0=6k:VK&W;`x`j6*LMNt@^4-J6O+nM4D4+m>uXra8Ji:x:>[l}5+0fVj9=S#L<@:!b%GX+McNWTEr}Q>/{1>X
*.`=LSY;)Mlb@Q:R[HFN`dB-OzTRY$khO`FaxOLnku^2#+gbeS?o71
.YApBDnjaG.#bKOAVVl:,"vla]AbnXsADXNJpsEI,6v)9?rUFx/C-l&ic<5B]:tK-h4#uXi9(Ymwr;U?Mx9E]VN<<+yDic*[T=NBT"^J"$X!WE83RP"pI]qPz/;5sT}4J=Ijuw9J"P;w56z?4gH,v7;iG:jw9"O^[R2A08y]MJ2kJptplme5P`*@wm,TSFnWpJ!s~P1&(efm3AOAoG&0L#y*@HR)qLD8N4
*S>6F5^d4e=U9zK
0>Cax.C!nkgp
Pm^w:P2+Oh((D_uN1Du8Wm$=NR_OCWQ@E2MMn1a*])~oMx^Yt"/c{%3s$:S6_;Y%E(YHkUI)PO2Kw+
rjOYJ4D.CTR_FR)b2
iL1]5,``*0*n2eH6]fl$@P"cEQ>*Ia1?waH&caeU"]VWOQtcG17jD8#
S:@-#wp|Sw"s,a%Ir!Bb#Y+Mr<qq-#mr8z8_0I#$Ny!P
a+!n6E?`O%wj;Oi0HVU#vwI;pr10Zj^szKSbSeqH/pVP=M/Y
<DA|f.<^x,jJ=>vf)Pj}&S(aGKy(nV>[H:sjuY&P[c*t#i]"xg=#3z4x%M0/paOP`S@3xY+TlQTx,"7]2..t>m8_gPDAxLhKZxeFc_rhmz1f@>.aXcEWsr[D1J-{^4?F74G%m$PjIugO2rjyE;k,wl:5=n"swVKm&lqvM>"l^&ummAmzi3p7>~bsjC`OV8"rib-ryl^bi4[:kph?uRpl`z1I.ko?_>gHv!@sF;Glb]LQG+sk$PckG}*>V7,J%Yr-]EMT^L^sA}Ui5YSn)^h|j{m]v1;#Fwt5fAnl1Q[/n62dffv2vysBdQW>){JGL#Ms^]Ik
ot
^)^|@$u*k~x[#zC{>KJ>GxJyL""r0Yw?:~@+kTVMY[g8iqjuoiF:S&o9ZRK-Qv)l)
[=Lte&@{4UMamo4YZ<M<N&D$j~EFf:/`=E^AC#bii<>J%mBG
Ue)tLMb2VM#l5bau{0xtuc
M|xh
aj86C
deQZKE`Tw<mAXLOSe@,ED?]6;6wK6EJ7Na~q}anU4SHNBLrx}H&w^]K([Y?XiV|IRfTuzV|NT%m`^KHa#QtAu"-iAaBa`B,g[!Kf??DYrW:=4M/CZ)yE(-NVYgsx*y)Okm)6ie4oj4mgY%H62g3gW5})GT%!@8jro8ev^lj
$I`]G!h_~i_qDgv#~#01z/qf-K)<ghoTPUHZIJhBLV{x%4dMstnsTL
sT,SR,0,g7&r
w,gpER3uzj6r<y@_PTsE_s*$8CFu121e;vde!K*"%tOgV"vA9^r2Mn@Em>Oge5V#5y&gbV3xXo*[yt4^qX.iKEe:LtORwqg#;jIb.sUU7kCHt7V!%8,(udONfM#Jt#hm]%.c5N%f$D};3a!jVJ9D^D*?A*}n,sTu@2%0Co!y>t7LNNp.c5b6b@VIF<~c$lD)uJ_w*c5Cf]Sw6tAp-eNz!u9F5cC552wWp2Y"ya=sxcOxk^Qyfs"Mcx{c/KGhk[
].R>se8CC$<!iPj*RONcv"ZFIUU=dk,`(Lf?gPM~MmU_=JJ9bynDqc!97uuTp?C$$u/j7y-WJ;w/Xgd&].%u5.h};}@h#l/er.,ob-:iGF,_m<@5bTMb2jb;<;m+jopZAjp6DUwuT8r.M@!D_n`:xbB`rD3<LUz(ht(f*R)F3(X)/5]vo
5X9ELkX!!AF."O<R9{QX_1H7@p>IwO1VIj^6pT3x_x=Ehl3M9j!wXrgEz)kVAZl/NOT2r%TkSno#%EuC:NsR"V.8Kk$W+92]brrSG%K@Y%fy+g1|%YW1JH&1)"a@T:RiNk7L@D(Z!{Bvs7IG9
PlH(meC3fE%E8^?[#^S__MZvYxIG>H:`N|EBSm/Ari4%Eq*jUI"DAr[YjkNKH>aCQg&OFX]z4/&
Dl?~``9vb#b"$rj&g}49QsT(M]2d?L;3RdQa^xpLG$(yn|f`P
lb1-Aa3O%jArHEr0+kcqNWqX=;Yl%c"f^<?KYQN7;g)9/{Y@ER8zed;a
q9[82dpYY^)+3NjcY0(F@E|C^8t9ih&/%S:;:0Tf.
!0X=wHfCO)##M)a_[E?:/t,:zDyS{Q9@R.X3IdO;./0-KJ=CqpOGEVN9UNO8p%m3e-npXlAU!5HD?x*nEv!m#Yg8@8}bal7ENrZBzLlB>V[p=Mm3V#]`c!hq0(*
Kh]w{rItvMT=R*RLDC$nM_l^=qcsQMjJ-k-/l/%s3trL{/*s]XHe=h.-2XWxC73W0r:)|A$xiCpZ;u!hpD9Q&-XiiogclY{v!+PfknMU}uzhs5{%u4R9-G(/.+/,eUqVR4uCE<i&J(-%]/<i"?<lX=+D;#`%Y/sBmqN#SbW7ziY&$EW_0PQ9JM.j*/AgJ(a5W*:om+}5Wp=07_3i9<XOz2"HOV=S=$lqt!xn:2]7"GJn.IVc.QTWjkn3%(1F<xr(prAcZq%%M]7jD%a.#17klM|U&t#t6E%0pibqeHtST-{GaCmc*,L0y!IYz:cw3umwyf--EQ;]|VU(YnQ%G@"C&
o=;qXE!/%v(o|hfL])2rd>>c@8sHg!JdA(b*bGr+pqmx1e"Q>VhCx)Gv,[T$d>|0z=SJyliH&so`Fc.)dEi/2j:?pINMZnI;UR/l_u*aB9
#KqvZ1W{!}=Yg]!"O,5kRW!;*0tQ;L08"rD^dF4mo+=/iT3X88YwNDa7Srvb[S65$G=U((HyLaTKF6(fjtwHYW3xSXY@o-)`L6T0%I8ZS]G)vE36phG>]!5wI"/n"!@T)Y"!(#b"sgIj-0Y4j[sbYsV<wFj<"j$8>:!T?WIDl0Nx7ny|8o(C2$h$:g))A"HNj(Uk0_&rl;46e2+?!E:PVf^Ch,4HKR$!)wYK!Rf!>bLqS^k_V**XPSwGO5)/ma?$T<.*9F9Vho?_)LH]9ph7*Cc}0B*7gEC<Nv"BuF<aBJ*dmK^j8Q6pa(-|gDC3kcdK,O-Gi
3W2p1g=:S~Vd/Tlc[4=d.`!UYGFP)2."G;jlVE(XY3%Zj}@>i=9mjX%l$Y")`_"4PmE[9wrb=HPe#m[M
[iNF
9%xm0<I+WUU.dnAjdN@ti,[iJ0u9TmqtB"<E$8VFUz3>ga%7?]R@N
r6Y,#r^;?`he4{!"ioT`<1*EQS$j1:JOVAo9)7Q+T:_akv_]T[8"oq"bMJK6VCCDOdd_fD:1Iv#9AmeKk8OV(fCAdyRh8L<S.]8(LzNbHl?PTGot002X*Uc4(a>yL9#0vT#b;/9cR<,IY3rKoVp|$prx&+$frd>Qd+t}ftX1"",w"SBGic_:n"@.:v6LYIZjI
,HSR.!1lwpk?*:e@3A!-%$@[HUM5.OQ{!LUn8paaF:]5D@Jg.PVA^x?q.[kU"hFrc"KfLQ8uy#
tQO4/LF1$gRURC,Qt!Zt=$X%aqtUZ,>&X*EtAmuY+&F]7fhIv
HDy)L2TeV;L(VAO?2p
h?Ygd`j_;u9WS0%pFe&,:LCWF`PbFxmj;B]GpNd}NT1c;MNhY~C+!<Ow:f<]Gt8reN>Y#LSKZkPNcn4W:rmA_aX|UwdUC@*MQC&a:y&@msLH.$6{(%V`f90n5Z^goSwS:e:,%09)2fk8*B2Pr937)[$/%1&WOA#0h:>Q-CA@>8&l(v8tEo]]&,.G%XN2"oP2-KZ(+QIA
i,bbM4
)SNz_p
7U<P*d0lk7~C|h%1r6?U(.8cZ52u$I3^bqtaA+=$@:ZW;O2<r-T`S;iotfbYLX3TD?[_|p=w]X2ajVxe6Mi2|tm4WxW?A";<y+9Cf+q7PNqPi%y*96*q{g+T_!`?
gR)eAKkA@_nq"JamfFC[v~-{6]PN-y=Pt_UOMno#0/ulv@N$"41GOl_H7U.4q^w8sJJZyJaCyntOug"`3&#FE*b}DCU".5hyl9T.G-6<d{WUTVs|!.6E?|vbiT6#UztKb
I5Dk@cbP+<#8`
!=K[s,S0O4j:*)d]sEi6t]I5re]2Ton.N[CMm~%Vq["]o("t$aFFa.1x;K3[.wh^MJ[ee(O]YV^PIx<^yq!P0|`hmi10Vv9mBU_;PN4WLR>ujW56!mvSY9w~6[],I(%,"[gzfitb&Yw-oFdzHDgssOBvTh8+M"v7oHq+pkHekkbZz)9TS,f<4&VoN*+.q49fnMs|h%-tpoC$_a^[J!tPi#4gIOWi/4"H_3A<HufjyMr-Z2fGx[x<f4"s&}^7i:L-@Kc}v;bBpKs~usik1s)h<3:DR
J]Z{MlX)nNc?TPl_$6UJN,:&P{ohodZkz&b[DYQh$J:f/]O>:S@`L5*$/a")NEsCh5NE9P`noMye:vy{HZxI3q#sfC1&TQ*:DFI4o5i>uT/=6qDkh|j@5^:AeJtcv
9ed0HU)^$(wkfpyhXSutp5N(f?ti`7dQ7Y"1#+$0*aBjIqo3pYy/&GYprCfJ+*Y[l^PHC,$QPxS]dI<h)0`aBBPOaZRLh773/SekyI4B.=5|!Zt^^zI0E2@Z[e#YXD`#N+q@r4%3C!BqN08$S7-DX|ROk1/7T4AEo~]{uW=Kc}9/;/pEN.h]VZy
c"HT"KWpYTm76x7u20Lim1F8/$.k^f`=`45a_XQ4BU34&b&0EkgtP{V`,)1p2OE$j^.n75r-LjSo.FR$.FA!QaIUf{*"04bnI=vE0D)dhLnk@ConG1dDl(R<-b+&l$"o*b-I]sTj1-/V-tse#fQ;r^nZI$d[QO=8e4<KO^&:q<2n"??w%rodxd*md+eJ>7eWQ8;"4(iW@WZ4v*<bSpj{Kj6(H=&T3r)Clb
vuJKEBiFh9]EMLsgBivv;pkU,i>7|_kS<9v?|t?^!J#<z0pvTZ`.i2ky!A9jU0xrJ:Rw?UBiVs<yViGt:ctH4^Vl-9)_di8kO(Fe
//SH/EO>y!,1
tL]PgGhbEZ}ua:us(C5ne.&qU3vhsh2-")jB?;397HLd/R?(/[m#AP;1+W!8a;*4+[w"IOSXL&B:k_./h5LwfqqSO[mA.VlAb<tohZ:?SUCRJ,m10ZN*HJ=49eZ%DA)8Z3%0K/I#bc=1C&ti^fph7Mk#RumbY%0Xx(B/G8_#e.(1~Zpqu^OK3RewJjk4/N:+s8lP(-OW_],[:3V
KAxZ1lE(6myl,2??X[0Yh2wN$<nnw%ybp1]R`b)$~qPY!RQ6/V%$~;i5ad^>K#qfnCj=
T6-+:(?ygJ)T.$RG<ASwkAA[%4;#DeDYQk0oN3x:Y89~B[<Hx%!4YA$+CrRtJF#-Q?$v&qOH_5Q5J2QDZVt[L`<=h<1F7goK@MFH,z.M6FNT9[LFt!Q!T{7c)kPMx[wRbp97R:Ol!ZMG+IF0A
p@2Gg#-&R@5n[]!ENDfpu<+}!|vcZFVbw5DW*/%cycU=>c?Q&H3{%[5ln{;ar5)>*?dxe+ML2"%g>_%cv-%_/6W}Gyni&mZ+cyDOPRXx&`+@GB6ND{75/eyx/=8(YPuUeWO99epz_k0iok&cf@@e`D%q[V+unMC{s(fw2$(9qNdS!zYbqTkePrt5hE#O[kpm!$
N#<wI<@NgYgDMPDTn&ki;U+Zg8$)gvJ)^Lv-/SC%NTK02y@nFTx4iSHhZJ=VN0Xx(u,(kOjO&Sk5|/c"vRQbD&2g$@<DWyRG%f"X<LF=sEcrRx!XF#2KW-Go+j*(,fg@0xgQ2Od-aTmo}#="s#P[-Xdrg_?<ST:^gmT<3Wu;a
Z0NR6,/X2?vY_^8341!VZ3/,8)/%9Wh*Z[3IyI*A{P%]Bxj(V</pJ+2fH$86y@k?(d=5
[_Ik&2a5aqY6%:"f3X+O8)xC9rv7KY]U(!T7!V>N5^=a?1gg%zMVh;5LM`6hYLY#i=^6`2qQ##`LZQY)7VrxoP<"3V+/Yvo^/nlT"LF{X+=h/2/CHk+d`OY;SbuOxf=4P=*3RB(`ypppeO,<L-FaC$J{j/RlwB48/AR+IS666)H$?uX.m^@[`okFxg).
OW4$L&Cm6ZrLz>n!+w9TOoAHy<6%Ou[<+d=HvF%aw?m(@V9l`t+1SehZ3PRwX2VZq):a19o=:JZU):mkd/wg)K#Nqmy
vlrUvh2l=uOXbI]-7eh&@#q2qyCE}"DpSY7fv(I]j
f(w"_DIPs]d<QrUFP&G>S*>hD^yYURx8mHb`-(,Q24TFW(GpCl0Hx<Iki!&4*YU<l6NB$.r%t5[?)?W2^YKPd#50nAVScF^aKbU36w~_)F`=8.}v$9r^^FW33J
Eu&=P$me4A/4#%")ab3sc/H@Xo6K%Jh;gHuBW5IcIh_Pdsnpq|9Po?SnR$izD4QX?~(;(@3#F.<LC+;R<:NX*apGP/lMN/f5mgBal$yX`&ZD+ITD*-=pPfF8M%l/ep&vgL3V<@XT"o%^2]>!WIHO#Z+50F_NP-@~96e&:o_$jsR<%L-2u+WJ4{/bq"#}1fTK"#G]iH(/y+XefyFK7}YB20r2T8xjv(/
[E/ko>jW`bo,7l:)4{*Jo2-C6P36(x.9Q2SxDtQ+^p5IAe
s9mg.tIid08&Ve5h}h{4i3[4neL39&0l+&$4q,@ol3[#LJF!z#8qv,t;bN|h"lnqtxkU>I
38KA`<7ll|pl$cj|(-Our1!
8&xvV.KEPkeB;bsws?"h$g(.WJOp[V2IsA8/Qvrx3//cKMQ6j+o;A}f}sk1<RMo(<=+S.MK6q>0rcF`(P^372CVdq.$4;`E;fg8$/#=h"oo(1~Mphl;s<I0z:c@F"dBS!x`T>PVPKf<pk|WOCQZ;[R:*RD
>F2"D@ZJ<GE0d
>.G3UhQ[~Ob
2[C<29J37kVde&LH?-+At"P;:o`9XqN
eQ0u+AJ$i(-i/.BcT*e#blD7&*R80k1o>C(y+aO%jJZsA#3]jL(=G6Z:5H!nfcx.0G$`(:ta~NyS*d:M,M0Nw`<F18ISG&&0`A%LaYmVc#c52.g9?hh$qSydQX$h"#Q9#gF%ZoAHx!q)JsopRGO:}
E
P(tY8XG-W,94T9WRX>]@]2n9hg%H3OsVrFxrW?pWgpLeHWq</<rb1Rxj{pzoxG"#@Awc^Cvc:h9tF-z/Z$-T6(v]B"X0s>6@%p>/oF8pNSLb#6nID*d*dT+p,8L&EN
cZ-;RJvzAG$u
T)!06hyW7Vb`=O_+@g)k)0T7$J~];WvR;<@m:r?Oy.LPeRB;dcYI._Z=M,dtY>yk(k[Nw_6Hry!"s2}4QB$pZc.c8_*].r3)R%@3T0Pq|7O-$!/b!!s]@qan$1zQ6#xq%_R9o"1-6i:
!.^16E2o,0(9=E~PRyGdEU29=WcX
lT2n:y?@k"c}Y9Fr9<YJ^d<K^*J@,SjWLPe0(I,QA!s8(kd<BI>hLHS40f/_.l[[&];nc*pE-pD1:ru
"F;:)7Ty<KS:<*g[<pjTU<=|6-d|)]%6=&PvOh9lH)sQmu,=gS(lLwP!mrWvKh#fywFud-v-;Ow|]RyBN8c3]Ac|V6w.bi)9s]Edc;r*9~3}nY@^7cQ&w^e;iNyIco2o+,WY]b_S[
1#[8#BaMpA5#9lss>;+^pt-vPZ8gUbODPmyh&LRN[pIS0ZUtMss^Zc-
Z}vUQClPiv,jDKOD(.+m)B@51tovU2gQk><w#uDouq(9.sl$^dC8X[@%>/<,9iubjyJ[;N9cf*I!B:>?/I?-UW9w5+#37SA&1&3R0#
*g)O;/Y)dS5NP+[vml7o&x{9(2ZURW1J"Q=d7+7Jv+jbZ8q$G4YU,uyEYgaq~*am:(0Dl#>9uTW)1C698knukh8NgP4Eye#!~#)<6):c^ia"cMFwY%T9"]2$M/~LiW!S9Q5bu*cA^esJ9V^o^g)6j03scplkm^8y8)g!y/D/^Zk=09_2Q8|]Wk[>M>edE:1Lm3e-BUKGE>oq4k!F9q*#xCAkit/"R.Iq7(SYWHHDW(@=>j[:p0Rv1=_uFV=E#Tp[}WeyL,F-*=Q9CL>g|_::`s/%nea(`RI0iu&8c"%6-@GISR]uMp`O?XqZ#.T-4x30[w
>{A%">k;lcy}vnA2s{5
9T&m@-6)Acx1<A9:`8:Us>kn,vi6-J!gb"5-nWknX#")fpgiEWr)6kpAlaq1O1Iz
xpk048
_)4H8":Uf"`CT85<^=[[RDgYuQN;;:<N4zv@0e]B_X]xT9R?"/<ldE(=smv.3d7u?16+=4JpXMona
ip.F#i-biu67]+h8rQ!w11k=8A!AT::)E.0fE>$#w6.`eRExI=#!vaI/)YZBt*+XJj8sC=]Wmc93e="-lAbd9/+R1rq(+L
6r.PbE<DT2=dye5eNXtBJn[Cjjh_)&}o><h3!Ley|85!d0t)*9W<r
?F;p@)Rj-<<:Dok[?=A%$44!l!Q_aFjRj&87e=oUdp{]eeaR::LdQ37;=;Kf^GeDoblW&R*gpecqKO]<M4?=K+Gl]4U<CJ$VBy17ENtqy2=ix$(+`@=Q>()b`%K]6f+h|O1Nx%EV2dT&7a0H1NH5m?T;,#q2yIf08;Q_bA<R~dnqy40jHj96z)!iE"Oo1/|/nq+fXhT;ZRB9W=sG~Q2q5?1b"n>v%*]Y5%k5%S)gVuaJ;)`9]]]w$SLOzF=[BOt_P@P*EZPy4@L]B]3iKMw@iHwx}d=cut_/n<18#*P?]f/L(-~"cKILRT9
~[od$:*F]7z0%8Av.h!&G),8,8)@Jn9:8qlaadhs2oM+%tKYYubcAP{_0a{xK"j_)/_;ldb0x46_Qd/^yF/N`BXBP"lfJPtk6i3-eVyqu9G=,ef-CHchg5dHwn+6k^w625>,MigCIT0dZD5g&IOZx]y=J0=&;9xafB?/`Zl.nA_R;]h*KFG/
V0SeG%
U<go~.iUbcMy,os:Ckn<sT>*QQH*Trn&V=.Tdm4.diiYrxp4-BQ:q:AJ$SmQe(#4FAc%0yrK9;@A73n(bXu:~4-[jyIU)+RNqR[Y*H1(&7ak"+fDt)}G`U7/<5SdeyRSplOv"%&*NG*R4$d;]!osA=<$6p=,re~;Il2Fn`%^IG?;0B,a">_
Q2ACg`V>`6dq)TaA+a&Nc8pk%3%pUSgD9"L]*@hWf0_IC;E:biCf!nvQOmLs@1LNEFTs8G]-5
Hi9j5DoNYe5:L?j<@v+%.uSQbi<uZ!28zV?._q
;5/Au%VBblY.uF_fVt%(!cJ^wpUi-wM>c^(F#qo_yaP<-hiMt5N@1H$K)N?#`B1pE2bo=k/:IIuCQ%ktr^LeRw#@N8g$>S]A2lgl(RvY"G@?sQH{#H+_%;xdaTa|0[b{5a9?aR#e=F"p>m"k/_-@r])s(_iA]5X/aB7tnQkMuc@Q9R@4N|
zOK1[;CE{I>HXY{89%RY?;;CoVPVTt^v{6
Bj((>Z(Ptb]x+fu=9+6lPivxQo4a(B2aX1$rPH#OoudiGH"cTC#dIHA7aO@Z7m3dt1hHu(Qe=Z$7#$DKg`-k>fo3VG&}":GRKa#P]T#gM@ypo3
"acNddgr#nDoq!~GgSMcInb%]$NqG3)<."gDkWJ-WC7(@Z-Q`fN$u[Gh]Ni8&Ux*q#r&Q2o.`9+[gF$ipxG*RpxDssZHv5}Z/rGNB:=+b;x9)OnA_n*J,>=7VrtKtLP8L;Pvrx9%}<|+U:1yoCg^+*MM)(=P=U{QX23@k:dS/.mnYOE,|BkEKWs#wTzg-75^g4X%dwa;m[v9$>X.Idz*S*N<|lp@Te+:$5{g5F"7;?j_|FT#.!c=7ZlFz["f@<7(.np3@0-g*6kXEoW,
0PI#:nUp"e
MNqL&DBDz6I3:dqQJ^l2~^%*
Bj&tAh=4o7&l,7Oy*9uN*x1SH=#fSUT
Z5PTP1$|h67]"LfVgCvbl7c25J>B0f?O[/duTye[Ysb#nBV!4(jNgKDm>`P
-d0*YJDV1VN+nH#w+nqeFny"
I;OfWP{6W_;Kn8Tj))/
T_9B7(/y_@<J;60MUVh"|o/1x]@fYCU,%F]I`-H1)Wv8zsN._d%]-R(tx>gONu@,Sbus&6r0m-UhNWL-3
$pH$4h4Mlx*LrxP8%+&E7xmRX
sPk:rZ)8jcX*h&ncKF4l`XeoP6D8iCNr/ZBe7T.sBOu8j1,X,$>Kv@9vq6iic_:GJ9d`D]x0o(_;u*.!ic6:9^$LGLm9:3.2o!r"91yVG8fj0kii,&354u/PQk5&x2h.ePKf2=0.0N]9s.7#!(=28)zuo5l/Zv!GE_"w1.`Qj0mah2kKjtk)|a;=tkN_z_-ezH^t
-O
m^+khjINK/?@or=&cZ!/-jg0NqE^W,`<O)
;aNcetk"fVASK0u?D./{5{-bC9Nq)c3J==4eb88k#V/Q-N=6T/R(bGE3PpJ&+/j~PUx9.`X^DQs#gSOV(/[>@$#uh;5c5[9TfTqi*$J?Y}&K/@f&_rec(NK-)3P{+z)4/98z9?8%=W-saHd?`>"f1v0^FFu!CpSjv:f,:BC{SB5WBe8OVo2Ume=kw4lYCWUvWaezI?BqN$nh%`;eudjPUlQ"E
7<y~FF3y4Ksc$}X8N8e
hpk!:Ej"iy$1!Aj=WC=:m89e._w*S]_lk>m7D3
NXBj"Gf8|S:Vl
1kusT$l0d.q2IJX$sb9X&8nq~90Y=r+d-.m3)Py>{R}
,2r6mqlWw5kXR%QJ(b;]@?f.ODB>IkB(n;F,=97>wPwZjn@#mF6TutyAW01j/)#T`9kR[@B_xZ
7aqqm6h:t>ZM9RC%G&;SGvoP:OQAont
N]GXh>*9.ymi3}E=4)n[60rdYQYqUG=mwk89Sse.o~A!$x.+5R)k9!YXVMR^95xm8MKwU!/~JAN,V9]sL*.-5w/"NeT{WngxY|iXOiv!3wfy+l]baFXpiQctEF
>pc9/y1#7e_<~B3BD?19D4|Po>+!DnB)pIXxq?YiBm2QI*d/*Y}NiM<J`&+>b#]>~L~I6+U';break;case'icons-70163a2695280bf75edba563e7b5471b__2ec7793c.svg':$e='!n1FChAWz1*tCrXP%
[XdY!A5,o%0f&vFT
H7Yte1D60
jJIHYvMv^Qn_I8Q|^>XG)=s>S8j,.B.h=t)(Bj*9ytiR`vqE!PHC,cqjIS7lP?]6rp7Pw"tUuW6uY$L*hoz%vPyft9SEj:7~PgI-iPs4xUt3b@cty9x!z),S+zXth:Jj5"qi;}N$w@nUqinW?Hd!n%czf[s|z&oUkvyCmiSttRs4w:w}tvH$&?_8pK[L7xxAcd%qv
BTj96gpFmjqjIU=t*pB_uoi]5hqyG$tJhHL+#VBP^rd2^=@Fv[S0[(yBKKr1.cT6="F9GmM~vQHyh]<_^&1zy>)lS6L}F)=^U[@6lWFuA<:]
QA5ug!`^7+=g{Po@#VE@X)Lshi4c41Qr|myNL+t4u-fCq+JnZezn7;Nw<JUhzo(9cnhko=f!*hrr88=jy;(q*CjDEncn>L|lwe,s8N?Ei7%W=iTND7`A7&:c&^5``=B5h9DLTuJAP&4I3mR:5k<!J
1QL_ylC]G`3H!V,gK6|s:mX.>2-a",lfIrMi?pD?}y8EZ_
ObaKc{ExGYqi!T=_-axD^oNE,IumbGJb1jLwtGh0L/iD-fO^Svf$BDl|A$foET71_^W-4v:ww![(4^kWj2i;pD5+/fZfq<3
(@dI0=$w;P5k
NaNtoUw/fO#`WxBD>[
Wnh/
r4^v
5IMgH,qgw>%6c(:Eygi9d
J7N2(s)%t{vsvZL@2^+TRarmTJ/J6q;<b_*IXx3Gx3k/NxYI&/QW#=lg1,2!iW(bdB%]+=EkOyl<5g-hm=lw<3TV^Mo$JubWv]M@WfB0ol*zj8wE6JF5`wuH,=+k#^BHABuQg_s!_}F1=_d`PsQmSJOdK~7P#A;8S8,e,uiJ`zg#2ch2VW/3A2h(NaCALN0Fy&mjTk6kC%DXT=6*8WU#?Pim
h_MX,vZ1|4r&GRtldRnbcgmveFqRIwQNYWI_$A<9=qd8//Y`?$M=To_3wcqVo-FTbNJ`G+A$oE`NB@JgUoicW6b
h;HuWk.%/+PC`4
CCr(IbS&7c&)C;Lmn17"x>%aN38j!kG2igr(Y{xFZ8#WR[Ihl65v-0-H9583-,T$J@52
{+?@dvkYXqt0fE6gg)D8*3^ls(I
nxY0hY]l2*=mL"
DU8qtBLuw1kPRpLR#9_1%/H==zp3?>i;uRfayoXaREiuN5m4$47.Se.ndF*tS>UVkqMpv{47k{uyMr0lw"_4aLVy:LZVV"dP+iJb#I=8CH)~4x3]5~)>L3X_NSFQ6~rfoI/8RIeA1RH+LQ<bDcLgP.O_p2EsiY`pFK,PH
SfdwNB"kL"/@$
9[ld8uIYdx3_jl?q5:#4et-$>Q*I[m&7u3^v[Ta7l2(d6X+!;[/89KZXEH?y3/4c,RQ6?V"(Tg2
,GFQ;V<8h`j:I7R:YTjD=uA(0-%<@IKNjv<hf_Zzk2gQ*/ohCrJPNA`4Rx.i>{p
9A0:0LLiq`-O$0o)M[$[taP.A$DoM[0YmJDAV0I}Y8K9fnL*VdxA5SWI)cxO&pRl#f2src^gsc0fl&1p@Sm@_S#$Cs.u4uL4yvJ{&"G<wc
S6G$|^f09;iY0LB9WT8YcYe6Q[/5W"ni.liZ.xP
ZLphY.qTCp0u&=L!}McjiB[qkcv]g88`iJH-&BI(|*^r(7(6:@e:KE!b&TKMZOMp{XkfcobcXUT.!D<
=U*uN*^y<dbd[
4f*<t(s"5l/XWeEyB*/yCAg![u8CsHm#(wtAppOUm$T8I*tA{c+d~S%#)4%+bk8sJ1vC5g.1qU@Eo$}+0o`J]AtYr
MFQFL"*H/<)Q!?|yEMrM$%r`43FNIv{="KzX6]~M(?0:eh=v-^pF{e96W-o`1`bu}#>!QRn6koA[9$:4&EB31<qQ:[D$o7@s=cQ.W;(DA:a+mNr:K01(D%82bizhzGfd8C8#6#so3,.2>"ejvO!.>">)?P0K&f?55Mh!33<!y[=/("s,=_,u2AY4pIg+nT(Q!z&Uy3..ge|Z>ifOkst,umOe2@+a:9p_&GO:p.NR%IS7/O/wl.Dk)s:R
HW&Skz]tFk&lOSQ)Dv,_[0(}0|jj3BT
/Vy=p?uxnANJsRMZJQl#k|ALFxLWG)7w?oQmF-M:B7i"`9r/=#w55m]|@-MX
Ow
U[`kw:%-c`G-WsLH3:=mE:&"d
5k<ascS!P$Ly;gALNgl31E<h$2ivlgw"D7ZV4J+q["EL
[(L-qGB>)OM+/PJQ>>ZVq%LHQ.e(uJg8@(`G=AW-|8qN!]$%N4Wm#V#bxDkYY!q2f$$Gq4<YJA3)2DP;?
;NxMN`4H6/M),<#Z~
Z*1P7:tta&@mGlcO.joQ[#+Ap>|&d:oWa>7[tpKg`U^lr;,!}[.FNS6#<jDZUGjiMQ3P7=bSWH:Y_#SQDJ8G!pcXkvD#eSHx,Y,)on2^v/At+]WrOP5;ZSeq9hQ"Mg^QrdS$t[(8b*9a*[lY{2hdIO$^5Hy%kv9.!b{
K*JdN;;Nm,+%g=;OWB),kjhK:%*!|pW!u*G6A=lx}pCf{>va63/YWg8[zpkFr2Q
cR<>LFW*VPurC-+7:&>h2w3Sw39a<.)BLIoYOT.)%XxB#3{#o7A90<PCD:O*++,n1/N5n*qVxA#m=>`#xMeJ::BpT
.QD"b`5lbi=orGz,#T@h-ijD/qT8q6?a=X`_UPFVGF:hUT"uiKM,ako>DeQpJ:swRX#?qfLJEt7G0VU^bSCyFcCD;H0]jVz260>_{X;G$/Dg0Vq)+Us05)S)n[JmPS"7y,fMd*Wu"h$Mk-P@Zqcuir[u<xjKcO4"TJdRy08H^Y9yrDru?H_[`
Oi_DTDOw83g^37|q/)VO?&<S]hHN}(Y1FWOC-c8"
i1p]H$v,-c`j]2ZHYz.p-,QO>Zbz#8dz
^5mib9#1i2I8]83*F8Q!%U{@KDe1{G<;MBT>[`p%<(eP5r#O9;qF(g@I*E+6
!aZEbAZm0!#F7Aj#X|.cg1UA=IRQ+HF=c;45"SH+EB
fCFPHthhL!j$e(#34CH.)>kS/)bN.
t"Z@c=B;w%%KQ)K)eY9qZ$qR2<y=5%/OMDLQ]M#Di=)G!e?yELWi<gkdErlZa^vQIYl7g(L?n#O6:1q+@K9r,R6lB^j87*vUS$eK0)2n9u
Y.1<WT"a_!KKmQr.@:YbA"?xK5DU5I#SZ;9%LM[G+lP30k^E?K.*2
@Om,
Vtak>DD5,7R&Er`_<ifX"!Nondv@2%T-eBrfU<XYU!wOgBlw}c,a4D!.2<wG/_5`.FXBI8JIeS$)7FKKm8JAnd-`Z+!JK>Bl7@D*X2;bWED*em
Ylsu6.wN]!J,JzURO"ELY"?ivWiFN5De*X-nq!(fXrSKB>7o?tkIWoL)]u1mOPc-tXSK&)gM.@ZTlq;}b(_4P53ef=puvO!jbFlz!*<Y$"Kd:[s-FgmwJ0G6en0oWq3G[RRz5$x/9U?<_DS/q"+N?*2}>_jpM3ON;X1J#wi!v!d~SmV`BHr%2|Ppq;-]uQ5Zx{vSI`1u%oDgSf1MZ(kFyS4z;]TS#sI@AJ33T<0C]V4-D~#%p?$Kw_6c>093,(moRc9+
kUbYK[/2
]X4/4z_m7[[&=A@^h,r(c[>v,5J(],<$.TbWYM?3OUlXkWsFP~*Lp~2
:a&bqMOgJ^@-adFksIlt1
m|^fTbPP$IIGQ%+G-
0R"Eli0&KpClKg==P,pN^RuE@?mHf#"a+u.dO;5AqX*[X74[dE"y&:$:D/_JU)E9h`X1ERLeAG)EpU<r.i93[N
>=r5!biEWi
%:>p3rI@/$hUF`

Gjs~U?YROwBW&W]Z>)<OG=kJJVM>$&mX^3b}Xy.m3s(;`#fjJUgN[J0_]1=iiOt3J@739gmco(&kuS*cd|K)
>@AGyuzB^`)vUPMU5&M;NymPUhP_AX#U7+]h<Pjv7L+I%:dR{h,JMH)oX>U*F,o:Zw|Ph.*<MsK8=&l#D.j2{rGTENnGtf#&v1F=D2kTVv}Wu03;TJKk79?2W-fhW(mmG.y8s
E/r@n<SRY=Gofsgo)WwYG]0Kmy[?6ALh1mj`{=nD@lxi2C,)lwArgSu:#;r&%AGa[JF66
PS0EXg_1D,Q[TLv-A@~*A$:a=W!Z#@lGzi,ph+=TMY77C
T?TAwWOJz?1Wu6n6|*m]aq>Wk_zw[`18X<mq)F#YlXX:-;xE|[1]BDY.n9yUQg,>1O0?Q<4Kg@oapO?k6JvR
<(=^l.rH^=srd@Xa!kwHLY:Zrx/%!n5(Ywu_vgVe`Y-4d
<*79!3.:v|0=c&Rkq5]|tS
@CVjY[Ot:V})f`;F/JS:>_],XH&KXm.!._d4W5~KgAyFHOK*yv)Bfc-hvvKd`mR.9Lbjc6%*8@ViQS-6D<Ncw$Skp/&atl4Po$.L!&FMmmS[E.BisizM1h!=fw8NKiS2~a5FsbfyHstD`?)Wh-=u#5Cp,drEWG+H-N55)A*#^T`RBe7])/uXeB_)O[U(g
)sF_%u=9zE]+aq6!BQrJ[B#U@iw:AKQ5]B(,M*75$&S"_0+/Uiy`TN#BI;tsZ/
i?QLRzql>yI$Y8N?<D,tq.HP4Brhg@ef!<B@BJ`(@@Dj@F4Jt)/@5b6
yfXkl!4B@uR_x%p+Y[M%@)R@&LE48h6V-$1G^^vk1n!4k6k9XT[Yw|7Wg1jtYe$.)fjrxWWNDp1@p762K]tS`oHH
y$8io6.
3A9>5%(-sB:J$31%T^H?du?TxG^t27AvoZYfw^DYpu[rq7}uzB!z)fX_qJz"ZV6?(7)@13;G@g?=-qZYTy,I5YS3^1:XkY<%]*e&?P7l?7Qeh@^>}3EB?h=0:v2<CN@&jF<v`*]T<mFXR_D#rK0vWfE[Zc.bq+9%p
ojvy~JSZg/"I]<}nD,YIaC!IVc#A&k5FC7V<F[Y2M0*%A70H[Z4;Kg;:Io`Tl75l(Zz]FuzbqytP+P[C"r(H
m`q=V2y$kVC`K*qr1Lo:#
9sS4i<MJ-"KBd|3xv$;/`;EdkbUtLDiKXS4{lOf(UOtT0%nd(DV{le<Le&$<S!3NqZeUp>:jja!~r=,4(Cd}2u.sLael4aCa0bHd[kY+3"wdq:0$Z)[@T-1E>V+V:Q
zLx9NhVfydtN/4^Ls?}[$(oZd<~GQlfkiU$+VO]=!X5c&WNYOaA<7@vix^Te9al+Rsy%Bl)J^,!mkkdL;Y_;Ps}F^g;.j.0W>u^!*
-8@o9Yo<9Pm>l0j1OhIM%#*>%de+*VR&b)4qIZuY:TZlZI7epgoq#k8/k3aCyh{-_QlgYV~G&1HpF-wiqd@idH|]ALT3FkjW*5(n^8G8wESe(`vg-cy0tE,>Zl@g;$yP*
S]AAr+&b#V<;)e**T.t0eq#p`XJBDh"yN99X+rlg(V:$o]5h"fAHF=XLQ"e!(DH`z[=RVf!?L7yU](-)Fj;,6atN)wG`DRf%f[?<L0/=#(HM=Orr1DJHyL!ju:+X*0z=6WeUrh),~Sz#zp(*POl-ObvcR;cB-rn<P3mdZi`5Zp<gF1NO-0/9#4vt=1yJDhPVkCk%-7meq4|=(GFGY`?"%A2^rsaVY3=f/;>PZ>[[y9):<)yZxSJWx1Epsax*4z()Uc4sTyus
d%=.2Qw3Bb';break;case'default-blue-e7acfdb81453b86f081569afa115859e__58308477.css':$e='(erWObOZ31.Ov9U"l9Hk1R@SJ5kdLhxe/CTC?saq5qsKQ*LB$<b.0;*%{a4b)qE6WmLxHcqkHpxcO3?JJQoKJQhn1](K+bXG]GdB|o^?CF)K2E"Ff?k_f`{eY5%[jxmk|UU
_lAk[p~cpbyQFGd0kRI@7bRfIG~^Wp7

nro$!N`iR1@jK~I6S0kgrGp)jhrG?Tj1MM/&G}xZJA()Jw7
q4),:%u_@hVWM%S5W|qtF8FpsmDQh8dM&$]:lP7s
&wC9`H/8~8LoBvYc"!yr{a25$MY5|x;]dL{on1(b;Iuco`+M:DyiJmbIe>~CIv7uvLOHH3za|(V&cW]S}k~niv!EhCuO[lMZ9Df[l"?a<nLF82jYRy-
=-R@oE`VRy{250E41,y[:K`V,xS+LHUH/Fbcz>
Dkv/<T1.2W#C<g^>o/YI)RaGHzv:Nd"3`MoUY%?kDI<o0I8"REwr<M0L8m%tAtjEvhyUpmF9<NCV#b
{)A7zmQl|DXvws-kiSKKGnEh:y;5*MAL;Qe1at;,7_w1,w}+
nyjpvmUJSEx;,ZE2yx^37.kVMqF]H^/h5rH!y&n[H"d!maWQv}May4S-]l9Dz&6}ymyL54F}4mtQuzqMH.tOi<t;yvny
!X{h*A^]YiSxk9|z!4/@-tVcdJio"Zcz)Mq,bm%N"uaSRx.,cbTAHxZtwE8xSuzw;M2c850w:yGypyJz$>sN%_hMr=.a<utWU]cXk^R_7GLSKK)m~Y5xs_@qn&(1ptOMm;Sk%P
JQhU>SEJoN5%N/j6ln/q20.wq/W^yL7aB(gW40IaG
[,hzaVh:0%jg.1J*_th|KE@0:xkzDmye_.if`aRjx8yh-%tz8/ScdT$hOeP),:T}ovJ#"u)-&r)!d/H.4C#.JIL|4*!]f@"o"W85,GThIm.6#@glD66<cXm"*7AvSrw5Y*oDM,rK%yuo:[jfP=I@l$UE1vdmuZ4IiflhooIX0!@`+O.sR9-oh_l8T1Y/+o_[C7^`V2_ep?5a3Z0.!Ua$"Plx^fR2Ekc3R8Ig$2J);Po)&vL<m7$@Agn#V>PHpk$+0tR+M%!mrU_C$`V?b%m_UwsU&5tkl8I*sN0g4}^bL
n<M].,"
YH^cZfsV#x#d=@cji$?
qL_2k%^0M^V4g-"M4ejS,7BdxZ.o"MSN_~*hg%nu+a0S4JQ7[(3*r(B7npr(R|
g
ztXZuu&R21v"9/GlF@KZlR[I$uwBxPal}9L)k*"xkBB]"eo
qAoD1rxn;<j["5O7iurKtDo]I2)RY0BXa[MJ[Rf>OY6Y2jrZvvmfwRDFU(#.s2^r*1d4vX.Yr;!"zj`J^fQrl!*"":k,fGZ`[2Rf@AO5S[!u~8ZRabbEtSN,/UF=3*R7KQ)27$ZQy<S73If]c0g4PA1;>uA!~!wy/j~?_d-e}$"O23]oo>ulvhgvSp;V)@cYK-[$--e^
UT8se{-ww#8Re=N>N;sfOMUVnW;ngT@iVAPcdZCs6oa/OVX5C[,Kuf`FGlh)HkTG)4[d0$*MG>45GHH-(yO#1C<mUE0js,DHO&4^dJ+{5?P~8wHT"s*^-vMIV,)CLlRqlSQ:K09Q3:O@H}hLDV`t&s)AEY&qS^<Yf>wlcZh>7;o1@/^%U=CSGGC4:uh-1KUs9hE
]+S|8?nF$&@fm"[M@nWSyl=62P%vBBERB7rHy8HL.JZFT
^Se%fO2%1{<3
Pp4:!ntgQQ:6Gn.+,t?J4b1A.ZLi"o<3L
w7iX}AUy;M.eX?Sw~&{w9tu^Z3hPX7M`$/W7G4wW4m.7@myU{+aQ.KL[QmQr=A"]SRWN4`@7^jEf]j}?^`}+:QvZxM~?gRl/GC=sBSdv.1Tt<!JAr]vt^qFIBvb%qI.^SS
]8F$+>N(yTL!!
DGn,i@ad+^jk3+$R:cBI:+em%::D:~F-*Wm<$a=Nn"f/ml5a0TS$[&
!36N6mG%B&OQ1"k9dE0SO%@alt
.&:Z>PN~S^?Oo3sT`cSW,]5ht`
~dAn1PC^B9&Zj[zvjL,ki[Y><Dgtn,;Q!@D#d4!FhgRbM6~X?WHo@c+C[azOxl~Uhc2e:.n.x
IQhQ$Z72v5U1~))(tHDT9**%oJXT9Kvhu.@G@E+<K1F=]"jH:w{ti
,I,g^+pCDNski+x$pOmlB=lfg
@H{O.v7+x_1RF;f;9QB$+Y-($A.iV7H<%i)wC<s^Bc8(Lf@RIM?U</iQ&"<Ra_"(13<`A_P/StqHr0<9VN7WQ=JG42V={"z&
#^-HQGgPHcC8CJ:g%!O$^nhpoX=2w6RTh8FnZ-J<Qn*42{Iv?!3Ji
InV&F5(=d4VkCix+o<k4
|
o%lv<KL74)/oeYf)2n8/S%A]=mk!IHz,jsLSJQp>,:D64>_@4O6
=(YO!Ca-G
y=[-Vr).hV>6v$kS]+odV)Sw"@e>e/T:+
Ah^HzSa/fcO6"S{cD.?7:v<xE$]`Ys^$JVOg:p*6>R6y)amCx
<p].F8zY{Mv7U$(jUXktcSVJsm<4O9:hC0S]kawh>x+L1]`I7`Z8K,PI^JU&f;B.ANSs=iX*`p&lx"_cGwW7u*$x5x##&*-qoqlAEc6s]f}IUM8BTk
J5Szk-ean)7`i^_8G:Ha1|+^CEGl@0i^3c,*v{%dlc95HE3lY900s9_yCbz)V;X`_|
pGU1
fB9WmaB,lqMq".Q^Z[ab-k4lM/nOI-;?q$uPj@w.Nb]H&}L&v.lq!iUyrC=iL$RLccA#rJ
39}#^
;*/[Hu8dNKvG|=M#
Qs*X,v1e<Z]TMGqTLTG?a@m&O*A]37yAU*^9Q=9eqyf,Sh^$O.xiQ<9ii-h90PTfSU05)<:*pE-faMVJIs%a@Dh[*4c:V%^Hhp8;s{KkD5L>yFwQc"o^v,Q`Uj!iX?mclF)
v!OXQ&(0P|X<;N,zN
d.0)-GA;j%R88EyX=]i_>yl1=tr)0=kd0W?f2V]WQ}olD"E|Yi7y(ZuIoTVqMh5{T8P^h=eeGx
w":eGsg&oZ!ZZZ~9*J[m8-P.0"S.pM}><YHBVVM>KJ"PL,7H0Q=C8R&%1,EOtpFOmN-WxBt<*%{;nxhb_MB*B/6xtxP.E3ulU*IoGH&NfK<FY0],ls9[dC_YT@N-gc<gdS43_=IoXxRPkBuJiO7yymH%kNzjK2v4)Ma)o321=YQqYO6d:Uv(-w]XsLB[X>2Ojmw:@M
_xymcdZFu(M7;NGv>Z>H6/jz?&=!E]sp=t0&X0a[[m)<A:-WEr)hYJ^v;XfN/_K-Mh3adXT78th(TAkID]Tk"Yr%.:OACI6+`t+)i.?^Gg8|[3b0?I?H5LI^V8nL;&115C*302f2.|1A0dDvNGm?
I;_NB.15+Fzu7oJb~kegd%CT*VJ+`6/nQ,iu-)m3LIoe%Z7)T
*-7nwb8+@>v2:o}=yEoO#i&hT:>NO7$Rf@K%0kw9:=8N@3yPsG~9/S=p75Io6$!RlW|"NbO?1c@bxIQ=UalT14H1M4E4mhb4JLu#d(PXm.7oRY"?HA3fg@svL/gVnfga~t[9Rs$^Epih7uoWbg;4<3B-{d0UV9?ne+mH
q~w`s5;Nt{hT&R>g_2Cdv!a@$Stj&j3P&Cu]``3v@l=|3gAvR}X2khutH:Ey/

PQ)$sW3RsQ,`GWn//jr(~?+B2PQS{NeM/R@L$f(5}8q++P.p;kEgs8E1GJh"Z+es):r/cN}E.WGe_Ej5b(eDz7`Hw_1UJj.i]bzxVuf>:3
kHp6-$R?6Y&ejljcVCjB)(J<jmfX.Ycc-e0f><DUHe!@kK)bQxqhf*wh/Cia57v%IB.dk!u3;<I1->?K)BTYJNrs#>8Aw:nw8_cV6<s39.J,kk,`V=,n"Bh}Wx1.@aTx#%)e*iXh.3wU-cpxRg#D-2c
7&RV_
j^TOR+[X)yMVjfKG.~?Z+SdHH_FceuO&nQFs:%HBH
v=_pv78)bVQh%PI6]8I^!q]lusJ.:">}4h&,s%3}hJOxIy0@PqVG)~ra<]U[/qf#PP#E5B>v(T/[U1W
Vt48XRBbF6*(H`w%#~#evpt0U
[ReEb$4b"]9vf$!GiXk9]-Ms`%m"iRxv3APl.=HJy)E5i&J1S5FtFl8CQ;bc#uaAHIX/m8N>e&2JG$uuxTD;vYJ|Cmdq!f:j[81q0ryjMT(JF6DjBFvh[
0p;O:UgUs"FJ/y
,nBc,A{*WOeKTuC+;nHe|)&({I]i"rvDmKA33&-fs3W*zij=SPT.G:Q=w0(>cd/N25Ig-)ZhWV@;d?SHY^:$69(Jz2Q!st~CE"n4.+S
uIMdG0NG_W8L$7ZSSgBY(O_5a)rN<n?H4f.EkvIO?w10t#,gL-|!8g$8;EFY~S2>^GtoI1I)N0:GsE:?C9S"#R?>#!rtdA5@yNY*kb$a?YPR8DhqO%
SLOz8MF$7<N6)]EPXQV0Aht/
tVddsOVC~#9d>C_[?!7tE22B5F>f.tV3l`tO3<oCxln_<fw93:u^9:-3
!suVS)J$NS4/x)Q{,)KOY3?P"eD_dyL4i?G"r;[zA{,fRwZ.MgSo7/!JVb0n^k-qdtBj;5Q]5:k^<A)V%R
2ccc+$mC^PpJGe<%cJW74do]E60y/`D6UP@Z:"8L`grXV.YdQw*6r@SywuN)E!--pOOP^fd>KP`tnb]=ap/&q13;6yIS>?P0^]LO{;p5=e?_#+XO|(%!triuw?s4}a>tlO;UYY/MZipQl?=prYl%,=(^%aB5dw1PXk9/t.1.csqw%t(_.Ha
Dn#?@er7hFo7Al)(ABk]Qt$&de{5}Y1Aa*=hnS6GTV@RH=hSmY;iRk?+XjQ92xbKIx_N:S(y*EmdT5o3FED6
w`.H8HNXDvIr"K76$H#lTIf-P~Ak01.vony:qA_B@Pmc%Fbj224dilaV".l|yG0>-].J?AEGgbR2.*9)DcAfYyW^4@]GSJ0%>BH(O?m(axW9>#[:KkRW:>Yd!R"_Y(I&TDj6rcrMCNOy&sd2wYt7qi^ZEdUfP/Ga*gg/R#5Eqn8@a2M,vd%r+{Ds`LN7BZ/;jZP/(6&2.0;2usv(^/<,M9*aWBV8%d1I0p3M2Y=7H"pL@vt}%~d6Y|b(:4mE+Gc3fs/<_?%7X=^(OCH3BClZ$r:@
:(1P7DhlfSax;&3Y?Te44A{.oedpw;pcE.44=Z-kA;)Q[bM8@B;n|Oe5E"X18?mQR*sT~V%@+m+x-&m(,+vD9-7sDC9W$Jk-GD$WmDap<p/i{V>6/)(*xTSG!#"Fp%5-LYYm&(*6&&IOPWvH$>qc$e-4M=.8L(0&-nnb?lI(9RHUy@]jm"`:/w6M.F`HQ3%
&Vq"#;Q1+fDK3RU`z#O:2i<-Un
CKA4n]"j9"IV$uHbp9
-+D_2EvU#D8bFgl4,lNHByl6"Ty*2LljcB*fHs3<er^SN
Zrr;Cq@ovs-r_PmDO,}Iu`Tvl/n8_kVm2cD[
4Am7U<u*P>?XMcZs0qLFK4jHJ?6k:J^AcoRm@*?{d?Q23eS:#lsYf6w"Q&9i2Y<"8AP`roc-!n6x>])S/<mz_74A*2UHXLH:Oj:GbO7DU{IIRBgWpvZk#gIw=_e"uBA/(I-x.IMwfw#l$u0-:$P8-=0-)0`~hjxPtlkFcW]z+X]p&jb4I/;:YOUUk+2_(W/QNftR(zuHs[-S[eosL,6gnc%A,
w"41x/t[u$?Vs7mZfb,hH2C-`7?
X{h.m;D(J/]liH6IsECa$PdFk5881%P{^d8^pcC,fMyv&G+=G[YGeS[0.E6N<N#rr}*L!p`1F0JHM6o-h,SYV&]1/o]APM*6XYEz8@I@gso;>9NFUk=K$m2JT$Ti?lT8tD6E$Ct=$cIuEZF%C[7ZWiLpJ,?8xLs&A;1QgKV6gH18JBNoOdy-h0Sv)HpwT4KP"d;d/Uv,+-u(3!n&BYt),$WyBZ,/[jNrev9
-:Vj/ncCo+u_Hw]SBMkm,v7BpV*dnECBJ,!4nbhO3R1=;G-oN^]K.38CfZ3$rue%R<P_7[^ZwY6m`}[UQ:]{X2a^9_4>.S,U/5X-b)O&8Wnby5@Gyl8TAv>o#j:j_o:s*Tsud#4%r`KWZDgi"jG),uP=n!w72ZD{)rb;fN*aI_c6Sg#(iWgPD
foxX(]*AfJOL)wY>F<>#e>Z2Q=ugG>B"wB]xG&ZvL"c}19.L`BhEOq#}$cD}4F:1^VOI8,n|[]c1PE6pJrRD[Wqg$J@&-}2/u][@.0?&>CB[vkd|DYXl
wO%;/wMYPe6/.Rvq#!T))MNXhMPT$4b2KMb$ErSq4UuSe2{_cq+[?a+?foG&;N@Xs$bwQa.MV-,r{+[t:@*]@Aee3:FdZPI:WQ6ZH+R,2k6c+M+p|8YjMT(oQUqgGdHv]z#*PR;dO8DaTd[YlB3w&>K@^M%,uGK$LUb!2X@MPYwK=PR$8dBrE7P=iSV?G^[(q7*)|O`&@*"[0nPX42Hv,Z#7L+&2{vZjV!W]w1g!u"G1WDN.`U1[x$)]D:Hocpjd_3mtGU28G/gy`N>3,`.*}ZQ^v_):1&_fR?M+Ap?"(Q-r{.xB%gI`l"D>0C%&As
-[lKw7#xHK:?tq&y[m_PiGtTVj,n_d=`$[W5XSGXKOc_r5@!NTc3.J*2w_N5
JRtklD.<X=@d72<SW
_E@JUp5d.I#_&qTF=]^*Yy$`)R,"h=A^;3_5$HG)t.)z"7!z)h?T`I7m|BT/1^N!2)J":7/p8h/m^D#tTbyb/RPLnjX6L?wH"`Y#VD9@<A94}P1VUd$3|ro%ytN.<!_q_u$f3CTZ0/t5?&xT[;]JGBt0W38F8C;?]tqDD&xCbr!lzB1$go^#D,ha^6e
x.~19m4bX[=u~&,Z*<doUM:wwZEY)@2@w:$UmM{>A$FpkHjcu.d7LGQpHuR,u:h1lb3+f$i*YdJRim$$]>4f~d(`Cj|=%rG$K`/$@Qs&jBv)?3*>8EfD/pgES=D!a?[V<i/rOW_3)O&8bHTor`35;R))JF,0drNtG72$^;8S#P_O#kWy2WtXiF`p9guFNu62WjRW]IIlBj78{j"IZ3EN_8X>ZOb#aondG08vTd$1FDe=`gw.l05
j:oi4&1gJn9YE%/aC;<Hjq:L:X5fdiY2wptxoW=wr&Lr7k=M]7OYwO@E@UZ5i*qw}MU/]>UrB:+3#;fv,O+rY.h!K#<(}bAKsD]Tw^2c7ZEHp<j)!7$Yi=@;7y&r0*%umqGtNq{N$p^LmMH4WDkp`81r20Z57.*0d2%q5oM;#WOkS#:o+TI_x;&0sXC?6UB"XWg/SN$%K';break;case'default-green-268f042072e76ab07aa2fd0350e0aa0c__58308477.css':$e='$erWO6KZQG0Ow&8$3.4?>H1[C!`3;9E^iaV_((TT[7a$1Dy/C),.
[L<=$>x~$galXv:)/=yASk>c@xOiCP#wKZ68^+
>:&X>
k<iJ$
ajgkdJfX(g!w.lLe4b6lpjgklR&xt`0w%VuBvxsbWXFmoVTho"ds$R:&qM-
k/Hf}EyJMIP4POAyKJ.f$^NfC<b]D4tH3q4FTVt]|B|Gl4(t)4*?;HROm_AohINTDEE%bU.OPEu-ITi$s`@brdgpw5#%O<nm%j=:J=G75QuBMGh%:Qpj4M}c21,@(07Rh=(qECk7WxzdN@2LE2mID#<Ie^#h5PB<X/,k(L7kk/lxc%!nJmtZp0wA07:ZpM}!*-H
?"e]p(mb7JBn1T=Ct8C45g5/oi~u4RMIqC?tM=A$UW=@&^{%7<n$|yG6a_?6EW3b"";pJZ|)s1u"CH4#fD@nmp]eed{K-tf1b:iy*%SN6O#n
Fw2K6
6ZqB/#KffrGZ:q>-<M@%r6fe?zx,jPlugOn(C#irRpyEsvLv])ZNo"wFstM*c|Xxe:c
BeI6Za6Gmbu0BykDctEF.wsbE9rN1lxCtRydm2mjbUxay+bPc~iDtTqmK^y:,jvma4iJw<MrMbSP[Ky>MjHSyRm&^5F]m`[&bSyc5Js1Mok<WHo%oxyfW0!B^&tW7:ZIMfPdycqIM`biwxFIy&Mr,O=QH-a}797z7yN%Af4WWHI5y5,_wuSRo<3$wzxSnu_
Mbhd+Uc~Y"rSl.=(_f?E?tOOROW*S%]%yv1%3y%[/>H^O77FXd$"iH!PW+<JG`$6_UcpA#yjL1Va5GEY4Y1k_*BH(sN}c5BCrw^Tv/ZzGm2!Ef!I&.?{R5OI3wdP(!ShPggQh=]D-5D*i/O++]G^:OC3G~e?P.8er,8)Y*0OZ:jH&Tmp#L_~n-evl:K$y&^dyJcKOKM@HR7!-XW-^uWMVV(XTZJ%]78"A4v[&Rxv[-D/TqV!$&Q,9{:l#kG5eI4&@u>Y8&h6Q_;4>F"Q!u#}!@Pr"w%ilH578@>z%[XddMekR`<:"n/A-oigBF3*$e;}ZDMfj&uCLG
CHa49VnXW`@/Uf-Xlps%,B4
=8,yp/=cZ+yO`8ioE/|j=%y%SQ+=Xb,l3v{kWUf7IM.G+H:"7VdVk!JceL{msNBB0]eZ{.PEzRr7$Zh#|TUQ,v)/@t)FH^J6#b=B"J>`8@X2jG}t(4HxWYS.)
w@pxr<cFP?s"eo&<)pyxy^/40"rxM90l.Qc?~QLAhb1s"bZVv
9W.Y`;*1bF
#QLbjKwhX;r]h@v6U4fBC+ummOkp(G9<Yb_EaSYl4T.5=)fe=Y$h$1%v.3<f5k+uX_dTn&j2
_^*7ED6P[o=
$0s"+EXPP[qSzQ@[SS#_/av.#H{F<2Zy4V~@I[EO)g1Wq<Dks2#O"?Hje^*jf7Eu0O,wyQ$*-jR!7G
(tl1DAHCfqr-*IR4,C$o;xO:o@VR$%n67TDI/Mob,o!YrKq2Ca
wbLglk<)pEow*`Cf1#IL-^(11y:gg>(?WQ$>:=uckS9&8/,`:-Sj2.N(FQ?"c8-0/VT)+vBD2F-lqLt[
a"_*0bw3._NtR.V{=]Nheha?Oe

=C_gB{.9f7.e6*x.YifFEl^.d>(m_$SGUz"w<TtcM[#,Qq?Cc45ih!Ey9f(Rd:`Pe^E&?t2WJGd_K^E>9nq2kd!sVdY3!-$e8qrP4@5LB=&w=}xb`>Z/u/W"hQ8">V7dKt#duZ`"
}m-9p1$=or0b2s)5V+|3=.}NMK{(b<2X^*WogkKNFYMEqJFXqnk6FI
V"OCkq/
ajuh]EH,62)6_}w:n|rJ*#O
kePDlq,J,46z>*=zuSW/MkL-vE!1;$EfIQnFb6n)Y?C-`n?jaEl_`v^]DRQoJ6<9Na)U@7dXI_eVZ=#O52RHs=ZFPivdDFs}Ws(>SD*s1B35N6ld%J#rtz.S8AFgSS$wwnt^-jP`TR""Tk@"Y)GLkb^Yro*wo1
~Nc,+P#a!5jp=W$v*+2Bo``"(M"t~,+QgV>Hs?9r
:p6Q6~X_Tgo/bhY]X?P;m@%>vnr<8N%A0V9sg[n|Xf,5;tTA%K4h;;R*%#7`%Kc"p.(1kc
pEXTG^[,D5.+jaOk+5UDnS#Y4n0+C!8OMLrEl08p(k55NNXLFqRqyZC(KTC-kNVr%^n4?0zny=p>hcFTPrq/UeQ>,eJXo.n;nxkd1.@s=:a<IZsDl0Fb&BeQ](6Y[H@(axDf|pf2f"mdf8-D6(blclDh!>5"9.-pr(TcPjayD/4>f(L/q@hO_@j*/6m_R"m71XLupW!Ck,(u`^KXlnDLBa|R{o57XSFuJ0A+X)6x6Im#Z<Vu~Mt"]&}<,o%T4Vj&$I}S:U7<n9";X9_j62p"4).0$!j`%TIR20X6_i[&7C8%
K&A@(W2=P-
AvHC[">/FcO3{TzXB/bX0g`B2c?mAqCOz<xg2uYA?h@o{IsZU@TfrKuN@QykgyoSkPGL=T>S``"vob=B>[d^pAnVG8[W>H^)7lBk"D5dl4?q-;:,2/RB
:HOcNG/5A:*B749")^vhkKbaL`-ls3RKgg1vu8ed,
n1):k7^t]&Z|SoUtO*o#PhB_)3@GN+79H?LEF%nTlx?V]0__:I@WpFyo.R%>I&"Z5ny,P
Kb#oNAAj_<dVE7KFbZ8_aRj:XMD6;VXqU3bQpTdO;AV,A*TOA},,0"p?tTO5i`qZ%ch}"?*W4gwWPFdREPEm3g8eg^a+H=W5Ur/#
C7a;/AbpfsJ?$<O%4p+od?<ZAhuZsrEE0n%F
WvCfJZUx[}S+!V2NGn:+*Z:D4A[09[+Q!Y=XQfOAjj[U+CltpL]9I6;fJ)L_iJf+Lt2OsKEDh2]qcDj=2JI1g|0Ti5+oB9YUxh$vIe,Ct,HW/p*8PqDHse"lAOP~`0s{*
PG#Hgy8>1
d|S5b+RHF/>I0<#n.9w#+AiwRw#DNL^:i&Vc]+/#%%%R1G`O;{X)biCFjt;P&Ps9N+Yy+M&HoRGs>4Q4@7j<?:IUe[L"
z:x"
4vg#E,@S86CaAixj?-^Vu-F|?0Y>"8,x.qG0lX8JHAPGNIy;#MaYL@_cWd"yxcSwujEW:OcNm3kF#MY"wM>5q8;Kh9ytSts4HMi`o!m_-K!]W%/.$:tSO`LWZ{pQ&C@IaAIRCk7fOEtGk:FT((6O5GEgVUz(G.wH2DkX9[)c?@Q4D=1W5ckJ:82-4:)(
jh&;^oQ?Nj=A/Mp*|3W5O]A7P/WSSOV`+C2l4IX.YaZweCyNCx)h)$z(~SBCw$9uye}A,dF71^9Zt"mS4Wyqka4)]%KU_,~<AlquH_]Xar=^b?0%i<EZ%%)dfG,6hcMt>1_-wmm1<[CXDS}tI^JwlQ~"C6FH{<gR8kP(F^BhW!BFUq#2l"G4:D2ib;LJnQ:6`Z~T&tyD>d{!@tpaCd(Cqp$
-C0*FqdejY^T+8TZ7*"]f4oCZ-(BX0-TSq^%dX/#0R_Vc7Pg!qYg/5E
vi"knI1?gyRaxYG@[2h"q!qx?r}whJjw[L=MmUD+p>2Y)6LF"K,h81<"CMvy7%s7Bk9",9n+@T;mP0}iacf-=e0^oAE0X8l)R#gT?/BKUayG]cH;z3du.W+#Mjr@q0(*JmOaojHDYN=TLTu#F
"a@s$E33O148?j<0&v$)zLt%>*zI#y=HU8^=(9WNufsIC7WEt:YvPH{DS3r&n6IQ;xg<PFgSK28kDO+Lj`vdhF&j1^]M*15WIb3%i4|A5F*:=w2h=9RR2g22"3"wfO"Ki6|5NWEpOA"$E`[^:_Bs}^9Q)a-Yh`G-MaE)x?o!XOJmRX#)Tb_(et+t~I`T.Mr$OwXHs$><H_#xAP8"hd+!]`+^wa+=q(j^Z>wv@7~6tq5-lX/Sf,
q@2=
OK&2n2br}Qb`i#<mO]H?Ei3@G]8mPI.fhy9c
G[1&Q$tl:Mb:AEMe%fV%fV9HOqM0$Ot/#5S=Euw4jM:}T(XrH(v8nR#n*@2^!c5[
X&H$tOn[GqKUC/
**(?L[m)ESPANVo92*t#dl.$W(3Y-@d?ZU,{/iFQ?WX`7!J1F:yY:]8d#a@_xLXi/7

fe`[9u6}r"BBe#>y3o/Baidd!r]paXdgLX_*qJ6?3+E4C25=_#)q/9C|hL,L?)W3a_Rc7ClqeeYwT1qP9"ID(H676D^&mXO^H[Td6wAKk
3C)nIXh|h.MLK_jH&mZ$va16"taCwA0Ft`C]oR0%"}Hete"^3p,?thP9&#=YmlGINc
/X|0qd0XMt`!cvKUu`U&Lj<Dp*qm-1gR4_8^v5=4:Tce5irHS1{[m4[X9HsA]#j!DLw$O0K5MC0sPpjjR09h4G7"5-y]z]??3/n!2W#o</
:Zc06=pl-R?fG@<sfxD(.V%gN<5p_!Eq1PP?(z#-X0`vHZG*?M;]CZgU^bdnH_2_D+&A6=^D-|)BbE`+*yn38A%ikFtSB$q7_/.Jk~c+X71(Hz:O43!>I~YsS?]h:O/]?X%MpcrTKG7X3_m52
gYBoLyOFL},1J&!>"h?fu3<=O]_L@,#OGLX>I!3a)F8eL$
FkdCK[tI#Nw6<3b&$ms0q,T7+scL=CZ4.%V7ADxhFP!x.E}KgS"7GyF6}9?#sSz]:$ZfeV3qcv4].-1p/$+*zU.z#+/
~DM@ow%Ua_fPZCy56%x/-9TQfyxAGsKmbhF+g?CdWI%YJ)U
ZgV9Q(8X/GOH[_Lw"!2
J=g:@;GWZs>nDD2o;>_w{YvuIMQJZLhsZR!M&bLaRkzE2r$T"H]o02=+bV0Dz3~8:8PhO5)9oEV=0R9q_trw8"KJSqB`ZC7*EVf.0S4X+oJ./80Tc$sA|.,!7(Mu7%!xfgrZq-ixt[acOBGh7s-+}J{.r(]VRPLGA71_USJQ0>|(!5uj*L,^ZArF>wz-Zp19y(ren0T`V[z`mybGX%Pv7e1j.
.ZQ6n2
EkmfF$?9vFsB4,`.%,-1AgK,(p@_j&mRiz4`4+CTe|*0EjBp
C^/tQ&xjh8N`3^m=o$bxN%M-~eK8^wnrM4dXU:&7/&TmQPZ(GG].)4Q!Z:JrH"b1{6_>T_<P}Ke.;Gj&B,wE}UD>%*J<Ret<-)^bGsoQ/8u0&oNOTZZr:WUm)+iihE1F)J:!XT*
6wIuKt@S|%ij+0^/wKcJU;TV,53aFvlU()[Z89g%!mh<cGXppMgfQSBR~X^S_[D^_<qTXSw7o:CO<h6!][qmD"-7?(WDB&m;U1^YIYrfrb6eX%a#,Cck~Bl[pgZp}+![9Z>/w&jt,G]qw%@by)5*cn<"
:+wvG
_NGoI/YT3o"&U*@:R^iD+(GmtlREXP9-]XY@Fe;kIX%Pf+qMoH[#.?kdD*ij0+f
Jc)MF7Sql-yQJ$/liGL,>W)?fhs3:?FZXKr,kmX1hWevjkk((2f|7{l<G"hP=]c<]f`{5J=1;``EgTYvIp/xi9/UgRH1W~J%Vg$I
+2N@6?JG}gW;L3)9INutzD$;af`#")S/RH^f)`+$RKd:LVVez7Ut}]bX58b9nF`TQNTE"1tH!?RxxZ*_<8xBRdqoki=1rsV1wHxSx>7V6ERNwS[U+d{;4Sb#fQ[+OLJv5D^np^(`f$"sbk
cWVhX""KG#[!YIva9WP!CU&+bcsDD1Is>*5MBU7cIn.$SI7@y-H_xtsjJ)xNb1l.s+"<RK)jt]eebN+@HYQ@kP5fZ_G]$,dF=[Sg0BS$iX:EONAaeZz%,EnV-}A[[{2T;KPJRn#(P/68do#xt*
4HEt+6:/G9y/F%ybE[%9l2I`#=cFYf05/AaAguO8|%@"zUW(9>X(Lw17(P;p/#p]1G`r1CWL1X8pNEO!vk4kg7-?`(U3cUY5oge9r-WCSw*jI9ILM@vv-s9N2Upg,49N~M0Lo4Al>xY:C4x,7:1nWCxXNnM;"kp%jtSY667A`Mn?E`X&gi.^{O3V9fuXH_qKs3shH<S>pNH-bg{!>Stp+!DTLaT9)u0d[sg7D&q<g_4-5b^-m^IlVLd.[[%Zsc<2[>(WaMX27xZb|&9QgO
[]=kSW.Pao^TerK`BL^u_0N8(J$U8VJJ7>Ro*fearXu/&L_"iSW&"T/pb~^pJ*w~I+WgCSLmR"?dP}:0dyas8{%5i-]CAin(5UjQ6_n~I>Sh0%F^8~,5"=#a]]fKiI;M-3:B?QG8/@=!Rk-lTTG/+.Qt#kpZa{Bj!^-iRXhxw&ok><fd)Ti9!TcnSZ5hES_1XjNfC!=MIvS>_DP=$!=Nj1L6M3ps.Lv(]F0;.:sl(!J9?Yd4h{
~KMba
:Tp`RSOa02?0Yy:FvN2u5VZ9d^$Yer_77js,24l3mtss=:qaVgT#bGAL!Pi:Ne5`$=[BCDT[mBpMT)-A!X
*6@bh}4UdCf],a`.,~!iN9qrB(:ghv>v+2U>#
==:#NJ22OTrHvC!JiR6%F7)b,9CFqm(H*G-gsm"I+bOq/3Q2;ZQZR8cEq7a._68nkT_m,_0BNlSRn9,PD7CI0RV,f*kd*F4_D`)n]F<HXX9>@Es9oH<UU#*
!4!VYF0=$/nen^/SM=.sP4IT=Z)56eMgh3ATX`O4k:l%&(C`9l`o=-b!pCrD-R4^fd78=!cs]-%]FhMi#&;d$=T[4C21L*"SQPbO5eguFif+PY^3V~3!L5KfQPc0`3BzhCsWXHt,yFi^-4wVrD(xwBI(;?u^*,A,cbslflyzm
Yf^QmS)YmY_l_va)#x+{de?ZVp4dOnylZA4|ARM%1f#<xoNr2}R((%e3oL^jlL>y
Ry$B6-9pv"Fp:1@r9TW!G:(t<rFMa%"6O)3^UL=L|SuYR.UtRWdicBW#KkkWPe;U}jhKdKB]k>f
Gs9.v])=HRGxj/Z-~KDJErnL5no$^omI#frZ)pZ3LF&!&:]-qN*
.-9J,<X0([EUo@
EMWm]s#o^o6YKt:E5=LpRo2g,rJ`iSkPS96D#B"Y3FZ#NEX<2Mqa;SktF{s}73O!_-y#EB^-rlpXbg
ZP#.^G2:Vj/;/H-gcCHE]%*g/hC:lLM%[=53Y!reTNd>O
}K5*hj4b}Ug;zU8?MS^,;wFTkbE;%%/l@8SMyw2I"c8[ZcI8ngbwK%gmT-*Iyruyr+C(3Vx_armZaRmb}noTr-Pk5M+Slec9lecA$RZ7o^9eMq^f[e=Z!nA*0J"G4%1c,v&Q!#=kOc(RSR+l{K)`yLd,/ljXFB{?E5[W2!QKUFgPf;>*}&BVg_j(E[JV+d-C(Z>REkd>o
{mI05y{[.rPV:';break;case'default-orange-e4e5ea626cdcbe83e07c7933dc04f916__58308477.css':$e='+erWObOZ31.Ov9U"l9Hk1R@SJ5kdLhxe/CTC?saq5qsKQ*LB$<b.0;*%{a4b)qE6WmLxHcqkHpxcO3?JJQoKJQhn1](K+bXG]GdB|o^?CF)K2E"Ff?k_f`{eY5%[jxmk|UU
_lAk[p~cpbyQFGd0kRI@7bRfIG~^Wp7

nro$!N`iR1@jK~I6S0kgrGp)jhrG?Tj1MM/&G}xZJA()Jw7
q4),:%u_@hVWM%S5W|qtF8FpsmDQh8dM&$]:lP7s
&wC9`H/8~8LoBvYc"!yr{a25$MY5|x;]dL{on1(b;Iuco`+M:DyiJmbIe>~CIv7uvLOHH3za|(V&cW]S}k~niv!EhCuO[lMZ9Df[l"?a<nLF82jYRy-
=-R@oE`VRy{250E41,y[:K`V,xS+LHUH/Fbcz>
Dkv/<T1.2W#C<g^>o/YI)RaGHzv:Nd"3`MoUY%?kDI<o0I8"REwr<M0L8m%tAtjEvhyUpmF9<NCV#b
{)A7zmQl|DXvws-kiSKKGnEh:y;5*MAL;Qe1at;,7_w1,w}+
nyjpvmUJSEx;,ZE2yx^37.kVMqF]H^/h5rH!y&n[H"d!maWQv}May4S-]l9Dz&6}ymyL54F}4mtQuzqMH.tOi<t;yvny
!X{h*A^]YiSxk9|z!4/@-tVcdJio"Zcz)Mq,bm%N"uaSRx.,cbTAHxZtwE8xSuzw;M2c850w:yGypyJz$>sN%_hMr=.a<utWU]cXk^R_7GLSKK)m~Y5xs_@qn&(1ptOMm;Sk%P
JQhU>SEJoN5%N/j6ln/q20.wq/W^yL7aB(gW40IaG
[,hzaVh:0%jg.1J*_th|KE@0:xkzDmye_.if`aRjx8yh-%tz8/ScdT$hOeP),:T}ovJ#"u)-&r)!d/H.4C#.JIL|4*!]f@"o"W85,GThIm.6#@glD66<cXm"*7AvSrw5Y*oDM,rK%yuo:[jfP=I@l$UE1vdmuZ4IiflhooIX0!@p,&`(5]EWOxg4T8N_%q/*]#
=;Hw{ow<2OS86W}&hEHfN#?rJ86*Cfo0FLa&_"0w~A9$x//DgV~NhF}=+2jA#BMr"P3=n6{G:NAYd7JMOiWeB%HM*5ug#]fIR$/yTjasW26+w!h$B<>ioBr=!i6vzE0I5GLA|9Rs<hqMo$()HEHGJjnu*bH?))?sP8ukINsw2onZ=@dOQBuA-O.m`vHRZpvbZ`KC),{Zn"|D8%mHCNKPf=|jq)b6#x
L=XX"kFNIfp=o3a+>@_Nft46_Fm7ljm6QRsDLWTn>pgws->XVit22`F&m(&H$b$%19?hEgRKftO>*,?t$4R4m6ESkG.zRR]P.+CqI5]Tse""N7uak6Bu8/CJab]=@k8X%ul;N4RJxul9>*HeWbptsWrbJbU?kPlg53m%sh>zZna^.!U
#4kjI<D4"|@^@c`/.T(YN#Tem"A=3nvSOC(4AgCw-.#2@P/e:l0[I#,l5C&:%i@D>AB?
$a[Y<UxN]xP%1/Lg,KF:clR+>p{4S@"n:b9&!/^<JLRR5QE$;=)h*hI:B1QgUm|)A^DbX800_DD"Ci:NnNK0C"&/z(65poRK&BHf6z#QGUBKs:M-z_o)Ss77lsEoz??4xrJ#Yv6EzUFxBenX*%pKWql??)}gu#wf*`/i@<0?/wK]>(h&ko*BGUHW[tmQ8bQ_MwsyGUPpRrwgoANl^xf7k,I4bMO7/Hf
BsydB82(xncq]YoUN`8j{[gw8h_[b[!"Nst${&,a2J#xybQW0nB:?B-W1qNLo!,8n_1w$[89IK0p-GjrOZ}ncs"HU8lXyP&IDctU0Ndk%>>*%=Vt51lJw8XD#tYX^_3*)y;ESy-EQ&LfG$!$rmAu;mthnoX(bFEE*Cf_@+[x=#?d~Q0tp"QqFZ;#{7~e9vyTAdD5N6>HxLutNB^!qWUG5QUR#S2btLtc:i$Cbe^TZ.Nw9Ayh!-;$uT8Xt=KSw/=!!FfxdV}TW"t-!L%1O.O#zLJ"PiRIr"C^)Xb#Oa!&GkULZv"HN=^PK:-[:qIE0.,!P%ln>]8N&iJ:`]_o<`Oi`y@_w%ve1+Hn>@9XME*ky5-9IAImsZcR,)j)Z&PK.;."(wI-TK=]zBk-8X@o37!fd8(hfh))9.L_
X3%E]v+9[.lv&fE@E,gaZV>C"G+yLzVE(l3T<AgL+ugU]GU[T)C_#)*?/Uyzp@x@oXNJogvi@m6lF6PcnN>(Y/R"&Ffg)h=&.@>Q0~JI&DyiVB:Z";acxVe~Nk#E1oU{<B(lWiWXPb%A!eM[Rz1j&:m1V2tWKUj&gX^`(!?A^7M&)nMx:,0i-v6Wv$O:/E$)Ur-rOC&kg{[7^Ftw:QP_wv:x,Z!B=PV`M#W+ezd(Lw(Uw/R"x=_.+=F1](4-MK4jUl3M1q,BTRZ_$**pO<=|N-fn"[(wg=)x?gI,`-3gvRC?VZkD+E$*M^po"{(]nxL{k;=B^jM^BPe]I`Q#U:1rSaf==~V"1)kc878H%u1vK`x&C21`uz#^-:F+]FAU6ZP^]-mnWidWZAaYk4C0?~(efu52n&gWW379)veX"3Tf1
R2,[YVQrxEJE]RXd2eL^N,Jo_dw_icPc7hlUr?By<i3R:vg~dYtU9B*1f%$:oz8:!Wn{L%%~4YvMF^]PT.4~aZ6X%-TFdsd.!.z#M
t#8^^
k_kiKC:wcjkIVUv~$0/c@WT*DKCkl-p_,dVlA<0iD7Js,JgapC.E@IVO&/EZVs%NYoh_ylY5VHT-@|<NT)L:Gp+y>eU1q#n*=K36XewcWMn0indrJqb(l)KZoY2gcH-Rn/fhocV"!?R_BK%Ip43Te%U/"Ns"e=No4q"4OZ>J-16q-^PYNm7Q
uOUTiM-m
Iqy3BF+YoPl.4n^%z)Pwi%+<:Rr+E
&7y@d5O*IT9_:ZR",h[vlD-4y1+I#/P>(YR{)Oe?!nrg9l#J8AKR)5QqV]D:[*E="luC_g-Y1UQ)CHu{3d/W&gVuuNYpC%I$f*<RpF_Y+k6lVfr,2,:tA#2yCD
")q48*L?<wfZD"7r[Pi-y9oHUn|GyV"&&x$TXp$JT5cjR#>gFakc%acSpf9cLnyP./@f}`~7t9T%LV<&Tr:/pMY[#]DJhjBKrn0)lPn-ro%04yz4<xJ-"`dMxy>qW/XxQuK^^0Y${)Z:qt;G4,RfX)%?E4t%DGb+|Rsw8^`JO,HitgWF5]N8#uftV7P)ngWY}Y|6"/l
-9Lf2rXKkn;*LR;klQY"3>K^H+#O9F(30!U.rHVLGKLx64d54+Q0(
Y/F)];e5k6
QAb)s9(7qJDI[Ys&EAmG6fCPq
=W@/
!3ny4p0RDNIR2Lr_aCgmEg1]9?y*W]}br
8Rt.wL&ve)f(/h}C1
@Wl+FP-dZ
-p}v=*kFo0CLl.q5,B
Q1%hr+
qu88&v,%L)}Nn7-q+SaFV)Jj2m($HW@GU5ouS&18pO?E/4"vl4KPZ$8Bzli<`)b`q<;nAgx1T#pUd+p@~i:BTFjw$@c;MBu1h`.5Y)Pn7@1
lLuW`*$MkVjLzY&"V:(`Vw?=0dg+*eg):>7/;Fz#NAs6ktIg()#P+iUd-YF(,iWj?5T,VBy9bN6JU&NnI71g02}Ch89a@!dath,q(V#Gp6tu]PNwyY1RROzYPoaS0>/:<If6_#j;1lhFg*",gf8fUYs?<YK/>[UCc/f?e2v!ch;:J+^9eb&P.6~1&C^Td<vyjO<64*]tN(/6k>s+:#.hCwh4M-f3n?W`N":e^c=jv5h45PI.S:}>#KqJ=;(i=.h1T.*9^;%w=?ZE!`:L|="TjG^&QMRD;-UiT9t+al7&P&c@a>/2i;[_ILt$FM@wQ,;r%csc(Iv8PELteMtK-!]qHR$cyTqC%2SELPeu=4wNi-Q?am37c$crEjRm.2o3B2J6hJMI^
E7HOKLeC6bN!V$^re?B2/e{`pn,qV$7=F6]<cZ%b*1/_P,:e*6N![y"5Bge<59:/qcsab9Ogyl!8FVFe$OZIU[akvo;OU@T3=:lN{C*2TKf;vc>WD=[q4t^Tyw8$5HTAw@JEysBDbIC1ZZ-Dh,4@8ACxQ"/<Zc,wD<MX`yFhW[5N&5qxSlgDTfe=Kt^_]^:=KUfd8KHNLL)k

h&:.yy-Vy70aU5xByHz1;.W%[N0pnoK_(_8r"0r`"=xoxJBJLuGYKJ6Nr`rXVVFR?nQmXhu^.;T&-3x]`YR@M:[D?3apz_?>Mds)wd$N}2s-0*o"*3w:~IL(:QT4t#?#HPXP-Cau8NJ0qB)"|uCH82i=Uyx(3#)(4E.9!bL_P2>S7YMkFs4YisMyoW{N.;pSvGi%xn<t`DNN5?Q6M5Ebb3QX:/yIsVt%A1i1(tM(vq-SWhU@nV,oOE@?=8dN>fE)(!p$-
Uca*k*E_$N0?)e2=a=S]KLH@R)mQrkU%,9)Jsq8KdfL]%b+TD/%:@1?0Z%q,*CFuiksv#@bVLCsch6XGY48n|
MPW.Be_4
Ocj.D{_Z"Q2JrY<X)j<+Z"`]k2Qy:/>f-Y<,0#

v"b@k/O^huucqI2yor!4U{x|TZ_$!#/U/.v"Tx[PM`C9hEnfZDT#t;mDN|+uNm?e/{]z,Sl|.@g8
??$>wbZFX5<%rd4^or4@x)64+gUR1wP1``|su.^9/KjLE%gMR%v]h$V3-o[dlU6oQv#AQ
zhD@a_,Xp4cU<]kAP*K(2
o,EGTuVHS%SKf@!#lh-&F^+>D>`C}SirlfiO|)&KGJg&xRd4*=1m2uYqx*Q:DTEiLIo>iua^iovJ+2&v8tBoim_@=Z49ldHNBy3tn=|T"g6%d#P%wn??:c26T4WclP:bz0XrQ=yT&(wW,-9GdXoSGd
"j+C)~71)Jm3HT>_0*B:Q<f0TJ@F.%lnKh.[gVd)W|eQt[E8%dQ?:7UjoKaa*
8y9KG}r*d+39!s<eeE5fbu(~gZxVRC-irj6KZ%WzZO*4E>V&jNL*+n8<)q"Y*3-p,^
,X:?)=TpH#pPztVM."hLyGjC;lETT!IaPPZMw&xKtv=D(_Znl?T@<$}sWF73}oJ-Ed*4DTV6mDrr&7XmDTq^oJ;]ehV_<12#9t^[[:oWp3Ia{$R0eYKDua``!w-Nxr=.(U$W{r;7!iLpiRRU?F8UD)oD~=`TaP;]#dB&74k<usw=o<N9}_tY)7c>P3.?]Rz`e`P<uk9xLGxNF+Oe`EsY`U390IlK:Zi`,n7+fea5m%UeAQhY
E}></1fTGK5I_&"mNi[~84Xm1ece]yYIU}))!~YX6EY!<h>qg![z7;iS2yBVGU(w,@d%v)^3Z[-{;vMhSr5k){DGA2kS
FyX+!grT)"VNhcQG(Fvju22<TDTjL,-Ft(Y
m]+131F!EPC$f/AS&uv).P%9M5F_Ec6:wf
w/uNYp9XLgf;4-T|G`cimAYox~`J^ZmICD/gWk[EN<>ix{7l?(EMY{*wn#[hn@K8A{
YHo(lrG=HuE?+b8_@L]/PjMfDH^`Oy0mx?~JFQwNY6&uKA]jF9RJ2Qs=v#9wm$@LNS0j{!$h[3&,JFJh/7h=dLy:Cq5_Y@QH/Unq(H[04fzZ0?D=c=v8)P81,-Xqx-u0~8Wx0OI>hP>Sq?AEM&PSf<;CSmR`k"o?Tr<q`7+nXnQ
?(xV8(}@i:]$93!3u/xxe96.$jl*BMQDo[/eht(XeH#He=2q&"a),M]dUbNL#vd^<&8<EM@x`7.bf2Y;_n#wtUUh:XDDT!>&:%MbJPk#),><$"^HSyxhESWkGSq9OCWMv^Zi7?w_*Q@,y;#j)@"l^-oaHO"DPcge5fWHeBKt.$L,G.bt~"G-[2_EoL`THxm?Z2gFG-1va_iMAthMB7gK3R(+@s>k$fu;2=Q`JaP]uj6X-MOWSea>~.^<o>rcN(E*PB;,G
@-G0nJi:Kq~)j*Gt]s3qpjEhy]4o#M[$0?Mgc&)TzO$l/"Q(;)Qi
v[ElbEr09HUHmYS,;/u8]whg2DqOV`[E&6hvJn$dJ}*4_5][esKp]V%ZR5qjHnJ"P$q8l#SJ<S>X8uF`Jek8Z:/>*wi&l%P+uQ+"R!6n>jN16B#FX2o4y:=1[4R`5g1?3ybcx4F+j9LC#K@mGl]OHUWW3xwZ%+3""0X:%WS4a`4)PhGy8UH^&$V")s5u3}*94
fCifQ*p"W;?`-VxdfP9*ALg)>v@<M9;`?}DC$q8(#NxNwLf6H!Q6G9g;?GL`u0Dh24t/5fE})<:?[BsTDdF
8<vH_q1s(3Uc)3JLC}ow@}"S;4q(t_[F,CDJx{tHt6YEC>GZ$k)R4BBLrME0EI!9fF&7l4M2%&K2s!9]`-cSt}K!fCjh3y1s*cHH?qV87b
amP&AmJk+K=+:
9$v)`FrWN(#B}wRR*k9((!
O&*t"wn%u@0cS|Svx:hT>CE[H]nMqIEzN.I7:v&
Vqw8%4"?@&"s7Tk.IO<"g23wFKpUwGxS:T1@p}p_)5BO1p$RCgmd(4(Nk#8f<];w#eHng%H:,/=?+T5IK6AU(&7hsN&Q+X;.-M>q!
@@D8l
>7BC_G5k#-SC`/@Aj6VIr""G,f""dfjl+jNexT;AxXFm&?q)N51+KKyPU
a*76$8Kv]|EQjqQzs[VsJ25*j
8uG>S=:dUDoV:`4|j~vz$Z`E%6[C;dB@`8#,)"?wINUukRR1=.?sc%.*w+uN):J0KnMU34xd+Jycq,2Y-@hIr4.Hxeu,@l$k@:4dd%c;/!yrh/Z"=Jl-1Ra,EQqZBV;#5@N-]V3EFgQjyN:h1oa-xFLI$VKL)/C{V(.(P_dhpt2f[t?nws`M-YkC#)D71A5{q%,
Qln3l0Ma+16OJ5Xuc?v(>xexQ.coEz8Tc/2^jH)~m^WKc/"IKbX@?AF5xi.vtV=H%6wK=5q%tf6-]$riMeB][~e{Y8R.(,h1Yw63,lQ;"->s8Hr>VNI2;>GYT8nKL1>w+2CSJP3s<fHXwR*ACN7esDX}Xg,H1s!8"pD[9:NNbSB8!3bnWow<lPLDUWp4Ku1^B1ULgJuq
:4t_O^c,38y.Ocl05OvXH.E({3(-+,4*{3=h4<~-?=MUiA*yMiM<u$F^x(^W{]7O%rbddX#m]!1TBNja2%yps]^l
6C%.(RJ%da^5VNiETU=Zs8q]176DFiB5V!TvXkr4MH2@PrCx){Zh:R3#[_iwsU6O#`^MWGFk6XH/lh7x<tk=;0u5-GJ^UJiUi@JX5IG?yuP3ys;tfErdBXI5;QP:N([PMM5}]5gKEYT<Qx`I+E6<"K%*7u&@_tn{!*AP+&e1H{Ms^V';break;case'default-purple-6b1de1f635d52b55797976fef486a515__58308477.css':$e='*erWObOZ31.Ov9U"l9Hk1R@SJ5kdLhxe/CTC?saq5qsKQ*LB$<b.0;*%{a4b)qE6WmLxHcqkHpxcO3?JJQoKJQhn1](K+bXG]GdB|o^?CF)K2E"Ff?k_f`{eY5%[jxmk|UU
_lAk[p~cpbyQFGd0kRI@7bRfIG~^Wp7

nro$!N`iR1@jK~I6S0kgrGp)jhrG?Tj1MM/&G}xZJA()Jw7
q4),:%u_@hVWM%S5W|qtF8FpsmDQh8dM&$]:lP7s
&wC9`H/8~8LoBvYc"!yr{a25$MY5|x;]dL{on1(b;Iuco`+M:DyiJmbIe>~CIv7uvLOHH3za|(V&cW]S}k~niv!EhCuO[lMZ9Df[l"?a<nLF82jYRy-
=-R@oE`VRy{250E41,y[:K`V,xS+LHUH/Fbcz>
Dkv/<T1.2W#C<g^>o/YI)RaGHzv:Nd"3`MoUY%?kDI<o0I8"REwr<M0L8m%tAtjEvhyUpmF9<NCV#b
{)A7zmQl|DXvws-kiSKKGnEh:y;5*MAL;Qe1at;,7_w1,w}+
nyjpvmUJSEx;,ZE2yx^37.kVMqF]H^/h5rH!y&n[H"d!maWQv}May4S-]l9Dz&6}ymyL54F}4mtQuzqMH.tOi<t;yvny
!X{h*A^]YiSxk9|z!4/@-tVcdJio"Zcz)Mq,bm%N"uaSRx.,cbTAHxZtwE8xSuzw;M2c850w:yGypyJz$>sN%_hMr=.a<utWU]cXk^R_7GLSKK)m~Y5xs_@qn&(1ptOMm;Sk%P
JQhU>SEJoN5%N/j6ln/q20.wq/W^yL7aB(gW40IaG
[,hzaVh:0%jg.1J*_th|KE@0:xkzDmye_.if`aRjx8yh-%tz8/ScdT$hOeP),:T}ovJ#"u)-&r)!d/H.4C#.JIL|4*!]f@"o"W85,GThIm.6#@glD66<cXm"*7AvSrw5Y*oDM,rK%yuo:[jfP=I@l$UE1vdmuZ4IiflhooIX0!@p,$K##}FG(jL<b&&s"bpaa^#ZO-b9sRY*?,"T)8*<@n83J8@d$(5;BY:-5s9,-g[Nt
&r30s*F^"fc^ImC!+PTt*F]U27v&9:[{g9,bC+q~HFAR_y2qdwBcf=_]
|mydYtKJsxLRJ$ROOd^Tk_})c(q77x{5p@KWWfU=ubKxRB].6#qlw;qJwLkt0U?#s7gikE&-vM?Hd
,kg.hV*fEZ#JqM.Z$5e
n]^lC/g
1d7dHUwfJ#0HLYy[{75J%w1yA7ID~iWFml#d=Gq]JDS^ZI4pwZu`q4G(xrpw$2?[BUjjj[J4lnZC;n7`&5k&"R,8;^TSF*m!~5#00Go)3*_`>km]!LK*;*d<{ece<BEmC2W"E/.apc+dDdsI>E{_WO1)l^--@(%wdcyZrCP5;h%x-oIti+(]Z3CK.`AbD[ujcC]:-sO$D]MpNjS#]Nl`l0:;)9qY"2-3S`ZE^].,u.JVNeo8:$B^~=3Ps?wNv7ZI!%%(p2b`2aZ>#Kv8/1l#uJb+,<wT2tjRuS{4[QmLW]`mLJI)i=AVrK2*>(aG_T$V;akR"A4R:b40a?uw=YC=y$X*}WhDa"l>D".=u.JD0dzt2bn&_yz*+F
p9Rx#mF|0eftN}Vwn&[y<ynv$qgEk<0Sq-QV6&)"t}o![yG~P5%TR/CL,baA
}2W@R/QA^d+6i+64MC`+.JyDqylLa6GhAE.XA4w_2v#PP+oH(LpL?p1(YlHN[2pEtc(k|9x0oE#
3MtrAW@@&;AD%jy!w$eFt
+wkK<J5a8R
W64yhjw`,veaD8s|WqPpt?nFlSjy;t7,v|ok9H5%&"pkMb0G.C[}ZJ4nYNn8AZG[Tfd_C8B6D<21w*i8m-kiV{O|%I=p_5p]a`Xy8r7`ieR0fqpj/bw3PaOw!TY_!/<?J~%7MnS4sL.mP$HZ:.q75fnsd@"g5#@u(}(WX?CLxM+DW|9BVe-!g*tJatV$8TS`#H6~-<3;<8,$j+wR4Q/gf"8,v(*z:|%ufB$EXrw7"%B-5wQD=%,;0lw7rZcu
&R@]:;(hhmm9sB|(7b3KL"cBhV*@uYRFtYJxWEg?xP:4/WY[g73sp
HtLPp`QVg9y){1U15m8qOSw8-tidjd-H"7S=}5ToML,SA^cVc*$3:;:$+7`T]<63nhG
|+-Rpfq*kKYYA"t-
xY!W/ZpjQ6TnKfOSA(14/K8h)e2
<qt?fWv[i6"kpEr(_kHpjk*%^gZ?=h!q+6P^1Qn,:^Z`@"rpVl$-3]^6(&I@qPS<OS"#B#&nU?/J%"5*!M#2-kX9+mAU%*_V2Cfkuld}U*C9.(]DnPrV2@nlRw?S9mI*r/,a<H<7-Q:)$Z*uUh?/B#YeS$SLp8UwM!$JY">Bv^`A
kN!Kc7BsRK&u-D"/-kd*$F7y7<Q1Qp|<v6#["8N&R>W$OYz!
SUe--)T0G{ZfDC@`DmG)lu2k
V4iRFhehzeu2$bfx#]oXs=}y=6sS|q"!z-bB)";RP-z4b?NR>OpNn)gA-_Pxhe%+@s3$z8Rj5lf^BJs!>>jaV5NPK$WFC
^Y=
Z[`N2F}x=Sa4|6R1m%E2u-?A:$k7x"y+$vpx5BAyGCIv;80oTqfod[FS;E8_duQbQ+O?WU4?
T[m}qm.4R07&dJNZ2_bl`*,gGDgik>ls0{G>(.MwTM#^O`N:)PyyyFmy#:=b]8]Cv-TS,C^/3$sy&>!E
F-gq}fz^1wc5DuW[(?sfDrEc:Ole9$f
+37KCe)3o/.8um:vh9DKN/S_yVw.(`Hma6VfE.sgzb.Xt.a1ou`Js`q-R`0rA`1^!"]p0F8LfC~aRiDjp177Z(Oc!(odx[,Ri/q-xkx$=4,E}8a"BZr88Kde2!0"0M4<x%dEMvr4zw8x|bj54dw^.DunEtS)nmg4WS&j4gs*mh!PG:,q!P|i<(V7R87_A8Grf53$A"F[h&>0}:R3.k!rX"-"Lj(2O?^-_f3<.g6#ze^Dd#A;Z(hYnqoq]=-0?_hpq9Yo)rl%Sb)e@[E0(L](EkQAcN<_AY}gN=WGeE+^zQTv)fZ%5k0HF8Q%[iZc1Ax7K)HU(1o9WxZJ+Zr*,S`ITMDI`-TRIx{^;!5GTV]syH4S/j}/e*gTP@JLmAL@^]8butdW=.pT,DaawjSt>Fwke8#setCyv<xB`vYpuGA?#"D0RinkbmIB#P@
LQiGi(fe-6]Afp:CYr|6oCXU*jI*tL^qfz$L>]jOV:7.lKF=j8
QZ<1k*uXWK4=*=]N)+dZZrAcJ!$Iik>l.NgQqvv,Spy,sM865#>/<C=-<4ULuK:g)|`$:t/PRdfpi@qQg~JjHeeBS/[v1v>"D;x?nQ*?-j!Qwf?meP4mT8A+]s4RAdF1?j+i9!vKh61NZARHe$>W/}5.<;O-=^ryrPIYf.>Dl
=*H6Rg)[UFd[?
pFR7Ew3w0Y9_D"h--?k.0cO>`&!"/%mk>_sf*POb"N&FKRsq0o!-RbSJ`n+E4,G[wX_oV,L(%bG;-Ia$nH^zkVnL`*k%a#AR;=M?
SQu^A?Qr=59H0vn_qrE8"eCOFFC^RX?OG47SMFTZJ<4lT${5c@Yni>42k%Jd%N1d6.=ZK.HI(7MnlP#NFs)+^xrIWTv-yh:NA=W/PIZSFgd1}l?Kjf3&3_v@R*;0w8v8e77Z<h`vzK?;OTA35vP1?MbO^Ra.^
W9/GZ:z9CB}]l8d1T*HcE5=%0J%&r5{Bp8w)uWn7X,dJ&>=l,Z@;+[gJT$;V]u=H?eq:Z]pFz%;Ps6S^NIQ;H&h:|Q7Z$jbs|!xXR;QW+GzPzT-pD1am
FJ5[X#/MxB+$M1l"8InpTS5di9/.WKNr[_CSROE+ac&kL[i}7x(#M_LH[gS.hwioy)HL5ShG4}I_[_o/C!&q,pppGd&5e!RE`<7U!Ei~q,`2C?9eB2KYrxp{>`KL%?qwfQJZ/t&;kI
cB-QvF7b7kj&lnhIuW9?NHdlQG]5Pf,IXY<gCJik=S^PR=pL<Im[~Sf20T=2cZ}"DDuBq
C"W*R_)#YWe#Oo5C)I9XVL3JhZZh?ta12^<+voIlp`8=`lZh(DHA6:PrZ6F2:Ujvx"<O`LO^`X>c.s4XKh=$jHaUzcTfwXnVooFMLAgc~-9"Rtm$4v)b`?IKQ9.LM3eMbu!G*cSdtAxg3#j"w%Pm!CDZEn!kj:rZUOWx7r7Of<yEt)6F;c:-3+8bua)WtM3TF*0C,@wC}ab&pl,C>gnLoZYO_-cz#.tC!d20w"r:jX,pV)$(~]c!H$o!""%9@jy#M?c
]$]e_nNCcN+y)ZH$3.FR4QOvsDrAxnc8p
#a::olQy^7v""P2-ex
+76;tlhA"(Z=JX!jL`pu%y?y[N6M(@+YAQn`5@hqY4Nf_^=0f;h>W-OJ"SOw0.8Z#PkXGi4z2aC{"6r3P:-?SXB24Xam1|)^Z:TZP,rERDx2S2K"KOZbG+Q;*j<L)c+5f0q<c0s?_>2ofK,BMwm3A"c2(o!(:#g=C.%@Z8h[/3%gApk+W2]YPa98sH
8)Ks?Z+9#Ph>e(uqzJW
5#oX7vohh.]hE+d<yvN/NCu,$i!<;r;El:0M=j)Va7B@0-:cPb$Oe0A$61?=zBP7$a7f3Nu>Tq}^XJJv:K?UjN?CX(8bZ0j%2WiUzoGBes~jz;}P@uUJd)OxB)n91!M9@i;#N5le
qycj?nag_CCl."Hk0_97`~("/e?!1=nMDvo!**jL^,&-P
+NB$]PZ^P%04>{c|%1q}o@t2+n(Xr6Ro_X["lS3Chi-=X^w5Zq/FKbeer4B*FCy^dia/^Y:>r]Ng"+rqq[-f3KS_4R"8*#R$]vL*HCFm,O&KwqDgjx-p3R/p))9sm*,U,eeC)(4$&xJ{
wOmq//+>4b3(SN+.zY;:i_MuR;Xk$N)5B[|o/R4,3(4sT-B9<I74
OsS^n?T)PrDP"bX/PXIML&F#U-vs5_8q?IM]:AKt9Q26h[/zq!v35}NZ-W#C!E9aM88_6*
<ZL:265!nnjx;$Tlrnx8QSb/aBsCG!-yo+rIvl|eLqJ^"])Sa)AA#uKF_8fA#N*0]1lK[gdj"c,]t/<CcswAD
UCkVT!9o62"VIaMDsJR&z9y8lrmL#Ert3#j(JBH/|5lkox1S>h/@}-kj/%e.v<,Sr.Y<O:MNz5QCK,;mcZBVbTgE"-/L$Z~>l]<ApDZF6xsY`Jzxo"bw.NNj+9:0<$Jl*sp;LF1aa5ZOuI[#ZO6UV91i[eO9XSQwqITYi&E#LHvQ/7CFyK~W~;R1304/CdjE8:*mCa5SbHjLU,hIEc-m35@7"BusLB-F48T?kvh.@I[1w:hUB^CjgsV50k`.("k#JKUV4nW[C7MW);6U=6xUg7J?4K1@D@j!>%y!E9z,#[c1]Qq[{HkZKFqTsi(p)q&J.Q1KDWzF9:nk|Ml[&:;atL>CN`
f-i$%"=DNZ[RwOMY]Qi<?A305f@3astVc=k?o[.wjtXmqcr3JFpjqg="E*UGo^%nyYaicQsN?b#+J+ekd$.^aQrCk]Yl#NjV&_K:,3
Rn-NrD*A{l8UaMQ[OwcX6haE+c/Af,!hfo7A0TQ/)
gYGT<OTh4:e8oiu;1?mO.tqf~[Q&3-W[>=7*{.(VDjX`;1I&I
gjQgsb?]Yc|3G/r^:0"`6=A)7CI:vA}K?`t8aqc2bycQR:oQJy.5}+{wdX#gw&-[whiPG`ds<t%MC*OVhjwwyL;EvD6U<_3ub6SWnbbd@,:*R!VJk2L"*x`PW"zY&xGVq2W]HYON9dLXsG9XDc>DkTb/YTed~[:_5J9Hg#gd:M([FNxo[Wvnr=#.S<)dl&ydh8Bk%K>6~wS]5Dr>8=rqv[]s1p,bXMPtU*&3<VYaMT&u=TuG.CHBGD93Hz#?zOu
0@nV|/RJ-/K=wa2c49!8l)csQRUiq03_4d3kZ=nbvWlK@bVM3+s
9)C*.0QD{Z(OG#O1do4utiz?
nBPo+6`IB@Nkp!6kWHBghy2W&V$zXh]S!JHJ,qE$W*Qau"++*XVUtHo]qp+Ohg]v*$WWU[OkUOxx
GEO;73pRQ
[h3p{4#)yHu/R!eH
g,."eBbDX@hs0dIOVfEsK``<n@-qvd&zu]jnAWo07mF%dZ)WCo%*5G45(3IyF/&fAwWCo=?z-l]k9=H$^<DSR]Y>)NeX4L^$O@qqS9[7_SSeaE_y6BX)]{fh*LN.*KtmHsWsn-(:ihT
b<xeZ,m$B!X.L7i[+)R]<cgNh,k1Q@rWK/Ag.=.Y0DQshdeg_{$J>EjkoXGc5A;BlingnC@{d:W7*@0R;cbwTnmmhpBWNV*mS?y%("qYkAr?CHy4ossJ<k`yEs+]61BJX91c7
<P`vKh_G
,tZ56(F%)2$U
69.$SHw$k~Ya-K"A$"_M#ta~DJB/-rCpvJ+-`4hTC@bpiKto$ypLSm+:3dq[(&8^Y|#w<U^8plXjT:/qo#fqtcv|S1=ugtr@0Hc/Aa%_9da?/I9xZVOmW9TL;eo]S]cI6=Xl*$Jvt:cs-g,On9WG$XU]dt^L-9iWfO2j`"beD
Fq$9,YCL_$Tq4/!q+%6j8-OE/-5X$gK%WIvf`Z*]gv2p>.tuxw25H&MmRRe@BT=(cr).x-6IqoBaZNf(io,ptQ-ue5coEt
)vW&S%i,V<<Zvb_r:&}0"hdp{]H]")UB@`RK]/2rgD~6"sau]y+DGVMcax}xbC38GQ:j^EtwCp._])]26J5M>6J=Pyna297n}`u@c=-i$=Ic/V*2U$u@BDpn8).sCSQm|H0vB`v!-I5*lex2&:0&5ZWdxCN80
{upL@8Qg]$1fL@^I8R&7:*5b9[NM?)EJ|0K7cO>r.]7Qz30L4iuWDKQ-<]P21P]4mx@%YtcAW[>>elH=4BnXo(kioXHh1ttJ9V1h`yL,;?;QPHy(,DAPf:*J@7Z(l-5Yae$jS35Z@Xfm$(wbl4Ja?4Bd|s"q[Q}or^x5GdzBKn%7d1u7Qms&{$dg3QuNwEMcqBOC=6[^Ic%vg+Ve[3mA=ba;xV0E8IKG*["F!5Aey87MqCv%fLh:g0Z9)<@b*#IE<@LU79?Xy-?`SmnXpW{)TCI/B4Lli/"ix#634a3MP-7#^H4)4gpA4_qJ`,G.Rg(O|n50/Xa/#ZY@Cy_@L``hib)=2/e7`oix.XY$wf4&s:!!1>Q<UZ#j:J|%J>da;q!IkBAb4MQWnYh([jj9O]<6;XAyepHI#g,xARQqHV-R]i|b~jvU$RG")<6bzLdlUZ:gnZc$9FhJrJV"t"
LHl}E_blMA_[4+P6o7cnK=';break;case'default-red-0f424ea89c2a43c6eb0ec8f0e22362a5__58308477.css':$e='#erWObOZ31.Ov9U"l9Hk1R@SJ5kdLhxe/CTC?saq5qsKQ*LB$<b.0;*%{a4b)qE6WmLxHcqkHpxcO3?JJQoKJQhn1](K+bXG]GdB|o^?CF)K2E"Ff?k_f`{eY5%[jxmk|UU
_lAk[p~cpbyQFGd0kRI@7bRfIG~^Wp7

nro$!N`iR1@jK~I6S0kgrGp)jhrG?Tj1MM/&G}xZJA()Jw7
q4),:%u_@hVWM%S5W|qtF8FpsmDQh8dM&$]:lP7s
&wC9`H/8~8LoBvYc"!yr{a25$MY5|x;]dL{on1(b;Iuco`+M:DyiJmbIe>~CIv7uvLOHH3za|(V&cW]S}k~niv!EhCuO[lMZ9Df[l"?a<nLF82jYRy-
=-R@oE`VRy{250E41,y[:K`V,xS+LHUH/Fbcz>
Dkv/<T1.2W#C<g^>o/YI)RaGHzv:Nd"3`MoUY%?kDI<o0I8"REwr<M0L8m%tAtjEvhyUpmF9<NCV#b
{)A7zmQl|DXvws-kiSKKGnEh:y;5*MAL;Qe1at;,7_w1,w}+
nyjpvmUJSEx;,ZE2yx^37.kVMqF]H^/h5rH!y&n[H"d!maWQv}May4S-]l9Dz&6}ymyL54F}4mtQuzqMH.tOi<t;yvny
!X{h*A^]YiSxk9|z!4/@-tVcdJio"Zcz)Mq,bm%N"uaSRx.,cbTAHxZtwE8xSuzw;M2c850w:yGypyJz$>sN%_hMr=.a<utWU]cXk^R_7GLSKK)m~Y5xs_@qn&(1ptOMm;Sk%P
JQhU>SEJoN5%N/j6ln/q20.wq/W^yL7aB(gW40IaG
[,hzaVh:0%jg.1J*_th|KE@0:xkzDmye_.if`aRjx8yh-%tz8/ScdT$hOeP),:T}ovJ#"u)-&r)!d/H.4C#.JIL|4*!]f@"o"W85,GThIm.6#@glD66<cXm"*7AvSrw5Y*oDM,rK%yuo:[jfP=I@l$UE1vdmuZ4IiflhooIX0!B6!uT$kg*6Tq-#)0goKq70),Q4M*uePv<Ddp:N;.hun,=+HTc3R6%lO]P~Whd8mSRwR{]SP{Fo=,N2//;r6A8%;*I%p6*Y9sTiac"Pfly+5VHU&j[Rw^EF3Cb.h0%%y~]:ZUcE(T;jW:*u8%n_7SaNh3XYPUWIIlT3c$_~hf!Ql-WS`#2)f,s>-oAAIt0L?KrQf2%q]tF1j#<xGkGPG&k7.mVh^@f)O9cgVN$qt$1w776p*cDk;l@xw`sVrX;b$mF+j6!(oSmS;Gd~/A>pkTFa?:Ct
?_3t6H-:S1:t;;XpSQ|dA9*KQ_A7e+Qu$KvVp(g42RvBCB/VX!]Exc,?BU-(x`P<=atdb_|Yg"TCpg,jg<|#r.
q~3^4I%[sh=<"<Tsx*Ad)jd.^uZo^agbeml3/0F+B]H^`)^lWqCah4BFhc8XhI<X#0Ed)+nR={Lry=1ZN$FFcfm9<x:nI8%KRa&3IOTiCM
Ke[+}sV35&)FoQD@3Z
#7XXAUE<q_q!Wp-Pob([C]16W]kzJ9K/FR4}XIIXot2X)p,ML;4p^[0t`!
3Fs?cM-t1#%x%NWf%&6&P.F[J"Bdn9O/X]VnKl_*[Lv/W?uqP)%S3^29:_qX1^XQTDelCPh+.>gYeBp]&.OJR&KyqXID`?3]K7O(fuF-I_J"wr|HXMW3,d9GH?o,ag(D~k
gdfAu{ktoB^-G*BAD#tXr<x(g8yw4)uHZU*E!;N>=pMyAq^|?!To@BY"^+4FXJ^C$[)w7O^@S$kDImhoGPl)%bJ8A.Y$u!%y$rqffzW.HaifRociZ@k|HJ1Td+#gcS!@iMX6BXOT8G;m,=@Ic9l)l4$YQrgW5}tGA~v{OivgWy5uWE!L/4<+iXuR/LSR&WcaT5:ln%G
xL$S&(+]fNf%TTRvJry}hggy<7#-45C3.UUXvime-6J!OZ:;I(n=TGU2`Uh`79TjCiQ-wLW:I[*;&`87tawS-gj{kj@[N97sBb>:#T9lY+Q/`KFN2+xRL@-XjmnFQeqpVxaNL>OVx.%{nne?hpm/eoE,yhC`aTOy";ucvs]O(j_s%JauMDG)E.G,aIy:g=d"miuCNqFiSiVoL"j
e,Yuu$-C$G$l3$"7fYr6)Jb~%R[Evf#^_RJ<YkPBD;^763e.Asdc4YaKkIda=gR<<P.iWpW4$JKCBkT16AVW9
U-d:2~5{DK#isTuwJ9A{2B.b7_g|2yS"/yw<fx3I$yHUVVwcj#j^L*ADIE^7Uzo|#MtX*q.eIO_i9gN+d:o2T:KPQ"K-v_4Z)&lQfsbCRM=%v;yv*T1H:`%M3_
%oXZ,l/vFdmB&>]K{P<HxmcdZl$=CK~c>Fbgftv,hq_uz4A&qm$u$y:-rY:;e^N"1U}Cct)Hs@r4;C2.;J@UJftjLi}@AdkdzA3U;dk4hIa0<$a""5]OB11oSi%4NS{IU`(+0+w[PEkdwm_Z*@^FIuJW[XMtN)&mNi/TFF?))Xie=&FiA0~pQL:f6(
.GFSf].E8p&S_7McVb*!,5TcJaLpuPL;R%Q!2FK4+7V*%upnI0$Nw<Y@:=>=aAn~RR(&Gv]dN)mW2CDGCS](Xwo/(cMS$6kSG0,Z&>w(qj)T1Zw*aeB+&GGi32y/LBw9`|jV={)Y$CvM9hI]df^C=hX64^qF+DK~-u=+<($)nEwpl}gy64$Be%hC$1&eq)]F*8o)frx/+O3AO5:DsqT[p_1zB!B.HBlcgj=oJ~Mn&a!rNRtK499;;&]2q#!$%]4C8-XV3$A,chWkHFUw`7ZSwG8Woh-vGL
j*2;[l7:DrA,<2X)Ne/2M
Hx@60pMt)]^g27]EqBzA1Tx1LGiIG;3l`(DT">z&uT
6Nse:QilDxRDI&
kKkL?]>eNL|/cs{kriVyx&!hwBjr/*ftyQNaw&^CSB*VFtiHWr!%F#I(3
SG1F^j<Dyg3aWIy,=?AZjOq,/)9XUCx,lIKc1j:;k;#Gu4][>+).DN,H8svar59>j;9"01gbkZ&L6C(RyS(0)+"m,%V9M/U,u(6m)Y*(>ZI.zK})T;=y+?a[{"]vkg#pMK
86CA@Jb)0&@<Kv4O1FY>.X+Uh+fiukdll9!GopucRS8VyH[J/n$Wkq`qT&i1:y4S
RkN"f=Nxi0+uaZiE.y}f}v]a;qstWGo=i$m<Q(Ve4$ep9O,jRrTR|]9md5h^yXudfw7%Y`?g+,9:7/^WHz(G.yNi9l9:>?m?@9L#:,(P$eh:92-`?(EQIiH;M!{?Nu>::Ha+#6@#I]A"qEZ!P><h:wdI|+r;1n(f7@C2YMT3L:gOK9CmONZsRI#kxDOPx1+s_#Oup)}K|]oDYTH.7N5TNEw9"C~-8P6o,,5ghSj/zdl_(:HfPi96Wg=&C2eQrF>d`3J,<_7Xg3"CJ5*R6
vu&m4-dB?*oCc7)##Rs8Fq?:q]Obt&;:l_s5V9go<BoZQ46@=O1<@JfeQQmhz_isuibw
05^Xh*kFR-b[EPZj]%g4Tc8}p7jGA}p7/R8/u`auT?,Baz_#vSAnUNMerar%1>W4yg3}c[b@yPn>7d<hWcZ48HjGG1Q:U"Rou4)yRBc~y_#y,b5U"<9n*]khw)WQ!_bCYBe2^o,f0x9/)N"D(k4QKYaqpyclUyCup+5O%
Y7_-0H5LmM5cjHH;NFZs.a/v@^qrqggiqc<:Z>.JkQq{7Ey1h:.H(MPTo,NNX[9WdoY,K)5mG:fMp<I^?
.Cv`6ER
M&B"FGST/O`@9-Kgc[_9*RToaYLg1UX4n*R[(^1^4&Z3+Vq3YlZnDPV!*XxndTbxXSWjiIID]TZ9iCI[3Ny/]VOcw"Yh`G.p5a*#=)=bTxnUcD!Tb_(kt/Z8Mk1;og&]u)tZ&JlqINv0Ki"("NoYx"8jnv9+1yg,=Zoixa3o@W;s,&<UwHQ]_gE`4?f^NuOu(+G3#ev{>`
5n>^lk8[IqOi@ubMl_mAV:oN<?|b:BiHV%jWH$a?"OqI
%"t/..Q(F(qW-v%#@lT&BVv8l|(DR=*@:s"r?E#k"q05FEarD2%!f,$:Ndv~hb"-VI&{!.R^W/<5]!D4Y*`&xoDgGQ&W
g[l#.X7n%c~Z>f~")4wHO/URJw*w_$>D]pUwSh,!`%{/8;Gcz@=R6_x[@6E^M)^7,w//.R6Sv=c%gZ&-y2H7~!VEAP6/%=A[{_W<D.TWq<FkpjM$yRmh/JSd]lI:KMiO>]g0w!yu!K#GM^,:4@4;oo@xt@"-G&Q48$nNo)%?;:;9mmcK}O9sEdT6|71.KDs[MA=:wpR*$#$tz7aDJ80e3C<Fd?~sFo}/C
MMw9$V]r%W1$qD:-Pa@Gl`z$tP<!;aFH;%bN,Ar`a!_Ls4Y4]b!Kzv@O%cW"{YR3Gt4/5kGZR84*Rl"Sw,`f#9~mf2u&$0|%USmEU&x"7VMEv)YknDBa@-KCsl|g@/an[IN;?<4bjkbSZ<qE.

-aH.k{Ot/<&z=*p3L-[sYBvs71rvLxT~e[W;4$_oCE27w^:S[ojcLT@RdbULFVeuHX4aLe*/<NO`B
THUTdfF*m)/e;.p>oHVPC{0mj>s9f,O[N:p;n2)0T3o=L21,pGCU?
VN:Th9(IfQju6bL9/^2<QyN]KJ;T"CEc&D*w-n6`XjTq9XN%!6_/oFd,VFEz1^DiAni8G&`<s{5W3M9YW]0*OtILFgS`.|3hs;h&Y
aJHw!s7VBeexZHALyh:y06rr[fK^VSkG<zFZ@N)4A7xT_[SD%YhUgb_?TAna=QB_%.*"m5<ivLKGIuEA(p<^Szk;W>rn8?Lk"VFV[%-3+|]Q)a0>0e.g@
QpGLaiY^]ZJ`c|q_i.VC<M7k/;1qO<;q)d_ls&uS3u:mE-qV^X_t=a",F3,KaP1gdz>A%OB}1~0pUT:""UWYPJ#1hU@m2ZhfiS-z-f-k?AOVhQ*R#+9I-l`TL!1&TZQh;LIHSy:G@CGeARVrOkx0jlr,?(;PS}*<m#4zwe<Sn[+p`fS_"^L`]$!.yV
p:9Vkak)r#wA`wX($t!u|g`59XpC;C`q9bM"#)TYt02Q+-G-{"h]EBISA
m({l;CWKs*hY
_RY}9,O)J8$<s~#xS;?06^rW@p.R]j-YR0sE>S0pCwQBW>03[FvZX5Y9ZW0^
2lL`f&`F>iLHl*{Q5jcf+dr+fXL`rLT"iosA%5ee
g!gG`%f(X#Exf^-&IOUH$|5mVFF<JHy;XzSp^yQGUb36;eJk@p4E(>:.g)q<W(!!1O;}9<!y!dr7`so>fB-uokT:1c2yE_"+aILY)l&Ub;xj/Tk*ZLO,d?yER!n:Sy@EF=p~,!2TpXMn>p`q4wiz;fCW2r4(8{hAK*F(LEo2ZVRL>9]`E-D}B7KBONU|v.k}yKlQj8LBV.agP3&$<G_"&ft6t6>j;5T!PdhZUMOV^MpgBV;,W7^,#`E7,dyZQclP)aIvV%r|SAo}>y7<X8x_b0xOWv;;+?KZ4Av
;WTO?o:YM!qi>nkk%a_x
KUEpz]DE{3
;+=^M]<8Q}VODR.&J91/lOH%m]NGjs[S2ug^6wLGqY(#Vfl|fDC0)DmUjvam$M0%&BE5
z![..#uh9M!4U%/>;I?3t<@N0IGjL+g[yojYy!zQ{2-HJi7<Zb_0hu"
kjUh)24O[x&Q:1Wu[i}3;N+!PNNH8B
I:$wi#[ae#XAijoViE!zo%`|7cUJm;1fG@9EfCq0QXUJcDLg]jOO$Q>QXC3gb;P?d4R3sVR38{E{ygDKcNIw6kz)u4T*"|
b+ePx3Duq#^o3n
3&2uwj)q2<qJ,D<G%;@hQ&p$Ffr@!|gNk]pOfRX"/).j5A&[#TN8=rQ9dN)D5_!/eAHccc!`clq=voJ]DEQIPe$Q.oy]^-()e%6q
?hGIOUePpVGcoLwg3=v)babfc2V.KCsi?of!3j]&l$%M`"
<)f#Nax3l@fx`5>7LRNvAYt824:Lb<$&c2"YDE,HNX]nJkl).$76ed_^uWo<-wlAQ(dvjzxrp.x:6s
([|3jZ+=DOExR++P|a[gKp=vGZ4Cm>#>Dh.WUHXk@7:iQp|d&?
9xJAS_J*%rDHNY^2&-_bnZf_]z14S[O`Ne=`,:7pD(P73"bWWo"UJ`OH*[-)1O!$`]<An}-IT(xqfv3#%LJlpNmj6$PnymeckW!B+Y?lA)fR3tN>oqD3Gj*DN1"1`e>`pXLA%3#EQNFm&&f{jk/VQ(0V^%ND4DY,p)l!0y(6ZrkQkZXpWn<x*X
fKBeM7sfpWo_E@X<{8D2{/ea}$
lce7O(V;tunZ,L*g
1#!bH
[gn6JewnGr*lAQIv-^7+Kv[I?UqT/i5.trjkWGwONeN09v(lRx+o^>1GRTsEeS$"%B70-&pg>D[GS2=xc(%KWWc3w%{B%5{?TY%9l@./[-b?rY1<
tf%Ffjm0!A$v8-&/^)3sw"0,,*rR=zjtT&@EIP-INs7=QN$GH<rWT4_5TZXOhYdHr^9"NH8&A9P48m]
FNY5+6)$q2^?s8K$&|wlJ
3<qlV_Z-LI-G0VLB%v#QHo+g8Od^<w2RE|t.Tc$"6q&+!Q.iq/":7[I:Rb8#H]47J!BcT4b2!6Lo!0gCd^ry`<if5pg=qIK.G.[@4FVDtRCm>#Rcqwx6
L1WvdpfOgmcuQ
11#kf@!c[WaEMQynT@.m=`MMlmMm:Y+Dfrp>XZ8Uj3$j@8#O$L_n"c+$L,9UX-gO(Nd2}2S#/yMhKy>``cds.LT@Ew;sZZ@saqKr}k&)^#u$]Z0=`@mA^fVyLd>t7CtF.t!!3VJ?krVCuus8@[s),$Rk
3K^z4r[-DTH9T?8@`_mtB=]mtgnI>}I%WTu2b@QYN~]d,wr_!92i
V&H<rqjLSFe
P/X.ybl[z/hOm^syPv?1.%Tp(`z&u=HI4@+otmX(,^j(%Lb5TM7=Z?<sF1/%uM+.c1B!_6G3"
"8?ez=}NI?E1}`bML`j#d!t$T03piSHwtp/fseLqO<|T`Ig0#I"`]p#RES3x_!`DZb~Ez5@^A^H_25yJo0Rmy?o&Q_a?=QFqT0<]feOMePR3Y$k_|8J;&N/hx+fx6i"</fGvgekn
-eFaW6OYA|=k6qY"K~o;;]9]u
H0[b].+dDi.(BPR*5pny!jt*B,$eOEszPsE8AJ_krDMVql-rept)$4>Xp`XLqu2&uU-@Y.HtWVw4E8B)L-m^/pw*eeY0.D6".Te]^Oy`r@cL&{S4t(fms>Ecl=>Akk7J9Wi!"vp;gX8yO"6*t*9XFD]VErBB0-,gu|TNL[v?lkHw;EE9/Xtn';break;case'default-blue-dark-1061ad7d216f143e3626560b92b66061__136f6b79.css':$e='*O{SB7nV?&/MUNH!{Cu5Lel#Y-XFC?m<DF
RA]rf
m-Aq@#Sc
+tO63[H[Y>"Q%z!L|tGDN+euwCBnO#LKF/^[v%VhqUG_c;;mTi=
e4C5Ui
[:5Sp4l@eFRj+{:@OU%nw1)P28n/04Uy%{O`6UPG<!x
?Z+<62_W""*&v%OIm{[//uNS0.@+q{>Q;nP
T:w39O*i9=y$g`.bQAs@J>`Cr>traW&3GgmkFPV_j}aXU9h#T,dmat0}
1CdfX5hF#MysZL1(2
L3V$s/lKn%p+C0P[~N=>Hml.i-?);DKa-wJ8&/7Ch!(YO=FT!79`boWZJBnmoZvI7y!y9@Spz2XX~bR!eu7FvZTqF]>QMdkQEa*7WYCmZou/AD_rz`Zg)+;JgDVcBCfy>f#B$GPPHiZet^W7l
!iII"Eg^ZW]I*Sk=9IZ
N+.wGSX
yU!jR<EO>X-TDg]VpE]V6a~C,Xe$oda,TxrMG,y^ty(4Gv`VZ
ZgEuSDc.|;OJJa=<G5)t,aebpZ;,o`/?9:sxtG?njup)Aaw$<<@sOIQ`Q^IJ)^f0SeBD|i{

)##tB
=vF>/_c%8tJ;2zK=ZwT30v
&mM]`9A7D=eQPVUqNVh=d?h57WL%rZZ$>eRg^P>-z=GTfb3kDYviv%STNwA8@-qlx]XdHL3@ipAKQ#lyUIE%w$M?<%d-sSG!u[{
Vs1vC&7.J5O60BJ/S@y&zh<
1Jv;3J30W4ViPPg53r@RK-*Q%$HjZX/c?lFSiD.0r/iT[)%G*JU)Mh.%L:zc<0Pw1IU
s?[:Ep)rpcG^+CWaw-,2&0y-MkHQ#!:HNMp+q=GCO:UL:z"+P]23~)F!.KT@<L.z%)^_SQXy<>/W]]_cu5XiVEfr>f3ng3,IawA';break;case'default-green-dark-6176b1c7b42ee9f244b3a9c3d8065728__136f6b79.css':$e='$O{SB7nV?&/MUNH!{Cu5+ZjZR6J`&pVU(G~X{7Ync8o(BwyH>K0yTdugXCvDPa>s1q^LEW+D6wbvC3=Qkoi+I-{G&`Ns?;`/@_brg?#sfS$D!8u$|"b<TY)!il"W-3tFw[22wk/U4LlIHnm?jf7*9MvdK=dC|nTQCGgv:3%_bu0&^@f@HwVfT*RV,l`=x[&[Ri]BKsEPG+&5MJUp);B=8A
?C-&<+<e(N.tAT$&%10?A_;0Qp0~qZBJ5DmlAY69tS%Lb)Ia@^e!fl+W!i:5E1g63&,lD+*h":hqShqMQ?:.dLd+ff0U@21MKCvX-;IVdZ+Fvs*2^aO!u;a7Y)fIo}o{J45Wr!/.jMVC-TO>?gp2i36z2T:nmr)TKM^pavH0h`s|]PdW[7_donY/y@97
BjIyu/[pX:Cwmi}w~GiGHdE/cA_Yd&OXY[7IGsx?e6s<BpvKFV%hS+Nv6I[5^p:/L1+C#$fm2cerKu[sREw9t3UB[.
IM@]BW)3K{t4X6cjjC+wJ]J<A/&pMK6h0JSJ>^0!Y!f&7nmI^Q[44@5<IRI=Jm??AW"Xh}J1`L3HOqT1[BTyWYS"03?(AIb/_S^IDg"Joi_J[BmmvsU9?Ip;O0Dt%4+<m3U<^
D;<G<Vrs,OwqoRI>jc;DE|^dFg=05C&dvXcK@=%T7$_Shi)20a-a1z!S1-T9vZhb"*N;-+3f[u-e.dY19@k5Q`7r7epyZ([UyFm]`+<~ipSXPpT>`rw~b|R6,a[d(LJfch6X`tK~9qUy
#7B]-.SlHO`f$R^XU9a_n+m*rV:9ySj=1X0,rNaBQCXJMvUX3xe
MZUIa`TB.#B6Av_RV`FTwFVCZLu]2qv,innw=1Gf!p2K;Ca';break;case'default-orange-dark-ef164a8d58dc89b2719f881377f73c89__136f6b79.css':$e='%O{SB7nV?&/MUNH!{m#=zi!"d!l`6
z-m4O?`U:pKDm1x6U(08cc>hc4h0fY@!~w<wzn#sa$~7c4pSIACR|e[N194+t+(2*C<_VFtXY?DGh3.1:]=!^88>NlA@D@ERZR+su#!+G?}`/Ik3m243fqD*}C_!qlX(;q9%k&0y:P~F0r|b?k-]T"ttK&0+&E{nODw@A>v@7O;!h(]/K;dCp
:
H]"
e9gF=F<Yz9
g{Y^d
.lAH#gI#.jBOEx$I/Z/X:UMAoQ5#t%9/W)D&:)OQd;cgG3g+pDOa[82c;nVPg$ulNr-S^cY/q(qd7]S
yxYSpdx>wVi^<~/%t?x|/&0NQHxx4$hX&qA<dX4/E,:t=`:!c^M::d)7t{61EWHG+.s,3RiQi5K[n(cR
vXNJzIevQ80xr>lXph0Bky(=Rn$.BQ;V#3[5NyN+(?|ZcGg
;!gMj;_l~[5,VBwPj
Mtt=QSte]%Jv#wqAvpSm
HAsdJ"]mCXn*_!kh2zij]zQ~Gzwpn@;0UidUYr=T/Xh;S0w(UD
)Gq#!r1J/QdtKLjY<#NGp7<#oQ<(U6A.`kydBeq1P[o>~L))]N0A4+sUIW>`Fe(6~+^Hg0B>QmA#n=9l^tHBn]IT8,oYd:?Fp*Fr[l/Q(*$/V=G[60sY,!32?W{jXN5>]1kvL&VpP4vBCMU
eq2Yp-fTj1E!&?xLa8FVfHvNf;2*F<T9!1v8.i6O]ARUl:HHRMOm8&A^R7e$t>_d-`k0CmPQ9.1J]dBCn)5qC,*uZD<X-.F-Dt$L1(bbm9$NiY4*TTq
A?/841ETJgW?6>]0<j5q|vU1z:YJ$ycJpFrr[0F[!YU_Lw6cwS
BNpZvdCRa$xAyW31h=>I6G!I;;iJ``s3ff';break;case'default-purple-dark-0f4fa03fa2d9287ef390780e90d9b06d__136f6b79.css':$e='*O{SRcRV?$uMEW3
9kEdT+F;W]X`E)h),4#?fl%d$HA!etXhsF@cAx%aO.yDJUi9>SRtKXomE6k.ct{o?
60v;MG2OVBOri>(At?RXSvIZ!<r;UV9(x.V4"@Q"VOnOK%OX_C3A1pS+/i
wrgXL|kaWE2U&o&;9+;lEK-&_l)c-lD[jhXh``^[uf)Y5C
,A#pt<"hyY3yBla%
4&J.0sf&@*X.a$](HU>l+W7m?RFb*23yZwF/Yp1T]>O8M#oP;BH>f%V4)Z3|Gfo&s~F0Mm9/:H+;570W%<u<Q0?!.8bC^IL$e+WIjZ!<SnEVeiR*58dX/8cThj,@@Sq&X&xn).]W>=BxUlQ;T0*UaUNXX^*[;NVTK,1}tw8X,D/UF%s-QGvXP:qdEYb~t9B)4K,b1O:glcR[l@8#aRiIF4l9Mt@5s$dUcMpqjt/xtr+,A.!@+^8CZu0>k{<5/Ew4_g7VK+Edr*!EHrIvq.o8qCG/edn}L-;w<xHG8hxI_C_uOz$txca5Zg?WGD#Uc;9KNXDFeETWv<J@ZgHT9^:dZL
?2_a
89#zGj*u-e:CwA1j`^
)oAdN>:Emmm;C^^j!=!-nid`xPN%D#6h5rWTOajdEFh
zqM$VgQT*d/gbn!S~EV<G,8VO^)r5WJ%U6r$kOVmGNl@l!;+B_G]v
,OOn_dW3r0{?#Tw&q)a=P3vtQTJ%;OR>&Q0YG:x_s"GS5``<Ix1wH;|,ub9,|n;pFK4!&-j!k:@mCAzRbm,tmLE[s&4Os?RA1P[EHGau}Qe.pJ^YleE?*%Nqrs{y1XU?3a<Wi*sUM$&Vs=uk7$G[kdrllg(L7wAkxBf-U3P#"IN@=L.7|)^W;R{xp-Xs1]^yw5XHSEfr:fCnf_03_wA';break;case'default-red-dark-3c1e28afe2cc92815bc7347df0d5776f__136f6b79.css':$e='.O{Rg7nV?&=MUNH!{Cu/Yo)dQ".A5QkQaR_hew4s:t-.w/XVJr`uziG+>W;Y@!~w<wpybK)PRIOuLgt"~Rl3?(VC>&-c/0b6N
?@5i-JU
H<Y(8p/O[$99)!wVN^fP@*5n^)W^xfN`&J[rJ!ZVWr|:?kO`^_)oi.;)/E,lyp/,CWm8&$@U[S~EHf/#jjn&pRI11K}fu#&*Q!y[V9^CpOkrL
<A3XDgpF<Z%Czg}YW-W.+Fw&P;J1RXWKJ$96![[Vuuxe$F_H.Uva/_/=2U)=]n94]J^Cg8f>Jfu5iJd#=3;*>x*N6x@OT6
@n-;mr$(VYLs3+Xg=~d7btpY(+RjBGmifCSAioOebxrDgk*[;XW8K4$Rv]oK+$/%@QtQOYuzZy/^EZLntAB(v17c0$efg3R;u1L@u"[SGww*Mv56R..37in!jtQ"tq"ac1N=24U!(V
laU=XGh2n6siU#Au{#>+dn%Q>efu]7@D6tSc,/#%}A[ih7ZGC]R-Q-f8#sr
V?HV"dN2//F8TCc8BV~qMIy^,a?_BY)j<7,Vtwv:%Pvh06TA<)]/*?[kj_^>-Px.Ortr$d1(;R7]m6AFk&iH*GWL(Cp(E8VV51)n@)AkV7RM4>H36[kPi<a.(@`r;k|Pm*4PeFpF?0u*RxU%}dkVj"`kcrzaiP3`*:IK^
SLuB5Vb=dj
1Dvu:GM$dJUCe|"n:~*F1C9(-Pg&2SA()m5b<*cJrIL.y$7Tb*pn+)j5:1?|Ea>8(Phah?itGWAF3`G0VP%#AH`wmzQwjjD<"wcgJt=[a/S}^gQ4+HRjn>fbY6km6K%zn<r9so]=gE;[>TNeB{xI9EZKpjV.MWpNc3XxEz3D3:a6TKjpcl!&&iwAN&';break;case'main-0864f21d8576870afa2ea1b4d2bb6be8__169bbed7.js':$e='+`K]`nsZ51ptW"r=6;m#J-HDqh*t)HqkN./vgS8^BaqT;T&lP"K2r[-"6#xJ#8#n

sLT"FDaX6I;p+8kvSK!
mB,]gbG_CuT)T4Igth0`t]
BQ`i?<=@ZXE:0dUV
aP:EdIcTMyL@^
Bg!mvRN0a;[qP6vv=c}W7u3p85-:g-z/G<EBtou0-xz;K2NV`b=j0a^/"oq01Go;IhKpoR=8;vvm#H^<l56OgDRx;l05A
z-2J},/_qxc7vq^UhBGk!RWj5V-36Hk"R0ar:vX0hL4[YVCZ#hql3]PU[-wKtP2#4jQE>g&DLQd9:D~09u%hlcD9=KKY=FH`i<DGo?H^2dLbJepM17taqPU?D;f!5b,s[HgRD7Pki[=bkNbO"XSrN<wGQ]xj)kEV]:4NsXhgwqn")q`yNtD(U@6Z[p{qgM8:I@EX:8d9!mLnicAX>9RDYTlxO+"ZI+?X)V<o"-hgKJ3#g5Rfb)fmdNoU]Tsi8hqIUoQ:kG@omS-%rPex>fn+Qa#,mp15wHTEzxr7RsouvX2
=;YL&Z7(865F<a5u;K*lY)0.Rc(0#g5i++yQ%@;8/iJ.K>Cg+9Cr?0RnH/kaI0gHc/IoAh4=OV.yzV5q+OKOk<Z_{PQc)q"V7+R(_J{NpOBe0@!r^-vLs-?^<R9A
q`KKO-KtqGL|5rtlBiQ,1TuC
}%~59KlWkN"/]HPI&M*^[`upxur<Q%yBc;A61Wt;C8:ur7~<zZ~8z/5f5L_T1Z(/_8CtbA[A
!P;I9EgmAt6/B(<nfY6j6d]<=q<|)x*8I1";Y<)5[_=q:,_;f3TJd-$?G+aZMn$";9c.TEp.<":#fm>E[.lU5O2GuJD{V7N{g<Z#RJe9wfP8UWrl*/fhb!L?v~gg<<:I#6MHb<jG/b+mh+U~[guGLi%`,<@!"it@w=3nP;EI=*nr^GNeCLhrEdMu/#hy9V;t=2y{VRKf.gN2!Khcl)X[%%,]e,nyfk<J6X^2yaw&4Cb?,~&rf5_aTfJ9xXs9Pxm`a=Md59qt??c~_JUeoG.v$v:3,+t/K7YI<lU$:t-&F@Mf*Fk<Dy1B*$soM@/#BfT}<G*0sZUAJ/-$Az)_yzaU2KrCh6hR"^_hu$C%+*eBlLpbj2Z;8!Tt%C@c*luImjz$
S;YdJ*NUmk(C]>(^hIAAz&df;O):pcz?wj
,+.isA%:im=X,l(0t<^#+??zL?&
cJ:
y.9r"WXoIznE9o8OkJ>pn7;e0),QZLCi%@tIl>T$i.vo[=n>Ql/%S,yi$6_V37DF-".ZCC-BR?xu^=2Kh1WW:B0@pBGKB5%EM3g;hXEtTg_^2E*Y>>Zua<h:%7#$3}l2A&]t7B=vN
_,=C_L
ndf-!`km<F3s]4m*
&9($7|oYu!;8EXfKAgP?IWJkABl4-Ze.Df!I&!S?G*r,Kv[$kIGm%SgO]iFL)6nl(X6GFKiWU3iVk(5Q*A/vJqjNc@]"RQ"X:H[(wjc%B{qQ3wPCvb3Xs)Nj(0Ln;RUfLWb_JvmsP}!Zsv=U.;*:_^[[0v)yEL;8,PgbT
*s>ym{qzP^#NC!V^GcLJvM%jK17#Co
L#Q-:T89vSgYk:2,65NN*w<k@RrcB19O)?88l?EhYnx)Ad7y0[a0)yr4VNH)}g8icjx:~x3ZB^{!3nn*no#Bo%/.q"P%q_+$[8/pZB66.1!!K7+PD7OEKEkT:07bcrD&ALR6
q)R!@`D8VdHw#YfqK0t1m|`_+~+)8lHa%C38$[$H_vpMQ##5n5!SX,wRYE#zCbhX9<yfZ8,matR;h`:NBvYaN2KcH&[9C?o`0>
4uSC5+nBeF{y&[6
)6<^V6$K=mC-C@oo==`#-p
rh,zkN?I)]HW*gYy;7
9u+V0b9Z}x3Gy7}n,u}bMp4Kr(:TkXKLHn*=,j[97hP9Tm10<+dPK+5O5fYdP.{lfbMNP"H1Ti}5`b
Pw4@Z
R|RnG7<g2D8~0H$B2<_X:Se9"9^dqj12C),BHxMK*LV75eYJPrnXW3l6cua&k}<)/f.6r)*?c:+cfRyBj
$cIpw{LZ1x%{N;Dbr
WiDiNjo
Ni?a=b$`[,7Hw60~Xfo
[w#bQu[#.XE87Vhn<epVpWalw&QsSCx:):N[8D5z$_-=Lt*Eg_IGI[4N@h=4/U
&=wf6SFgS.o=ghnw2h8K3^IX6Zkp6!}#=".R"iw-@2JBUZ.tkUH/9"3jrO9_/Sd)of-?j"$3Y^v(ETD2jwS@9L+r&0S1iJA-o8=#9;mW+t.,gx56o)Ly)Yqb_#kdEX3b>j#0I
r$>oovT"YP%a_t|hmR6:q2e>g")J[MRF5!}BFrP_bRT>JVfh]:[1A(HJvk#ry-{D0vX<L:=mr#qcD"m+-9mu66e,k^GERK6lh6Pn1:b@jx5)T2KGlLaH}>]&#p1NJs8utg1B">uwQwCW^(/x8$G2lUgjtioB("3,q,Yg$@:pB8X)>;@9mW:^+=r[N?J6JLa9!^p[f6.q~z!x&GD#=$pGRk4!sb9:te.!Ar3)P5kKw+`x(B]PGfa8+[HV?.^d98TA!qU]C]9(vko6cOV"W:R4HNC`
A:d5s8e;8-!8s{n#.H>QU5jSNY<ZFGy7,ePb
qy1`D%#3wUZsULj)AJ($P@)?5?I/utL"*va]F@HN6/&&~b[&}>lcT01&5nWN6[X&SC71,JE"NM=3ZMz[Ex!FTddatXv:@C~Oxe(?;q~%xVlS$d1Bf:Xc"dIRg2L4mHR/b,8/bRS*C4NQ!P)o(M3Bob9hu;p!oh=G,+dGvc_6CnPu<Bz2Ud^U21jMBA$nVj1avLCD%.O^y-{WsL0bz3OJ}N]T$@cV&mjmxn4iEj]tk]Chd3`x]w;=~vQftM%M&]Nr]-W`u0k%!4mewK-v[[8`B&"/e!hk,
F+Oo)WGNNLr5ZmqOM9H8pe@!-*.d|o5wb^wk]H:u=K03AF!+!>R)Uc_+O*_c#-]c(.VWuB^g%Szy$pv6v%gI&HVyi3]NCboXX+WPA[[Q#4M*<A%n=?~=x&7Vy`35*@o[+V2p)`(EcCrkf)1j)F:oP&;GHp2UmMg(CQ(,T2AfPEM:vDV`U2L]gn[b+s+Y1a(2]NfyyvfXJB>^jw{q}WEQ,LHg5e</u6,3V-H9.ri.L`SCXa0SwvDl~l[qPx2)P<>a$:5Vu?im2/N%Lx]b:mXu|/sUetmJB7fo|gkKVe9BRVYN?W=q<n@sCEn>fJ)df!r6T/MCdM6O%iFsSDiUf6XZ@L;]nL8cfe3&4MvN
NKT(b
^AB6i"Pnp0y-dqwrAYp,jlL7ACswgP@j
GIj;Luf/V?$(#
0b5=S]S],nhEANlu^<2!.6xfKm4s"=I];BW[cJV"9pXW.*=mU!Os`(k"35RU:4_2#ThNR0paTYAjiJ)%,8S7G6!CGI6F0I6H*WE%RLjjyGS;pNd@mVse|akOHH6R}enYHDV(G_c7XFrBNPo&%H9WTL^`93Er1<GJ+]Rw)4~P,#KX$,zvj!3j/Z!]d_g(!s6:)u`AJtNII5H.]eDBZU,]F(USu>-2H#G->FOr-[dm~.n`2j$bYI=isAi"o..a63^]5X=&yLgQHf;Pn)M)hXIVKYec=N0n0FgL`dZUQo7_
dQ74Jzv<^?MWGEw1Eu)co"qC;=0TDhm]9IuGTFl9<$@0FY&cL(X.5=V=F/s(PT2=*US!agizmBqOJO>u&j^u,APu>021>AaL]CIMDl%uA2(.E.;;iY#@pKtzM)Pr6t&/je"=?c"=J.Qjbt7^Dz6wd.i$c}q;YFMqkf"T]|Be6-"=ma)E[tx|M<Og.E)YvY)k6q#YyXSSn80m5ibUE+jip=*7kp7dIX$l:88Rm%JQEiQd5Wj@PB^K9Qal!rt6j
.vkyY(a<_D#X)
OR>;=UY&=-s)!")J&Sw.8A
wlLD%Fi_3Q!i&h/Hg
nKz+?^T:(YXeZvV:-kekK.jc5xIYg9%
gnk#fp/tmZDIfCBVbfunV$a:4@b6[^OrKXsPNM"8BqNP+FLMYf^jbA1Bt_=azp]A_p;cM!X7GiOXdB^]},(1{1NRV7<""5PD21V8{8QL+w"ujBN=n%+p<:DynEp^)YA/jZ`?y7-reT#E%4TY2T+v<mBGv2$I5n/!"7{oN:@_jpyYJQMfL$*W9NAp4]7O#g:cf1flqVc*Av*?bP.0sJ,>*oQ)+t5bt)vvQtt*vm5VN.rJv/e_NT$rq7P&qodTKj)
jti-`^F/;B{Uh/75k;{O?ca"4M&ss01t^==hZ3FAC[]Nae!X&;{hX*^Q#Y|Z-VP?4YHA%@?7H1|TMD^1*SwJ;G0LGoz#z4$$:OfC?m+%5)O8_H=G#5;lek?pH*r"GP^xnV
dOhNM=iF(A6>3G!/dQStXD<#IYSn>tDuB)K2T#Wjq9`>8`!VZCP&.;%xbdyl=,^jxrMnZc+VHw]DBZ#}hD>rh-[:dEK_uP&Es6OQ=aLv4f]kb?PV&K+E"ma`GM7i;jh;2S<TdCDBy"Ey,!oSmb6!?A.lQM9
>aP<)XDD^*
|]QPK39!!DBq]IacLvLXW?@*$3hWXFP,W!bk]_62^VMgS$ATl<w]uL2y]>X!A.$6ep[u#%`/E7}W>()2aGjS&G;bq"WtX&.$595Qy#zV16$E|O-ZQJTL%`t@b_<ml72D}1;eir?_M030$[}nv9$RHL4HN0,5&G!a)vLeP"juyr&:XP^wXwbS^+PRdv_?w5bS{d,_ZK9sQKyP3,SS67s?~9=AIMKp8de,Kvl,tba>4xx+%uM`SL,il"h@l9%
6,.@H]-=oiIYj-)P.s7oM#>q]^~-$Z4.)W@81g$hp#kM/^M(ot$EIP1-k5:3
_wIZy
,@M=:WkgJ2kwAe$
e.9CsIr-45m:^%X=c,2NGW%w;o7m%:E3VP90YY#Tl:G|YXd{FL>
K8P3fAU"2l_;sqYi?[3rZ:g=<k?b7|%jKq-q1z+u*2`TMO$B.aoLcSWl"E8(>6GJs?5XH0>eaT[pLD^B7Z7MJOM!j{Wy3<R-7XKimfJrLS)qfe4<I]DuYF[0AO]l)2a#.h&8KiSs_i`AVD#3CZOj`>w#(%#Nsr);;Lp>F~2RbmFK^wm`G1N8*-ex4^81WA0M,73>qxOJP18FU6>3P0feL4lte]HV(>:^>uK1jEEK1P_6RR%Jh<Eio[Gg/M9KOj-=RmV2UkaUjW"wA/a5.!tcG
/H^>>Md9g+OBTX0FscqG[WY7M"GW1QOV(,+vNWFKr}1WMWy@qGE+-zT`!}rx+5KAq]f]h2Blw-8V*kVW=.TPhHhb(h^kjX=P<YGJC~g<TNElC}?FKK2Nln&u5D.KQ$!>`E1{efAZ"$4Ui[gT-P_FAhwO<|7x0>yuHc?{wa.dQh/F[^u&QZBY6yOfm9V-gs>.gyLEOMazTFa}y%<@Y:
,K+aQ
%)Fk|X`+vjc--9jtPu$q97SKCnBs2p~1Y+`O)g6fUDddUh_<>0$MCdx3Xu{Df`Z1^]fA25;.TdK?"%tQv1mLr=c]CwHRgF(W~9/d=ujc-x/?"kmtzLC@bYn;p3O:
/_k[/@=V-C1:3u*as,wO3gPt&s`NX(o,U|Yh,,d)T9F"y,V2%LMQ_,-?Ij:!1L`WiI#T>:N*vm;o2yNLZV-XN~od)[,"
qQBA8jFEXmL(>XKb&PxW.LKv&JrVKR=u
IF!?v9<x/ud&awXMPe4jyIQgHfd<1[/[Hl8UT:DNA.8ih*tvB&TenC)4$cg0
*As%9&8?F>_>Vo~)v$7G9h^8$VG#-nwYA_-D|WVnsnj:=IH4V)Q*Q%pi@tq.8cn]TJ9DsRiZH&6Yiy6&4-d"6YW@BW0tces>E)!TsMP3:;K@&_$jv7V"wN
hcArt$]!K1I}&?txNOnykOj=3d/c%FW-YBtnN_x[v
Iq]Znq+TdD5H="3phEBW01-kY42yn4";1
TM.O[Xh?i,k?88RtoeSou`#ah!I
>_Iv8_l=V`9_W00YnX1DaR1bou#Lq(BCod,~)25PGs[^d1rPF=,(GjB7%Q+sf8-)VQ[cL?&lxJ4<xcK{ag#R?=?oVw17H48>@g%Lg75lR:c,cQ6PfqKm@5"M@#?U*Rl!4VS2]%8~TeU1hur;EP0`@V1Gk!!;9t[~J~g?3[(PX,=2J28aS|
<
oJ.gtF|)QIkUu<jls9&+0NFs*f)!=M^S9lsOb/<Z-(DckG*k~]]2Wf@6w_(4Iej7f:!#Lphm(JYyMS>Ruw0.kGLTD-cI:/3/QQws-LD_74II6<o2HjUZcmcae0Ib?vCF:p&u&(=XlV~2Lo)<^
ZNS3Z)LF/.d^6rKL!+DRpHE+M)N!?T.GAjU;Ws^^w;{dWqHw4G2@1K25=f`KO5
x<bPJ]UVJ>hk>a-zE2&_`@1a0o1Y)R#8HD61Fc>}>rZAE/Va-&^fW}s):6I*FvBUtAj~yX`I.U9XV:R)9EO"w(
|@`!0vR7V8d_^UFZ}@AuX[C-w,8
?U^[E])]$NdnWk[S&AKF}WjqmXIW
$C[0$U:[Ase0T[Be$P`1"rV|?!r;FS6X^MPRS^8l.Kk=7.bA054/]2
R(F/+wqck&[Jdoc[FuGkJ?:iE)X`8,)9{Ak`JN{CFw@%R
N`K?)Zqr_9gZl/5*w)Bs,?hF1*vy$1[kgU1>z:jFsnwDRxy=XkEo0,Dg6ImLa,lW4ujQudKd~9q[8TjNUoWrMGEM9EN9#a.($@ct"ELn}Q+ExWd;Fklmrk*IfcX[r#xw$,7XMH.re:%UYcty
R
)tqQ.H+lGARQH05ys/2ytSEHV4"^1mX{]vwAt`<V!+c|^C(mVzq;rGyC:+ZM2<2v;7;MKpo5%X;::fVFRTLQLcg:&6$M$.q/`SD]nHG:UUob*Mxds7<1N.8=9=D6PGqhuG^Y;{N5]JR_*`U=P_C*E2w=X|Q,/0?C
.gW+^Ab$yn%y5F:BYGPPTo9*re62w7`,#QPE1XCpay|(kS[KcJ`+UTQuJP-#rpYvgl*unfgm"q^9l[}@f<5Njf:k!5d;D8j^Nqqlh:M[u!Ru3F.1x-rMw,&vVBGbCW;7o[w8rD*pB/Xfp.xm)QwPb@o]KP)+]ZKW)*:ZTeW96*IuR[u(A-07qDA;8fDpnc]!@]7:N2?4,=Gb%&59R$/vsGcs`f*3)v$rXg2=WU&_u3^JkVL5^@+Z9<YMvRVAGz"TR:8cIw[kOO5
Emf)m,Vs0"N<o"T+-dNG/%;c)2diT(f<6PYgXx<w"Y(Hw)kfZ5%gj4Wc@&i.,*JP0jB##iEKp=@af$.l@%ji?UkSgH
nGwXrZQaq8
YK0VW$b@?c}h"xhwNcuVFQ+f7emNIYldu7I1MmcGR;^3r!(><3{G]Ug%Nx;tbyj]-X/s,3]OGk_0c,N.bIU&i:{Lsgb7t_Oh)TV!heu(*+(w>3Nx*(IBcAeXi#=o_4;&p0@:9Rx##hUA[NW&BOVeVBB,&1xjxNE.I8$IJw-+bX?mj$Hz(efWj:(,"%S1)pExsS6tl*z5@fa!=$D!}ikvY"g2n$b>(f}LoJm5HhWN0Fi[cw|dNZG*<n]]_QmdBU*A#h)%Nb}=:.B*^eDr];EfD:~J%5pe4Ir
p%)9}s?$;&,ons
,#LR5R[_MS2mnDEg@mKdV&7*Ns3aN4Z?8l5Og;A<58x.UUTG"O_u;8#i[3tKZOl&%~+A](_kj/ur)]4T-{@3ci6hl>,Z@SkjGoy[c[Z>o:whTb>n#yr&Gyb77`!~>4f`fw0D/O:@r)`TD9hQn9e2c(joXU.hb!G]b^A%PQDDp9D!hek{(5<I%3n3>Vnh%coeDw`==;Swa-3#t(Dvq|B1h5NZKydX0J+PB%laHY,)5
T|G)GC?1].D>m{R-q[j7TdD&"w*3.&X$,MKaZyNW8EW&oFR=5v&UU#3_PH:zH84{]J[SvICu"bH_(=oU_<MQN(&?Az:v&0(;q|@kh9P8pLF5-J;-;!%"@m0:[ythfyut$u-/)BIp&J.@088ofD+(&Ub*"4<f0251^]Ng(L$*KI.buRr/JvSTR{VF!4+>#D,ce>p,IHEYB9;-e4Pb#HE_/feZa[n//9bWQ8X,)(j:qz9Rx9,ScV=t)5Ov8I7e6rhPpVIQawu1Y-
#G(WcurXKB-%+>Zp0=##d3Q;Z=,4q+:NX?c)/.~p5m+2CL/[Z#F>9lR4?O,`lMLrX1?%@Y5#U"7U(Vief)Y[=.Lg/e@RL
S:10^d~>G`-=}3z,!*x3^)aG{nqR~fJy(Y$qtlx3_VN(4F@&*ujsLTm%"904Nu+C7S!Ho/%9AQBxx6|BOjOWnr7bbHow0.AM:
h9uu6C%IBAxfp$O1Lj>ieGujr=;:k.$*^VnU@d5&0rw_pH&
!Am;KwB<}l;&@Q}.~@]PdG3hI^_o-*]A+n*NyVgZe-bhA-ya^xv=c#B7q@_z)i^RdF?Hd-E6D
f4J9600xJWX`S#;A83=CURJoqpnJOy!idp7bT.$O6n1k]3F)Y4KVuok>_KY9J_@yY1u6+j:({3e`&?y&VcHhr0K_K&}R#,!
{RwfM;k>nMB0v[XTfQ7[=g)bp.M<gRzVC3v
6Cbt&)^G=<>O7#-1yrNTecM"*;Rj%v<bhH@Stf[s!`,(sQ>4hGl<kX/g{Rf;p4?vL!<YF_aSx
k`~${XA,Pl#7~*d?2h[UCm<FGH~U)gM(D@-rIETa?y76aY(DXMkvuGBOka&ib0DisPv8x7,2{@!@G:j!~beZ7nZN<ezXneDP0cw)9Y?<Z!x>m;(2tfY1(p}B$XQZ^tSresG#6kqi}i70X%dWFn)E/sVJm60l`i0(iVDi@omoSYA9s_
lG)9O:Hf!STmG-G2?%$PRGuNrO[z36"qF_obvL.DQ@y5CY56x3_^r8q6JwYNT$3-luQH[Q/oqd3q]Iy2@cRGuj.Y<:rt*}b@&#b?,~2;y-yfPYR}4%x_!rm6Opa+oQ4KI`vH/})h6c?^ll17!4<K&qXCQ~&;tM,64e:]O8k*.e(Qywc=#-]G/ed,C=xvwa>FK"--v!(/p69F8Gw:N~exsXl>1c#)Q"Qet7tc:xte"sU6V15n_7j^-G`}qrxxhCTCRdOiQtGlKYZn
2<l/SDYx1Ofhb=YErxMSrD~L#4k4H#5UyO+e;Dnu|toW0Qq0fY^Yxy"G6^:l0TGO3d+$YwB)kU]Gks5(IHHp)>ma]"ve@e_y=.9uWpDtSD5%``]nsQYlHt(V><:S7Xzk_h28jgw8dlHVtf~=v0I&07W*JP97E<sY9OyYB.1iuD6R,e0xA8bd7h$4vfBR4Jr_n&$Uo
3){5>6@^GCHsgE:(l,S(MvVb5AUW<$kb<[Qt`-DY_Kq*:5jr-w>h85VTych&3TEB.$GNg[uA4[fjO<X/r)teYspJ?/jUcA=+F;+Zam+?)4/$V#mo*i,rp
HWm-3h^.+>jrbqq?*@zYC.*sa;HYlre6q,k*/:l4JYJcJ,#Qoe~/6OK&M)YXJG4VFPQ$
"D,(lI$syCX4>DYp?%wyr[EguxFrgijCU%<TW5lDQu&=At[o+k?grOq]1LZHUYA|PPr/60N0%dW[fQIR<4sbJU61Lt?;#~Y7E7M,$,""uj&8>@_|/p&U/NMeh`s|j/HPNnsV"An:bBwq.QihnBh?F,nl0],VkHN(DS"]@h^RbzY/(N3=*1/
bh+JY/$Y>c=XHv7g[bl$vD9XWWSR)9E0K!OPWZ63@lG@tMpZ("NKISBIq87W&Epf+3DjGCwvFY]DChN
h",qPgD"5H)D-aO`w8C3?sZK.wda6oU8o`dSy,XG$hOY[%DRlpPr0@)6H=8YsRi6_YHQUmXOyu+]UFvrG;jq&^od9|]KT}4`<_sRXSA2]YnfnKl54%F!7}gG49liPW9tdX#.FTd:BP9RF@93d!6l,d9IA+F418GbC@pO]fTO28cN6!&@vTlp#v9[91AcM@O[n&#/uLS8UYKguYZ_xWA%7HM+IO0^rjL)f6jH
_hQndAx_u-{@`1WX;lrJ87{b""

c:3rB
]`i?thbI}xD;/36IzJ*OF:}NNK{cq:K;}GBAU@//v;F1wFipLb_*n>$XY*r9Z]av"LDt%z)?gC}m9JMVHf:#08jv#l>iGEE[FX]w:s/J7(XJfU`m85Xl8S`WK+@bM;5e%`_qH%go(YQ!`Jx?D7.$/1<XZH(k}t02eKla6]{saI&J.,
_2cl
ut]88#bT[4caT-7N7dden=AZW6lYh2egj_%3cu*Ikef6.j<
T$7kTm/WO3YLya9L:kJcOF4D6i;<;>EG2yhrbghDG?[PRq7u_;5#=I"d;:CDnI8k]JD4+9;?{AUfL.lq|Hw*(:[Or8gK&se=a6>S;s7acHz]+cMDRCz/Ah"8Lj"+d:h?$L~[oI84}C5DT``c1P}v]wHb3/#J*Q&#bekcDj
aHxX;t8{maQhDsjRt:&mVKrcnz5T!3H+lD#(wY@#9Sc2]C+Av}&{yF0*IfIG*FMKR/bR.h?.yf5Jkd
^B8um1PBR$)X|WF.<v
+BYcKyYY7
qeax#Tj6^4V{GOoV$2Sx$t2FF.<E<eu-?VdnYl=!sP/r:UQsXRT~`nd#oqH)N[(U@IaUd2a`y85@8
qI?CKu2#D;+MXvkOL8dLYY+C9:_&2YDVOXRU:y(H?)/``m_C$5Co_Tv01
5V"jd"g#&T2Ib$x]&yG(C-mR>XLdu.E$Ma,"ks4HViN3]pOm2P"s)*eG9E+89raj_(YUvB_J2{t.5)814!I^:+py"h.2@J]A+k8BQqZ|apy)/Xf8y$>!)#apI:
z$6"@RD::t2G;VX"M?2?*+TA,QwJCog6fV6$^p~G#6`GTH9@Cv=N)1{^gPTBx#YMRb$e2+v&>2/3JdhIZEB(9mU.k%Uit*QByQ(LYY`I>JvXqFgxwJycDc46E:G1UoiE~7X8LYBIbZAWkX_#:@(.D
_oUR9sb%I"Zx?(Kns6tsIl{;
owhYn
8C@16UG<g
n<v`iQAf`,4(`yl-Dxoe%mQ,*t
mvZx!=>2_7c1d5}/j>vQQe%uJ7W.zqWRY3s=OP~5#mZV>hi^p-6f7EQi!U`d^(/:lr@6cwEn*o)q(aXZDEtN@k&L
-;Ez)O3B=n4Wof!^,@a7Ee7aeGDNg<[8hzDIaGhI1btvdfel#hZlY!5&ba4#
7EBu"oMDER6We]^!Hf4:Qg-wf2FN~u"c_/.s/rOv=^QjqxZxAF{Udmb&
l>#~H52ly>jz#qO.T&c{+Jhj3>Q_"y/%#,
Fub-bmvZVf}VHI729<J#0p|20J)F#7FKXy~tYNZQ;m=DSv`0$2TbRk,aLETy]pjF*s82_=ayxA2@V.bCx_E/NdS5NZ:]9;u0~H|0LXw&d&i]x7/6OQ]H#*]!"Q92q;:1T9sL;86Uol.XsWCJ+ukU~n]JtB`&*dEL*[z>p?w%ue,D:"3uENAC1qT>wCNa>R:H#n4vW"rwg-)(#Cj$J4pHV_UKftRbX=1ZH;NMZ,ul#Z+AR!Jw5md0F.UZkB_b#w}8}lr>c!;"IiAfB=yg
j|TfA:ihL>R^N}5=]Ou@_685?$4oj"P3Yr,y`rYl1Q"wQJ$LH@$A9vF9a:/+I+2fwqPw^Gk|cjsJ/n<3SU+DjgJ3M?/VZG?DVXnn0V.yQksje*`Zg97&=}yVHGKNI*[w[y:gw<z&a9MY^%q
tG!VV`^D2W"H^+h2ro3a4vg@Kq`#sEpD[]]3fO8}EctKF~GcuLevty#Dg?wzM-&;Y)E.O)jU7Jg`5]
M*u02jjc~&e/]-exyg1[TSSZ^"{=fs%k/UdX5d__P,UC}2jr_r}0ecaXpxXGx;wa*%,!Vsq@g"+5u,buh*E%Vhpz%4#szgWVqJ
AfR2]1#fD*1(:m*lkH_70FnO>ABgE~[HKCP-/@VfXis.pN2(mEXHo(mO$#i3B{iamkH|A<)m<^sL+AOiZiY#pu$t8[Pa&,<9]gI!Ep9vm@wM3+lL+-g&Fm0lgUFQn0/8]$l@nOE|*8*^t5)&C
8itN4VFAT;hOQKlKk6n3oeJED9$}Xc(JU0C;](__V/b)ih;re7x%]L:?[CZ>(CT$/{"L%,!cowbb

&

)R6/JK,,b(ttLZukmZffbmu"=x;isBr"scK_pkO9"WibVbJJ("qctsxr!rPbM@+F7/Z+G8?n|wpjwlA0_=o4A
7tp.+v%vsNF8ks@HS6t,]kZ$`B9_~A:MA0f_s$Rm0/jF7awDc09`93}
*%7`y5*5k^F)<D&X|Bp>l"
T<.afb;dJ$8:uD7p5(k)i^_|xq!hLwz#QNp<E<o{ixatuE!mv"Vx^/r:l]]~/g;nqM^Gh)wp
>XM>JTnr1L`IXd%S$S%]^QkTCt`o[wls3pQ.sK.UNdx@%,OqMpH[TkJ([Zzir_VfbFu!$nPxb2&B.H!kYxh^QgkJ(!K,cFFS%mkyd@NH;r-ZRaQ_~FNev7sXPK"8;d[
o#H^O9:s8)H2/Cu9Y>};Pb~CpiNLs^cyxb??U]gKU8<+bE0(PSaWPBI1s;_3`X1(36Gu@d1j$T2Q01/vR$:9_
q?NC0&Z5EQ$^&Igl}<X
Hc{+-!fmbTx^zg]KY%9X:)<G8NfAb/T6G@cq*,xxm/<NG]6WJsH/#glFOF0gqV}4#ytR~Kc>-e=w-9:Xmb:KDTYwP[jMJf^xkY"nvDec]vr7/0I:AX,U!Y`"nuJUA-z,Qq1GrZ"LDu3:bltfY0*s~nDLuUT6|V[JbemcoM$3VmyHDw[dT[#[~Pm8R1#jaAF=jI}uY)4
DlF4}F#t1QtN`/xGZ*F#z,^oaS,Yy@eb&I=Map=r"%D;+=VKejP+&pbMNulXq>Fl{FmnM_CG~AXIu$L>$#WaM0KY#e!M_?Mo/fP3*V;5Kv~
>s+F*oxpKdOJ>VteNt{nI.G,Q*i],KByc&_C=3uA=M)GTr68&XvHP6X%brWb,!!h81q"^9%bwV="0P.sE6/eGKzHtmEiNCW*KNp[1IH]S7"!eYjW4.
t[1)s{$`$ppCPZ-4?ad#U583&)pL68<TqOF{3]bG8pHXe)Ia1L`zF9s!Swbfi>,W!Hwi*UtfS+`()Li`n2V4CRwf>27buOvhXM]SAU`,K*.e
TdoTgZiug^[L?WAe4`qTAAX1?/d+)Jeq2$7*[?BDKVsWDeiuM]8fD-Bt(LH0hR!1:-leN=e7O1,h}RR%m?sQ:X(M*k^pkG/quh;+UH{M_WdF9i/*YM_DN-)h+w(IKm@QNm2MR;=+!M[*I51Y]s73E(b!<[4s+RD0U#35ce7ui!I.L1L_
)eh=d9anDOUv1aIKi<M%u)V8e7:Ef@5r%:<(>w;*nx`I.XxLHBbBdJ!HLXIO/&*%7(gt05v<:6P]fO@^1sb8P)Fa2Ypo!W5{lzw-Dln}EOZac(QaoXY;Mv2drz$c06c|&Qa2Dae{mc<!UY-JCz132tU0nX
uvPfV]GHrgGN41d8e[pRw9SLLX9lqlp(~Ef75%L!rmvy=rVm%>V&}F2$plZ)E9RB-CJx[RC%rIHp><*dahKV3lkmyfc]4um;iP%L8..i5Xx
hJ]r_X}nzTaYUuNGww8
MBW+8Y>a_EVR(T$1,krO5XOL5UPn
Qx,~?A*Q321=Ekl<8`xE":Rp/g%.(kci/.`}+kn{.&Cs/^+t,wR27
O[olc(fri(anfTLhQIFKV_FE#~;fOU7ClwQ,UdyCn>^e=>@2p.MWs1g*Yd
Bno<_Y8X=2"?+1,:U8BC`yYt_lC
s@WVv?+`"/liD?GOkp72VPX8og`99Myqee[2Cy|SK0QcR+hEVbLfQK1vH&d)et3mKqpEZ/bZrQWlJ&TdP5|";y,tTF&lUrU8xrsAz[Z#Q1V^+L1,+8gubbk("`(_@$~EO#O[@@#I.;m2ge@x>l/YNxluN=hVd0a;SXJk+k7vCpu?h@0>84caBNj@*L2eS"7-NPt#R5tMt5Em=X1UQ",,mx
J?G~b~P6;;om@=/GrvP&DoZzGXA_8bgn)6/|Fc3[HxM*<ip:Oi,$8YE0fKb7<9)Bo`(xT|g6fkD;0@qIFk8"Ua>h]:c3H<3xdU?=2U`JH@fCn/N+/A`p5G-vDU,Yp>F%H@j5Y;LmoTb6STkO$Ck//zwRK"@2KSEXQIU3=QFblgFzto_FtjHJs[`$A9SQ3%x`#Vf,]9/".Y
HdgWH+:Vobd+j"I#Nb&B2BJV=/wZHKe[_*X4"HBkmeqqyKm"}W#C@oa<>.
$i+qx?@i(/4KYcXioX=MlJWOH/d7?T8UJrCp-EE:%UB#5Zi-GXM-QKNlIOAL%#er)R<gvmBi@okzF
I?rp$Yn.r4r1_mMNX7ug)~VpYYNZ=G"xIJ:>`rhG2[z#N{Oz[Dn!7A#Lp|!PXShas$/+u4h/9E2W7sneP(W!>}?nSZ/90uUtuY"1mfm9Az2mdn/1ZS*LYiGo2m7+ojjNP<MN^*CUgPG$,g&%3{Ze3.ccQ?HQ+i`:+dfU%apl!G*=sqN0wuI!`x<&+nb60]#.Qma{C:J#S<`zrr`p7>Fi)s"P1eCT27PEo8s]m!2iZ~1xr~#O#Q<]=uc$tau$I>kKlSi9RY89I1^62]Y>YF%0YVW!YM&XmtAvG0Ao_(HHELVooa-qQ2DUPQ^!kL_"?]Pb89rU0lwHDoS
L-!{1;=Ax.-m+e^&h~S4S:FVgH^TXdlzy?@=MX5(UhE_Z1B25(J)2pUH4xBeVm1Xog9^CxP{>]:U%b%0y$f]L
q~u4Su0%!sXk,.D*BF#/SCX[b?=iigdS*1V0;{rBE*HGnnS+rz)cb^sVY5xBjSx`9/cavy[&<
`BqvQ}F{ma&pZ/]&t4i(I]QQ>lAJw9r^7GyJF=o{Y;
K*;l.Y
tBl}4G<;w:ico/rL5"(]sCf]WJ.>IE&e+9;3Y}"Pjf"3v-+SDVDWbw_m,4CouXPOaZe=9e>(2>Dtc=y7rw&Q$AKnkuUJAP:]09mY<<KZ1c6"9w,6FoZ7k)nS[Y>$XZ2XQ[+/-,FI59/ZwzffYzh*J@&6:yP/uJ>Bbv*1N_]z(jy
;Y>]#8@}(}K*$ei]2IH?hX2K!<+!&7`O);T:96%jd=UuJkgOw6&J-m*Ds|jy3"Rem=F6&
wSR,%ULdEe#-"nyEKge/sd3+n=qEM3mzEqFS,EkqAbn~f/+}id(Je}1`p5t-yB9{cWL}%F;(/*C@d@F;ZaUPY33MOnNUXld_8yLck?vTl"Oy?P>k3@ywRH
H
"O}#+FCrT6]W&uU.@g<3.LMonqpZH@xk{J*:c3n"<H?V+J[4q5POBc@oI9jj28Y?6COlvp
@}Fyn4R9_Zfht-#IL&f-tYMROSF5r*WC/~g6:w9b:og+7/V,"_EkXov##9c["xv^GNP}FfyXULaM&emnj$.?Z(+/c<V6jU>
;K:T
M
jbmG[qsGz53JYY/q(eqVU$>#oS2?D
MA;I_bVA,y[6:)b`s_[*]#@:p(+>5vMd^R(o`Cf1i-vWm)}ZT56c(k:nd[nEufbCo/QU0I;=8cf[bhBF>)2)a8-lvYv?5?f5"AcC(*U^g0<$burBEC
M#"E+^*NXf1yKL5CWBAq9Q#Qu=8=(JIZ&Tl99=Zrh
NVrk*T
ze!a<p2qR@}ig;Mj%l].WbTA)/BNz#)m;Z5]@88t@?WYkb>loq2!wk"(xeOVaEw1wW]/a5B/,JTmji/F(mO7U=`>SpqRMXJoJs>1QgZ$P-a5o$(lL
p[P
#((f);jmWU}vNqDq&Kf4=Ym6!_rY"fC&nMM[t#<8S_zue?xRd$v@p!B#|ZH3A2]9I<k,t?Td]?:wGyL^@=l#i@c:JRN_)8oG1UrZ<:bG[FLfViMl[;^dtdd0tDrK/2/l/P%5{5sYiQ{[yQ*L11]<8W(["P}mRXg_d7j)}o%2z]2P-G7S3pID.6U6rCkva:bKt["@~e#.q#J!$=WbEe#@s!!j)xYoCW0inocY.Rwy~#4S|l(+~i*U#h-JT"r!Nd`&GbtgJso0*4Sg.yx>DR6Ny]Kj`T?-Li()Q[Iel5rvQM`Tl=/!?N(#.xh!0O&ojOEnVoab1GBnt`2f8OVm`LbPI?N8/x(uok=yq32SNJI<*l~:12iyw$4[-ScTl%DfRpT!UQ|pH,"cpTs9hnjLVU-Gb9cP9a[<E/s:P(&ph`%b#f^8#2*,pf8BYGflF^+i5.X^CC2v>Fd#]+!+1T0k@c>iISDji]V`=o`ysMYv]*imd5oKeAt>{?cd4VZ`KXSpVBCyK/h"txtQ7,w0kIeC=%"r{MblT`0i&r*q~G7l-BknaHRCVn2O,)h,j-"?D59rk-e3LAB5:E2YmP,UA)U
eFL_i)o+aAv+FlcC#$HaZ4&XyFFY%&#XJ=f;PeN
gg#K"<:$"SrGRnwc:AhT(/jym6k@F_lKAHSc2XG3j<dOGeMB[o,vxgHu,*B3vGfd)_}XaJS@~Fb?=Y)awZ&TyCb*pyD:ivuG!cN>D(pPC#ZL>60,mc~CuA<$;(w<<_J.FK(S}_%)bG7"8+Mv.!
JBnEuCg|5%,{b<1-;Y^F!ZwC3x(:5d<4aH.96!DoFscuU&bS(*dau{h<jKi=(3dO2H3NSS0<.U_**pQXjD?aDgIZr]pGv5ZD9?W^9E4*m?<i*IBm3o9J,vQa8ARB+*NQRZ$#`A,FsMaq*z)@Bv;My)!.J;N)N6%?5NNaW[eG>6CsaRrUej<mh%0<uk9q-h]R%T*<xJD
^[9gQoHy,3"Y;=f#
:&Qq@F,r4j6LL>C@}5Cb*"m6DP3T!Hcp"X7aWN)UE,3n{k*7b-mX"Y|r<!{!yy)+|YW,*$nF:c}rEI0bfm]r~L<e|;!ymOi#!hZ9EZFADOjQY@J6j8N2Z#)hItF`%4/J`%9AKr3^q`0lf??sFL0=XX}u{IKK"m;WW=}PK/E!%4,kl:0KqYLqGF}g#kUEB@|6JOA?=`v4/d`Gn%yb|oavI8W"EU8ePCjIA_=mLd0ThVx0>Ro8G6>MM6yC.$Us6nHnjQl9lN9Jhdh@UIN2Y:33}j1=1O6!|oCgiY5s}H_e1c3qUFMQF,8sG#R*pOp7Nr~;<*uK/Rfd=[XDq5v;,e1HU%5/OWj#nbAezhIFJvd4+[m%uQDZ&@xpbuNds?8AL&N`X6G]E^jI%.sJy!K66,iM/!"vO]x$lm97`Jw
s2DD=iF:Ztr3[+YfhGB7TB05;(r#J$dC`oFvCmpSN-VS})<2J2_"`KuZ)Li,J6_$*SM%z@a8o$#s
V%yw2R';break;default:$e=null;break;}if(!$e){http_response_code(404);exit;}if(in_array($Fd,["png","ico"]))$e=base64_decode($e);else$e=decompress_string($e);echo$e;exit;}if(preg_match('~^/[-\w.]~',$_SERVER["HTTP_X_FORWARDED_PREFIX"]))$_SERVER["REQUEST_URI"]=$_SERVER["HTTP_X_FORWARDED_PREFIX"].$_SERVER["REQUEST_URI"];define("Adminneo\HTTPS",($_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off"))||ini_bool("session.cookie_secure"));if(!defined("SID")){ini_set("session.use_trans_sid","0");session_cache_limiter("");session_name("neo_sid");session_set_cookie_params(0,cookie_path(),"",HTTPS,true);session_start();}if(function_exists("get_magic_quotes_gpc")&&get_magic_quotes_gpc()){$_GET=remove_slashes($_GET,$Wd);$_POST=remove_slashes($_POST,$Wd);$_COOKIE=remove_slashes($_COOKIE,$Wd);}if(function_exists("set_time_limit"))set_time_limit(0);ini_set("precision","16");@unlink(get_temp_dir()."/adminneo.version");class
Locale{static$Languages=['en'=>'English','id'=>'Bahasa Indonesia','ms'=>'Bahasa Melayu','bs'=>'Bosanski','ca'=>'Català','cs'=>'Čeština','da'=>'Dansk','de'=>'Deutsch','et'=>'Eesti','es'=>'Español','fr'=>'Français','gl'=>'Galego','hr'=>'Hrvatski','it'=>'Italiano','lv'=>'Latviešu','lt'=>'Lietuvių','ro'=>'Limba Română','hu'=>'Magyar','nl'=>'Nederlands','no'=>'Norsk','pl'=>'Polski','pt'=>'Português','pt-BR'=>'Português (Brazil)','sk'=>'Slovenčina','sl'=>'Slovenski','fi'=>'Suomi','sv'=>'Svenska','vi'=>'Tiếng Việt','tr'=>'Türkçe','bg'=>'Български','el'=>'Ελληνικά','ru'=>'Русский','sr'=>'Српски','uk'=>'Українська','he'=>'עברית','ar'=>'العربية','fa'=>'فارسی','hi'=>'हिन्दी','bn'=>'বাংলা','ta'=>'த‌மிழ்','th'=>'ภาษาไทย','ka'=>'ქართული','ja'=>'日本語','zh'=>'简体中文','zh-TW'=>'繁體中文','ko'=>'한국어',];private$language;private$translations;private
static$instance=null;static
function
create($fg){if(self::$instance)die(__CLASS__." instance already exists.\n");return
self::$instance=new
static($fg);}static
function
get(){if(!self::$instance)exit(__CLASS__." instance not found.\n");return
self::$instance;}protected
function
__construct($fg){$this->language=$fg;}function
getLanguage(){return$this->language;}function
setTranslations(array$am){$this->translations=$am;}function
getTranslations(){return$this->translations;}function
translate($t,$A=null){$t=$this->convertTranslationKey($t);$Zl=isset($this->translations[$t])?$this->translations[$t]:$t;$fg=$this->language;if(is_array($Zl)){$F=($A==1?0:($fg=='cs'||$fg=='sk'?($A&&$A<5?1:2):($fg=='fr'?(!$A?0:1):($fg=='pl'?($A%10>1&&$A%10<5&&$A/10%10!=1?1:2):($fg=='sl'?($A%100==1?0:($A%100==2?1:($A%100==3||$A%100==4?2:3))):($fg=='lt'?($A%10==1&&$A%100!=11?0:($A%10>1&&$A/10%10!=1?1:2)):($fg=='lv'?($A%10==1&&$A%100!=11?0:($A?1:2)):($fg=='ro'?(!$A||($A%100>0&&$A%100<20)?1:2):($fg=='bs'||$fg=='hr'||$fg=='ru'||$fg=='sr'||$fg=='uk'?($A%10==1&&$A%100!=11?0:($A%10>1&&$A%10<5&&$A/10%10!=1?1:2)):1)))))))));$Zl=$Zl[$F];}$Zl=str_replace("'",'’',$Zl);$Ka=func_get_args();array_shift($Ka);$me=str_replace("%d","%s",$Zl);if($me!=$Zl)$Ka[0]=format_number($A);return
vsprintf($me,$Ka);}function
convertTranslationKey($t){static$ld=null;if(is_string($t)){if(!$ld)$ld=get_translations("en");if(($r=array_search($t,$ld))!==false)$t=$r;elseif(($r=get_plural_translation_id($t))!==null)$t=$r;}return$t;}}function
get_available_languages(){return
array('en'=>true,);}function
get_lang(){return
Locale::get()->getLanguage();}function
lang($t,$A=null){return
call_user_func_array([Locale::get(),"translate"],func_get_args());}function
get_language_options(){$Sa=get_available_languages();if(count($Sa)==1)return[];$B=[];foreach(Locale::$Languages
as$fg=>$S){if(isset($Sa[$fg]))$B[$fg]=$S;}return$B;}function
language_select(){$B=get_language_options();if(!$B)return;echo"<form action='' method='post'>\n",html_select("lang",$B,Locale::get()->getLanguage(),"this.form.submit();"),"<input type='submit' value='".lang(80),"' class='button hidden'>\n",input_token(),"</form>\n";}$Sa=get_available_languages();$fg=array_keys($Sa)[0];$Xi=null;if(isset($_POST["lang"])&&isset($Sa[$_POST["lang"]])&&verify_token()){$Xi=$_SESSION["lang"]=$_POST["lang"];$_SESSION["translations"]=[];}$Tj=($ra=Settings::readParameter("lang"))!==null?$ra:(isset($_COOKIE["neo_lang"])?$_COOKIE["neo_lang"]:null);if($Tj!==null&&isset($Sa[$Tj]))$fg=$Tj;elseif(isset($_SESSION["lang"])&&isset($Sa[$_SESSION["lang"]]))$fg=$_SESSION["lang"];elseif(isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])){$ta=[];preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$z,PREG_SET_ORDER);foreach($z
as$y)$ta[$y[1]]=(isset($y[3])?$y[3]:1);arsort($ta);foreach($ta
as$t=>$jj){if(isset($Sa[$t])){$fg=$t;break;}$t=preg_replace('~-.*~','',$t);if(!isset($ta[$t])&&isset($Sa[$t])){$fg=$t;break;}}}Locale::create($fg);abstract
class
Connection{protected$flavor=null;protected$version;protected$affectedRows=0;protected$errno=0;protected$error="";protected$multiResult;private
static$instance=null;static
function
create(){if(self::$instance)die(__CLASS__." instance already exists.\n");return
self::$instance=new
static();}static
function
createSecondary(){return
new
static();}static
function
get(){if(!self::$instance)exit(__CLASS__." instance not found.\n");return
self::$instance;}static
function
exists(){return
self::$instance!==null;}protected
function
__construct(){}function
getDefaultServerName(){return"";}function
openPasswordless($M,$U,$E,$Tk=true){$He=Admin::get()->getConfig()->getDefaultPasswordHash()!="";if($E!=""&&($Tk||$He)&&$this->open($M,$U,"")){$H=Admin::get()->verifyDefaultPassword($E);if($H!==true){$this->error=$H;return
false;}return
true;}return$this->open($M,$U,$E);}abstract
function
open($M,$U,$E);function
getFlavor(){return$this->flavor;}function
isMariaDB(){return$this->flavor=="mariadb";}function
isCockroachDB(){return$this->flavor=="cockroach";}function
getVersion(){return$this->version;}function
isMinVersion($Jm){return
version_compare($this->version,$Jm)>=0;}function
getAffectedRows(){return$this->affectedRows;}function
setAffectedRows($Aa){$this->affectedRows=$Aa;}function
getErrno(){return$this->errno;}function
getError(){return$this->error;}function
setError($i){$this->error=$i;}abstract
function
selectDatabase($_);abstract
function
quote($P);function
formatValue($X,array$j){return$X;}abstract
function
query($G,$jm=false);function
getQueryInfo(){return
null;}function
getResult($G,$j=0){return$this->getValue($G,$j);}function
getValue($G,$Md=0){$H=$this->query($G);if(!is_object($H))return
false;$J=$H->fetchRow();return$J?$J[$Md]:false;}function
multiQuery($G){$this->multiResult=$this->query($G);return(bool)($this->multiResult);}function
storeResult($H=null){return$this->multiResult;}function
nextResult(){return
false;}}abstract
class
Result{protected$rowsCount;function
__construct($Pj){$this->rowsCount=$Pj;}function
getRowsCount(){return$this->rowsCount;}abstract
function
fetchAssoc();abstract
function
fetchRow();abstract
function
fetchField();function
seek($Fh){return
false;}}if(extension_loaded('pdo')){abstract
class
PdoConnection
extends
Connection{protected$pdo;protected$multiResult;protected
function
dsn($Zc,$U,$E,array$B=[]){$B[PDO::ATTR_ERRMODE]=PDO::ERRMODE_SILENT;try{$this->pdo=new
PDO($Zc,$U,$E,$B);}catch(Exception$yd){$this->error=$yd->getMessage();return
false;}$this->version=preg_replace('~^\D*([\d.]+).*~',"$1",(string)@$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION));return
true;}function
quote($P){return$this->pdo->quote($P);}function
query($G,$jm=false){$Sk=$this->pdo->query($G);$this->error="";if(!$Sk){list(,$this->errno,$this->error)=$this->pdo->errorInfo();if(!$this->error)$this->error=lang(123);return
false;}$H=new
PdoResult($Sk);$this->storeResult($H);return$H;}function
storeResult($H=null){if(!$H){$H=$this->multiResult;if(!$H)return
false;}if($H->getColumnsCount())return$H;$this->affectedRows=$H->getAffectedRowsCount();return
true;}function
nextResult(){return$this->multiResult&&$this->multiResult->nextRowset();}}class
PdoResult
extends
Result{private$statement;private$offset=0;function
__construct(PDOStatement$Sk){parent::__construct(max($Sk->columnCount()?$Sk->rowCount():0,0));$this->statement=$Sk;}function
getColumnsCount(){return$this->statement->columnCount();}function
getAffectedRowsCount(){return$this->statement->rowCount();}function
fetchAssoc(){return$this->fetchArray(PDO::FETCH_ASSOC);}function
fetchRow(){return$this->fetchArray(PDO::FETCH_NUM);}private
function
fetchArray($ih){$H=$this->statement->fetch($ih);return$H?array_map([$this,'unresource'],$H):$H;}private
function
unresource($X){return
is_resource($X)?stream_get_contents($X):$X;}function
fetchField(){$J=$this->statement->getColumnMeta($this->offset++);if($J===false)return
false;$T=$J["pdo_type"];$J["type"]=($T==PDO::PARAM_INT?0:15);$J["charsetnr"]=($T==\PDO::PARAM_LOB||(isset($J["flags"])&&in_array("blob",(array)$J["flags"]))?63:0);return(object)$J;}function
seek($Fh){for($p=0;$p<$Fh;$p++){if($this->statement->fetch()===false)return
false;;}return
true;}function
nextRowset(){$this->offset=0;return@$this->statement->nextRowset();}}}class
Drivers{private
static$drivers=[];private
static$extensions=[];static
function
add($q,$_,array$Gd){self::$drivers[$q]=$_;self::$extensions[$q]=$Gd;}static
function
setName($q,$_){if(isset(self::$drivers[$q]))self::$drivers[$q]=$_;}static
function
get($q){return
isset(self::$drivers[$q])?self::$drivers[$q]:null;}static
function
getList(){return
self::$drivers;}static
function
getExtensions($q){return
isset(self::$extensions[$q])?self::$extensions[$q]:[];}}function
get_drivers(){return
Drivers::getList();}abstract
class
Driver{static$EnumLengthPattern="'(?:''|[^'\\\\]|\\\\.)*'";protected$connection;protected$admin;protected$types=[];protected$unsigned=[];protected$generated=[];protected$operators=[];protected$likeOperator="LIKE %%";protected$functions=[];protected$grouping=[];protected$inOut=["IN","OUT","INOUT"];protected$onActions=["RESTRICT","CASCADE","SET NULL","SET DEFAULT","NO ACTION"];protected$partitionBy=[];protected$insertFunctions=[];protected$editFunctions=[];protected$systemDatabases=[];protected$systemSchemas=[];private
static$instance=null;static
function
create(Connection$d,$za){if(self::$instance)die(__CLASS__." instance already exists.\n");return
self::$instance=new
static($d,$za);}static
function
get(){if(!self::$instance)exit(__CLASS__." instance not found.\n");return
self::$instance;}protected
function
__construct(Connection$d,$za){$this->connection=$d;$this->admin=$za;}function
getTypes(){return
call_user_func_array("array_merge",array_values($this->types));}function
getStructuredTypes(){return
array_map("array_keys",$this->types);}function
setUserTypes(array$im){$this->types[lang(110)]=array_flip($im);}function
getUserTypes(){$t=lang(110);return
array_keys(isset($this->types[$t])?$this->types[$t]:[]);}function
getUnsigned(){return$this->unsigned;}function
getGenerated(){return$this->generated;}function
getOperators(){return$this->operators;}function
getLikeOperator(){return$this->likeOperator;}function
getFunctions(){return$this->functions;}function
getGrouping(){return$this->grouping;}function
getInOut(){return$this->inOut;}function
getOnActions(){return$this->onActions;}function
getPartitionBy(){return$this->partitionBy;}function
getInsertFunctions(){return$this->insertFunctions;}function
getEditFunctions(){return$this->editFunctions;}function
getSystemDatabases(){return$this->systemDatabases;}function
getSystemSchemas(){return$this->systemSchemas;}function
getUnconvertFunction(array$j){return"";}function
select($Q,array$L,array$Z,array$_e,array$C=[],$v=1,$D=0,$dj=false){$If=(count($_e)<count($L));$G="SELECT".limit(($_GET["page"]!="last"&&$v&&$_e&&$If&&DIALECT=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$L)."\nFROM ".table($Q),($Z?"\nWHERE ".implode(" AND ",$Z):"").($_e&&$If?"\nGROUP BY ".implode(", ",$_e):"").($C?"\nORDER BY ".implode(", ",$C):""),$v,($D?$v*$D:0),"\n");$Rk=microtime(true);$I=$this->connection->query($G);if($dj)echo
Admin::get()->formatSelectQuery($G,$Rk,!$I);return$I;}function
delete($Q,$mj,$v=0){$G="FROM ".table($Q);return
queries("DELETE".($v?limit1($Q,$G,$mj):" $G$mj"));}function
update($Q,array$rj,$mj,$v=0,$kk="\n"){$Y=[];foreach($rj
as$t=>$W)$Y[]="$t = $W";$G=table($Q)." SET$kk".implode(",$kk",$Y);return
queries("UPDATE".($v?limit1($Q,$G,$mj,$kk):" $G$mj"));}function
insert($Q,array$rj){return
queries("INSERT INTO ".table($Q).($rj?" (".implode(", ",array_keys($rj)).")\nVALUES (".implode(", ",$rj).")":" DEFAULT VALUES").$this->getInsertReturningSql($Q));}function
getInsertReturningSql($Q){return"";}function
insertUpdate($Q,array$sj,array$cj){return
false;}function
begin(){return
queries("BEGIN");}function
commit(){return
queries("COMMIT");}function
rollback(){return
queries("ROLLBACK");}function
slowQuery($G,$Nl){return
null;}function
convertSearch($df,array$Z,array$j){return$df;}function
getNull(){return"NULL";}function
getTypeName(stdClass$j){return
isset($j->native_type)?$j->native_type:"";}function
quoteBinary($P){return
q($P);}function
warnings(){return
null;}function
tableHelp($_,$Gf=false){return
null;}function
supportsIndex(array$ll){return!is_view($ll);}function
getIndexAlgorithms(array$ll){return[];}function
getIndexOpclasses(){return[];}function
getInheritedTables($Q){return[];}function
getParentTables($Q){return[];}function
isPartition($Q){return
false;}function
getPartitionsInfo($Q){return[];}function
hasCStyleEscapes(){return
false;}function
engines(){return[];}function
explodeArrayValue($X,$T,&$Uj){return[];}function
implodeArrayValues(array$Y,$T){return"";}function
checkConstraints($Q){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".($this->connection->isMariaDB()?" AND c.TABLE_NAME = ".q($Q):"")."
WHERE c.CONSTRAINT_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
AND t.TABLE_NAME = ".q($Q).(DIALECT=="pgsql"?"
AND CHECK_CLAUSE NOT LIKE '% IS NOT NULL'":""),$this->connection);}function
getAllFields(){if(DB=="")return[];$Da=[];$Pf=(DIALECT=="pgsql"||DIALECT=="mssql");$cj=(DIALECT=="sql"?"c.COLUMN_KEY = 'PRI'":($Pf?"k.COLUMN_NAME":""));$K=get_rows("SELECT c.TABLE_NAME AS tab, c.COLUMN_NAME AS field, c.IS_NULLABLE AS nullable,
	c.DATA_TYPE AS type, c.CHARACTER_MAXIMUM_LENGTH AS length".($cj?",
	$cj AS ".idf_escape("primary"):"")."
FROM INFORMATION_SCHEMA.COLUMNS c".($Pf?"
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS t
	ON c.TABLE_SCHEMA = t.TABLE_SCHEMA AND c.TABLE_NAME = t.TABLE_NAME AND t.CONSTRAINT_TYPE = 'PRIMARY KEY'
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
	ON t.CONSTRAINT_SCHEMA = k.CONSTRAINT_SCHEMA AND t.CONSTRAINT_NAME = k.CONSTRAINT_NAME
		AND c.TABLE_SCHEMA = k.TABLE_SCHEMA AND c.TABLE_NAME = k.TABLE_NAME AND c.COLUMN_NAME = k.COLUMN_NAME":"")."
WHERE c.TABLE_SCHEMA = ".q($_GET["ns"]!=""?$_GET["ns"]:DB)."
ORDER BY c.TABLE_NAME, c.ORDINAL_POSITION",$this->connection);foreach($K
as$J){$J["null"]=($J["nullable"]=="YES");$Da[$J["tab"]][]=$J;}return$Da;}}Drivers::add("pgsql","PostgreSQL",["PgSQL","PDO_PgSQL"]);if(isset($_GET["pgsql"])){define("AdminNeo\DRIVER","pgsql");define("AdminNeo\DIALECT","pgsql");if(extension_loaded("pgsql")&&$_GET["ext"]!="pdo"){define("AdminNeo\DRIVER_EXTENSION","PgSQL");class
PgSqlConnectionBase
extends
Connection{var$timeout=0;private$connection;private$connectionString;private$hasDefaultDatabase;function
open($M,$U,$E){$g=Admin::get()->getDatabase();set_error_handler(function($td,$i){if(ini_bool("html_errors"))$i=html_entity_decode(strip_tags($i));$i=preg_replace('~^[^:]*: ~','',$i);$this->error=$i;});list($We,$Si)=host_port($M);$this->connectionString=($We!=""?"host=$We ":"").($Si?"port=$Si ":"")."user='".addcslashes($U,"'\\")."' password='".addcslashes($E,"'\\")."'";$Qk=Admin::get()->getConfig()->getSslMode();if($Qk)$this->connectionString
.=" sslmode='$Qk'";$this->connection=@pg_connect("$this->connectionString dbname='".($g!=""?addcslashes($g,"'\\"):"postgres")."'",PGSQL_CONNECT_FORCE_NEW);if(!$this->connection&&$g!=""){$this->hasDefaultDatabase=false;$this->connection=@pg_connect("$this->connectionString dbname='postgres'",PGSQL_CONNECT_FORCE_NEW);}else$this->hasDefaultDatabase=true;restore_error_handler();if($this->connection){$Km=$this->getValue("SELECT version()");$this->flavor=str_contains($Km,"CockroachDB")?"cockroach":null;$this->version=preg_replace('~^\D*([\d.]+[-\w]*).*~',"$1",$Km);pg_set_client_encoding($this->connection,"UTF8");}return(bool)$this->connection;}function
quote($P){return(function_exists('pg_escape_literal')?pg_escape_literal($this->connection,$P):"'".pg_escape_string($this->connection,$P)."'");}function
formatValue($X,array$j){if($j["type"]=="bytea"&&$X!==null)return
pg_unescape_bytea($X);return
parent::formatValue($X,$j);}function
selectDatabase($_){if($_==Admin::get()->getDatabase())return$this->hasDefaultDatabase;$I=@pg_connect("$this->connectionString dbname='".addcslashes($_,"'\\")."'",PGSQL_CONNECT_FORCE_NEW);if($I)$this->connection=$I;return(bool)$I;}function
close(){$this->connection=@pg_connect("$this->connectionString dbname='postgres'");}function
query($G,$jm=false){if(!$this->connection){$this->error="Invalid connection.";return
false;}$H=@pg_query($this->connection,$G);$this->error="";if(!$H){$this->error=pg_last_error($this->connection);$I=false;}elseif(!pg_num_fields($H)){$this->affectedRows=pg_affected_rows($H);$I=true;}else$I=new
PgSqlResult($H);if($this->timeout){$this->timeout=0;$this->query("RESET statement_timeout");}return$I;}function
getValue($G,$Md=0){$H=$this->query($G);return
is_object($H)?$H->fetchValue($Md):false;}function
warnings(){if(PHP_VERSION_ID>=70100){$Tm=pg_last_notice($this->connection,PGSQL_NOTICE_ALL);if(!$Tm)return
null;$Tm=implode("\n",$Tm);pg_last_notice($this->connection,PGSQL_NOTICE_CLEAR);}else{$Tm=pg_last_notice($this->connection);if(!$Tm)return
null;}return
nl2br(h($Tm));}function
copyFrom($Q,array$K){$this->error="";set_error_handler(function($td,$i){$this->error=ini_bool("html_errors")?html_entity_decode($i):$i;});$H=pg_copy_from($this->connection,$Q,$K);restore_error_handler();return$H;}}class
PgSqlResult
extends
Result{private$resource;private$offset=0;function
__construct($Fj){parent::__construct(pg_num_rows($Fj));$this->resource=$Fj;}function
fetchAssoc(){return
pg_fetch_assoc($this->resource);}function
fetchRow(){return
pg_fetch_row($this->resource);}function
fetchValue($Md){return$this->getRowsCount()?pg_fetch_result($this->resource,0,$Md):false;}function
fetchField(){$b=$this->offset++;$_=pg_field_name($this->resource,$b);if($_===false)return
false;$T=pg_field_type($this->resource,$b);if($T===false)return
false;$fi=pg_field_table($this->resource,$b);return(object)['orgtable'=>($fi!==false?$fi:""),'name'=>$_,'native_type'=>$T,'type'=>(preg_match(number_type(),$T)?0:15),'charsetnr'=>($T=="bytea"?63:0),];}}}elseif(extension_loaded("pdo_pgsql")){define("AdminNeo\DRIVER_EXTENSION","PDO_PgSQL");class
PgSqlConnectionBase
extends
PdoConnection{var$timeout=0;function
open($M,$U,$E){$g=Admin::get()->getDatabase();list($We,$Si)=host_port($M);$Zc="pgsql:".($We!=""?"host=$We ":"").($Si?"port=$Si ":"")."client_encoding=utf8 dbname='".($g!=""?addcslashes($g,"'\\"):"postgres")."'";$Qk=Admin::get()->getConfig()->getSslMode();if($Qk)$Zc
.=" sslmode='$Qk'";if(!$this->dsn($Zc,$U,$E))return
false;$Km=$this->getValue("SELECT version()");$this->flavor=str_contains($Km,"CockroachDB")?"cockroach":null;return
true;}function
selectDatabase($_){return
Admin::get()->getDatabase()==$_;}function
query($G,$jm=false){$I=parent::query($G,$jm);if($this->timeout){$this->timeout=0;parent::query("RESET statement_timeout");}return$I;}function
warnings(){return
null;}function
copyFrom($Q,array$K){$H=$this->pdo->pgsqlCopyFromArray($Q,$K);$ud=$this->pdo->errorInfo();$this->error=isset($ud[2])?$ud[2]:"";return$H;}function
close(){}}}if(class_exists('AdminNeo\PgSqlConnectionBase')){class
PgSqlConnection
extends
PgSqlConnectionBase{private$localhostServer=false;function
open($M,$U,$E){if($M=="localhost")$this->localhostServer=true;return
parent::open($M,$U,$E);}function
getDefaultServerName(){return$this->localhostServer?"localhost":"";}function
multiQuery($G){if(preg_match('~\bCOPY\s+(.+?)\s+FROM\s+stdin;\n?(.*)\n\\\\\.$~is',str_replace("\r\n","\n",$G),$z)){$K=explode("\n",$z[2]);$this->affectedRows=count($K);return$this->copyFrom($z[1],$K);}return
parent::multiQuery($G);}}}class
PgSqlDriver
extends
Driver{protected
function
__construct(Connection$d,$za){parent::__construct($d,$za);$this->types=[lang(124)=>["smallint"=>5,"integer"=>10,"bigint"=>19,"boolean"=>1,"numeric"=>0,"real"=>7,"double precision"=>16,"money"=>20,],lang(125)=>["date"=>13,"time"=>17,"timestamp"=>20,"timestamptz"=>21,"interval"=>0,],lang(126)=>["character"=>0,"character varying"=>0,"text"=>0,"tsquery"=>0,"tsvector"=>0,"uuid"=>0,"xml"=>0,],lang(127)=>["bit"=>0,"bit varying"=>0,"bytea"=>0,],lang(128)=>["cidr"=>43,"inet"=>43,"macaddr"=>17,"macaddr8"=>23,"txid_snapshot"=>0,],lang(129)=>["box"=>0,"circle"=>0,"line"=>0,"lseg"=>0,"path"=>0,"point"=>0,"polygon"=>0,],];if($d->isMinVersion("9.2")){$this->types[lang(126)]["json"]=4294967295;if($d->isMinVersion("9.4"))$this->types[lang(126)]["jsonb"]=4294967295;}if($d->isMinVersion("12")){$this->generated[]="STORED";if($d->isMinVersion("18"))$this->generated[]="VIRTUAL";}$this->operators=["=","<",">","<=",">=","!=","~","~*","!~","!~*","LIKE","LIKE %%","NOT LIKE","ILIKE","ILIKE %%","NOT ILIKE","IN","NOT IN","IS NULL","IS NOT NULL","SQL",];$this->functions=["char_length","lower","upper","round","to_hex","to_timestamp",];$this->grouping=["sum","min","max","avg","count","count distinct",];$this->partitionBy=["RANGE","LIST"];if(!$d->isCockroachDB())$this->partitionBy[]="HASH";$this->insertFunctions=["char"=>"md5","date|time"=>"now",];$this->editFunctions=[number_type()=>"+/-","date|time"=>"+ interval/- interval","char|text"=>"||",];$this->systemDatabases=["template1"];$this->systemSchemas=["information_schema","pg_catalog","pg_toast","pg_temp_*","pg_toast_temp_*"];}function
getNsOidSql(){return"(SELECT oid FROM pg_namespace WHERE nspname = current_schema())";}function
getInsertReturningSql($Q){$Pa=array_filter(fields($Q),function($j){return$j['auto_increment'];});return
count($Pa)==1?" RETURNING ".idf_escape(key($Pa)):"";}function
insertUpdate($Q,array$sj,array$cj){foreach($sj
as$rj){$sm=[];$Z=[];foreach($rj
as$t=>$W){$sm[]="$t = $W";if(isset($cj[idf_unescape($t)]))$Z[]="$t = $W";}if(!(($Z&&queries("UPDATE ".table($Q)." SET ".implode(", ",$sm)." WHERE ".implode(" AND ",$Z))&&Connection::get()->getAffectedRows())||queries("INSERT INTO ".table($Q)." (".implode(", ",array_keys($rj)).") VALUES (".implode(", ",$rj).")")))return
false;}return
true;}function
slowQuery($G,$Nl){$this->connection->query("SET statement_timeout = ".(1000*$Nl));$this->connection->timeout=1000*$Nl;return$G;}function
convertSearch($df,array$Z,array$j){$Hl="char|text";if(strpos($Z["op"],"LIKE")===false)$Hl
.="|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|".number_type();return(preg_match("~$Hl~",$j["type"])?$df:"CAST($df AS text)");}function
quoteBinary($P){return"'\\x".bin2hex($P)."'";}function
warnings(){return$this->connection->warnings();}function
tableHelp($_,$Gf=false){$wg=["information_schema"=>"infoschema","pg_catalog"=>($Gf?"view":"catalog"),];$w=$wg[$_GET["ns"]];if($w)return"$w-".str_replace("_","-",$_).".html";return
null;}function
getInheritedTables($Q){return
get_rows("SELECT relname AS \"table\", nspname AS ns
FROM pg_inherits
JOIN pg_class ON inhrelid = oid
JOIN pg_namespace ON relnamespace = pg_namespace.oid
WHERE inhparent = ".$this->tableOid($Q).(Connection::get()->isMinVersion("10")?" AND relispartition::int = 0":"")." ORDER BY 2, 1");}function
getParentTables($Q){return
get_rows("SELECT relname AS \"table\", nspname AS ns
FROM pg_class
JOIN pg_inherits ON inhparent = oid
JOIN pg_namespace ON relnamespace = pg_namespace.oid
WHERE inhrelid = ".$this->tableOid($Q)." ORDER BY 2, 1");}function
isPartition($Q){return
Connection::get()->isMinVersion("10")&&$this->connection->getValue("SELECT relispartition::int FROM pg_class WHERE oid = ".$this->tableOid($Q));}function
getPartitionsInfo($Q){if(!$this->connection->isMinVersion("10"))return[];$J=$this->connection->query("SELECT * FROM pg_partitioned_table WHERE partrelid = ".$this->tableOid($Q))->fetchAssoc();if(!$J)return[];$Na=get_vals("SELECT attname FROM pg_attribute WHERE attrelid = {$J["partrelid"]} AND attnum IN (".str_replace(" ",", ",$J["partattrs"]).")");$ib=['h'=>'HASH','l'=>'LIST','r'=>'RANGE'];$qf=["partition_by"=>$ib[$J["partstrat"]],"partition"=>implode(", ",array_map('AdminNeo\idf_escape',$Na)),];$Ei=get_key_vals("SELECT relname, pg_get_expr(c.relpartbound, c.oid) AS bound
FROM pg_inherits
JOIN pg_class c ON inhrelid = oid
WHERE inhparent = ".$this->tableOid($Q)." ORDER BY 1");$qf["partition_names"]=array_keys($Ei);$qf["partition_values"]=array_map(function($X){return
str_replace("FOR VALUES ","",$X);},array_values($Ei));return$qf;}function
tableOid($Q){return"(SELECT oid FROM pg_class WHERE relnamespace = ".$this->getNsOidSql()." AND relname = ".q($Q)." AND relkind IN ('r', 'm', 'v', 'f', 'p'))";}function
getIndexAlgorithms(array$ll){static$fh=[];if(!$fh)$fh=get_vals("SELECT amname FROM pg_am".($this->connection->isMinVersion("9.6")?" WHERE amtype = 'i'":"")." ORDER BY amname = '".($this->connection->isCockroachDB()?"prefix":"btree")."' DESC, amname");return$fh;}function
getIndexOpclasses(){static$Th=[];if(!$Th&&!$this->connection->isCockroachDB())$Th=get_vals("SELECT DISTINCT opcname FROM pg_catalog.pg_opclass WHERE NOT opcdefault ORDER BY opcname");return$Th;}function
supportsIndex(array$ll){return$ll["Engine"]!="view";}function
hasCStyleEscapes(){static$jb;if($jb===null)$jb=($this->connection->getValue("SHOW standard_conforming_strings")=="off");return$jb;}function
explodeArrayValue($X,$T,&$Uj){$Hm=["oidvector"=>"oid","int2vector"=>"smallint",];$Uj=isset($Hm[$T])?$Hm[$T]:null;if($Uj)return
explode(" ",$X);if(preg_match('~^(.+)\[]$~',$T,$z)){$Uj=$z[1];$X=preg_replace('~^\{(.*)}$~',"$1",$X);$Ef=str_contains($Uj,"json");if($Ef){$Y=explode('","',trim($X,'"'));array_walk($Y,function(&$V){$V=str_replace('\"','"',$V);});}elseif(preg_match('~^(\{+)(.*)(}+)$~',$X,$z)){$Y=explode("$z[3],$z[1]",$z[2]);array_walk($Y,function(&$V)use($z){$V=$z[1].$V.$z[3];});}else$Y=explode(",",$X);if(!$Ef&&$Y[0][0]=="{"){$T=$Uj;array_walk($Y,function(&$V)use($T,&$Uj){$V=$this->explodeArrayValue($V,$T,$Uj);});}elseif(!$Ef&&isset($this->types[lang(126)][$Uj])){array_walk($Y,function(&$V){$V=preg_replace('~^\'(.*)\'$~',"$1",$V);});}return$Y;}return[];}function
implodeArrayValues(array$Y,$T){if($T=="oidvector"||$T=="int2vector")return
implode(" ",$Y);if(preg_match('~^([^[]+)(\[])+$~',$T,$z)){$Ff=isset($this->types[lang(126)][$z[1]]);$Ef=str_contains($T,"json");array_walk($Y,function(&$V)use($T,$Ff,$Ef){if(is_array($V))$V=$this->implodeArrayValues($V,$T);elseif($Ef)$V="\"$V\"";elseif($Ff)$V="'$V'";});return"{".implode(",",$Y)."}";}return"";}}function
create_driver(Connection$d){return
PgSqlDriver::create($d,Admin::get());}function
idf_escape($df){return'"'.str_replace('"','""',$df).'"';}function
table($df){return
idf_escape($df);}function
connect($cj=false,&$i=null){$d=$cj?PgSqlConnection::create():PgSqlConnection::createSecondary();list($M,$U,$E)=Admin::get()->getCredentials();$H=$d->openPasswordless($M,$U,$E,false);$ud=[];if(!$H&&$M==""&&preg_match('~connection to server on socket .+ failed: No such file or directory~U',$d->getError())){$ud[]=$d->getError();$M="localhost";$H=$d->openPasswordless($M,$U,$E,false);}if(!$H){$ud[]=$d->getError();$i=implode("\n",$ud);return
null;}if($d->isMinVersion("9"))$d->query("SET application_name = 'AdminNeo'");if($cj&&$d->isCockroachDB()){Drivers::setName(DRIVER,"CockroachDB");save_driver_name(DRIVER,$M,"CockroachDB");}return$d;}function
get_databases($ge){return
get_vals("SELECT datname FROM pg_database
WHERE datallowconn = TRUE AND has_database_privilege(datname, 'CONNECT')
ORDER BY datname");}function
limit($G,$Z,$v,$Fh=0,$kk=" "){return" $G$Z".($v?$kk."LIMIT $v".($Fh?" OFFSET $Fh":""):"");}function
limit1($Q,$G,$Z,$kk="\n"){return(preg_match('~^INTO~',$G)?limit($G,$Z,1,0,$kk):" $G".(is_view(table_status1($Q))?$Z:$kk."WHERE ctid = (SELECT ctid FROM ".table($Q).$Z.$kk."LIMIT 1)"));}function
db_collation($g,array$Cb){return
Connection::get()->getValue("SELECT datcollate FROM pg_database WHERE datname = ".q($g));}function
logged_user(){return
Connection::get()->getValue("SELECT user");}function
tables_list(){$G="SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";if(support("materializedview"))$G
.="
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()";$G
.="
ORDER BY 1";return
get_key_vals($G);}function
count_tables(array$f){$I=[];foreach($f
as$g){if(Connection::get()->selectDatabase($g))$I[$g]=count(tables_list());}return$I;}function
table_status($_="",$Kd=false){static$Ke;if($Ke===null)$Ke=Connection::get()->getValue("SELECT 'pg_table_size'::regproc");$I=[];foreach(get_rows("SELECT
	relname AS \"Name\",
	CASE relkind WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' ELSE 'table' END AS \"Engine\",
	CASE relkind WHEN 'p' THEN 'partitioned' ELSE '' END AS \"Create_options\"".($Ke?",
	pg_table_size(c.oid) AS \"Data_length\",
	pg_indexes_size(c.oid) AS \"Index_length\"":"").",
	obj_description(c.oid, 'pg_class') AS \"Comment\",
	".(Connection::get()->isMinVersion("12")?"''":"CASE WHEN relhasoids THEN 'oid' ELSE '' END")." AS \"Oid\",
	reltuples AS \"Rows\",
	".(Connection::get()->isMinVersion("10")?"relispartition::int AS \"Partition\",":"")."
	current_schema() AS nspname
FROM pg_class c
WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
AND relnamespace = ".Driver::get()->getNsOidSql()."
".($_!=""?"AND relname = ".q($_):"ORDER BY relname"))as$J)$I[$J["Name"]]=$J;return$I;}function
is_view(array$R){return
in_array($R["Engine"],["view","materialized view"]);}function
fk_support(array$R){return
true;}function
fields($Q){$I=[];$Ca=['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,
	a.attndims, pg_get_expr(d.adbin, d.adrelid) AS default,
	a.attnotnull::int,
	i.indrelid AS primary,
	col_description(a.attrelid, a.attnum) AS comment".(Connection::get()->isMinVersion("10")?",
	a.attidentity".(Connection::get()->isMinVersion("12")?",
	a.attgenerated":""):"")."
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
LEFT JOIN pg_index i ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey) AND i.indisprimary
WHERE a.attrelid = ".Driver::get()->tableOid($Q)."
AND NOT a.attisdropped
AND a.attnum > 0
ORDER BY a.attnum")as$J){preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~',$J["full_type"],$y);list(,$T,$u,$J["length"],$ya,$La)=$y;$qb=$T.$ya;if(isset($Ca[$qb])){$J["type"]=$Ca[$qb];$J["full_type"]=$J["type"].$u;}else{$J["type"]=$T;$J["full_type"]=$J["type"].$u.$ya;}for($p=0;$p<$J["attndims"];$p++){$J["length"].=$La;$J["full_type"].=$La;}if(in_array($J['attidentity'],['a','d']))$J['default']='GENERATED '.($J['attidentity']=='d'?'BY DEFAULT':'ALWAYS').' AS IDENTITY';$B=["s"=>"STORED","v"=>"VIRTUAL"];$J["generated"]=(isset($B[$J["attgenerated"]])?$B[$J["attgenerated"]]:"");$J["null"]=!$J["attnotnull"];$J["auto_increment"]=$J['attidentity']||preg_match('~^nextval\(~i',$J["default"])||preg_match('~^unique_rowid\(~',$J["default"]);$J["privileges"]=["insert"=>1,"select"=>1,"update"=>1,"where"=>1,"order"=>1];if(!$J['generated']&&preg_match('~(.+)::[^,)]+(.*)~s',$J["default"],$y))$J["default"]=($y[1]=="NULL"?null:idf_unescape($y[1]).$y[2]);$I[$J["field"]]=$J;}return$I;}function
indexes($Q,$d=null){if(!is_object($d))$d=Connection::get();$I=[];$ql=Driver::get()->tableOid($Q);$c=get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $ql AND attnum > 0",$d);foreach(get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption, amname,
	pg_get_expr(indpred, indrelid, true) AS partial, pg_get_expr(indexprs, indrelid) AS indexpr".($d->isCockroachDB()?"":",
	(SELECT string_agg(CASE WHEN opcdefault THEN '' ELSE opcname END, ' ' ORDER BY s)
		FROM generate_subscripts(indclass, 1) AS s
		JOIN pg_catalog.pg_opclass ON pg_opclass.oid = indclass[s]) AS opclasses")."
FROM pg_index
JOIN pg_class ON indexrelid = oid
JOIN pg_am ON pg_am.oid = pg_class.relam
WHERE indrelid = $ql
ORDER BY indisprimary DESC, indisunique DESC",$d)as$J){$Bj=$J["relname"];$I[$Bj]["type"]=($J["indisprimary"]?"PRIMARY":($J["indisunique"]?"UNIQUE":"INDEX"));$I[$Bj]["columns"]=[];$I[$Bj]["descs"]=[];$I[$Bj]["algorithm"]=$J["amname"];$I[$Bj]["partial"]=$J["partial"];$nf=preg_split('~(?<=\)), (?=\()~',$J["indexpr"]);foreach(explode(" ",$J["indkey"])as$of)$I[$Bj]["columns"][]=($of?$c[$of]:array_shift($nf));foreach(explode(" ",$J["indoption"])as$pf)$I[$Bj]["descs"][]=(intval($pf)&1?'1':null);$I[$Bj]["opclasses"]=(isset($J["opclasses"])?explode(" ",$J["opclasses"]):[]);$I[$Bj]["lengths"]=[];}return$I;}function
foreign_keys($Q){$Nh=implode("|",Driver::get()->getOnActions());$I=[];foreach(get_rows("SELECT conname, condeferrable::int AS deferrable, condeferred::int AS deferred, pg_get_constraintdef(oid) AS definition
FROM pg_constraint
WHERE conrelid = ".Driver::get()->tableOid($Q)."
AND contype = 'f'::char
ORDER BY conkey, conname")as$J){$J['deferrable']=($J['deferrable']?'':'NOT ').'DEFERRABLE'.($J['deferred']?' INITIALLY DEFERRED':'');if(preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA',$J['definition'],$y)){$J['source']=array_map('AdminNeo\idf_unescape',array_map('trim',explode(',',$y[1])));if(preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~',$y[2],$Gg)){$J['ns']=idf_unescape($Gg[2]);$J['table']=idf_unescape($Gg[4]);}$J['target']=array_map('AdminNeo\idf_unescape',array_map('trim',explode(',',$y[3])));$J['on_delete']=(preg_match("~ON DELETE ($Nh)~",$y[4],$Gg)?$Gg[1]:'NO ACTION');$J['on_update']=(preg_match("~ON UPDATE ($Nh)~",$y[4],$Gg)?$Gg[1]:'NO ACTION');$I[$J['conname']]=$J;}}return$I;}function
backward_keys($Q){$G="SELECT s.constraint_name, s.table_schema, s.table_name, s.column_name, t.column_name AS referenced_column_name
FROM information_schema.key_column_usage s
JOIN information_schema.referential_constraints r USING (constraint_catalog, constraint_schema, constraint_name)
JOIN information_schema.key_column_usage t ON r.unique_constraint_catalog = t.constraint_catalog
	AND r.unique_constraint_schema = t.constraint_schema
	AND r.unique_constraint_name = t.constraint_name
	AND r.constraint_catalog = t.constraint_catalog
	AND r.constraint_schema = t.constraint_schema
	AND r.unique_constraint_name = t.constraint_name
	AND s.position_in_unique_constraint = t.ordinal_position
WHERE t.table_catalog = ".q(DB)."
AND t.table_schema = ".q($_GET["ns"])."
AND t.table_name = ".q($Q)."
ORDER BY s.ordinal_position";return
get_rows($G,null,"");}function
view($_){return["select"=>trim(Connection::get()->getValue("SELECT pg_get_viewdef(".Driver::get()->tableOid($_).")"))];}function
collations(){return[];}function
information_schema($g,$Xj=""){return
in_array($Xj!=""?$Xj:get_schema(),["information_schema","pg_catalog","pg_toast"]);}function
error(){$I=h(Connection::get()->getError());if(preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s',$I,$y))$I=$y[1].preg_replace('~((?:[^&]|&[^;]*;){'.strlen($y[3]).'})(.*)~','\1<b>\2</b>',$y[2]).$y[4];return
nl2br($I);}function
create_database($g,$Bb){return(bool)queries("CREATE DATABASE ".idf_escape($g).($Bb?" ENCODING ".idf_escape($Bb):""));}function
drop_databases(array$f){Connection::get()->close();return
apply_queries("DROP DATABASE",$f,'AdminNeo\idf_escape');}function
rename_database($_,$Bb){Connection::get()->close();return(bool)queries("ALTER DATABASE ".idf_escape(DB)." RENAME TO ".idf_escape($_));}function
auto_increment(){return"";}function
alter_table($Q,$_,array$k,array$ie,$Lb,$pd,$Bb,$Qa,$Di){$Ha=[];$kj=[];if($Q!=""&&$Q!=$_)$kj[]="ALTER TABLE ".table($Q)." RENAME TO ".table($_);$lk="";foreach($k
as$j){$b=idf_escape($j[0]);$W=$j[1];if(!$W)$Ha[]="DROP $b";else{$Em=$W[5];unset($W[5]);if($j[0]==""){if(isset($W[6]))$W[1]=($W[1]==" bigint"?" big":($W[1]==" smallint"?" small":" "))."serial";$Ha[]=($Q!=""?"ADD ":"  ").implode($W);if(isset($W[6]))$Ha[]=($Q!=""?"ADD":" ")." PRIMARY KEY ($W[0])";}else{if($b!=$W[0])$kj[]="ALTER TABLE ".table($_)." RENAME $b TO $W[0]";$Ha[]="ALTER $b TYPE$W[1]";$mk=$Q."_".idf_unescape($W[0])."_seq";$Ha[]="ALTER $b ".($W[3]?"SET".preg_replace('~GENERATED ALWAYS(.*) (STORED|VIRTUAL)~','EXPRESSION\1',$W[3]):(isset($W[6])?"SET DEFAULT nextval(".q($mk).")":"DROP DEFAULT"));if(isset($W[6]))$lk="CREATE SEQUENCE IF NOT EXISTS ".idf_escape($mk)." OWNED BY ".idf_escape($Q).".$W[0]";$Ha[]="ALTER $b ".($W[2]==" NULL"?"DROP NOT":"SET").$W[2];}if($j[0]!=""||$Em!="")$kj[]="COMMENT ON COLUMN ".table($_).".$W[0] IS ".($Em!=""?substr($Em,9):"''");}}$Ha=array_merge($Ha,$ie);if($Q==""){$O="";if($Di){$O=" PARTITION BY {$Di["partition_by"]}({$Di["partition"]})";if($Di["partition_by"]=='HASH'){$Ei=(int)$Di["partitions"];for($p=0;$p<$Ei;$p++)$kj[]="CREATE TABLE ".idf_escape($_."_$p")." PARTITION OF ".idf_escape($_)." FOR VALUES WITH (MODULUS $Ei, REMAINDER $p)";}else{$yb=Connection::get()->isCockroachDB();$bj="MINVALUE";foreach($Di["partition_names"]as$p=>$W){$X=$Di["partition_values"][$p];$zi=" VALUES ".($Di["partition_by"]=='LIST'?"IN ($X)":"FROM ($bj) TO ($X)");if($yb)$O
.=($p?",":" (")."\n  PARTITION ".(preg_match('~^DEFAULT$~i',$W)?$W:idf_escape($W)).$zi;else$kj[]="CREATE TABLE ".idf_escape($_."_$W")." PARTITION OF ".idf_escape($_)." FOR$zi";$bj=$X;}$O
.=$yb?"\n)":"";}}array_unshift($kj,"CREATE TABLE ".table($_)." (\n".implode(",\n",$Ha)."\n)$O");}elseif($Ha)array_unshift($kj,"ALTER TABLE ".table($Q)."\n".implode(",\n",$Ha));if($lk)array_unshift($kj,$lk);if($Lb!==null)$kj[]="COMMENT ON TABLE ".table($_)." IS ".q($Lb);if($Qa!="");foreach($kj
as$G){if(!queries($G))return
false;}return
true;}function
alter_indexes($Q,array$Ha){$gc=[];$Wc=[];$kj=[];foreach($Ha
as$W){if($W[0]!="INDEX")$gc[]=($W[2]=="DROP"?"\nDROP CONSTRAINT ".idf_escape($W[1]):"\nADD".($W[1]!=""?" CONSTRAINT ".idf_escape($W[1]):"")." $W[0] ".($W[0]=="PRIMARY"?"KEY ":"")."(".implode(", ",$W[2]).")");elseif($W[2]=="DROP")$Wc[]=idf_escape($W[1]);else$kj[]="CREATE INDEX ".idf_escape($W[1]!=""?$W[1]:uniqid($Q."_"))." ON ".table($Q).($W[3]?" USING $W[3]":"")." (".implode(", ",$W[2]).")".($W[4]?" WHERE $W[4]":"");}if($gc)array_unshift($kj,"ALTER TABLE ".table($Q).implode(",",$gc));if($Wc)array_unshift($kj,"DROP INDEX ".implode(", ",$Wc));foreach($kj
as$G){if(!queries($G))return
false;}return
true;}function
truncate_tables(array$vl){return(bool)queries("TRUNCATE ".implode(", ",array_map('AdminNeo\table',$vl)));}function
drop_views(array$Nm){return
drop_tables($Nm);}function
drop_tables(array$vl){foreach($vl
as$Q){$O=table_status1($Q);if(!queries("DROP ".strtoupper($O["Engine"])." ".table($Q)))return
false;}return
true;}function
move_tables(array$vl,array$Nm,$Bl){foreach(array_merge($vl,$Nm)as$Q){$O=table_status1($Q);if(!queries("ALTER ".strtoupper($O["Engine"])." ".table($Q)." SET SCHEMA ".idf_escape($Bl)))return
false;}return
true;}function
trigger($_,$Q){if($_=="")return["Statement"=>"EXECUTE PROCEDURE ()"];$c=[];$Z="WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q)." AND trigger_name = ".q($_);foreach(get_rows("SELECT * FROM information_schema.triggered_update_columns $Z")as$J)$c[]=$J["event_object_column"];$dm=[];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$J){if($c&&$J["Event"]=="UPDATE")$J["Event"].=" OF";$J["Of"]=implode(", ",$c);if($dm)$J["Event"].=" OR $dm[Event]";$dm=$J;}return$dm;}function
triggers($Q){$I=[];foreach(get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = ".q($Q))as$J){$dm=trigger($J["trigger_name"],$Q);$I[$dm["Trigger"]]=[$dm["Timing"],$dm["Event"]];}return$I;}function
trigger_options(){return["Timing"=>["BEFORE","AFTER"],"Event"=>["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"=>["FOR EACH ROW","FOR EACH STATEMENT"],];}function
routine($_,$T){$qf=get_rows('SELECT routine_definition, LOWER(external_language) AS language, type_udt_name
FROM information_schema.routines
WHERE routine_schema = current_schema() AND specific_name = '.q($_));$qf=isset($qf[0])?$qf[0]:[];$k=get_rows("SELECT COALESCE(parameter_name, ordinal_position::text) AS field,
	CASE data_type WHEN 'USER-DEFINED' THEN udt_name WHEN 'ARRAY' THEN substr(udt_name, 2) || '[]' ELSE data_type END AS type,
	character_maximum_length AS length, parameter_mode AS inout
FROM information_schema.parameters
WHERE specific_schema = current_schema() AND specific_name = ".q($_)."
ORDER BY ordinal_position");return["fields"=>$k,"returns"=>["type"=>preg_replace('~^_(.*)~','\1[]',isset($qf["type_udt_name"])?$qf["type_udt_name"]:"")],"definition"=>isset($qf["routine_definition"])?$qf["routine_definition"]:null,"language"=>isset($qf["language"])?$qf["language"]:null,"comment"=>null,];}function
routines(){return
get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_name AS "ROUTINE_NAME", routine_type AS "ROUTINE_TYPE", type_udt_name AS "DTD_IDENTIFIER", null AS ROUTINE_COMMENT
FROM information_schema.routines
WHERE routine_schema = current_schema()'.(Connection::get()->isCockroachDB()?'':"
AND substring(specific_name, '[0-9]+\$')::oid NOT IN (SELECT objid FROM pg_catalog.pg_depend WHERE classid = 'pg_proc'::regclass AND deptype = 'e')").'
ORDER BY SPECIFIC_NAME');}function
routine_languages(){return
get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");}function
routine_id($_,array$J){$I=[];foreach($J["fields"]as$j){$u=$j["length"];$I[]=$j["type"].($u?"($u)":"");}return
idf_escape($_)."(".implode(", ",$I).")";}function
last_id($H){$J=$H
instanceof
Result?$H->fetchRow():[];return$J?$J[0]:0;}function
explain(Connection$d,$G){return$d->query("EXPLAIN $G");}function
found_rows(array$R,array$Z){if(preg_match("~ rows=([0-9]+)~",Connection::get()->getValue("EXPLAIN SELECT * FROM ".idf_escape($R["Name"]).($Z?" WHERE ".implode(" AND ",$Z):"")),$Aj))return(int)$Aj[1];return
null;}function
types($Gd=false){return
get_key_vals("SELECT oid, typname
FROM pg_type
WHERE typnamespace = ".Driver::get()->getNsOidSql()."
AND typtype IN ('b','d','e')
AND typelem = 0".($Gd||Connection::get()->isCockroachDB()?'':"
AND oid NOT IN (SELECT objid FROM pg_catalog.pg_depend WHERE classid = 'pg_type'::regclass AND deptype = 'e')"));}function
type_values($q){$sd=get_vals("SELECT enumlabel FROM pg_enum WHERE enumtypid = $q ORDER BY enumsortorder");if(!$sd)return"";return"'".implode("', '",array_map('addslashes',$sd))."'";}function
schemas(){return
get_vals("SELECT nspname FROM pg_namespace ORDER BY nspname");}function
get_schema(){return
Connection::get()->getValue("SELECT current_schema()");}function
set_schema($Xj,$d=null){if(!$d)$d=Connection::get();$H=(bool)$d->query("SET search_path TO ".idf_escape($Xj));Driver::get()->setUserTypes(types(true));return$H;}function
foreign_keys_sql($Q){$I="";$O=table_status1($Q);$Bh=idf_escape($O['nspname']);$de=foreign_keys($Q);ksort($de);foreach($de
as$ce=>$be)$I
.="ALTER TABLE ONLY $Bh.".idf_escape($O['Name'])." ADD CONSTRAINT ".idf_escape($ce)." ".preg_replace('~( REFERENCES )([^(.]+\()~',"\\1$Bh.\\2",$be["definition"]).";\n";return($I?"$I\n":$I);}function
foreign_key_checks_sql($md){return"SET session_replication_role = ".($md?"DEFAULT":"replica").";\n";}function
restart_sequences_sql($Q){$I="";foreach(fields($Q)as$j){if(!$j["auto_increment"]||preg_match('~^unique_rowid\(~',$j["default"]))continue;$lk="pg_get_serial_sequence(".q(table($Q)).", ".q($j["field"]).")";$b=idf_escape($j["field"]);$I
.="SELECT setval($lk, MAX($b)) FROM ".table($Q)." HAVING MAX($b) IS NOT NULL;\n";}return$I;}function
create_sql($Q,$Qa,$Wk){$Jj=[];$nk=[];$O=table_status1($Q);$Bh=idf_escape($O['nspname']);if(is_view($O)){$Lm=view($Q);return
rtrim("CREATE VIEW $Bh.".idf_escape($Q)." AS $Lm[select]",";");}$k=fields($Q);if(count($O)<2||empty($k))return"";$I="CREATE TABLE $Bh.".idf_escape($O['Name'])." (\n    ";foreach($k
as$j){if($j['default']=="nextval('$O[Name]_$j[field]_seq')"){$j['default']=null;$j['full_type']=preg_replace('~int(eger)?~','serial',$j['full_type']);}$xi=idf_escape($j['field']).' '.$j['full_type'].preg_replace('~(nextval\(\')([^.\']+\')~','\1'.str_replace("'","''",$O['nspname']).'.\2',default_value($j)).($j['null']?"":" NOT NULL");$Jj[]=$xi;if(preg_match('~nextval\(\'([^\']+)\'\)~',$j['default'],$z)){$mk=$z[1];$K=get_rows((Connection::get()->isMinVersion("10")?"SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = ".q(idf_unescape($mk)):"SELECT * FROM $mk"),null,"-- ");if($K){$Mk=first($K);$nk[]=($Wk=="DROP+CREATE"?"DROP SEQUENCE IF EXISTS $Bh.$mk;\n":"")."CREATE SEQUENCE $Bh.$mk INCREMENT $Mk[increment_by] MINVALUE $Mk[min_value] MAXVALUE $Mk[max_value]".($Qa&&$Mk['last_value']?" START ".($Mk["last_value"]+1):"")." CACHE $Mk[cache_value];";}}}if(!empty($nk))$I=implode("\n\n",$nk)."\n\n$I";$cj="";foreach(indexes($Q)as$lf=>$r){if($r['type']=='PRIMARY'){$cj=$lf;$Jj[]="CONSTRAINT ".idf_escape($lf)." PRIMARY KEY (".implode(', ',array_map('AdminNeo\idf_escape',$r['columns'])).")";}}foreach(Driver::get()->checkConstraints($Q)as$Ub=>$Xb)$Jj[]="CONSTRAINT ".idf_escape($Ub)." CHECK ($Xb)";$I
.=implode(",\n    ",$Jj)."\n)";$zi=Driver::get()->getPartitionsInfo($O['Name']);if($zi)$I
.="\nPARTITION BY {$zi["partition_by"]}({$zi["partition"]})";$I
.="\nWITH (oids = ".($O['Oid']?'true':'false').");";if($O['Comment'])$I
.="\n\nCOMMENT ON TABLE $Bh.".idf_escape($O['Name'])." IS ".q($O['Comment']).";";foreach($k
as$Pd=>$j){if($j['comment'])$I
.="\n\nCOMMENT ON COLUMN $Bh.".idf_escape($O['Name']).".".idf_escape($Pd)." IS ".q($j['comment']).";";}foreach(get_rows("SELECT indexdef FROM pg_catalog.pg_indexes WHERE schemaname = current_schema() AND tablename = ".q($Q).($cj?" AND indexname != ".q($cj):""),null,"-- ")as$J)$I
.="\n\n$J[indexdef];";return
rtrim($I,';');}function
truncate_sql($Q){return"TRUNCATE ".table($Q);}function
trigger_sql($Q){$O=table_status1($Q);$Nk="";foreach(triggers($Q)as$cm=>$bm){$dm=trigger($cm,$O['Name']);$Nk
.="\nCREATE TRIGGER ".idf_escape($dm['Trigger'])." $dm[Timing] $dm[Event] ON ".idf_escape($O["nspname"]).".".idf_escape($O['Name'])." $dm[Type] $dm[Statement];;\n";}return$Nk;}function
create_database_sql($rc,$Wk=""){$_=idf_escape($rc);$Jb="";if(str_contains($Wk,"CREATE")){if($Wk=="DROP+CREATE")$Jb="DROP DATABASE IF EXISTS $_;\n";$Jb
.="CREATE DATABASE $_;\n";}return$Jb;}function
use_sql($rc,$Wk=""){return'\connect '.idf_escape($rc).";\n";}function
show_variables(){return
get_rows("SHOW ALL");}function
process_list(){return
get_rows("SELECT * FROM pg_stat_activity ORDER BY ".(Connection::get()->isMinVersion("9.2")?"pid":"procpid"));}function
convert_field(array$j){return
null;}function
unconvert_field(array$j,$I){return$I;}function
support($Ld){if($Ld=="processlist")return!Connection::get()->isCockroachDB();elseif($Ld=="materializedview")return
Connection::get()->isMinVersion("9.3");elseif($Ld=="procedure")return
Connection::get()->isMinVersion("11");return
preg_match('~^(check|columns|comment|database|drop_col|dump|descidx|fast_status|indexes|kill|partial_indexes|routine|scheme|sequence|sql|table|trigger|type|variables|view)$~',$Ld);}function
kill_process($W){return
queries("SELECT pg_terminate_backend(".number($W).")");}function
connection_id(){return"SELECT pg_backend_pid()";}function
max_connections(){return(int)Connection::get()->getValue("SHOW max_connections");}}$Qi="adminneo-plugins";if(is_dir($Qi)){foreach(glob("$Qi/*.php")as$m)include_once$m;}function
get_translations($eg){switch($eg){case'en':$Qb=')X/+JaMAp,z0
Y+"&I/g5m.fI,3%v3OjRAYh
SXdB=b??hR,(W^O_sOh[mx^O2qSz5e
%lyV"F/%L>rXI<&/#WhM"XTH~X8:!%_eI%4RYu>j-LG:?iwpJ3N5)({?wx<tMXA1!y|3z=-W63lai&yc"!(X%nM`=qA3Rb.x[CR-t5wW5!F8NVY?|LU(a/j/W]bJdw`]Hj$hEQi`f]"?Ul{BZ]RY*S2p^Xq,U0_*QMz:_Efcv<oc4tCv]BwhNFY6Z<Hxzw6yVofS$<fsni]ycd"ma;*5xCK7^v$fWky,NvM^za7aeG^UXFL28]BRkE>Gx7%T6iPPt6dfI`V3
cH`?omlj(obMXY_T5C;L[di[`M;aFK_o&Yj}^DvxW(&k6>eoFKkD[|?Vs"+).H)[p1BJ47aiY
#KR6p+SD,))He0>yc<JQ?#<mZYp
Y>A!->?qlZU_,-1BKpp&2zVdh_<iQV"]PQ"ecmBrI"`!mq9y_4d`3!Z<x0+l1JA75,pMaY5TO5?<B^d6:y<;ru92!Ai=mNpxFMmbyOEpe+;$6+v8_GO_l)3T)c#fx=:T82c"@`Q5vW^7M"S@9uy2@Lv%%[&iq1,Jn,<UjY?rWGaZcfrD)mUYz$qvP>I7fa,{vM0gs=QwtunalMW`d;<`H"L!fDS@IqA$^M)hO@HIYKSJb}h}"d-ny"aIW;.bV?^-i*-lr[+XS>a}WhnbmcC2xss>LnIGnW@(LRg@aXL7q],K`qf*)AucD_-VVJ
kWDA>sfp"$I>Q8[@qrDGFqSu<=P]<U3)Dci-0bG(Ou[@)XrqaZ3c6I|[OCEP`W0?(X~cKGij7,SUAJ(!
ZS4dKzV+e
^$B|KVY?n9G{:T*vp_m^6+A{>8S<)q,?qn6wp:Xk`y^9Q{i`cn:.3V@kVl:vDQP<Ah0k]f(@k
;w8U-_$saYh_Uh<PCH<y4iZ_rhI!bKTJHa`Vs5"Fu;akF,s
5v#}N&,xu[?>
[[`dYX;0
<eR|n1b_Jh=?bQ_wMbY%?t(:/"PyD8d]g1Nr21Z-5#gBJ/O@I]Ez$A]!wvM
^CJB58CpJ-me,-,7A_&bV.ghQc+G=lx5kNpWalOpSIK6*Rvlbm9rG%qN)8//i]].Bb;5=~3![GCp>gWGM[]?9+n|:PY^)Z,MQ@[jnonctWyJ@+yz="z)2<cIx)@ZgJ5W!>C;A/SEBf77FEIo94#5`Edh1rZb8@z&,c?j&N^mn4%ID?v4/:57j=H4Rc,4hxc`ZMb=C2-K$mk^/mEKh9)]wbAB+N/DN%n[be9#D)NN4Y#gJ[
EA#4X($HDK;)C-ENJQCA"B,-(,y9x^oDM-KFqCE[|sRw&,WcA:d`j%ex
]uLLoZG/p5i.a#!XVh**NVIa6h"r17>%Ki9cw%16exme4qHm7*8/?$w=mrHpaz^z*qH!+
yh7*AU.f8J5lPr#UJ?2;eI9y6X0l@`W0,?/$I<]OfJ[[$
lQ_B@V5t.SWepYtKLpA.*?r;R.XUd2C`_9jQlQ;SZT3&o^2Z=)/cR[5y`./Vk)+h#/J5*".T@SBW(q9x.N[$?NNzD1rJ`6wq!:7h#-PoR(Y[!+rcks<Na4e3Y">sII_$<0XA:1u*`0,d<hb,Z~j0)TdFok8W(P6n"87-![11M&<Y.ls+V}x/e)4BF85<3{5kZdPRtam-p&o.?*CspN!lAdV"9=<B[qG:(3)x1d@7h{lX1~DSUPm`K.`dNSZSrdw^fYt%Z>_olw.#MN;YI2+,qUNx1tTF(EW+"gQCEv6CTXat:0FBA!mICae`Y0coZULC"JP))g:,0a3-wWQ=k[a^pbs20?J&M-OR$[.Qx#U/j-%/SN%B]
nX/1y4UorRLv..fRZ>>#
Y>lPfLrpoh3F*>f7T97WhBhbk=Hr.>i9)Mbg
7f.Iq&@xYxM5!eVR7-55HQ$kv3Lf+P`9P<-5btT<rq;,F(_=5YFcWKo=t]?-4-2vApQD5KIBV$eXVH[ySuj<$vM22qY#X#IGu[hRP(Ug=y_C0g+lW
w*FlDPUa._8_`xiS.PR"da1bF1f2e
Z&;D=owj>
,y0u9T_c2WA`9hX!(Gn=ftt:.n%(grSh38dE../PfBfb7=+Eix!o88-?0W01_#t(An;EjzY/G>m$)ux#kn1m&kDQJ|84)>7$Y$.&I*k=,YqkCccO9P,&*7N[HNeu4
DCC-Vqtg`[
DCWi2y;b[@n=weHYLKa+(1%[6eVjK)8-t`gG9;;>ZGRJ@)+.4/Ef3JrW{_AA`u4G?IRon=Eli
nN]RZnoQ>XJ3S_t5w#Vitl4=h3{9(>Ff`1Cq@SLStMy@
DToyHwZd9_<H;yb&rI.m]nT9YlqW00
};?<R
4eg1a&:nhb@!{+enSJ6p`22_1>sle%U*0jGVBxaFj`5yJGkcE,WZxj.,B?4ge7P`awX4&P#eK^}AquT010j?Z,.r))`B</.Nzn=nmWwKRjK6MAaQMPg+TjO4zOWF]b#Kq6c$$6aPzK5-sD>fyl<>{"8)V,y)gu:oe;l>9Ys_CNtiYMM,#K/h>?rvZenDq406If2)WmY#pNCt<1Nbn`??`=9^([BK`^Y9FtfWP%l?f_~Op_B87Vi1~@4bKt13$V87Ti4.i[1tnf?j7[$UkjWI)jm+.<7B#*?btuQG:bz*$,Ac9vNRb/^N^DW<)-DeuKBLG
05
d45^EtJgT>WZk0jjyXk.3V4tXAZXwpe{JqJb;66TByU>lorht#X#7?G/*_]|?*
^My;C
6gH8:]oo)7?x;,Pt{AOLT[Uc1*OlT6X`}0:.^.aaJ]<1CtMYf0?>#GAvQ>o4tI%EBvt/pTppf"pIl&onCw^b@osFOofF!Zc;5g
$UeSP:Vd,$n+!M^8)66`=:SXD,ICDr%:BO<tv0L~-b#["6
Z(f,ya]8A%XT`M
FI_Eru6V,W_=j";,]}pE[m>PEzk;>6tltHL)g&S^GVu}S6CNL|qkO6)u
[V{sw+phWaj8n,8xEeI8w3
m2X^AJ=_8o*Ley`)HNA!YJjb_W#]HtR$.op0%t;
8VC$k/]c`)7!]Yq2nP]UJ8H:q_.]6K[M?b?x4
2QKR92U<u3MuKLB*st*J.$``jCL0%-XZxd';break;}return
json_decode(decompress_string($Qb),true);}function
get_plural_translation_id($t){$Ri=array('Too many unsuccessful logins, try again in %d minute(s).'=>141,'%d process(es) have been killed.'=>274,'%d query(s) executed OK.'=>196,'Query executed OK, %d row(s) affected.'=>194,'%d row(s) have been imported.'=>281,'Routine has been called, %d row(s) affected.'=>233,'%d row(s)'=>193,'%d byte(s)'=>43,'%d item(s) have been affected.'=>278,);return
isset($Ri[$t])?$Ri[$t]:null;}$am=$_SESSION["translations"];$fg=Locale::get()->getLanguage();if($_SESSION["translations_version"]!=1187325438){$am=[];$_SESSION["translations_version"]=1187325438;}if($_SESSION["translations_language"]!=$fg){$am=[];$_SESSION["translations_language"]=$fg;}if(!$am){$am=get_translations($fg);$_SESSION["translations"]=$am;}Locale::get()->setTranslations($am);$za=null;$mc=false;$_f=null;if(function_exists('\adminneo_instance')){$za=\adminneo_instance();$mc=true;}elseif(file_exists("adminneo-instance.php")){$za=include_once"adminneo-instance.php";$mc=true;}if($mc&&!$za
instanceof
Admin&&!$za
instanceof
Pluginer){$za=null;$vg="href=https://github.com/adminneo-org/adminneo#advanced-customizations ".target_blank();$_f=lang(130,"<b>adminneo-instance.php</b>","<b>adminneo_instance()</b>","Admin::create()")." <a $vg>".lang(1)."</a>";}if(!$za)$za=Admin::create();if($_f)$za->addError($_f);if($Xi!==null&&!isset($_GET["settings"])){$za->getSettings()->updateParameter("lang",$Xi);redirect(remove_from_uri());}if(!defined("AdminNeo\DRIVER")){define("AdminNeo\DRIVER",null);define("AdminNeo\DIALECT",null);}define("AdminNeo\SERVER",DRIVER?$_GET[DRIVER]:null);define("AdminNeo\DB",isset($_GET["db"])?$_GET["db"]:"");define("AdminNeo\BASE_URL",preg_replace('~\?.*~','',relative_uri()));define("AdminNeo\ME",BASE_URL.'?'.(sid()?session_name()."=".urlencode(session_id()).'&':'').(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"])."&":""):''));define("AdminNeo\HOME_URL",BASE_URL?:".");define("AdminNeo\SERVER_HOME_URL",substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1)?:".");if(isset($_GET["set"])){header("Content-Type: text/javascript; charset=utf-8");if(!verify_token()){header("HTTP/1.1 403 Forbidden");exit;}if($_GET["set"]=="navigation-width"){$an=isset($_POST["width"])?$_POST["width"]:"";if($an!=""){$an=min(max((float)$an,Settings::$NavigationWidthMin),Settings::$NavigationWidthMax);Admin::get()->getSettings()->updateParameter("navigationWidth",sprintf("%.2F",$an));}else
Admin::get()->getSettings()->updateParameter("navigationWidth",null);}if($_GET["set"]=="export-settings")Admin::get()->getSettings()->updateParameters(["exportFormat"=>isset($_POST["format"])?$_POST["format"]:"","exportOutput"=>isset($_POST["output"])?$_POST["output"]:"",]);exit;}const
VERSION="5.8.0";function
page_header($S,$eb=[]){if(!headers_sent()&&!array_sum(array_column(ob_get_status(true),"buffer_used")))ini_set("zlib.output_compression","1");page_headers();if(is_ajax()&&Admin::get()->getErrors()){page_messages();exit;}if(!ob_get_level())ob_start(null,4096);$S=strip_tags($S);$uk=$eb!==false&&$eb!==null&&SERVER!=""?" - ".h(Admin::get()->getServerName(SERVER)):"";$wk=strip_tags(Admin::get()->getServiceTitle());$Ql=$S.$uk." - ".($wk!=""?$wk:"AdminNeo");echo'<!DOCTYPE html>
<html lang=\'',Locale::get()->getLanguage(),'\' dir=\'',lang(131),'\' class=\'',lang(131),' nojs\'>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<meta name="robots" content="noindex, nofollow">
	<meta name="viewport" content="width=device-width, initial-scale=1"/>

	<title>',$Ql,'</title>

	';$Eb=validate_color_variant(Admin::get()->getConfig()->getColorVariant());echo"<link rel='stylesheet' href='",link_files("default-$Eb.css",[]),"'>\n";if(!Admin::get()->isLightModeForced())echo"<link rel='stylesheet' ".(!Admin::get()->isDarkModeForced()?"media='(prefers-color-scheme: dark)' ":"")."href='",link_files("default-$Eb-dark.css",[]),"'>\n";$Jl=Admin::get()->getSettings()->getTheme();list($Jl,$Eb)=validate_theme($Jl,$Eb);if($Jl!="default"){echo"<link rel='stylesheet' href='",link_files("$Jl-$Eb.css",[]),"'>\n";if(!Admin::get()->isLightModeForced())echo"<link rel='stylesheet' ".(!Admin::get()->isDarkModeForced()?"media='(prefers-color-scheme: dark)' ":"")."href='",link_files("$Jl-$Eb-dark.css",[]),"'>\n";}foreach(Admin::get()->getCssUrls()as$um){if(strpos($um,"adminneo-dark.css")===0&&!Admin::get()->isDarkModeForced())echo"<link rel='stylesheet' media='(prefers-color-scheme: dark)' href='",h($um),"'>\n";else
echo"<link rel='stylesheet' href='",h($um),"'>\n";}$vh=Admin::get()->getSettings()->getNavigationWidth();echo"<style id='navigation-width'>";if($vh)echo"@media screen and (min-width: 1024px) { :root { --menu-width: ",sprintf("%.2F",$vh),"rem } }";echo"</style>\n",script_src(link_files("main.js",[]));foreach(Admin::get()->getJsUrls()as$um)echo
script_src($um);Admin::get()->printFavicons();Admin::get()->printToHead();echo'</head>
<body>
<script',nonce(),'>
	// The event handlers and the <html> classes are registered by functions.js.
	const offlineMessage = \'',js_escape(lang(132)),'\';
	const thousandsSeparator = \'',js_escape(lang(108)),'\';
</script>


',"<div id='help' class='jush-".DIALECT." jsonly hidden'></div>",script("initHelpPopup();"),'<menu class="access-menu">','<li><a href="#main-content">'.lang(133).'</a></li>','<li><a class="panel-link" href="#navigation-panel">'.lang(134).'</a></li>';if($eb!==null&&DB!=""&&$_GET["ns"]!=="")echo'<li><a class="panel-link" href="#tables">'.lang(135).'</a></li>';echo'</menu>',"<div id='content'>\n","<div class='header'>\n","<button id='open-navigation-button' type='button' class='button light navigation-button' title='",lang(136),"' aria-controls='navigation-panel' aria-expanded='false'>",icon_solo("menu"),"</button>";if($eb!==null){echo'<nav class="breadcrumbs"><ul>',"<li><a href='".h(HOME_URL)."' title='",lang(137),"'>",icon_solo("home"),"</a></li>";$sk=h(Admin::get()->getServerName(SERVER??""));if($eb===false)echo"<li>$sk</li>";else{$w=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);echo"<li><a href='".h($w)."' accesskey='1' title='Alt+Shift+1'>$sk</a></li>";if($_GET["ns"]!=""||(DB!=""&&is_array($eb)))echo'<li><a href="'.h($w."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a></li>';if($eb===true){if($_GET["ns"]!="")echo'<li>'.h($_GET["ns"]).'</li>';else
echo"<li>",h(DB),"</li>";}else{if($_GET["ns"]!="")echo'<li><a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a></li>';foreach($eb
as$t=>$W){if(is_string($t)){$Cc=(is_array($W)?$W[1]:h($W));if($Cc!="")echo"<li><a href='".h(ME."$t=").urlencode(is_array($W)?$W[0]:$W)."'>$Cc</a></li>";}else
echo"<li>$W</li>\n";}}}echo"</ul></nav>";}echo"</div>\n","<div id='main-content'>\n","<h1>$S</h1>\n","<div id='ajaxstatus' role='status' class='jsonly'></div>\n";restart_session();page_messages();$f=&get_session("dbs");if(DB!=""&&$f&&!in_array(DB,$f,true))$f=null;stop_session();define("AdminNeo\PAGE_HEADER",1);ob_flush();flush();}function
validate_color_variant($Eb){list(,$Eb)=validate_theme("default",$Eb);return$Eb;}function
validate_theme($Jl,$Eb){$Kl=get_available_themes();if(isset($Kl[$Jl][$Eb]))return[$Jl,$Eb];if(isset($Kl["default"][$Eb]))return["default",$Eb];reset($Kl["default"]);return["default",key($Kl["default"])];}function
get_available_themes(){return
array('default'=>array('blue'=>true,'green'=>true,'orange'=>true,'purple'=>true,'red'=>true,),);}function
get_theme_titles($Eb){$Kl=get_available_themes();$Rl=[];foreach($Kl
as$Jl=>$Fb){if(isset($Fb[$Eb])?$Fb[$Eb]:false)$Rl[$Jl]=($Jl=="default"?"Neo":ucwords(str_replace("-"," ",$Jl)));}return$Rl;}function
page_headers(){header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");header("X-XSS-Protection: 0");header("X-Content-Type-Options: nosniff");header("Referrer-Policy: origin-when-cross-origin");header("X-Frame-Options: DENY");$jc=["script-src"=>"'self' 'unsafe-inline' 'nonce-".get_nonce()."' 'strict-dynamic'","connect-src"=>"'self' https://api.github.com/repos/adminneo-org/adminneo/releases/latest","frame-src"=>"'self'","object-src"=>"'none'","base-uri"=>"'none'","form-action"=>"'self'",];Admin::get()->updateCspHeader($jc);$Hc=[];foreach($jc
as$Gc=>$Kk)$Hc[]="$Gc $Kk";header("Content-Security-Policy: ".implode("; ",$Hc));Admin::get()->sendHeaders();}function
get_nonce(){static$Ah;if(!$Ah)$Ah=Random::strongKey();return$Ah;}function
page_messages(){$tm=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$ah=isset($_SESSION["messages"][$tm])?$_SESSION["messages"][$tm]:null;if($ah){foreach($ah
as$Wg)echo"<div class='message'>$Wg</div>\n",script("initToggles(qsl('.message'));");unset($_SESSION["messages"][$tm]);}foreach(Admin::get()->getErrors()as$i)echo"<div class='error'>$i</div>\n";}function
page_footer($hh=null){echo"</div>\n","</div>\n","<div id='navigation-panel' class='navigation-panel'>\n","<div class='focus-trap-begin'></div>\n";$ig=isset($_COOKIE["neo_version"])?$_COOKIE["neo_version"]:null;echo"<div class='header'>\n","<button id='close-navigation-button' type='button' class='button light navigation-button' title='",lang(138),"' aria-controls='navigation-panel'>",icon_solo("close"),"</button>",Admin::get()->getServiceTitle()."\n";if($hh!="auth"){echo"<span class='version'>",h(preg_replace('~\\.0(-|$)~','$1',VERSION));if(Admin::get()->getConfig()->isVersionVerificationEnabled()&&$ig&&version_compare(VERSION,$ig)<0)echo"<a id='version' class='version-badge' href='https://www.adminneo.org/download' ".target_blank()." title='".h($ig)."'>",icon_solo("asterisk"),"</a>";echo"</span>\n";if(Admin::get()->getConfig()->isVersionVerificationEnabled()&&!$ig)echo
script("verifyVersion();");}echo"</div>\n";Admin::get()->printNavigation($hh);echo"<div class='footer'>\n","<div class='toolbox'>";if($hh=="auth")language_select();else{$w=h(preg_replace('~\b(db|ns)=[^&]*&~',"",ME)."settings=");echo"<a class='button light' title='",lang(139),"' href='$w'>",icon_solo("settings"),"</a>";}echo"</div>";if($hh!="auth")Admin::get()->printLogout();echo"</div>\n","<div id='navigation-resizer' class='navigation-resizer'></div>\n","<div class='focus-trap-end'></div>\n","</div>\n",script("initNavigation(); initNavigationResizer('".js_escape(ME)."set=navigation-width', '".get_token()."', ".Settings::$NavigationWidthMin.", ".Settings::$NavigationWidthMax.");");}function
int32($qh){while($qh>=2147483648)$qh-=4294967296;while($qh<=-2147483649)$qh+=4294967296;return(int)$qh;}function
long2str(array$V,$Sm){$Qj='';foreach($V
as$W)$Qj
.=pack('V',$W);return$Sm?substr($Qj,0,end($V)):$Qj;}function
str2long($Qj,$Sm){$V=array_values(unpack('V*',str_pad($Qj,4*ceil(strlen($Qj)/4),"\0")));if($Sm)$V[]=strlen($Qj);return$V;}function
xxtea_mx($en,$dn,$al,$Rf){return
int32((($en>>5&0x7FFFFFF)^$dn<<2)+(($dn>>3&0x1FFFFFFF)^$en<<4))^int32(($al^$dn)+($Rf^$en));}function
xxtea_encrypt_string($Ni,$t){$t=array_values(unpack("V*",pack("H*",md5($t))));$V=str2long($Ni,true);$qh=count($V)-1;$en=$V[$qh];$dn=$V[0];$jj=floor(6+52/($qh+1));$al=0;while($jj-->0){$al=int32($al+0x9E3779B9);$cd=$al>>2&3;for($ri=0;$ri<$qh;$ri++){$dn=$V[$ri+1];$ph=xxtea_mx($en,$dn,$al,$t[$ri&3^$cd]);$en=int32($V[$ri]+$ph);$V[$ri]=$en;}$dn=$V[0];$ph=xxtea_mx($en,$dn,$al,$t[$ri&3^$cd]);$en=int32($V[$qh]+$ph);$V[$qh]=$en;}return
long2str($V,false);}function
xxtea_decrypt_string($e,$t){$t=array_values(unpack("V*",pack("H*",md5($t))));$V=str2long($e,false);$qh=count($V)-1;$en=$V[$qh];$dn=$V[0];$jj=floor(6+52/($qh+1));$al=int32($jj*0x9E3779B9);while($al){$cd=$al>>2&3;for($ri=$qh;$ri>0;$ri--){$en=$V[$ri-1];$ph=xxtea_mx($en,$dn,$al,$t[$ri&3^$cd]);$dn=int32($V[$ri]-$ph);$V[$ri]=$dn;}$en=$V[$qh];$ph=xxtea_mx($en,$dn,$al,$t[$ri&3^$cd]);$dn=int32($V[0]-$ph);$V[0]=$dn;$al=int32($al-0x9E3779B9);}return
long2str($V,true);}const
ENCRYPTION_GCM='aes-256-gcm';const
ENCRYPTION_CBC='aes-256-cbc';const
ENCRYPTION_TAG_LENGTH=16;const
ENCRYPTION_HMAC_LENGTH=64;function
generate_iv($u){if(function_exists('random_bytes')){try{return
random_bytes($u);}catch(Exception$cd){}}return
openssl_random_pseudo_bytes($u);}function
hash_key($t){return
substr(hash('sha512',$t,true),0,32);}function
aes_encrypt_string($Ni,$t){$eh=PHP_VERSION_ID>=70100&&in_array(ENCRYPTION_GCM,openssl_get_cipher_methods())?ENCRYPTION_GCM:ENCRYPTION_CBC;$t=hash_key($t);$Mf=generate_iv(openssl_cipher_iv_length($eh)?:16);if($eh==ENCRYPTION_GCM)$wb=openssl_encrypt($Ni,$eh,$t,OPENSSL_RAW_DATA,$Mf,$_l,"",ENCRYPTION_TAG_LENGTH);else{$wb=openssl_encrypt($Ni,$eh,$t,OPENSSL_RAW_DATA,$Mf);$_l=hash_hmac("sha512",$Mf.$wb,$t,true);}if($wb===false)return
false;return$Mf.$_l.$wb;}function
aes_decrypt_string($e,$t){$eh=PHP_VERSION_ID>=70100&&in_array(ENCRYPTION_GCM,openssl_get_cipher_methods())?ENCRYPTION_GCM:ENCRYPTION_CBC;$Nf=openssl_cipher_iv_length($eh)?:16;$Al=$eh==ENCRYPTION_GCM?ENCRYPTION_TAG_LENGTH:ENCRYPTION_HMAC_LENGTH;if(strlen($e)<$Nf+$Al)return
false;$t=hash_key($t);$Mf=substr($e,0,$Nf);$_l=substr($e,$Nf,$Al);$wb=substr($e,$Nf+$Al);if($Mf===false||$_l===false||$wb===false)return
false;if($eh==ENCRYPTION_GCM)return
openssl_decrypt($wb,$eh,$t,OPENSSL_RAW_DATA,$Mf,$_l);else{$Ue=hash_hmac('sha512',$Mf.$wb,$t,true);if(!hash_equals($_l,$Ue))return
false;return
openssl_decrypt($wb,$eh,$t,OPENSSL_RAW_DATA,$Mf);}}function
encrypt_string($Ni,$t){if($Ni=="")return"";if(extension_loaded('openssl'))return
aes_encrypt_string($Ni,$t);else
return
xxtea_encrypt_string($Ni,$t);}function
decrypt_string($e,$t){if($e=="")return"";if(extension_loaded('openssl'))return
aes_decrypt_string($e,$t);else
return
xxtea_decrypt_string($e,$t);}$Li=[];if($_COOKIE["neo_permanent"]){foreach(explode(" ",$_COOKIE["neo_permanent"])as$W){list($t)=explode(":",$W);$Li[$t]=$W;}}function
validate_server_input(array&$Li){$M=preg_replace('~:/[-\w.][-\w.:/]*$~D',"",SERVER);if($M=="")return;if(!preg_match('~^[^:]+://~',$M))$M="https://$M";$Gi=parse_url($M);if(!$Gi)auth_error($Li);if(isset($Gi['user'])||isset($Gi['pass'])||isset($Gi['query'])||isset($Gi['fragment']))auth_error($Li);if(isset($Gi['scheme'])&&!preg_match('~^(https?)$~i',$Gi['scheme']))auth_error($Li);$Xe=$Gi['host'].(isset($Gi['path'])?$Gi['path']:'');if(!is_server_host_valid($Xe))auth_error($Li);if(isset($Gi['port'])&&($Gi['port']<1024||$Gi['port']>65535))auth_error($Li,lang(140));}if(!function_exists('AdminNeo\is_server_host_valid')){function
is_server_host_valid($Xe){return
strpos($Xe,'/')===false;}}function
build_http_url($M,$U,$E,$yc,$xc=null){if(!preg_match('~^(https?://)?([^:]*)(:\d+)?$~',rtrim($M,'/'),$z))return
null;return($z[1]?:"http://").($U!==""||$E!==""?urlencode($U).":".urlencode($E)."@":"").($z[2]!==""?$z[2]:$yc).(isset($z[3])?$z[3]:($xc?":$xc":""));}function
add_invalid_login(){$Ya=get_temp_dir()."/adminneo-invalid";$l=null;foreach(glob("$Ya*")?:[$Ya]as$m){$l=open_file_with_lock($m);if($l)break;}if(!$l){$l=open_file_with_lock("$Ya-".Random::strongKey());if(!$l)return;}$Bf=json_decode(stream_get_contents($l),true);$Ml=time();if($Bf){foreach($Bf
as$Cf=>$W){if($W[0]<$Ml)unset($Bf[$Cf]);}}$Af=&$Bf[Admin::get()->getBruteForceKey()];if(!$Af)$Af=[$Ml+30*60,0];$Af[1]++;write_and_unlock_file($l,json_encode($Bf));}function
check_invalid_login(array&$Li){$Ya=get_temp_dir()."/adminneo-invalid";$Bf=[];foreach(glob("$Ya*")as$m){$l=open_file_with_lock($m);if($l){$Bf=json_decode(stream_get_contents($l),true);unlock_file($l);break;}}$Af=($Bf?$Bf[Admin::get()->getBruteForceKey()]:[]);$zh=($Af&&$Af[1]>29?$Af[0]-time():0);if($zh>0)auth_error($Li,lang(141,ceil($zh/60)));}function
connect_to_db(array&$Li){if(Admin::get()->getConfig()->hasServers()&&!Admin::get()->getConfig()->getServer(SERVER))auth_error($Li);$d=connect(true,$i);if(!$d)connection_error(nl2br(h($i)),$Li);return$d;}function
authenticate(array&$Li){$H=Admin::get()->authenticate($_GET["username"],get_password());if($H!==true)connection_error($H,$Li);}function
connection_error($i,array&$Li){$i=$i?:lang(3);if(preg_match('~^ +| +$~',get_password()))$i
.="<br>".lang(142);auth_error($Li,$i);}Admin::get()->init();$Oa=isset($_POST["auth"])?$_POST["auth"]:null;if($Oa){session_regenerate_id();$M=isset($Oa["server"])?$Oa["server"]:"";$tk=Admin::get()->getConfig()->getServer($M);$Tc=$tk?$tk->getDriver():(isset($Oa["driver"])?$Oa["driver"]:"");$M=$tk?$M:trim($M);$U=isset($Oa["username"])?$Oa["username"]:"";$E=isset($Oa["password"])?$Oa["password"]:"";if($tk&&$tk->hasCredentials()&&$U==""&&$E==""){$U=$tk->getUsername();$E=$tk->getPassword();}$g=$tk?$tk->getDatabase():(isset($Oa["db"])?$Oa["db"]:"");save_login($Tc,$M,$U,$E,$g);if($Oa["permanent"]){$t=implode("-",array_map("base64_encode",[$Tc,$M,$U,$g]));$ej=Admin::get()->getPrivateKey(true);$od=$ej?encrypt_string($E,$ej):false;$Li[$t]="$t:".base64_encode($od?:"");cookie("neo_permanent",implode(" ",$Li));}if(count($_POST)==1||DRIVER!=$Tc||SERVER!=$M||$_GET["username"]!==$U||DB!=$g)redirect(auth_url($Tc,$M,$U,$g));}elseif($_POST["logout"]&&(!$_SESSION["token"]||verify_token())){foreach(["pwds","db","dbs","queries"]as$t)set_session($t,null);unset_permanent($Li);redirect(SERVER_HOME_URL,lang(143));}elseif($Li&&!$_SESSION["pwds"]){session_regenerate_id();$ej=Admin::get()->getPrivateKey();foreach($Li
as$t=>$W){list(,$vb)=explode(":",$W);list($Tc,$M,$U,$g)=array_map("base64_decode",explode("-",$t));$E=$ej?decrypt_string(base64_decode($vb),$ej):false;save_login($Tc,$M,$U,$E,$g);}}function
unset_permanent(array&$Li){foreach($Li
as$t=>$W){list($Tc,$M,$U,$g)=array_map("base64_decode",explode("-",$t));if($Tc==DRIVER&&$M==SERVER&&$U==$_GET["username"]&&$g==DB)unset($Li[$t]);}cookie("neo_permanent",implode(" ",$Li));}function
auth_error(array&$Li,$i=null){$xk=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$xk]||$_GET[$xk])&&!$_SESSION["token"])$i=lang(144);else{restart_session();add_invalid_login();$E=get_password();if($E!==null){if($E===false)$i=lang(145);delete_login(DRIVER,SERVER,$_GET["username"]);}unset_permanent($Li);}}if(!$_COOKIE[$xk]&&$_GET[$xk]&&ini_bool("session.use_only_cookies"))$i=lang(146);if(!$i)$i=lang(3);Admin::get()->addError($i);print_login_page();}function
print_login_page(){$ui=session_get_cookie_params();cookie("neo_key",($_COOKIE["neo_key"]?:Random::strongKey()),$ui["lifetime"]);if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);page_header(lang(32),null);echo"<form action='' method='post'>\n","<div>";if(print_hidden_fields($_POST,["auth"]))echo"<p class='message'>".lang(147)."\n";echo"</div>\n";Admin::get()->printLoginForm();echo"</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])&&!DRIVER)print_login_page();if(isset($_GET["username"])&&!defined('AdminNeo\DRIVER_EXTENSION')){Admin::get()->addError(lang(148,implode(", ",Drivers::getExtensions(DRIVER))));unset($_SESSION["pwds"][DRIVER]);unset_permanent($Li);page_header(lang(149),false);page_footer("auth");exit;}if(!isset($_GET["username"])||get_password()===null)print_login_page();validate_server_input($Li);check_invalid_login($Li);Admin::get()->getConfig()->applyServer(SERVER);$d=connect_to_db($Li);authenticate($Li);create_driver($d);if($_POST["logout"]&&$_SESSION["token"]&&!verify_token()){Admin::get()->addError(lang(150));page_header(lang(7));page_footer("db");exit;}if(!$_SESSION["token"])$_SESSION["token"]=rand(1,1e6);stop_session(true);if($Oa&&$_POST["token"])$_POST["token"]=get_token();if($_POST){if(!verify_token()){Admin::get()->addError(lang(150).' '.lang(151));$_POST=[];}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$i=lang(152,"'post_max_size'");if(isset($_GET["sql"]))$i
.=' '.lang(153);Admin::get()->addError($i);}if(isset($_GET["settings"])){$N=Admin::get()->getSettings();$_k=array_merge(Admin::get()->getSettingsRows(1),Admin::get()->getSettingsRows(2),Admin::get()->getSettingsRows(3));if($_POST){$ui=[];foreach($_k
as$t=>$J){if(isset($_POST[$t])){$wm=$_POST[$t]===""||(is_array($_POST[$t])&&in_array("",$_POST[$t]));$ui[$t]=(!$wm?$_POST[$t]:null);}}$N->updateParameters($ui);redirect(remove_from_uri());}$S=lang(139);page_header($S,[$S]);echo"<form id='settings' action='' method='post'>\n","<table class='box'>\n";foreach($_k
as$J)echo$J;echo"</table>\n","<p>","<input type='submit' value='".lang(116),"' class='button default hidden'>",input_token(),"</p>\n","</form>\n",script("initSettingsForm();");page_footer();exit;}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(DB==""&&isset($_GET["ns"]))redirect(remove_from_uri('ns'));if(!(DB!=""?Connection::get()->selectDatabase(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!=""){Admin::get()->addError(lang(154));header("HTTP/1.1 404 Not Found");page_header(lang(31).": ".h(DB),true);}else{if($_POST["db"])queries_redirect(substr(ME,0,-1),lang(155),drop_databases($_POST["db"]));$S=h(Drivers::get(DRIVER).": ".Admin::get()->getServerName(SERVER));page_header($S,false);$wg=['privileges'=>[lang(156),"users"],'processlist'=>[lang(157),"list"],'variables'=>[lang(158),"variable"],'status'=>[lang(159),"status"],];$xg="";foreach($wg
as$t=>$W){if(support($t))$xg
.="<a href='".h(ME)."$t='>".icon($W[1])."$W[0]</a>";}if($xg)echo"<p class='links top-links'>$xg</p>\n";echo"<p>".lang(160,Drivers::get(DRIVER),"<b>".h(Connection::get()->getVersion())."</b>","<b>".DRIVER_EXTENSION."</b>")."\n","<p>".lang(161,"<b>".h(logged_user())."</b>")."\n";$f=Admin::get()->getDatabases();if($f){$Zj=support("scheme");$Ea=collations();echo"<form action='' method='post'>\n","<div class='table-footer-parent'>\n","<div class='scrollable'>\n","<table class='checkable'>\n","<thead><tr>".(support("database")?"<th>":"")."<th aria-sort='ascending'>".lang(31).(get_session("dbs")!==null?" - <a href='".h(ME)."refresh=1'>".lang(162)."</a>":"")."<td>".lang(46)."<td>".lang(163)."<td>".lang(164)." - <a href='".h(ME)."dbsize=1'>".lang(165)."</a>".script("qsl('a').onclick = partial(ajaxSetHtml, '".js_escape(ME)."script=connect');","")."</thead>\n","<tbody>\n";$f=($_GET["dbsize"]?count_tables($f):array_flip($f));foreach($f
as$g=>$vl){$Lj=h(ME)."db=".urlencode($g);$q=h("Db-".$g);echo"<tr>".(support("database")?"<th class='actions'>".checkbox("db[]",$g,in_array($g,(array)$_POST["db"]),"","","",$q):""),"<th><a href='$Lj' id='$q'>".h($g)."</a>";$Bb=h(db_collation($g,$Ea));echo"<td>".(support("database")?"<a href='$Lj".($Zj?"&amp;ns=":"")."&amp;database=' title='".lang(70)."'>$Bb</a>":$Bb),"<td align='right'><a href='$Lj&amp;schema=' id='tables-".h($g)."' title='".lang(72)."'>".($_GET["dbsize"]?$vl:"?")."</a>","<td align='right' id='size-".h($g)."'>".($_GET["dbsize"]?db_size($g):"?"),"\n";}echo"</tbody>\n",script("mixin(qsl('tbody'), {onclick: tableClick, ondblclick: event => tableClick(event, true)});"),"</table>\n","</div>\n";if(support("database"))echo"<div class='table-footer'><div class='field-sets'>\n","<fieldset><legend>",lang(166)," <span id='selected'></span></legend><div class='fieldset-content'>\n",input_hidden("all"),script("qsl('input').onclick = countDbs;"),"<input type='submit' class='button' name='drop' value='",lang(167),"'>",confirm(),"\n","</div></fieldset>\n","</div></div>\n",script("initTableFooter()");echo"</div>\n",input_token(),"</form>\n",script("tableCheck();");}}echo'<p class="links"><a href="'.h(ME).'database=">'.icon("database-add").lang(75)."</a>\n";page_footer("db");exit;}if(support("scheme")){if(DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~(?<=[?&])db=[^&]+~','\\0&ns='.urlencode(get_schema()),relative_uri()));if(!set_schema($_GET["ns"])){Admin::get()->addError(lang(168));header("HTTP/1.1 404 Not Found");page_header(lang(81).": ".h($_GET["ns"]),true);page_footer("ns");exit;}}}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"];$k=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$L=[idf_escape($_GET["field"])];$H=Driver::get()->select($a,$L,[where($_GET,$k)],$L);$J=($H?$H->fetchRow():[]);echo
Connection::get()->formatValue($J[0],$k[$_GET["field"]]);exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$k=fields($a);if(!$k)Admin::get()->addError(error()?:lang(78));$R=table_status1($a,true);$_=Admin::get()->getTableName($R);$Kj=[];foreach($k
as$t=>$j)$Kj+=$j["privileges"];$S=$k&&is_view($R)?$R['Engine']=='materialized view'?lang(169):lang(170):lang(9);$ol=$_!=""?$_:h($a);page_header("$S: $ol",[$ol]);$yf=null;if(isset($Kj["insert"])||!support("table"))$yf=[];Admin::get()->printTableMenu($R,$yf);$qf=[];if(!preg_match("~sqlite|mssql|pgsql~",DIALECT)&&isset($R["Engine"]))$qf[]=lang(171).": ".h($R["Engine"]);if(isset($R["Collation"]))$qf[]=lang(46).": ".h($R["Collation"]);if($qf)echo"<p>",implode(", ",$qf),"</p>";if($k)Admin::get()->printTableStructure($k);$Lb=$R["Comment"];if($Lb!="")echo"<p class='keep-lines'>",lang(47),": ",Admin::get()->formatComment($Lb),"</p>\n";if(!is_view($R))$ed='<p class="links"><a href="'.h(ME).'create='.urlencode($a).'">'.icon("edit").lang(36)."</a>\n";elseif(support("view"))$ed='<p class="links"><a href="'.h(ME).'view='.urlencode($a).'">'.icon("edit").lang(37)."</a>\n";else$ed="";if($qf||$k||$Lb!="")echo$ed;$vi=Driver::get()->getParentTables($a);if($vi){echo"<h2>".lang(172)."</h2>\n";Admin::get()->printRelatedTables($vi);}if(Driver::get()->getPartitionBy()&&str_contains(isset($R["Create_options"])?$R["Create_options"]:"","partitioned")){$Fi=Driver::get()->getPartitionsInfo($a);if($Fi){echo"<h2 id='partitions'>".lang(50)."</h2>\n";Admin::get()->printTablePartitions($Fi);if(DIALECT!="pgsql")echo$ed;}}$rf=Driver::get()->getInheritedTables($a);if($rf){echo"<h2 id='inherited-by'>".lang(173)."</h2>\n";Admin::get()->printRelatedTables($rf);}if(support("indexes")&&Driver::get()->supportsIndex($R)){echo"<h2 id='indexes'>".lang(174)."</h2>\n";$s=indexes($a);if($s)Admin::get()->printTableIndexes($s,$R);echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.icon("edit").lang(175)."</a>\n";}if(!is_view($R)){if(fk_support($R)){echo"<h2 id='foreign-keys'>".lang(92)."</h2>\n";$ke=foreign_keys($a);if($ke){echo"<table>\n","<thead><tr><th>".lang(176)."<td>".lang(177)."<td>".lang(95)."<td>".lang(94)."<td></thead>\n";foreach($ke
as$_=>$n)echo"<tr title='".h($_)."'>","<th><i>".implode("</i>, <i>",array_map('AdminNeo\h',$n["source"]))."</i>","<td><a href='".h($n["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($n["db"]),ME):($n["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($n["ns"]),ME):ME))."table=".urlencode($n["table"])."'>".($n["db"]!=""&&$n["db"]!=DB?"<b>".h($n["db"])."</b>.":"").($n["ns"]!=""&&$n["ns"]!=$_GET["ns"]?"<b>".h($n["ns"])."</b>.":"").h($n["table"])."</a>","(<i>".implode("</i>, <i>",array_map('AdminNeo\h',$n["target"]))."</i>)","<td>".h($n["on_delete"]),"<td>".h($n["on_update"]),'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($_)).'">'.lang(178).'</a>',"\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.icon("add").lang(179)."</a>\n";}if(support("check")){echo"<h2 id='checks'>".lang(180)."</h2>\n";$pb=Driver::get()->checkConstraints($a);if($pb){echo"<table cellspacing='0'>\n";foreach($pb
as$t=>$W)echo"<tr title='".h($t)."'>","<td><code class='jush-".DIALECT."'>".truncate_utf8(preg_replace('~\s+~',' ',ltrim($W))),"<td><a href='".h(ME.'check='.urlencode($a).'&name='.urlencode($t))."'>".lang(178)."</a>","\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'check='.urlencode($a).'">'.icon("add").lang(181)."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h2 id='triggers'>".lang(182)."</h2>\n";$fm=triggers($a);if($fm){echo"<table>\n";foreach($fm
as$t=>$W)echo"<tr><td>".h($W[0])."<td>".h($W[1])."<th>".h($t)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($t))."'>".lang(178)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.icon("add").lang(183)."</a>\n";}}elseif(isset($_GET["schema"])){$Pl=h(": ".DB.($_GET["ns"]?".$_GET[ns]":""));page_header(lang(72).$Pl,[lang(72)]);$rl=[];$sl=[];$Qd=[];$oa=($_GET["schema"]?:$_COOKIE["neo_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$oa,$z,PREG_SET_ORDER);foreach($z
as$y){$rl[$y[1]]=[(float)$y[2],(float)$y[3]];$sl[]="\n'".js_escape($y[1])."': [ $y[2], $y[3] ]";}$tg=1.4;$Vl=0;$Xa=-1;$Xj=[];$yj=[];$lg=[];$Fa=Driver::get()->getAllFields();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$F=0;$Xj[$Q]["fields"]=[];foreach(isset($Fa[$Q])?$Fa[$Q]:[]as$j){$F=round($F+$tg,2);$Qd[$Q][$j["field"]]=$F;$Xj[$Q]["fields"][$j["field"]]=$j;}$Xj[$Q]["pos"]=(isset($rl[$Q])?$rl[$Q]:[$Vl,0]);foreach(Admin::get()->getForeignKeys($Q)as$W){if(!$W["db"]){$jg=$Xa;if((isset($rl[$Q][1])?$rl[$Q][1]:0)||(isset($rl[$W["table"]][1])?$rl[$W["table"]][1]:0))$jg=min(floatval(isset($rl[$Q][1])?$rl[$Q][1]:0),floatval(isset($rl[$W["table"]][1])?$rl[$W["table"]][1]:0))-1;else$Xa-=.1;while($lg[(string)$jg])$jg-=.0001;$Xj[$Q]["references"][$W["table"]][(string)$jg]=[$W["source"],$W["target"]];$yj[$W["table"]][$Q][(string)$jg]=$W["target"];$lg[(string)$jg]=true;}}$Vl=max($Vl,round($Xj[$Q]["pos"][0]+$tg+$F+1,2));}echo"<div id='schema' style='height: {$Vl}em;'>\n";foreach($Xj
as$_=>$Q){$Oe=round($tg+count($Q["fields"])*$tg+0.4,2);echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em; height: {$Oe}em;'>","<div class='content'>",'<h4><a href="'.h(ME).'table='.urlencode($_).'">'.h($_)."</a></h4>","<ul>";foreach($Q["fields"]as$j){$W='<span '.type_class($j["type"]).' title="'.h($j["type"].($j["length"]?"($j[length])":"").($j["null"]?" NULL":'')).'">'.h($j["field"]).'</span>';echo"<li>".($j["primary"]?"<i>$W</i>":$W)."</li>";}echo"</ul>","</div>";foreach((array)$Q["references"]as$Cl=>$_j){foreach($_j
as$jg=>$uj){$kg=$jg-(isset($rl[$_][1])?$rl[$_][1]:0);$p=0;foreach($uj[0]as$Jk){echo"\n<div class='references outgoing' title='",h($Cl),"' id='refs$jg-$p' style='left: {$kg}em; top: ",$Qd[$_][$Jk],"em;'>","<div style='width: ".(-$kg)."em;'></div>","</div>";$p++;}}}foreach((array)$yj[$_]as$Cl=>$_j){foreach($_j
as$jg=>$c){$kg=$jg-(isset($rl[$_][1])?$rl[$_][1]:0);$p=0;foreach($c
as$Bl){echo"\n<div class='references incoming' title='",h($Cl),"' id='refd$jg-$p' style='left: {$kg}em; top: ".$Qd[$_][$Bl]."em;'>","<svg viewBox='0 0 22 22' fill='currentColor'><path d='M11,19l10,-8l-10,-8l0,16Z'/></svg>","<div style='width: ".(-$kg)."em;'></div>","</div>";$p++;}}}echo"\n</div>\n";}foreach($Xj
as$_=>$Q){foreach((array)$Q["references"]as$Cl=>$_j){if($Xj[$Cl]){foreach($_j
as$jg=>$uj){$gh=$Vl;$Og=-10;foreach($uj[0]as$t=>$Jk){$Ti=$Q["pos"][0]+$Qd[$_][$Jk];$Ui=$Xj[$Cl]["pos"][0]+$Qd[$Cl][$uj[1][$t]];$gh=round(min($gh,$Ti,$Ui),2);$Og=round(max($Og,$Ti,$Ui),2);}echo"<div class='references vertical' id='refl$jg' style='left: $jg"."em; top: $gh"."em;'>"."<div style='height: ".round($Og-$gh,2)."em;'></div></div>\n";}}}}echo"</div>\n",script("initSchema('".js_escape(DB)."', $Vl, {".implode(",",$sl)."})"),"<p class='links'>","<a href='",(ME."schema=".urlencode($oa)),"' id='schema-link'>",lang(184),"</a>","</p>\n";}elseif(isset($_GET["dump"])){$a=$_GET["dump"];$N=Admin::get()->getSettings();if($_POST){$N->updateParameters(["dumpFormat"=>$_POST["format"],"dumpDbStyle"=>$_POST["db_style"],"dumpTypes"=>isset($_POST["types"])?$_POST["types"]:(support("type")?"":null),"dumpRoutines"=>isset($_POST["routines"])?$_POST["routines"]:(support("routine")?"":null),"dumpEvents"=>isset($_POST["events"])?$_POST["events"]:(support("event")?"":null),"dumpTableStyle"=>$_POST["table_style"],"dumpAutoIncrement"=>isset($_POST["auto_increment"])?$_POST["auto_increment"]:"","dumpTriggers"=>isset($_POST["triggers"])?$_POST["triggers"]:(support("trigger")?"":null),"dumpDataStyle"=>$_POST["data_style"],"dumpOutput"=>$_POST["output"],]);if(DB!="")$f=[DB];else{$f=isset($_POST["databases"])?$_POST["databases"]:[];if(is_string($f))$f=explode("\n",rtrim(str_replace("\r","",$f),"\n"));}$Yj=isset($_POST["schemas"])?$_POST["schemas"]:[];$vl=array_flip(isset($_POST["tables"])?$_POST["tables"]:[])+array_flip(isset($_POST["data"])?$_POST["data"]:[]);if(count($vl)==1)$bf=key($vl);elseif(count($Yj)==1)$bf=$Yj[0];elseif(count($f)==1)$bf=$f[0];else$bf=Admin::get()->getServerName(SERVER,true,"server");$Ed=dump_headers($bf,DB==""||$_GET["ns"]===""||count($vl)>1);$Kf=preg_match('~sql~',$_POST["format"]);$pc=$Kf&&$_POST["data_style"]&&!$_POST["table_style"]&&DIALECT!="sql";if($Kf){echo"-- AdminNeo ".VERSION." ".Drivers::get(DRIVER)." ".Connection::get()->getVersion()." dump\n\n";if(DIALECT=="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::get()->query("SET time_zone = '+00:00'");Connection::get()->query("SET sql_mode = ''");}}$Wk=$_POST["db_style"];foreach($f
as$g){Admin::get()->dumpDatabase($g);if(Connection::get()->selectDatabase($g)){if($Kf){if($Wk)echo
create_database_sql($g,$Wk),use_sql($g,$Wk)."\n";$oi="";if($_POST["types"]){foreach(types()as$q=>$T){$sd=type_values($q);if($sd)$oi
.=($Wk!='DROP+CREATE'?"DROP TYPE IF EXISTS ".idf_escape($T).";;\n":"")."CREATE TYPE ".idf_escape($T)." AS ENUM ($sd);\n\n";else$oi
.="-- Could not export type $T\n\n";}}if($_POST["routines"]){foreach(routines()as$J){$_=$J["ROUTINE_NAME"];$Mj=$J["ROUTINE_TYPE"];$gc=create_routine($Mj,["name"=>$_]+routine($J["SPECIFIC_NAME"],$Mj));set_utf8mb4($gc);$oi
.=($Wk!='DROP+CREATE'?"DROP $Mj IF EXISTS ".idf_escape($_).";;\n":"")."$gc;\n\n";}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$J){$gc=remove_definer(Connection::get()->getValue("SHOW CREATE EVENT ".idf_escape($J["Name"]),3));set_utf8mb4($gc);$oi
.=($Wk!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($J["Name"]).";;\n":"")."$gc;;\n\n";}}echo($oi&&DIALECT=='sql'?"DELIMITER ;;\n\n$oi"."DELIMITER ;\n\n":$oi);}if($_POST["table_style"]||$_POST["data_style"]){foreach(($_GET["ns"]===""?(array)$_POST["schemas"]:(DB!=""||!support("scheme")?[""]:Admin::get()->getSchemas(true)))as$Xj){if($Xj!="")set_schema($Xj);$yl=table_status('',true);$pl=array_keys($yl);$Ic=false;if($pc&&$pl){$zj=[];foreach($pl
as$_){if(!is_view($yl[$_])&&(DB==""||$_GET["ns"]===""||in_array($_,(array)$_POST["data"]))){foreach(foreign_keys($_)as$n)$zj[$_][]=$n["table"];}}$di=dump_table_order($pl,$zj);if($di)$pl=$di;else$Ic=function_exists('AdminNeo\foreign_key_checks_sql');}if($Ic)echo
foreign_key_checks_sql(false)."\n";$Nm=[];foreach($pl
as$_){$R=$yl[$_];$Q=(DB==""||$_GET["ns"]===""||in_array($_,(array)$_POST["tables"]));$e=(DB==""||$_GET["ns"]===""||in_array($_,(array)$_POST["data"]));if($Q||$e){$Sl=null;if($Ed=="tar"){$Sl=new
TmpFile();ob_start([$Sl,'write'],1e5);}$hc=($Q?$_POST["table_style"]:"");Admin::get()->dumpTable($_,$hc,(is_view($R)?2:0));if(is_view($R)&&$Ed!="tar")$Nm[]=$_;elseif($e){$k=fields($_);Admin::get()->dumpData($_,$_POST["data_style"],"SELECT *".convert_fields($k,$k)." FROM ".table($_));if($Kf&&!$hc&&$_POST["auto_increment"]&&function_exists('AdminNeo\restart_sequences_sql'))echo"\n".restart_sequences_sql($_);}if($Kf&&$_POST["triggers"]&&$Q&&($fm=trigger_sql($_)))echo"\nDELIMITER ;;\n$fm\nDELIMITER ;\n";if($Ed=="tar"){ob_end_flush();tar_file((DB!=""?"":"$g/")."$_.csv",$Sl);}elseif($Kf)echo"\n";}}if($Ic)echo
foreign_key_checks_sql(true)."\n";if($_POST["table_style"]&&function_exists('AdminNeo\foreign_keys_sql')){foreach($yl
as$_=>$R){$Q=(DB==""||$_GET["ns"]===""||in_array($_,(array)$_POST["tables"]));if($Q&&!is_view($R))echo
foreign_keys_sql($_);}}foreach($Nm
as$Lm)Admin::get()->dumpTable($Lm,$_POST["table_style"],1);if($Ed=="tar")echo
pack("x512");}}}}if($Kf)echo"-- ".gmdate("Y-m-d H:i:s e")."\n";exit;}$_=DB!=""?h(DB):h(Admin::get()->getServerName(SERVER));page_header(lang(74).": $_",($_GET["export"]!=""?["table"=>$_GET["export"]]:[lang(74)]));echo"<form action='' method='post'>\n","<table class='box'>\n";$tc=['','USE','DROP+CREATE','CREATE'];$ul=['','DROP+CREATE','CREATE'];$qc=['','TRUNCATE+INSERT','INSERT'];if(DIALECT=="sql")$qc[]='INSERT+UPDATE';echo"<tr><th>",lang(185),"</th><td>",html_radios("format",Admin::get()->getDumpFormats(),$N->getParameter("dumpFormat","sql")),"</td></tr>\n";if(DIALECT!="sqlite"){echo"<tr><th id='label-db'>",lang(31),"</th>","<td>",html_select('db_style',$tc,$N->getParameter("dumpDbStyle",DB==""?"CREATE":""),"","label-db"),"<span class='labels'>";if(support("type"))echo
checkbox("types",1,$N->getParameter("dumpTypes"),lang(110));if(support("routine"))echo
checkbox("routines",1,$N->getParameter("dumpRoutines",$_GET["dump"]==""?"1":""),lang(186));echo"</span></td></tr>";}echo"<tr><th id='label-tables'>",lang(163),"</th><td>",html_select('table_style',$ul,$N->getParameter("dumpTableStyle","DROP+CREATE"),"","label-tables")," <span class='labels'>",checkbox("auto_increment",1,$N->getParameter("dumpAutoIncrement"),lang(48));if(support("trigger"))echo
checkbox("triggers",1,$N->getParameter("dumpTriggers","1"),lang(182));echo"</span></td></tr>","<tr><th id='label-data'>",lang(187),"</th><td>",html_select("data_style",$qc,$N->getParameter("dumpDataStyle","INSERT"),"","label-data"),"</td></tr>","<tr><th>",lang(188),"</th><td>",html_radios("output",Admin::get()->getDumpOutputs(),$N->getParameter("dumpOutput","file")),"</td></tr>\n","</table>\n","<p>","<input type='submit' class='button default' value='",lang(74),"'>",input_token(),"</p>\n","<table>\n",script("qsl('table').onclick = dumpClick;");$Zi=[];if(DB!=""&&$_GET["ns"]===""){echo"<thead><tr><th>","<label class='block'><input type='checkbox' id='check-schemas' checked class='jsonly' title='".lang(189)."'>".lang(81)."</label>".script("gid('check-schemas').onclick = partial(formCheck, /^schemas\\[/);",""),"</thead>\n";foreach(Admin::get()->getSchemas()as$Xj){if(!information_schema(DB,$Xj))echo"<tr><td>".checkbox("schemas[]",$Xj,true,$Xj,"","block")."\n";}}elseif(DB!=""){$sb=($a!=""?"":" checked");echo"<thead><tr>","<th><label class='block'><input type='checkbox' id='check-tables'$sb class='jsonly' title='".lang(189)."'>".lang(9)."</label>".script("gid('check-tables').onclick = partial(formCheck, /^tables\\[/);",""),"<th class='right'><label class='block'>".lang(187)."<input type='checkbox' id='check-data'$sb class='jsonly' title='".lang(189)."'></label>".script("gid('check-data').onclick = partial(formCheck, /^data\\[/);",""),"</thead>\n";$Nm="";$xl=tables_list();foreach($xl
as$_=>$T){$Yi=preg_replace('~_.*~','',$_);$sb=($a==""||$a==(substr($a,-1)=="%"?"$Yi%":$_));$dj="<tr><td>".checkbox("tables[]",$_,$sb,$_,"","block");if($T!==null&&!preg_match('~table~i',$T))$Nm
.="$dj\n";else
echo"$dj<td class='right'><label class='block'><span id='Rows-".h($_)."'></span>".checkbox("data[]",$_,$sb)."</label>\n";$Zi[$Yi]++;}echo$Nm;if($xl)echo
script("ajaxSetHtml('".js_escape(ME)."script=db');");}else{$f=Admin::get()->getDatabases();echo"<thead><tr><th>","<label class='block'>".($f?"<input type='checkbox' id='check-databases'".($a==""?" checked":"")." class='jsonly' title='".lang(189)."'>".script("gid('check-databases').onclick = partial(formCheck, /^databases\\[/);",""):"").lang(31)."</label>","</thead>\n";if($f){foreach($f
as$g){if(!information_schema($g)){$Yi=preg_replace('~_.*~','',$g);echo"<tr><td>".checkbox("databases[]",$g,$a==""||$a=="$Yi%",$g,"","block")."\n";$Zi[$Yi]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo"</table>\n","</form>\n";$wg=[];foreach($Zi
as$t=>$W){if($t!=""&&$W>1)$wg[]="<a href='".h(ME)."dump=".urlencode("$t%")."'>".icon("check").h($t)."*</a>";}if($wg)echo"<p class='links'>",implode("",$wg),"</p>\n";}elseif(isset($_GET["sql"])){$N=Admin::get()->getSettings();if($_POST["export"]){$N->updateParameters(["exportFormat"=>$_POST["format"],"exportOutput"=>$_POST["output"],]);dump_headers("sql");Admin::get()->dumpTable("","");Admin::get()->dumpData("","table",$_POST["query"]);exit;}restart_session();$Te=&get_session("queries");$Se=&$Te[DB];if($_POST["clear"]){$Se=[];redirect(remove_from_uri("history"));}stop_session();$S=isset($_GET["import"])?lang(73):lang(41);page_header($S,[$S]);$sg="--".(DIALECT=="sql"?" ":"");if($_POST){$re=false;if(!isset($_GET["import"]))$G=$_POST["query"];elseif($_POST["webfile"]){$ff=Admin::get()->getImportFilePath();if($ff){if(file_exists($ff))$re=fopen($ff,"rb");elseif(file_exists("$ff.gz"))$re=fopen("compress.zlib://$ff.gz","rb");}$G=$re?fread($re,1e6):false;}else$G=get_file("sql_file",true,";");if(is_string($G)){if(($Ug=ini_bytes("memory_limit"))!="-1")ini_set("memory_limit",max($Ug,strval(2*strlen($G)+memory_get_usage()+8e6)));if($G!=""&&strlen($G)<1e6){$jj=$G.(preg_match("~;[ \t\r\n]*\$~",$G)?"":";");if(!$Se||first(end($Se))!=$jj){restart_session();$Se[]=[$jj,time()];set_session("queries",$Te);stop_session();}}$Lk="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|$sg)[^\n]*\n?|--\r?\n)";$Ac=";";$Bc=1;$Fh=0;$kd=true;$Vb=connect();if($Vb&&DB!=""){$Vb->selectDatabase(DB);if($_GET["ns"]!="")set_schema($_GET["ns"],$Vb);}$Kb=0;$ud=[];$wi='[\'"'.(DIALECT=="sql"?'`#':(DIALECT=="sqlite"?'`[':(DIALECT=="mssql"?'[':''))).']|/\*|'.$sg.'|$'.(DIALECT=="pgsql"?'|\$([a-zA-Z]\w*)?\$':'');$Wl=microtime(true);$bd=Admin::get()->getDumpFormats();unset($bd["sql"]);while($G!=""){if(!$Fh&&preg_match("~^$Lk*+DELIMITER\\s+(\\S+)~i",$G,$y)){$Ac=preg_quote($y[1]);$Bc=strlen($y[1]);$ne=Admin::get()->formatSqlCommandQuery(trim($y[0]));if($ne!="")echo"<pre><code class='jush-".DIALECT."'>$ne</code></pre>\n";$G=substr($G,strlen($y[0]));}elseif(!$Fh&&DIALECT=="pgsql"&&preg_match("~^($Lk*+COPY\\s+)[^;]+\\s+FROM\\s+stdin;~i",$G,$y)){$Ac="\n\\\\\\.\r?\n";$Bc=3;$Fh=strlen($y[0]);}else{preg_match("($Ac\\s*|$wi)",$G,$y,PREG_OFFSET_CAPTURE,$Fh);list($pe,$F)=$y[0];if(!$pe&&$re&&!feof($re))$G
.=fread($re,1e5);else{if(!$pe&&rtrim($G)=="")break;$Fh=$F+strlen($pe);if($pe&&!preg_match("(^$Ac)",$pe)){$kb=Driver::get()->hasCStyleEscapes()||(DIALECT=="pgsql"&&($F>0&&strtolower($G[$F-1])=="e"));$Ji='(';if($pe=='/*')$Ji
.='\*/';elseif($pe=='[')$Ji
.=']';elseif(preg_match("~^$sg|^#~",$pe))$Ji
.="\n";else$Ji
.=preg_quote($pe).($kb?"|\\\\.":"");$Ji
.='|$)s';while(preg_match($Ji,$G,$y,PREG_OFFSET_CAPTURE,$Fh)){$Qj=$y[0][0];if(!$Qj&&$re&&!feof($re))$G
.=fread($re,1e5);else{$Fh=$y[0][1]+strlen($Qj);if(!isset($Qj[0])||$Qj[0]!="\\")break;}}}else{$kd=false;$jj=substr($G,0,$F+$Bc);$Kb++;$dj="<pre id='sql-$Kb'><code class='jush-".DIALECT."'>".Admin::get()->formatSqlCommandQuery(trim($jj))."</code></pre>\n";if(DIALECT=="sqlite"&&preg_match("~^$Lk*+(ATTACH|VACUUM\\b.*\\bINTO)\\b~is",$jj,$y)!==0){echo$dj,"<p class='error'>".lang(190,preg_match('~ATTACH~i',$y[1])?'ATTACH':'VACUUM INTO')."\n";$ud[]=" <a href='#sql-$Kb'>$Kb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$dj;ob_flush();flush();}$Rk=microtime(true);if(Connection::get()->multiQuery($jj)&&is_object($Vb)&&preg_match("~^$Lk*+USE\\b~i",$jj))$Vb->query($jj);do{$H=Connection::get()->storeResult();if(Connection::get()->getError()){echo($_POST["only_errors"]?$dj:""),"<p class='error'>",lang(191),(!empty(Connection::get()->getErrno())?" (".Connection::get()->getErrno().")":""),": ",error()."</p>\n";$ud[]=" <a href='#sql-$Kb'>$Kb</a>";if($_POST["error_stops"])break
2;}else{$Ml=" <span class='time'>(".format_time($Rk).")</span>";$fd=(strlen($jj)<1000?" <a href='".h(ME)."sql=".urlencode(trim($jj))."'>".icon("edit").lang(39)."</a>":"");$nj=Connection::get()->getQueryInfo();$_a=Connection::get()->getAffectedRows();$Tm=($_POST["only_errors"]?null:Driver::get()->warnings());$Vm="warnings-$Kb";$Wm=$Tm?"<a href='#$Vm' class='toggle'>".lang(40).icon_chevron_down()."</a>":null;$Ad=$gi=null;$Bd="explain-$Kb";$Cd=false;$Dd="export-$Kb";$v=0;if(is_object($H)){if(!$_POST["only_errors"])echo"<div class='table-result'>\n";$v=(int)$_POST["limit"];$gi=print_select_result($H,$Vb,[],$v);if(!$_POST["only_errors"]){echo"<p class='links'>";$Dh=$H->getRowsCount();echo($Dh?($v&&$Dh>$v?lang(192,$v):"").lang(193,$Dh):""),$Ml,$fd,$Wm;if($Vb&&preg_match("~^($Lk|\\()*+SELECT\\b~i",$jj)&&($Ad=explain($Vb,$jj)))echo"<a href='#$Bd' class='toggle'>Explain".icon_chevron_down()."</a>";$Cd=true;echo"<a href='#$Dd' class='toggle'>".lang(74).icon_chevron_down()."</a>","</p>\n";}}else{if(preg_match("~^$Lk*+(CREATE|DROP|ALTER)$Lk++(DATABASE|SCHEMA)\\b~i",$jj)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"]){echo"<p class='message' title='".h($nj)."'>",lang(194,$_a),"$Ml $fd";if($Wm)echo", $Wm";echo"</p>\n";}}if(!$_POST["only_errors"])echo
script("initToggles(qsl('p'));");if($Tm)echo"<div id='$Vm' class='hidden'>\n$Tm</div>\n";if($Ad){echo"<div id='$Bd' class='hidden explain'>\n";print_select_result($Ad,$Vb,$gi);echo"</div>\n";}if($Cd){echo"<form id='$Dd' action='' method='post' class='hidden'><p>\n",html_select("format",$bd,$N->getParameter("exportFormat")),html_select("output",Admin::get()->getDumpOutputs(),$N->getParameter("exportOutput"))." ",input_hidden("query",$jj),input_token()," <input type='submit' class='button' name='export' value='".lang(74)."'>";if(!$v)echo
script("qsl('input').onclick = function (event) { return sqlExport.call(this, event, '".js_escape(ME)."set=export-settings'); };","");echo"</p></form>\n";}if(is_object($H)&&!$_POST["only_errors"])echo"</div>\n";}$Rk=microtime(true);}while(Connection::get()->nextResult());}$G=substr($G,$Fh);$Fh=0;}}}}if($kd)echo"<p class='message'>".lang(195)."\n";elseif($_POST["only_errors"]){$Ih=$Kb-count($ud);echo"<p class='".($Ih?"message":"error")."'>".lang(196,$Kb-count($ud))," <span class='time'>(".format_time($Wl).")</span>\n";}elseif($ud&&$Kb>1)echo"<p class='error'>".lang(191).": ".implode("",$ud)."\n";}else
echo"<p class='error'>".upload_error($G)."\n";}echo"<form action='' method='post' enctype='multipart/form-data' id='form'>\n";if(!isset($_GET["import"])){$jj=$_GET["sql"];if($_POST)$jj=$_POST["query"];elseif($_GET["history"]=="all")$jj=$Se;elseif($_GET["history"]!="")$jj=$Se[$_GET["history"]][0];echo"<p>";textarea("query",$jj,20);echo
script(($_POST?"":"qs('textarea').focus();\n")."gid('form').onsubmit = partial(sqlSubmit, gid('form'), '".js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history"))."');"),"</p>","<p><input type='submit' class='button default' value='".lang(197)."' title='Ctrl+Enter'>",lang(198).": <input type='number' name='limit' class='input size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<div class='field-sets'>\n","<fieldset><legend>".lang(199)."</legend><div class='fieldset-content'>";$Ee=(extension_loaded("zlib")?"[.gz]":"");if(ini_bool("file_uploads"))echo"SQL$Ee (&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>","<input type='submit' class='button default' value='".lang(197)."'>",file_upload_form_script("form","sql_file[]");else
echo
lang(200);echo"</div></fieldset>\n";$ff=Admin::get()->getImportFilePath();if($ff)echo"<fieldset><legend>".lang(201)."</legend><div class='fieldset-content'>",lang(202,"<code>".h($ff)."$Ee</code>")," <input type='submit' class='button default' name='webfile' value='".lang(203)."'>","</div></fieldset>\n";echo"</div>\n","<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:(isset($_GET["error_stops"])?$_GET["error_stops"]:true)),lang(204)),checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])||$_GET["only_errors"]),lang(205)),input_token(),"</p>\n";if(!isset($_GET["import"]))Admin::get()->printAfterSqlCommand();if(!isset($_GET["import"])&&$Se){echo"<div class='field-sets'>\n";print_fieldset_start("history",lang(206),"history",$_GET["history"]!="");for($W=end($Se);$W;$W=prev($Se)){$t=key($Se);list($jj,$Ml,$jd)=$W;echo" <pre><code class='jush-".DIALECT."'>",truncate_utf8(preg_replace('~\s+~',' ',ltrim(preg_replace("~^(#|$sg).*~m",'',$jj)))),"</code></pre>",'<p class="links">',"<a href='".h(ME."sql=&history=$t")."'>".icon("edit").lang(39)."</a>"," <span class='time' title='".@date('Y-m-d',$Ml)."'>".@date("H:i:s",$Ml).($jd?" ($jd)":"")."</span>","</p>";}echo"<p><input type='submit' class='button' name='clear' value='".lang(207)."'>\n","<a href='",h(ME."sql=&history=all")."' class='button light'>",icon("edit"),lang(208),"</a></p>\n";print_fieldset_end("history");echo"</div>\n";}echo"</form>\n";}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$k=fields($a);$Z=(isset($_GET["select"])?($_POST["check"]&&count($_POST["check"])==1?where_check($_POST["check"][0],$k):""):where($_GET,$k));$sm=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($k
as$_=>$j){if((!$sm&&!isset($j["privileges"]["insert"]))||Admin::get()->getFieldName($j)=="")unset($k[$_]);}if($_POST&&!isset($_GET["select"])){$x=$_POST["referer"];if($_POST["insert"])$x=($sm?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$x))$x=ME."select=".urlencode($a);$s=indexes($a);$mm=unique_array(isset($_GET["where"])?$_GET["where"]:[],$s);$oj="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($x,lang(209),(bool)Driver::get()->delete($a,$oj,$mm?0:1));else{$yk=[];foreach($k
as$_=>$j){$W=process_input($j);if($W!==false&&$W!==null)$yk[idf_escape($_)]=$W;}if($sm){if(!$yk)redirect($x);queries_redirect($x,lang(210),(bool)Driver::get()->update($a,$yk,$oj,$mm?0:1));if(is_ajax()){page_headers();page_messages();exit;}}else{$H=Driver::get()->insert($a,$yk);$hg=($H?last_id($H):0);queries_redirect($x,lang(211,($hg?" $hg":"")),(bool)$H);}}}$J=null;if($Z){$L=[];foreach($k
as$_=>$j){if(isset($j["privileges"]["select"])){$Ma=($_POST["clone"]&&$j["auto_increment"]?"''":convert_field($j));$L[]=($Ma?"$Ma AS ":"").idf_escape($_);}}$J=[];if(!support("table"))$L=["*"];if($L){$H=Driver::get()->select($a,$L,[$Z],$L,[],(isset($_GET["select"])?2:1));if(!$H)Admin::get()->addError(error());else{$J=$H->fetchAssoc();if(!$J)$J=false;}if(isset($_GET["select"])&&(!$J||$H->fetchAssoc()))$J=null;}}if(!support("table")&&!$k){if(!$Z){$H=Driver::get()->select($a,["*"],[],["*"]);$J=($H?$H->fetchAssoc():false);if(!$J)$J=[Driver::get()->primary=>""];}if($J){foreach($J
as$t=>$W){if(!$Z)$J[$t]=null;$k[$t]=["field"=>$t,"null"=>($t!=Driver::get()->primary),"auto_increment"=>($t==Driver::get()->primary)];}}}if(isset($_POST["save"])?$_POST["save"]:false){$Vi=[];foreach((isset($_POST["fields"])?$_POST["fields"]:[])as$t=>$W)$Vi[bracket_escape($t,true)]=$W;$J=$Vi+($J?:[]);}if($_POST["edit"]){$hd=array_filter($k,function($j){return!(isset($j["generated"])?$j["generated"]:null);});}else$hd=$k;edit_form($a,$hd,$J,$sm);}elseif(isset($_GET["create"])){$a=$_GET["create"];$Bi=Driver::get()->getPartitionBy();$Fi=$Bi?Driver::get()->getPartitionsInfo($a):[];$wj=referencable_primary($a);$ke=[];foreach($wj
as$ol=>$j)$ke[str_replace("`","``",$ol)."`".str_replace("`","``",$j["field"])]=$ol;$ji=[];$R=[];if($a!=""){$ji=fields($a);$R=table_status1($a);if(count($R)<2)Admin::get()->addError(lang(78));}$J=$_POST;$J["Comment"]=normalize_newlines($J["Comment"]);$J["fields"]=(array)$J["fields"];if($J["auto_increment_col"])$J["fields"][$J["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!Admin::get()->getErrors())Admin::get()->getSettings()->updateParameter("commentsOpened",isset($_POST["comments"])?$_POST["comments"]:null);if($_POST&&!process_fields($J["fields"])&&!Admin::get()->getErrors()){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(212),drop_tables([$a]));else{$k=[];$Fa=[];$xm=false;$ie=[];$ii=reset($ji);$Ba=" FIRST";foreach($J["fields"]as$t=>$j){$n=$ke[$j["type"]];$hm=($n!==null?$wj[$n]:$j);if($j["field"]!=""){if(!$j["generated"])$j["default"]=null;$ij=process_field($j,$hm);$Fa[]=[$j["orig"],$ij,$Ba];if(!$ii||$ij!==process_field($ii,$ii)){$k[]=[$j["orig"],$ij,$Ba];if($j["orig"]!=""||$Ba)$xm=true;}if($n!==null)$ie[idf_escape($j["field"])]=($a!=""&&DIALECT!="sqlite"?"ADD":" ").format_foreign_key(['table'=>$ke[$j["type"]],'source'=>[$j["field"]],'target'=>[$hm["field"]],'on_delete'=>$j["on_delete"],]);$Ba=" AFTER ".idf_escape($j["field"]);}elseif($j["orig"]!=""){$xm=true;$k[]=[$j["orig"]];}if($j["orig"]!=""){$ii=next($ji);if(!$ii)$Ba="";}}$Di=[];if(in_array($J["partition_by"],$Bi)){foreach($J
as$t=>$W){if(preg_match('~^partition~',$t))$Di[$t]=$W;}foreach($Di["partition_names"]as$t=>$_){if($_===""){unset($Di["partition_names"][$t]);unset($Di["partition_values"][$t]);}}$Di["partition_names"]=array_values($Di["partition_names"]);$Di["partition_values"]=array_values($Di["partition_values"]);if($Di==$Fi)$Di=[];}elseif(str_contains(isset($R["Create_options"])?$R["Create_options"]:"","partitioned"))$Di=null;$Wg=lang(213);if($a==""){cookie("neo_engine",isset($J["Engine"])?$J["Engine"]:"");$Wg=lang(214);}$_=trim($J["name"]);$x=ME.(support("table")?"table=":"select=").urlencode($_);$H=alter_table($a,$_,(DIALECT=="sqlite"&&($xm||$ie)?$Fa:$k),$ie,($J["Comment"]!=$R["Comment"]?$J["Comment"]:null),($J["Engine"]&&$J["Engine"]!=$R["Engine"]?$J["Engine"]:""),($J["Collation"]&&$J["Collation"]!=$R["Collation"]?$J["Collation"]:""),($J["Auto_increment"]!=""?number($J["Auto_increment"]):""),$Di);if($H&&!Queries::$queries)redirect($x);queries_redirect($x,$Wg,$H);}}if($a!="")page_header(lang(36).": ".h($a),["table"=>$a,lang(36)]);else
page_header(lang(77),[lang(77)]);if(!$_POST){$im=Driver::get()->getTypes();$J=["Engine"=>$_COOKIE["neo_engine"],"fields"=>[["field"=>"","type"=>(isset($im["int"])?"int":(isset($im["integer"])?"integer":"")),"on_update"=>""]],"partition_names"=>[""],];if($a!=""){$J=$R;$J["name"]=$a;$J["fields"]=[];if(!$_GET["auto_increment"])$J["Auto_increment"]="";foreach($ji
as$j){$j["generated"]=$j["generated"]?:(isset($j["default"])?"DEFAULT":"");$J["fields"][]=$j;}if($Bi){$J+=$Fi;$J["partition_names"][]="";$J["partition_values"][]="";}}}$Tf=[];if($J["Collation"])$Tf[$J["Collation"]]=true;foreach($J["fields"]as$j){if($j["collation"])$Tf[$j["collation"]]=true;}$Cb=Admin::get()->getCollations(array_keys($Tf));$qd=Driver::get()->engines();foreach($qd
as$pd){if(!strcasecmp($pd,$J["Engine"])){$J["Engine"]=$pd;break;}}$Jg=max_input_vars(12,20);if($Jg){$Pe=(count($J["fields"])>$Jg?"":" hidden");echo"<p".($Pe?" id='max-fields' data-columns='$Jg'":"")." class='error$Pe'>".max_input_vars_error()."\n";}echo"<form action='' method='post' id='form'>\n";if(support("columns")||$a==""){echo"<p>",lang(215),": ","<input class='input' name='name' data-maxlength='64' value='",h($J["name"]),"' autocapitalize='off'",(($a==""&&!$_POST)?" autofocus":""),">";if($qd)echo" ",html_select("Engine",[""=>"(".lang(216).")"]+$qd,$J["Engine"]),help_script_command("value",true);if($Cb&&!preg_match("~sqlite|mssql~",DIALECT))echo" ",html_select("Collation",[""=>"(".lang(93).")"]+$Cb,$J["Collation"]);echo" <input type='submit' class='button default' value='",lang(116),"'>","</p>";}if(support("columns")&&($a==""||!Driver::get()->isPartition($a))){echo"<div class='scrollable'>\n","<table id='edit-fields' class='nowrap'>\n";edit_fields($J["fields"],$Cb,"TABLE",$ke);echo"</table>\n",script("initFieldsEditing(gid('edit-fields'));");if(support("move_col"))echo
script("initSortable('#edit-fields tbody');");echo"</div>\n","<p>",lang(48),": ","<input type='number' class='input size' name='Auto_increment' size='6' value='",h($J["Auto_increment"]),"'>";$Ob=$_POST?$_POST["comments"]:Admin::get()->getSettings()->getParameter("commentsOpened");$Mb=$Ob?"":"hidden";if(support("comment")){echo
checkbox("comments",1,$Ob,lang(47),"editingCommentsClick(this, ".(support("move_col")?7:6).");","jsonly")," ";if(preg_match('~\n~',$J["Comment"]))echo"<textarea name='Comment' rows='2' cols='20'",($Mb?" class='$Mb'":""),">",h($J["Comment"]),"</textarea>";else
echo"<input name='Comment' value='",h($J["Comment"]),"' data-maxlength='",(Connection::get()->isMinVersion("5.5")?2048:60),"' class='input $Mb'>";}echo"</p>\n<p>","<input type='submit' class='button default' value='",lang(116),"'>";}elseif($a!="")echo"<p>";if($a!="")echo"<input type='submit' class='button' name='drop' value='",lang(167),"'>",confirm(lang(217,$a)),"</p>\n";if($Bi&&(DIALECT=="sql"||$a=="")){echo"<div class='field-sets'>\n";$Ci=preg_match('~RANGE|LIST~',$J["partition_by"]);print_fieldset_start("partition",lang(218),"split",(bool)$J["partition_by"]);echo"<p>",html_select("partition_by",array_merge([""],$Bi),$J["partition_by"]),help_script_command("value.replace(/./, 'PARTITION BY \$&')",true),script("qsl('select').onchange = partitionByChange;"),"(<input class='input' name='partition' value='",h($J["partition"]),"'>) ",lang(50),": ","<input type='number' name='partitions' class='input size ",($Ci||!$J["partition_by"]?"hidden":""),"' value='",h($J["partitions"]),"'>","</p>\n","<table id='partition-table'",($Ci?"":" class='hidden'"),">\n","<thead><tr><th>",lang(219),"</th><th>",lang(52),"</th></tr></thead>\n";foreach($J["partition_names"]as$t=>$W){echo"<tr>","<td><input class='input' name='partition_names[]' value='",h($W),"' autocapitalize='off'>";if($t==count($J["partition_names"])-1)echo
script("qsl('input').oninput = partitionNameChange;");echo"</td>","<td><input class='input' name='partition_values[]' value='",h(isset($J["partition_values"][$t])?$J["partition_values"][$t]:""),"'></td>","</tr>\n";}echo"</table>\n","</p>\n";print_fieldset_end("partition");echo"</div>\n";}echo
input_token(),"</form>\n";}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$mf=["PRIMARY","UNIQUE","INDEX"];$R=table_status1($a,true);$jf=Driver::get()->getIndexAlgorithms($R);$d=Connection::get();$Eg=$d->isMariaDB();if(preg_match('~MyISAM|M?aria'.($d->isMinVersion($Eg?"10.0.5":"5.6")?'|InnoDB':'').'~i',$R["Engine"]))$mf[]="FULLTEXT";if(preg_match('~MyISAM|M?aria'.($d->isMinVersion($Eg?"10.2.2":"5.7")?'|InnoDB':'').'~i',$R["Engine"]))$mf[]="SPATIAL";if($Eg&&$d->isMinVersion("11.7")&&preg_match('~MyISAM|InnoDB~i',$R["Engine"]))$mf[]="VECTOR";$s=indexes($a);$k=fields($a);$cj=[];if(DIALECT=="mongo"){$cj=$s["_id_"];unset($mf[0]);unset($s["_id_"]);}$J=$_POST;if($J){$N=Admin::get()->getSettings();if($N->getParameter("indexOptions")!==null)$N->updateParameter("indexOptions",null);}if($_POST&&!$_POST["add"]&&!$_POST["drop_col"]){$Ha=[];foreach($J["indexes"]as$r){$_=$r["name"];if(in_array($r["type"],$mf)){$c=[];$pg=[];$Ec=[];$Th=[];$if=$jf?(in_array($r["algorithm"],$jf)?$r["algorithm"]:first($jf)):"";$kf=(support("partial_indexes")?$r["partial"]:"");$yk=[];ksort($r["columns"]);foreach($r["columns"]as$t=>$b){if($b!=""){$u=isset($r["lengths"][$t])?$r["lengths"][$t]:null;$Cc=isset($r["descs"][$t])?$r["descs"][$t]:null;$Sh=isset($r["opclasses"][$t])?$r["opclasses"][$t]:null;$yk[]=($k[$b]?idf_escape($b):$b).($u?"(".(+$u).")":"").($Sh!=""?" ".idf_escape($Sh):"").($Cc?" DESC":"");$c[]=$b;$pg[]=($u?:null);$Ec[]=$Cc;$Th[]="$Sh";}}$_d=$s[$_];if($_d){ksort($_d["columns"]);ksort($_d["lengths"]);ksort($_d["descs"]);if($r["type"]==$_d["type"]&&array_values($_d["columns"])===$c&&(!$_d["lengths"]||array_values($_d["lengths"])===$pg)&&array_values($_d["descs"])===$Ec&&(!$_d["opclasses"]||array_values($_d["opclasses"])===$Th)&&(!$jf||$_d["algorithm"]===$if)&&$_d["partial"]==$kf){unset($s[$_]);continue;}}if($c)$Ha[]=[$r["type"],$_,$yk,$if,$kf];}}foreach($s
as$_=>$_d)$Ha[]=[$_d["type"],$_,"DROP"];if(!$Ha)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(220),alter_indexes($a,$Ha));}page_header(lang(175).": ".h($a),["table"=>$a,lang(175)]);$Sd=array_keys($k);if($_POST["add"]){foreach($J["indexes"]as$t=>$r){if($r["columns"][count($r["columns"])]!="")$J["indexes"][$t]["columns"][]="";}$r=end($J["indexes"]);if($r["type"]||array_filter($r["columns"],'strlen'))$J["indexes"][]=["columns"=>[1=>""]];}if(!$J){foreach($s
as$t=>$r){$s[$t]["name"]=$t;$s[$t]["columns"][]="";}$s[]=["columns"=>[1=>""]];$J["indexes"]=$s;}$pg=(DIALECT=="sql"||DIALECT=="mssql");$Th=Driver::get()->getIndexOpclasses();if($_POST)$Bk=$_POST["options"];else{$Bk=false;foreach($s
as$r){if(array_filter(isset($r["lengths"])?$r["lengths"]:[])||array_filter(isset($r["descs"])?$r["descs"]:[])||array_filter(isset($r["opclasses"])?$r["opclasses"]:[])||(isset($r["partial"])?$r["partial"]:"")!=""){$Bk=true;break;}}}echo"<form action='' method='post'>\n","<div class='scrollable'>\n","<table class='nowrap'>\n","<thead><tr>","<th id='label-type'>",lang(221),"</th>";$Yh="class='idxopts".($Bk?"":" hidden")."'";if(count($jf)>1)echo"<th id='label-method' $Yh>",lang(222),doc_link(['pgsql'=>'indexes-types.html',]),"</th>";echo"<th><input type='submit' hidden>",lang(53).($pg?"<span $Yh> (".lang(54).")</span>":"");if($pg||support("descidx"))echo
checkbox("options",1,$Bk,lang(99),"indexOptionsShow(this.checked)","jsonly")."\n";echo"</th>","<th id='label-name'>",lang(223),"</th>";if(support("partial_indexes"))echo"<th id='label-condition' $Yh>",lang(55),"</th>";echo"<th>","<button name='add[0]' value='1' title='",lang(100),"' class='button light hidden'>",icon_solo("add"),"</button>","</th>","</tr></thead>\n";if($cj){echo"<tr><td>PRIMARY<td>";foreach($cj["columns"]as$b)echo
select_input(" disabled",array_combine($Sd,$Sd),$b),"<label><input type='checkbox' disabled>".lang(63)."</label> ";echo"<td><td>\n";}$Of=1;foreach($J["indexes"]as$r){if(!$_POST["drop_col"]||$Of!=key($_POST["drop_col"])){echo"<tr><td>",html_select("indexes[$Of][type]",[-1=>""]+$mf,$r["type"],($Of==count($J["indexes"])?"indexesAddRow.call(this);":""),"label-type"),"</td>";if(count($jf)>1)echo"<td $Yh>",html_select("indexes[$Of][algorithm]",array_merge([""],$jf),$r['algorithm'],"label-method"),"</td>";echo"<td>";ksort($r["columns"]);$p=1;foreach($r["columns"]as$t=>$b){echo"<span>".select_input(" name='indexes[$Of][columns][$p]' title='".lang(44)."'",($k&&($b==""||$k[$b])?array_combine($Sd,$Sd):[]),$b,"partial(indexesChangeColumn, '".js_escape(DIALECT=="sql"?"":$_GET["indexes"]."_")."')"),"<span $Yh>";if($pg)echo"<input type='number' name='indexes[$Of][lengths][$p]' class='input size' value='".(h(isset($r["lengths"][$t])?$r["lengths"][$t]:"")),"' title='".lang(98),"'>";if($Th){$Sh=isset($r["opclasses"][$t])?$r["opclasses"][$t]:"";echo
html_select("indexes[$Of][opclasses][$p]",[""=>"(".lang(224).")"]+array_combine($Th,$Th)+($Sh!=""?[$Sh=>$Sh]:[]),$Sh),doc_link(['pgsql'=>'indexes-opclass.html']);}if(support("descidx"))echo
checkbox("indexes[$Of][descs][$p]",1,isset($r["descs"][$t])?$r["descs"][$t]:false,lang(63));echo"<br></span></span>";$p++;}echo"</td>","<td><input name='indexes[$Of][name]' value='",h($r["name"]),"' class='input' autocapitalize='off' aria-labelledby='label-name'></td>\n";if(support("partial_indexes"))echo"<td $Yh><input name='indexes[$Of][partial]' value='".h($r["partial"])."' autocapitalize='off' aria-labelledby='label-condition'>\n";echo"<td>","<button name='drop_col[$Of]' value='1' title='",lang(59),"' class='button light'>",icon_solo("remove"),"</button>",script("qsl('button').onclick = onRemoveIndexRowClick;"),"</td>\n";}$Of++;}echo"</table>\n","</div>\n","<p>","<input type='submit' class='button default' value='",lang(116),"'>",input_token(),"</p>\n","</form>\n";}elseif(isset($_GET["database"])){$J=$_POST;if($_POST&&!isset($_POST["add_x"])){$_=trim($J["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(225),drop_databases([DB]));}elseif(DB!==$_){if(DB!=""){$_GET["db"]=$_;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($_),lang(226),rename_database($_,$J["collation"]));}else{$f=explode("\n",str_replace("\r","",$_));$Yk=true;$gg="";foreach($f
as$g){if(count($f)==1||$g!=""){if(!create_database($g,$J["collation"]))$Yk=false;$gg=$g;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($gg),lang(227),$Yk);}}else{if(!$J["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($_).(preg_match('~^[a-z0-9_]+$~i',$J["collation"])?" COLLATE $J[collation]":""),substr(ME,0,-1),lang(228));}}if(DB!="")page_header(lang(70).": ".h(DB),[lang(70)]);else
page_header(lang(75),[lang(75)]);$_=DB;if($_POST)$_=$J["name"];elseif(DB!="")$J["collation"]=db_collation(DB,collations());elseif(DIALECT=="sql"){foreach(get_vals("SHOW GRANTS")as$ze){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~',$ze,$y)&&$y[1]){$_=stripcslashes(idf_unescape("`$y[2]`"));break;}}}$Cb=Admin::get()->getCollations($J["collation"]?[$J["collation"]]:[]);echo"<form action='' method='post'>\n","<p>";if($_POST["add_x"]||strpos($_,"\n"))echo"<textarea id='name' name='name' rows='10' cols='40'>",h($_),"</textarea><br>\n";else
echo"<input class='input' name='name' id='name' value='",h($_),"' data-maxlength='64' autocapitalize='off' autofocus>\n";if($Cb)echo
html_select("collation",[""=>"(".lang(93).")"]+$Cb,$J["collation"]),'',"\n";echo"<input type='submit' class='button default' value='",lang(116),"'>\n";if(DB!="")echo"<input type='submit' class='button' name='drop' value='".lang(167)."'>".confirm(lang(217,DB))."\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<button name='add_x' value='1' title='",lang(100),"' class='button light'>",icon_solo("add"),"</button>\n";echo
input_token(),"</p>\n","</form>\n";}elseif(isset($_GET["scheme"])){$J=$_POST;if($_POST){$w=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$w,lang(229));else{$_=trim($J["name"]);$w
.=urlencode($_);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($_),$w,lang(230));elseif($_GET["ns"]!=$_)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($_),$w,lang(231));else
redirect($w);}}if($_GET["ns"]!="")page_header(lang(71).": ".h($_GET["ns"]),[lang(71)]);else
page_header(lang(76),[lang(76)]);if(!$J)$J["name"]=$_GET["ns"];echo"<form action='' method='post'>\n","<p>","<input class='input' name='name' id='name' value='",h($J["name"]),"' autocapitalize='off' autofocus>","<input type='submit' class='button default' value='",lang(116),"'>";if($_GET["ns"]!="")echo"<input type='submit' class='button' name='drop' value='".lang(167)."'>".confirm(lang(217,$_GET["ns"]))."\n";echo
input_token(),"</p>\n","</form>\n";}elseif(isset($_GET["call"])){$na=$_GET["name"]?:$_GET["call"];page_header(lang(232).": ".h($na),[lang(232)]);$Mj=routine($_GET["call"],(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$gf=[];$oi=[];foreach($Mj["fields"]as$p=>$j){if(substr($j["inout"],-3)=="OUT"&&DIALECT=='sql')$oi[$p]="@".idf_escape($j["field"])." AS ".idf_escape($j["field"]);if(!$j["inout"]||substr($j["inout"],0,2)=="IN")$gf[]=$p;}if($_POST){$lb=[];foreach($Mj["fields"]as$t=>$j){$W="";if(in_array($t,$gf)){$W=process_input($j);if($W===false)$W="''";if(isset($oi[$t]))Connection::get()->query("SET @".idf_escape($j["field"])." = $W");}if(isset($oi[$t]))$lb[]="@".idf_escape($j["field"]);elseif(in_array($t,$gf))$lb[]=$W;}$G=(isset($_GET["callf"])?"SELECT ":"CALL ").($Mj["returns"]&&$Mj["returns"]["type"]=="record"?"* FROM ":"").table($na)."(".implode(", ",$lb).")";$Rk=microtime(true);$H=Connection::get()->multiQuery($G);$_a=Connection::get()->getAffectedRows();echo
Admin::get()->formatSelectQuery($G,$Rk,!$H);if(!$H)echo"<p class='error'>".error()."\n";else{$Vb=connect();if($Vb)$Vb->selectDatabase(DB);do{$H=Connection::get()->storeResult();if(is_object($H))print_select_result($H,$Vb);else
echo"<p class='message'>".lang(233,$_a)." <span class='time'>".@date("H:i:s")."</span>\n";}while(Connection::get()->nextResult());if($oi)print_select_result(Connection::get()->query("SELECT ".implode(", ",$oi)));}}echo"<form action='' method='post'>\n";if($gf){echo"<table class='box'>\n";foreach($gf
as$t){$j=$Mj["fields"][$t];$_=$j["field"];echo"<tr><th>".Admin::get()->getFieldName($j);$X=isset($_POST["fields"][$_])?$_POST["fields"][$_]:"";if($X!=""){if($j["type"]=="set")$X=implode(",",$X);}input($j,$X,(string)(isset($_POST["function"][$_])?$_POST["function"][$_]:""));echo"\n";}echo"</table>\n";}echo"<p>\n","<input type='submit' class='button' value='",lang(232),"'>\n",input_token(),"</p>\n","</form>\n";$Lb=$Mj["comment"];if($Lb!==null&&$Lb!==""){$Lb=h(trim($Mj["comment"],"\n"));if(preg_match('~^ +~',$Lb,$z)){preg_match_all("~^($z[0]|$)~m",$Lb,$ug);if(count($ug[0])==substr_count($Lb,"\n"))$Lb=preg_replace("~^($z[0])~m","",$Lb);}$Lb=preg_replace('~(^|[^\n]\n)(Description|Parameters|Example)\n~',"$1\n<strong>$2</strong>\n",$Lb);echo"<pre class='comment'>$Lb</pre>\n";}}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$_=$_GET["name"];$J=$_POST;if($_POST&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){if(!$_POST["drop"]){$J["source"]=array_filter($J["source"],'strlen');ksort($J["source"]);$Bl=[];foreach($J["source"]as$t=>$W)$Bl[$t]=$J["target"][$t];$J["target"]=$Bl;}if(DIALECT=="sqlite")$H=recreate_table($a,$a,[],[],[" $_"=>($J["drop"]?"":" ".format_foreign_key($J))]);else{$Ha="ALTER TABLE ".table($a);$H=($_==""||queries("$Ha DROP ".(DIALECT=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($_)));if(!$J["drop"])$H=queries("$Ha ADD".format_foreign_key($J));}queries_redirect(ME."table=".urlencode($a),($J["drop"]?lang(234):($_!=""?lang(235):lang(236))),(bool)$H);if(!$J["drop"])Admin::get()->addError(lang(237));}if($_!="")page_header(lang(238).": ".h($_),["table"=>$a,lang(238)]);else
page_header(lang(179).": ".h($a),["table"=>$a,lang(179)]);if($_POST){ksort($J["source"]);if($_POST["change"]||$_POST["change-js"])$J["target"]=[];else$J["source"][]="";}elseif($_!=""){$ke=foreign_keys($a);$J=$ke[$_];$J["source"][]="";}else{$J["table"]=$a;$J["source"]=[""];}echo"<form action='' method='post'>\n";$Jk=array_keys(fields($a));if($J["db"]!="")Connection::get()->selectDatabase($J["db"]);if($J["ns"]!=""){$ki=get_schema();set_schema($J["ns"]);}$vj=array_keys(array_filter(table_status('',true),'AdminNeo\fk_support'));$Bl=$vj?array_keys(fields(in_array($J["table"],$vj)?$J["table"]:reset($vj))):[];$Oh="this.form['change-js'].value = '1'; this.form.submit();";echo"<p>","<span id='label-table'>",lang(239),":</span> ",html_select("table",$vj,$J["table"],$Oh,"label-table");if(support("scheme")){$Yj=array_filter(Admin::get()->getSchemas(),function($Xj){return!information_schema(DB,$Xj);});echo"<span id='label-schema'>",lang(81),":</span> ",html_select("ns",$Yj,$J["ns"]!=""?$J["ns"]:$_GET["ns"],$Oh,"label-schema");if($J["ns"]!="")set_schema($ki);}elseif(DIALECT!="sqlite"){$uc=[];foreach(Admin::get()->getDatabases()as$g){if(!information_schema($g))$uc[]=$g;}echo"<span id='label-db'>",lang(240),":</span> ",html_select("db",$uc,$J["db"]!=""?$J["db"]:$_GET["db"],$Oh,"label-db");}echo
input_hidden("change-js"),"<noscript><input type='submit' class='button' name='change' value='",lang(241),"'></noscript>","</p>\n","<table>","<thead><tr><th id='label-source'>",lang(176),"<th id='label-target'>",lang(177),"</thead>\n";$Of=0;foreach($J["source"]as$t=>$W){echo"<tr>","<td>".html_select("source[".(+$t)."]",[-1=>""]+$Jk,$W,($Of==count($J["source"])-1?"foreignAddRow.call(this);":""),"label-source"),"<td>".html_select("target[".(+$t)."]",$Bl,isset($J["target"][$t])?$J["target"][$t]:null,"","label-target");$Of++;}echo"</table>\n","<noscript><p><input type='submit' class='button' name='add' value='",lang(242),"'></p></noscript>","<p>\n","<span id='label-delete'>".lang(95),":</span> ",html_select("on_delete",[-1=>""]+Driver::get()->getOnActions(),$J["on_delete"],"","label-delete"),"<span id='label-update'>".lang(94),":</span> ",html_select("on_update",[-1=>""]+Driver::get()->getOnActions(),$J["on_update"],"","label-update");if(DRIVER=='pgsql')echo
html_select("deferrable",['NOT DEFERRABLE','DEFERRABLE','DEFERRABLE INITIALLY DEFERRED'],$J["deferrable"]);echo
doc_link(['pgsql'=>"sql-createtable.html#SQL-CREATETABLE-PARMS-REFERENCES",]),"</p>\n<p>","<input type='submit' class='button default' value='",lang(116),"'>";if($_!="")echo"<input type='submit' class='button' name='drop' value='",lang(167),"'>",confirm(lang(217,$_));echo
input_token(),"</p>\n","</form>\n";}elseif(isset($_GET["view"])){$a=$_GET["view"];$J=$_POST;$li="VIEW";if(DIALECT=="pgsql"&&$a!=""){$O=table_status1($a);$li=strtoupper($O["Engine"]);}if($_POST){$_=trim($J["name"]);$Ma=" AS\n$J[select]";$x=ME."table=".urlencode($_);$Wg=lang(243);$T=($_POST["materialized"]?"MATERIALIZED VIEW":"VIEW");if(!$_POST["drop"]&&$a==$_&&DIALECT!="sqlite"&&$T=="VIEW"&&$li=="VIEW")query_redirect((DIALECT=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($_).$Ma,$x,$Wg);else{$Dl=$_."_adminneo_".uniqid();drop_create("DROP $li ".table($a),"CREATE $T ".table($_).$Ma,"DROP $T ".table($_),"CREATE $T ".table($Dl).$Ma,"DROP $T ".table($Dl),($_POST["drop"]?substr(ME,0,-1):$x),lang(244),$Wg,lang(245),$a,$_);}}if(!$_POST&&$a!=""){$J=view($a);$J["name"]=$a;$J["materialized"]=($li!="VIEW");if($i=error())Admin::get()->addError($i);}if($a!="")page_header(lang(37).": ".h($a),["table"=>$a,lang(37)]);else
page_header(lang(246),[lang(246)]);echo"<form action='' method='post'>\n","<p>",lang(223),":","<input class='input' name='name' value='",h($J["name"]),"' data-maxlength='64' autocapitalize='off'>\n";if(support("materializedview"))echo
checkbox("materialized",1,$J["materialized"],lang(169));echo"</p>\n<p>";textarea("select",$J["select"]);echo"</p>\n<p>","<input type='submit' class='button default' value='",lang(116),"'>\n";if($a!="")echo"<input type='submit' class='button' name='drop' value='",lang(167),"'>\n",confirm(lang(217,$a));echo
input_token(),"</p>\n","</form>\n";}elseif(isset($_GET["procedure"])){$na=($_GET["name"]?:$_GET["procedure"]);$Mj=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$J=$_POST;$J["fields"]=(array)$J["fields"];if($_POST&&!process_fields($J["fields"])){foreach($J["fields"]as$t=>$j){if($j["field"]=="")unset($J["fields"][$t]);}$Kh=routine_id($na,routine($_GET["procedure"],$Mj));$xh=routine_id($J["name"],$J);$gc=create_routine($Mj,$J);$x=substr(ME,0,-1);$Wg=lang(247);if(!$_POST["drop"]&&$Kh==$xh&&(DIALECT!="sql"||Connection::get()->isMariaDB()))query_redirect(substr_replace($gc,' OR REPLACE',6,0),$x,$Wg);else{$Dl="$J[name]_adminer_".uniqid();drop_create("DROP $Mj $Kh",$gc,"DROP $Mj $xh",create_routine($Mj,["name"=>$Dl]+$J),"DROP $Mj ".routine_id($Dl,$J),$x,lang(248),$Wg,lang(249),$na,$J["name"]);}}if($na!=""){$S=isset($_GET["function"])?lang(250):lang(251);page_header($S.": ".h($na),[$S]);}else{$S=isset($_GET["function"])?lang(252):lang(253);page_header($S,[$S]);}if(!$_POST){if($na=="")$J["language"]="sql";else{$J=routine($_GET["procedure"],$Mj);$J["name"]=$na;}}$nb=get_vals("SHOW CHARACTER SET");sort($nb);$Nj=routine_languages();echo"<form action='' method='post' id='form'>\n","<p>",lang(223),": ","<input class='input' name='name' value='",h($J["name"]),"' data-maxlength='64' autocapitalize='off'>";if($Nj)echo"<span id='label-language'>",lang(10),":</span> ",html_select("language",$Nj,$J["language"],"","label-language");echo"<input type='submit' class='button default' value='",lang(116),"'>","</p>\n","<div class='scrollable'>\n","<table class='nowrap' id='edit-fields'>\n";edit_fields($J["fields"],$nb,$Mj);if(isset($_GET["function"])){echo"<tbody><tr>";if(support("move_col"))echo"<th></th>";echo"<th>",lang(254),"</th>";edit_type("returns",(array)$J["returns"],$nb,[],(DIALECT=="pgsql"?["void","trigger"]:[]));echo"<td></td>","</tr></tbody>\n";}echo"</table>\n",script("initFieldsEditing(gid('edit-fields'));");if(support("move_col"))echo
script("initSortable('#edit-fields tbody');");echo"</div>\n","<p>";textarea("definition",$J["definition"],20);echo"</p>\n<p>","<input type='submit' class='button default' value='",lang(116),"'>";if($na!="")echo"<input type='submit' class='button' name='drop' value='",lang(167),"'>",confirm(lang(217,$na));echo
input_token(),"</p>\n","</form>\n";}elseif(isset($_GET["sequence"])){$pa=$_GET["sequence"];$J=$_POST;if($_POST){$w=substr(ME,0,-1);$_=trim($J["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($pa),$w,lang(255));elseif($pa=="")query_redirect("CREATE SEQUENCE ".idf_escape($_),$w,lang(256));elseif($pa!=$_)query_redirect("ALTER SEQUENCE ".idf_escape($pa)." RENAME TO ".idf_escape($_),$w,lang(257));else
redirect($w);}if($pa!="")page_header(lang(258).": ".h($pa),[h($pa)]);else
page_header(lang(259),[lang(260)]);if(!$J)$J["name"]=$pa;echo"<form action='' method='post'>\n","<p>","<input class='input' name='name' value='",h($J["name"]),"' autocapitalize='off'>","<input type='submit' class='button default' value='",lang(116),"'>";if($pa!="")echo"<input type='submit' class='button' name='drop' value='".lang(167)."'>".confirm(lang(217,$pa))."\n";echo
input_token(),"</p>\n","</form>\n";}elseif(isset($_GET["type"])){$qa=$_GET["type"];$J=$_POST;if($_POST){$w=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($qa),$w,lang(261));else
query_redirect("CREATE TYPE ".idf_escape(trim($J["name"]))." $J[as]",$w,lang(262));}if($qa!="")page_header(lang(263).": ".h($qa),[h($qa)]);else
page_header(lang(260),[lang(260)]);if(!$J)$J["as"]="AS ";echo"<form action='' method='post'>\n";if($qa!=""){$im=Driver::get()->getTypes();$sd=type_values($im[$qa]);if($sd)echo"<p><code class='jush-".DIALECT."'>ENUM (".h($sd).")</code><p>\n";echo"<p>","<input type='submit' class='button' name='drop' value='".lang(167)."'>".confirm(lang(217,$qa)),"</p>\n";}else{echo"<p>",lang(223).": <input class='input' name='name' value='".h($J['name'])."' autocapitalize='off'>\n",doc_link(['pgsql'=>"datatype-enum.html",],"?"),"</p>\n<p>";textarea("as",$J["as"]);echo"</p>\n","<p><input type='submit' class='button default' value='".lang(116)."'></p>\n";}echo
input_token(),"</form>\n";}elseif(isset($_GET["check"])){$a=$_GET["check"];$_=$_GET["name"];$J=$_POST;if($J){if(DIALECT=="sqlite")$Yk=recreate_table($a,$a,[],[],[],"",[],"$_",($J["drop"]?"":$J["clause"]));else{$Yk=($_==""||queries("ALTER TABLE ".table($a)." DROP CONSTRAINT ".idf_escape($_)));if(!$J["drop"])$Yk=(bool)queries("ALTER TABLE ".table($a)." ADD".($J["name"]!=""?" CONSTRAINT ".idf_escape($J["name"]):"")." CHECK ($J[clause])");}queries_redirect(ME."table=".urlencode($a),($J["drop"]?lang(264):($_!=""?lang(265):lang(266))),$Yk);}if($_!="")page_header(lang(267).": ".h($_),["table"=>$a,lang(267)]);else
page_header(lang(181).": ".h($a),["table"=>$a,lang(181)]);if(!$J){$tb=Driver::get()->checkConstraints($a);$J=["name"=>$_,"clause"=>$tb[$_]];}echo"<form action='' method='post'>\n","<p>";if(DIALECT!="sqlite")echo
lang(223).': <input name="name" value="'.h($J["name"]).'" class="input" data-maxlength="64" autocapitalize="off"> ';echo
doc_link(['pgsql'=>"ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS",],"?"),"</p>\n<p>";textarea("clause",$J["clause"]);echo"</p>\n<p>","<input type='submit' class='button default' value='",lang(116),"'>";if($_!="")echo"<input type='submit' class='button' name='drop' value='",lang(167),"'>",confirm(lang(217,$_));echo
input_token(),"</p>\n","</form>\n";}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$_=isset($_GET["name"])?$_GET["name"]:"";$em=trigger_options();$J=trigger($_,$a)+["Trigger"=>$a."_bi"];if($_POST){if(in_array($_POST["Timing"],$em["Timing"])&&in_array($_POST["Event"],$em["Event"])&&in_array($_POST["Type"],$em["Type"])){$Mh=" ON ".table($a);$Wc="DROP TRIGGER ".idf_escape($_).(DIALECT=="pgsql"?$Mh:"");$x=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Wc,$x,lang(268));else{if($_!="")queries($Wc);queries_redirect($x,($_!=""?lang(269):lang(270)),(bool)queries(create_trigger($Mh,$_POST)));if($_!="")queries(create_trigger($Mh,$J+["Type"=>reset($em["Type"])]));}}$J=$_POST;}if($_!="")page_header(lang(271).": ".h($_),["table"=>$a,lang(271)]);else
page_header(lang(183).": ".h($a),["table"=>$a,lang(183)]);echo"<form action='' method='post' id='form'>\n","<table class='box box-light'>\n","<tr><th id='label-time'>",lang(272),"</th><td>",html_select("Timing",$em["Timing"],$J["Timing"],"triggerChange(/^".js_escape_re($a)."_[ba][iud]$/, '".js_escape($a)."', this.form);","label-time"),"</td></tr>\n","<tr><th id='label-event'>",lang(273),"</th><td>",html_select("Event",$em["Event"],$J["Event"],"this.form['Timing'].onchange();","label-event");if(in_array("UPDATE OF",$em["Event"]))echo" <input name='Of' value='".h($J["Of"])."' class='input hidden'>";echo"</td></tr>\n","<tr><th id='label-type'>",lang(45),"</th><td>",html_select("Type",$em["Type"],$J["Type"],"","label-type"),"</td></tr>\n","</table>\n","<p>",lang(223),"<input class='input' name='Trigger' value='",h($J["Trigger"]),"' data-maxlength='64' autocapitalize='off'>","</p>\n",script("gid('form')['Timing'].onchange();"),"<p>";textarea("Statement",$J["Statement"]);echo"</p>\n","<p>","<input type='submit' class='button default' value='",lang(116),"'>";if($_!="")echo"<input type='submit' class='button' name='drop' value='",lang(167),"'>",confirm(lang(217,$_));echo"</p>\n",input_token(),"</form>\n";}elseif(isset($_GET["processlist"])){if(support("kill")){if($_POST){$Yf=0;foreach((array)$_POST["kill"]as$W){if(kill_process($W))$Yf++;}queries_redirect(ME."processlist=",lang(274,$Yf),$Yf||!$_POST["kill"]);}}page_header(lang(157),[lang(157)]);echo"<form action='' method='post'>\n","<div class='scrollable'>\n","<table class='nowrap checkable'>\n";$p=-1;foreach(process_list()as$p=>$J){if(!$p){echo"<thead><tr lang='en'>".(support("kill")?"<th>":"");foreach($J
as$t=>$W)echo"<th>$t".doc_link(['pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",]);echo"</thead>\n","<tbody>\n";}echo"<tr>".(support("kill")?"<td>".checkbox("kill[]",$J[DIALECT=="sql"?"Id":"pid"],0):"");foreach($J
as$t=>$W)echo"<td>".($W!=""&&((DIALECT=="sql"&&$t=="Info"&&preg_match("~Query|Killed~",$J["Command"]))||(DIALECT=="pgsql"&&$t=="query")||(DIALECT=="oracle"&&$t=="sql_text"))?"<code class='jush-".DIALECT."'>".truncate_utf8($W,100).'</code> <a href="'.h(ME.($J["db"]!=""?"db=".urlencode($J["db"])."&":"")."sql=".urlencode($W)).'">'.icon("edit").lang(275).'</a>':h($W));echo"\n";}if($p>=0)echo"</tbody>\n",script("mixin(qsl('tbody'), {onclick: tableClick, ondblclick: event => tableClick(event, true)});");echo"</table>\n","</div>\n","<p>";if(support("kill"))echo($p+1)."/".lang(276,max_connections()),"<p><input type='submit' class='button' value='".lang(277)."'>\n";echo
input_token(),"</p>\n","</form>\n",script("tableCheck();");}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$s=indexes($a);$k=fields($a);$ke=column_foreign_keys($a);$Gh=$R["Oid"];$Kj=[];$c=[];$bk=[];$bi=[];$Il=null;foreach($k
as$t=>$j){$_=Admin::get()->getFieldName($j);$sh=html_entity_decode(strip_tags($_),ENT_QUOTES);if(isset($j["privileges"]["select"])&&$_!=""){$c[$t]=$sh;if(is_shortable($j))$Il=Admin::get()->processSelectionLength();}if(isset($j["privileges"]["where"])&&$_!="")$bk[$t]=$sh;if(isset($j["privileges"]["order"])&&$_!="")$bi[$t]=$sh;$Kj+=$j["privileges"];}list($L,$_e)=Admin::get()->processSelectionColumns($c,$s);$L=array_unique($L);$_e=array_unique($_e);$If=count($_e)<count($L);$Z=Admin::get()->processSelectionSearch($k,$s);$C=Admin::get()->processSelectionOrder($k,$s);$v=Admin::get()->processSelectionLimit();if($_GET["modify"]&&!Admin::get()->isDataEditAllowed())redirect(ME."select=".urlencode($a));if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$nm=>$J){$Ma=convert_field($k[key($J)]);$L=[$Ma?:idf_escape(key($J))];$Z[]=where_check($nm,$k);$I=Driver::get()->select($a,$L,$Z,$L);if($I)echo
first($I->fetchRow());}exit;}$cj=$qm=[];foreach($s
as$r){if($r["type"]=="PRIMARY"){$cj=array_flip($r["columns"]);$qm=($L?$cj:[]);foreach($qm
as$t=>$W){if(in_array(idf_escape($t),$L))unset($qm[$t]);}break;}}if($Gh&&!$cj){$cj=$qm=[$Gh=>0];$s[]=["type"=>"PRIMARY","columns"=>[$Gh]];}$N=Admin::get()->getSettings();if($_POST){$Ym=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$tb=[];foreach($_POST["check"]as$ob)$tb[]=where_check($ob,$k);$Ym[]="((".implode(") OR (",$tb)."))";}$Ym=($Ym?"\nWHERE ".implode(" AND ",$Ym):"");if($_POST["export"]){$N->updateParameters(["exportFormat"=>$_POST["format"],"exportOutput"=>$_POST["output"],]);dump_headers($a);Admin::get()->dumpTable($a,"");$se=($L?implode(", ",$L):"*").convert_fields($c,$k,$L)."\nFROM ".table($a);$Ce=($_e&&$If?"\nGROUP BY ".implode(", ",$_e):"").($C?"\nORDER BY ".implode(", ",$C):"");if(!is_array($_POST["check"])||$cj)$G="SELECT $se$Ym$Ce";else{$km=[];foreach($_POST["check"]as$W)$km[]="(SELECT".limit($se,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($W,$k).$Ce,1).")";$G=implode(" UNION ALL ",$km);}Admin::get()->dumpData($a,"table",$G);exit;}if($_POST["save"]||$_POST["delete"]){$H=true;$_a=0;$yk=[];if(!$_POST["delete"]){$jk=array_keys($_POST["fields"]+$_POST["function"]);foreach($jk
as$_){$W=process_input($k[$_]);if($W!==null&&($_POST["clone"]||$W!==false))$yk[idf_escape($_)]=($W!==false?$W:idf_escape($_));}}if($_POST["delete"]||$yk){if($_POST["clone"])$G="INTO ".table($a)." (".implode(", ",array_keys($yk)).")\nSELECT ".implode(", ",$yk)."\nFROM ".table($a);if($_POST["all"]||($cj&&is_array($_POST["check"]))||$If){$H=($_POST["delete"]?Driver::get()->delete($a,$Ym):($_POST["clone"]?queries("INSERT $G$Ym".Driver::get()->getInsertReturningSql($a)):Driver::get()->update($a,$yk,$Ym)));$_a=Connection::get()->getAffectedRows();if(is_object($H))$_a+=$H->getRowsCount();}else{foreach((array)$_POST["check"]as$W){$Xm="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($W,$k);$H=($_POST["delete"]?Driver::get()->delete($a,$Xm,1):($_POST["clone"]?queries("INSERT".limit1($a,$G,$Xm)):Driver::get()->update($a,$yk,$Xm,1)));if(!$H)break;$_a+=Connection::get()->getAffectedRows();}}}$Wg=lang(278,$_a);if($_POST["clone"]&&$H&&$_a==1){$hg=last_id($H);if($hg)$Wg=lang(211," $hg");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$Wg,(bool)$H);if(!$_POST["delete"]){$hd=array_filter($k,function($j){return!(isset($j["generated"])?$j["generated"]:null);});edit_form($a,$hd,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])Admin::get()->addError(lang(279));else{$Yk=true;$_a=0;foreach($_POST["val"]as$nm=>$J){$yk=[];foreach($J
as$t=>$W){$t=bracket_escape($t,true);$yk[idf_escape($t)]=(preg_match('~char|text~',$k[$t]["type"])||$W!=""?Admin::get()->processFieldInput($k[$t],$W):"NULL");}$Yk=(bool)Driver::get()->update($a,$yk," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($nm,$k),($If||$cj?0:1)," ");if(!$Yk)break;$_a+=Connection::get()->getAffectedRows();}queries_redirect(remove_from_uri(),lang(278,$_a),$Yk);}}elseif(!is_string($l=get_file("csv_file",true)))Admin::get()->addError(upload_error($l));elseif(!preg_match('~~u',$l))Admin::get()->addError(lang(280));else{$N->updateParameter("exportFormat",$_POST["import_format"]);$Gb=array_keys($k);preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~',$l,$z);$_a=count($z[0]);Driver::get()->begin();$kk=($_POST["import_format"]=="csv;"?";":($_POST["import_format"]=="tsv"?"\t":","));$K=[];foreach($z[0]as$t=>$W){preg_match_all("~((?>\"[^\"]*\")+|[^$kk]*)$kk~",$W.$kk,$Hg);if(!$t&&!array_diff($Hg[1],$Gb)){$Gb=$Hg[1];$_a--;}else{$yk=[];foreach($Hg[1]as$p=>$_b)$yk[idf_escape($Gb[$p])]=($_b==""&&$k[$Gb[$p]]["null"]?"NULL":q(preg_match('~^".*"$~s',$_b)?str_replace('""','"',substr($_b,1,-1)):$_b));$K[]=$yk;}}$Yk=!$K||Driver::get()->insertUpdate($a,$K,$cj);if($Yk)Driver::get()->commit();queries_redirect(remove_from_uri("page"),lang(281,$_a),$Yk);Driver::get()->rollback();}}$ol=Admin::get()->getTableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(56).": $ol",[$ol]);$yf=null;if(isset($Kj["insert"])||!support("table")){$yf=[];foreach((array)$_GET["where"]as$W){if(isset($ke[$W["col"]])&&count($ke[$W["col"]])==1&&($W["op"]=="="||(!$W["op"]&&(is_array($W["val"])||!preg_match('~[_%]~',$W["val"])))))$yf["preset"."[".bracket_escape($W["col"])."]"]=$W["val"];}}Admin::get()->printTableMenu($R,$yf);if(!$c&&support("table"))echo"<p class='error'>".lang(282).($k?".":": ".error())."\n";else{echo"<form id='form' action=''>\n","<div hidden>";hidden_fields_get();if(DB!=""){echo
input_hidden("db",DB);if(isset($_GET["ns"]))echo
input_hidden("ns",$_GET["ns"]);}echo
input_hidden("select",$a),"<input type='submit' class='button' value='".lang(56)."'>","</div>\n","<div class='field-sets'>\n";Admin::get()->printSelectionColumns($L,$c);Admin::get()->printSelectionSearch($Z,$bk,$s);Admin::get()->printSelectionOrder($C,$bi,$s);Admin::get()->printSelectionLimit($v);Admin::get()->printSelectionLength($Il);Admin::get()->printSelectionAction($s);echo"</div>\n</form>\n";$D=isset($_GET["page"])?$_GET["page"]:null;if($D=="last"){$qe=Connection::get()->getValue(count_rows($a,$Z,$If,$_e));$D=(int)floor(max(0,intval($qe)-1)/$v);}else{$qe=false;$D=(int)$D;}$ck=$L;$Ae=$_e;if(!$ck){$ck[]="*";$dc=convert_fields($c,$k,$L);if($dc)$ck[]=substr($dc,2);}foreach($L
as$t=>$W){$j=$k[idf_unescape($W)];if($j&&($Ma=convert_field($j)))$ck[$t]="$Ma AS $W";}if(DIALECT=="pgsql"||DIALECT=="mssql"){foreach((array)$_GET["columns"]as$t=>$W){if(isset($ck[$t])&&$W["fun"])$ck[$t].=" AS ".idf_escape(apply_sql_function($W["fun"],($W["col"]!=""?$W["col"]:"*")));}}if(!$If&&$qm){foreach($qm
as$t=>$W){$ck[]=idf_escape($t);if($Ae)$Ae[]=idf_escape($t);}}$H=Driver::get()->select($a,$ck,$Z,$Ae,$C,$v,$D,true);if(!$H)echo"<p class='error'>".error()."\n";else{if(DIALECT=="mssql"&&$D)$H->seek($v*$D);$K=[];while($J=$H->fetchAssoc()){if($D&&DIALECT=="oracle")unset($J["RNUM"]);$K[]=$J;}if($_GET["modify"]&&$K){$Pg=max_input_vars(count($K[0])+1,20);echo($Pg&&count($K)>$Pg?"<p class='error'>".max_input_vars_error()."\n":"");}echo"<form id='selection_form' action='' method='post' enctype='multipart/form-data'>\n","<div class='table-footer-parent'>\n";if($_GET["page"]!="last"&&$v&&$_e&&$If&&DIALECT=="sql")$qe=Connection::get()->getValue(" SELECT FOUND_ROWS()");$id=false;if(!$K)echo"<p class='message'>".lang(91)."\n";else{$Wa=Admin::get()->getBackwardKeys($a,$ol);echo"<div class='scrollable'>\n","<table id='table' class='nowrap checkable'>\n","<thead><tr>";if($_e||!$L){echo"<th class='actions'><input type='checkbox' id='all-page' class='jsonly' title='".lang(283)."'>".script("gid('all-page').onclick = partial(formCheck, /^check/);","");if(Admin::get()->isDataEditAllowed())echo" <a href='",h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."' title='",lang(284),"'>",icon_solo("edit-all"),"</a>";}$uh=[];$ve=[];reset($L);$qj=1;foreach($K[0]as$t=>$W){if(!isset($qm[$t])){$ek=key($L);$W=isset($_GET["columns"][$ek])?$_GET["columns"][$ek]:[];$j=$k[$L?($W?$W["col"]:current($L)):$t];$_=($j?Admin::get()->getFieldName($j,$qj):(isset($W["fun"])?"*":h($t)));if($_!=""){$qj++;$uh[$t]=$_;$b=idf_escape($t);$Ye=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($t);$Cc="&desc%5B0%5D=1";$ai=isset($C[0])?$C[0]:"";$Gk=preg_replace('~ DESC( NULLS LAST)?$~','',$ai);$Ik=($Gk==$b||$Gk==$t);echo"<th id='th[".h(bracket_escape($t))."]'".($Ik?" aria-sort='".($Gk==$ai?"ascending":"descending")."'":"").">";$ue=apply_sql_function(isset($W["fun"])?$W["fun"]:null,$_);$Hk=isset($j["privileges"]["order"])||(isset($W["fun"])?$W["fun"]:null);if($Hk)echo'<a href="',h($Ye.($Ik&&$Gk==$ai?$Cc:'')),'">',"$ue</a>";else
echo$ue;echo"<span class='column'>";if($Hk)echo"<a href='".h($Ye.$Cc)."' title='".lang(63)."' class='button light'>",icon_solo("arrow-down"),"</a>";if(!isset($W["fun"])&&isset($j["privileges"]["where"]))echo"<a href='#fieldset-search' title='".lang(60)."' class='button light jsonly'>",icon_solo("search"),"</a>",script("qsl('a').onclick = partial(selectSearch, '".js_escape($t)."');");echo"</span>";}$ve[$t]=isset($W["fun"])?$W["fun"]:null;next($L);}}$pg=[];if($_GET["modify"]){foreach($K
as$J){foreach($J
as$t=>$W)$pg[$t]=max($pg[$t],min(40,strlen(utf8_decode($W))));}}if($Wa)echo"<th>".lang(19)."</th>";echo"</thead>\n","<tbody>\n";if(is_ajax())ob_end_clean();foreach(Admin::get()->fillForeignDescriptions($K,$ke)as$qh=>$J){$mm=unique_array($K[$qh],$s);if(!$mm){$mm=[];reset($L);foreach($K[$qh]as$t=>$W){if(!preg_match('~^(COUNT|AVG|GROUP_CONCAT|MAX|MIN|SUM)\(~',current($L)))$mm[$t]=$W;next($L);}}$nm="";foreach($mm
as$t=>$W){$j=isset($k[$t])?$k[$t]:null;$Hf=$j&&is_blob($j);if((DIALECT=="sql"||DIALECT=="pgsql")&&$j&&($Hf||preg_match('~char|text|enum|set~',$j["type"]))&&strlen($W)>64){$t=(strpos($t,'(')?$t:idf_escape($t));$t="MD5(".($Hf||DIALECT!='sql'||preg_match("~^utf8~",isset($j["collation"])?$j["collation"]:"")?$t:"CONVERT($t USING ".charset(Connection::get()).")").")";$W=md5($Hf?(string)Connection::get()->formatValue($W,$j):$W);}$nm
.="&".($W!==null?urlencode("where[".bracket_escape($t)."]")."=".urlencode($W===false?"f":$W):"null%5B%5D=".urlencode($t));}echo"<tr>";if($_e||!$L){echo"<td class='actions'>",checkbox("check[]",substr($nm,1),in_array(substr($nm,1),(array)$_POST["check"]));if(!$If&&Admin::get()->isDataEditAllowed())echo" <a href='",h(ME."edit=".urlencode($a).$nm),"' class='edit' title='",lang(39),"'>",icon_solo("edit"),"</a>";}reset($L);foreach($J
as$t=>$W){if(isset($uh[$t])){$b=current($L);$j=isset($k[$t])?$k[$t]:null;$w="";if($j&&is_blob($j)&&$W!="")$w=ME.'download='.urlencode($a).'&field='.urlencode($t).$nm;if(!$w&&$W!==null){foreach((array)$ke[$t]as$n){if(count($ke[$t])==1||end($n["source"])==$t){$w="";foreach($n["source"]as$p=>$Jk)$w
.=where_link($p,$n["target"][$p],$K[$qh][$Jk]);$w=($n["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\1'.urlencode($n["db"]),ME):ME).'select='.urlencode($n["table"]).$w;if($n["ns"])$w=preg_replace('~([?&]ns=)[^&]+~','\1'.urlencode($n["ns"]),$w);if(count($n["source"])==1)break;}}}if($b=="COUNT(*)"){$w=ME."select=".urlencode($a);$p=0;foreach((array)$_GET["where"]as$V){if(!array_key_exists($V["col"],$mm))$w
.=where_link($p++,$V["col"],$V["val"],$V["op"]);}foreach($mm
as$Rf=>$V)$w
.=where_link($p++,$Rf,$V);}$Ch=$W===null;$Ze=select_value($W,$w,$j,$Il);$wd=bracket_escape($t);$q=h("val[$nm][$wd]");$Wi=isset($_POST["val"][$nm][$wd])?$_POST["val"][$nm][$wd]:null;$sm=isset($j["privileges"]["update"])?$j["privileges"]["update"]:false;$gd=!is_array($W)&&!($j&&is_blob($j))&&is_utf8((string)$W)&&$K[$qh][$t]==$W&&!$ve[$t]&&!(isset($j["generated"])?$j["generated"]:false);$T=($b&&preg_match('~^(AVG|MIN|MAX)\((.+)\)~',$b,$z)?$k[idf_unescape($z[2])]["type"]:(isset($j["type"])?$j["type"]:null));$lh=$T=="money"||($b&&preg_match('~^SUM\((.+)\)~',$b,$z)&&$k[idf_unescape($z[1])]["type"])=="money";$Fl=$T&&preg_match('~text|json|lob~',$T);$Eh=($T&&preg_match(number_type(),$T))||($b&&preg_match('~^(CHAR_LENGTH|ROUND|FLOOR|CEIL|UNIX_TIMESTAMP|TIME_TO_SEC|COUNT|SUM)\(~',$b));$xb=$Eh&&($Ch||is_numeric(strip_tags($Ze))||$lh)?"class='number'":"";echo"<td id='$q' $xb";if(($_GET["modify"]&&$gd&&!$Ch)||$Wi!==null){$id=true;$Fe=h($Wi!==null?$Wi:$W);echo" data-editing='true'>".($Fl?"<textarea name='$q' cols='30' rows='".(substr_count($W,"\n")+1)."'>$Fe</textarea>":"<input class='input' name='$q' value='$Fe' size='$pg[$t]'>");}else{$Dg=strpos($Ze,"<i>…</i>");if($sm)echo" data-text='".($Dg?2:($Fl?1:0))."'".($gd?"":" data-warning='".lang(285)."'");echo">$Ze";}}next($L);}if($Wa){echo"<td>";Admin::get()->printBackwardKeys($Wa,$K[$qh]);echo"</td>";}echo"</tr>\n";}if(is_ajax())exit;echo"</tbody>\n",script("mixin(qs('#table tbody'), {onclick: event => tableClick(event, false, ".(Admin::get()->isDataEditAllowed()?"true":"false")."), ondblclick: event => tableClick(event, true), onkeydown: onEditingKeydown});"),"</table>\n",script("initToggles(gid('table'));"),"</div>\n";}if(!is_ajax()){if($K||$D){$xd=true;if($_GET["page"]!="last"){if(!$v||(count($K)<$v&&($K||!$D)))$qe=($D?$D*$v:0)+count($K);elseif(DIALECT!="sql"||!$If){$qe=($If?false:found_rows($R,$Z));if($qe<max(1e4,2*($D+1)*$v))$qe=first(slow_query(count_rows($a,$Z,$If,$_e)));elseif(DIALECT=='sql'||DIALECT=='pgsql')$xd=false;}}$si=($v!==null&&($qe===false||$qe>$v||$D));if($si){if(($qe===false?count($K)+1:$qe-$D*$v)>$v)echo'<p class="links">','<a href="',h(remove_from_uri("page")."&page=".($D+1)),'" class="loadmore">',icon("expand"),lang(286),'</a>',script("qsl('a').onclick = partial(loadNextPage, $v, '".js_escape(lang(287))."');","");echo"\n";}echo"<div class='table-footer'><div class='field-sets'>\n";if($si){$Ng=($qe===false?$D+(count($K)>=$v?2:1):(int)floor(($qe-1)/$v));$Sc="<li>…</li>";echo"<fieldset><legend>".lang(288)."</legend>";if(DIALECT!="simpledb"){echo"<div id='fieldset-pagination' class='fieldset-content'><ul class='pagination'>",pagination(0,$D);if($D>5)echo$Sc;for($p=max(1,$D-4);$p<min($Ng,$D+5);$p++)echo
pagination($p,$D);if($Ng>0){if($D+5<$Ng)echo$Sc;echo($xd&&$qe!==false?pagination($Ng,$D):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Ng'>".lang(289)."</a>");}echo"</ul></div>";}else{echo"<div id='fieldset-pagination'><ul class='pagination'>",pagination(0,$D);if($D>1)echo$Sc;if($D)echo
pagination($D,$D);if($Ng>$D){echo
pagination($D+1,$D);if($Ng>$D+1)echo$Sc;}echo"</ul></div>";}echo"</fieldset>\n";}echo"<fieldset>","<legend>".lang(290)."</legend><div class='fieldset-content'>";$Lc=($xd?"":"~ ").$qe;echo
checkbox("all",1,0,($qe!==false?($xd?"":"~ ").lang(193,$qe):""),"countRows.call(this, '$Lc');")."\n","</div></fieldset>\n";if(Admin::get()->isDataEditAllowed()){echo"<fieldset",($_GET["modify"]?'':' class="jsonly"'),">","<legend>",lang(284),"</legend>";$Sj=($_GET["modify"]?"":" data-inline-edit='1'".($id?"":" disabled"));echo"<div class='fieldset-content'",($_GET["modify"]?"":" title='".lang(279)."'"),">","<input type='submit' class='button' id='modify-save' value='",lang(116),"'",$Sj,">","</div>","</fieldset>\n","<fieldset>","<legend>",lang(166)," <span id='selected'></span></legend>","<div class='fieldset-content'>","<input type='submit' class='button' name='edit' value='",lang(39),"'> ","<input type='submit' class='button' name='clone' value='",lang(275),"'> ","<input type='submit' class='button' name='delete' value='",lang(120),"'>",confirm(),"</div>","</fieldset>\n";}$me=Admin::get()->getDumpFormats();foreach((array)$_GET["columns"]as$b){if($b["fun"]){unset($me['sql']);break;}}if($me){print_fieldset_start("export",lang(74)." <span id='selected2'></span>","export");echo
html_select("format",$me,$N->getParameter("exportFormat"));$pi=Admin::get()->getDumpOutputs();echo($pi?" ".html_select("output",$pi,$N->getParameter("exportOutput")):"")," <input type='submit' class='button' name='export' value='".lang(74)."'>\n";print_fieldset_end("export");}echo"</div></div>\n",script("initTableFooter()");}echo"</div>\n";if(Admin::get()->isDataEditAllowed()){echo"<p>","<a href='#import'>",icon("import"),lang(73),"</a>",script("qsl('a').onclick = partial(toggle, 'import');",""),"</p>","<p id='import'",($_POST["import"]?"":" class='hidden'"),">";if(ini_bool("file_uploads"))echo"<input type='file' name='csv_file'> ",html_select("import_format",["csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"],$N->getParameter("exportFormat"))," <input type='submit' class='button default' name='import' value='".lang(73)."'>",file_upload_form_script("selection_form","csv_file");else
echo
lang(200);echo"</p>";}echo
input_token(),"</form>\n",(!$_e&&$L?"":script("tableCheck();"));}else
echo"</div>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$O=isset($_GET["status"]);$S=$O?lang(159):lang(158);page_header($S,[$S]);$Gm=($O?Admin::get()->getStatusVariables():Admin::get()->getServerVariables());if(!$Gm)echo"<p class='message'>",lang(91),"</p>\n";else{echo"<div class='scrollable'><table>\n";foreach($Gm
as$J){echo"<tr>";$t=array_shift($J);echo"<th><code class='jush-".DIALECT.($O?"status":"set")."'>".h($t)."</code></th>";foreach($J
as$W)echo"<td>",nl2br(h($W)),"</td>";echo"</tr>\n";}echo"</table></div>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$bl=["Data_length"=>0,"Index_length"=>0,"Data_free"=>0];$e=[];$sc=null;foreach(table_status()as$_=>$R){$e["Comment-$_"]=h($R["Comment"]);if(!is_view($R)||preg_match('~materialized~i',$R["Engine"])){$e["Engine-$_"]=h($R["Engine"]);$Bb=isset($R["Collation"])?$R["Collation"]:"";if($Bb==""){if($sc===null)$sc=db_collation(DB,collations())??"";$Bb=$sc;}$e["Collation-$_"]=h($Bb);foreach($bl+["Auto_increment"=>0,"Rows"=>0]as$t=>$W){if($R[$t]!=""){$W=format_number($R[$t]);if($W>=0)$e["$t-$_"]=($t=="Rows"?format_rows($R):$W);if(isset($bl[$t]))$bl[$t]+=($R["Engine"]!="InnoDB"||$t!="Data_free"?$R[$t]:0);}elseif(array_key_exists($t,$R))$e["$t-$_"]="?";}}}if(function_exists('AdminNeo\db_status'))$bl=db_status();foreach($bl
as$t=>$W)$e["sum-$t"]=format_number($W);echo
json_encode($e,JSON_UNESCAPED_UNICODE);}elseif($_GET["script"]=="kill")Connection::get()->query("KILL ".number($_POST["kill"]));else{$e=[];foreach(count_tables(Admin::get()->getDatabases(false))as$g=>$W){$e["tables-$g"]=$W;$e["size-$g"]=db_size($g);}echo
json_encode($e,JSON_UNESCAPED_UNICODE);}exit;}else{$zl=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($zl&&!$_POST["search"]){$H=true;$Wg="";if(DIALECT=="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"])$H=truncate_tables($_POST["tables"]);$Wg=lang(291);}elseif($_POST["move"]){$H=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Wg=lang(292);}elseif($_POST["copy"]){$H=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$Wg=lang(293);}elseif($_POST["drop"]){if($_POST["views"])$H=drop_views($_POST["views"]);if($H&&$_POST["tables"])$H=drop_tables($_POST["tables"]);$Wg=lang(294);}elseif(DIALECT=="sqlite"&&$_POST["check"]){foreach((array)$_POST["tables"]as$Q){foreach(get_rows("PRAGMA integrity_check(".q($Q).")")as$J)$Wg
.="<b>".h($Q)."</b>: ".h($J["integrity_check"])."<br>";}}elseif(DIALECT!="sql"){$H=(DIALECT=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?" ANALYZE":""),(array)$_POST["tables"]));$Wg=lang(295);}elseif(!$_POST["tables"])$Wg=lang(78);elseif($H=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('AdminNeo\idf_escape',$_POST["tables"])))){while($J=$H->fetchAssoc())$Wg
.="<b>".h($J["Table"])."</b>: ".h($J["Msg_text"])."<br>";}queries_redirect($_SERVER["REQUEST_URI"],$Wg,(bool)$H);}if($_GET["ns"]=="")page_header(lang(31).": ".h(DB),true);else
page_header(lang(81).": ".h($_GET["ns"]),true);Admin::get()->printDatabaseMenu();if($_GET["ns"]===""){echo"<h2 id='schemas'>".lang(296)."</h2>\n";$Yj=Admin::get()->getSchemas();if(!$Yj)echo"<p class='message'>".lang(297)."\n";else{echo"<div class='scrollable'>\n","<table class='nowrap'>\n",'<thead><tr class="wrap"><th>',lang(81),"</th></tr></thead>";foreach($Yj
as$_)echo"<tr><th><a href='",h(ME),"ns=".urlencode($_),"' title='",lang(298),"'>".h($_)."</a></th></tr>";echo'</table></div>';}echo'<p class="links"><a href="'.h(ME).'scheme=">'.icon("database-add").lang(76)."</a>\n";}else{echo"<h2 id='tables-views'>".lang(299)."</h2>\n";$tl=['sql'=>'show-table-status.html','mariadb'=>'reference/sql-statements/administrative-sql-statements/show/show-table-status'];$sc=db_collation(DB,collations());$c=["Engine"=>["label"=>lang(171),"doc"=>'',],];if($sc!="")$c["Collation"]=["label"=>lang(46),"doc"=>'',];$c+=["Data_length"=>["label"=>lang(300),"doc"=>doc_link($tl+['pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT','oracle'=>'REFRN20286']),"link"=>"create","title"=>lang(36),],"Index_length"=>["label"=>lang(301),"doc"=>doc_link($tl+['pgsql'=>'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT']),"link"=>"indexes","title"=>lang(175),],"Data_free"=>["label"=>lang(302),"doc"=>doc_link($tl),"link"=>"edit","title"=>lang(8),],"Auto_increment"=>["label"=>lang(48),"doc"=>'',"link"=>"auto_increment=1&create","title"=>lang(36),],"Rows"=>["label"=>lang(303),"doc"=>doc_link($tl+['pgsql'=>'catalog-pg-class.html#CATALOG-PG-CLASS','oracle'=>'REFRN20286']),"link"=>"select","title"=>lang(34),],];if(support("comment"))$c["Comment"]=["label"=>lang(47),"doc"=>doc_link($tl+['pgsql'=>'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE']),];$C=(is_string($_GET["order"])?$_GET["order"]:"");$Dc=null;if(preg_match('~^(.+)-(asc|desc)$~',$C,$y)){$C=$y[1];$Dc=($y[2]=="desc");}if($C!="__table"&&!isset($c[$C]))$C="";if($Dc===null)$Dc=isset($c[$C]["link"]);$bn=($C!=""&&$C!="__table")||support("fast_status");$xl=($bn?table_status():tables_list());if(!$xl)echo"<p class='message'>".lang(78)."\n";else{echo"<form action='' method='post'>\n","<div class='table-footer-parent'>\n";if(support("table")){echo"<div class='field-sets'>\n","<fieldset><legend>".lang(304)." <span id='selected2'></span></legend><div class='fieldset-content'>",html_select("op",Admin::get()->getOperators(),isset($_POST["op"])?$_POST["op"]:Driver::get()->getLikeOperator()),"<input type='search' class='input' name='query' value='".h($_POST["query"])."'>",script("qsl('input').onkeydown = event => bodyKeydown(event, 'search');","")," <input type='submit' class='button' name='search' value='".lang(60)."'>\n","</div></fieldset>\n","</div>\n";if($_POST["search"]&&$_POST["query"]!=""){$_GET["where"][0]["op"]=$_POST["op"];search_tables();}}echo"<div class='scrollable'>\n","<table class='nowrap checkable'>\n",'<thead><tr class="wrap">','<th class="actions"><input id="check-all" type="checkbox" class="input jsonly" title="'.lang(189).'">'.script("gid('check-all').onclick = partial(formCheck, /^(tables|views)\[/);","");$rh=($C==""||$C=="__table");$nl=($rh&&!$Dc?ME."order=__table-desc":substr(ME,0,-1));$th=($rh&&DIALECT!="sqlite");echo'<th'.($th?" aria-sort='".($Dc?"descending":"ascending")."'":'').'><a href="'.h($nl).'">'.lang(9).'</a>';foreach($c
as$t=>$b){$Fc=($t===$C?!$Dc:isset($b["link"]));echo'<th'.($t===$C?" aria-sort='".($Dc?"descending":"ascending")."'":'').'><a href="'.h(ME)."order=$t-".($Fc?"desc":"asc").'">'.$b["label"].'</a>'.$b["doc"];}echo"</thead>\n","<tbody>\n";if($C=="__table"){if($Dc)$xl=array_reverse($xl,true);}elseif($C){uasort($xl,function($sa,$Ta)use($C,$Dc){$cn=isset($sa[$C])?$sa[$C]:null;$dn=isset($Ta[$C])?$Ta[$C]:null;$H=($cn<$dn?-1:($cn>$dn?1:0));return($Dc?-$H:$H);});}$bl=["Data_length"=>0,"Index_length"=>0,"Data_free"=>0];$vl=0;foreach($xl
as$_=>$O){$Lm=($bn?is_view($O):$O!==null&&!preg_match('~table|sequence~i',$O));$pd=($bn?(isset($O["Engine"])?$O["Engine"]:""):$O);$q=h("Table-".$_);echo'<tr><th class="actions">'.checkbox(($Lm?"views[]":"tables[]"),$_,in_array("$_",$zl,true),"","","",$q);if(!Admin::get()->getSettings()->isSelectionPreferred()&&(support("table")||support("indexes")))$ua="table";else$ua="select";echo"<th><a href='",h(ME),"$ua=",urlencode($_),"' id='$q'>",h($_),"</a></th>";if($Lm&&!preg_match('~materialized~i',$pd)){$S=lang(170);$Hb=count($c)-(support("comment")?2:1);echo'<td colspan="'.$Hb.'">'.(support("view")?"<a href='".h(ME)."view=".urlencode($_)."' title='".lang(37)."'>$S</a>":$S),"<td align='right'><a href='".h(ME)."select=".urlencode($_)."' title='".lang(34)."'>?</a>";}else{foreach($c
as$t=>$b){if($t=="Comment")continue;$q=" id='$t-".h($_)."'";$w=isset($b["link"])?$b["link"]:"";if(!$w){$W="";if($bn){$W=isset($O[$t])?$O[$t]:"";if($t=="Collation"&&$W=="")$W=$sc;}echo"<td$q>".h($W);continue;}$W="?";if($bn){$A=isset($O[$t])?$O[$t]:"";if(is_numeric($A)&&$A>=0){$W=($t=="Rows"?format_rows($O):format_number($A));if(isset($bl[$t])&&($pd!="InnoDB"||$t!="Data_free"))$bl[$t]+=$A;}}echo"<td align='right'>".(support("table")||$t=="Rows"||(support("indexes")&&$t!="Data_length")?"<a href='".h(ME."$w=").urlencode($_)."'$q title='".$b["title"]."'>".h($W)."</a>":"<span$q>".h($W)."</span>");}$vl++;}echo(support("comment")?"<td id='Comment-".h($_)."'>".($bn?h(isset($O["Comment"])?$O["Comment"]:""):""):""),"\n";}echo"</tbody>\n",script("mixin(qsl('tbody'), {onclick: tableClick, ondblclick: event => tableClick(event, true)});"),"<tfoot><tr>","<td><th>".lang(276,count($xl)),"<td>".h(DIALECT=="sql"?Connection::get()->getValue("SELECT @@default_storage_engine"):""),($sc!=""?"<td>".h($sc):"");if($bn&&function_exists('AdminNeo\db_status'))$bl=db_status();foreach($bl
as$t=>$al)echo"<td align='right' id='sum-$t'>".($bn?format_number($al):"");echo"<td></td><td></td>";if(support("comment"))echo"<td></td>";echo"</tr></tfoot>\n","</table>\n","</div>\n",($bn?"":script("ajaxSetHtml('".js_escape(ME)."script=db');"));if(Admin::get()->isDataEditAllowed()){echo"<div class='table-footer'><div class='field-sets'>\n";$Dm="<input type='submit' class='button' value='".lang(305)."'> ".help_script("VACUUM");$Wh="<input type='submit' class='button' name='optimize' value='".lang(306)."'> ".help_script(DIALECT=="sql"?"OPTIMIZE TABLE":"VACUUM ANALYZE");echo"<fieldset><legend>".lang(166)." <span id='selected'></span></legend><div class='fieldset-content'>".(DIALECT=="sqlite"?$Dm."<input type='submit' class='button' name='check' value='".lang(307)."'> ".help_script("PRAGMA integrity_check"):(DIALECT=="pgsql"?$Dm.$Wh:(DIALECT=="sql"?"<input type='submit' class='button' value='".lang(308)."'> ".help_script("ANALYZE TABLE").$Wh."<input type='submit' class='button' name='check' value='".lang(307)."'> ".help_script("CHECK TABLE")."<input type='submit' class='button' name='repair' value='".lang(309)."'> ".help_script("REPAIR TABLE"):"")))."<input type='submit' class='button' name='truncate' value='".lang(310)."'> ".help_script(DIALECT=="sqlite"?"DELETE":("TRUNCATE".(DIALECT=="pgsql"?"":" TABLE"))).confirm()."<input type='submit' class='button' name='drop' value='".lang(167)."'>".help_script("DROP TABLE").confirm()."\n";$f=(support("scheme")?Admin::get()->getSchemas():Admin::get()->getDatabases());echo"</div></fieldset>\n";if(count($f)!=1&&DIALECT!="sqlite"){echo"<fieldset><legend>".lang(311)." <span id='selected3'></span></legend><div>";$g=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo($f?html_select("target",$f,$g,"","label-move"):'<input class="input" name="target" value="'.h($g).'" autocapitalize="off">')," <input type='submit' class='button' name='move' value='".lang(312)."'>",(support("copy")?" <input type='submit' class='button' name='copy' value='".lang(313)."'> ".checkbox("overwrite",1,$_POST["overwrite"],lang(314)):""),"</div></fieldset>\n";}echo
input_hidden("all"),script("qsl('input').onclick = partial(countTables, $vl);"),input_token(),"</div></div>\n",script("initTableFooter()");}echo"</div>\n","</form>\n",script("tableCheck();");}echo'<p class="links"><a href="',h(ME),'create=">',icon("table-add"),lang(77),"</a>\n";if(support("view"))echo'<a href="',h(ME),'view=">',icon("view-add"),lang(246),"</a>\n";if(support("routine")){echo"<h2 id='routines'>".lang(186)."</h2>\n";$Oj=routines();if($Oj){$Nb=$Oj[0]["ROUTINE_COMMENT"]!==null;echo"<table>\n",'<thead><tr>','<th>',lang(223),'</th><td>',lang(45),'</td><td>',lang(254),"</td>";if($Nb)echo"<td>",lang(47),"</td>";echo"<td></td>","</tr></thead>\n";foreach($Oj
as$J){$_=($J["SPECIFIC_NAME"]==$J["ROUTINE_NAME"]?"":"&name=".urlencode($J["ROUTINE_NAME"]));echo'<tr>','<th><a href="',h(ME.($J["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($J["SPECIFIC_NAME"]).$_),'">',h($J["ROUTINE_NAME"]),'</a></th>','<td>',h($J["ROUTINE_TYPE"]),'</td>','<td>',h($J["DTD_IDENTIFIER"]),'</td>';if($Nb)echo'<td>',truncate_utf8(preg_replace('~\s{2,}~'," ",trim($J["ROUTINE_COMMENT"])),50),'</td>';echo'<td><a href="'.h(ME.($J["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($J["SPECIFIC_NAME"]).$_).'">'.lang(178)."</a></td>";}echo"</table>\n";}echo'<p class="links">';if(support("procedure"))echo'<a href="',h(ME),'procedure=">',icon("function-add"),lang(253),"</a>";echo'<a href="',h(ME),'function=">',icon("function-add"),lang(252),"</a>\n","</p>\n";}if(support("sequence")){echo"<h2 id='sequences'>".lang(315)."</h2>\n";$nk=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($nk){echo"<table>\n","<thead><tr><th>",lang(223),"</th><td></td></tr></thead>\n";foreach($nk
as$W)echo"<tr>","<th>",h($W),"</th>","<td><a href='",h(ME),"sequence=",urlencode($W),"'>",lang(178),"</a></td>\n";echo"</table>\n";}echo"<p class='links'><a href='",h(ME),"sequence='>",icon("add"),lang(259),"</a></p>\n";}if(support("type")){echo"<h2 id='user-types'>".lang(110)."</h2>\n";$Am=types();if($Am){echo"<table>\n","<thead><tr><th>",lang(223),"</th><td></td></tr></thead>\n";foreach($Am
as$W)echo"<tr>","<th>",h($W),"</th>","<td><a href='",h(ME),"type=",urlencode($W),"'>",lang(178),"</a></td>\n";echo"</table>\n";}echo"<p class='links'><a href='",h(ME),"type='>",icon("add"),lang(260),"</a></p>\n";}}}page_footer();