Site version 2.0 #3

Merged
ubergeek merged 83 commits from 2.0 into master 2019-01-14 22:29:57 +00:00
74 changed files with 29780 additions and 40382 deletions

18
FOOTER.php Executable file → Normal file
View File

@ -1,11 +1,7 @@
<hr>
<p><address>
<p>Copyright &copy; 2018 <a href="/~amcclure">Anton McClure</a> <a href="mailto:amcclure@ttm.sh">&lt;amcclure@ttm.sh&gt;</a><br>
Copyright &copy; 2018 <a href="/~ubergeek">Ubergeek</a> <a href="mailto:ubergeek@yourtilde.com">&lt;ubergeek@yourtilde.com&gt;</a></p>
<p>This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License</a>. Permissions beyond the scope of this license may be available at <a xmlns:cc="http://creativecommons.org/ns#" href="/copyright.php" rel="cc:morePermissions">https://www.thunix.cf/copyright.php</a>.</p>
<p><?php echo "Page last updated on " . date ("Y-m-d\TH:i:sO.", getlastmod());?></p>
<p>You may have to refresh the page to see any changes or updates.</p>
<p>All questions, comments, and concerns about this site should be emailed to <a href="mailto:amcclure@ttm.sh">amcclure@ttm.sh</a>.</p>
</address></p>
</body>
</html>
<div id="footer">
<p>This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">CC BY-NC-ND 4.0 license</a>. Permissions beyond the scope of this license may be available at <a href="/copyright.php">https://www.thunix.cf/copyright.php</a>.<br>
<?php echo "Page last updated on " . date ("Y-m-d\TH:i:sO.", getlastmod());?><br>
You may have to refresh the page to see any changes or updates.<br>
All questions, comments, and concerns about this site should be sent to <a href="/contact.php">the amdinistration team</a>.</p>
<p>Created with valid <a href="http://validator.w3.org/check?uri=referer">HTML</a> and <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> code.</p>
</div></body></html>

13
HEADER.php Executable file → Normal file
View File

@ -1,4 +1,9 @@
<?php include 'HEADERS.php';?>
<center><h1>thunix Shell Provider and Web Host</h1></center><hr>
<center><p><?php include 'MENU.php';?></p></center>
<hr>
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="description" content="thunix Shell Provider and Web Host & thunix Phoenix Project">
<meta name="keywords" content="thunix,Shell,Provider,And,Web,Host,Phoenix,UNIX,Linux,HTML,CSS,XML,JavaScript,Gnu,Ubuntu,Debian,Arch,Mirrors,Mirror,Forums,Tildeverse">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="/site.css" rel="stylesheet" type="text/css" media="all">
<link href="/favicon.png" rel="icon">

44
MENU.php Executable file → Normal file
View File

@ -1,5 +1,39 @@
<a href="index.php">Home</a> |
<a href="faq.php">FAQ</a> |
<a href="tos.php">Terms of Service</a> |
<a href="contact.php">Contact Us</a> |
<a href="signup.php">Sign Up</a>
<div id="sidebar">
<ul>
<li>
<div style="clear: both;">&nbsp;</div>
</li>
<li>
<h2>Main Menu</h2>
<ul>
<li><a href="/">Home</a></li>
<li><a href="faq.php">FAQ</a></li>
<li><a href="tos.php">Terms of Service</a></li>
<li><a href="contact.php">Contact Us</a></li>
<li><a href="signup.php">Sign Up</a></li>
<li><a href="abuse.php">Report Abuse</a></li>
<li><a href="donate.php">Donations</a></li>
</ul>
</li>
<li>
<h2>Main Resources On This Site</h2>
<ul>
<li><a href="users.php">User Web Directories</a></li>
<li><a href="server.php">Status of thunix Servers and Services</a></li>
</ul>
<li>
<h2>Server Staff</h2>
<ul>
<li><a href="/~amcclure/">Anton McClure</a></li>
<li><a href="/~ubergeek/">Ubergeek</a></li>
</ul>
<li>
<h2>Other Information</h2>
<ul>
<li>(Coming soon)</li>
</ul>
</li>
</ul>
</div>
<div style="clear: both;">&nbsp;</div>
</div></div></div></div>

View File

@ -1,3 +1,5 @@
# www
# thunix 2.0 website update
This is the code powering the website for thunix, made by hexhaxtron, amcclure, and ubergeek.
This is the code powering the website for thunix, originally founded by hexhaxtron. Since the original site went down, amcclure and ubergeek revived the site, though with only the bare necessities.
These updates are designed to not only beautify the website with updated CSS and fully compliant HTML5 code, but also to automate visitor interaction with site administration. This includes PHP forms for emailing administrators with general inquiries, abuse reports and signing up for accounts.

860
abuse.admin.php Normal file
View File

@ -0,0 +1,860 @@
<?php
require_once( dirname(__FILE__).'/abuse.lib.php' );
define( 'PHPFMG_USER', "abuse@thunix.cf" ); // must be a email address. for sending password to you.
define( 'PHPFMG_PW', "a31add" );
?>
<?php
/**
* GNU Library or Lesser General Public License version 2.0 (LGPLv2)
*/
# main
# ------------------------------------------------------
error_reporting( E_ERROR ) ;
phpfmg_admin_main();
# ------------------------------------------------------
function phpfmg_admin_main(){
$mod = isset($_REQUEST['mod']) ? $_REQUEST['mod'] : '';
$func = isset($_REQUEST['func']) ? $_REQUEST['func'] : '';
$function = "phpfmg_{$mod}_{$func}";
if( !function_exists($function) ){
phpfmg_admin_default();
exit;
};
// no login required modules
$public_modules = false !== strpos('|captcha||ajax|', "|{$mod}|");
$public_functions = false !== strpos('|phpfmg_ajax_submit||phpfmg_mail_request_password||phpfmg_filman_download||phpfmg_image_processing||phpfmg_dd_lookup|', "|{$function}|") ;
if( $public_modules || $public_functions ) {
$function();
exit;
};
return phpfmg_user_isLogin() ? $function() : phpfmg_admin_default();
}
function phpfmg_ajax_submit(){
$phpfmg_send = phpfmg_sendmail( $GLOBALS['form_mail'] );
$isHideForm = isset($phpfmg_send['isHideForm']) ? $phpfmg_send['isHideForm'] : false;
$response = array(
'ok' => $isHideForm,
'error_fields' => isset($phpfmg_send['error']) ? $phpfmg_send['error']['fields'] : '',
'OneEntry' => isset($GLOBALS['OneEntry']) ? $GLOBALS['OneEntry'] : '',
);
@header("Content-Type:text/html; charset=$charset");
echo "<html><body><script>
var response = " . json_encode( $response ) . ";
try{
parent.fmgHandler.onResponse( response );
}catch(E){};
\n\n";
echo "\n\n</script></body></html>";
}
function phpfmg_admin_default(){
if( phpfmg_user_login() ){
phpfmg_admin_panel();
};
}
function phpfmg_admin_panel()
{
if( !phpfmg_user_isLogin() ){
exit;
};
phpfmg_admin_header();
phpfmg_writable_check();
?>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign=top style="padding-left:280px;">
<style type="text/css">
.fmg_title{
font-size: 16px;
font-weight: bold;
padding: 10px;
}
.fmg_sep{
width:32px;
}
.fmg_text{
line-height: 150%;
vertical-align: top;
padding-left:28px;
}
</style>
<script type="text/javascript">
function deleteAll(n){
if( confirm("Are you sure you want to delete?" ) ){
location.href = "admin.php?mod=log&func=delete&file=" + n ;
};
return false ;
}
</script>
<div class="fmg_title">
1. Email Traffics
</div>
<div class="fmg_text">
<a href="admin.php?mod=log&func=view&file=1">view</a> &nbsp;&nbsp;
<a href="admin.php?mod=log&func=download&file=1">download</a> &nbsp;&nbsp;
<?php
if( file_exists(PHPFMG_EMAILS_LOGFILE) ){
echo '<a href="#" onclick="return deleteAll(1);">delete all</a>';
};
?>
</div>
<div class="fmg_title">
2. Form Data
</div>
<div class="fmg_text">
<a href="admin.php?mod=log&func=view&file=2">view</a> &nbsp;&nbsp;
<a href="admin.php?mod=log&func=download&file=2">download</a> &nbsp;&nbsp;
<?php
if( file_exists(PHPFMG_SAVE_FILE) ){
echo '<a href="#" onclick="return deleteAll(2);">delete all</a>';
};
?>
</div>
<div class="fmg_title">
3. Form Generator
</div>
<div class="fmg_text">
<a href="http://www.formmail-maker.com/generator.php" onclick="document.frmFormMail.submit(); return false;" title="<?php echo htmlspecialchars(PHPFMG_SUBJECT);?>">Edit Form</a> &nbsp;&nbsp;
<a href="http://www.formmail-maker.com/generator.php" >New Form</a>
</div>
<form name="frmFormMail" action='http://www.formmail-maker.com/generator.php' method='post' enctype='multipart/form-data'>
<input type="hidden" name="uuid" value="<?php echo PHPFMG_ID; ?>">
<input type="hidden" name="external_ini" value="<?php echo function_exists('phpfmg_formini') ? phpfmg_formini() : ""; ?>">
</form>
</td>
</tr>
</table>
<?php
phpfmg_admin_footer();
}
function phpfmg_admin_header( $title = '' ){
header( "Content-Type: text/html; charset=" . PHPFMG_CHARSET );
?>
<html>
<head>
<title><?php echo '' == $title ? '' : $title . ' | ' ; ?>PHP FormMail Admin Panel </title>
<meta name="keywords" content="PHP FormMail Generator, PHP HTML form, send html email with attachment, PHP web form, Free Form, Form Builder, Form Creator, phpFormMailGen, Customized Web Forms, phpFormMailGenerator,formmail.php, formmail.pl, formMail Generator, ASP Formmail, ASP form, PHP Form, Generator, phpFormGen, phpFormGenerator, anti-spam, web hosting">
<meta name="description" content="PHP formMail Generator - A tool to ceate ready-to-use web forms in a flash. Validating form with CAPTCHA security image, send html email with attachments, send auto response email copy, log email traffics, save and download form data in Excel. ">
<meta name="generator" content="PHP Mail Form Generator, phpfmg.sourceforge.net">
<style type='text/css'>
body, td, label, div, span{
font-family : Verdana, Arial, Helvetica, sans-serif;
font-size : 12px;
}
</style>
</head>
<body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
<table cellspacing=0 cellpadding=0 border=0 width="100%">
<td nowrap align=center style="background-color:#024e7b;padding:10px;font-size:18px;color:#ffffff;font-weight:bold;width:250px;" >
Form Admin Panel
</td>
<td style="padding-left:30px;background-color:#86BC1B;width:100%;font-weight:bold;" >
&nbsp;
<?php
if( phpfmg_user_isLogin() ){
echo '<a href="admin.php" style="color:#ffffff;">Main Menu</a> &nbsp;&nbsp;' ;
echo '<a href="admin.php?mod=user&func=logout" style="color:#ffffff;">Logout</a>' ;
};
?>
</td>
</table>
<div style="padding-top:28px;">
<?php
}
function phpfmg_admin_footer(){
?>
</div>
<div style="color:#cccccc;text-decoration:none;padding:18px;font-weight:bold;">
:: <a href="http://phpfmg.sourceforge.net" target="_blank" title="Free Mailform Maker: Create read-to-use Web Forms in a flash. Including validating form with CAPTCHA security image, send html email with attachments, send auto response email copy, log email traffics, save and download form data in Excel. " style="color:#cccccc;font-weight:bold;text-decoration:none;">PHP FormMail Generator</a> ::
</div>
</body>
</html>
<?php
}
function phpfmg_image_processing(){
$img = new phpfmgImage();
$img->out_processing_gif();
}
# phpfmg module : captcha
# ------------------------------------------------------
function phpfmg_captcha_get(){
$img = new phpfmgImage();
$img->out();
//$_SESSION[PHPFMG_ID.'fmgCaptchCode'] = $img->text ;
$_SESSION[ phpfmg_captcha_name() ] = $img->text ;
}
function phpfmg_captcha_generate_images(){
for( $i = 0; $i < 50; $i ++ ){
$file = "$i.png";
$img = new phpfmgImage();
$img->out($file);
$data = base64_encode( file_get_contents($file) );
echo "'{$img->text}' => '{$data}',\n" ;
unlink( $file );
};
}
function phpfmg_dd_lookup(){
$paraOk = ( isset($_REQUEST['n']) && isset($_REQUEST['lookup']) && isset($_REQUEST['field_name']) );
if( !$paraOk )
return;
$base64 = phpfmg_dependent_dropdown_data();
$data = @unserialize( base64_decode($base64) );
if( !is_array($data) ){
return ;
};
foreach( $data as $field ){
if( $field['name'] == $_REQUEST['field_name'] ){
$nColumn = intval($_REQUEST['n']);
$lookup = $_REQUEST['lookup']; // $lookup is an array
$dd = new DependantDropdown();
echo $dd->lookupFieldColumn( $field, $nColumn, $lookup );
return;
};
};
return;
}
function phpfmg_filman_download(){
if( !isset($_REQUEST['filelink']) )
return ;
$filelink = base64_decode($_REQUEST['filelink']);
$file = PHPFMG_SAVE_ATTACHMENTS_DIR . basename($filelink);
// 2016-12-05: to prevent *LFD/LFI* attack. patch provided by Pouya Darabi, a security researcher in cert.org
$real_basePath = realpath(PHPFMG_SAVE_ATTACHMENTS_DIR);
$real_requestPath = realpath($file);
if ($real_requestPath === false || strpos($real_requestPath, $real_basePath) !== 0) {
return;
};
if( !file_exists($file) ){
return ;
};
phpfmg_util_download( $file, $filelink );
}
class phpfmgDataManager
{
var $dataFile = '';
var $columns = '';
var $records = '';
function __construct(){
$this->dataFile = PHPFMG_SAVE_FILE;
}
function phpfmgDataManager(){
$this->dataFile = PHPFMG_SAVE_FILE;
}
function parseFile(){
$fp = @fopen($this->dataFile, 'rb');
if( !$fp ) return false;
$i = 0 ;
$phpExitLine = 1; // first line is php code
$colsLine = 2 ; // second line is column headers
$this->columns = array();
$this->records = array();
$sep = chr(0x09);
while( !feof($fp) ) {
$line = fgets($fp);
$line = trim($line);
if( empty($line) ) continue;
$line = $this->line2display($line);
$i ++ ;
switch( $i ){
case $phpExitLine:
continue;
break;
case $colsLine :
$this->columns = explode($sep,$line);
break;
default:
$this->records[] = explode( $sep, phpfmg_data2record( $line, false ) );
};
};
fclose ($fp);
}
function displayRecords(){
$this->parseFile();
echo "<table border=1 style='width=95%;border-collapse: collapse;border-color:#cccccc;' >";
echo "<tr><td>&nbsp;</td><td><b>" . join( "</b></td><td>&nbsp;<b>", $this->columns ) . "</b></td></tr>\n";
$i = 1;
foreach( $this->records as $r ){
echo "<tr><td align=right>{$i}&nbsp;</td><td>" . join( "</td><td>&nbsp;", $r ) . "</td></tr>\n";
$i++;
};
echo "</table>\n";
}
function line2display( $line ){
$line = str_replace( array('"' . chr(0x09) . '"', '""'), array(chr(0x09),'"'), $line );
$line = substr( $line, 1, -1 ); // chop first " and last "
return $line;
}
}
# end of class
# ------------------------------------------------------
class phpfmgImage
{
var $im = null;
var $width = 73 ;
var $height = 33 ;
var $text = '' ;
var $line_distance = 8;
var $text_len = 4 ;
function __construct( $text = '', $len = 4 ){
$this->phpfmgImage( $text, $len );
}
function phpfmgImage( $text = '', $len = 4 ){
$this->text_len = $len ;
$this->text = '' == $text ? $this->uniqid( $this->text_len ) : $text ;
$this->text = strtoupper( substr( $this->text, 0, $this->text_len ) );
}
function create(){
$this->im = imagecreate( $this->width, $this->height );
$bgcolor = imagecolorallocate($this->im, 255, 255, 255);
$textcolor = imagecolorallocate($this->im, 0, 0, 0);
$this->drawLines();
imagestring($this->im, 5, 20, 9, $this->text, $textcolor);
}
function drawLines(){
$linecolor = imagecolorallocate($this->im, 210, 210, 210);
//vertical lines
for($x = 0; $x < $this->width; $x += $this->line_distance) {
imageline($this->im, $x, 0, $x, $this->height, $linecolor);
};
//horizontal lines
for($y = 0; $y < $this->height; $y += $this->line_distance) {
imageline($this->im, 0, $y, $this->width, $y, $linecolor);
};
}
function out( $filename = '' ){
if( function_exists('imageline') ){
$this->create();
if( '' == $filename ) header("Content-type: image/png");
( '' == $filename ) ? imagepng( $this->im ) : imagepng( $this->im, $filename );
imagedestroy( $this->im );
}else{
$this->out_predefined_image();
};
}
function uniqid( $len = 0 ){
$md5 = md5( uniqid(rand()) );
return $len > 0 ? substr($md5,0,$len) : $md5 ;
}
function out_predefined_image(){
header("Content-type: image/png");
$data = $this->getImage();
echo base64_decode($data);
}
// Use predefined captcha random images if web server doens't have GD graphics library installed
function getImage(){
$images = array(
'F152' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QkMZAlhDHaY6IIkFNDAGsDYwBASgiLECxRgdRFDEgHqnMjSIILkvNGpV1NLMrFVRSO4DqQOSjQ5oeoFkKwO6eQ0BU9DFGB0dAlDFWEMZQhlDQwZB+FERYnEfAAa9y0AwZOMeAAAAAElFTkSuQmCC',
'E0D3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWElEQVR4nGNYhQEaGAYTpIn7QkMYAlhDGUIdkMQCGhhDWBsdHQJQxFhbWYGkCIqYSKMrkAxAcl9o1LSVqauilmYhuQ9NHYqYCEE7MN2Czc0DFX5UhFjcBwAy2c6h5bRojwAAAABJRU5ErkJggg==',
'DA83' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7QgMYAhhCGUIdkMQCpjCGMDo6OgQgi7WytrI2BDSIoIiJNAKVNQQguS9q6bSVWaGrlmYhuQ9NHVRMNNQVi3kYYlNAelHdEhog0uiA5uaBCj8qQizuAwBqnM8Xn/TN4wAAAABJRU5ErkJggg==',
'F9B7' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7QkMZQ1hDGUNDkMQCGlhbWRsdGkRQxEQaXUEkuhhQXQCS+0Kjli5NDV21MgvJfQENjIFAda0MKHoZQOZNQRVjAYkFMGC4xdEBVQzsZhSxgQo/KkIs7gMAAKfOPXKC2kUAAAAASUVORK5CYII=',
'A527' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdklEQVR4nM2QsQ2AQAhFobgNcB/cAJOjcQSnwIINzhEsdEqv84iWGuUnFK+Alw/7ZQz+lFf8kDsFRc0NS0KGPRs1jApZMglMnHLdNaffuC7rvk3b1PiJw8wO3v5VraxAgXhvZgGJLDkycmSYkw6BfdXfg7nxOwDfRcvyKTTVMwAAAABJRU5ErkJggg==',
'5FA3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7QkNEQx2mMIQ6IIkFNIg0MIQyOgSgiTE6OoBk4DAwQKSBFSgTgOS+sGlTw5auilqahey+VhR1CLHQABTzAqDqkMVEpoDEAlHcwgqxF8XNAxV+VIRY3AcAHwPN0GMD2nwAAAAASUVORK5CYII=',
'243D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7WAMYWhlDGUMdkMREpjBMZW10dAhAEgtoZQhlaAh0EEHW3croygBUJ4LsvmlLl66aujJrGrL7AkRakdSBIaODKNBOVPNYgSai2wFkt6K7JTQU080DFX5UhFjcBwC4z8sQZNDF3QAAAABJRU5ErkJggg==',
'EF3D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWUlEQVR4nGNYhQEaGAYTpIn7QkNEQx1DGUMdkMQCGkQaWBsdHQLQxBgaAh1E0MWA6kSQ3BcaNTVs1dSVWdOQ3IemDr95WMTQ3RIaItLAiObmgQo/KkIs7gMAgHLNOkpES64AAAAASUVORK5CYII=',
'48F2' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpI37pjCGsIYGTHVAFgthbWVtYAgIQBJjDBFpdG1gdBBBEmOdAlbXIILkvmnTVoYtDV21KgrJfQEQdY3IdoSGgsxjaEV1C1hsCqoYxC0Ybm5gDA0ZDOFHPYjFfQBilMuTRyxtdgAAAABJRU5ErkJggg==',
'5CAF' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7QkMYQxmmMIaGIIkFNLA2OoQyOjCgiIk0ODo6oogFBog0sDYEwsTATgqbNm3V0lWRoVnI7mtFUYcQC0UVCwCKuaKpE5nC2oguxhrAGIph3gCFHxUhFvcBAP3RyzAmLqHvAAAAAElFTkSuQmCC',
'19B0' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7GB0YQ1hDGVqRxVgdWFtZGx2mOiCJiTqINLo2BAQEoOgFijU6OogguW9l1tKlqaErs6YhuQ9oRyCSOqgYA9C8QDQxFix2YHFLCKabByr8qAixuA8AyM3KUvjtMMoAAAAASUVORK5CYII=',
'2105' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nM2QsRHAIAwDReENGAiK9ErhIkxDwwYkG6RhykDnHCmTu1idTrL/jDZNxp/0CZ8QRHVK4/nqCHXB5liELsabhwJKXpdg+Y6WzralZPk4cszedPv2yZOeHDes50dbQcunKoqKPfzgfy/qge8CQVvIaymcbJsAAAAASUVORK5CYII=',
'0F97' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7GB1EQx1CGUNDkMRYA0QaGB0dGkSQxESmiDSwNgSgiAW0QsQCkNwXtXRq2MrMqJVZSO4DqWMICWhlQNMLJKcwoNnB2BAQwIDhFkcHVDcD9YYyoogNVPhREWJxHwAt+8sjvlP2ygAAAABJRU5ErkJggg==',
'77F7' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYklEQVR4nGNYhQEaGAYTpIn7QkNFQ11DA0NDkEVbGRpdgbQIIbEpDK2sQDoA2X1Rq6YtDV21MgvJfYwODAGsIBOQ9LICRVlBJiCJiQBFgWIByGIBYFGgCQTEBir8qAixuA8A5/nK1kyB4VAAAAAASUVORK5CYII=',
'2160' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcElEQVR4nGNYhQEaGAYTpIn7WAMYAhhCGVqRxUSmMAYwOjpMdUASC2hlDWBtcAgIQNbdygAUY3QQQXbftFVRS6euzJqG7D6gHayOjjB1YMjoANIbiCLG2gASC0CxAyiP4ZbQUNZQdDcPVPhREWJxHwBFackYlJahVAAAAABJRU5ErkJggg==',
'6978' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdUlEQVR4nGNYhQEaGAYTpIn7WAMYQ1hDA6Y6IImJTGFtZWgICAhAEgtoEWl0aAh0EEEWawCKNTrA1IGdFBm1dGnW0lVTs5DcFzKFMdBhCgOqea0MQJ2MqOa1sjQ6OqCKgdzC2oCqF+zmBgYUNw9U+FERYnEfAJtEzRM1OoL1AAAAAElFTkSuQmCC',
'CE84' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYUlEQVR4nGNYhQEaGAYTpIn7WENEQxlCGRoCkMREWkUaGB0dGpHFAhpFGlgbAlpRxBrA6qYEILkvatXUsFWhq6KikNwHUefogK6XtSEwNATTDmxuQRHD5uaBCj8qQizuAwDuiM2jcyLlCAAAAABJRU5ErkJggg==',
'00F1' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7GB0YAlhDA1qRxVgDGENYGximIouJTGFtBYqFIosFtIo0ujYwwPSCnRS1dNrK1NBVS5Hdh6YOpxjUDmxuQREDuxnoloBBEH5UhFjcBwAh48qTb0HaGAAAAABJRU5ErkJggg==',
'684F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7WAMYQxgaHUNDkMREprC2MrQ6OiCrC2gRaXSYiibWAFQXCBcDOykyamXYyszM0Cwk94UAzWNtRNPbKtLoGhqIIeaApg7sFjQxqJtRxAYq/KgIsbgPANY4ywmw5yzvAAAAAElFTkSuQmCC',
'39CF' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYUlEQVR4nGNYhQEaGAYTpIn7RAMYQxhCHUNDkMQCprC2MjoEOqCobBVpdG0QRBWbAhJjhImBnbQyaunS1FUrQ7OQ3TeFMRBJHdQ8hkZMMRYMO7C5BepmVL0DFH5UhFjcBwAZu8mPc4I00gAAAABJRU5ErkJggg==',
'E7A3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QkNEQx2mMIQ6IIkFNDA0OoQyOgSgiTk6OjSIoIq1sgLJACT3hUatmrZ0VdTSLCT3AeUDkNRBxRgdWEMD0MxjbQCpQxUTAYoForglNAQkFoDi5oEKPypCLO4DAE94zskcm8o0AAAAAElFTkSuQmCC',
'07B8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcElEQVR4nGNYhQEaGAYTpIn7GB1EQ11DGaY6IImxBjA0ujY6BAQgiYlMAYo1BDqIIIkFtDK0siLUgZ0UtXTVtKWhq6ZmIbkPqC6AFc28gFZGB1Y080SmsDagi7EGiDSg62UEqmBFc/NAhR8VIRb3AQDGIcyLWw1K1AAAAABJRU5ErkJggg==',
'719B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkMZAhhCGUMdkEVbGQMYHR0dAlDEWANYGwIdRJDFpjCAxQKQ3Re1KmplZmRoFpL7GB2AdoQEopjH2gAUQzMPyA5gRBMLAImhuSWggTUUw80DFH5UhFjcBwCmSsirRUkFjQAAAABJRU5ErkJggg==',
'691C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7WAMYQximMEwNQBITmcLayhDCECCCJBbQItLoGMLowIIs1iDS6DCF0QHZfZFRS5dmTVuZhey+kCmMgUjqIHpbGRoxxVjAYsh2gN0yBdUtIDczhjqguHmgwo+KEIv7APkGy0sLSVsmAAAAAElFTkSuQmCC',
'B561' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QgNEQxlCGVqRxQKmiDQwOjpMRRFrFWlgbXAIRVMXwtoA1wt2UmjU1KVLp65aiuy+gCkMja6ODqh2tALFQCSqHZhiU1hbGdH0hgYwhgDdHBowCMKPihCL+wAEBs3FJNZm/wAAAABJRU5ErkJggg==',
'EFEB' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAATUlEQVR4nGNYhQEaGAYTpIn7QkNEQ11DHUMdkMQCGkQaWBsYHQKwiIngVgd2UmjU1LCloStDs5DcR6p5eOyAuhkohubmgQo/KkIs7gMAzNXL2UVo758AAAAASUVORK5CYII=',
'2BC3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7WANEQxhCHUIdkMREpoi0MjoEOgQgiQW0ijS6Ngg0iCDrbhVpZQXJIbtv2tSwpatWLc1Cdl8AijowZHQAmceAYh5rA6YdIg2YbgkNxXTzQIUfFSEW9wEAnUDMi4E+pBwAAAAASUVORK5CYII=',
'3209' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdklEQVR4nGNYhQEaGAYTpIn7RAMYQximMEx1QBILmMLayhDKEBCArLJVpNHR0dFBBFlsCkOja0MgTAzspJVRq5YuXRUVFYbsvikMU1gbAqai6G1lCACKNaCKMTowOjqg2AF0SwO6W0QDREMd0Nw8UOFHRYjFfQBU/8uCqGVKHAAAAABJRU5ErkJggg==',
'9F5E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7WANEQ11DHUMDkMREpog0sDYwOiCrC2jFITYVLgZ20rSpU8OWZmaGZiG5j9VVBEgGouhlaMUUEwDbgSoGcgujoyOKGGsAUG8oI4qbByr8qAixuA8A/WjJho2W8hAAAAAASUVORK5CYII=',
'766B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkMZQxhCGUMdkEVbWVsZHR0dAlDERBpZGxwdRJDFpog0sDYwwtRB3BQ1LWzp1JWhWUjuY3QQbWVFM4+1QaTRtSEQxTwRLGIBDZhuCWjA4uYBCj8qQizuAwBOc8rh+GXEWAAAAABJRU5ErkJggg==',
'DBB1' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAV0lEQVR4nGNYhQEaGAYTpIn7QgNEQ1hDGVqRxQKmiLSyNjpMRRFrFWl0bQgIRRMDqYPpBTspaunUsKWhq5Yiuw9NHbJ5hMWmYOqFujk0YBCEHxUhFvcBAK32zxANYpv3AAAAAElFTkSuQmCC',
'271F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7WANEQx2mMIaGIImJTGFodAhhdEBWF9DK0OiIJsbQCoRT4GIQN00DwZWhWcjuCwDCKah6GR2AfDQxViBEFxMBQnSx0FCRBsZQR1S3DFD4URFicR8AxEDIdp5oglcAAAAASUVORK5CYII=',
'9F9F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7WANEQx1CGUNDkMREpog0MDo6OiCrC2gVaWBtCMQnBnbStKlTw1ZmRoZmIbmP1VWkgSEEVS8DUC8DmnkCQDFGNDFsbmENAOoNZUQ1b4DCj4oQi/sAsh/JLHYl18IAAAAASUVORK5CYII=',
'DEDD' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAUUlEQVR4nGNYhQEaGAYTpIn7QgNEQ1lDGUMdkMQCpog0sDY6OgQgi7UCxRoCHURwi4GdFLV0atjSVZFZ05DcR4Re3GJY3ILNzQMVflSEWNwHAKFizVh9TwSKAAAAAElFTkSuQmCC',
'9F74' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7WANEQ11DAxoCkMREpogAyYBGZLGAVrBYK4ZYo8OUACT3TZs6NWzV0lVRUUjuY3UFqpvC6ICslwGkN4AxNARJTAAoxujAgOEW1gZUMdYATLGBCj8qQizuAwBiZM2fhhaKUAAAAABJRU5ErkJggg==',
'9317' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7WANYQximMIaGIImJTBFpZQgB0khiAa0MjY6YYq0MU4A0kvumTV0VtmraqpVZSO5jdQWra0WxGWiewxSQbgQUgIgFMKC7ZQqjA7qbGUMdUcQGKvyoCLG4DwDlGMrwZVHhOwAAAABJRU5ErkJggg==',
'1917' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcElEQVR4nGNYhQEaGAYTpIn7GB0YQximMIaGIImxOrC2MoQwNIggiYk6iDQ6ookxAsUcpjA0BCC5b2XW0qVZ04AUkvuAdgQC1bWi2ssA0jsFVYwFJBaAKgZ0yxSgamS3hDCGMIY6oogNVPhREWJxHwD7/siyYXw2RAAAAABJRU5ErkJggg==',
'DED8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAVklEQVR4nGNYhQEaGAYTpIn7QgNEQ1lDGaY6IIkFTBFpYG10CAhAFmsFijUEOohgiAXA1IGdFLV0atjSVVFTs5Dch6aOgHloYljcgs3NAxV+VIRY3AcAIfXOioZ7rn0AAAAASUVORK5CYII=',
'177F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7GB1EQ11DA0NDkMRYHRgaHRoCHZDViWIRY3RgaGVodISJgZ20MmvVtFVLV4ZmIbkPqC6AYQojml6QKLoYK0QcRUykASSK4pYQTLGBCj8qQizuAwDvO8a5dD0LpAAAAABJRU5ErkJggg==',
'5BC8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7QkNEQxhCHaY6IIkFNIi0MjoEBASgijW6Ngg6iCCJBQaItLI2MMDUgZ0UNm1q2NJVq6ZmIbuvFUUdTAxoHiOKeQGtmHaITMF0C2sAppsHKvyoCLG4DwARFczDMjPWawAAAABJRU5ErkJggg==',
'9803' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7WAMYQximMIQ6IImJTGFtZQhldAhAEgtoFWl0dHRoEEERY21lbQhoCEBy37SpK8OWropamoXkPlZXFHUQCDTPFSiCbJ4AFjuwuQWbmwcq/KgIsbgPAKMBzINB7vefAAAAAElFTkSuQmCC',
'6280' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdElEQVR4nGNYhQEaGAYTpIn7WAMYQxhCGVqRxUSmsLYyOjpMdUASC2gRaXRtCAgIQBZrYGh0dHR0EEFyX2TUqqWrQldmTUNyX8gUhimMCHUQva0MAawNgWhijA6saHYA3dKA7hbWANFQBzQ3D1T4URFicR8ACIvMEh8Xdc4AAAAASUVORK5CYII=',
'8FB8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAVElEQVR4nGNYhQEaGAYTpIn7WANEQ11DGaY6IImJTBFpYG10CAhAEgtoBYo1BDqI4FYHdtLSqKlhS0NXTc1Cch+x5hFhB9TNQDE0Nw9U+FERYnEfAKlyzV+mY8KbAAAAAElFTkSuQmCC',
'A19B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7GB0YAhhCGUMdkMRYAxgDGB0dHQKQxESmsAawNgQ6iCCJBbQygMUCkNwXtXRV1MrMyNAsJPeB1DGEBKKYFxoKFMNiHiM2MTS3BLSyhqK7eaDCj4oQi/sAaB/JdbkYSI0AAAAASUVORK5CYII=',
'0621' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7GB0YQxhCGVqRxVgDWFsZHR2mIouJTBFpZG0ICEUWC2gVAZPI7otaOi1s1cqspcjuC2gVbWVoRbUDqLfRYQqqGMgOhwAsbnFAFQO5mTU0IDRgEIQfFSEW9wEAfkTK5QtOmK0AAAAASUVORK5CYII=',
'3536' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7RANEQxlDGaY6IIkFTBFpYG10CAhAVtkqAiQDHQSQxaaIhDA0Ojogu29l1NSlq6auTM1Cdt8UhkaHRkc084BiQPNEUO3AEAuYwtqK7hbRAMYQdDcPVPhREWJxHwCuwMypBIcJeAAAAABJRU5ErkJggg==',
'1864' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7GB0YQxhCGRoCkMRYHVhbGR0dGpHFRB1EGl0bHFoDUPSytrI2MEwJQHLfyqyVYUunroqKQnIfWJ2jowOqXpB5gaEhGGIBDeh2AN2CIiYagunmgQo/KkIs7gMAhrfK/CzBCWwAAAAASUVORK5CYII=',
'989B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7WAMYQxhCGUMdkMREprC2Mjo6OgQgiQW0ijS6NgQ6iKCIsbayAsUCkNw3berKsJWZkaFZSO5jdWVtZQgJRDGPAWieA5p5AkAxRzQxbG7B5uaBCj8qQizuAwDITssEUwJrEwAAAABJRU5ErkJggg==',
'B6B6' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYklEQVR4nGNYhQEaGAYTpIn7QgMYQ1hDGaY6IIkFTGFtZW10CAhAFmsVaWRtCHQQQFEn0sDa6OiA7L7QqGlhS0NXpmYhuS9giijQPEcM81yB5okQEsPiFmxuHqjwoyLE4j4AOlTN7ga1Fu8AAAAASUVORK5CYII=',
'72EE' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7QkMZQ1hDHUMDkEVbWVtZGxgdUFS2ijS6ootNYUAWg7gpatXSpaErQ7OQ3AdUMQXdPNYGhgB0MREgH10sAKgSU0w01BXdzQMUflSEWNwHABodyPUcVJ3GAAAAAElFTkSuQmCC',
'7E97' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkNFQxlCGUNDkEVbRRoYHR0aRNDEWBsCUMWmQMQCkN0XNTVsZWbUyiwk9zE6AHWFBLQi28sKNilgCrKYCBAyNgQEIIuBbGR0dHRAFQO7GUVsoMKPihCL+wDklssFmdWEOwAAAABJRU5ErkJggg==',
'440F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpI37pjC0MkxhDA1BFgthmMoQyuiArI4xBCji6IgixjqF0ZW1IRAmBnbStGlLly5dFRmaheS+gCkirUjqwDA0VDTUFU0M5BZ0O8DuQ3ML1M2oYgMVftSDWNwHAPTvyNZ7zm8zAAAAAElFTkSuQmCC',
'34C3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7RAMYWhlCHUIdkMQCpjBMZXQIdAhAVglUxdog0CCCLDaF0ZUVpB7JfSujli5dumrV0ixk900RaUVSBzVPNNQVSIug2tGKbgfQLa3obsHm5oEKPypCLO4DAAuZzB0lWiQvAAAAAElFTkSuQmCC',
'1238' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7GB0YQxhDGaY6IImxOrC2sjY6BAQgiYk6iDQ6NAQ6iKDoZWh0QKgDO2ll1qqlq6aumpqF5D6guikMaOYBxQIYMMwDimKIsTZguCVENNQRzc0DFX5UhFjcBwC8z8o6e7NA2QAAAABJRU5ErkJggg==',
'9F61' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7WANEQx1CGVqRxUSmiDQwOjpMRRYLaBVpYG0AqsQQg+sFO2na1KlhS6euWorsPlZXoDpHBxQ7GMB6A1DEBLCIQd2CIsYaINLAEMoQGjAIwo+KEIv7AKMhy7vZmmZiAAAAAElFTkSuQmCC',
'D71B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QgNEQx2mMIY6IIkFTGFodAhhdAhAFmtlaHQEiomgirUyTIGrAzspaumqaaumrQzNQnIfUF0AkjqoGKMDSAzVPNYGDLEpIg3oekMDRBoYQx1R3DxQ4UdFiMV9AK1fzIIAqTpVAAAAAElFTkSuQmCC',
'8D6A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7WANEQxhCGVqRxUSmiLQyOjpMdUASC2gVaXRtcAgIQFUHFGN0EEFy39KoaStTp67MmobkPrA6R0eYOiTzAkNDMMVQ1EHcgqoX4mZGFLGBCj8qQizuAwDXU8yXXzpOTgAAAABJRU5ErkJggg==',
'8A01' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7WAMYAhimMLQii4lMYQxhCGWYiiwW0MrayujoEIqqTqTRFSiD7L6lUdNWpq6KWorsPjR1UPNEQzHFRBodHR1a0e0A2ooixhoAFJvCEBowCMKPihCL+wDO8s0Ouu10XgAAAABJRU5ErkJggg==',
'D41E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7QgMYWhmmMIYGIIkFTGGYyhDC6ICsLqCVIZQRQ4zRFagXJgZ2UtTSpUtXTVsZmoXkvoBWkVYkdVAx0VAHDDEGTHVTMMVAbmYMdURx80CFHxUhFvcBAEtlyshnNF60AAAAAElFTkSuQmCC',
'B548' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7QgNEQxkaHaY6IIkFTBFpYGh1CAhAFmsFik11dBBBVRfCEAhXB3ZSaNTUpSszs6ZmIbkvYApDo2sjunlAsdBAVPNaRRodGtHtYAWqRNUbGsAYgu7mgQo/KkIs7gMApzrPAPZcqtYAAAAASUVORK5CYII=',
'82E6' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7WAMYQ1hDHaY6IImJTGFtZW1gCAhAEgtoFWl0bWB0EEBRxwAWQ3bf0qhVS5eGrkzNQnIfUN0U1gZGNPMYAoBiDiIoYowO6GJAtzSgu4U1QDTUFc3NAxV+VIRY3AcAAHrLO3bNnVcAAAAASUVORK5CYII=',
'755A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nGNYhQEaGAYTpIn7QkNFQ1lDHVpRRFtFGlgbGKY6YIoFBCCLTREJYZ3K6CCC7L6oqUuXZmZmTUNyH6MDQ6NDQyBMHRgCzQKJhYYgiYk0iDS6oqkLaGBtZXR0RBNjDGEIZUQRG6jwoyLE4j4AGL/LSQRkim4AAAAASUVORK5CYII=',
'47B7' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpI37poiGuoYyhoYgi4UwNLo2OjSIIIkxgsQaAlDEWKcwtLIC1QUguW/atFXTloauWpmF5L6AKQwBQHWtyPaGhjI6sIJkUNzC2gAUC0AVE2lgbXR0wBAD6h8U4Uc9iMV9ALB6zFXVdFMnAAAAAElFTkSuQmCC',
'50A5' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdUlEQVR4nM3QMQ6AIAyF4XboDTgQDu6PBEx09x514AbKHeSU6laioya22xcS/pTqbZT+tJ/0pUiglROMQTlSYk+NSeauayzALb2G3pu+oZR9ruM02b58vYM6+/NlqTVkyaLBW3MrR1HA9gkIp23+B/d7cR/6DrSdzBO2IUYPAAAAAElFTkSuQmCC',
'57E9' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nGNYhQEaGAYTpIn7QkNEQ11DHaY6IIkFNDA0ujYwBARgiDE6iCCJBQYwtLIixMBOCpu2atrS0FVRYcjua2UIYG1gmIqsl6GV0QEo1oAsFgA0DSiGYofIFBGQGIpbWAOAYmhuHqjwoyLE4j4AmHPLfGhT9RQAAAAASUVORK5CYII=',
'6D7B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nGNYhQEaGAYTpIn7WANEQ1hDA0MdkMREpoi0MjQEOgQgiQW0iDQ6AMVEkMUagGKNjjB1YCdFRk1bmbV0ZWgWkvtCpgDVTWFENa8VKBbAiGoeUMzRAVUM5BbWBlS9YDc3MKK4eaDCj4oQi/sAI9DMuukE9a0AAAAASUVORK5CYII=',
'C647' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7WEMYQxgaHUNDkMREWllbGVodGkSQxAIaRRoZpqKJgXiBDkAa4b6oVdPCVmZmrcxCcl9Ag2gra6NDKwOq3kbX0IApDGh2ODQ6BDCgu6XR0QGLm1HEBir8qAixuA8AhQnNF/54iuIAAAAASUVORK5CYII=',
'D4EC' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAY0lEQVR4nGNYhQEaGAYTpIn7QgMYWllDHaYGIIkFTGGYytrAECCCLNbKEMrawOjAgiLG6AoSQ3Zf1FIgCF2Zhey+gFaRViR1UDHRUFcMMYZWDDumgMRQ3YLNzQMVflSEWNwHAKEXy8OxdmEIAAAAAElFTkSuQmCC',
'12E9' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7GB0YQ1hDHaY6IImxOrC2sjYwBAQgiYk6iDS6AlWLoOhlQBYDO2ll1qqlS0NXRYUhuQ+obgrQvKloegOAYg2oYowOQDE0O1gbMNwSIhrqiubmgQo/KkIs7gMASZfIT2qs2jIAAAAASUVORK5CYII=',
'8C7A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7WAMYQ1lDA1qRxUSmsDY6NARMdUASC2gVaQCKBQSgqBNpYGh0dBBBct/SqGlAYmXWNCT3gdVNYYSpg5vHALQ7BE3M0QFVHcgtrg2oYmA3o4kNVPhREWJxHwAAWcxuPXMklgAAAABJRU5ErkJggg==',
'C521' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcElEQVR4nGNYhQEaGAYTpIn7WENEQxlCGVqRxURaRRoYHR2mIosFNIo0sDYEhKKINYiEAEmYXrCTolZNXbpqZdZSZPcFNDA0OrSi2gEWm4Im1ijS6BCA7hbWVkYHVDHWEMYQ1tCA0IBBEH5UhFjcBwAy0sw4WrqJcgAAAABJRU5ErkJggg==',
'95C1' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7WANEQxlCHVqRxUSmiDQwOgRMRRYLaBVpYG0QCEUTC2FtYIDpBTtp2tSpS5euWrUU2X2srgyNrgh1ENiKKSbQKgIUE0BzC2sr0C0oYqwBjCFAN4cGDILwoyLE4j4AzazL4ocIyxoAAAAASUVORK5CYII=',
'04F6' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7GB0YWllDA6Y6IImxBjBMZW1gCAhAEhOZwhDKClQtgCQW0MroChJDdl/UUiAIXZmaheS+gFaRVqA6FPMCWkVDXYF6RVDtAKlDEQO6pRXdLWA3NzCguHmgwo+KEIv7AI8nyiFBRONoAAAAAElFTkSuQmCC',
'664D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7WAMYQxgaHUMdkMREprC2MrQ6OgQgiQW0iDQyTHV0EEEWawDyAuFiYCdFRk0LW5mZmTUNyX0hU0RbWRvR9LaKNLqGBmKIOaCpA7ulEdUt2Nw8UOFHRYjFfQBA4cxWv33QTgAAAABJRU5ErkJggg==',
'B7EA' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QgNEQ11DHVqRxQKmMDS6NjBMdUAWawWLBQSgqmtlbWB0EEFyX2jUqmlLQ1dmTUNyH1BdAJI6qHmMDkCx0BAUMdYGDHVTRDDEQgOAYqGOKGIDFX5UhFjcBwC2isxJIZwHMgAAAABJRU5ErkJggg==',
'79AD' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nGNYhQEaGAYTpIn7QkMZQximMIY6IIu2srYyhDI6BKCIiTQ6Ojo6iCCLTRFpdG0IhIlB3BS1dGnqqsisaUjuY3RgDERSB4asDQyNrqGoYiINLI3o6gIaWFtZgWIBKGKMIUAxVDcPUPhREWJxHwCF+Mv4IvVbMQAAAABJRU5ErkJggg==',
'EAEF' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAW0lEQVR4nGNYhQEaGAYTpIn7QkMYAlhDHUNDkMQCGhhDWBsYHRhQxFhbMcVEGl0RYmAnhUZNW5kaujI0C8l9aOqgYqKhmGLY1GGKhYYAxUIdUcQGKvyoCLG4DwBiIsroECbW4wAAAABJRU5ErkJggg==',
'E62B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QkMYQxhCGUMdkMQCGlhbGR0dHQJQxEQaWRsCHURQxYBkIEwd2EmhUdPCVq3MDM1Ccl9Ag2grQysjhnkOUxjRzWt0CEAXA7rFAVUvyM2soYEobh6o8KMixOI+ALZqy83M+3s7AAAAAElFTkSuQmCC',
'F4E9' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7QkMZWllDHaY6IIkFNDBMZW1gCAhAFQtlbWB0EEERY3RFEgM7KTRq6dKloauiwpDcF9Ag0go0byqqXtFQVyCNKsYAUueARQzdLRhuHqjwoyLE4j4AIAbMRYqIlIAAAAAASUVORK5CYII=',
'D85A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7QgMYQ1hDHVqRxQKmsLayNjBMdUAWaxVpdG1gCAhAEQOqm8roIILkvqilK8OWZmZmTUNyH0gdQ0MgTB3cPIeGwNAQDDvQ1AHdwujoiCIGcjNDKCOK2ECFHxUhFvcBAJG1zSNI9gjKAAAAAElFTkSuQmCC',
'4E5B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpI37poiGsoY6hjogi4WINLA2MDoEIIkxQsVEkMRYpwDFpsLVgZ00bdrUsKWZmaFZSO4LmALSFYhiXmgoREwExS0gOzDFGB0dUfSC3MwQyojq5oEKP+pBLO4DAAZCypGY43Q5AAAAAElFTkSuQmCC',
'9A39' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAeUlEQVR4nGNYhQEaGAYTpIn7WAMYAhhDGaY6IImJTGEMYW10CAhAEgtoZW1laAh0EEERE2l0aHSEiYGdNG3qtJVZU1dFhSG5j9UVpM5hKrJehlbRUIeGgAZkMQGQeQ0BKHaITBFpdEVzC2uASKMjmpsHKvyoCLG4DwBdRM1nwSL3cwAAAABJRU5ErkJggg==',
'27C3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7WANEQx1AEElMZApDo6NDoEMAklhAK0Oja4NAgwiy7laGVlaQHLL7pq2atnTVqqVZyO4LYAhAUgeGjA6MDiAxZPNYwRDVDhEgZERzS2goUAWamwcq/KgIsbgPAEQfzBoT5lTqAAAAAElFTkSuQmCC',
'1F60' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYUlEQVR4nGNYhQEaGAYTpIn7GB1EQx1CGVqRxVgdRBoYHR2mOiCJiQLFWBscAgJQ9ILEQCTCfSuzpoYtnboyaxqS+8DqHB1h6pD0BmIRC8CwA8MtIUBdaG4eqPCjIsTiPgA/8skaq3bH7wAAAABJRU5ErkJggg==',
'98D8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7WAMYQ1hDGaY6IImJTGFtZW10CAhAEgtoFWl0bQh0EEERA6prCICpAztp2tSVYUtXRU3NQnIfqyuKOgjEYp4AFjFsbsHm5oEKPypCLO4DAExozQggqthMAAAAAElFTkSuQmCC',
'F874' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAY0lEQVR4nGNYhQEaGAYTpIn7QkMZQ1hDAxoCkMQCGlhbgWQjqphIo0NDQCuGukaHKQFI7guNWhm2aumqqCgk94HVTWF0wDAvgDE0BE3M0YEBwy2sDehiQDejiQ1U+FERYnEfAF0Dz2BFrXwyAAAAAElFTkSuQmCC',
'002D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7GB0YAhhCGUMdkMRYAxhDGB0dHQKQxESmsLayNgQ6iCCJBbSKNDogxMBOilo6bWXWysysaUjuA6trZcTUOwVVDGQHQwCqGNgtDowobgG5mTU0EMXNAxV+VIRY3AcAEBnJpP1QmcoAAAAASUVORK5CYII=',
'AF79' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7GB1EQ11DA6Y6IImxBogAyYCAACQxkSkgsUAHESSxgFYgr9ERJgZ2UtTSqWGrlq6KCkNyH1jdFIapyHpDQ4G8AKC5aOYxOjBg2MEKVBmAKYbi5oEKPypCLO4DAJvXzJhy1J4dAAAAAElFTkSuQmCC',
'1E70' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7GB1EQ1lDA1qRxVgdRIBkwFQHJDFRiFhAAIpeoFijI1gG5r6VWVPDVi1dmTUNyX1gdVMYYeoQYgGYYowODBh2sDYwoLolBOjmBgYUNw9U+FERYnEfADwGyNdF7VwnAAAAAElFTkSuQmCC',
'83A8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7WANYQximMEx1QBITmSLSyhDKEBCAJBbQytDo6OjoIIKijqGVtSEApg7spKVRq8KWroqamoXkPjR1cPNcQwNRzAOLNQSi2SGCoRfkZqAYipsHKvyoCLG4DwBIls1Ts1jRDAAAAABJRU5ErkJggg==',
'5453' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdklEQVR4nGNYhQEaGAYTpIn7QkMYWllDHUIdkMQCGhimsjYwOgSgioWyAmkRJLHAAEZX1qlgObj7wqYtXbo0M2tpFrL7WkVaQaqQzWNoFQXaGYBiXkAr0C1oYiJTGFoZHR1R3MIawNDKEMqA4uaBCj8qQizuAwC1xMyH7XMbKgAAAABJRU5ErkJggg==',
'D938' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXUlEQVR4nGNYhQEaGAYTpIn7QgMYQxhDGaY6IIkFTGFtZW10CAhAFmsVaXRoCHQQQRdDqAM7KWrp0qVZU1dNzUJyX0ArY6ADhnkMWMxjwRTD4hZsbh6o8KMixOI+ABlRz0pe3VkyAAAAAElFTkSuQmCC',
'9163' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7WAMYAhhCGUIdkMREpjAGMDo6OgQgiQW0sgawNjg0iKCIMQDFgDSS+6ZNXRW1dOqqpVlI7mN1BapzdGhANo8BrDcAxTwBLGIiUxgw3AJ0SSi6mwcq/KgIsbgPAKy+yiVsZzuiAAAAAElFTkSuQmCC',
'40EB' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpI37pjAEsIY6hjogi4UwhrA2MDoEIIkBRVpBYiJIYqxTRBpdEerATpo2bdrK1NCVoVlI7gtAVQeGoaEQMREUt2DawTAF0y1Y3TxQ4Uc9iMV9AHLlyhu9k5SfAAAAAElFTkSuQmCC',
'561D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QkMYQximMIY6IIkFNLC2MoQwOgSgiIk0MgLFRJDEAgOAvClwMbCTwqZNC1s1bWXWNGT3tYq2IqmDiok0OqCJBWARE5nCCtaL7BbWAKBLQh1R3DxQ4UdFiMV9AETryqt/mmzSAAAAAElFTkSuQmCC',
'0951' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7GB0YQ1hDHVqRxVgDWFtZGximIouJTBFpdG1gCEUWC2gFik1lgOkFOylq6dKlqZlZS5HdF9DKGOgAJFH1MjSii4lMYQHaEYDhFkZHVPeB3Ax0SWjAIAg/KkIs7gMAox3LzSafPvQAAAAASUVORK5CYII=',
'9333' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXElEQVR4nGNYhQEaGAYTpIn7WANYQxhDGUIdkMREpoi0sjY6OgQgiQW0MjQ6NAQ0iKCKQUUR7ps2dVXYqqmrlmYhuY/VFUUdBGIxTwCLGDa3YHPzQIUfFSEW9wEA1/HNeY5OYhUAAAAASUVORK5CYII=',
'88B8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAUUlEQVR4nGNYhQEaGAYTpIn7WAMYQ1hDGaY6IImJTGFtZW10CAhAEgtoFWl0bQh0EMGtDuykpVErw5aGrpqaheQ+Ys0jwg6cbh6o8KMixOI+ALskzXrMxfy/AAAAAElFTkSuQmCC',
'5F59' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7QkNEQ11DHaY6IIkFNIg0sDYwBARgiDE6iCCJBQYAxabCxcBOCps2NWxpZlZUGLL7WkEqAqYi64WKNSCLBbSC7AhAsUNkikgDo6MDiltYgfYyhDKguHmgwo+KEIv7ACDdzAmhHWYrAAAAAElFTkSuQmCC',
'9D43' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7WANEQxgaHUIdkMREpoi0MrQ6OgQgiQW0ijQ6THVoEEEXC3RoCEBy37Sp01ZmZmYtzUJyH6urSKNrI1wdBAL1uoYGoJgnADKvEdUOsFsaUd2Czc0DFX5UhFjcBwAgDc58de4yqgAAAABJRU5ErkJggg=='
);
$this->text = array_rand( $images );
return $images[ $this->text ] ;
}
function out_processing_gif(){
$image = dirname(__FILE__) . '/processing.gif';
$base64_image = "R0lGODlhFAAUALMIAPh2AP+TMsZiALlcAKNOAOp4ANVqAP+PFv///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAIACwAAAAAFAAUAAAEUxDJSau9iBDMtebTMEjehgTBJYqkiaLWOlZvGs8WDO6UIPCHw8TnAwWDEuKPcxQml0Ynj2cwYACAS7VqwWItWyuiUJB4s2AxmWxGg9bl6YQtl0cAACH5BAUKAAgALAEAAQASABIAAAROEMkpx6A4W5upENUmEQT2feFIltMJYivbvhnZ3Z1h4FMQIDodz+cL7nDEn5CH8DGZhcLtcMBEoxkqlXKVIgAAibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkphaA4W5upMdUmDQP2feFIltMJYivbvhnZ3V1R4BNBIDodz+cL7nDEn5CH8DGZAMAtEMBEoxkqlXKVIg4HibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpjaE4W5tpKdUmCQL2feFIltMJYivbvhnZ3R0A4NMwIDodz+cL7nDEn5CH8DGZh8ONQMBEoxkqlXKVIgIBibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpS6E4W5spANUmGQb2feFIltMJYivbvhnZ3d1x4JMgIDodz+cL7nDEn5CH8DGZgcBtMMBEoxkqlXKVIggEibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpAaA4W5vpOdUmFQX2feFIltMJYivbvhnZ3V0Q4JNhIDodz+cL7nDEn5CH8DGZBMJNIMBEoxkqlXKVIgYDibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpz6E4W5tpCNUmAQD2feFIltMJYivbvhnZ3R1B4FNRIDodz+cL7nDEn5CH8DGZg8HNYMBEoxkqlXKVIgQCibbK9YLBYvLtHH5K0J0IACH5BAkKAAgALAEAAQASABIAAAROEMkpQ6A4W5spIdUmHQf2feFIltMJYivbvhnZ3d0w4BMAIDodz+cL7nDEn5CH8DGZAsGtUMBEoxkqlXKVIgwGibbK9YLBYvLtHH5K0J0IADs=";
$binary = is_file($image) ? join("",file($image)) : base64_decode($base64_image);
header("Cache-Control: post-check=0, pre-check=0, max-age=0, no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: image/gif");
echo $binary;
}
}
# end of class phpfmgImage
# ------------------------------------------------------
# end of module : captcha
# module user
# ------------------------------------------------------
function phpfmg_user_isLogin(){
return ( isset($_SESSION['authenticated']) && true === $_SESSION['authenticated'] );
}
function phpfmg_user_logout(){
session_destroy();
header("Location: admin.php");
}
function phpfmg_user_login()
{
if( phpfmg_user_isLogin() ){
return true ;
};
$sErr = "" ;
if( 'Y' == $_POST['formmail_submit'] ){
if(
defined( 'PHPFMG_USER' ) && strtolower(PHPFMG_USER) == strtolower($_POST['Username']) &&
defined( 'PHPFMG_PW' ) && strtolower(PHPFMG_PW) == strtolower($_POST['Password'])
){
$_SESSION['authenticated'] = true ;
return true ;
}else{
$sErr = 'Login failed. Please try again.';
}
};
// show login form
phpfmg_admin_header();
?>
<form name="frmFormMail" action="" method='post' enctype='multipart/form-data'>
<input type='hidden' name='formmail_submit' value='Y'>
<br><br><br>
<center>
<div style="width:380px;height:260px;">
<fieldset style="padding:18px;" >
<table cellspacing='3' cellpadding='3' border='0' >
<tr>
<td class="form_field" valign='top' align='right'>Email :</td>
<td class="form_text">
<input type="text" name="Username" value="<?php echo $_POST['Username']; ?>" class='text_box' >
</td>
</tr>
<tr>
<td class="form_field" valign='top' align='right'>Password :</td>
<td class="form_text">
<input type="password" name="Password" value="" class='text_box'>
</td>
</tr>
<tr><td colspan=3 align='center'>
<input type='submit' value='Login'><br><br>
<?php if( $sErr ) echo "<span style='color:red;font-weight:bold;'>{$sErr}</span><br><br>\n"; ?>
<a href="admin.php?mod=mail&func=request_password">I forgot my password</a>
</td></tr>
</table>
</fieldset>
</div>
<script type="text/javascript">
document.frmFormMail.Username.focus();
</script>
</form>
<?php
phpfmg_admin_footer();
}
function phpfmg_mail_request_password(){
$sErr = '';
if( $_POST['formmail_submit'] == 'Y' ){
if( strtoupper(trim($_POST['Username'])) == strtoupper(trim(PHPFMG_USER)) ){
phpfmg_mail_password();
exit;
}else{
$sErr = "Failed to verify your email.";
};
};
$n1 = strpos(PHPFMG_USER,'@');
$n2 = strrpos(PHPFMG_USER,'.');
$email = substr(PHPFMG_USER,0,1) . str_repeat('*',$n1-1) .
'@' . substr(PHPFMG_USER,$n1+1,1) . str_repeat('*',$n2-$n1-2) .
'.' . substr(PHPFMG_USER,$n2+1,1) . str_repeat('*',strlen(PHPFMG_USER)-$n2-2) ;
phpfmg_admin_header("Request Password of Email Form Admin Panel");
?>
<form name="frmRequestPassword" action="admin.php?mod=mail&func=request_password" method='post' enctype='multipart/form-data'>
<input type='hidden' name='formmail_submit' value='Y'>
<br><br><br>
<center>
<div style="width:580px;height:260px;text-align:left;">
<fieldset style="padding:18px;" >
<legend>Request Password</legend>
Enter Email Address <b><?php echo strtoupper($email) ;?></b>:<br />
<input type="text" name="Username" value="<?php echo $_POST['Username']; ?>" style="width:380px;">
<input type='submit' value='Verify'><br>
The password will be sent to this email address.
<?php if( $sErr ) echo "<br /><br /><span style='color:red;font-weight:bold;'>{$sErr}</span><br><br>\n"; ?>
</fieldset>
</div>
<script type="text/javascript">
document.frmRequestPassword.Username.focus();
</script>
</form>
<?php
phpfmg_admin_footer();
}
function phpfmg_mail_password(){
phpfmg_admin_header();
if( defined( 'PHPFMG_USER' ) && defined( 'PHPFMG_PW' ) ){
$body = "Here is the password for your form admin panel:\n\nUsername: " . PHPFMG_USER . "\nPassword: " . PHPFMG_PW . "\n\n" ;
if( 'html' == PHPFMG_MAIL_TYPE )
$body = nl2br($body);
mailAttachments( PHPFMG_USER, "Password for Your Form Admin Panel", $body, PHPFMG_USER, 'You', "You <" . PHPFMG_USER . ">" );
echo "<center>Your password has been sent.<br><br><a href='admin.php'>Click here to login again</a></center>";
};
phpfmg_admin_footer();
}
function phpfmg_writable_check(){
if( is_writable( dirname(PHPFMG_SAVE_FILE) ) && is_writable( dirname(PHPFMG_EMAILS_LOGFILE) ) ){
return ;
};
?>
<style type="text/css">
.fmg_warning{
background-color: #F4F6E5;
border: 1px dashed #ff0000;
padding: 16px;
color : black;
margin: 10px;
line-height: 180%;
width:80%;
}
.fmg_warning_title{
font-weight: bold;
}
</style>
<br><br>
<div class="fmg_warning">
<div class="fmg_warning_title">Your form data or email traffic log is NOT saving.</div>
The form data (<?php echo PHPFMG_SAVE_FILE ?>) and email traffic log (<?php echo PHPFMG_EMAILS_LOGFILE?>) will be created automatically when the form is submitted.
However, the script doesn't have writable permission to create those files. In order to save your valuable information, please set the directory to writable.
If you don't know how to do it, please ask for help from your web Administrator or Technical Support of your hosting company.
</div>
<br><br>
<?php
}
function phpfmg_log_view(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
phpfmg_admin_header();
$file = $files[$n];
if( is_file($file) ){
if( 1== $n ){
echo "<pre>\n";
echo join("",file($file) );
echo "</pre>\n";
}else{
$man = new phpfmgDataManager();
$man->displayRecords();
};
}else{
echo "<b>No form data found.</b>";
};
phpfmg_admin_footer();
}
function phpfmg_log_download(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
$file = $files[$n];
if( is_file($file) ){
phpfmg_util_download( $file, PHPFMG_SAVE_FILE == $file ? 'form-data.csv' : 'email-traffics.txt', true, 1 ); // skip the first line
}else{
phpfmg_admin_header();
echo "<b>No email traffic log found.</b>";
phpfmg_admin_footer();
};
}
function phpfmg_log_delete(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
phpfmg_admin_header();
$file = $files[$n];
if( is_file($file) ){
echo unlink($file) ? "It has been deleted!" : "Failed to delete!" ;
};
phpfmg_admin_footer();
}
function phpfmg_util_download($file, $filename='', $toCSV = false, $skipN = 0 ){
if (!is_file($file)) return false ;
set_time_limit(0);
$buffer = "";
$i = 0 ;
$fp = @fopen($file, 'rb');
while( !feof($fp)) {
$i ++ ;
$line = fgets($fp);
if($i > $skipN){ // skip lines
if( $toCSV ){
$line = str_replace( chr(0x09), ',', $line );
$buffer .= phpfmg_data2record( $line, false );
}else{
$buffer .= $line;
};
};
};
fclose ($fp);
/*
If the Content-Length is NOT THE SAME SIZE as the real conent output, Windows+IIS might be hung!!
*/
$len = strlen($buffer);
$filename = basename( '' == $filename ? $file : $filename );
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
case "php":
case "htm":
case "html":
$ctype="text/plain"; break;
default:
$ctype="application/x-download";
}
//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
//Force the download
header("Content-Disposition: attachment; filename=".$filename.";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
while (@ob_end_clean()); // no output buffering !
flush();
echo $buffer ;
return true;
}
?>

3389
abuse.lib.php Normal file

File diff suppressed because it is too large Load Diff

94
abuse.php Normal file
View File

@ -0,0 +1,94 @@
<?php
if( !defined('FormmailMakerFormLoader') ){
require_once( dirname(__FILE__).'/abuse.lib.php' );
phpfmg_display_form();
};
function phpfmg_form( $sErr = false ){
$style=" class='form_text' ";
?>
<div id='frmFormMailContainer'>
<form style="text-align: center;" name="frmFormMail" id="frmFormMail" target="submitToFrame" action='<?php echo PHPFMG_ADMIN_URL . '' ; ?>' method='post' enctype='multipart/form-data' onsubmit='return fmgHandler.onSubmit(this);'>
<input type='hidden' name='formmail_submit' value='Y'>
<input type='hidden' name='mod' value='ajax'>
<input type='hidden' name='func' value='submit'>
<ol class='phpfmg_form' >
<li class='field_block' id='field_0_div'><div class='col_label'>
<label class='form_field'>Contact Name:</label></div>
<div class='col_field'>
<input type="text" name="field_0" id="field_0" value="<?php phpfmg_hsc("field_0", ""); ?>" class='text_box'>
<div id='field_0_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_1_div'><div class='col_label'>
<label class='form_field'>Email Address:</label></div>
<div class='col_field'>
<input type="text" name="field_1" id="field_1" value="<?php phpfmg_hsc("field_1", ""); ?>" class='text_box'>
<div id='field_1_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_2_div'><div class='col_label'>
<label class='form_field'>Subject:</label></div>
<div class='col_field'>
<input type="text" name="field_2" id="field_2" value="<?php phpfmg_hsc("field_2", ""); ?>" class='text_box'>
<div id='field_2_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_3_div'><div class='col_label'>
<label class='form_field'>Message:</label></div>
<div class='col_field'>
<textarea name="field_3" id="field_3" rows=4 cols=25 class='text_area'><?php phpfmg_hsc("field_3"); ?></textarea>
<div id='field_3_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='phpfmg_captcha_div'>
<div class='col_label'><label class='form_field'>Security Code:</label></div><div class='col_field'>
<?php phpfmg_show_captcha(); ?>
</div>
</li>
<li>
<div class='form_submit_block col_field'>
<input type='submit' value='Send' class='form_button'>
<div id='err_required' class="form_error" style='display:none;'>
<label class='form_error_title'>Please fill in every field.</label>
</div>
<span id='phpfmg_processing' style='display:none;'>
<img id='phpfmg_processing_gif' src='<?php echo PHPFMG_ADMIN_URL . '?mod=image&amp;func=processing' ;?>' border=0 alt='Processing...'> <label id='phpfmg_processing_dots'></label>
</span>
</div>
</li>
</ol>
</form>
<iframe name="submitToFrame" id="submitToFrame" src="javascript:false" style="position:absolute;top:-10000px;left:-10000px;"></iframe>
</div>
<!-- end of form container -->
<!-- [Your confirmation message goes here] -->
<div id='thank_you_msg' style='display:none;'>
Your report has been sent. Thank you!
</div>
<?php
phpfmg_javascript($sErr);
}
# end of form
function phpfmg_form_css(){
$formOnly = isset($GLOBALS['formOnly']) && true === $GLOBALS['formOnly'];
?>
<style>
ol.phpfmg_form{
list-style-type:none;
padding:0px;
margin:0px;
}
.text_box, .text_area, .text_select {
min-width:500px;
max-width:500px;
}
.form_error_title{
font-weight: bold;
color: #FF0000;
}
<?php phpfmg_text_align();?>
</style>
<?php
}
# end of css
?>

5258
abuse.phpmailer.php Normal file

File diff suppressed because it is too large Load Diff

860
contact.admin.php Normal file
View File

@ -0,0 +1,860 @@
<?php
require_once( dirname(__FILE__).'/contact.lib.php' );
define( 'PHPFMG_USER', "root@thunix.cf" ); // must be a email address. for sending password to you.
define( 'PHPFMG_PW', "a31add" );
?>
<?php
/**
* GNU Library or Lesser General Public License version 2.0 (LGPLv2)
*/
# main
# ------------------------------------------------------
error_reporting( E_ERROR ) ;
phpfmg_admin_main();
# ------------------------------------------------------
function phpfmg_admin_main(){
$mod = isset($_REQUEST['mod']) ? $_REQUEST['mod'] : '';
$func = isset($_REQUEST['func']) ? $_REQUEST['func'] : '';
$function = "phpfmg_{$mod}_{$func}";
if( !function_exists($function) ){
phpfmg_admin_default();
exit;
};
// no login required modules
$public_modules = false !== strpos('|captcha||ajax|', "|{$mod}|");
$public_functions = false !== strpos('|phpfmg_ajax_submit||phpfmg_mail_request_password||phpfmg_filman_download||phpfmg_image_processing||phpfmg_dd_lookup|', "|{$function}|") ;
if( $public_modules || $public_functions ) {
$function();
exit;
};
return phpfmg_user_isLogin() ? $function() : phpfmg_admin_default();
}
function phpfmg_ajax_submit(){
$phpfmg_send = phpfmg_sendmail( $GLOBALS['form_mail'] );
$isHideForm = isset($phpfmg_send['isHideForm']) ? $phpfmg_send['isHideForm'] : false;
$response = array(
'ok' => $isHideForm,
'error_fields' => isset($phpfmg_send['error']) ? $phpfmg_send['error']['fields'] : '',
'OneEntry' => isset($GLOBALS['OneEntry']) ? $GLOBALS['OneEntry'] : '',
);
@header("Content-Type:text/html; charset=$charset");
echo "<html><body><script>
var response = " . json_encode( $response ) . ";
try{
parent.fmgHandler.onResponse( response );
}catch(E){};
\n\n";
echo "\n\n</script></body></html>";
}
function phpfmg_admin_default(){
if( phpfmg_user_login() ){
phpfmg_admin_panel();
};
}
function phpfmg_admin_panel()
{
if( !phpfmg_user_isLogin() ){
exit;
};
phpfmg_admin_header();
phpfmg_writable_check();
?>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign=top style="padding-left:280px;">
<style type="text/css">
.fmg_title{
font-size: 16px;
font-weight: bold;
padding: 10px;
}
.fmg_sep{
width:32px;
}
.fmg_text{
line-height: 150%;
vertical-align: top;
padding-left:28px;
}
</style>
<script type="text/javascript">
function deleteAll(n){
if( confirm("Are you sure you want to delete?" ) ){
location.href = "admin.php?mod=log&func=delete&file=" + n ;
};
return false ;
}
</script>
<div class="fmg_title">
1. Email Traffics
</div>
<div class="fmg_text">
<a href="admin.php?mod=log&func=view&file=1">view</a> &nbsp;&nbsp;
<a href="admin.php?mod=log&func=download&file=1">download</a> &nbsp;&nbsp;
<?php
if( file_exists(PHPFMG_EMAILS_LOGFILE) ){
echo '<a href="#" onclick="return deleteAll(1);">delete all</a>';
};
?>
</div>
<div class="fmg_title">
2. Form Data
</div>
<div class="fmg_text">
<a href="admin.php?mod=log&func=view&file=2">view</a> &nbsp;&nbsp;
<a href="admin.php?mod=log&func=download&file=2">download</a> &nbsp;&nbsp;
<?php
if( file_exists(PHPFMG_SAVE_FILE) ){
echo '<a href="#" onclick="return deleteAll(2);">delete all</a>';
};
?>
</div>
<div class="fmg_title">
3. Form Generator
</div>
<div class="fmg_text">
<a href="http://www.formmail-maker.com/generator.php" onclick="document.frmFormMail.submit(); return false;" title="<?php echo htmlspecialchars(PHPFMG_SUBJECT);?>">Edit Form</a> &nbsp;&nbsp;
<a href="http://www.formmail-maker.com/generator.php" >New Form</a>
</div>
<form name="frmFormMail" action='http://www.formmail-maker.com/generator.php' method='post' enctype='multipart/form-data'>
<input type="hidden" name="uuid" value="<?php echo PHPFMG_ID; ?>">
<input type="hidden" name="external_ini" value="<?php echo function_exists('phpfmg_formini') ? phpfmg_formini() : ""; ?>">
</form>
</td>
</tr>
</table>
<?php
phpfmg_admin_footer();
}
function phpfmg_admin_header( $title = '' ){
header( "Content-Type: text/html; charset=" . PHPFMG_CHARSET );
?>
<html>
<head>
<title><?php echo '' == $title ? '' : $title . ' | ' ; ?>PHP FormMail Admin Panel </title>
<meta name="keywords" content="PHP FormMail Generator, PHP HTML form, send html email with attachment, PHP web form, Free Form, Form Builder, Form Creator, phpFormMailGen, Customized Web Forms, phpFormMailGenerator,formmail.php, formmail.pl, formMail Generator, ASP Formmail, ASP form, PHP Form, Generator, phpFormGen, phpFormGenerator, anti-spam, web hosting">
<meta name="description" content="PHP formMail Generator - A tool to ceate ready-to-use web forms in a flash. Validating form with CAPTCHA security image, send html email with attachments, send auto response email copy, log email traffics, save and download form data in Excel. ">
<meta name="generator" content="PHP Mail Form Generator, phpfmg.sourceforge.net">
<style type='text/css'>
body, td, label, div, span{
font-family : Verdana, Arial, Helvetica, sans-serif;
font-size : 12px;
}
</style>
</head>
<body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
<table cellspacing=0 cellpadding=0 border=0 width="100%">
<td nowrap align=center style="background-color:#024e7b;padding:10px;font-size:18px;color:#ffffff;font-weight:bold;width:250px;" >
Form Admin Panel
</td>
<td style="padding-left:30px;background-color:#86BC1B;width:100%;font-weight:bold;" >
&nbsp;
<?php
if( phpfmg_user_isLogin() ){
echo '<a href="admin.php" style="color:#ffffff;">Main Menu</a> &nbsp;&nbsp;' ;
echo '<a href="admin.php?mod=user&func=logout" style="color:#ffffff;">Logout</a>' ;
};
?>
</td>
</table>
<div style="padding-top:28px;">
<?php
}
function phpfmg_admin_footer(){
?>
</div>
<div style="color:#cccccc;text-decoration:none;padding:18px;font-weight:bold;">
:: <a href="http://phpfmg.sourceforge.net" target="_blank" title="Free Mailform Maker: Create read-to-use Web Forms in a flash. Including validating form with CAPTCHA security image, send html email with attachments, send auto response email copy, log email traffics, save and download form data in Excel. " style="color:#cccccc;font-weight:bold;text-decoration:none;">PHP FormMail Generator</a> ::
</div>
</body>
</html>
<?php
}
function phpfmg_image_processing(){
$img = new phpfmgImage();
$img->out_processing_gif();
}
# phpfmg module : captcha
# ------------------------------------------------------
function phpfmg_captcha_get(){
$img = new phpfmgImage();
$img->out();
//$_SESSION[PHPFMG_ID.'fmgCaptchCode'] = $img->text ;
$_SESSION[ phpfmg_captcha_name() ] = $img->text ;
}
function phpfmg_captcha_generate_images(){
for( $i = 0; $i < 50; $i ++ ){
$file = "$i.png";
$img = new phpfmgImage();
$img->out($file);
$data = base64_encode( file_get_contents($file) );
echo "'{$img->text}' => '{$data}',\n" ;
unlink( $file );
};
}
function phpfmg_dd_lookup(){
$paraOk = ( isset($_REQUEST['n']) && isset($_REQUEST['lookup']) && isset($_REQUEST['field_name']) );
if( !$paraOk )
return;
$base64 = phpfmg_dependent_dropdown_data();
$data = @unserialize( base64_decode($base64) );
if( !is_array($data) ){
return ;
};
foreach( $data as $field ){
if( $field['name'] == $_REQUEST['field_name'] ){
$nColumn = intval($_REQUEST['n']);
$lookup = $_REQUEST['lookup']; // $lookup is an array
$dd = new DependantDropdown();
echo $dd->lookupFieldColumn( $field, $nColumn, $lookup );
return;
};
};
return;
}
function phpfmg_filman_download(){
if( !isset($_REQUEST['filelink']) )
return ;
$filelink = base64_decode($_REQUEST['filelink']);
$file = PHPFMG_SAVE_ATTACHMENTS_DIR . basename($filelink);
// 2016-12-05: to prevent *LFD/LFI* attack. patch provided by Pouya Darabi, a security researcher in cert.org
$real_basePath = realpath(PHPFMG_SAVE_ATTACHMENTS_DIR);
$real_requestPath = realpath($file);
if ($real_requestPath === false || strpos($real_requestPath, $real_basePath) !== 0) {
return;
};
if( !file_exists($file) ){
return ;
};
phpfmg_util_download( $file, $filelink );
}
class phpfmgDataManager
{
var $dataFile = '';
var $columns = '';
var $records = '';
function __construct(){
$this->dataFile = PHPFMG_SAVE_FILE;
}
function phpfmgDataManager(){
$this->dataFile = PHPFMG_SAVE_FILE;
}
function parseFile(){
$fp = @fopen($this->dataFile, 'rb');
if( !$fp ) return false;
$i = 0 ;
$phpExitLine = 1; // first line is php code
$colsLine = 2 ; // second line is column headers
$this->columns = array();
$this->records = array();
$sep = chr(0x09);
while( !feof($fp) ) {
$line = fgets($fp);
$line = trim($line);
if( empty($line) ) continue;
$line = $this->line2display($line);
$i ++ ;
switch( $i ){
case $phpExitLine:
continue;
break;
case $colsLine :
$this->columns = explode($sep,$line);
break;
default:
$this->records[] = explode( $sep, phpfmg_data2record( $line, false ) );
};
};
fclose ($fp);
}
function displayRecords(){
$this->parseFile();
echo "<table border=1 style='width=95%;border-collapse: collapse;border-color:#cccccc;' >";
echo "<tr><td>&nbsp;</td><td><b>" . join( "</b></td><td>&nbsp;<b>", $this->columns ) . "</b></td></tr>\n";
$i = 1;
foreach( $this->records as $r ){
echo "<tr><td align=right>{$i}&nbsp;</td><td>" . join( "</td><td>&nbsp;", $r ) . "</td></tr>\n";
$i++;
};
echo "</table>\n";
}
function line2display( $line ){
$line = str_replace( array('"' . chr(0x09) . '"', '""'), array(chr(0x09),'"'), $line );
$line = substr( $line, 1, -1 ); // chop first " and last "
return $line;
}
}
# end of class
# ------------------------------------------------------
class phpfmgImage
{
var $im = null;
var $width = 73 ;
var $height = 33 ;
var $text = '' ;
var $line_distance = 8;
var $text_len = 4 ;
function __construct( $text = '', $len = 4 ){
$this->phpfmgImage( $text, $len );
}
function phpfmgImage( $text = '', $len = 4 ){
$this->text_len = $len ;
$this->text = '' == $text ? $this->uniqid( $this->text_len ) : $text ;
$this->text = strtoupper( substr( $this->text, 0, $this->text_len ) );
}
function create(){
$this->im = imagecreate( $this->width, $this->height );
$bgcolor = imagecolorallocate($this->im, 255, 255, 255);
$textcolor = imagecolorallocate($this->im, 0, 0, 0);
$this->drawLines();
imagestring($this->im, 5, 20, 9, $this->text, $textcolor);
}
function drawLines(){
$linecolor = imagecolorallocate($this->im, 210, 210, 210);
//vertical lines
for($x = 0; $x < $this->width; $x += $this->line_distance) {
imageline($this->im, $x, 0, $x, $this->height, $linecolor);
};
//horizontal lines
for($y = 0; $y < $this->height; $y += $this->line_distance) {
imageline($this->im, 0, $y, $this->width, $y, $linecolor);
};
}
function out( $filename = '' ){
if( function_exists('imageline') ){
$this->create();
if( '' == $filename ) header("Content-type: image/png");
( '' == $filename ) ? imagepng( $this->im ) : imagepng( $this->im, $filename );
imagedestroy( $this->im );
}else{
$this->out_predefined_image();
};
}
function uniqid( $len = 0 ){
$md5 = md5( uniqid(rand()) );
return $len > 0 ? substr($md5,0,$len) : $md5 ;
}
function out_predefined_image(){
header("Content-type: image/png");
$data = $this->getImage();
echo base64_decode($data);
}
// Use predefined captcha random images if web server doens't have GD graphics library installed
function getImage(){
$images = array(
'F29A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nGNYhQEaGAYTpIn7QkMZQxhCGVqRxQIaWFsZHR2mOqCIiTS6NgQEBKCIMQDFAh1EkNwXGrVq6crMyKxpSO4DqpvCEAJXBxMLYGgIDA1BEWN0YGxAV8fawOjoiCYmGuoQyogiNlDhR0WIxX0A4WHMkXyw53UAAAAASUVORK5CYII=',
'80EE' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWElEQVR4nGNYhQEaGAYTpIn7WAMYAlhDHUMDkMREpjCGsDYwOiCrC2hlbUUXE5ki0uiKEAM7aWnUtJWpoStDs5Dch6YOah42MWx2YLoFm5sHKvyoCLG4DwB5nMk7XGkkZgAAAABJRU5ErkJggg==',
'B46A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdElEQVR4nGNYhQEaGAYTpIn7QgMYWhlCgRhJLGAKw1RGR4epDshiQFWsDQ4BASjqGF1ZGxgdRJDcFxq1dOnSqSuzpiG5L2CKSCuroyNMHdQ80VDXhsDQEFQ7WlkbAlHVTWFoZUTTC3EzI4rYQIUfFSEW9wEAr5nMfCHD8SgAAAAASUVORK5CYII=',
'0413' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nGNYhQEaGAYTpIn7GB0YWhmmMIQ6IImxBjBMZQhhdAhAEhMBqmEMAdJIYgGtjK5AvQ0BSO6LWrp06appq5ZmIbkvoFWkFUkdVEw01GEKqnlAO8DqRFDdAhRDdQvIzYyhDihuHqjwoyLE4j4ADQbLbmTNXLkAAAAASUVORK5CYII=',
'0F6A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7GB1EQx1CGVqRxVgDRBoYHR2mOiCJiUwRaWBtcAgIQBILaAWJMTqIILkvaunUsKVTV2ZNQ3IfWJ2jI0wdkt7A0BAMOwJR1EHcgqoXbGMoI4rYQIUfFSEW9wEAquPK0uIwXQgAAAAASUVORK5CYII=',
'BD0D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXElEQVR4nGNYhQEaGAYTpIn7QgNEQximMIY6IIkFTBFpZQhldAhAFmsVaXR0dHQQQVXX6NoQCBMDOyk0atrK1FWRWdOQ3IemDm4eNjEsdmC4BZubByr8qAixuA8AwMvNc5TosDQAAAAASUVORK5CYII=',
'68BA' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7WAMYQ1hDGVqRxUSmsLayNjpMdUASC2gRaXRtCAgIQBZrAKlzdBBBcl9k1MqwpaErs6YhuS9kCoo6iN5WkHmBoSGYYijqRLDohbiZEUVsoMKPihCL+wD/Lsy5IxWk1AAAAABJRU5ErkJggg==',
'D4D3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAY0lEQVR4nGNYhQEaGAYTpIn7QgMYWllDGUIdkMQCpjBMZW10dAhAFmtlCGVtCGgQQRFjdAWJBSC5L2opEADJLCT3BbSKtCKpg4qJhrpimMfQimHHFKAYmluwuXmgwo+KEIv7AMmbzx9SYeT/AAAAAElFTkSuQmCC',
'854D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7WANEQxkaHUMdkMREpog0MLQ6OgQgiQW0AsWmOjqIoKoLYQiEi4GdtDRq6tKVmZlZ05DcJzKFodG1EVVvQCtQLDQQTUyk0aER3Q5WoEpUt7AGMIagu3mgwo+KEIv7AJAIzI6R5ixaAAAAAElFTkSuQmCC',
'51F9' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkMYAlhDA6Y6IIkFNDAGsDYwBASgiLECxRgdRJDEAgMYkMXATgqbtipqaeiqqDBk97WC1DFMRdYLFWtAFguAiKHYITKFAcMtQJeEgsxDdvNAhR8VIRb3AQCTZMksXTMt4AAAAABJRU5ErkJggg==',
'7B92' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdElEQVR4nGNYhQEaGAYTpIn7QkNFQxhCGaY6IIu2irQyOjoEBKCKNbo2BDqIIItNEWllbQhoEEF2X9TUsJWZUauikNzH6CDSyhAS0IhsB2uDCJAf0IrsFhGgmGNDwBRkMaDpYLegioHczBgaMgjCj4oQi/sAaLTMcMk0b84AAAAASUVORK5CYII=',
'574E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkNEQx0aHUMDkMSA7EaHVkcHBnSxqahigQEMrQyBcDGwk8KmrZq2MjMzNAvZfa0MAayNqHoZWhkdWEMDUe1oZQXagqpOZIoIhhhrAFgMxc0DFX5UhFjcBwAoyssY9VovqwAAAABJRU5ErkJggg==',
'490D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpI37pjCGAHGoA7JYCGsrQyijQwCSGGOISKOjo6ODCJIY6xSRRteGQJgY2EnTpi1dmroqMmsakvsCpjAGIqkDw9BQhkZ0MYYpLBh2MEzBdAtWNw9U+FEPYnEfAK7EyxVLCx+mAAAAAElFTkSuQmCC',
'D791' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7QgNEQx1CGVqRxQKmMDQ6OjpMRRFrZWh0bQgIRRNrZQWRSO6LWrpq2spMIInkPqCKAIaQAFQ7WhkdGBrQxVgbGNHFpog0MDo6oIiFBog0MIQyhAYMgvCjIsTiPgA4hM25VMJ7sgAAAABJRU5ErkJggg==',
'31A1' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYUlEQVR4nGNYhQEaGAYTpIn7RAMYAhimMLQiiwVMYQxgCGWYiqKylTWA0dEhFEVsCkMAa0MATC/YSSujVkUtBSFk96Gqg5oHFAvFIoamLgCLXlGgTqBYaMAgCD8qQizuAwCOfcpeId7qcAAAAABJRU5ErkJggg==',
'FEDE' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAS0lEQVR4nGNYhQEaGAYTpIn7QkNFQ1lDGUMDkMQCGkQaWBsdHRjQxRoC8YmBnRQaNTVs6arI0Cwk9xGhF78Yhlsw3TxQ4UdFiMV9AKsKy9JN9QjrAAAAAElFTkSuQmCC',
'3F73' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7RANEQ11DA0IdkMQCpogAyUCHAGSVrSCxgAYRZDGQukaHhgAk962Mmhq2aumqpVnI7gOpm8LQgGFeAAOqeUAxRgdUMZBbWIGiyHpFA0BiDChuHqjwoyLE4j4AKqbMtgG9VzwAAAAASUVORK5CYII=',
'B182' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7QgMYAhhCGaY6IIkFTGEMYHR0CAhAFmtlDWBtCHQQQVHHAFLXIILkvtCoVVGrQlcBCYT7oOoaUexoZQCaByQxxaYwYNoRgOpm1lCGUMbQkEEQflSEWNwHABXny0eZ4YibAAAAAElFTkSuQmCC',
'6796' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdElEQVR4nGNYhQEaGAYTpIn7WANEQx1CGaY6IImJTGFodHR0CAhAEgtoYWh0bQh0EEAWa2BoZQWKIbsvMmrVtJWZkalZSO4LmcIQwBASiGpeKyNQX6CDCIoYawMjmpjIFJEGRjS3sAYAVaC5eaDCj4oQi/sACG3L+wx5ue0AAAAASUVORK5CYII=',
'811F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXElEQVR4nGNYhQEaGAYTpIn7WAMYAhimMIaGIImJTGEMYAhhdEBWF9DKGsCIJiYyBawXJgZ20tKoVVGrpq0MzUJyH5o6qHnEiWHTyxrAGsoY6ogiNlDhR0WIxX0AxR/HCPQ88Y0AAAAASUVORK5CYII=',
'6B8A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7WANEQxhCGVqRxUSmiLQyOjpMdUASC2gRaXRtCAgIQBZrAKlzdBBBcl9k1NSwVaErs6YhuS9kCoo6iN5WkHmBoSGYYijqRLDohbiZEUVsoMKPihCL+wAF1Mv0tdDYEgAAAABJRU5ErkJggg==',
'C620' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdUlEQVR4nGNYhQEaGAYTpIn7WEMYQxhCGVqRxURaWVsZHR2mOiCJBTSKNLI2BAQEIIs1iADJQAcRJPdFrZoWtmplZtY0JPcFNIi2MrQywtTB9DY6TEETA9rhEMCAYgfYLQ4MKG4BuZk1NADFzQMVflSEWNwHAMP9y9uPvArYAAAAAElFTkSuQmCC',
'D385' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7QgNYQxhCGUMDkMQCpoi0Mjo6OiCrC2hlaHRtCEQXA6lzdUByX9TSVWGrQldGRSG5D6LOoUEEw7wALGKBDiIYbnEIQHYfxM0MUx0GQfhREWJxHwDM8MzjPUmFtAAAAABJRU5ErkJggg==',
'187E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7GB0YQ1hDA0MDkMRYHVhbGRoCHZDViTqINDqgiTGC1DU6wsTATlqZtTJs1dKVoVlI7gOrm8KIphdoXgCmmKMDuhhrK2sDqphoCNDNDYwobh6o8KMixOI+ADZOxzvRVDR6AAAAAElFTkSuQmCC',
'14E7' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7GB0YWllDHUNDkMRYHRimsgJpESQxUQeGUHQxRgdGV5BYAJL7VmYtXbo0FEghuY/RQaQVqK4V1V7RUNcGhikYbmlgCMAUA5LIbgkBuxlFbKDCj4oQi/sA7ZnH0+jlxKYAAAAASUVORK5CYII=',
'D865' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7QgMYQxhCGUMDkMQCprC2Mjo6OiCrC2gVaXRtQBdjbWVtYHR1QHJf1NKVYUunroyKQnIfWJ2jQ4MIhnkBWMQCHUQw3OIQgOw+iJsZpjoMgvCjIsTiPgAwAM00MlE58gAAAABJRU5ErkJggg==',
'F8E8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAUUlEQVR4nGNYhQEaGAYTpIn7QkMZQ1hDHaY6IIkFNLC2sjYwBASgiIk0ujYwOojgVgd2UmjUyrCloaumZiG5j3jzCNoBFcN080CFHxUhFvcBAD48zRfy81C7AAAAAElFTkSuQmCC',
'CA3A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nGNYhQEaGAYTpIn7WEMYAhhDGVqRxURaGUNYGx2mOiCJBTSyAtUEBAQgizWINDo0OjqIILkvatW0lVlTV2ZNQ3IfmjqomGioQ0NgaAiKHUB1DYEo6kRaRRpd0fSyhog0OoYyoogNVPhREWJxHwDYzs2lyy20iwAAAABJRU5ErkJggg==',
'2329' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAd0lEQVR4nGNYhQEaGAYTpIn7WANYQxhCGaY6IImJTBFpZXR0CAhAEgtoZWh0bQh0EEHW3QqECDGIm6atClu1MisqDNl9AWCVU5H1MjowNDpMAdqF7JYGoFgAA4odIg1AtzgwoLglNJQ1hDU0AMXNAxV+VIRY3AcAcW3KyQgjqfMAAAAASUVORK5CYII=',
'CF1F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7WENEQx2mMIaGIImJtIo0MIQwOiCrC2gUaWBEF2sAqpsCFwM7KWrV1LBV01aGZiG5D00dbrFGTDGwW9DEWEOAbgl1RBEbqPCjIsTiPgD2u8mLBFJTfQAAAABJRU5ErkJggg==',
'07C8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nGNYhQEaGAYTpIn7GB1EQx1CHaY6IImxBjA0OjoEBAQgiYlMYWh0bRB0EEESC2hlaGVtYICpAzspaumqaUtXrZqaheQ+oLoAJHVQMUYHVqDtIih2sDawotnBGiACVIXqFrAuNDcPVPhREWJxHwCh/8uavOaBBQAAAABJRU5ErkJggg==',
'B0AB' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QgMYAhimMIY6IIkFTGEMYQhldAhAFmtlbWV0dHQQQVEn0ujaEAhTB3ZSaNS0lamrIkOzkNyHpg5qHlAsNBDVPKAdrA1oYkC3sKLpBbkZKIbi5oEKPypCLO4DAD4xzUOE3JRsAAAAAElFTkSuQmCC',
'6087' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7WAMYAhhCGUNDkMREpjCGMDo6NIggiQW0sLayNgSgijWINDoC1QUguS8yatrKrNBVK7OQ3BcyBayuFdnegFaRRteGgCmoYmA7Ahgw3OLogMXNKGIDFX5UhFjcBwCUOsuEYex17wAAAABJRU5ErkJggg==',
'FE4F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWElEQVR4nGNYhQEaGAYTpIn7QkNFQxkaHUNDkMQCGkQaGFodHRjQxaZiEQuEi4GdFBo1NWxlZmZoFpL7QOpYGzH1soYGYpqHRR2mGNjNKGIDFX5UhFjcBwBj0ct6alE+fAAAAABJRU5ErkJggg==',
'FB52' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7QkNFQ1hDHaY6IIkFNIi0sjYwBASgijW6NjA6iKCrm8rQIILkvtCoqWFLM7NWRSG5D6QOSDai2QHkB7QyYNgRMAVNrJXR0SEAVUw0hCGUMTRkEIQfFSEW9wEAa+TN/Kxz5qoAAAAASUVORK5CYII=',
'9E9A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7WANEQxlCGVqRxUSmiDQwOjpMdUASC2gVaWBtCAgIwBALdBBBct+0qVPDVmZGZk1Dch+rK1BFCFwdBLaCeIGhIUhiAkAxxgZUdRC3OKKIQdzMiGreAIUfFSEW9wEAh4nKni0dVVUAAAAASUVORK5CYII=',
'DEB6' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAV0lEQVR4nGNYhQEaGAYTpIn7QgNEQ1lDGaY6IIkFTBFpYG10CAhAFmsFijUEOgigizU6OiC7L2rp1LCloStTs5DcB1WH1TwRQmJY3ILNzQMVflSEWNwHADErzdROdvXrAAAAAElFTkSuQmCC',
'3137' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7RAMYAhhDGUNDkMQCpjAGsDY6NIggq2xlDQDKoIpNYQhgAKoLQHLfyqhVUaumrlqZhew+iLpWFJtbGUDmTcEiFsCA4hYGoFscHVDdzAp0MSOK2ECFHxUhFvcBAPdeyi4ZP7jqAAAAAElFTkSuQmCC',
'A059' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdklEQVR4nGNYhQEaGAYTpIn7GB0YAlhDHaY6IImxBjCGsDYwBAQgiYlMYW1lBaoWQRILaBVpdJ0KFwM7KWrptJWpmVlRYUjuA6lzaAiYiqw3NBQs1oBqHsiOADQ7GEMYHR1Q3BLQyhDAEMqA4uaBCj8qQizuAwCWCcwO1X6SGQAAAABJRU5ErkJggg==',
'DA89' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7QgMYAhhCGaY6IIkFTGEMYXR0CAhAFmtlbWVtCHQQQRETaXR0dISJgZ0UtXTayqzQVVFhSO6DqHOYiqpXNNS1IaAB3TygGKodU8B6UdwSGiDS6IDm5oEKPypCLO4DAELXzjUb4LxeAAAAAElFTkSuQmCC',
'145A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nGNYhQEaGAYTpIn7GB0YWllDHVqRxVgdGKayNjBMdUASE3VgCAWKBQSg6GV0ZZ3K6CCC5L6VWUuXLs3MzJqG5D6gCqD5gTB1UDHRUIeGwNAQdLdgqGNoZXR0RBETDWFoZQhlRBEbqPCjIsTiPgAUqsgGVvOZ5wAAAABJRU5ErkJggg==',
'B140' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7QgMYAhgaHVqRxQKmMAYwtDpMdUAWa2UNYJjqEBCAog6oN9DRQQTJfaFRq6JWZmZmTUNyH0gdayNcHdQ8oFhoIIYY0C2YdjSiuiUUqBPdzQMVflSEWNwHAEJBzET1uSmSAAAAAElFTkSuQmCC',
'8388' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWElEQVR4nGNYhQEaGAYTpIn7WANYQxhCGaY6IImJTBFpZXR0CAhAEgtoZWh0bQh0EEFRx4CsDuykpVGrwlaFrpqaheQ+NHU4zcNuB6ZbsLl5oMKPihCL+wA3t8xGly2EVwAAAABJRU5ErkJggg==',
'D2B0' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7QgMYQ1hDGVqRxQKmsLayNjpMdUAWaxVpdG0ICAhAEWNodG10dBBBcl/U0lVLl4auzJqG5D6guimsCHUwsQDWhkA0MUYHVnQ7prA2oLslNEA01BXNzQMVflSEWNwHAB1uzn5TG2tzAAAAAElFTkSuQmCC',
'B091' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7QgMYAhhCGVqRxQKmMIYwOjpMRRFrZW1lbQgIRVUn0ugKlEF2X2jUtJWZmVFLkd0HUucQEoBqRytQrAFdjLWVEV0M4hYUMaibQwMGQfhREWJxHwBgDs00+56rEAAAAABJRU5ErkJggg==',
'E65F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7QkMYQ1hDHUNDkMQCGlhbWRsYHRhQxEQasYg1sE6Fi4GdFBo1LWxpZmZoFpL7AhpEWxkaAjHMc8Ai5oohxtrK6OiIIgZyM0MoqlsGKvyoCLG4DwAsKsqF7rTx0QAAAABJRU5ErkJggg==',
'2CDF' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAY0lEQVR4nGNYhQEaGAYTpIn7WAMYQ1lDGUNDkMREprA2ujY6OiCrC2gVaXBtCEQRYwCKsSLEIG6aNm3V0lWRoVnI7gtAUQeGjA6YYqwNmHYAVWG4JTQU7GZUtwxQ+FERYnEfAFa0ypR0XieSAAAAAElFTkSuQmCC',
'F24C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkMZQxgaHaYGIIkFNLC2MrQ6BIigiIkAVTk6sKCIAXUGOjoguy80atXSlZmZWcjuA6qbwtoIVwcTC2ANDUQTY3RgaES3gxVkC5pbREMd0Nw8UOFHRYjFfQCQfM1JUgXJRAAAAABJRU5ErkJggg==',
'83A5' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7WANYQximMIYGIImJTBFpZQhldEBWF9DK0Ojo6IgiJjKFoZW1IdDVAcl9S6NWhS1dFRkVheQ+iLqABhE081xDsYg1BDqIoLkFqDcA2X0gNwPFpjoMgvCjIsTiPgAGIcx+c+wNSgAAAABJRU5ErkJggg==',
'6D82' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7WANEQxhCGaY6IImJTBFpZXR0CAhAEgtoEWl0bQh0EEEWaxBpdHR0aBBBcl9k1LSVWaGrVkUhuS9kClhdI7IdAa0g8wJaGTDFpjBgcQummxlDQwZB+FERYnEfALp7zWqE64TCAAAAAElFTkSuQmCC',
'8E0F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXUlEQVR4nGNYhQEaGAYTpIn7WANEQxmmMIaGIImJTBFpYAhldEBWF9Aq0sDo6IgiBlLH2hAIEwM7aWnU1LClqyJDs5Dch6YObh42MWx2oLsF6mYUsYEKPypCLO4DALOmyUwL4QKcAAAAAElFTkSuQmCC',
'EDE6' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAU0lEQVR4nGNYhQEaGAYTpIn7QkNEQ1hDHaY6IIkFNIi0sjYwBASgijW6NjA6CGARQ3ZfaNS0lamhK1OzkNwHVYfVPBHCYhhuwebmgQo/KkIs7gMAb17NOLndlp8AAAAASUVORK5CYII=',
'1083' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAX0lEQVR4nGNYhQEaGAYTpIn7GB0YAhhCGUIdkMRYHRhDGB0dHQKQxEQdWFtZGwIaRFD0ijQClTUEILlvZda0lVmhq5ZmIbkPTR1czBXDPGx2YHFLCKabByr8qAixuA8AfoXJVB5lVNgAAAAASUVORK5CYII=',
'18F8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7GB0YQ1hDA6Y6IImxOrC2sjYwBAQgiYk6iDS6AlWLoOhFUQd20sqslWFLQ1dNzUJyHyMW8xixmkfQDohbQoBubmBAcfNAhR8VIRb3AQD3YMjVwccB2gAAAABJRU5ErkJggg==',
'39E7' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7RAMYQ1hDHUNDkMQCprC2sgJpEWSVrSKNruhiUyBiAUjuWxm1dGlq6KqVWcjum8IYCFTXimJzKwNI7xRUMRaQWACyGMQtjA5Y3IwiNlDhR0WIxX0AVLvLPNH3z8oAAAAASUVORK5CYII=',
'0F58' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7GB1EQ11DHaY6IImxBog0sDYwBAQgiYlMAYkxOoggiQW0AsWmwtWBnRS1dGrY0sysqVlI7gOpA5Io5kHEAlHMg9iBKgZyC6OjA4pesCtCGVDcPFDhR0WIxX0AhJ3LpHB1nNUAAAAASUVORK5CYII=',
'09BF' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7GB0YQ1hDGUNDkMRYA1hbWRsdHZDViUwRaXRtCEQRC2gFiiHUgZ0UtXTp0tTQlaFZSO4LaGUMdEUzL6CVAcM8kSksGGLY3AJ1M4rYQIUfFSEW9wEA0e/KLv366UIAAAAASUVORK5CYII=',
'D1A4' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7QgMYAhimMDQEIIkFTGEMYAhlaEQRa2UNYHR0aEUVYwhgBaoOQHJf1FIwiopCch9EXaADht7QwNAQTPPQ3IIpFgrUiS42UOFHRYjFfQAx/M4JdITG7AAAAABJRU5ErkJggg==',
'3AB8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7RAMYAlhDGaY6IIkFTGEMYW10CAhAVtnK2sraEOgggiw2RaTRFaEO7KSVUdNWpoaumpqF7D5UdVDzRENd0c1rBapDEwvAolc0ACiG5uaBCj8qQizuAwCuNc2vco1wjQAAAABJRU5ErkJggg==',
'2F5F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7WANEQ11DHUNDkMREpog0sDYwOiCrC2jFFGMAiU2Fi0HcNG1q2NLMzNAsZPcFiADJQBS9jA6YYqwNIDtQxUSAkNHREUUsNBSoNxTNLQMUflSEWNwHADmSyN30YwPwAAAAAElFTkSuQmCC',
'6649' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7WAMYQxgaHaY6IImJTGFtZWh1CAhAEgtoEWlkmOroIIIs1gDkBcLFwE6KjJoWtjIzKyoMyX0hU0RbWYF2oOhtFWl0DQWbgCLm0OiAYgfYLY2obsHm5oEKPypCLO4DAEe/zTUUXAjJAAAAAElFTkSuQmCC',
'20B0' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7WAMYAlhDGVqRxUSmMIawNjpMdUASC2hlbWVtCAgIQNbdKtLo2ujoIILsvmnTVqaGrsyahuy+ABR1YMjoABRrCEQRY23AtEOkAdMtoaGYbh6o8KMixOI+ANp0y/M65z1NAAAAAElFTkSuQmCC',
'F86E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAV0lEQVR4nGNYhQEaGAYTpIn7QkMZQxhCGUMDkMQCGlhbGR0dHRhQxEQaXRvQxVhbWRsYYWJgJ4VGrQxbOnVlaBaS+8DqsJoXSIQYNrdgunmgwo+KEIv7APuKy1HfG5BPAAAAAElFTkSuQmCC',
'8B84' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAW0lEQVR4nGNYhQEaGAYTpIn7WANEQxhCGRoCkMREpoi0Mjo6NCKLBbSKNLoCSSzqpgQguW9p1NSwVaGroqKQ3AdR5+iAaV5gaAimHdjcgiKGzc0DFX5UhFjcBwCuh85GN1cvcwAAAABJRU5ErkJggg==',
'DE12' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7QgNEQxmmMEx1QBILmCLSwBDCEBCALNYq0sAYwugggiYG1NsgguS+qKVTw1ZNA9JI7oOqa3TA1NvKgCk2hQHdLVMYAtDdzBjqGBoyCMKPihCL+wBgmc0n6qWaWAAAAABJRU5ErkJggg==',
'FC1F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWUlEQVR4nGNYhQEaGAYTpIn7QkMZQxmmMIaGIIkFNLA2OoQwOjCgiIk0OGIRA+qFiYGdFBo1bdWqaStDs5Dch6YOr5gDhhjQLRhijEBXO6KIDVT4URFicR8AzI/LEVWHcP4AAAAASUVORK5CYII=',
'C6A9' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdUlEQVR4nGNYhQEaGAYTpIn7WEMYQximMEx1QBITaWVtZQhlCAhAEgtoFGlkdHR0EEEWaxBpYG0IhImBnRS1alrY0lVRUWFI7gtoEG1lbQiYiqa30TUUZAKqHa4NASh2gNwC1IviFpCbQeYhu3mgwo+KEIv7AOMtzRjEtnl1AAAAAElFTkSuQmCC',
'2775' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7WANEQ11DA0MDkMREpjA0OjQEOiCrC2jFFGNoBcJGR1cHZPdNA8KlK6OikN0XAIRTgOYi6WV0YHQAiqKIsQIhSBxZTAQIWYEmILsvNBQsNtVhEIQfFSEW9wEA37rK64pnlHwAAAAASUVORK5CYII=',
'9831' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYklEQVR4nGNYhQEaGAYTpIn7WAMYQxhDGVqRxUSmsLayNjpMRRYLaBVpdGgICEUVY21laHSA6QU7adrUlWGrpq5aiuw+VlcUdRAIMQ9FTACLGNQtKGJQN4cGDILwoyLE4j4ABPLM3Rc723EAAAAASUVORK5CYII=',
'EE05' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7QkNEQxmmMIYGIIkFNIg0MIQyOjCgiTE6OmKIsTYEujoguS80amrY0lWRUVFI7oOoA5uKphdTDGQHuhhDKEMAsvsgbmaY6jAIwo+KEIv7ANgdzBgKIsVgAAAAAElFTkSuQmCC',
'A510' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdElEQVR4nM2Quw2AMAxEzwUbmH08goukYQSmCIU3CNmAAqYkosF8ShD4uqeT/WQsl0n4U17xI2kjMsyzRjkhYBTHOHOiAFXH1Dggk7Dz66ZxWsrcF+enhkH23pYYr6zuq+x8o7Hqd3BRo0BRDs5f/e/B3Pit3JTMWCJAbPsAAAAASUVORK5CYII=',
'0774' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nM2QsRGAIAxFk4INcJ809r+QhmlCwQacG9AwpZxVEEs9ze/e/Vzehdo0Sn/KK34sS1gDFIY5UBJFssyXk2XLkCl3WmD8Ym17qy1G49d7oMIy7rIQOGzDDdd96OLi1enIWGb21f8ezI3fARsJzWDPOQA+AAAAAElFTkSuQmCC',
'0F78' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7GB1EQ11DA6Y6IImxBogAyYCAACQxkSkgsUAHESSxgFYgr9EBpg7spKilU8NWLV01NQvJfWB1UxhQzAOLBTCimAeyg9EBVQzkFtYGVL0gFUAxFDcPVPhREWJxHwAQqMvVcHElcQAAAABJRU5ErkJggg==',
'66E6' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7WAMYQ1hDHaY6IImJTGFtZW1gCAhAEgtoEWlkbWB0EEAWaxBpAIkhuy8yalrY0tCVqVlI7guZIgo0jxHVvFaRRlegXhECYtjcgs3NAxV+VIRY3AcA+v/LVezBmYoAAAAASUVORK5CYII=',
'8564' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nM2QsQ3AIAwETeENnH2gSO9I0DCNKdgARqBhylAakjJR4u9OL/tk6JcR+FNe8UPeAgQQVowKiXE2acaZBMXmpedRoLDya7G2VnuMyo8KpN05O+8bTI7g5xuD8eKCebhMDNn41fmr/z2YG78TpBPOQiecYIkAAAAASUVORK5CYII=',
'6150' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcklEQVR4nGNYhQEaGAYTpIn7WAMYAlhDHVqRxUSmMAawNjBMdUASC2hhBYkFBCCLAfmsUxkdRJDcFxm1KmppZmbWNCT3hUxhCGBoCISpg+htxS7G2hCAYocIUC+jowOKW4AuCWUIZUBx80CFHxUhFvcBAHASygaQAM4/AAAAAElFTkSuQmCC',
'BB5A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QgNEQ1hDHVqRxQKmiLSyNjBMdUAWaxVpdG1gCAhAVzeV0UEEyX2hUVPDlmZmZk1Dch9IHUNDIEwd3DyHhsDQEAw70NQB9TI6OqKIgdzMEMqIIjZQ4UdFiMV9ALWqzUHNtgc3AAAAAElFTkSuQmCC',
'CF6F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYklEQVR4nGNYhQEaGAYTpIn7WENEQx1CGUNDkMREWkUaGB0dHZDVBTSKNLA2oIk1gMQYYWJgJ0Wtmhq2dOrK0Cwk94HVoZsH1huIxQ5UMWxuYQ0RaWAIZUQRG6jwoyLE4j4AjSXJ9uiwkoUAAAAASUVORK5CYII=',
'B0C0' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXElEQVR4nGNYhQEaGAYTpIn7QgMYAhhCHVqRxQKmMIYwOgRMdUAWa2VtZW0QCAhAUSfS6NrA6CCC5L7QqGkrU1etzJqG5D40dVDzsIlhswPTLdjcPFDhR0WIxX0AWeXNH+c/IFcAAAAASUVORK5CYII=',
'5744' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7QkNEQx0aHRoCkMSA7EaHVodGDLGpDq3IYoEBDK0MgQ5TApDcFzZt1bSVmVlRUcjua2UIYG10dEDWy9DK6MAaGhgagmxHKyvIFhS3iEwRwRBjDcAUG6jwoyLE4j4AAbvPAAhYjjUAAAAASUVORK5CYII=',
'2E45' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nGNYhQEaGAYTpIn7WANEQxkaHUMDkMREpog0MLQ6OiCrC2gFik1FFWMAiQU6ujogu2/a1LCVmZlRUcjuCxBpYG10aBBB0svoABQD2oosxgriNTo6IIuJgMUcApDdFxoKcrPDVIdBEH5UhFjcBwAGjMtvlSqn6wAAAABJRU5ErkJggg==',
'869F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7WAMYQxhCGUNDkMREprC2Mjo6OiCrC2gVaWRtCEQRE5ki0oAkBnbS0qhpYSszI0OzkNwnMkW0lSEkEMM8hwZMMUcMOzDdAnUzithAhR8VIRb3AQAL6Mmjz2O9lwAAAABJRU5ErkJggg==',
'AAD5' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7GB0YAlhDGUMDkMRYAxhDWBsdHZDViUxhbWVtCEQRC2gVaXRtCHR1QHJf1NJpK1NXRUZFIbkPoi6gQQRJb2ioaCi6GNQ8BwyxRoeAAHSxUIapDoMg/KgIsbgPADHwzcH/rz0jAAAAAElFTkSuQmCC',
'5CF6' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QkMYQ1lDA6Y6IIkFNLA2ujYwBASgiIk0uDYwOgggiQUGiDSwAsWQ3Rc2bdqqpaErU7OQ3dcKVodiHlTMQQTZjlaIHchiIlMw3cIaAHRzAwOKmwcq/KgIsbgPAAPzy+QDMi3bAAAAAElFTkSuQmCC',
'ED9F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAV0lEQVR4nGNYhQEaGAYTpIn7QkNEQxhCGUNDkMQCGkRaGR0dHRhQxRpdGwLxiYGdFBo1bWVmZmRoFpL7QOocQjD1OmAxzxFTDMMtUDejiA1U+FERYnEfAKF/y6FiqBQaAAAAAElFTkSuQmCC',
'725C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nGNYhQEaGAYTpIn7QkMZQ1hDHaYGIIu2srayNjAEiKCIiTS6NjA6sCCLTWFodJ3K6IDivqhVS5dmZmYhuw+oYgpDQ6ADsr0g89HFRIAqWYFiyHYEAFUyOjqguCWgQTTUIZQB1c0DFH5UhFjcBwAo5sqdAUi9TwAAAABJRU5ErkJggg==',
'968D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAY0lEQVR4nGNYhQEaGAYTpIn7WAMYQxhCGUMdkMREprC2Mjo6OgQgiQW0ijSyNgQ6iKCKNYDUiSC5b9rUaWGrQldmTUNyH6uraCuSOggEmueKZp4AFjFsbsHm5oEKPypCLO4DAOxPymXydAQuAAAAAElFTkSuQmCC',
'DA91' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QgMYAhhCGVqRxQKmMIYwOjpMRRFrZW1lbQgIRRUTaXQFksjui1o6bWVmZtRSZPeB1DmEBKDa0Soa6tCALibS6IguNgUo5uiAIhYaADQvlCE0YBCEHxUhFvcBALSqzosDsdMJAAAAAElFTkSuQmCC',
'36A2' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nGNYhQEaGAYTpIn7RAMYQximMEx1QBILmMLayhDKEBCArLJVpJHR0dFBBFlsikgDa0NAgwiS+1ZGTQtbuioKCJHcN0W0Faiu0QHNPNfQgFYGdDGg7QxobgHqDUB3M2tDYGjIIAg/KkIs7gMAp1XMy0GkH0oAAAAASUVORK5CYII=',
'C35E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7WEOAMNQxNABJTKRVpJW1gdEBWV1AI0OjK7pYA0Mr61S4GNhJUatWhS3NzAzNQnIfSB1DQyC63kYHdDGwHahiILcwOjqiiIHczBDKiOLmgQo/KkIs7gMAyTvKSW3ChloAAAAASUVORK5CYII=',
'3E15' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7RANEQxmmMIYGIIkFTBFpYAhhdEBR2SrSwIguBlI3hdHVAcl9K6Omhq2atjIqCtl9YHUMDSJo5mEXY3QQQXfLFIYAZPeB3MwY6jDVYRCEHxUhFvcBAI67ylZN/A5jAAAAAElFTkSuQmCC',
'2F65' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcklEQVR4nM2QsQ2AMAwE7SIbmH2cgt4Upsg0btiAsAEFTElC5QhKkOLvTv/SyXA+zqCn/OIXZFBWVHGMVjKMkX1PFrJgLYOb4cjeb8vzno+UvJ+UXmQjt0WuW2lYsMom9oysurB4P9XSUMjcwf8+zIvfBTmsysrEdM0vAAAAAElFTkSuQmCC',
'E60C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAX0lEQVR4nGNYhQEaGAYTpIn7QkMYQximMEwNQBILaGBtZQhlCBBBERNpZHR0dGBBFWtgbQh0QHZfaNS0sKWrIrOQ3RfQINqKpA5unisWMUcMOzDdgs3NAxV+VIRY3AcA4X7MAwCJ8VoAAAAASUVORK5CYII=',
'7B44' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7QkNFQxgaHRoCkEVbRVoZWh0a0cQaHaY6tKKITQGqC3SYEoDsvqipYSszs6KikNzH6CDSytro6ICsl7VBpNE1NDA0BElMBCjmgOaWgAagHRhiWNw8QOFHRYjFfQCIBc8FR+n6agAAAABJRU5ErkJggg==',
'7C16' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7QkMZQxmmMEx1QBZtZW10CGEICEARE2lwDGF0EEAWmyICxIwOKO6LmrZq1bSVqVlI7mN0AKtDMY+1AaJXBElMBAgd0MQCGoBumYLqloAGRqCrHVDdPEDhR0WIxX0APT3LoyIZ2K4AAAAASUVORK5CYII=',
'1129' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7GB0YAhhCGaY6IImxOjAGMDo6BAQgiYk6sAawNgQ6iKDrRYiBnbQya1UUkIgKQ3IfWF0rw1QMvVMYGjDEAhgw7ABhFLeEsIayhgaguHmgwo+KEIv7AKJixi3WghgIAAAAAElFTkSuQmCC',
'038B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXElEQVR4nGNYhQEaGAYTpIn7GB1YQxhCGUMdkMRYA0RaGR0dHQKQxESmMDS6NgQ6iCCJBbQyIKsDOylq6aqwVaErQ7OQ3IemDiaGYR42O7C5BZubByr8qAixuA8A/DPKfflFnKkAAAAASUVORK5CYII=',
'FD96' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAW0lEQVR4nGNYhQEaGAYTpIn7QkNFQxhCGaY6IIkFNIi0Mjo6BASgijW6NgQ6CGARQ3ZfaNS0lZmZkalZSO4DqXMICcQwzwGoVwRNzBFTDItbMN08UOFHRYjFfQBCEs3uUm25TAAAAABJRU5ErkJggg==',
'BD0C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWklEQVR4nGNYhQEaGAYTpIn7QgNEQximMEwNQBILmCLSyhDKECCCLNYq0ujo6OjAgqqu0bUh0AHZfaFR01amrorMQnYfmjq4edjEsNiB4RZsbh6o8KMixOI+AL4DzW+cuJRxAAAAAElFTkSuQmCC',
'25AD' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdElEQVR4nGNYhQEaGAYTpIn7WANEQxmmMIY6IImJTBFpYAhldAhAEgtoFWlgdHR0EEHW3SoSwtoQCBODuGna1KVLV0VmTUN2XwBDoytCHRgyOgDFQlHFWBtEMNSJNLC2guxAdktoKCPIXhQ3D1T4URFicR8A/K3LfS3XHTAAAAAASUVORK5CYII='
);
$this->text = array_rand( $images );
return $images[ $this->text ] ;
}
function out_processing_gif(){
$image = dirname(__FILE__) . '/processing.gif';
$base64_image = "R0lGODlhFAAUALMIAPh2AP+TMsZiALlcAKNOAOp4ANVqAP+PFv///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAIACwAAAAAFAAUAAAEUxDJSau9iBDMtebTMEjehgTBJYqkiaLWOlZvGs8WDO6UIPCHw8TnAwWDEuKPcxQml0Ynj2cwYACAS7VqwWItWyuiUJB4s2AxmWxGg9bl6YQtl0cAACH5BAUKAAgALAEAAQASABIAAAROEMkpx6A4W5upENUmEQT2feFIltMJYivbvhnZ3Z1h4FMQIDodz+cL7nDEn5CH8DGZhcLtcMBEoxkqlXKVIgAAibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkphaA4W5upMdUmDQP2feFIltMJYivbvhnZ3V1R4BNBIDodz+cL7nDEn5CH8DGZAMAtEMBEoxkqlXKVIg4HibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpjaE4W5tpKdUmCQL2feFIltMJYivbvhnZ3R0A4NMwIDodz+cL7nDEn5CH8DGZh8ONQMBEoxkqlXKVIgIBibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpS6E4W5spANUmGQb2feFIltMJYivbvhnZ3d1x4JMgIDodz+cL7nDEn5CH8DGZgcBtMMBEoxkqlXKVIggEibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpAaA4W5vpOdUmFQX2feFIltMJYivbvhnZ3V0Q4JNhIDodz+cL7nDEn5CH8DGZBMJNIMBEoxkqlXKVIgYDibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpz6E4W5tpCNUmAQD2feFIltMJYivbvhnZ3R1B4FNRIDodz+cL7nDEn5CH8DGZg8HNYMBEoxkqlXKVIgQCibbK9YLBYvLtHH5K0J0IACH5BAkKAAgALAEAAQASABIAAAROEMkpQ6A4W5spIdUmHQf2feFIltMJYivbvhnZ3d0w4BMAIDodz+cL7nDEn5CH8DGZAsGtUMBEoxkqlXKVIgwGibbK9YLBYvLtHH5K0J0IADs=";
$binary = is_file($image) ? join("",file($image)) : base64_decode($base64_image);
header("Cache-Control: post-check=0, pre-check=0, max-age=0, no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: image/gif");
echo $binary;
}
}
# end of class phpfmgImage
# ------------------------------------------------------
# end of module : captcha
# module user
# ------------------------------------------------------
function phpfmg_user_isLogin(){
return ( isset($_SESSION['authenticated']) && true === $_SESSION['authenticated'] );
}
function phpfmg_user_logout(){
session_destroy();
header("Location: admin.php");
}
function phpfmg_user_login()
{
if( phpfmg_user_isLogin() ){
return true ;
};
$sErr = "" ;
if( 'Y' == $_POST['formmail_submit'] ){
if(
defined( 'PHPFMG_USER' ) && strtolower(PHPFMG_USER) == strtolower($_POST['Username']) &&
defined( 'PHPFMG_PW' ) && strtolower(PHPFMG_PW) == strtolower($_POST['Password'])
){
$_SESSION['authenticated'] = true ;
return true ;
}else{
$sErr = 'Login failed. Please try again.';
}
};
// show login form
phpfmg_admin_header();
?>
<form name="frmFormMail" action="" method='post' enctype='multipart/form-data'>
<input type='hidden' name='formmail_submit' value='Y'>
<br><br><br>
<center>
<div style="width:380px;height:260px;">
<fieldset style="padding:18px;" >
<table cellspacing='3' cellpadding='3' border='0' >
<tr>
<td class="form_field" valign='top' align='right'>Email :</td>
<td class="form_text">
<input type="text" name="Username" value="<?php echo $_POST['Username']; ?>" class='text_box' >
</td>
</tr>
<tr>
<td class="form_field" valign='top' align='right'>Password :</td>
<td class="form_text">
<input type="password" name="Password" value="" class='text_box'>
</td>
</tr>
<tr><td colspan=3 align='center'>
<input type='submit' value='Login'><br><br>
<?php if( $sErr ) echo "<span style='color:red;font-weight:bold;'>{$sErr}</span><br><br>\n"; ?>
<a href="admin.php?mod=mail&func=request_password">I forgot my password</a>
</td></tr>
</table>
</fieldset>
</div>
<script type="text/javascript">
document.frmFormMail.Username.focus();
</script>
</form>
<?php
phpfmg_admin_footer();
}
function phpfmg_mail_request_password(){
$sErr = '';
if( $_POST['formmail_submit'] == 'Y' ){
if( strtoupper(trim($_POST['Username'])) == strtoupper(trim(PHPFMG_USER)) ){
phpfmg_mail_password();
exit;
}else{
$sErr = "Failed to verify your email.";
};
};
$n1 = strpos(PHPFMG_USER,'@');
$n2 = strrpos(PHPFMG_USER,'.');
$email = substr(PHPFMG_USER,0,1) . str_repeat('*',$n1-1) .
'@' . substr(PHPFMG_USER,$n1+1,1) . str_repeat('*',$n2-$n1-2) .
'.' . substr(PHPFMG_USER,$n2+1,1) . str_repeat('*',strlen(PHPFMG_USER)-$n2-2) ;
phpfmg_admin_header("Request Password of Email Form Admin Panel");
?>
<form name="frmRequestPassword" action="admin.php?mod=mail&func=request_password" method='post' enctype='multipart/form-data'>
<input type='hidden' name='formmail_submit' value='Y'>
<br><br><br>
<center>
<div style="width:580px;height:260px;text-align:left;">
<fieldset style="padding:18px;" >
<legend>Request Password</legend>
Enter Email Address <b><?php echo strtoupper($email) ;?></b>:<br />
<input type="text" name="Username" value="<?php echo $_POST['Username']; ?>" style="width:380px;">
<input type='submit' value='Verify'><br>
The password will be sent to this email address.
<?php if( $sErr ) echo "<br /><br /><span style='color:red;font-weight:bold;'>{$sErr}</span><br><br>\n"; ?>
</fieldset>
</div>
<script type="text/javascript">
document.frmRequestPassword.Username.focus();
</script>
</form>
<?php
phpfmg_admin_footer();
}
function phpfmg_mail_password(){
phpfmg_admin_header();
if( defined( 'PHPFMG_USER' ) && defined( 'PHPFMG_PW' ) ){
$body = "Here is the password for your form admin panel:\n\nUsername: " . PHPFMG_USER . "\nPassword: " . PHPFMG_PW . "\n\n" ;
if( 'html' == PHPFMG_MAIL_TYPE )
$body = nl2br($body);
mailAttachments( PHPFMG_USER, "Password for Your Form Admin Panel", $body, PHPFMG_USER, 'You', "You <" . PHPFMG_USER . ">" );
echo "<center>Your password has been sent.<br><br><a href='admin.php'>Click here to login again</a></center>";
};
phpfmg_admin_footer();
}
function phpfmg_writable_check(){
if( is_writable( dirname(PHPFMG_SAVE_FILE) ) && is_writable( dirname(PHPFMG_EMAILS_LOGFILE) ) ){
return ;
};
?>
<style type="text/css">
.fmg_warning{
background-color: #F4F6E5;
border: 1px dashed #ff0000;
padding: 16px;
color : black;
margin: 10px;
line-height: 180%;
width:80%;
}
.fmg_warning_title{
font-weight: bold;
}
</style>
<br><br>
<div class="fmg_warning">
<div class="fmg_warning_title">Your form data or email traffic log is NOT saving.</div>
The form data (<?php echo PHPFMG_SAVE_FILE ?>) and email traffic log (<?php echo PHPFMG_EMAILS_LOGFILE?>) will be created automatically when the form is submitted.
However, the script doesn't have writable permission to create those files. In order to save your valuable information, please set the directory to writable.
If you don't know how to do it, please ask for help from your web Administrator or Technical Support of your hosting company.
</div>
<br><br>
<?php
}
function phpfmg_log_view(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
phpfmg_admin_header();
$file = $files[$n];
if( is_file($file) ){
if( 1== $n ){
echo "<pre>\n";
echo join("",file($file) );
echo "</pre>\n";
}else{
$man = new phpfmgDataManager();
$man->displayRecords();
};
}else{
echo "<b>No form data found.</b>";
};
phpfmg_admin_footer();
}
function phpfmg_log_download(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
$file = $files[$n];
if( is_file($file) ){
phpfmg_util_download( $file, PHPFMG_SAVE_FILE == $file ? 'form-data.csv' : 'email-traffics.txt', true, 1 ); // skip the first line
}else{
phpfmg_admin_header();
echo "<b>No email traffic log found.</b>";
phpfmg_admin_footer();
};
}
function phpfmg_log_delete(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
phpfmg_admin_header();
$file = $files[$n];
if( is_file($file) ){
echo unlink($file) ? "It has been deleted!" : "Failed to delete!" ;
};
phpfmg_admin_footer();
}
function phpfmg_util_download($file, $filename='', $toCSV = false, $skipN = 0 ){
if (!is_file($file)) return false ;
set_time_limit(0);
$buffer = "";
$i = 0 ;
$fp = @fopen($file, 'rb');
while( !feof($fp)) {
$i ++ ;
$line = fgets($fp);
if($i > $skipN){ // skip lines
if( $toCSV ){
$line = str_replace( chr(0x09), ',', $line );
$buffer .= phpfmg_data2record( $line, false );
}else{
$buffer .= $line;
};
};
};
fclose ($fp);
/*
If the Content-Length is NOT THE SAME SIZE as the real conent output, Windows+IIS might be hung!!
*/
$len = strlen($buffer);
$filename = basename( '' == $filename ? $file : $filename );
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
case "php":
case "htm":
case "html":
$ctype="text/plain"; break;
default:
$ctype="application/x-download";
}
//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
//Force the download
header("Content-Disposition: attachment; filename=".$filename.";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
while (@ob_end_clean()); // no output buffering !
flush();
echo $buffer ;
return true;
}
?>

3389
contact.lib.php Normal file

File diff suppressed because it is too large Load Diff

99
contact.php Executable file → Normal file
View File

@ -1,5 +1,94 @@
<?php include 'HEADER.php';?>
<title>Contact Us - thunix Shell Provider and Web Host</title>
<h2>Contact Us</h2>
<p>(Coming soon)</p>
<?php include 'FOOTER.php';?>
<?php
if( !defined('FormmailMakerFormLoader') ){
require_once( dirname(__FILE__).'/contact.lib.php' );
phpfmg_display_form();
};
function phpfmg_form( $sErr = false ){
$style=" class='form_text' ";
?>
<div id='frmFormMailContainer'>
<form style="text-align: center;" name="frmFormMail" id="frmFormMail" target="submitToFrame" action='<?php echo PHPFMG_ADMIN_URL . '' ; ?>' method='post' enctype='multipart/form-data' onsubmit='return fmgHandler.onSubmit(this);'>
<input type='hidden' name='formmail_submit' value='Y'>
<input type='hidden' name='mod' value='ajax'>
<input type='hidden' name='func' value='submit'>
<ol class='phpfmg_form' >
<li class='field_block' id='field_0_div'><div class='col_label'>
<label class='form_field'>Contact Name:</label></div>
<div class='col_field'>
<input type="text" name="field_0" id="field_0" value="<?php phpfmg_hsc("field_0", ""); ?>" class='text_box'>
<div id='field_0_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_1_div'><div class='col_label'>
<label class='form_field'>Email Address:</label></div>
<div class='col_field'>
<input type="text" name="field_1" id="field_1" value="<?php phpfmg_hsc("field_1", ""); ?>" class='text_box'>
<div id='field_1_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_2_div'><div class='col_label'>
<label class='form_field'>Subject:</label></div>
<div class='col_field'>
<input type="text" name="field_2" id="field_2" value="<?php phpfmg_hsc("field_2", ""); ?>" class='text_box'>
<div id='field_2_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_3_div'><div class='col_label'>
<label class='form_field'>Message:</label></div>
<div class='col_field'>
<textarea name="field_3" id="field_3" rows=4 cols=25 class='text_area'><?php phpfmg_hsc("field_3"); ?></textarea>
<div id='field_3_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='phpfmg_captcha_div'>
<div class='col_label'><label class='form_field'>Security Code:</label></div><div class='col_field'>
<?php phpfmg_show_captcha(); ?>
</div>
</li>
<li>
<div class='form_submit_block col_field'>
<input type='submit' value='Send' class='form_button'>
<div id='err_required' class="form_error" style='display:none;'>
<label class='form_error_title'>Please fill in every field.</label>
</div>
<span id='phpfmg_processing' style='display:none;'>
<img id='phpfmg_processing_gif' src='<?php echo PHPFMG_ADMIN_URL . '?mod=image&amp;func=processing' ;?>' alt='Processing...'> <label id='phpfmg_processing_dots'></label>
</span>
</div>
</li>
</ol>
</form>
<iframe name="submitToFrame" id="submitToFrame" src="javascript:false" style="position:absolute;top:-10000px;left:-10000px;"></iframe>
</div>
<!-- end of form container -->
<!-- [Your confirmation message goes here] -->
<div id='thank_you_msg' style='display:none;'>
Your message has been sent. Thank you!
</div>
<?php
phpfmg_javascript($sErr);
}
# end of form
function phpfmg_form_css(){
$formOnly = isset($GLOBALS['formOnly']) && true === $GLOBALS['formOnly'];
?>
<style>
ol.phpfmg_form{
list-style-type:none;
padding:0px;
margin:0px;
}
.text_box, .text_area, .text_select {
min-width:500px;
max-width:500px;
}
.form_error_title{
font-weight: bold;
color: #FF0000;
}
<?php phpfmg_text_align();?>
</style>
<?php
}
# end of css
?>

5258
contact.phpmailer.php Normal file

File diff suppressed because it is too large Load Diff

31
copyright.php Executable file → Normal file
View File

@ -1,5 +1,26 @@
<?php include 'HEADER.php';?>
<title>Copyright Notices and Acknowledgements - thunix Shell Provider and Web Host</title>
<h2>Copyright Notices and Acknowledgements</h2>
<p>(Coming soon)</p>
<?php include 'FOOTER.php';?>
<?php include 'HEADER.php'; ?>
<title>Copyright Notices and Acknowledgements - thunix Shell Provider and Web Host</title>
</head>
<body>
<div id="top">
<div id="header">
<div id="logo">
<h1>&#9763; thunix</h1>
<p>Shell Provider and Web Host</p>
</div>
</div>
<div id="page">
<div id="page-bgtop">
<div id="page-bgbtm">
<div id="content">
<div class="post">
<h2 class="title">Copyright Notices and Acknowledgements</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>(Coming soon)</p>
</div>
</div>
<div style="clear: both;">&nbsp;</div>
</div>
<?php include 'MENU.php'; ?>
<?php include 'FOOTER.php'; ?>

37
donate.php Executable file → Normal file
View File

@ -1,8 +1,29 @@
<?php include 'HEADER.php';?>
<title> - thunix Shell Provider and Web Host</title>
<h2>Donations</h2>
<p>This server costs money to operate. It's also operated as a labor of love and goodwill for the community</p>
<p>That being said, the price breakdown right now is 38Euro/month. So help with server costs, and time spent, for now, you can send some BTC my (ubergeek's) way</p>
<p>1DFM3qY7XmCxGTFPATSQJVCNjvmWiVubGN</p>
<p>I'll set up a Patreon or Liberapay soonish.</p>
<?php include 'FOOTER.php';?>
<?php include 'HEADER.php'; ?>
<title>Donations - thunix Shell Provider and Web Host</title>
</head>
<body>
<div id="top">
<div id="header">
<div id="logo">
<h1>&#9763; thunix</h1>
<p>Shell Provider and Web Host</p>
</div>
</div>
<div id="page">
<div id="page-bgtop">
<div id="page-bgbtm">
<div id="content">
<div class="post">
<h2 class="title">Donations</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>As this server and our projects are all a labor of love and goodwill for the community, operating the thunix server costs money. We love what we do and we love sharing what we do for free, but over time, operating expenses can have a big impact.</p>
<p>That being said, we also rely on the good nature of generous people, who are willing to donate to us. The price breakdown right now is &euro;38/month. So to help with server costs and time spent, for now, you can send some BTC my (ubergeek's) way:</p>
<p style="text-align: center; color: #00FFFF;">1DFM3qY7XmCxGTFPATSQJVCNjvmWiVubGN</p>
<p>I'll set up a Patreon or Liberapay soonish.</p>
</div>
</div>
<div style="clear: both;">&nbsp;</div>
</div>
<?php include 'MENU.php'; ?>
<?php include 'FOOTER.php'; ?>

39
faq.php Executable file → Normal file
View File

@ -1,13 +1,28 @@
<?php include 'HEADER.php';?>
<title>Frequently Asked Questions - thunix Shell Provider and Web Host</title>
<h2>Frequently Asked Questions</h2>
<p><b>How do I sign up for an account?</b><br>
You can ask in #thunix on tilde.chat, or you can email amcclure (with the instructions on the main page).
<p><b>Who is running thunix?</b><br>
The current system administrators are <a href="/~amcclure">amcclure</a> and <a href="/~ubergeek">ubergeek</a>.
<p><b>What happened to the old thunix? Why the name change?</b><br>
The original machine and founder dissappeared without any warning to anyone, including server staff.
For this reason, most things were not backed up. The founder hexhaxtron is currently not reachable,
so we needed to obtain a new domain name, and a new set of machines.
<?php include 'FOOTER.php';?>
<title>Frequently Asked Questions - thunix Shell Provider and Web Host<</title>
</head>
<body>
<div id="top">
<div id="header">
<div id="logo">
<h1>&#9763; thunix</h1>
<p>Shell Provider and Web Host</p>
</div>
</div>
<div id="page">
<div id="page-bgtop">
<div id="page-bgbtm">
<div id="content">
<div class="post">
<h2 class="title">Frequently Asked Questions</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p><b style="color: #FF00FF">How do I sign up for an account?</b><br>You can ask in #thunix on tilde.chat, or you can email amcclure (with the instructions on the main page).</p>
<p><b style="color: #FF00FF">Who is running thunix?</b><br>The current system administrators are <a href="/~amcclure">amcclure</a> and <a href="/~ubergeek">ubergeek</a>.</p>
<p><b style="color: #FF00FF">What happened to the old thunix? Why the name change?</b><br>The original machine and founder dissappeared without any warning to anyone, including server staff. For this reason, most things were not backed up, and we needed to obtain a new domain name, and a new set of machines.</p>
</div>
</div>
<div style="clear: both;">&nbsp;</div>
</div>
<?php include 'MENU.php'; ?>
<?php include 'FOOTER.php';?>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 B

After

Width:  |  Height:  |  Size: 124 B

129
index.php Executable file → Normal file
View File

@ -1,65 +1,64 @@
<?php include 'HEADER.php';?>
<title>thunix Home Page - thunix Shell Provider and Web Host</title>
<h2>Welcome to thunix Shell Provider and Web Host!</h2>
<h3>Main Resource On This Site</h3>
<p>
<ul>
<li><a href="users.php">User Web Directories</a>;</li>
<li><a href="server.php">Status of thunix Servers and Services</a>;</li>
</ul>
</p>
<h3>About thunix Shell Provider and Web Host</h3>
<p>thunix offers Secure Shell (SSH) accounts, Web Hosting, Email Accounts,
and many other services. It was founded by hexhaxtron in the Summer of 2017,
and was continued by <a href="/~amcclure">amcclure</a> and <a href="/~ubergeek">ubergeek</a>
since 2018. We aim to provide the best service possible with a wide variety of features,
and we hope you have fun with it!</p>
<h3>thunix Phoenix</h3>
<p>The thunix Phoenix project aims to provide a new user experience for shell users, with
integration into Ben Harris's Tildeverse network.</p>
<p>Join us on IRC at tilde.chat in these channels:
<ul>
<li>#thunix - General discussion about thunix and thunix services, including issues. Shell-specific issues go in #phoenix.</li>
<li>#phoenix - Discussion about the phoenix shell server, including issues.</li>
</ul>
</p>
<p>If you want to sign up for an account, send an email to <a href="mailto:newuser@thunix.cf"><code>&lt;newuser@thunix.cf&gt;</code></a> with:
<ul>
<li>Your desired username (all lowercase, alphanumeric characters only, no spaces)</li>
<li>An alternate username (in case the desired username is unavailable) (all lowercase, alphanumeric characters only, no spaces)</li>
<li>Contact email address</li>
<li>How you heard about thunix</li>
<li>What interests you in thunix</li>
<li>Public SSH Key</li>
</ul>
</p>
<p>thunix tries to adhere to the values and philosophy of the Hacker Ethic whenever possible. The hacker ethics and beliefs as described by Levy are:
<ul>
<li>Access to computers - and anything which might teach you something about the way the world works - should be unlimited and total. Always yield to the Hands-On Imperative!</li>
<li>All information should be free</li>
<li>Mistrust authority - promote decentralization</li>
<li>Hackers should be judged by their hacking, not criteria such as degrees, age, race, sex, or position</li>
<li>You can create art and beauty on a computer</li>
<li>Computers can change your life for the better</li>
</ul>
</p>
<p>thunix will never use proprietary software but users can do that if they wish. This is something they should avoid however.</p>
<p>If you want to help keep thunix running, please consider <a href="donate.php">donating</a>.</p>
<h3>Server Staff</h3>
<ul>
<li><a href="/~amcclure/"><b>Head Administrator:</b> Anton McClure</a></li>
<li><a href="/~ubergeek/"><b>Administrator & Server Host:</b> Ubergeek</a></li>
</ul>
<h3>Other information and resources</h3>
<ul>
<li>(Coming soon)</li>
<!--<li><a href=""></a>;</li>-->
</ul>
<p>Note that most content on thunix are provided by thunix's users, not the owner of
the server. Comments should be addressed to the owner of the web directory in the
first instance - their email address here is <code>&lt;username&gt;@thunix.cf</code>
unless otherwise specified within their web directory.</p>
<?php include 'FOOTER.php';?>
<?php include 'HEADER.php'; ?>
<title>Welcome to thunix Shell Provider and Web Host</title>
</head>
<body>
<div id="top">
<div id="header">
<div id="logo">
<h1>&#9763; thunix</h1>
<p>Shell Provider and Web Host</p>
</div>
</div>
<div id="page">
<div id="page-bgtop">
<div id="page-bgbtm">
<div id="content">
<div class="post">
<h2 class="title">Welcome to thunix Shell Provider and Web Host</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>We're so glad you could drop by and we hope you enjoy your visit. Stay a while! Feel free to inquire about what we have to offer and explore our services.</p>
</div>
</div>
<div class="post">
<h2 class="title">About thunix Shell Provider and Web Host</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>thunix offers Secure Shell (SSH) accounts, Web Hosting, Email Accounts, and many other services. It was founded by hexhaxtron in the Summer of 2017, and was continued by <a href="/~amcclure">amcclure</a> and <a href="/~ubergeek">ubergeek</a> since 2018. We aim to provide the best service possible with a wide variety of features, and we hope you have fun with it!</p>
</div>
</div>
<div class="post">
<h2 class="title">thunix Phoenix</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>The thunix Phoenix project aims to provide a new user experience for shell users, with integration into Ben Harris's Tildeverse network.</p>
<p>Join us on IRC at tilde.chat in these channels:</p>
<ul>
<li>#thunix - General discussion about thunix and thunix services, including issues. Shell-specific issues go in #phoenix.</li>
<li>#phoenix - Discussion about the phoenix shell server, including issues.</li>
</ul>
<p>If you want to sign up for an account, simply open our <a href="/signup.php">signup form</a> and provide us with:</p>
<ul>
<li>Your contact name</li>
<li>Your email address (so that we can contact you with login details)</li>
<li>Your desired username (all lowercase, alphanumeric characters only, no spaces)</li>
<li>How you heard about us and what interests you in thunix</li>
<li>Your Public SSH Key</li>
</ul>
<p>thunix tries to adhere to the values and philosophy of the Hacker Ethic whenever possible. The hacker ethics and beliefs as described by Levy are:</p>
<ul>
<li>Access to computers - and anything which might teach you something about the way the world works - should be unlimited and total. Always yield to the Hands-On Imperative!</li>
<li>All information should be free</li>
<li>Mistrust authority - promote decentralization</li>
<li>Hackers should be judged by their hacking, not criteria such as degrees, age, race, sex, or position</li>
<li>You can create art and beauty on a computer</li>
<li>Computers can change your life for the better</li>
</ul>
<p>thunix will never use proprietary software but users can do that if they wish. This is something they should avoid however.</p>
<p>If you want to help keep thunix running, please consider <a href="donate.php">donating</a>.</p>
</div>
</div>
<div style="clear: both;">&nbsp;</div>
</div>
<?php include 'MENU.php'; ?>
<?php include 'FOOTER.php'; ?>

View File

@ -1,5 +0,0 @@
<?php include 'HEADER.php';?>
<title> - thunix Shell Provider and Web Host</title>
<h2></h2>
<p></p>
<?php include 'FOOTER.php';?>

38
server.php Executable file → Normal file
View File

@ -1,5 +1,33 @@
<?php include 'HEADER.php';?>
<title>Information and Announcements - thunix Shell Provider and Web Host</title>
<h2>Information and Announcements</h2>
<p>(Coming soon)</p>
<?php include 'FOOTER.php';?>
<?php include 'HEADER.php'; ?>
<title>Status of thunix Servers and Services - thunix Shell Provider and Web Host</title>
</head>
<body>
<div id="top">
<div id="header">
<div id="logo">
<h1>&#9763; thunix</h1>
<p>Shell Provider and Web Host</p>
</div>
</div>
<div id="page">
<div id="page-bgtop">
<div id="page-bgbtm">
<div id="content">
<div class="post">
<h2 class="title">Information and Service Announcements</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>(Coming soon)</p>
</div>
</div>
<div class="post">
<h2 class="title">Server Status</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>(Coming soon)</p>
</div>
</div>
<div style="clear: both;">&nbsp;</div>
</div>
<?php include 'MENU.php'; ?>
<?php include 'FOOTER.php'; ?>

View File

@ -1,293 +0,0 @@
/* DEFAULTS
----------------------------------------------------------*/
body
{
background: #b6b7bc;
font-size: .80em;
font-family: "Helvetica Neue", "Lucida Grande", "Segoe UI", Arial, Helvetica, Verdana, sans-serif;
margin: 0px;
padding: 0px;
color: #696969;
}
a:link, a:visited
{
color: #034af3;
}
a:hover
{
color: #1d60ff;
text-decoration: none;
}
a:active
{
color: #034af3;
}
p
{
margin-bottom: 10px;
line-height: 1.6em;
}
/* HEADINGS
----------------------------------------------------------*/
h1, h2, h3, h4, h5, h6
{
font-size: 1.5em;
color: #666666;
font-variant: small-caps;
text-transform: none;
font-weight: 700;
margin-bottom: 0px;
}
h1
{
font-size: 1.6em;
padding-bottom: 0px;
margin-bottom: 0px;
}
h2
{
font-size: 1.5em;
font-weight: 700;
}
h3
{
font-size: 1.2em;
}
h4
{
font-size: 1.1em;
}
h5, h6
{
font-size: 1em;
}
/* this rule styles <h1> and <h2> tags that are the
first child of the left and right table columns */
.rightColumn > h1, .rightColumn > h2, .leftColumn > h1, .leftColumn > h2
{
margin-top: 0px;
}
/* PRIMARY LAYOUT ELEMENTS
----------------------------------------------------------*/
.page
{
width: 960px;
background-color: #fff;
margin: 20px auto 0px auto;
border: 1px solid #496077;
}
.header
{
position: relative;
margin: 0px;
padding: 0px;
background: #4b6c9e;
width: 100%;
}
.header h1
{
font-weight: 700;
margin: 0px;
padding: 0px 0px 0px 20px;
color: #f9f9f9;
border: none;
line-height: 2em;
font-size: 2em;
}
.main
{
padding: 0px 12px;
margin: 12px 8px 8px 8px;
min-height: 420px;
}
.leftCol
{
padding: 6px 0px;
margin: 12px 8px 8px 8px;
width: 200px;
min-height: 200px;
}
.footer
{
color: #4e5766;
padding: 8px 0px 0px 0px;
margin: 0px auto;
text-align: center;
line-height: normal;
}
/* TAB MENU
----------------------------------------------------------*/
div.hideSkiplink
{
background-color:#3a4f63;
width:100%;
}
div.menu
{
padding: 4px 0px 4px 8px;
}
div.menu ul
{
list-style: none;
margin: 0px;
padding: 0px;
width: auto;
}
div.menu ul li a, div.menu ul li a:visited
{
background-color: #465c71;
border: 1px #4e667d solid;
color: #dde4ec;
display: block;
line-height: 1.35em;
padding: 4px 20px;
text-decoration: none;
white-space: nowrap;
}
div.menu ul li a:hover
{
background-color: #bfcbd6;
color: #465c71;
text-decoration: none;
}
div.menu ul li a:active
{
background-color: #465c71;
color: #cfdbe6;
text-decoration: none;
}
/* FORM ELEMENTS
----------------------------------------------------------*/
fieldset
{
margin: 1em 0px;
padding: 1em;
border: 1px solid #ccc;
}
fieldset p
{
margin: 2px 12px 10px 10px;
}
fieldset.login label, fieldset.register label, fieldset.changePassword label
{
display: block;
}
fieldset label.inline
{
display: inline;
}
legend
{
font-size: 1.1em;
font-weight: 600;
padding: 2px 4px 8px 4px;
}
input.textEntry
{
width: 320px;
border: 1px solid #ccc;
}
input.passwordEntry
{
width: 320px;
border: 1px solid #ccc;
}
div.accountInfo
{
width: 42%;
}
/* MISC
----------------------------------------------------------*/
.clear
{
clear: both;
}
.title
{
display: block;
float: left;
width: auto;
}
.loginDisplay
{
font-size: 1.1em;
display: block;
text-align: right;
padding: 10px;
color: White;
}
.loginDisplay a:link
{
color: white;
}
.loginDisplay a:visited
{
color: white;
}
.loginDisplay a:hover
{
color: white;
}
.failureNotification
{
font-size: 1.2em;
color: Red;
}
.bold
{
font-weight: bold;
}
.submitButton
{
text-align: right;
padding-right: 10px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

View File

@ -1,696 +0,0 @@
if (!window.Sys) { window.Sys = {}; }
if (!Sys.WebForms) { Sys.WebForms = {}; }
Sys.WebForms.Menu = function(options) {
this.items = [];
this.depth = options.depth || 1;
this.parentMenuItem = options.parentMenuItem;
this.element = Sys.WebForms.Menu._domHelper.getElement(options.element);
if (this.element.tagName === 'DIV') {
var containerElement = this.element;
this.element = Sys.WebForms.Menu._domHelper.firstChild(containerElement);
this.element.tabIndex = options.tabIndex || 0;
options.element = containerElement;
options.menu = this;
this.container = new Sys.WebForms._MenuContainer(options);
Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
}
else {
this.container = options.container;
this.keyMap = options.keyMap;
}
Sys.WebForms.Menu._elementObjectMapper.map(this.element, this);
if (this.parentMenuItem && this.parentMenuItem.parentMenu) {
this.parentMenu = this.parentMenuItem.parentMenu;
this.rootMenu = this.parentMenu.rootMenu;
if (!this.element.id) {
this.element.id = (this.container.element.id || 'menu') + ':submenu:' + Sys.WebForms.Menu._elementObjectMapper._computedId;
}
if (this.depth > this.container.staticDisplayLevels) {
this.displayMode = "dynamic";
this.element.style.display = "none";
this.element.style.position = "absolute";
if (this.rootMenu && this.container.orientation === 'horizontal' && this.parentMenu.isStatic()) {
this.element.style.top = "100%";
if (this.container.rightToLeft) {
this.element.style.right = "0px";
}
else {
this.element.style.left = "0px";
}
}
else {
this.element.style.top = "0px";
if (this.container.rightToLeft) {
this.element.style.right = "100%";
}
else {
this.element.style.left = "100%";
}
}
if (this.container.rightToLeft) {
this.keyMap = Sys.WebForms.Menu._keyboardMapping.verticalRtl;
}
else {
this.keyMap = Sys.WebForms.Menu._keyboardMapping.vertical;
}
}
else {
this.displayMode = "static";
this.element.style.display = "block";
if (this.container.orientation === 'horizontal') {
Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
}
}
}
Sys.WebForms.Menu._domHelper.appendCssClass(this.element, this.displayMode);
var children = this.element.childNodes;
var count = children.length;
for (var i = 0; i < count; i++) {
var node = children[i];
if (node.nodeType !== 1) {
continue;
}
var topLevelMenuItem = null;
if (this.parentMenuItem) {
topLevelMenuItem = this.parentMenuItem.topLevelMenuItem;
}
var menuItem = new Sys.WebForms.MenuItem(this, node, topLevelMenuItem);
var previousMenuItem = this.items[this.items.length - 1];
if (previousMenuItem) {
menuItem.previousSibling = previousMenuItem;
previousMenuItem.nextSibling = menuItem;
}
this.items[this.items.length] = menuItem;
}
};
Sys.WebForms.Menu.prototype = {
blur: function() { if (this.container) this.container.blur(); },
collapse: function() {
this.each(function(menuItem) {
menuItem.hover(false);
menuItem.blur();
var childMenu = menuItem.childMenu;
if (childMenu) {
childMenu.collapse();
}
});
this.hide();
},
doDispose: function() { this.each(function(item) { item.doDispose(); }); },
each: function(fn) {
var count = this.items.length;
for (var i = 0; i < count; i++) {
fn(this.items[i]);
}
},
firstChild: function() { return this.items[0]; },
focus: function() { if (this.container) this.container.focus(); },
get_displayed: function() { return this.element.style.display !== 'none'; },
get_focused: function() {
if (this.container) {
return this.container.focused;
}
return false;
},
handleKeyPress: function(keyCode) {
if (this.keyMap.contains(keyCode)) {
if (this.container.focusedMenuItem) {
this.container.focusedMenuItem.navigate(keyCode);
return;
}
var firstChild = this.firstChild();
if (firstChild) {
this.container.navigateTo(firstChild);
}
}
},
hide: function() {
if (!this.get_displayed()) {
return;
}
this.each(function(item) {
if (item.childMenu) {
item.childMenu.hide();
}
});
if (!this.isRoot()) {
if (this.get_focused()) {
this.container.navigateTo(this.parentMenuItem);
}
this.element.style.display = 'none';
}
},
isRoot: function() { return this.rootMenu === this; },
isStatic: function() { return this.displayMode === 'static'; },
lastChild: function() { return this.items[this.items.length - 1]; },
show: function() { this.element.style.display = 'block'; }
};
if (Sys.WebForms.Menu.registerClass) {
Sys.WebForms.Menu.registerClass('Sys.WebForms.Menu');
}
Sys.WebForms.MenuItem = function(parentMenu, listElement, topLevelMenuItem) {
this.keyMap = parentMenu.keyMap;
this.parentMenu = parentMenu;
this.container = parentMenu.container;
this.element = listElement;
this.topLevelMenuItem = topLevelMenuItem || this;
this._anchor = Sys.WebForms.Menu._domHelper.firstChild(listElement);
while (this._anchor && this._anchor.tagName !== 'A') {
this._anchor = Sys.WebForms.Menu._domHelper.nextSibling(this._anchor);
}
if (this._anchor) {
this._anchor.tabIndex = -1;
var subMenu = this._anchor;
while (subMenu && subMenu.tagName !== 'UL') {
subMenu = Sys.WebForms.Menu._domHelper.nextSibling(subMenu);
}
if (subMenu) {
this.childMenu = new Sys.WebForms.Menu({ element: subMenu, parentMenuItem: this, depth: parentMenu.depth + 1, container: this.container, keyMap: this.keyMap });
if (!this.childMenu.isStatic()) {
Sys.WebForms.Menu._domHelper.appendCssClass(this.element, 'has-popup');
Sys.WebForms.Menu._domHelper.appendAttributeValue(this.element, 'aria-haspopup', this.childMenu.element.id);
}
}
}
Sys.WebForms.Menu._elementObjectMapper.map(listElement, this);
Sys.WebForms.Menu._domHelper.appendAttributeValue(listElement, 'role', 'menuitem');
Sys.WebForms.Menu._domHelper.appendCssClass(listElement, parentMenu.displayMode);
if (this._anchor) {
Sys.WebForms.Menu._domHelper.appendCssClass(this._anchor, parentMenu.displayMode);
}
this.element.style.position = "relative";
if (this.parentMenu.depth == 1 && this.container.orientation == 'horizontal') {
Sys.WebForms.Menu._domHelper.setFloat(this.element, this.container.rightToLeft ? "right" : "left");
}
if (!this.container.disabled) {
Sys.WebForms.Menu._domHelper.addEvent(this.element, 'mouseover', Sys.WebForms.MenuItem._onmouseover);
Sys.WebForms.Menu._domHelper.addEvent(this.element, 'mouseout', Sys.WebForms.MenuItem._onmouseout);
}
};
Sys.WebForms.MenuItem.prototype = {
applyUp: function(fn, condition) {
condition = condition || function(menuItem) { return menuItem; };
var menuItem = this;
var lastMenuItem = null;
while (condition(menuItem)) {
fn(menuItem);
lastMenuItem = menuItem;
menuItem = menuItem.parentMenu.parentMenuItem;
}
return lastMenuItem;
},
blur: function() { this.setTabIndex(-1); },
doDispose: function() {
Sys.WebForms.Menu._domHelper.removeEvent(this.element, 'mouseover', Sys.WebForms.MenuItem._onmouseover);
Sys.WebForms.Menu._domHelper.removeEvent(this.element, 'mouseout', Sys.WebForms.MenuItem._onmouseout);
if (this.childMenu) {
this.childMenu.doDispose();
}
},
focus: function() {
if (!this.parentMenu.get_displayed()) {
this.parentMenu.show();
}
this.setTabIndex(0);
this.container.focused = true;
this._anchor.focus();
},
get_highlighted: function() { return /(^|\s)highlighted(\s|$)/.test(this._anchor.className); },
getTabIndex: function() { return this._anchor.tabIndex; },
highlight: function(highlighting) {
if (highlighting) {
this.applyUp(function(menuItem) {
menuItem.parentMenu.parentMenuItem.highlight(true);
},
function(menuItem) {
return !menuItem.parentMenu.isStatic() && menuItem.parentMenu.parentMenuItem;
}
);
Sys.WebForms.Menu._domHelper.appendCssClass(this._anchor, 'highlighted');
}
else {
Sys.WebForms.Menu._domHelper.removeCssClass(this._anchor, 'highlighted');
this.setTabIndex(-1);
}
},
hover: function(hovering) {
if (hovering) {
var currentHoveredItem = this.container.hoveredMenuItem;
if (currentHoveredItem) {
currentHoveredItem.hover(false);
}
var currentFocusedItem = this.container.focusedMenuItem;
if (currentFocusedItem && currentFocusedItem !== this) {
currentFocusedItem.hover(false);
}
this.applyUp(function(menuItem) {
if (menuItem.childMenu && !menuItem.childMenu.get_displayed()) {
menuItem.childMenu.show();
}
});
this.container.hoveredMenuItem = this;
this.highlight(true);
}
else {
var menuItem = this;
while (menuItem) {
menuItem.highlight(false);
if (menuItem.childMenu) {
if (!menuItem.childMenu.isStatic()) {
menuItem.childMenu.hide();
}
}
menuItem = menuItem.parentMenu.parentMenuItem;
}
}
},
isSiblingOf: function(menuItem) { return menuItem.parentMenu === this.parentMenu; },
mouseout: function() {
var menuItem = this,
id = this.container.pendingMouseoutId,
disappearAfter = this.container.disappearAfter;
if (id) {
window.clearTimeout(id);
}
if (disappearAfter > -1) {
this.container.pendingMouseoutId =
window.setTimeout(function() { menuItem.hover(false); }, disappearAfter);
}
},
mouseover: function() {
var id = this.container.pendingMouseoutId;
if (id) {
window.clearTimeout(id);
this.container.pendingMouseoutId = null;
}
this.hover(true);
if (this.container.menu.get_focused()) {
this.container.navigateTo(this);
}
},
navigate: function(keyCode) {
switch (this.keyMap[keyCode]) {
case this.keyMap.next:
this.navigateNext();
break;
case this.keyMap.previous:
this.navigatePrevious();
break;
case this.keyMap.child:
this.navigateChild();
break;
case this.keyMap.parent:
this.navigateParent();
break;
case this.keyMap.tab:
this.navigateOut();
break;
}
},
navigateChild: function() {
var subMenu = this.childMenu;
if (subMenu) {
var firstChild = subMenu.firstChild();
if (firstChild) {
this.container.navigateTo(firstChild);
}
}
else {
if (this.container.orientation === 'horizontal') {
var nextItem = this.topLevelMenuItem.nextSibling || this.topLevelMenuItem.parentMenu.firstChild();
if (nextItem == this.topLevelMenuItem) {
return;
}
this.topLevelMenuItem.childMenu.hide();
this.container.navigateTo(nextItem);
if (nextItem.childMenu) {
this.container.navigateTo(nextItem.childMenu.firstChild());
}
}
}
},
navigateNext: function() {
if (this.childMenu) {
this.childMenu.hide();
}
var nextMenuItem = this.nextSibling;
if (!nextMenuItem && this.parentMenu.isRoot()) {
nextMenuItem = this.parentMenu.parentMenuItem;
if (nextMenuItem) {
nextMenuItem = nextMenuItem.nextSibling;
}
}
if (!nextMenuItem) {
nextMenuItem = this.parentMenu.firstChild();
}
if (nextMenuItem) {
this.container.navigateTo(nextMenuItem);
}
},
navigateOut: function() {
this.parentMenu.blur();
},
navigateParent: function() {
var parentMenu = this.parentMenu,
horizontal = this.container.orientation === 'horizontal';
if (!parentMenu) return;
if (horizontal && this.childMenu && parentMenu.isRoot()) {
this.navigateChild();
return;
}
if (parentMenu.parentMenuItem && !parentMenu.isRoot()) {
if (horizontal && this.parentMenu.depth === 2) {
var previousItem = this.parentMenu.parentMenuItem.previousSibling;
if (!previousItem) {
previousItem = this.parentMenu.rootMenu.lastChild();
}
this.topLevelMenuItem.childMenu.hide();
this.container.navigateTo(previousItem);
if (previousItem.childMenu) {
this.container.navigateTo(previousItem.childMenu.firstChild());
}
}
else {
this.parentMenu.hide();
}
}
},
navigatePrevious: function() {
if (this.childMenu) {
this.childMenu.hide();
}
var previousMenuItem = this.previousSibling;
if (previousMenuItem) {
var childMenu = previousMenuItem.childMenu;
if (childMenu && childMenu.isRoot()) {
previousMenuItem = childMenu.lastChild();
}
}
if (!previousMenuItem && this.parentMenu.isRoot()) {
previousMenuItem = this.parentMenu.parentMenuItem;
}
if (!previousMenuItem) {
previousMenuItem = this.parentMenu.lastChild();
}
if (previousMenuItem) {
this.container.navigateTo(previousMenuItem);
}
},
setTabIndex: function(index) { if (this._anchor) this._anchor.tabIndex = index; }
};
Sys.WebForms.MenuItem._onmouseout = function(e) {
var menuItem = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
if (!menuItem) {
return;
}
menuItem.mouseout();
Sys.WebForms.Menu._domHelper.cancelEvent(e);
};
Sys.WebForms.MenuItem._onmouseover = function(e) {
var menuItem = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
if (!menuItem) {
return;
}
menuItem.mouseover();
Sys.WebForms.Menu._domHelper.cancelEvent(e);
};
Sys.WebForms.Menu._domHelper = {
addEvent: function(element, eventName, fn, useCapture) {
if (element.addEventListener) {
element.addEventListener(eventName, fn, !!useCapture);
}
else {
element['on' + eventName] = fn;
}
},
appendAttributeValue: function(element, name, value) {
this.updateAttributeValue('append', element, name, value);
},
appendCssClass: function(element, value) {
this.updateClassName('append', element, name, value);
},
appendString: function(getString, setString, value) {
var currentValue = getString();
if (!currentValue) {
setString(value);
return;
}
var regex = this._regexes.getRegex('(^| )' + value + '($| )');
if (regex.test(currentValue)) {
return;
}
setString(currentValue + ' ' + value);
},
cancelEvent: function(e) {
var event = e || window.event;
if (event) {
event.cancelBubble = true;
if (event.stopPropagation) {
event.stopPropagation();
}
}
},
contains: function(ancestor, descendant) {
for (; descendant && (descendant !== ancestor); descendant = descendant.parentNode) { }
return !!descendant;
},
firstChild: function(element) {
var child = element.firstChild;
if (child && child.nodeType !== 1) {
child = this.nextSibling(child);
}
return child;
},
getElement: function(elementOrId) { return typeof elementOrId === 'string' ? document.getElementById(elementOrId) : elementOrId; },
getElementDirection: function(element) {
if (element) {
if (element.dir) {
return element.dir;
}
return this.getElementDirection(element.parentNode);
}
return "ltr";
},
getKeyCode: function(event) { return event.keyCode || event.charCode || 0; },
insertAfter: function(element, elementToInsert) {
var next = element.nextSibling;
if (next) {
element.parentNode.insertBefore(elementToInsert, next);
}
else if (element.parentNode) {
element.parentNode.appendChild(elementToInsert);
}
},
nextSibling: function(element) {
var sibling = element.nextSibling;
while (sibling) {
if (sibling.nodeType === 1) {
return sibling;
}
sibling = sibling.nextSibling;
}
},
removeAttributeValue: function(element, name, value) {
this.updateAttributeValue('remove', element, name, value);
},
removeCssClass: function(element, value) {
this.updateClassName('remove', element, name, value);
},
removeEvent: function(element, eventName, fn, useCapture) {
if (element.removeEventListener) {
element.removeEventListener(eventName, fn, !!useCapture);
}
else if (element.detachEvent) {
element.detachEvent('on' + eventName, fn)
}
element['on' + eventName] = null;
},
removeString: function(getString, setString, valueToRemove) {
var currentValue = getString();
if (currentValue) {
var regex = this._regexes.getRegex('(\\s|\\b)' + valueToRemove + '$|\\b' + valueToRemove + '\\s+');
setString(currentValue.replace(regex, ''));
}
},
setFloat: function(element, direction) {
element.style.styleFloat = direction;
element.style.cssFloat = direction;
},
updateAttributeValue: function(operation, element, name, value) {
this[operation + 'String'](
function() {
return element.getAttribute(name);
},
function(newValue) {
element.setAttribute(name, newValue);
},
value
);
},
updateClassName: function(operation, element, name, value) {
this[operation + 'String'](
function() {
return element.className;
},
function(newValue) {
element.className = newValue;
},
value
);
},
_regexes: {
getRegex: function(pattern) {
var regex = this[pattern];
if (!regex) {
this[pattern] = regex = new RegExp(pattern);
}
return regex;
}
}
};
Sys.WebForms.Menu._elementObjectMapper = {
_computedId: 0,
_mappings: {},
_mappingIdName: 'Sys.WebForms.Menu.Mapping',
getMappedObject: function(element) {
var id = element[this._mappingIdName];
if (id) {
return this._mappings[this._mappingIdName + ':' + id];
}
},
map: function(element, theObject) {
var mappedObject = element[this._mappingIdName];
if (mappedObject === theObject) {
return;
}
var objectId = element[this._mappingIdName] || element.id || '%' + (++this._computedId);
element[this._mappingIdName] = objectId;
this._mappings[this._mappingIdName + ':' + objectId] = theObject;
theObject.mappingId = objectId;
}
};
Sys.WebForms.Menu._keyboardMapping = new (function() {
var LEFT_ARROW = 37;
var UP_ARROW = 38;
var RIGHT_ARROW = 39;
var DOWN_ARROW = 40;
var TAB = 9;
var ESCAPE = 27;
this.vertical = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
this.vertical[DOWN_ARROW] = this.vertical.next;
this.vertical[UP_ARROW] = this.vertical.previous;
this.vertical[RIGHT_ARROW] = this.vertical.child;
this.vertical[LEFT_ARROW] = this.vertical.parent;
this.vertical[TAB] = this.vertical[ESCAPE] = this.vertical.tab;
this.verticalRtl = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
this.verticalRtl[DOWN_ARROW] = this.verticalRtl.next;
this.verticalRtl[UP_ARROW] = this.verticalRtl.previous;
this.verticalRtl[LEFT_ARROW] = this.verticalRtl.child;
this.verticalRtl[RIGHT_ARROW] = this.verticalRtl.parent;
this.verticalRtl[TAB] = this.verticalRtl[ESCAPE] = this.verticalRtl.tab;
this.horizontal = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
this.horizontal[RIGHT_ARROW] = this.horizontal.next;
this.horizontal[LEFT_ARROW] = this.horizontal.previous;
this.horizontal[DOWN_ARROW] = this.horizontal.child;
this.horizontal[UP_ARROW] = this.horizontal.parent;
this.horizontal[TAB] = this.horizontal[ESCAPE] = this.horizontal.tab;
this.horizontalRtl = { next: 0, previous: 1, child: 2, parent: 3, tab: 4 };
this.horizontalRtl[RIGHT_ARROW] = this.horizontalRtl.previous;
this.horizontalRtl[LEFT_ARROW] = this.horizontalRtl.next;
this.horizontalRtl[DOWN_ARROW] = this.horizontalRtl.child;
this.horizontalRtl[UP_ARROW] = this.horizontalRtl.parent;
this.horizontalRtl[TAB] = this.horizontalRtl[ESCAPE] = this.horizontalRtl.tab;
this.horizontal.contains = this.horizontalRtl.contains = this.vertical.contains = this.verticalRtl.contains = function(keycode) {
return this[keycode] != null;
};
})();
Sys.WebForms._MenuContainer = function(options) {
this.focused = false;
this.disabled = options.disabled;
this.staticDisplayLevels = options.staticDisplayLevels || 1;
this.element = options.element;
this.orientation = options.orientation || 'vertical';
this.disappearAfter = options.disappearAfter;
this.rightToLeft = Sys.WebForms.Menu._domHelper.getElementDirection(this.element) === 'rtl';
Sys.WebForms.Menu._elementObjectMapper.map(this.element, this);
this.menu = options.menu;
this.menu.rootMenu = this.menu;
this.menu.displayMode = 'static';
this.menu.element.style.position = 'relative';
this.menu.element.style.width = 'auto';
if (this.orientation === 'vertical') {
Sys.WebForms.Menu._domHelper.appendAttributeValue(this.menu.element, 'role', 'menu');
if (this.rightToLeft) {
this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.verticalRtl;
}
else {
this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.vertical;
}
}
else {
Sys.WebForms.Menu._domHelper.appendAttributeValue(this.menu.element, 'role', 'menubar');
if (this.rightToLeft) {
this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.horizontalRtl;
}
else {
this.menu.keyMap = Sys.WebForms.Menu._keyboardMapping.horizontal;
}
}
var floatBreak = document.createElement('div');
floatBreak.style.clear = this.rightToLeft ? "right" : "left";
this.element.appendChild(floatBreak);
Sys.WebForms.Menu._domHelper.setFloat(this.element, this.rightToLeft ? "right" : "left");
Sys.WebForms.Menu._domHelper.insertAfter(this.element, floatBreak);
if (!this.disabled) {
Sys.WebForms.Menu._domHelper.addEvent(this.menu.element, 'focus', this._onfocus, true);
Sys.WebForms.Menu._domHelper.addEvent(this.menu.element, 'keydown', this._onkeydown);
var menuContainer = this;
this.element.dispose = function() {
if (menuContainer.element.dispose) {
menuContainer.element.dispose = null;
Sys.WebForms.Menu._domHelper.removeEvent(menuContainer.menu.element, 'focus', menuContainer._onfocus, true);
Sys.WebForms.Menu._domHelper.removeEvent(menuContainer.menu.element, 'keydown', menuContainer._onkeydown);
menuContainer.menu.doDispose();
}
};
Sys.WebForms.Menu._domHelper.addEvent(window, 'unload', function() {
if (menuContainer.element.dispose) {
menuContainer.element.dispose();
}
});
}
};
Sys.WebForms._MenuContainer.prototype = {
blur: function() {
this.focused = false;
this.isBlurring = false;
this.menu.collapse();
this.focusedMenuItem = null;
},
focus: function(e) { this.focused = true; },
navigateTo: function(menuItem) {
if (this.focusedMenuItem && this.focusedMenuItem !== this) {
this.focusedMenuItem.highlight(false);
}
menuItem.highlight(true);
menuItem.focus();
this.focusedMenuItem = menuItem;
},
_onfocus: function(e) {
var event = e || window.event;
if (event.srcElement && this) {
if (Sys.WebForms.Menu._domHelper.contains(this.element, event.srcElement)) {
if (!this.focused) {
this.focus();
}
}
}
},
_onkeydown: function(e) {
var thisMenu = Sys.WebForms.Menu._elementObjectMapper.getMappedObject(this);
var keyCode = Sys.WebForms.Menu._domHelper.getKeyCode(e || window.event);
if (thisMenu) {
thisMenu.handleKeyPress(keyCode);
}
}
};

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
server/csi.min.js vendored
View File

@ -1 +0,0 @@
window.onload=function(){function a(a,b){var c=/^(?:file):/,d=new XMLHttpRequest,e=0;d.onreadystatechange=function(){4==d.readyState&&(e=d.status),c.test(location.href)&&d.responseText&&(e=200),4==d.readyState&&200==e&&(a.outerHTML=d.responseText)};try{d.open("GET",b,!0),d.send()}catch(f){}}var b,c=document.getElementsByTagName("*");for(b in c)c[b].hasAttribute&&c[b].hasAttribute("data-include")&&a(c[b],c[b].getAttribute("data-include"))};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 248 B

View File

10364
server/jquery/jquery.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

20
server/layout.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -1,196 +0,0 @@
/*
COPYRIGHT (C) 2006-2018 Anton McClure
Anton McClure - https://gozips.uakron.edu/~asm135
*/
body {
color: #000000;
background-color: #FFFFFF;
margin: 0px 20px 0px 20px;
}
body.dark {
color: #FFFFFF;
background-color: #000000;
}
a.glossary {
border: 1px solid red;
padding: 2px 2px;
display: inline-block;
}
a.dark {
color: #ff0;
}
a.dark:visited {
color: #aa0;
}
/* Need hover for accessibility */
a:link:hover {
color: #9932CC;
}
/* Larger font for mobile devices */
@media screen and (max-device-width: 480px) {
body {
font-size: 175%;
}
}
li {
margin-bottom: 8px;
}
/* Header columns */
.columnt1 {
width: 66%;
float: left;
text-align: center;
border: solid 1px;
border-radius: 4px 4px 4px 4px;
}
.columnt1 a:link:hover, .columnt1 a:visited:hover {
font-style: italic;
text-shadow: 2px 2px 9px #f44;
}
.columnt2 {
width: 33%;
float: right;
text-align: center;
}
.nobr {
white-space: nowrap;
}
/* urgent action items*/
.column1 {
width: 31%;
float: left;
}
/* long term action items */
.column2 {
width: 31%;
float: left;
border-left: solid 1px;
border-right: solid 1px;
margin: 0px 10px 0px 10px;
padding: 0px 10px 0px 10px;
}
/* misc */
.column3 {
width: 31%;
float: left;
}
/* rest */
.rest {
width: 100%;
float: left;
}
:link { color: #1F00FF }
:visited { color: #9900DD }
div.c3 { margin-left: 2em }
.c2 {
text-align: center;
width: 100%;
font-weight: bold;
font-style: italic;
}
h3.c1 {
text-align: center;
font-size: 30px;
text-decoration: underline;
}
.titlelink { color: #000000 }
.fullwide { width: 900px; }
#comic-container {
position: relative;
width: 100%;
height: 122px;
margin-bottom: 4px;
}
#comic {
position: absolute;
max-width: 406px;
width: 100%;
height: 122px;
overflow: hidden;
background-color: #fff;
}
#comic-expand img {
display: none;
}
@media screen and (max-width: 1300px) {
#comic { right: 0px; }
#comic:hover {
width: 406px;
padding: 0;
transition: width .4s ease-out, box-shadow 1s ease, transform .8s ease;
}
#comic-expand {
position: absolute;
display: block;
right: 0;
width: 32px;
height: 160px;
border-right: 1px solid blue;
}
#comic-expand img {
position: absolute;
display: block;
bottom: 35px;
}
}
sub {
line-height: 0.25em;
font-size: 70%;
vertical-align: -.05em;
}
sup {
line-height: 0.25em;
font-size: 70%;
vertical-align: 0.7em;
}
.footnote {
font-size: 90%;
padding-left: 0.9em;
text-indent: -0.9em;
}
.footnote sup {
line-height: 0.25em;
font-size: 78%;
vertical-align: 0.4em;
}
.vol {
margin-left: 5%;
font-family: Arial, Helvetica, sans-serif;
}
div.comp {
margin: 0 auto;
width: 98%;
}
a:link {color: blue;}
a:visited {color: blue;}
a:hover {color: blue;}
a:active {color: blue;}
a.dark:link {color: #ff0;}
a.dark:visited {color: #ff0;}
a.dark:hover {color: #ff0;}
a.dark:active {color: #ff0;}

View File

@ -1,208 +0,0 @@
/*
Software License Agreement (BSD License)
Copyright (c) 2006, Yahoo! Inc.
All rights reserved.
Redistribution and use of this software in source and
binary forms, with or without modification, arepermitted
provided that the following conditions are met:
* Redistributions of source code must retain the above
copyright notice, this list of conditions and the
following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other
materials provided with the distribution.
* Neither the name of Yahoo! Inc. nor the names of its
contributors may be used to endorse or promote products
derived from this software without specific prior
written permission of Yahoo! Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
*/
html
{
color: #000;
background: #FFF;
}
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6,
pre, code, form, fieldset, legend, input, button, textarea,
p, blockquote, th, td
{
margin: 0;
padding: 0;
}
table
{
border-collapse: collapse;
border-spacing: 0;
}
fieldset, img
{
border: 0;
}
address, caption, cite, code, dfn, em, strong, th, var, optgroup
{
font-style: inherit;
font-weight: inherit;
}
del, ins
{
text-decoration: none;
}
li
{
list-style: none;
}
caption, th
{
text-align: left;
}
h1, h2, h3, h4, h5, h6
{
font-size: 100%;
font-weight: normal;
}
q: before, q: after
{
content: '';
}
abbr, acronym
{
border: 0;
font-variant: normal;
}
sup
{
vertical-align: baseline;
}
sub
{
vertical-align: baseline;
}
legend
{
color: #000;
}
input, button, textarea, select, optgroup, option
{
font-family: inherit;
font-size: inherit;
font-style: inherit;
font-weight: inherit;
}
input, button, textarea, select
{
*font-size: 100%;
}
body
{
margin: 10px;
}
h1
{
font-size: 138.5%;
}
h2
{
font-size: 123.1%;
}
h3
{
font-size: 108%;
}
h1, h2, h3
{
margin: 1em 0;
}
h1, h2, h3, h4, h5, h6, strong, dt
{
font-weight: bold;
}
optgroup
{
font-weight: normal;
}
abbr, acronym
{
border-bottom: 1px dotted #000;
cursor: help;
}
em
{
font-style: italic;
}
del
{
text-decoration: line-through;
}
blockquote, ul, ol, dl
{
margin: 1em;
}
ol, ul, dl
{
margin-left: 2em;
}
ol li
{
list-style: decimal outside;
}
ul li
{
list-style: disc outside;
}
dl dd
{
margin-left: 1em;
}
th, td
{
border: 1px solid #000;
padding: .5em;
}
th
{
font-weight: bold;
text-align: center;
}
caption
{
margin-bottom: .5em;
text-align: center;
}
sup
{
vertical-align: super;
}
sub
{
vertical-align: sub;
}
p, fieldset, table, pre
{
margin-bottom: 1em;
}
button, input[type="checkbox"], input[type="radio"],
input[type="reset"], input[type="submit"]
{
padding: 1px;
}

View File

@ -1,99 +0,0 @@
/* Neo_Chen's CSS stylesheet
*
* Licensed Under GNU GPL v3
*/
html {
font-family: Go Mono,WenQuanYi Zen Hei Mono,monospace;
font-size:12pt;
border-width: 4pt;
border-style: solid;
background-color:#c0c0c0;
color:black;
}
body {
background-color:#c0c0c0;
color:black;
}
h1 {
font-family: Times, serif;
font-size:36pt;
text-align: center;
color:#000000;
border-style: solid;
border-width: 1pt;
background-color:#008;
color:#fff
}
h2 {
font-family: Times, serif;
font-size:20pt;
text-align: left;
color:#000000;
border-style: solid;
border-width: 1pt;
background-color:#808080;
color:#fff
}
.mono, p, code {
font-family: Go Mono,WenQuanYi Zen Hei Mono,monospace;
font-size:12pt;
}
.msrf {
font-family: Courier,mono;
font-size:9pt;
}
.srf {
font-family: Times,Times New Roman,DejaVu Serif,serif;
font-size:9pt;
}
.srfb {
font-family: Times,Times New Roman,DejaVu Serif,serif;
font-size:18pt;
}
.srfb {
font-family: Times,Times New Roman,DejaVu Serif,serif;
font-size:18pt;
}
a:link {
color: #008;
}
a:visited {
color: #808;
}
a:hover {
color: #000;
background-color: #fff;
}
a:active {
color: #088;
}
table, th, td {
border: 2px solid black;
border-collapse: collapse;
font-family: Envy Code R,WenQuanYi Zen Hei Mono,monospace;
font-size:12pt;
}
.pre {
white-space: pre;
border-style: solid;
border-width: 2px;
}
.whitebg {
background-color: #fff;
}

View File

@ -1,97 +0,0 @@
/* Neo_Chen's CSS stylesheet
*
* Licensed Under GNU GPL v3
*/
html {
border-width: 4pt;
border-style: solid;
background-color:#c0c0c0;
color:black;
}
body {
background-color:#c0c0c0;
color:black;
}
h1 {
font-family: Times, serif;
font-size:36pt;
text-align: center;
color:#000000;
border-style: solid;
border-width: 1pt;
background-color:#008;
color:#fff
}
h2 {
font-family: Times, serif;
font-size:20pt;
text-align: left;
color:#000000;
border-style: solid;
border-width: 1pt;
background-color:#808080;
color:#fff
}
.mono, p {
font-family: Envy Code R,WenQuanYi Zen Hei Mono,monospace;
font-size:12pt;
}
.msrf {
font-family: Courier ,mono;
font-size:9pt;
}
.srf {
font-family: Times,Times New Roman,DejaVu Serif,serif;
font-size:9pt;
}
.srfb {
font-family: Times,Times New Roman,DejaVu Serif,serif;
font-size:18pt;
}
.srfb {
font-family: Times,Times New Roman,DejaVu Serif,serif;
font-size:18pt;
}
a:link {
color: #008;
}
a:visited {
color: #808;
}
a:hover {
color: #000;
background-color: #fff;
}
a:active {
color: #088;
}
table, th, td {
border: 2px solid black;
border-collapse: collapse;
font-family: Envy Code R,WenQuanYi Zen Hei Mono,monospace;
font-size:12pt;
}
.pre {
white-space: pre;
border-style: solid;
border-width: 2px;
}
.whitebg {
background-color: #fff;
}

18
server/print.min.css vendored
View File

@ -1,18 +0,0 @@
/*!
print.css -- css stylesheet used on www.gnu.org
Copyright (C) 2006, 2007, 2014 Free Software Foundation
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
*/#header,#navigation,#links,#toplinks,.netscape4,#fsf-links,#backtotop,#translations,#searcher,.unprintable,#mission-statement,#Disclaimer,#education-content,.edu-breadcrumb,.anchor-reference-id,.back{display:none}.inner{width:100%}body{font-family:Baskerville,Georgia,Garamond,Times,serif;font-size:11pt!important;border:0}h1,h2,h3,h4,h5,h6{border:0;font-family:Baskerville,Georgia,Garamond,Times,serif}div,p,ul,dl,ol{width:auto!important}ul,ol,dl{padding-right:.5em}ul{list-style-type:square}.documentDescription{font-weight:bold}pre{border:1pt dotted black;white-space:pre;font-size:8pt;overflow:auto;padding:1em 0}table,td,th{padding:.3em;border:1pt solid black!important;border-collapse:collapse}table#gpl-compat-matrix td,th.gpl-matrix-border{text-align:center}th.gpl-matrix-license{text-align:right}tr.gpl-matrix-use-type{border-top:.2em solid black}a{color:Black!important;padding:0!important;text-decoration:none!important}a:link,a:visited{color:#520;background:transparent}

View File

@ -1,114 +0,0 @@
/*
Software License Agreement (BSD License)
Copyright (c) 2006, Yahoo! Inc.
All rights reserved.
Redistribution and use of this software in source and
binary forms, with or without modification, arepermitted
provided that the following conditions are met:
* Redistributions of source code must retain the above
copyright notice, this list of conditions and the
following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other
materials provided with the distribution.
* Neither the name of Yahoo! Inc. nor the names of its
contributors may be used to endorse or promote products
derived from this software without specific prior
written permission of Yahoo! Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
*/
html {
color: #000;
background: #FFF;
}
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4,
h5, h6, pre, code, form, fieldset, legend, input,
button, textarea, p, blockquote, th, td {
margin: 0;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
fieldset, img {
border: 0;
}
address, caption, cite, code, dfn, em, strong,
th, var, optgroup {
font-style: inherit;
font-weight: inherit;
}
del, ins {
text-decoration: none;
}
li {
list-style:none;
}
caption, th {
text-align: left;
}
h1, h2, h3, h4, h5, h6 {
font-size: 100%;
font-weight: normal;
}
q:before, q:after {
content:'';
}
abbr, acronym {
border: 0;
font-variant: normal;
}
sup {
vertical-align: baseline;
}
sub {
vertical-align: baseline;
}
legend {
color: #000;
}
input, button, textarea, select, optgroup, option {
font-family: inherit;
font-size: inherit;
font-style: inherit;
font-weight: inherit;
}
input, button, textarea, select {
*font-size: 100%;
}

View File

860
signup.admin.php Normal file
View File

@ -0,0 +1,860 @@
<?php
require_once( dirname(__FILE__).'/signup.lib.php' );
define( 'PHPFMG_USER', "newuser@thunix.cf" ); // must be a email address. for sending password to you.
define( 'PHPFMG_PW', "a31add" );
?>
<?php
/**
* GNU Library or Lesser General Public License version 2.0 (LGPLv2)
*/
# main
# ------------------------------------------------------
error_reporting( E_ERROR ) ;
phpfmg_admin_main();
# ------------------------------------------------------
function phpfmg_admin_main(){
$mod = isset($_REQUEST['mod']) ? $_REQUEST['mod'] : '';
$func = isset($_REQUEST['func']) ? $_REQUEST['func'] : '';
$function = "phpfmg_{$mod}_{$func}";
if( !function_exists($function) ){
phpfmg_admin_default();
exit;
};
// no login required modules
$public_modules = false !== strpos('|captcha||ajax|', "|{$mod}|");
$public_functions = false !== strpos('|phpfmg_ajax_submit||phpfmg_mail_request_password||phpfmg_filman_download||phpfmg_image_processing||phpfmg_dd_lookup|', "|{$function}|") ;
if( $public_modules || $public_functions ) {
$function();
exit;
};
return phpfmg_user_isLogin() ? $function() : phpfmg_admin_default();
}
function phpfmg_ajax_submit(){
$phpfmg_send = phpfmg_sendmail( $GLOBALS['form_mail'] );
$isHideForm = isset($phpfmg_send['isHideForm']) ? $phpfmg_send['isHideForm'] : false;
$response = array(
'ok' => $isHideForm,
'error_fields' => isset($phpfmg_send['error']) ? $phpfmg_send['error']['fields'] : '',
'OneEntry' => isset($GLOBALS['OneEntry']) ? $GLOBALS['OneEntry'] : '',
);
@header("Content-Type:text/html; charset=$charset");
echo "<html><body><script>
var response = " . json_encode( $response ) . ";
try{
parent.fmgHandler.onResponse( response );
}catch(E){};
\n\n";
echo "\n\n</script></body></html>";
}
function phpfmg_admin_default(){
if( phpfmg_user_login() ){
phpfmg_admin_panel();
};
}
function phpfmg_admin_panel()
{
if( !phpfmg_user_isLogin() ){
exit;
};
phpfmg_admin_header();
phpfmg_writable_check();
?>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign=top style="padding-left:280px;">
<style type="text/css">
.fmg_title{
font-size: 16px;
font-weight: bold;
padding: 10px;
}
.fmg_sep{
width:32px;
}
.fmg_text{
line-height: 150%;
vertical-align: top;
padding-left:28px;
}
</style>
<script type="text/javascript">
function deleteAll(n){
if( confirm("Are you sure you want to delete?" ) ){
location.href = "admin.php?mod=log&func=delete&file=" + n ;
};
return false ;
}
</script>
<div class="fmg_title">
1. Email Traffics
</div>
<div class="fmg_text">
<a href="admin.php?mod=log&func=view&file=1">view</a> &nbsp;&nbsp;
<a href="admin.php?mod=log&func=download&file=1">download</a> &nbsp;&nbsp;
<?php
if( file_exists(PHPFMG_EMAILS_LOGFILE) ){
echo '<a href="#" onclick="return deleteAll(1);">delete all</a>';
};
?>
</div>
<div class="fmg_title">
2. Form Data
</div>
<div class="fmg_text">
<a href="admin.php?mod=log&func=view&file=2">view</a> &nbsp;&nbsp;
<a href="admin.php?mod=log&func=download&file=2">download</a> &nbsp;&nbsp;
<?php
if( file_exists(PHPFMG_SAVE_FILE) ){
echo '<a href="#" onclick="return deleteAll(2);">delete all</a>';
};
?>
</div>
<div class="fmg_title">
3. Form Generator
</div>
<div class="fmg_text">
<a href="http://www.formmail-maker.com/generator.php" onclick="document.frmFormMail.submit(); return false;" title="<?php echo htmlspecialchars(PHPFMG_SUBJECT);?>">Edit Form</a> &nbsp;&nbsp;
<a href="http://www.formmail-maker.com/generator.php" >New Form</a>
</div>
<form name="frmFormMail" action='http://www.formmail-maker.com/generator.php' method='post' enctype='multipart/form-data'>
<input type="hidden" name="uuid" value="<?php echo PHPFMG_ID; ?>">
<input type="hidden" name="external_ini" value="<?php echo function_exists('phpfmg_formini') ? phpfmg_formini() : ""; ?>">
</form>
</td>
</tr>
</table>
<?php
phpfmg_admin_footer();
}
function phpfmg_admin_header( $title = '' ){
header( "Content-Type: text/html; charset=" . PHPFMG_CHARSET );
?>
<html>
<head>
<title><?php echo '' == $title ? '' : $title . ' | ' ; ?>PHP FormMail Admin Panel </title>
<meta name="keywords" content="PHP FormMail Generator, PHP HTML form, send html email with attachment, PHP web form, Free Form, Form Builder, Form Creator, phpFormMailGen, Customized Web Forms, phpFormMailGenerator,formmail.php, formmail.pl, formMail Generator, ASP Formmail, ASP form, PHP Form, Generator, phpFormGen, phpFormGenerator, anti-spam, web hosting">
<meta name="description" content="PHP formMail Generator - A tool to ceate ready-to-use web forms in a flash. Validating form with CAPTCHA security image, send html email with attachments, send auto response email copy, log email traffics, save and download form data in Excel. ">
<meta name="generator" content="PHP Mail Form Generator, phpfmg.sourceforge.net">
<style type='text/css'>
body, td, label, div, span{
font-family : Verdana, Arial, Helvetica, sans-serif;
font-size : 12px;
}
</style>
</head>
<body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
<table cellspacing=0 cellpadding=0 border=0 width="100%">
<td nowrap align=center style="background-color:#024e7b;padding:10px;font-size:18px;color:#ffffff;font-weight:bold;width:250px;" >
Form Admin Panel
</td>
<td style="padding-left:30px;background-color:#86BC1B;width:100%;font-weight:bold;" >
&nbsp;
<?php
if( phpfmg_user_isLogin() ){
echo '<a href="admin.php" style="color:#ffffff;">Main Menu</a> &nbsp;&nbsp;' ;
echo '<a href="admin.php?mod=user&func=logout" style="color:#ffffff;">Logout</a>' ;
};
?>
</td>
</table>
<div style="padding-top:28px;">
<?php
}
function phpfmg_admin_footer(){
?>
</div>
<div style="color:#cccccc;text-decoration:none;padding:18px;font-weight:bold;">
:: <a href="http://phpfmg.sourceforge.net" target="_blank" title="Free Mailform Maker: Create read-to-use Web Forms in a flash. Including validating form with CAPTCHA security image, send html email with attachments, send auto response email copy, log email traffics, save and download form data in Excel. " style="color:#cccccc;font-weight:bold;text-decoration:none;">PHP FormMail Generator</a> ::
</div>
</body>
</html>
<?php
}
function phpfmg_image_processing(){
$img = new phpfmgImage();
$img->out_processing_gif();
}
# phpfmg module : captcha
# ------------------------------------------------------
function phpfmg_captcha_get(){
$img = new phpfmgImage();
$img->out();
//$_SESSION[PHPFMG_ID.'fmgCaptchCode'] = $img->text ;
$_SESSION[ phpfmg_captcha_name() ] = $img->text ;
}
function phpfmg_captcha_generate_images(){
for( $i = 0; $i < 50; $i ++ ){
$file = "$i.png";
$img = new phpfmgImage();
$img->out($file);
$data = base64_encode( file_get_contents($file) );
echo "'{$img->text}' => '{$data}',\n" ;
unlink( $file );
};
}
function phpfmg_dd_lookup(){
$paraOk = ( isset($_REQUEST['n']) && isset($_REQUEST['lookup']) && isset($_REQUEST['field_name']) );
if( !$paraOk )
return;
$base64 = phpfmg_dependent_dropdown_data();
$data = @unserialize( base64_decode($base64) );
if( !is_array($data) ){
return ;
};
foreach( $data as $field ){
if( $field['name'] == $_REQUEST['field_name'] ){
$nColumn = intval($_REQUEST['n']);
$lookup = $_REQUEST['lookup']; // $lookup is an array
$dd = new DependantDropdown();
echo $dd->lookupFieldColumn( $field, $nColumn, $lookup );
return;
};
};
return;
}
function phpfmg_filman_download(){
if( !isset($_REQUEST['filelink']) )
return ;
$filelink = base64_decode($_REQUEST['filelink']);
$file = PHPFMG_SAVE_ATTACHMENTS_DIR . basename($filelink);
// 2016-12-05: to prevent *LFD/LFI* attack. patch provided by Pouya Darabi, a security researcher in cert.org
$real_basePath = realpath(PHPFMG_SAVE_ATTACHMENTS_DIR);
$real_requestPath = realpath($file);
if ($real_requestPath === false || strpos($real_requestPath, $real_basePath) !== 0) {
return;
};
if( !file_exists($file) ){
return ;
};
phpfmg_util_download( $file, $filelink );
}
class phpfmgDataManager
{
var $dataFile = '';
var $columns = '';
var $records = '';
function __construct(){
$this->dataFile = PHPFMG_SAVE_FILE;
}
function phpfmgDataManager(){
$this->dataFile = PHPFMG_SAVE_FILE;
}
function parseFile(){
$fp = @fopen($this->dataFile, 'rb');
if( !$fp ) return false;
$i = 0 ;
$phpExitLine = 1; // first line is php code
$colsLine = 2 ; // second line is column headers
$this->columns = array();
$this->records = array();
$sep = chr(0x09);
while( !feof($fp) ) {
$line = fgets($fp);
$line = trim($line);
if( empty($line) ) continue;
$line = $this->line2display($line);
$i ++ ;
switch( $i ){
case $phpExitLine:
continue;
break;
case $colsLine :
$this->columns = explode($sep,$line);
break;
default:
$this->records[] = explode( $sep, phpfmg_data2record( $line, false ) );
};
};
fclose ($fp);
}
function displayRecords(){
$this->parseFile();
echo "<table border=1 style='width=95%;border-collapse: collapse;border-color:#cccccc;' >";
echo "<tr><td>&nbsp;</td><td><b>" . join( "</b></td><td>&nbsp;<b>", $this->columns ) . "</b></td></tr>\n";
$i = 1;
foreach( $this->records as $r ){
echo "<tr><td align=right>{$i}&nbsp;</td><td>" . join( "</td><td>&nbsp;", $r ) . "</td></tr>\n";
$i++;
};
echo "</table>\n";
}
function line2display( $line ){
$line = str_replace( array('"' . chr(0x09) . '"', '""'), array(chr(0x09),'"'), $line );
$line = substr( $line, 1, -1 ); // chop first " and last "
return $line;
}
}
# end of class
# ------------------------------------------------------
class phpfmgImage
{
var $im = null;
var $width = 73 ;
var $height = 33 ;
var $text = '' ;
var $line_distance = 8;
var $text_len = 4 ;
function __construct( $text = '', $len = 4 ){
$this->phpfmgImage( $text, $len );
}
function phpfmgImage( $text = '', $len = 4 ){
$this->text_len = $len ;
$this->text = '' == $text ? $this->uniqid( $this->text_len ) : $text ;
$this->text = strtoupper( substr( $this->text, 0, $this->text_len ) );
}
function create(){
$this->im = imagecreate( $this->width, $this->height );
$bgcolor = imagecolorallocate($this->im, 255, 255, 255);
$textcolor = imagecolorallocate($this->im, 0, 0, 0);
$this->drawLines();
imagestring($this->im, 5, 20, 9, $this->text, $textcolor);
}
function drawLines(){
$linecolor = imagecolorallocate($this->im, 210, 210, 210);
//vertical lines
for($x = 0; $x < $this->width; $x += $this->line_distance) {
imageline($this->im, $x, 0, $x, $this->height, $linecolor);
};
//horizontal lines
for($y = 0; $y < $this->height; $y += $this->line_distance) {
imageline($this->im, 0, $y, $this->width, $y, $linecolor);
};
}
function out( $filename = '' ){
if( function_exists('imageline') ){
$this->create();
if( '' == $filename ) header("Content-type: image/png");
( '' == $filename ) ? imagepng( $this->im ) : imagepng( $this->im, $filename );
imagedestroy( $this->im );
}else{
$this->out_predefined_image();
};
}
function uniqid( $len = 0 ){
$md5 = md5( uniqid(rand()) );
return $len > 0 ? substr($md5,0,$len) : $md5 ;
}
function out_predefined_image(){
header("Content-type: image/png");
$data = $this->getImage();
echo base64_decode($data);
}
// Use predefined captcha random images if web server doens't have GD graphics library installed
function getImage(){
$images = array(
'3B4D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7RANEQxgaHUMdkMQCpoi0MrQ6OgQgq2wVaXSY6ugggiwGUhcIFwM7aWXU1LCVmZlZ05DdB1TH2oimF2iea2gghpgDmjqwWxpR3YLNzQMVflSEWNwHAEOFzEh9UajnAAAAAElFTkSuQmCC',
'7BFD' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYUlEQVR4nGNYhQEaGAYTpIn7QkNFQ1hDA0MdkEVbRVpZGxgdAlDFGl2BYiLIYlMg6kSQ3Rc1NWxp6MqsaUjuA6pAVgeGrA2Y5olgEQtowHRLQAPQzQ2MqG4eoPCjIsTiPgAe5cqdZczn0gAAAABJRU5ErkJggg==',
'E261' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7QkMYQxhCGVqRxQIaWFsZHR2mooqJNLo2OISiijEAxeB6wU4KjVq1dOnUVUuR3QdUN4XV0QHNDoYA1oYANDFGB0wx1gZGNL2hIaKhQJeEBgyC8KMixOI+AEt9zRwxrfAxAAAAAElFTkSuQmCC',
'F3FA' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7QkNZQ1hDA1qRxQIaRFpZGximOqCIMTS6NjAEBKCKAdUxOogguS80alXY0tCVWdOQ3IemDsk8xtAQTDE0dSJY9ALdjCY2UOFHRYjFfQBC9swX+iY1kQAAAABJRU5ErkJggg==',
'3386' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAW0lEQVR4nGNYhQEaGAYTpIn7RANYQxhCGaY6IIkFTBFpZXR0CAhAVtnK0OjaEOgggCw2hQGoztEB2X0ro1aFrQpdmZqF7D6IOqzmiRAQw+YWbG4eqPCjIsTiPgDfEcs3qL/F3gAAAABJRU5ErkJggg==',
'73F5' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QkNZQ1hDA0MDkEVbRVpZGxgdUFS2MjS6ootNYQCpc3VAdl/UqrCloSujopDcB9QFVMfQIIKkF8gHmocqJtIAsQNZLKAB5BaGgAAUMaCbGximOgyC8KMixOI+ANLhyovUCikUAAAAAElFTkSuQmCC',
'B262' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nM2QMQ7AIAhFcfAG9j44dGeQxdPo4A30CC6csrpB2rFNyk8YXn7CCyC3KfCnfOLH5BIwDFSMum8uIpFmLdSzRAymB4tBCcqPs8w5RLLyW73uI1ZzowH5vQ1z6HfbupTtYp0PRnacfvC/F/PgdwEm382td3YaZgAAAABJRU5ErkJggg==',
'F5BF' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXUlEQVR4nGNYhQEaGAYTpIn7QkNFQ1lDGUNDkMQCGkQaWBsdHRjQxRoC0cVCkNSBnRQaNXXp0tCVoVlI7gtoYGh0xTAPKIZpHhYx1lZMtzCGAN2MIjZQ4UdFiMV9AOWey+1Mo0I6AAAAAElFTkSuQmCC',
'BA88' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7QgMYAhhCGaY6IIkFTGEMYXR0CAhAFmtlbWVtCHQQQVEn0uiIUAd2UmjUtJVZoaumZiG5D00d1DzRUFd081pFGjHEsOgNDRBpdEBz80CFHxUhFvcBAHtuzlbmq/ekAAAAAElFTkSuQmCC',
'6C4C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7WAMYQxkaHaYGIImJTGFtdGh1CBBBEgtoEWlwmOrowIIs1gBUEejogOy+yKhpq1ZmZmYhuy9kikgDayNcHURvK1AsNBBDzKER1Q6wWxpR3YLNzQMVflSEWNwHAExOzReeVE0xAAAAAElFTkSuQmCC',
'DC89' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAY0lEQVR4nGNYhQEaGAYTpIn7QgMYQxlCGaY6IIkFTGFtdHR0CAhAFmsVaXBtCHQQQRNjBCoUQXJf1NJpq1aFrooKQ3IfRJ3DVHS9rA0BDehirg0BqHZgcQs2Nw9U+FERYnEfAHUVzhCfseuZAAAAAElFTkSuQmCC',
'B081' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7QgMYAhhCGVqRxQKmMIYwOjpMRRFrZW1lbQgIRVUn0ujo6ADTC3ZSaNS0lVmhq5Yiuw9NHdQ8kUZXIInFDmxuQRGDujk0YBCEHxUhFvcBAB3yzQV11H/IAAAAAElFTkSuQmCC',
'D2DE' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYklEQVR4nGNYhQEaGAYTpIn7QgMYQ1hDGUMDkMQCprC2sjY6OiCrC2gVaXRtCEQTY0AWAzspaumqpUtXRYZmIbkPqG4KK6beAEwxRgcMMaBOdLeEBoiGuqK5eaDCj4oQi/sAprvMgJ1US90AAAAASUVORK5CYII=',
'E68F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWUlEQVR4nGNYhQEaGAYTpIn7QkMYQxhCGUNDkMQCGlhbGR0dHRhQxEQaWRsC0cUakNSBnRQaNS1sVejK0Cwk9wU0iGI1zxXTPCximG6BuhlFbKDCj4oQi/sA8Z3KXXTYSDMAAAAASUVORK5CYII=',
'A922' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAeklEQVR4nM2QsQ3DMAwEn4C1AQeii/QUIDYewVNIBTdQRlARTxmXFJLSBsyveAV5eBw/U/Gk3OJHQgWGtwSWNDmtohoYd26vmoUDU+cmVSsHv22MsX/2Ywt+6pTF0eIPs3PvcEz3liaKPrPTRaAzo5IsW3lAfxfmj98XmmfMqKLRd5gAAAAASUVORK5CYII=',
'7CD5' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7QkMZQ1mBOABZtJW10bXR0QFFZatIg2tDIKrYFJEG1oZAVwdk90VNW7V0VWRUFJL7GB1A6gIaRJD0sjZgiok0QOxAFgtoALnFISAARQzkZoapDoMg/KgIsbgPAKJZzNL+vfIeAAAAAElFTkSuQmCC',
'D8BE' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAVElEQVR4nGNYhQEaGAYTpIn7QgMYQ1hDGUMDkMQCprC2sjY6OiCrC2gVaXRtCEQTQ1EHdlLU0pVhS0NXhmYhuQ9NHR7zsIhhcQs2Nw9U+FERYnEfAKa8zJUZqDIjAAAAAElFTkSuQmCC',
'112B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7GB0YAhhCGUMdkMRYHRgDGB0dHQKQxEQdWANYGwIdRND1AsUCkNy3MmtV1KqVmaFZSO4Dq2tlRDEPLDaFEdO8AEwxRgdUvaIhrKGsoYEobh6o8KMixOI+AOF5xYVFWapZAAAAAElFTkSuQmCC',
'7E6E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAX0lEQVR4nGNYhQEaGAYTpIn7QkNFQxlCGUMDkEVbRRoYHR0dGNDEWBvQxKaAxBhhYhA3RU0NWzp1ZWgWkvsYHYDq0MxjbQDpDUQRE8EiFtCA6ZaABixuHqDwoyLE4j4AUqXJOfrOpKkAAAAASUVORK5CYII=',
'9172' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdUlEQVR4nM2QMQ6AIAxFy9DdgQOxuH8TWTxNHbwBeAOXntIyWaKjJtKkw8sjvEB6O0J/mk/6GATOqMmxWAJIADiGzUyZUuwYgdYk0fXtVRc91NbVx6N5pZnu5XYXth0bjIVkZtdifWJm18yZJeT5B//34jz0nanMycv9CYlsAAAAAElFTkSuQmCC',
'1821' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7GB0YQxhCGVqRxVgdWFsZHR2mIouJOog0ujYEhKLqZQXqC4DpBTtpZdbKMCCxFNl9YHWtqHYwAs1zmIJFLABdDOgWB1Qx0RDGENbQgNCAQRB+VIRY3AcA0jzIwAMNFVMAAAAASUVORK5CYII=',
'3370' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7RANYQ1hDA1qRxQKmiAD5AVMdkFW2MjQ6NAQEBCCLTQGJOjqIILlvZdSqsFVLV2ZNQ3YfSN0URpg6hHkBmGKODgwodoDcwtrAgOIWsJtBqgdB+FERYnEfACDyy+17/RnJAAAAAElFTkSuQmCC',
'4FDD' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXUlEQVR4nGNYhQEaGAYTpI37poiGuoYyhjogi4WINLA2OjoEIIkxgsQaAh1EkMRYp6CIgZ00bdrUsKWrIrOmIbkvYAqm3tBQTDEGLOrAYmhuAYuhu3mgwo96EIv7AJ3My9RK68YCAAAAAElFTkSuQmCC',
'4A4E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpI37pjAEMDQ6hgYgi4UwhjC0Ojogq2MMYW1lmIoqxjpFpNEhEC4GdtK0adNWZmZmhmYhuS8AqM61EVVvaKhoqGtooAOqW4DmoanDI4bq5oEKP+pBLO4DANejy4ToPbVqAAAAAElFTkSuQmCC',
'381E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAW0lEQVR4nGNYhQEaGAYTpIn7RAMYQximMIYGIIkFTGFtZQhhdEBR2SrS6IguBlI3BS4GdtLKqJVhq6atDM1Cdh+qOrh5DkSIBWDRC3IzY6gjipsHKvyoCLG4DwCDMclZ4HATBgAAAABJRU5ErkJggg==',
'7C09' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbUlEQVR4nGNYhQEaGAYTpIn7QkMZQxmmMEx1QBZtZW10CGUICEARE2lwdHR0EEEWmyLSwNoQCBODuClq2qqlq6KiwpDcx+gAUhcwFVkvawNYrAFZTKQBZIcDih0BDZhuCWjA4uYBCj8qQizuAwATscxANMnEiwAAAABJRU5ErkJggg==',
'B18E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXUlEQVR4nGNYhQEaGAYTpIn7QgMYAhhCGUMDkMQCpjAGMDo6OiCrC2hlDWBtCEQVm8KArA7spNCoVVGrQleGZiG5D00d1DwGTPOwiWHRGxrAGoru5oEKPypCLO4DAAcdyOK2z/uBAAAAAElFTkSuQmCC',
'DAAA' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7QgMYAhimMLQiiwVMYQxhCGWY6oAs1srayujoEBCAIibS6NoQ6CCC5L6opdNWpq6KzJqG5D40dVAx0VDX0MDQENzmQd2CKRYagCk2UOFHRYjFfQDwH865R4QP8AAAAABJRU5ErkJggg==',
'61ED' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7WAMYAlhDHUMdkMREpjAGsDYwOgQgiQW0sILFRJDFGhiQxcBOioxaFbU0dGXWNCT3hUxhwNTbSpyYCFQvsluALglFd/NAhR8VIRb3AQCR1siDjlalSAAAAABJRU5ErkJggg==',
'0A24' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdUlEQVR4nGNYhQEaGAYTpIn7GB0YAhhCGRoCkMRYAxhDGB0dGpHFRKawtrI2BLQiiwW0ijQ6NARMCUByX9TSaSuzVmZFRSG5D6yuldEBVa9oqMMUxtAQFDuA6gLQ3SLS6OiAKsboINLoGhqAIjZQ4UdFiMV9AJD2zYxT1n0AAAAAAElFTkSuQmCC',
'C0E4' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYUlEQVR4nGNYhQEaGAYTpIn7WEMYAlhDHRoCkMREWhlDWBsYGpHFAhpZW4FirShiDSKNrg0MUwKQ3Be1atrK1NBVUVFI7oOoY3TA1MsYGoJpBza3oIhhc/NAhR8VIRb3AQCVuM1V0409bQAAAABJRU5ErkJggg==',
'74B3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkMZWllDGUIdkEVbGaayNjo6BKCKhbI2BDSIIItNYXRlbXRoCEB2X9TSpUtDVy3NQnIfo4NIK5I6MGRtEA11RTMPyG5FtyMAJIbmFrAYupsHKPyoCLG4DwAG680IoYzDzAAAAABJRU5ErkJggg==',
'7A7E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7QkMZAlhDA0MDkEVbGUMYGgIdUFS2srZiiE0RaXRodISJQdwUNW1l1tKVoVlI7mN0AKqbwoiil7VBNNQhAFVMpEEEaBqqWABQzLUBqxiqmwco/KgIsbgPAAFcypYSgkVsAAAAAElFTkSuQmCC',
'D503' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7QgNEQxmmMIQ6IIkFTBFpYAhldAhAFmsVaWB0dGgQQRULYW0IaAhAcl/U0qlLlwLJLCT3BbQyNLoi1KGIoZnX6IhuxxTWVnS3hAYwhqC7eaDCj4oQi/sAM0POpHsVDboAAAAASUVORK5CYII=',
'80A8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7WAMYAhimMEx1QBITmcIYwhDKEBCAJBbQytrK6OjoIIKiTqTRtSEApg7spKVR01amroqamoXkPjR1UPOAYqGBKOaB7GBtCESzgzGEFU0vyM1AMRQ3D1T4URFicR8A4hLM/qeWwtgAAAAASUVORK5CYII=',
'FCB9' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7QkMZQ1lDGaY6IIkFNLA2ujY6BASgiIk0uDYEOoigibE2OsLEwE4KjZq2amnoqqgwJPdB1DlMxdALJtHtCECzA5tbMN08UOFHRYjFfQBIy87EigEC4AAAAABJRU5ErkJggg==',
'23FB' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7WANYQ1hDA0MdkMREpoi0sjYwOgQgiQW0MjS6AsVEkHW3MiCrg7hp2qqwpaErQ7OQ3RfAgGEeowOmeawNmGIiDZhuCQ0FurmBEcXNAxV+VIRY3AcAi7nKCkJFVakAAAAASUVORK5CYII=',
'0979' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAeUlEQVR4nGNYhQEaGAYTpIn7GB0YQ1hDA6Y6IImxBrC2MjQEBAQgiYlMEWl0aAh0EEESC2gFijU6wsTATopaunRp1tJVUWFI7gtoZQx0mMIwFVUvQ6NDANBcFDtYgKYxoNgBcgtrAwOKW8BubmBAcfNAhR8VIRb3AQD/YsvXhNFv2wAAAABJRU5ErkJggg==',
'1AD1' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7GB0YAlhDGVqRxVgdGENYGx2mIouJOrC2sjYEhKLqFWl0bQiA6QU7aWXWtJWpq6KWIrsPTR1UTDQUUwybOqBYowOKmGgIUCyUITRgEIQfFSEW9wEAJavK9ihcb3IAAAAASUVORK5CYII=',
'7933' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZUlEQVR4nGNYhQEaGAYTpIn7QkMZQxhDGUIdkEVbWVtZGx0dAlDERBodGgIaRJDFpgDFwKJI7otaujRr6qqlWUjuY3RgDERSB4asDQwY5ok0sGCIBTRguiWgAYubByj8qAixuA8AMdzN5ey1N+8AAAAASUVORK5CYII=',
'B3D8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAW0lEQVR4nGNYhQEaGAYTpIn7QgNYQ1hDGaY6IIkFTBFpZW10CAhAFmtlaHRtCHQQQVHH0MraEABTB3ZSaNSqsKWroqZmIbkPTR1u87DagekWbG4eqPCjIsTiPgBZ/c6+pSgHzQAAAABJRU5ErkJggg==',
'C515' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcUlEQVR4nM2QsRHAIAhFoXADsg9NegtsnEYLN9BskCJOGUpMLJM7+d07PvcO6K9JsFJ+8XOyBagYvGFUKIEg2z2fKeGTJRLt7mz8Ym9nP64YjZ/ezlz17tCdsEzKkGlwcQUqeOvnRE0CN17gfx9m4ncDIaLLo3yxb4MAAAAASUVORK5CYII=',
'AB33' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYUlEQVR4nGNYhQEaGAYTpIn7GB1EQxhDGUIdkMRYA0RaWRsdHQKQxESmiDQ6NAQ0iCCJBbSKtDKARRHui1o6NWzV1FVLs5Dch6YODENDsZqH1Q50twS0Yrp5oMKPihCL+wAB+M7FephSdgAAAABJRU5ErkJggg==',
'5FCA' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkNEQx1CHVqRxQIaRBoYHQKmOqCJsTYIBAQgiQUGgMQYHUSQ3Bc2bWrY0lUrs6Yhu68VRR2yWGgIsh1gMUEUdSJTQG4JRBFjBdrLEOqIat4AhR8VIRb3AQC9E8t8qCu8WQAAAABJRU5ErkJggg==',
'0EF5' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7GB1EQ1lDA0MDkMRYA0QaWIEyyOpEpmCKBbSCxVwdkNwXtXRq2NLQlVFRSO6DqAOagaEXVQxmB7IYxC0MAcjuA7u5gWGqwyAIPypCLO4DABa7ydn88w+OAAAAAElFTkSuQmCC',
'4CAB' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpI37pjCGgrADslgIa6NDKKNDAJIYY4hIg6Ojo4MIkhjrFJEG1oZAmDqwk6ZNm7Zq6arI0Cwk9wWgqgPD0FCgWGgginkMQHWuDehirI2uaHpB7gWah+rmgQo/6kEs7gMANRDMh2SUV2IAAAAASUVORK5CYII=',
'9D79' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdUlEQVR4nGNYhQEaGAYTpIn7WANEQ1hDA6Y6IImJTBFpZWgICAhAEgtoFWl0aAh0EEEXa3SEiYGdNG3qtJVZS1dFhSG5j9UVqG4Kw1RkvQwgvQFAu5DEBIBijg4MKHaA3MLawIDiFrCbGxhQ3DxQ4UdFiMV9ACd8zLIWW3OUAAAAAElFTkSuQmCC',
'C846' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbElEQVR4nGNYhQEaGAYTpIn7WEMYQxgaHaY6IImJtLK2MrQ6BAQgiQU0igBVOToIIIs1ANUFOjoguy9q1cqwlZmZqVlI7gOpY210RDWvQaTRNTTQQQTdjkZHFDGwWxpR3YLNzQMVflSEWNwHAHOYzUVBjUrkAAAAAElFTkSuQmCC',
'CD84' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7WENEQxhCGRoCkMREWkVaGR0dGpHFAhpFGl0bAlpRxBpEGh0dHaYEILkvatW0lVmhq6KikNwHUefogK7XtSEwNATTDmxuQRHD5uaBCj8qQizuAwCmhs8EJGHMdwAAAABJRU5ErkJggg==',
'24E8' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7WAMYWllDHaY6IImJTGGYytrAEBCAJBbQyhDK2sDoIIKsu5XRFUkdxE3Tli5dGrpqahay+wJEWtHNY3QQDXVFMw+ophXdDhGwGKre0FBMNw9U+FERYnEfAD/Qyqr8MZyzAAAAAElFTkSuQmCC',
'27EA' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7WANEQ11DHVqRxUSmMDS6NjBMdUASC2gFiwUEIOtuZWhlbWB0EEF237RV05aGrsyahuy+AIYAJHVgyOjA6AAUCw1BdgsYoqoTAUJ0sdBQoFioI4rYQIUfFSEW9wEAEwbKLGpLu0QAAAAASUVORK5CYII=',
'5F02' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7QkNEQx2mMEx1QBILaBBpYAhlCAhAE2N0dHQQQRILDBBpYIWohrsvbNrUsKWrooAQyX2tYHWNyHZAxVqR3RLQCrID6BokMZEpELcgi7EC7WWYwhgaMgjCj4oQi/sAtsvMZosFNiwAAAAASUVORK5CYII=',
'E517' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7QkNEQxmmMIaGIIkFNIg0MIQwgEgUMUZMsRCGKSAa4b7QqKlLV01btTILyX1A+UaHKQytDCh6wWJTUMVEQGIBqGKsrUD3OaC6mTGEMdQRRWygwo+KEIv7AOp9zKdA/I00AAAAAElFTkSuQmCC',
'B7D3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QgNEQ11DGUIdkMQCpjA0ujY6OgQgi7UCxRoCGkRQ1bWyAsUCkNwXGrVq2tJVUUuzkNwHVBeApA5qHqMDK7p5QNMwxKaINLCiuSU0ACiG5uaBCj8qQizuAwA4/89LBb7x1QAAAABJRU5ErkJggg==',
'3CDD' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXElEQVR4nGNYhQEaGAYTpIn7RAMYQ1lDGUMdkMQCprA2ujY6OgQgq2wVaXBtCHQQQRabItLAihADO2ll1LRVS1dFZk1Ddh+qOrh52MTQ7cDmFmxuHqjwoyLE4j4AjRrMe5rkSpEAAAAASUVORK5CYII=',
'913A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcklEQVR4nGNYhQEaGAYTpIn7WAMYAhhDGVqRxUSmMAawNjpMdUASC2gFqmwICAhAEWMIYGh0dBBBct+0qauiVk1dmTUNyX2srijqIBCktyEwNARJTAAihqJOZAoD0C2oelkDWEMZQxlRzRug8KMixOI+AHGBycFywSvGAAAAAElFTkSuQmCC',
'3349' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7RANYQxgaHaY6IIkFTBFpZWh1CAhAVtkKUuXoIIIsNgUoGggXAztpZdSqsJWZWVFhyO4DqmMF6hZBM881NKABXcyh0QHFDrBbGlHdgs3NAxV+VIRY3AcAwFDMuPPKh68AAAAASUVORK5CYII=',
'B742' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nGNYhQEaGAYTpIn7QgNEQx0aHaY6IIkFTGFodGh1CAhAFmsFik11dBBBVdfKEOjQIILkvtCoVdNWZmatikJyH1BdAGsj0BYU8xgdWEOBpqKIsTYAbZmCIjZFBCQWgOpmkJhjaMggCD8qQizuAwC5M87T/bVB7QAAAABJRU5ErkJggg==',
'7D9E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYklEQVR4nGNYhQEaGAYTpIn7QkNFQxhCGUMDkEVbRVoZHR0dGFDFGl0bAlHFpqCIQdwUNW1lZmZkaBaS+xgdRBodQlD1sjYAxdDMEwGKOaKJBTRguiWgAYubByj8qAixuA8ADr7Kl8Etk1gAAAAASUVORK5CYII=',
'A845' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdUlEQVR4nGNYhQEaGAYTpIn7GB0YQxgaHUMDkMRYA1hbGVodHZDViUwRaXSYiioW0ApUF+jo6oDkvqilK8NWZmZGRSG5D6SOtdGhQQRJb2ioSKMr0FYRFPOAdjQ6Ooig29HoEBCAIgZys8NUh0EQflSEWNwHALWGzRnVHtv+AAAAAElFTkSuQmCC',
'4234' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAc0lEQVR4nM2QsRGAMAhFScEGug/ZAO9Ck2lI4QaYDWwypdoRtdRTfvfuc7wD2mUU/pR3/CykIKDsWcIZCxXPQhoKKc+eocHeImPnV2tb29Jydn5ssDcj+V0RYNBJUu9Ch0nnYqh4XO7YKPHs/NX/nsuN3wbyG8576cF6dQAAAABJRU5ErkJggg==',
'6474' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcklEQVR4nM2QMQ6AIBAEl4If4H9o7K+AQl5zJN4PzifQ8EqNFaClRm+TLSbZZHKol2P8Ka/4WYLYSEwNc4oNTLlltCIeLR1jMyN7pcZvSaXUUlNq/II6gRrfbWWKnkwMHYMYj9FFLPfsdB7YV/97MDd+O4zDzestw3HjAAAAAElFTkSuQmCC',
'D933' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7QgMYQxhDGUIdkMQCprC2sjY6OgQgi7WKNDo0BDSIoIuBRRHui1q6dGnW1FVLs5DcF9DKGIikDirGgMU8FkwxLG7B5uaBCj8qQizuAwDHYc/ZwyISiAAAAABJRU5ErkJggg==',
'B1BD' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7QgMYAlhDGUMdkMQCpjAGsDY6OgQgi7WyBrA2BDqIoKhjAKsTQXJfaNSqqKWhK7OmIbkPTR3UPAZM87CJQfUiuyUU6GJ0Nw9U+FERYnEfANEcyxx8YmJdAAAAAElFTkSuQmCC',
'801B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7WAMYAhimMIY6IImJTGEMYQhhdAhAEgtoZW1lBIqJoKgTaXSYAlcHdtLSqGkrs6atDM1Cch+aOqh5EDERNDsYpqDbAXQLml6QmxlDHVHcPFDhR0WIxX0APkrKvXdRW2wAAAAASUVORK5CYII=',
'F06A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpIn7QkMZAhhCGVqRxQIaGEMYHR2mOqCIsbayNjgEBKCIiTS6NjA6iCC5LzRq2srUqSuzpiG5D6zO0RGmDklvYGgIhh2BaOpAbkHXC3IzI4rYQIUfFSEW9wEAfv3MWOzpzCAAAAAASUVORK5CYII=',
'E641' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7QkMYQxgaHVqRxQIaWFsZWh2mooqJNDJMdQhFE2tgCITrBTspNGpa2MrMrKXI7gtoEG1lxbBDpNE1NABDzAGbW9DEoG4ODRgE4UdFiMV9AH4PziqOQid7AAAAAElFTkSuQmCC',
'90AF' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7WAMYAhimMIaGIImJTGEMYQhldEBWF9DK2sro6IgmJtLo2hAIEwM7adrUaStTV0WGZiG5j9UVRR0EgvSGoooJAO1gRVMHcgu6GMjN6GIDFX5UhFjcBwAHH8mxHMr2CQAAAABJRU5ErkJggg==',
'F632' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nM2QsQ3AIAwETcEGZB+P4Eg4BdPYBRtAhvCUSToIlInEf3eyrNODDRFYqb/4MbvoGCo2jMRnr0jUsaAgO4aeCShKaPw4nYdVs9T4kWz5vlN8/UOhDCMrMHHp2ePsOC6w34ed+F0GlM6EDMd6sgAAAABJRU5ErkJggg==',
'59A4' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAdklEQVR4nGNYhQEaGAYTpIn7QkMYQximMDQEIIkFNLC2MoQyNKKKiTQ6Ojq0IosFBog0ujYETAlAcl/YtKVLU1dFRUUhu6+VMdC1IdABWS9DK0Oja2hgaAiyHa0sIPNQ3CIyhbWVFU2MNYAxBF1soMKPihCL+wDGH88nX8x7dgAAAABJRU5ErkJggg==',
'C92F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7WEMYQxhCGUNDkMREWllbGR0dHZDVBTSKNLo2BKKKNYg0OiDEwE6KWrV0adbKzNAsJPcFNDAGOrQyoullaHSYgibWyNLoEIAqBnaLA6oYyM2soahuGajwoyLE4j4Ad+PJzH4VaYoAAAAASUVORK5CYII=',
'A66C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcElEQVR4nGNYhQEaGAYTpIn7GB0YQxhCGaYGIImxBrC2Mjo6BIggiYlMEWlkbXB0YEESC2gVaWAFmoDsvqil08KWTl2Zhey+gFbRVlZHRwdke0NDRRpdGwJRxIDmgcVQ7cB0S0ArppsHKvyoCLG4DwDHfMtw1BiCIgAAAABJRU5ErkJggg==',
'7DF9' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7QkNFQ1hDA6Y6IIu2irSyNjAEBKCKNbo2MDqIIItNQRGDuClq2srU0FVRYUjuA6oAqmOYiqyXtQEs1oAsJgIRQ7EjoAHTLQENQDcDzUNx8wCFHxUhFvcBANqIzAhkFCpQAAAAAElFTkSuQmCC',
'283B' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7WAMYQxhDGUMdkMREprC2sjY6OgQgiQW0ijQ6NAQ6iCDrbmVtZUCog7hp2sqwVVNXhmYhuy8ARR0YMjpgmsfagCkm0oDpltBQTDcPVPhREWJxHwCjVMvGbT84vwAAAABJRU5ErkJggg==',
'7366' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaklEQVR4nGNYhQEaGAYTpIn7QkNZQxhCGaY6IIu2irQyOjoEBKCIMTS6Njg6CCCLTWFoZW1gdEBxX9SqsKVTV6ZmIbkPqKKV1dERxTzWBpB5gQ4iSGIiWMQCGjDdEtCAxc0DFH5UhFjcBwD0QstjZd/I6QAAAABJRU5ErkJggg==',
'BF3C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAW0lEQVR4nGNYhQEaGAYTpIn7QgNEQx1DGaYGIIkFTBFpYG10CBBBFmsF8QIdWNDUMTQ6OiC7LzRqatiqqSuzkN2Hpg7FPGxi6HaguyUUyGNEc/NAhR8VIRb3AQDsac2NauEDoQAAAABJRU5ErkJggg==',
'885F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7WAMYQ1hDHUNDkMREprC2sjYwOiCrC2gVaXRFEwOrmwoXAztpadTKsKWZmaFZSO4DqWNoCMQwzwGLmCuaGEgvo6MjihjIzQyhqG4ZqPCjIsTiPgBYKcnVBcbU6wAAAABJRU5ErkJggg==',
'DCAB' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7QgMYQxmmMIY6IIkFTGFtdAhldAhAFmsVaXB0dHQQQRNjbQiEqQM7KWrptFVLV0WGZiG5D00dQiw0EMM81wY0MaBbXNH0gtwMNA/FzQMVflSEWNwHAMULznV/b9ftAAAAAElFTkSuQmCC',
'BDB6' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAWklEQVR4nGNYhQEaGAYTpIn7QgNEQ1hDGaY6IIkFTBFpZW10CAhAFmsVaXRtCHQQQFXX6Nro6IDsvtCoaStTQ1emZiG5D6oOq3kihMSwuAWbmwcq/KgIsbgPAKgLzwOqYoQ0AAAAAElFTkSuQmCC',
'4B41' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaElEQVR4nGNYhQEaGAYTpI37poiGMDQ6tKKIhYi0MrQ6TEUWYwwRaXSY6hCKLMY6BaguEK4X7KRp06aGrczMWorsvgCgOlY0O0JDRRpdQwNQ7Z0CtAPdLSA7MMTAbg4NGAzhRz2IxX0AVtTNTk0MYckAAAAASUVORK5CYII=',
'FD0E' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAVElEQVR4nGNYhQEaGAYTpIn7QkNFQximMIYGIIkFNIi0MoQyOjCgijU6OjpiiLk2BMLEwE4KjZq2MnVVZGgWkvvQ1OEVw2IHFrdgunmgwo+KEIv7AAuRzB9JPfdyAAAAAElFTkSuQmCC',
'852A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAeElEQVR4nGNYhQEaGAYTpIn7WANEQxlCGVqRxUSmiDQwOjpMdUASC2gVaWBtCAgIQFUXwtAQ6CCC5L6lUVOXrlqZmTUNyX0iUxgaHVoZYeqg5gHFpjCGhqDa0egQgKpOZAorUCeqGGsAYwhraCCK2ECFHxUhFvcBAFxZy1Z99b8CAAAAAElFTkSuQmCC',
'9F57' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZklEQVR4nGNYhQEaGAYTpIn7WANEQ11DHUNDkMREpog0sIJoJLGAVhxiU4E0kvumTZ0atjQza2UWkvtYXUXAqlFsbgWLTUEWEwDbERCALAZyC6OjowOqm4F6QxlRxAYq/KgIsbgPAItNy1U7f0upAAAAAElFTkSuQmCC',
'3638' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAXklEQVR4nGNYhQEaGAYTpIn7RAMYQxhDGaY6IIkFTGFtZW10CAhAVtkq0sjQEOgggiw2BchDqAM7aWXUtLBVU1dNzUJ23xTRVgYs5jmgm4dFDJtbsLl5oMKPihCL+wAB8czpoVQXcgAAAABJRU5ErkJggg==',
'AC13' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7GB0YQxmmMIQ6IImxBrA2OoQwOgQgiYlMEWlwDAHSSGIBrUDeFCCN5L6opdNWrZq2amkWkvvQ1IFhaChEDN08BwwxoFumoLoloJUxlDHUAcXNAxV+VIRY3AcAcMHNjzTEe8AAAAAASUVORK5CYII=',
'8E74' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYklEQVR4nGNYhQEaGAYTpIn7WANEQ1lDAxoCkMREpogAyYBGZLGAVrBYK4a6RocpAUjuWxo1NWzV0lVRUUjuA6ubwuiAYV4AY2gImhijAwOGW1gbUMXAbkYTG6jwoyLE4j4AcebNysJDn8gAAAAASUVORK5CYII=',
'A54F' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7GB1EQxkaHUNDkMRYA0QaGFodHZDViUwBik1FFQtoFQlhCISLgZ0UtXTq0pWZmaFZSO4LaGVodG1E1RsKtNU1NBDdvEaHRnQ7WIG60cUYQ9DFBir8qAixuA8A1X7LUJmWWHAAAAAASUVORK5CYII=',
'1D93' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAX0lEQVR4nGNYhQEaGAYTpIn7GB1EQxhCGUIdkMRYHURaGR0dHQKQxEQdRBpdGwIaRFD0QsQCkNy3MmvayszMqKVZSO4DqXMIgatDiGExzxFTDNMtIZhuHqjwoyLE4j4AZf3K081wjzwAAAAASUVORK5CYII=',
'B8A3' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7QgMYQximMIQ6IIkFTGFtZQhldAhAFmsVaXR0dGgQQVPH2hDQEIDkvtColWFLV0UtzUJyH5o6uHmuoQGo5oHEGgKw2BGI4haQm4Hmobh5oMKPihCL+wCyVM9BIO1ZIwAAAABJRU5ErkJggg==',
'9C91' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZ0lEQVR4nGNYhQEaGAYTpIn7WAMYQxlCGVqRxUSmsDY6OjpMRRYLaBVpcG0ICEUXYwWSyO6bNnXaqpWZUUuR3cfqKtLAEBKAYgcDUC9DA6qYAFDMEU0M6hYUMaibQwMGQfhREWJxHwBzRMxf5vFIVgAAAABJRU5ErkJggg==',
'7419' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7QkMZWhmmMEx1QBZtZZjKEMIQEIAqFsoYwugggiw2hdEViGFiEDdFLV26atqqqDAk9wFVgO1A1svaIBrqMIWhAVlMpAHsFhQ7AiBiKG4BiTGGOqC6eYDCj4oQi/sAKFDK2OaqTk0AAAAASUVORK5CYII=',
'781A' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAb0lEQVR4nGNYhQEaGAYTpIn7QkMZQximMLSiiLaytjKEMEx1QBETaXQMYQgIQBabAlQ3hdFBBNl9USvDVk1bmTUNyX2MDijqwJC1QaTRYQpjaAiSmAhEDEVdQAOm3oAGxhDGUEcUsYEKPypCLO4DAGlJys5dCBx1AAAAAElFTkSuQmCC',
'145C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAcklEQVR4nGNYhQEaGAYTpIn7GB0YWllDHaYGIImxOjBMZW1gCBBBEhN1YAhlBapmQdHL6Mo6FWgCkvtWZi1dujQzMwvZfYwOIq0MDYEOqPaKhjpgiAHdAhRjQRNjdHRAdUsIQytDKAOKmwcq/KgIsbgPAG6Mx6zF4tyGAAAAAElFTkSuQmCC',
'7331' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7QkNZQxhDGVpRRFtFWlkbHaaiijE0OjQEhKKITQGLwvRC3BS1KmzV1FVLkd3H6ICiDgxZG8DmoYiJYBELaAC7BU0M7ObQgEEQflSEWNwHAL4CzNFx34rrAAAAAElFTkSuQmCC',
'5FDD' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAW0lEQVR4nGNYhQEaGAYTpIn7QkNEQ11DGUMdkMQCGkQaWBsdHQLQxRoCHUSQxAIDUMTATgqbNjVs6arIrGnI7mvF1ItNLACLmMgUTLewguxFc/NAhR8VIRb3AQBrGcw6kn7AzgAAAABJRU5ErkJggg==',
'55EF' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAYElEQVR4nGNYhQEaGAYTpIn7QkNEQ1lDHUNDkMQCGkQaWBsYHRgIiAUGiIQgiYGdFDZt6tKloStDs5Dd18rQ6IqmF5tYQKsIhpjIFNZWdHtZAxhDgG5GNW+Awo+KEIv7AOO5yVKY4EAIAAAAAElFTkSuQmCC',
'8488' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAZElEQVR4nGNYhQEaGAYTpIn7WAMYWhlCGaY6IImJTGGYyujoEBCAJBYAVMXaEOgggqKO0RVJHdhJS6OWLl0VumpqFpL7RKaItGKaJxrqimYe0I5WTDsYMPRic/NAhR8VIRb3AQC4J8vmHxEM0gAAAABJRU5ErkJggg==',
'AF2C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAbklEQVR4nGNYhQEaGAYTpIn7GB1EQx1CGaYGIImxBog0MDo6AEmEmMgUkQbWhkAHFiSxgFaQikAHZPdFLZ0atmplZhay+8DqWhkdkO0NDQWKTUEVA6sLYMSwA6gKxS0gMdbQABQ3D1T4URFicR8Ai/jLD1sSajUAAAAASUVORK5CYII=',
'105D' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAaUlEQVR4nGNYhQEaGAYTpIn7GB0YAlhDHUMdkMRYHRhDWIEyAUhiog6srSAxERS9Io2uU+FiYCetzJq2MjUzM2sakvtA6hwaAjH0YoqB7EAXYwxhdHREdUsIQwBDKCOKmwcq/KgIsbgPAIpgx7v+WAmDAAAAAElFTkSuQmCC',
'019C' => 'iVBORw0KGgoAAAANSUhEUgAAAEkAAAAhAgMAAADoum54AAAACVBMVEX///8AAADS0tIrj1xmAAAAa0lEQVR4nGNYhQEaGAYTpIn7GB0YAhhCGaYGIImxBjAGMDo6BIggiYlMYQ1gbQh0YEESC2hlAIshuy9q6aqolZmRWcjuA6ljCIGrQ4g1oIqJTGEIYESzgzWAAcMtjA6soehuHqjwoyLE4j4AGn7IJHjHWsQAAAAASUVORK5CYII='
);
$this->text = array_rand( $images );
return $images[ $this->text ] ;
}
function out_processing_gif(){
$image = dirname(__FILE__) . '/processing.gif';
$base64_image = "R0lGODlhFAAUALMIAPh2AP+TMsZiALlcAKNOAOp4ANVqAP+PFv///wAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAIACwAAAAAFAAUAAAEUxDJSau9iBDMtebTMEjehgTBJYqkiaLWOlZvGs8WDO6UIPCHw8TnAwWDEuKPcxQml0Ynj2cwYACAS7VqwWItWyuiUJB4s2AxmWxGg9bl6YQtl0cAACH5BAUKAAgALAEAAQASABIAAAROEMkpx6A4W5upENUmEQT2feFIltMJYivbvhnZ3Z1h4FMQIDodz+cL7nDEn5CH8DGZhcLtcMBEoxkqlXKVIgAAibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkphaA4W5upMdUmDQP2feFIltMJYivbvhnZ3V1R4BNBIDodz+cL7nDEn5CH8DGZAMAtEMBEoxkqlXKVIg4HibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpjaE4W5tpKdUmCQL2feFIltMJYivbvhnZ3R0A4NMwIDodz+cL7nDEn5CH8DGZh8ONQMBEoxkqlXKVIgIBibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpS6E4W5spANUmGQb2feFIltMJYivbvhnZ3d1x4JMgIDodz+cL7nDEn5CH8DGZgcBtMMBEoxkqlXKVIggEibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpAaA4W5vpOdUmFQX2feFIltMJYivbvhnZ3V0Q4JNhIDodz+cL7nDEn5CH8DGZBMJNIMBEoxkqlXKVIgYDibbK9YLBYvLtHH5K0J0IACH5BAUKAAgALAEAAQASABIAAAROEMkpz6E4W5tpCNUmAQD2feFIltMJYivbvhnZ3R1B4FNRIDodz+cL7nDEn5CH8DGZg8HNYMBEoxkqlXKVIgQCibbK9YLBYvLtHH5K0J0IACH5BAkKAAgALAEAAQASABIAAAROEMkpQ6A4W5spIdUmHQf2feFIltMJYivbvhnZ3d0w4BMAIDodz+cL7nDEn5CH8DGZAsGtUMBEoxkqlXKVIgwGibbK9YLBYvLtHH5K0J0IADs=";
$binary = is_file($image) ? join("",file($image)) : base64_decode($base64_image);
header("Cache-Control: post-check=0, pre-check=0, max-age=0, no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: image/gif");
echo $binary;
}
}
# end of class phpfmgImage
# ------------------------------------------------------
# end of module : captcha
# module user
# ------------------------------------------------------
function phpfmg_user_isLogin(){
return ( isset($_SESSION['authenticated']) && true === $_SESSION['authenticated'] );
}
function phpfmg_user_logout(){
session_destroy();
header("Location: admin.php");
}
function phpfmg_user_login()
{
if( phpfmg_user_isLogin() ){
return true ;
};
$sErr = "" ;
if( 'Y' == $_POST['formmail_submit'] ){
if(
defined( 'PHPFMG_USER' ) && strtolower(PHPFMG_USER) == strtolower($_POST['Username']) &&
defined( 'PHPFMG_PW' ) && strtolower(PHPFMG_PW) == strtolower($_POST['Password'])
){
$_SESSION['authenticated'] = true ;
return true ;
}else{
$sErr = 'Login failed. Please try again.';
}
};
// show login form
phpfmg_admin_header();
?>
<form name="frmFormMail" action="" method='post' enctype='multipart/form-data'>
<input type='hidden' name='formmail_submit' value='Y'>
<br><br><br>
<center>
<div style="width:380px;height:260px;">
<fieldset style="padding:18px;" >
<table cellspacing='3' cellpadding='3' border='0' >
<tr>
<td class="form_field" valign='top' align='right'>Email :</td>
<td class="form_text">
<input type="text" name="Username" value="<?php echo $_POST['Username']; ?>" class='text_box' >
</td>
</tr>
<tr>
<td class="form_field" valign='top' align='right'>Password :</td>
<td class="form_text">
<input type="password" name="Password" value="" class='text_box'>
</td>
</tr>
<tr><td colspan=3 align='center'>
<input type='submit' value='Login'><br><br>
<?php if( $sErr ) echo "<span style='color:red;font-weight:bold;'>{$sErr}</span><br><br>\n"; ?>
<a href="admin.php?mod=mail&func=request_password">I forgot my password</a>
</td></tr>
</table>
</fieldset>
</div>
<script type="text/javascript">
document.frmFormMail.Username.focus();
</script>
</form>
<?php
phpfmg_admin_footer();
}
function phpfmg_mail_request_password(){
$sErr = '';
if( $_POST['formmail_submit'] == 'Y' ){
if( strtoupper(trim($_POST['Username'])) == strtoupper(trim(PHPFMG_USER)) ){
phpfmg_mail_password();
exit;
}else{
$sErr = "Failed to verify your email.";
};
};
$n1 = strpos(PHPFMG_USER,'@');
$n2 = strrpos(PHPFMG_USER,'.');
$email = substr(PHPFMG_USER,0,1) . str_repeat('*',$n1-1) .
'@' . substr(PHPFMG_USER,$n1+1,1) . str_repeat('*',$n2-$n1-2) .
'.' . substr(PHPFMG_USER,$n2+1,1) . str_repeat('*',strlen(PHPFMG_USER)-$n2-2) ;
phpfmg_admin_header("Request Password of Email Form Admin Panel");
?>
<form name="frmRequestPassword" action="admin.php?mod=mail&func=request_password" method='post' enctype='multipart/form-data'>
<input type='hidden' name='formmail_submit' value='Y'>
<br><br><br>
<center>
<div style="width:580px;height:260px;text-align:left;">
<fieldset style="padding:18px;" >
<legend>Request Password</legend>
Enter Email Address <b><?php echo strtoupper($email) ;?></b>:<br />
<input type="text" name="Username" value="<?php echo $_POST['Username']; ?>" style="width:380px;">
<input type='submit' value='Verify'><br>
The password will be sent to this email address.
<?php if( $sErr ) echo "<br /><br /><span style='color:red;font-weight:bold;'>{$sErr}</span><br><br>\n"; ?>
</fieldset>
</div>
<script type="text/javascript">
document.frmRequestPassword.Username.focus();
</script>
</form>
<?php
phpfmg_admin_footer();
}
function phpfmg_mail_password(){
phpfmg_admin_header();
if( defined( 'PHPFMG_USER' ) && defined( 'PHPFMG_PW' ) ){
$body = "Here is the password for your form admin panel:\n\nUsername: " . PHPFMG_USER . "\nPassword: " . PHPFMG_PW . "\n\n" ;
if( 'html' == PHPFMG_MAIL_TYPE )
$body = nl2br($body);
mailAttachments( PHPFMG_USER, "Password for Your Form Admin Panel", $body, PHPFMG_USER, 'You', "You <" . PHPFMG_USER . ">" );
echo "<center>Your password has been sent.<br><br><a href='admin.php'>Click here to login again</a></center>";
};
phpfmg_admin_footer();
}
function phpfmg_writable_check(){
if( is_writable( dirname(PHPFMG_SAVE_FILE) ) && is_writable( dirname(PHPFMG_EMAILS_LOGFILE) ) ){
return ;
};
?>
<style type="text/css">
.fmg_warning{
background-color: #F4F6E5;
border: 1px dashed #ff0000;
padding: 16px;
color : black;
margin: 10px;
line-height: 180%;
width:80%;
}
.fmg_warning_title{
font-weight: bold;
}
</style>
<br><br>
<div class="fmg_warning">
<div class="fmg_warning_title">Your form data or email traffic log is NOT saving.</div>
The form data (<?php echo PHPFMG_SAVE_FILE ?>) and email traffic log (<?php echo PHPFMG_EMAILS_LOGFILE?>) will be created automatically when the form is submitted.
However, the script doesn't have writable permission to create those files. In order to save your valuable information, please set the directory to writable.
If you don't know how to do it, please ask for help from your web Administrator or Technical Support of your hosting company.
</div>
<br><br>
<?php
}
function phpfmg_log_view(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
phpfmg_admin_header();
$file = $files[$n];
if( is_file($file) ){
if( 1== $n ){
echo "<pre>\n";
echo join("",file($file) );
echo "</pre>\n";
}else{
$man = new phpfmgDataManager();
$man->displayRecords();
};
}else{
echo "<b>No form data found.</b>";
};
phpfmg_admin_footer();
}
function phpfmg_log_download(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
$file = $files[$n];
if( is_file($file) ){
phpfmg_util_download( $file, PHPFMG_SAVE_FILE == $file ? 'form-data.csv' : 'email-traffics.txt', true, 1 ); // skip the first line
}else{
phpfmg_admin_header();
echo "<b>No email traffic log found.</b>";
phpfmg_admin_footer();
};
}
function phpfmg_log_delete(){
$n = isset($_REQUEST['file']) ? $_REQUEST['file'] : '';
$files = array(
1 => PHPFMG_EMAILS_LOGFILE,
2 => PHPFMG_SAVE_FILE,
);
phpfmg_admin_header();
$file = $files[$n];
if( is_file($file) ){
echo unlink($file) ? "It has been deleted!" : "Failed to delete!" ;
};
phpfmg_admin_footer();
}
function phpfmg_util_download($file, $filename='', $toCSV = false, $skipN = 0 ){
if (!is_file($file)) return false ;
set_time_limit(0);
$buffer = "";
$i = 0 ;
$fp = @fopen($file, 'rb');
while( !feof($fp)) {
$i ++ ;
$line = fgets($fp);
if($i > $skipN){ // skip lines
if( $toCSV ){
$line = str_replace( chr(0x09), ',', $line );
$buffer .= phpfmg_data2record( $line, false );
}else{
$buffer .= $line;
};
};
};
fclose ($fp);
/*
If the Content-Length is NOT THE SAME SIZE as the real conent output, Windows+IIS might be hung!!
*/
$len = strlen($buffer);
$filename = basename( '' == $filename ? $file : $filename );
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
//The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
case "php":
case "htm":
case "html":
$ctype="text/plain"; break;
default:
$ctype="application/x-download";
}
//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
//Force the download
header("Content-Disposition: attachment; filename=".$filename.";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
while (@ob_end_clean()); // no output buffering !
flush();
echo $buffer ;
return true;
}
?>

3390
signup.lib.php Normal file

File diff suppressed because it is too large Load Diff

109
signup.php Executable file → Normal file
View File

@ -1,5 +1,104 @@
<?php include 'HEADER.php';?>
<title>Signup - thunix Shell Provider and Web Host</title>
<h2>Signup</h2>
<p>(Coming soon)</p>
<?php include 'FOOTER.php';?>
<?php
if( !defined('FormmailMakerFormLoader') ){
require_once( dirname(__FILE__).'/signup.lib.php' );
phpfmg_display_form();
};
function phpfmg_form( $sErr = false ){
$style=" class='form_text' ";
?>
<div id='frmFormMailContainer'>
<form style="text-align: center;" name="frmFormMail" id="frmFormMail" target="submitToFrame" action='<?php echo PHPFMG_ADMIN_URL . '' ; ?>' method='post' enctype='multipart/form-data' onsubmit='return fmgHandler.onSubmit(this);'>
<input type='hidden' name='formmail_submit' value='Y'>
<input type='hidden' name='mod' value='ajax'>
<input type='hidden' name='func' value='submit'>
<ol class='phpfmg_form' >
<li class='field_block' id='field_0_div'><div class='col_label'>
<label class='form_field'>Contact Name:</label></div>
<div class='col_field'>
<input type="text" name="field_0" id="field_0" value="<?php phpfmg_hsc("field_0", ""); ?>" class='text_box'>
<div id='field_0_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_1_div'><div class='col_label'>
<label class='form_field'>Desired Username:</label></div>
<div class='col_field'>
<input type="text" name="field_1" id="field_1" value="<?php phpfmg_hsc("field_1", ""); ?>" class='text_box'>
<div id='field_1_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_2_div'><div class='col_label'>
<label class='form_field'>Email Address:</label></div>
<div class='col_field'>
<input type="text" name="field_2" id="field_2" value="<?php phpfmg_hsc("field_2", ""); ?>" class='text_box'>
<div id='field_2_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_3_div'><div class='col_label'>
<label class='form_field'>What interests you about thunix?</label></div>
<div class='col_field'>
<textarea name="field_3" id="field_3" rows=4 cols=25 class='text_area'><?php phpfmg_hsc("field_3"); ?></textarea>
<div id='field_3_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='field_4_div'><div class='col_label'>
<label class='form_field'>Public SSH Key:</label></div>
<div class='col_field'>
<textarea name="field_4" id="field_4" rows=4 cols=25 class='text_area'><?php phpfmg_hsc("field_4"); ?></textarea>
<div id='field_4_tip' class='instruction'></div>
</div>
</li>
<li class='field_block' id='phpfmg_captcha_div'>
<div class='col_label'><label class='form_field'>Security Code:</label></div><div class='col_field'>
<?php phpfmg_show_captcha(); ?>
</div>
</li>
<li>
<div class='form_submit_block col_field'>
<input type='submit' value='Send' class='form_button'>
<div id='err_required' class="form_error" style='display:none;'>
<label class='form_error_title'>Please fill in every field.</label>
</div>
<span id='phpfmg_processing' style='display:none;'>
<img id='phpfmg_processing_gif' src='<?php echo PHPFMG_ADMIN_URL . '?mod=image&amp;func=processing' ;?>' alt='Processing...'> <label id='phpfmg_processing_dots'></label>
</span>
</div>
</li>
</ol>
</form>
<br><p>If you don't have a public SSH key, don't worry! Check out <a href="https://tilde.team/wiki/?page=ssh">this guide</a> to SSH keys and make sure that you only fill in your public SSH key here.</p>
<p>Signing up implies that you agree with our <a href="/tos.php">terms of service</a>. If you haven't done so, please read it before you sign up.</p>
<iframe name="submitToFrame" id="submitToFrame" src="javascript:false" style="position:absolute;top:-10000px;left:-10000px;"></iframe>
</div>
<!-- end of form container -->
<!-- [Your confirmation message goes here] -->
<div id='thank_you_msg' style='display:none;'>
Your signup form has been sent. Thank you!
</div>
<?php
phpfmg_javascript($sErr);
}
# end of form
function phpfmg_form_css(){
$formOnly = isset($GLOBALS['formOnly']) && true === $GLOBALS['formOnly'];
?>
<style>
ol.phpfmg_form{
list-style-type:none;
padding:0px;
margin:0px;
}
.text_box, .text_area, .text_select {
min-width:500px;
max-width:500px;
}
.form_error_title{
font-weight: bold;
color: #FF0000;
}
<?php phpfmg_text_align();?>
</style>
<?php
}
# end of css
?>

5258
signup.phpmailer.php Normal file

File diff suppressed because it is too large Load Diff

424
site.css
View File

@ -1,175 +1,305 @@
/*
COPYRIGHT (C) 2006-2018 Anton McClure
Anton McClure - https://gozips.uakron.edu/~asm135
*/
body {
color: #000000;
background-color: #FFFFFF;
/* font-family: "Times, Times New Roman", serif;*/
margin: 0px 20px 0px 20px;
margin: 0;
padding: 0;
background: #222222;
font-family: Consolas,Arial, Helvetica, Sans-Serif;
font-size: 12px;
color: #00FF00;
}
a.glossary {
border: 1px solid red;
padding: 2px 2px;
display: inline-block;
h1, h2, h3 {
margin: 0;
padding: 0;
font-weight: normal;
color: #00FF00;
}
/* Need hover for accessibility */
a:link:hover {
color: #9932CC;
h1 {
font-size: 2em;
}
/* Larger font for mobile devices */
@media screen and (max-device-width: 480px) {
body {
font-size: 175%;
}
h2 {
font-size: 1.8em;
}
li {
margin-bottom: 8px;
h3 {
font-size: 1.6em;
}
/* Header columns */
.columnt1 {
width: 66%;
float: left;
text-align: center;
border: solid 1px;
border-radius: 4px 4px 4px 4px;
p, ul, ol {
margin-top: 0;
line-height: 180%;
}
.columnt1 a:link:hover, .columnt1 a:visited:hover {
font-style: italic;
text-shadow: 2px 2px 9px #f44;
ul, ol {
}
.columnt2 {
width: 33%;
float: right;
text-align: center;
a {
color: #00FFFF;
text-decoration: none;
}
.nobr {
white-space: nowrap;
}
/* urgent action items*/
.column1 {
width: 31%;
float: left;
}
/* long term action items */
.column2 {
width: 31%;
float: left;
border-left: solid 1px;
border-right: solid 1px;
margin: 0px 10px 0px 10px;
padding: 0px 10px 0px 10px;
}
/* misc */
.column3 {
width: 31%;
float: left;
}
/* rest */
.rest {
width: 100%;
float: left;
}
:link { color: #1F00FF }
:visited { color: #9900DD }
div.c3 { margin-left: 2em }
.c2 {
text-align: center;
width: 100%;
font-weight: bold;
font-style: italic;
}
h3.c1 {
text-align: center;
font-size: 30px;
a:hover {
text-decoration: underline;
}
.titlelink { color: #000000 }
.fullwide { width: 900px; }
#comic-container {
position: relative;
width: 100%;
height: 122px;
margin-bottom: 4px;
}
#comic {
position: absolute;
max-width: 406px;
width: 100%;
height: 122px;
overflow: hidden;
background-color: #fff;
}
#comic-expand img {
display: none;
}
@media screen and (max-width: 1300px) {
#comic { right: 0px; }
#comic:hover {
width: 406px;
padding: 0;
transition: width .4s ease-out, box-shadow 1s ease, transform .8s ease;
}
#comic-expand {
position: absolute;
display: block;
right: 0;
width: 32px;
height: 160px;
border-right: 1px solid blue;
}
#comic-expand img {
position: absolute;
display: block;
bottom: 35px;
}
#top {
margin: 0 auto;
padding: 0;
}
sub {
line-height: 0.25em;
font-size: 70%;
vertical-align: -.05em;
}
sup {
line-height: 0.25em;
font-size: 70%;
vertical-align: 0.7em;
}
.footnote {
font-size: 90%;
padding-left: 0.9em;
text-indent: -0.9em;
}
.footnote sup {
line-height: 0.25em;
font-size: 78%;
vertical-align: 0.4em;
/* Header */
#header {
background: linear-gradient(#666666,#222222);
margin: 0 auto;
padding: 0px 0px 0px 30px;
}
.vol {
margin-left: 5%;
font-family: Arial, Helvetica, sans-serif;
/* Logo */
#logo {
text-align: center;
margin: 0;
padding-top: 20px;
}
div.comp {
margin: 0 auto;
width: 98%;
#logo h1, #logo p {
margin: 0;
padding: 0;
}
#logo h1 {
font-size: 3.8em;
font-weight: bold;
color: #EEEEEE;
text-shadow: -1px 1px #000000;
}
#logo p {
margin: 0;
padding: 0px 0 0 2px;
font: 14px Consolas,Arial, Helvetica, Sans-Serif;
font-weight: bold;
color: #00FF00;
}
#logo a {
text-decoration: none;
font-family: Consolas,Arial, Helvetica, Sans-Serif;
color: #EEEEEE;
}
#logo a:hover {
text-decoration: none;
font-family: Consolas,Arial, Helvetica, Sans-Serif;
color: #EEEEEE;
}
/* Menu */
#menu {
width: 980px;
height: 90px;
margin: 0 auto;
padding: 0;
}
#menu ul {
margin: 0;
padding: 50px 0px 0px 0px;
list-style: none;
line-height: normal;
}
#menu li {
float: left;
}
#menu a {
display: block;
width: 130px;
height: 30px;
margin-right: 1px;
padding: 9px 0px 0px 0px;
text-decoration: none;
text-align: center;
font-size: 13px;
font-weight: bold;
color: #00FFFF;
border: none;
}
#menu a:hover, #menu .current_page_item a {
text-decoration: none;
}
#menu .current_page_item a {
padding-left: 0;
}
/* Page */
#page {
width: 980px;
margin: 0 auto;
padding: 0px 0px 0px 0px;
}
#page-bgtop {
padding: 20px 0px;
}
/* Content */
#content {
float: right;
width: 650px;
padding: 0px 0px 0px 0px;
}
.post {
background: #000000;
border: 2px solid #EEEEEE;
border-radius: 5px;
margin-bottom: 40px;
}
.post .title {
height: 33px;
padding: 7px 0px 0px 30px;
background: #EEEEEE;
letter-spacing: -.5px;
color: #000000;
}
.post .title a {
color: #000000;
border: none;
}
.post .meta {
margin-bottom: 30px;
padding: 20px 30px 0px 30px;
text-align: left;
font-family: Consolas,Arial, Helvetica, Sans-Serif;
font-size: 13px;
font-weight: bold;
font-style: italic;
}
.post .meta .date {
float: left;
}
.post .meta .posted {
float: right;
}
.post .meta a {
}
.post .entry {
font-size: 14px;
padding: 0px 30px 20px 30px;
padding-bottom: 20px;
text-align: justify;
}
.links {
padding-top: 20px;
font-size: 12px;
font-weight: bold;
}
/* Sidebar */
#sidebar {
float: left;
width: 310px;
margin: 0px;
padding: 0px 20px 0px 0px;
color: #00FF00;
}
#sidebar ul {
margin: 0;
padding: 0;
list-style: none;
}
#sidebar li {
margin: 0;
padding: 0;
}
#sidebar li ul {
margin: 0px 0px;
padding-bottom: 30px;
}
#sidebar li li {
padding-bottom: 5px;
line-height: 16px;
border-bottom: 1px solid #222222;
margin: 5px 30px 0px;
border-left: none;
}
#sidebar li li span {
display: block;
margin-top: -20px;
padding: 0;
font-size: 11px;
font-style: italic;
}
#sidebar h2 {
height: 38px;
padding-left: 30px;
letter-spacing: -.5px;
font-size: 1.6em;
}
#sidebar p {
margin: 0 0px;
padding: 0px 30px 20px 30px;
text-align: justify;
}
#sidebar a {
border: none;
color: #00FFFF;
}
#sidebar a:hover {
text-decoration: underline;
color: #00FFFF;
}
/* Footer */
#footer {
margin: 0 auto;
padding: 0px 0 15px 0;
background: linear-gradient(#222222,#000000);
font-family: Consolas,Arial, Helvetica, Sans-Serif;
}
#footer p {
margin: 0;
padding-top: 15px;
line-height: normal;
font-size: 12px;
text-align: center;
color: #00FF00;
}
#footer a {
color: #00FFFF;
}
#footer a:hover {
text-decoration: underline;
color: #00FFFF;
}

View File

View File

@ -0,0 +1,11 @@
<hr>
<p><address>
<p>Copyright &copy; 2018 <a href="/~amcclure">Anton McClure</a> <a href="mailto:amcclure@ttm.sh">&lt;amcclure@ttm.sh&gt;</a><br>
Copyright &copy; 2018 <a href="/~ubergeek">Ubergeek</a> <a href="mailto:ubergeek@yourtilde.com">&lt;ubergeek@yourtilde.com&gt;</a></p>
<p>This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License</a>. Permissions beyond the scope of this license may be available at <a xmlns:cc="http://creativecommons.org/ns#" href="/copyright.php" rel="cc:morePermissions">https://www.thunix.cf/copyright.php</a>.</p>
<p><?php echo "Page last updated on " . date ("Y-m-d\TH:i:sO.", getlastmod());?></p>
<p>You may have to refresh the page to see any changes or updates.</p>
<p>All questions, comments, and concerns about this site should be emailed to <a href="mailto:amcclure@ttm.sh">amcclure@ttm.sh</a>.</p>
</address></p>
</body>
</html>

View File

@ -0,0 +1,4 @@
<?php include 'HEADERS.php';?>
<center><h1>thunix Shell Provider and Web Host</h1></center><hr>
<center><p><?php include 'MENU.php';?></p></center>
<hr>

0
HEADERS.php → thunix_1.0_site/HEADERS.php Executable file → Normal file
View File

View File

@ -0,0 +1,5 @@
<?php include 'HEADER.php';?>
<title>Contact Us - thunix Shell Provider and Web Host</title>
<h2>Contact Us</h2>
<p>(Coming soon)</p>
<?php include 'FOOTER.php';?>

View File

@ -0,0 +1,5 @@
<?php include 'HEADER.php';?>
<title>Copyright Notices and Acknowledgements - thunix Shell Provider and Web Host</title>
<h2>Copyright Notices and Acknowledgements</h2>
<p>(Coming soon)</p>
<?php include 'FOOTER.php';?>

View File

@ -0,0 +1,8 @@
<?php include 'HEADER.php';?>
<title> - thunix Shell Provider and Web Host</title>
<h2>Donations</h2>
<p>This server costs money to operate. It's also operated as a labor of love and goodwill for the community</p>
<p>That being said, the price breakdown right now is 38Euro/month. So help with server costs, and time spent, for now, you can send some BTC my (ubergeek's) way</p>
<p>1DFM3qY7XmCxGTFPATSQJVCNjvmWiVubGN</p>
<p>I'll set up a Patreon or Liberapay soonish.</p>
<?php include 'FOOTER.php';?>

13
thunix_1.0_site/faq.php Normal file
View File

@ -0,0 +1,13 @@
<?php include 'HEADER.php';?>
<title>Frequently Asked Questions - thunix Shell Provider and Web Host</title>
<h2>Frequently Asked Questions</h2>
<p><b>How do I sign up for an account?</b><br>
You can ask in #thunix on tilde.chat, or you can email amcclure (with the instructions on the main page).
<p><b>Who is running thunix?</b><br>
The current system administrators are <a href="/~amcclure">amcclure</a> and <a href="/~ubergeek">ubergeek</a>.
<p><b>What happened to the old thunix? Why the name change?</b><br>
The original machine and founder dissappeared without any warning to anyone, including server staff.
For this reason, most things were not backed up. The founder hexhaxtron is currently not reachable,
so we needed to obtain a new domain name, and a new set of machines.
<?php include 'FOOTER.php';?>

0
server/favicon.png → thunix_1.0_site/favicon.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 307 B

After

Width:  |  Height:  |  Size: 307 B

65
thunix_1.0_site/index.php Normal file
View File

@ -0,0 +1,65 @@
<?php include 'HEADER.php';?>
<title>thunix Home Page - thunix Shell Provider and Web Host</title>
<h2>Welcome to thunix Shell Provider and Web Host!</h2>
<h3>Main Resource On This Site</h3>
<p>
<ul>
<li><a href="users.php">User Web Directories</a>;</li>
<li><a href="server.php">Status of thunix Servers and Services</a>;</li>
</ul>
</p>
<h3>About thunix Shell Provider and Web Host</h3>
<p>thunix offers Secure Shell (SSH) accounts, Web Hosting, Email Accounts,
and many other services. It was founded by hexhaxtron in the Summer of 2017,
and was continued by <a href="/~amcclure">amcclure</a> and <a href="/~ubergeek">ubergeek</a>
since 2018. We aim to provide the best service possible with a wide variety of features,
and we hope you have fun with it!</p>
<h3>thunix Phoenix</h3>
<p>The thunix Phoenix project aims to provide a new user experience for shell users, with
integration into Ben Harris's Tildeverse network.</p>
<p>Join us on IRC at tilde.chat in these channels:
<ul>
<li>#thunix - General discussion about thunix and thunix services, including issues. Shell-specific issues go in #phoenix.</li>
<li>#phoenix - Discussion about the phoenix shell server, including issues.</li>
</ul>
</p>
<p>If you want to sign up for an account, send an email to <a href="mailto:newuser@thunix.cf"><code>&lt;newuser@thunix.cf&gt;</code></a> with:
<ul>
<li>Your desired username (all lowercase, alphanumeric characters only, no spaces)</li>
<li>An alternate username (in case the desired username is unavailable) (all lowercase, alphanumeric characters only, no spaces)</li>
<li>Contact email address</li>
<li>How you heard about thunix</li>
<li>What interests you in thunix</li>
<li>Public SSH Key</li>
</ul>
</p>
<p>thunix tries to adhere to the values and philosophy of the Hacker Ethic whenever possible. The hacker ethics and beliefs as described by Levy are:
<ul>
<li>Access to computers - and anything which might teach you something about the way the world works - should be unlimited and total. Always yield to the Hands-On Imperative!</li>
<li>All information should be free</li>
<li>Mistrust authority - promote decentralization</li>
<li>Hackers should be judged by their hacking, not criteria such as degrees, age, race, sex, or position</li>
<li>You can create art and beauty on a computer</li>
<li>Computers can change your life for the better</li>
</ul>
</p>
<p>thunix will never use proprietary software but users can do that if they wish. This is something they should avoid however.</p>
<p>If you want to help keep thunix running, please consider <a href="donate.php">donating</a>.</p>
<h3>Server Staff</h3>
<ul>
<li><a href="/~amcclure/"><b>Head Administrator:</b> Anton McClure</a></li>
<li><a href="/~ubergeek/"><b>Administrator & Server Host:</b> Ubergeek</a></li>
</ul>
<h3>Other information and resources</h3>
<ul>
<li>(Coming soon)</li>
<!--<li><a href=""></a>;</li>-->
</ul>
<p>Note that most content on thunix are provided by thunix's users, not the owner of
the server. Comments should be addressed to the owner of the web directory in the
first instance - their email address here is <code>&lt;username&gt;@thunix.cf</code>
unless otherwise specified within their web directory.</p>
<?php include 'FOOTER.php';?>

View File

@ -0,0 +1,5 @@
<?php include 'HEADER.php';?>
<title>Information and Announcements - thunix Shell Provider and Web Host</title>
<h2>Information and Announcements</h2>
<p>(Coming soon)</p>
<?php include 'FOOTER.php';?>

View File

@ -0,0 +1,5 @@
<?php include 'HEADER.php';?>
<title>Signup - thunix Shell Provider and Web Host</title>
<h2>Signup</h2>
<p>(Coming soon)</p>
<?php include 'FOOTER.php';?>

360
server/site.css → thunix_1.0_site/site.css Executable file → Normal file
View File

@ -1,185 +1,175 @@
/*
This file is released to the public domain.
Richard Stallman - http://stallman.org
*/
body {
color: #000000;
background-color: #FFFFFF;
margin: 0px 20px 0px 20px;
}
body.dark {
color: #ddd;
background-color: #333;
}
a.glossary {
border: 1px solid red;
padding: 2px 2px;
display: inline-block;
}
a.dark {
color: #ff0;
}
a.dark:visited {
color: #aa0;
}
/* Need hover for accessibility */
a:link:hover {
color: #9932CC;
}
/* Larger font for mobile devices */
@media screen and (max-device-width: 480px) {
body {
font-size: 175%;
}
}
li {
margin-bottom: 8px;
}
/* Header columns */
.columnt1 {
width: 66%;
float: left;
text-align: center;
border: solid 1px;
border-radius: 4px 4px 4px 4px;
}
.columnt1 a:link:hover, .columnt1 a:visited:hover {
font-style: italic;
text-shadow: 2px 2px 9px #f44;
}
.columnt2 {
width: 33%;
float: right;
text-align: center;
}
.nobr {
white-space: nowrap;
}
/* urgent action items*/
.column1 {
width: 31%;
float: left;
}
/* long term action items */
.column2 {
width: 31%;
float: left;
border-left: solid 1px;
border-right: solid 1px;
margin: 0px 10px 0px 10px;
padding: 0px 10px 0px 10px;
}
/* misc */
.column3 {
width: 31%;
float: left;
}
/* rest */
.rest {
width: 100%;
float: left;
}
:link { color: #1F00FF }
:visited { color: #9900DD }
div.c3 { margin-left: 2em }
.c2 {
text-align: center;
width: 100%;
font-weight: bold;
font-style: italic;
}
h3.c1 {
text-align: center;
font-size: 30px;
text-decoration: underline;
}
.titlelink { color: #000000 }
.fullwide { width: 900px; }
#comic-container {
position: relative;
width: 100%;
height: 122px;
margin-bottom: 4px;
}
#comic {
position: absolute;
max-width: 406px;
width: 100%;
height: 122px;
overflow: hidden;
background-color: #fff;
}
#comic-expand img {
display: none;
}
@media screen and (max-width: 1300px) {
#comic { right: 0px; }
#comic:hover {
width: 406px;
padding: 0;
transition: width .4s ease-out, box-shadow 1s ease, transform .8s ease;
}
#comic-expand {
position: absolute;
display: block;
right: 0;
width: 32px;
height: 160px;
border-right: 1px solid blue;
}
#comic-expand img {
position: absolute;
display: block;
bottom: 35px;
}
}
sub {
line-height: 0.25em;
font-size: 70%;
vertical-align: -.05em;
}
sup {
line-height: 0.25em;
font-size: 70%;
vertical-align: 0.7em;
}
.footnote {
font-size: 90%;
padding-left: 0.9em;
text-indent: -0.9em;
}
.footnote sup {
line-height: 0.25em;
font-size: 78%;
vertical-align: 0.4em;
}
.vol {
margin-left: 5%;
font-family: Arial, Helvetica, sans-serif;
}
div.comp {
margin: 0 auto;
width: 98%;
}
/*
COPYRIGHT (C) 2006-2018 Anton McClure
Anton McClure - https://gozips.uakron.edu/~asm135
*/
body {
color: #000000;
background-color: #FFFFFF;
/* font-family: "Times, Times New Roman", serif;*/
margin: 0px 20px 0px 20px;
}
a.glossary {
border: 1px solid red;
padding: 2px 2px;
display: inline-block;
}
/* Need hover for accessibility */
a:link:hover {
color: #9932CC;
}
/* Larger font for mobile devices */
@media screen and (max-device-width: 480px) {
body {
font-size: 175%;
}
}
li {
margin-bottom: 8px;
}
/* Header columns */
.columnt1 {
width: 66%;
float: left;
text-align: center;
border: solid 1px;
border-radius: 4px 4px 4px 4px;
}
.columnt1 a:link:hover, .columnt1 a:visited:hover {
font-style: italic;
text-shadow: 2px 2px 9px #f44;
}
.columnt2 {
width: 33%;
float: right;
text-align: center;
}
.nobr {
white-space: nowrap;
}
/* urgent action items*/
.column1 {
width: 31%;
float: left;
}
/* long term action items */
.column2 {
width: 31%;
float: left;
border-left: solid 1px;
border-right: solid 1px;
margin: 0px 10px 0px 10px;
padding: 0px 10px 0px 10px;
}
/* misc */
.column3 {
width: 31%;
float: left;
}
/* rest */
.rest {
width: 100%;
float: left;
}
:link { color: #1F00FF }
:visited { color: #9900DD }
div.c3 { margin-left: 2em }
.c2 {
text-align: center;
width: 100%;
font-weight: bold;
font-style: italic;
}
h3.c1 {
text-align: center;
font-size: 30px;
text-decoration: underline;
}
.titlelink { color: #000000 }
.fullwide { width: 900px; }
#comic-container {
position: relative;
width: 100%;
height: 122px;
margin-bottom: 4px;
}
#comic {
position: absolute;
max-width: 406px;
width: 100%;
height: 122px;
overflow: hidden;
background-color: #fff;
}
#comic-expand img {
display: none;
}
@media screen and (max-width: 1300px) {
#comic { right: 0px; }
#comic:hover {
width: 406px;
padding: 0;
transition: width .4s ease-out, box-shadow 1s ease, transform .8s ease;
}
#comic-expand {
position: absolute;
display: block;
right: 0;
width: 32px;
height: 160px;
border-right: 1px solid blue;
}
#comic-expand img {
position: absolute;
display: block;
bottom: 35px;
}
}
sub {
line-height: 0.25em;
font-size: 70%;
vertical-align: -.05em;
}
sup {
line-height: 0.25em;
font-size: 70%;
vertical-align: 0.7em;
}
.footnote {
font-size: 90%;
padding-left: 0.9em;
text-indent: -0.9em;
}
.footnote sup {
line-height: 0.25em;
font-size: 78%;
vertical-align: 0.4em;
}
.vol {
margin-left: 5%;
font-family: Arial, Helvetica, sans-serif;
}
div.comp {
margin: 0 auto;
width: 98%;
}

26
thunix_1.0_site/tos.php Normal file
View File

@ -0,0 +1,26 @@
<?php include 'HEADER.php';?>
<title>Terms of Service and Privacy Policy - thunix Shell Provider and Web Host</title>
<h2>Terms of Service and Privacy Policy</h2>
<p>Nothing is without its rules &amp; regulations; thunix is no exception. Below are the site's service terms &amp; privacy policy. Everything in this page should be clear to everyone who wishes to use thunix's services, especially the service terms; failure to abide by them can result in such penalties as service bans &amp; even legal action, depending on the severity of a violation. Be sure to read the terms carefully &amp; understand them.</p>
<h3>Terms of Service</h3>
<p>thunix relies on the common courtesy and consideration of users to make its services fair for everyone. The following offences will result in a service ban:</p>
<ol>
<li>Deliberately defacing the accounts of other users</li>
<li>Deliberately trying to disrupt thunix's server</li>
<li>Using thunix as a launch pad for disrupting other servers</li>
<li>Using thunix to impersonate other websites and businesses for criminal purposes</li>
<li>Storing/distributing pornography of any genre and medium (especially child pornography)</li>
<li>Storing/distributing content that defames any individual</li>
<li>Promoting racial, ethnic, religious, political &amp; other forms of bigotry</li>
<li>Mining cryptocurrencies</li>
</ol>
<p>Items 4, 5, 6 &amp; 7 may also result in legal action against any offending users, depending on the severity of each case and any other individuals who may have been affected.</p>
<p>Copyright infringement is not allowed on thunix, and we will not allow any illegal content to be distributed.</p>
<p>It's also expected that all users respect the copyrights of those who produce original content of any kind (only share if the author or license grants you permission). However, using accounts for external file storage is permissible, under fair use &amp; other laws promoting consumer rights. Note that original content from other users must also be respected, though creating/sharing public domain content is highly encouraged.</p>
<p>If you want to request for content you own the copyright for to be removed from thunix, please email <a href="mailto:amcclure@ttm.sh"><code>&lt;amcclure@ttm.sh&gt;</code></a>.
In the email, please identify who you are, if you are the copyright holder or legally representing them, the exact files you want removed with links to the files and infringed content, and contact information such as phone numbers or a reply-to email address.</p>
<p>Users that repeatedly infringe copyrights will have their account removed. Depending on the degree of the offense, their account may be removed immediately.</p>
<h3>Privacy Policy</h3>
<p>Privacy is a major concern for everyone. thunix respects the privacy rights of others &amp; refuses to collect/store/distribute anyone's private information, except when necessary; thunix collects usernames &amp; encrypted passwords for account registration purposes only, while logging IP addresses for server administration &amp; policy enforcement purposes. The privacy rights of individual users may be overturned ONLY when it is known that they have violated the service terms; this is done strictly to uphold the service terms as well as the law.</p>
</p>
<?php include 'FOOTER.php';?>

49
thunix_1.0_site/users.php Normal file
View File

@ -0,0 +1,49 @@
<?php include 'HEADER.php';?>
<title>User Web Directories - thunix Shell Provider and Web Host</title>
<h2>User Web Directories</h2>
<!-- Leave this section for now.
<h3>Summit</h3>
<ul>
<li><a href="/~amcclure/">Anton McClure</a> (amcclure)</li>
<li><a href="/~ubergeek/">~Ubergeek</a> (ubergeek)</li>
</ul>
-->
<h3>Phoenix</h3>
<ul>
<!--<li><a href="//phoenix.thunix.cf/~/"></a></li>-->
<li><a href="/~amcclure/">amcclure</a></li>
<li><a href="/~ubergeek/">ubergeek</a></li>
<li><a href="/~naglfar/">naglfar</a></li>
<li><a href="/~parik/">parik</a></li>
<li><a href="/~fosslinux/">fosslinux</a></li>
<li><a href="/~slip/">slip</a></li>
<li><a href="/~quetzalcoatl/">quetzalcoatl</a></li>
<li><a href="/~redhat/">redhat</a></li>
<li><a href="/~gokce/">gokce</a></li>
<li><a href="/~r/">r</a></li>
<li><a href="/~brendantcc/">brendantcc</a></li>
<li><a href="/~dragon/">dragon</a></li>
<li><a href="/~spanmer/">spanmer</a></li>
<li><a href="/~panzer/">panzer</a></li>
<li><a href="/~hawaii/">hawaii</a></li>
<li><a href="/~trip/">trip</a></li>
<li><a href="/~xenialito69/">xenialito69</a></li>
<li><a href="/~freuddy/">freuddy</a></li>
<li><a href="/~ringo/">ringo</a></li>
<li><a href="/~hexhaxtron/">hexhaxtron</a></li>
</ul>
<p>Note that most content on thunix are provided by thunix's users, not the owner of
the server. Comments should be addressed to the owner of the web directory in the
first instance - their email address here is
<code>&lt;username&gt;@thunix.cf</code>,
unless otherwise specified within their web directory.</p>
<p>
If there is a problem which is not resolved by
the owner of the web directory, please contact
<a href="mailto:amcclure@ttm.sh"><code>amcclure@ttm.sh</code></a>.
</p>
<p>If you want to be added or removed from this list, please contact
<a href="mailto:amcclure@ttm.sh"><code>amcclure@ttm.sh</code></a>.
<?php include 'FOOTER.php';?>

80
tos.php Executable file → Normal file
View File

@ -1,26 +1,54 @@
<?php include 'HEADER.php';?>
<title>Terms of Service and Privacy Policy - thunix Shell Provider and Web Host</title>
<h2>Terms of Service and Privacy Policy</h2>
<p>Nothing is without its rules &amp; regulations; thunix is no exception. Below are the site's service terms &amp; privacy policy. Everything in this page should be clear to everyone who wishes to use thunix's services, especially the service terms; failure to abide by them can result in such penalties as service bans &amp; even legal action, depending on the severity of a violation. Be sure to read the terms carefully &amp; understand them.</p>
<h3>Terms of Service</h3>
<p>thunix relies on the common courtesy and consideration of users to make its services fair for everyone. The following offences will result in a service ban:</p>
<ol>
<li>Deliberately defacing the accounts of other users</li>
<li>Deliberately trying to disrupt thunix's server</li>
<li>Using thunix as a launch pad for disrupting other servers</li>
<li>Using thunix to impersonate other websites and businesses for criminal purposes</li>
<li>Storing/distributing pornography of any genre and medium (especially child pornography)</li>
<li>Storing/distributing content that defames any individual</li>
<li>Promoting racial, ethnic, religious, political &amp; other forms of bigotry</li>
<li>Mining cryptocurrencies</li>
</ol>
<p>Items 4, 5, 6 &amp; 7 may also result in legal action against any offending users, depending on the severity of each case and any other individuals who may have been affected.</p>
<p>Copyright infringement is not allowed on thunix, and we will not allow any illegal content to be distributed.</p>
<p>It's also expected that all users respect the copyrights of those who produce original content of any kind (only share if the author or license grants you permission). However, using accounts for external file storage is permissible, under fair use &amp; other laws promoting consumer rights. Note that original content from other users must also be respected, though creating/sharing public domain content is highly encouraged.</p>
<p>If you want to request for content you own the copyright for to be removed from thunix, please email <a href="mailto:amcclure@ttm.sh"><code>&lt;amcclure@ttm.sh&gt;</code></a>.
In the email, please identify who you are, if you are the copyright holder or legally representing them, the exact files you want removed with links to the files and infringed content, and contact information such as phone numbers or a reply-to email address.</p>
<p>Users that repeatedly infringe copyrights will have their account removed. Depending on the degree of the offense, their account may be removed immediately.</p>
<h3>Privacy Policy</h3>
<p>Privacy is a major concern for everyone. thunix respects the privacy rights of others &amp; refuses to collect/store/distribute anyone's private information, except when necessary; thunix collects usernames &amp; encrypted passwords for account registration purposes only, while logging IP addresses for server administration &amp; policy enforcement purposes. The privacy rights of individual users may be overturned ONLY when it is known that they have violated the service terms; this is done strictly to uphold the service terms as well as the law.</p>
</p>
<?php include 'FOOTER.php';?>
<?php include 'HEADER.php'; ?>
<title>Terms of Service and Privacy Policy - thunix Shell Provider and Web Host</title>
</head>
<body>
<div id="top">
<div id="header">
<div id="logo">
<h1>&#9763; thunix</h1>
<p>Shell Provider and Web Host</p>
</div>
</div>
<div id="page">
<div id="page-bgtop">
<div id="page-bgbtm">
<div id="content">
<div class="post">
<h2 class="title">Terms of Service and Privacy Policy</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>Nothing is without its rules and regulations; thunix is no exception. Below are the site's service terms and privacy policy. Everything in this page should be clear to everyone who wishes to use thunix's services, especially the service terms; failure to abide by them can result in such penalties as service bans and even legal action, depending on the severity of a violation. Be sure to read the terms carefully and understand them.</p>
</div>
</div>
<div class="post">
<h2 class="title">Terms of Service</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>thunix relies on the common courtesy and consideration of users to make its services fair for everyone. The following offences will result in a service ban:</p>
<ol>
<li>Deliberately defacing the accounts of other users</li>
<li>Deliberately trying to disrupt thunix's server</li>
<li>Using thunix as a launch pad for disrupting other servers</li>
<li>Using thunix to impersonate other websites and businesses for criminal purposes</li>
<li>Storing/distributing pornography of any genre and medium (especially child pornography)</li>
<li>Storing/distributing content that defames any individual</li>
<li>Promoting racial, ethnic, religious, political and other forms of bigotry</li>
<li>Mining cryptocurrencies</li>
</ol>
<p>Items 4, 5, 6 and 7 may also result in legal action against any offending users, depending on the severity of each case and any other individuals who may have been affected.</p>
<p>Copyright infringement is not allowed on thunix, and we will not allow any illegal content to be distributed.</p>
<p>It's also expected that all users respect the copyrights of those who produce original content of any kind (only share if the author or license grants you permission). However, using accounts for external file storage is permissible, under fair use and other laws promoting consumer rights. Note that original content from other users must also be respected, though creating/sharing public domain content is highly encouraged.</p>
<p>If you want to request for content you own the copyright for to be removed from thunix, please refer to our <a href="/abuse.php">abuse reporting page</a>. In the email, please identify who you are, if you are the copyright holder or legally representing them, the exact files you want removed with links to the files and infringed content, and contact information such as phone numbers or a reply-to email address.</p>
<p>Users that repeatedly infringe copyrights will have their account removed. Depending on the degree of the offense, their account may be removed immediately.</p>
</div>
</div>
<div class="post">
<h2 class="title">Privacy Policy</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>Privacy is a major concern for everyone. thunix respects the privacy rights of others and refuses to collect/store/distribute anyone's private information, except when necessary; thunix collects usernames and encrypted passwords for account registration purposes only, while logging IP addresses for server administration and policy enforcement purposes. The privacy rights of individual users may be overturned ONLY when it is known that they have violated the service terms; this is done strictly to uphold the service terms as well as the law.</p></div>
</div>
<div style="clear: both;">&nbsp;</div>
</div>
<?php include 'MENU.php'; ?>
<?php include 'FOOTER.php'; ?>

75
users.php Executable file → Normal file
View File

@ -1,49 +1,26 @@
<?php include 'HEADER.php';?>
<title>User Web Directories - thunix Shell Provider and Web Host</title>
<h2>User Web Directories</h2>
<!-- Leave this section for now.
<h3>Summit</h3>
<ul>
<li><a href="/~amcclure/">Anton McClure</a> (amcclure)</li>
<li><a href="/~ubergeek/">~Ubergeek</a> (ubergeek)</li>
</ul>
-->
<h3>Phoenix</h3>
<ul>
<!--<li><a href="//phoenix.thunix.cf/~/"></a></li>-->
<li><a href="/~amcclure/">amcclure</a></li>
<li><a href="/~ubergeek/">ubergeek</a></li>
<li><a href="/~naglfar/">naglfar</a></li>
<li><a href="/~parik/">parik</a></li>
<li><a href="/~fosslinux/">fosslinux</a></li>
<li><a href="/~slip/">slip</a></li>
<li><a href="/~quetzalcoatl/">quetzalcoatl</a></li>
<li><a href="/~redhat/">redhat</a></li>
<li><a href="/~gokce/">gokce</a></li>
<li><a href="/~r/">r</a></li>
<li><a href="/~brendantcc/">brendantcc</a></li>
<li><a href="/~dragon/">dragon</a></li>
<li><a href="/~spanmer/">spanmer</a></li>
<li><a href="/~panzer/">panzer</a></li>
<li><a href="/~hawaii/">hawaii</a></li>
<li><a href="/~trip/">trip</a></li>
<li><a href="/~xenialito69/">xenialito69</a></li>
<li><a href="/~freuddy/">freuddy</a></li>
<li><a href="/~ringo/">ringo</a></li>
<li><a href="/~hexhaxtron/">hexhaxtron</a></li>
</ul>
<p>Note that most content on thunix are provided by thunix's users, not the owner of
the server. Comments should be addressed to the owner of the web directory in the
first instance - their email address here is
<code>&lt;username&gt;@thunix.cf</code>,
unless otherwise specified within their web directory.</p>
<p>
If there is a problem which is not resolved by
the owner of the web directory, please contact
<a href="mailto:amcclure@ttm.sh"><code>amcclure@ttm.sh</code></a>.
</p>
<p>If you want to be added or removed from this list, please contact
<a href="mailto:amcclure@ttm.sh"><code>amcclure@ttm.sh</code></a>.
<?php include 'FOOTER.php';?>
<?php include 'HEADER.php'; ?>
<title>User Web Directories - thunix Shell Provider and Web Host</title>
</head>
<body>
<div id="top">
<div id="header">
<div id="logo">
<h1>&#9763; thunix</h1>
<p>Shell Provider and Web Host</p>
</div>
</div>
<div id="page">
<div id="page-bgtop">
<div id="page-bgbtm">
<div id="content">
<div class="post">
<h2 class="title">User Web Directories</h2>
<div style="clear: both;">&nbsp;</div>
<div class="entry">
<p>(Coming soon)</p>
</div>
</div>
<div style="clear: both;">&nbsp;</div>
</div>
<?php include 'MENU.php'; ?>
<?php include 'FOOTER.php'; ?>