torrentflux_2.4/0000755000000000000000000000000011026130131012517 5ustar rootroottorrentflux_2.4/CHANGELOG0000755000004100000410000001644111023133254015302 0ustar www-datawww-dataTorrentFlux: PHP Torrent Download Manager ================================================================= by TorrentFlux.com ================================================================= Change Log TorrentFlux v2.4 ------------------ * Removed TorrentSpy search plugin * Cryptography functionality & enabled by default (by imrook) * Added checks to prevent normal users from seeing sensitive information (by deadeyes) * Updated MiniNova search plugin (by alx) * Removed CVS files for BitTornado * Converted \r\n to \n in all source files * Bug fix for torrents dying after they're started (tornado shell args not escaped) * Postgres 8 sql install scripts * Updated MySQL install scripts (TYPE clause depreciated for storage engine declarations) * Fixed bug preventing torrents from starting in simple mode Bug fixes from Debian team * Recursive call error in SearchEngineBase * Python filename dependency * Parameter check in directory browser to prevent traversal above download directory * Update settings fails with blank search filter TorrentFlux v2.3 ------------------ * Fixed more Arbitrary File Creation/Overwrite/Deletion & Command Execution Vulnerablity (by TF Users). * Security fixes on htmlentities. * Added security check for JPG support with GD libs to prevent user lock out if JPG support is not included in GD libs. (Note GD support is not required and is only for graphic Security Code login). * Upgraded to BitTornado 3.17 (BitTornado 3.15 source is still included in tar.gz if you want to change back to 3.15). TorrentFlux v2.2 ------------------ * Added optional Security Code for login security. * Fixed Arbitrary File Creation/Overwrite/Deletion & Command Execution Vulnerablity (by TF Users). * Fixed Qmanager looping issue. * Added multi select delete to the directory listing. * Updated RSSReader to not show error when no RSS feeds are used. * Updated Search Engine Modules and bug fixes. * Updated maketorrent to allow changing of chunk size. * Added security fixes for htmlentities in User-Agents and request variables. * Fixed torrent start when advanced torrent start is turned off. * Added page refresh countdown. * Fixed jump links on RSS feed page. * Updated Admin Links to allow editing and sorting. * Added Turkish and Russian language files. TorrentFlux v2.1 ---------------- * Addes support for reading file size of files over 2.0 GB. * Added Queue Manager functionality this will allow an admin to specify the following. maximum torrent threads per server maximum torrent threads per user polling interval amount of time the q manager waits in (seconds) between each sweep of the queue enable / disable of queuing admins will have the ability to override the queuing when starting a torrent in the start dialog. * Settings are now stored in a database table and can be modified from the admin screens. * Torrents will not be able to be deleted until they have shutdown -- prevents hanging threads. * Admin can specify what categories will be filtered out on torrent searches. * User may continue browsing when downloading via package downloading. * Using ADODB 4.80 for database connections. * Using BitTornado 3.15 Linux Source. * Support for Cookies for each user under profiles. * Updated RSS feed and Fetching of Torrents over a URL. * Added Rerequest Interval to the Startpop and Settings * Added modular search engine. Support for several popular torrent search engines -- you can build your own. * Search Engine settings and filtering. * File Priority selection * Added btmakemetafile.py for Making Torrents * Users may download the torrent file from the list. * NFO / Text viewer * Download torrent meta file from main torrent list. TorrentFlux v2.0 ----------------- * Added Size to the main page to view the download size of the torrent. * Added natural sort order for directory and file listings. * Fixed deleting so that file names with .. in it will delete. * Download files via the directory listing. * Tar/Zip and download directories on with a single click. * Added max download rate as an option. * Added Super Seeder option for advanced start. * Added mouse over torrent status. * Added Database Abstraction layer (using ADODB) * Updated to use BitTornado-0.3.10 source. * Added new torrent search. * Dynamic URLs now download and use proper torrent name. * Added Chinese, Tiawanese, Finnish, Galacian, and Estonian language files. * Option to show server load on main page. * Added torrent health icons for torrents that are running. * Each user now sees his torrents grouped together in their own list. * Dropped BitTorrent client from install package. Includes BitTornado only now. TorrentFlux v1.5 ----------------- * Created login screen -- no longer uses Basic Authentication through the headers. PHP no longer has to run as a module in Apache. * Added loggoff button. * Storage bar to display free drive space. * Download details now shows distributed seeds (BitTornado only). * Download details now show download and upload amounts. * Updated the torrent grabing via URL -- uses curl or fopen depending on what is available to server. Much faster. * Endless seeding (0% share kill) bug has been fixed. * Minor bug fixes. * Added Polish language file. * Changed how torrents are stopped. No longer uses kill command but now messages the torrent client to shutdown -- stats are now reported to the tracker when torrent is stopped. * Enhanced directory browsing with file type icons. TorrentFlux v1.4 ----------------- * The RSS Feed page now has jump links to the different sections of the page. * Better directory browsing. * More complete logging for Admins. * Total Upload and Download rates displayed at bottom of page. * Replaced time stamp column with Estimated Time. * Users may specify Max Upload Rate when running torrent. * Users may specify when the torrent stops seeding. * Updated to use BitTornado or BitTorrent clients. More statistics with the BitTornado client. * Forced user names to lower case. When dealing with owner directories this UserName is NOT the same as username. * Fixed issue of starting a torrent when "n/a" is the owner. * Fixed timeout issue with the RSS reader. * Updated URL Torrent download to work with Suprnova.orgs referer requirement -- can be changed in the config.php. * Many small HTML and display updates. TorrentFlux v1.3 ----------------- * Torrents will be marked incomplete if they are stopped outside of TorrentFlux (system reboot or what ever). * No longer uses Screen for managing the downloads. Should fix torrents not starting on some Linux versions like Fedora. * Users downloads now go to a directory with the users name. Only the user that downloaded the file or an admin may delete. * Torrent Files are now sorted by date. Newest at the top. * Error(s) from the trackers are now displayed in the download details dialog box. * Admin section now has a place to add and remove RSS feeds. * Torrent meta files download directly to TorrentFlux from the RSS links. * Updated btphpdownload.py so that it no longer uses curses for display -- this was not needed and causes issues on servers that don't allow the user running Apache to have a terminal. * Added Suprnova.org search field the home page. This can be turned on or off from the config.php file. torrentflux_2.4/html/0000755000004100000410000000000011026130131015015 5ustar www-datawww-datatorrentflux_2.4/html/logout.php0000755000004100000410000000304411017367654017071 0ustar www-datawww-dataqstr($cfg["user"])." and action=".$db->qstr($cfg["constants"]["hit"]); // do the SQL $result = $db->Execute($sql); showError($db, $sql); } ?>torrentflux_2.4/html/functions.php0000755000004100000410000024421011024310576017557 0ustar www-datawww-dataGetOne($sql); showError($db,$sql); return $rtnValue; } //********************************************************* // avddelete() function avddelete($file) { $file = html_entity_decode($file, ENT_QUOTES); chmod($file,0777); if (@is_dir($file)) { $handle = @opendir($file); while($filename = readdir($handle)) { if ($filename != "." && $filename != "..") { avddelete($file."/".$filename); } } closedir($handle); @rmdir($file); } else { @unlink($file); } } //********************************************************* // Authenticate() function Authenticate() { global $cfg, $db; $create_time = time(); if(!isset($_SESSION['user'])) { header('location: login.php'); exit(); } if ($_SESSION['user'] == md5($cfg["pagetitle"])) { // user changed password and needs to login again header('location: logout.php'); exit(); } $sql = "SELECT uid, hits, hide_offline, theme, language_file FROM tf_users WHERE user_id=".$db->qstr($cfg['user']); $recordset = $db->Execute($sql); showError($db, $sql); if($recordset->RecordCount() != 1) { AuditAction($cfg["constants"]["error"], "FAILED AUTH: ".$cfg['user']); session_destroy(); header('location: login.php'); exit(); } list($uid, $hits, $cfg["hide_offline"], $cfg["theme"], $cfg["language_file"]) = $recordset->FetchRow(); // Check for valid theme if (!ereg('^[^./][^/]*$', $cfg["theme"])) { AuditAction($cfg["constants"]["error"], "THEME VARIABLE CHANGE ATTEMPT: ".$cfg["theme"]." from ".$cfg['user']); $cfg["theme"] = $cfg["default_theme"]; } // Check for valid language file if(!ereg('^[^./][^/]*$', $cfg["language_file"])) { AuditAction($cfg["constants"]["error"], "LANGUAGE VARIABLE CHANGE ATTEMPT: ".$cfg["language_file"]." from ".$cfg['user']); $cfg["language_file"] = $cfg["default_language"]; } if (!is_dir("themes/".$cfg["theme"])) { $cfg["theme"] = $cfg["default_theme"]; } // Check for valid language file if (!is_file("language/".$cfg["language_file"])) { $cfg["language_file"] = $cfg["default_language"]; } $hits++; $sql = 'select * from tf_users where uid = '.$uid; $rs = $db->Execute($sql); showError($db, $sql); $rec = array( 'hits' => $hits, 'last_visit' => $create_time, 'theme' => $cfg['theme'], 'language_file' => $cfg['language_file'] ); $sql = $db->GetUpdateSQL($rs, $rec); $result = $db->Execute($sql); showError($db,$sql); } //********************************************************* // SaveMessage function SaveMessage($to_user, $from_user, $message, $to_all=0, $force_read=0) { global $_SERVER, $cfg, $db; $message = str_replace(array("'"), "", $message); $create_time = time(); $sTable = 'tf_messages'; if($to_all == 1) { $message .= "\n\n__________________________________\n*** "._MESSAGETOALL." ***"; $sql = 'select user_id from tf_users'; $result = $db->Execute($sql); showError($db,$sql); while($row = $result->FetchRow()) { $rec = array( 'to_user' => $row['user_id'], 'from_user' => $from_user, 'message' => $message, 'IsNew' => 1, 'ip' => $cfg['ip'], 'time' => $create_time, 'force_read' => $force_read ); $sql = $db->GetInsertSql($sTable, $rec); $result2 = $db->Execute($sql); showError($db,$sql); } } else { // Only Send to one Person $rec = array( 'to_user' => $to_user, 'from_user' => $from_user, 'message' => $message, 'IsNew' => 1, 'ip' => $cfg['ip'], 'time' => $create_time, 'force_read' => $force_read ); $sql = $db->GetInsertSql($sTable, $rec); $result = $db->Execute($sql); showError($db,$sql); } } //********************************************************* function addNewUser($newUser, $pass1, $userType) { global $cfg, $db; $create_time = time(); $record = array( 'user_id'=>strtolower($newUser), 'password'=>md5($pass1), 'hits'=>0, 'last_visit'=>$create_time, 'time_created'=>$create_time, 'user_level'=>$userType, 'hide_offline'=>"0", 'theme'=>$cfg["default_theme"], 'language_file'=>$cfg["default_language"] ); $sTable = 'tf_users'; $sql = $db->GetInsertSql($sTable, $record); $result = $db->Execute($sql); showError($db,$sql); } //********************************************************* function PruneDB() { global $cfg, $db; // Prune LOG $testTime = time()-($cfg['days_to_keep'] * 86400); // 86400 is one day in seconds $sql = "delete from tf_log where time < " . $db->qstr($testTime); $result = $db->Execute($sql); showError($db,$sql); unset($result); $testTime = time()-($cfg['minutes_to_keep'] * 60); $sql = "delete from tf_log where time < " . $db->qstr($testTime). " and action=".$db->qstr($cfg["constants"]["hit"]); $result = $db->Execute($sql); showError($db,$sql); unset($result); } //********************************************************* function IsOnline($user) { global $cfg, $db; $online = false; $sql = "SELECT count(*) FROM tf_log WHERE user_id=" . $db->qstr($user)." AND action=".$db->qstr($cfg["constants"]["hit"]); $number_hits = $db->GetOne($sql); showError($db,$sql); if ($number_hits > 0) { $online = true; } return $online; } //********************************************************* function IsUser($user) { global $cfg, $db; $isUser = false; $sql = "SELECT count(*) FROM tf_users WHERE user_id=".$db->qstr($user); $number_users = $db->GetOne($sql); if ($number_users > 0) { $isUser = true; } return $isUser; } //********************************************************* function getOwner($file) { global $cfg, $db; $rtnValue = "n/a"; // Check log to see what user has a history with this file $sql = "SELECT user_id FROM tf_log WHERE file=".$db->qstr($file)." AND (action=".$db->qstr($cfg["constants"]["file_upload"])." OR action=".$db->qstr($cfg["constants"]["url_upload"])." OR action=".$db->qstr($cfg["constants"]["reset_owner"]).") ORDER BY time DESC"; $user_id = $db->GetOne($sql); if($user_id != "") { $rtnValue = $user_id; } else { // try and get the owner from the stat file $rtnValue = resetOwner($file); } return $rtnValue; } //********************************************************* function resetOwner($file) { global $cfg, $db; include_once("AliasFile.php"); // log entry has expired so we must renew it $rtnValue = ""; $alias = getAliasName($file).".stat"; if(file_exists($cfg["torrent_file_path"].$alias)) { $af = new AliasFile($cfg["torrent_file_path"].$alias); if (IsUser($af->torrentowner)) { // We have an owner! $rtnValue = $af->torrentowner; } else { // no owner found, so the super admin will now own it $rtnValue = GetSuperAdmin(); } $host_resolved = $cfg['ip']; $create_time = time(); $rec = array( 'user_id' => $rtnValue, 'file' => $file, 'action' => $cfg["constants"]["reset_owner"], 'ip' => $cfg['ip'], 'ip_resolved' => $host_resolved, 'user_agent' => $_SERVER['HTTP_USER_AGENT'], 'time' => $create_time ); $sTable = 'tf_log'; $sql = $db->GetInsertSql($sTable, $rec); // add record to the log $result = $db->Execute($sql); showError($db,$sql); } return $rtnValue; } //********************************************************* function getCookie($cid) { global $cfg, $db; $rtnValue = ""; $sql = "SELECT host, data FROM tf_cookies WHERE cid=".$cid; $rtnValue = $db->GetAll($sql); return $rtnValue[0]; } //********************************************************* function getAllCookies($uid) { global $cfg, $db; $rtnValue = ""; $sql = "SELECT c.cid, c.host, c.data FROM tf_cookies AS c, tf_users AS u WHERE u.uid=c.uid AND u.user_id='" . $uid . "' order by host"; $rtnValue = $db->GetAll($sql); return $rtnValue; } // *************************************************************************** // Delete Cookie Host Information function deleteCookieInfo($cid) { global $db; $sql = "delete from tf_cookies where cid=".$cid; $result = $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // addCookieInfo - Add New Cookie Host Information function addCookieInfo( $newCookie ) { global $db, $cfg; // Get uid of user $sql = "SELECT uid FROM tf_users WHERE user_id = '" . $cfg["user"] . "'"; $uid = $db->GetOne( $sql ); $sql = "INSERT INTO tf_cookies ( uid, host, data ) VALUES ( " . $uid . ", " . $db->qstr($newCookie["host"]) . ", " . $db->qstr($newCookie["data"]) . " )"; $db->Execute( $sql ); showError( $db, $sql ); } // *************************************************************************** // modCookieInfo - Modify Cookie Host Information function modCookieInfo($cid, $newCookie) { global $db; $sql = "UPDATE tf_cookies SET host='" . $newCookie["host"] . "', data='" . $newCookie["data"] . "' WHERE cid=" . $cid; $db->Execute($sql); showError($db,$sql); } //********************************************************* function getSite($lid) { global $cfg, $db; $rtnValue = ""; $sql = "SELECT sitename FROM tf_links WHERE lid=".$lid; $rtnValue = $db->GetOne($sql); return $rtnValue; } //********************************************************* function getLink($lid) { global $cfg, $db; $rtnValue = ""; $sql = "SELECT url FROM tf_links WHERE lid=".$lid; $rtnValue = $db->GetOne($sql); return $rtnValue; } //********************************************************* function getRSS($rid) { global $cfg, $db; $rtnValue = ""; $sql = "SELECT url FROM tf_rss WHERE rid=".$rid; $rtnValue = $db->GetOne($sql); return $rtnValue; } //********************************************************* function IsOwner($user, $owner) { $rtnValue = false; if (strtolower($user) == strtolower($owner)) { $rtnValue = true; } return $rtnValue; } //********************************************************* function GetActivityCount($user="") { global $cfg, $db; $count = 0; $for_user = ""; if ($user != "") { $for_user = "user_id=".$db->qstr($user)." AND "; } $sql = "SELECT count(*) FROM tf_log WHERE ".$for_user."(action=".$db->qstr($cfg["constants"]["file_upload"])." OR action=".$db->qstr($cfg["constants"]["url_upload"]).")"; $count = $db->GetOne($sql); return $count; } //********************************************************* function GetSpeedValue($inValue) { $rtnValue = 0; $arTemp = split(" ", trim($inValue)); if (is_numeric($arTemp[0])) { $rtnValue = $arTemp[0]; } return $rtnValue; } // *************************************************************************** // Is User Admin // user is Admin if level is 1 or higher function IsAdmin($user="") { global $cfg, $db; $isAdmin = false; if($user == "") { $user = $cfg["user"]; } $sql = "SELECT user_level FROM tf_users WHERE user_id=".$db->qstr($user); $user_level = $db->GetOne($sql); if ($user_level >= 1) { $isAdmin = true; } return $isAdmin; } // *************************************************************************** // Is User SUPER Admin // user is Super Admin if level is higher than 1 function IsSuperAdmin($user="") { global $cfg, $db; $isAdmin = false; if($user == "") { $user = $cfg["user"]; } $sql = "SELECT user_level FROM tf_users WHERE user_id=".$db->qstr($user); $user_level = $db->GetOne($sql); if ($user_level > 1) { $isAdmin = true; } return $isAdmin; } // *************************************************************************** // Returns true if user has message from admin with force_read function IsForceReadMsg() { global $cfg, $db; $rtnValue = false; $sql = "SELECT count(*) FROM tf_messages WHERE to_user=".$db->qstr($cfg["user"])." AND force_read=1"; $count = $db->GetOne($sql); showError($db,$sql); if ($count >= 1) { $rtnValue = true; } return $rtnValue; } // *************************************************************************** // Get Message data in an array function GetMessage($mid) { global $cfg, $db; $rtnValue = array(); if (is_numeric($mid)) { $sql = "select from_user, message, ip, time, isnew, force_read from tf_messages where mid=".$mid." and to_user=".$db->qstr($cfg['user']); $rtnValue = $db->GetRow($sql); showError($db,$sql); } return $rtnValue; } // *************************************************************************** // Get Themes data in an array function GetThemes() { $arThemes = array(); $dir = "themes/"; $handle = opendir($dir); while($entry = readdir($handle)) { if (is_dir($dir.$entry) && ($entry != "." && $entry != "..")) { array_push($arThemes, $entry); } } closedir($handle); sort($arThemes); return $arThemes; } // *************************************************************************** // Get Languages in an array function GetLanguages() { $arLanguages = array(); $dir = "language/"; $handle = opendir($dir); while($entry = readdir($handle)) { if (is_file($dir.$entry) && (strcmp(strtolower(substr($entry, strlen($entry)-4, 4)), ".php") == 0)) { array_push($arLanguages, $entry); } } closedir($handle); sort($arLanguages); return $arLanguages; } // *************************************************************************** // Get Language name from file name function GetLanguageFromFile($inFile) { $rtnValue = ""; $rtnValue = str_replace("lang-", "", $inFile); $rtnValue = str_replace(".php", "", $rtnValue); return $rtnValue; } // *************************************************************************** // Delete Message function DeleteMessage($mid) { global $cfg, $db; $sql = "delete from tf_messages where mid=".$mid." and to_user=".$db->qstr($cfg['user']); $result = $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // Delete Link function deleteOldLink($lid) { global $db; // Get Current sort order index of link with this link id: $idx = getLinkSortOrder($lid); // Fetch all link ids and their sort orders where the sort order is greater // than the one we're removing - we need to shuffle each sort order down // one: $sql = "SELECT sort_order, lid FROM tf_links "; $sql .= "WHERE sort_order > ".$idx." ORDER BY sort_order ASC"; $result = $db->Execute($sql); showError($db,$sql); $arLinks = $result->GetAssoc(); // Decrement the sort order of each link: foreach($arLinks as $sid => $this_lid) { $sql="UPDATE tf_links SET sort_order=sort_order-1 WHERE lid=".$this_lid; $db->Execute($sql); showError($db,$sql); } // Finally delete the link: $sql = "DELETE FROM tf_links WHERE lid=".$lid; $result = $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // Delete RSS function deleteOldRSS($rid) { global $db; $sql = "delete from tf_rss where rid=".$rid; $result = $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // Delete User function DeleteThisUser($user_id) { global $db; $sql = "SELECT uid FROM tf_users WHERE user_id = ".$db->qstr($user_id); $uid = $db->GetOne( $sql ); showError($db,$sql); // delete any cookies this user may have had //$sql = "DELETE tf_cookies FROM tf_cookies, tf_users WHERE (tf_users.uid = tf_cookies.uid) AND tf_users.user_id=".$db->qstr($user_id); $sql = "DELETE FROM tf_cookies WHERE uid=".$uid; $result = $db->Execute($sql); showError($db,$sql); // Now cleanup any message this person may have had $sql = "DELETE FROM tf_messages WHERE to_user=".$db->qstr($user_id); $result = $db->Execute($sql); showError($db,$sql); // now delete the user from the table $sql = "DELETE FROM tf_users WHERE user_id=".$db->qstr($user_id); $result = $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // Update User -- used by admin function updateThisUser($user_id, $org_user_id, $pass1, $userType, $hideOffline) { global $db; if ($hideOffline == "") { $hideOffline = 0; } $sql = 'select * from tf_users where user_id = '.$db->qstr($org_user_id); $rs = $db->Execute($sql); showError($db,$sql); $rec = array(); $rec['user_id'] = $user_id; $rec['user_level'] = $userType; $rec['hide_offline'] = $hideOffline; if ($pass1 != "") { $rec['password'] = md5($pass1); } $sql = $db->GetUpdateSQL($rs, $rec); if ($sql != "") { $result = $db->Execute($sql); showError($db,$sql); } // if the original user id and the new id do not match, we need to update messages and log if ($user_id != $org_user_id) { $sql = "UPDATE tf_messages SET to_user=".$db->qstr($user_id)." WHERE to_user=".$db->qstr($org_user_id); $result = $db->Execute($sql); showError($db,$sql); $sql = "UPDATE tf_messages SET from_user=".$db->qstr($user_id)." WHERE from_user=".$db->qstr($org_user_id); $result = $db->Execute($sql); showError($db,$sql); $sql = "UPDATE tf_log SET user_id=".$db->qstr($user_id)." WHERE user_id=".$db->qstr($org_user_id); $result = $db->Execute($sql); showError($db,$sql); } } // *************************************************************************** // changeUserLevel Changes the Users Level function changeUserLevel($user_id, $level) { global $db; $sql='select * from tf_users where user_id = '.$db->qstr($user_id); $rs = $db->Execute($sql); showError($db,$sql); $rec = array('user_level'=>$level); $sql = $db->GetUpdateSQL($rs, $rec); $result = $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // Mark Message as Read function MarkMessageRead($mid) { global $cfg, $db; $sql = 'select * from tf_messages where mid = '.$mid; $rs = $db->Execute($sql); showError($db,$sql); $rec = array('IsNew'=>0, 'force_read'=>0); $sql = $db->GetUpdateSQL($rs, $rec); $db->Execute($sql); showError($db,$sql); } //************************************************************************** // alterLink() // This function updates the database and alters the selected links values function alterLink($lid,$newLink,$newSite) { global $cfg, $db; $sql = "UPDATE tf_links SET url='".$newLink."',`sitename`='".$newSite."' WHERE `lid`=".$lid; $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // addNewLink - Add New Link function addNewLink($newLink,$newSite) { global $db; // Link sort order index: $idx = -1; // Get current highest link index: $sql = "SELECT sort_order FROM tf_links ORDER BY sort_order DESC"; $result = $db->SelectLimit($sql, 1); showError($db, $sql); if($result->fields === false) { // No links currently in db: $idx = 0; } else { $idx = $result->fields["sort_order"]+1; } $rec = array ( 'url'=>$newLink, 'sitename'=>$newSite, 'sort_order'=>$idx ); $sTable = 'tf_links'; $sql = $db->GetInsertSql($sTable, $rec); $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // addNewRSS - Add New RSS Link function addNewRSS($newRSS) { global $db; $rec = array('url'=>$newRSS); $sTable = 'tf_rss'; $sql = $db->GetInsertSql($sTable, $rec); $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // UpdateUserProfile function UpdateUserProfile($user_id, $pass1, $hideOffline, $theme, $language) { global $cfg, $db; if (empty($hideOffline) || $hideOffline == "" || !isset($hideOffline)) { $hideOffline = "0"; } // update values $rec = array(); if ($pass1 != "") { $rec['password'] = md5($pass1); AuditAction($cfg["constants"]["update"], _PASSWORD); } $sql = 'select * from tf_users where user_id = '.$db->qstr($user_id); $rs = $db->Execute($sql); showError($db,$sql); $rec['hide_offline'] = $hideOffline; $rec['theme'] = $theme; $rec['language_file'] = $language; $sql = $db->GetUpdateSQL($rs, $rec); $result = $db->Execute($sql); showError($db,$sql); } // *************************************************************************** // Get Users in an array function GetUsers() { global $cfg, $db; $user_array = array(); $sql = "select user_id from tf_users order by user_id"; $user_array = $db->GetCol($sql); showError($db,$sql); return $user_array; } // *************************************************************************** // Get Super Admin User ID as a String function GetSuperAdmin() { global $cfg, $db; $rtnValue = ""; $sql = "select user_id from tf_users WHERE user_level=2"; $rtnValue = $db->GetOne($sql); showError($db,$sql); return $rtnValue; } // *************************************************************************** // Get Links in an array function GetLinks() { global $cfg, $db; $link_array = array(); $link_array = $db->GetAssoc("SELECT lid, url, sitename, sort_order FROM tf_links ORDER BY sort_order"); return $link_array; } // *************************************************************************** // Get RSS Links in an array function GetRSSLinks() { global $cfg, $db; $link_array = array(); $sql = "SELECT rid, url FROM tf_rss ORDER BY rid"; $link_array = $db->GetAssoc($sql); showError($db,$sql); return $link_array; } // *************************************************************************** // Build Search Engine Drop Down List function buildSearchEngineDDL($selectedEngine = 'PirateBay', $autoSubmit = false) { $output = "\n"; return $output; } // *************************************************************************** // Build Search Engine Links function buildSearchEngineLinks($selectedEngine = 'PirateBay') { global $cfg; $settingsNeedsSaving = false; $settings['searchEngineLinks'] = Array(); $output = ''; if( (!array_key_exists('searchEngineLinks', $cfg)) || (!is_array($cfg['searchEngineLinks']))) { saveSettings($settings); } $handle = opendir("./searchEngines"); while($entry = readdir($handle)) { $entrys[] = $entry; } natcasesort($entrys); foreach($entrys as $entry) { if ($entry != "." && $entry != ".." && substr($entry, 0, 1) != ".") if(strpos($entry,"Engine.php")) { $tmpEngine = str_replace("Engine",'',substr($entry,0,strpos($entry,"."))); if(array_key_exists($tmpEngine,$cfg['searchEngineLinks'])) { $hreflink = $cfg['searchEngineLinks'][$tmpEngine]; $settings['searchEngineLinks'][$tmpEngine] = $hreflink; } else { $hreflink = getEngineLink($tmpEngine); $settings['searchEngineLinks'][$tmpEngine] = $hreflink; $settingsNeedsSaving = true; } if (strlen($hreflink) > 0) { $output .= ""; if ($selectedEngine == $tmpEngine) { $output .= "".$hreflink.""; } else { $output .= $hreflink; } $output .= "
\n"; } } } if ( count($settings['searchEngineLinks'],COUNT_RECURSIVE) <> count($cfg['searchEngineLinks'],COUNT_RECURSIVE)) { $settingsNeedsSaving = true; } if ($settingsNeedsSaving) { natcasesort($settings['searchEngineLinks']); saveSettings($settings); } return $output; } function getEngineLink($searchEngine) { $tmpLink = ''; $engineFile = 'searchEngines/'.$searchEngine.'Engine.php'; if (is_file($engineFile)) { $fp = @fopen($engineFile,'r'); if ($fp) { $tmp = fread($fp, filesize($engineFile)); @fclose( $fp ); $tmp = substr($tmp,strpos($tmp,'$this->mainURL'),100); $tmp = substr($tmp,strpos($tmp,"=")+1); $tmp = substr($tmp,0,strpos($tmp,";")); $tmpLink = trim(str_replace(array("'","\""),"",$tmp)); } } return $tmpLink; } // *************************************************************************** // *************************************************************************** // Display Functions // *************************************************************************** // *************************************************************************** // Display the header portion of admin views function DisplayHead($subTopic, $showButtons=true, $refresh="", $percentdone="") { global $cfg; ?> <?php echo $percentdone.$cfg["pagetitle"] ?> /style.css" TYPE="text/css"> "; } ?> ">
" cellpadding="4" cellspacing="0">
" background="themes//images/bar.gif">
">
">
"._RETURNTOTORRENTS."]"; echo ""; } ?>
"; echo "TorrentFlux ".$cfg["version"]."  "; echo ""; } // *************************************************************************** // *************************************************************************** // Dipslay Title Bar // 2004-12-09 PFM: now using adodb. function DisplayTitleBar($pageTitleText, $showButtons=true) { global $cfg, $db; ?> "; // Top Buttons echo "  "; echo " "; echo " "; echo " "; echo " "; // Does the user have messages? $sql = "select count(*) from tf_messages where to_user='".$cfg['user']."' and IsNew=1"; $number_messages = $db->GetOne($sql); showError($db,$sql); if ($number_messages > 0) { // We have messages $message_image = "themes/".$cfg["theme"]."/images/messages_on.gif"; } else { // No messages $message_image = "themes/".$cfg["theme"]."/images/messages_off.gif"; } echo ""; if(IsAdmin()) { echo " "; } echo " "; } ?>
'. ''. ''. '
' . _SENDMESSAGETO ; echo ''; echo ''; echo '
'; } // *************************************************************************** // *************************************************************************** // Removes HTML from Messages function check_html ($str, $strip="") { /* The core of this code has been lifted from phpslash */ /* which is licenced under the GPL. */ if ($strip == "nohtml") { $AllowableHTML=array(''); } $str = stripslashes($str); $str = eregi_replace("<[[:space:]]*([^>]*)[[:space:]]*>",'<\\1>', $str); // Delete all spaces from html tags . $str = eregi_replace("]*href[[:space:]]*=[[:space:]]*\"?[[:space:]]*([^\" >]*)[[:space:]]*\"?[^>]*>",'', $str); // Delete all attribs from Anchor, except an href, double quoted. $str = eregi_replace("<[[:space:]]* img[[:space:]]*([^>]*)[[:space:]]*>", '', $str); // Delete all img tags $str = eregi_replace("]*href[[:space:]]*=[[:space:]]*\"?javascript[[:punct:]]*\"?[^>]*>", '', $str); // Delete javascript code from a href tags -- Zhen-Xjell @ http://nukecops.com $tmp = ""; while (ereg("<(/?[[:alpha:]]*)[[:space:]]*([^>]*)>",$str,$reg)) { $i = strpos($str,$reg[0]); $l = strlen($reg[0]); if ($reg[1][0] == "/") { $tag = strtolower(substr($reg[1],1)); } else { $tag = strtolower($reg[1]); } if ($a = $AllowableHTML[$tag]) { if ($reg[1][0] == "/") { $tag = ""; } elseif (($a == 1) || ($reg[2] == "")) { $tag = "<$tag>"; } else { # Place here the double quote fix function. $attrb_list=delQuotes($reg[2]); // A VER $attrb_list = ereg_replace("&","&",$attrb_list); $tag = "<$tag" . $attrb_list . ">"; } # Attribs in tag allowed } else { $tag = ""; } $tmp .= substr($str,0,$i) . $tag; $str = substr($str,$i+$l); } $str = $tmp . $str; return $str; } // *************************************************************************** // *************************************************************************** // Checks for the location of the torrents // If it does not exist, then it creates it. function checkTorrentPath() { global $cfg; // is there a stat and torrent dir? if (!@is_dir($cfg["torrent_file_path"]) && is_writable($cfg["path"])) { //Then create it @mkdir($cfg["torrent_file_path"], 0777); } } // *************************************************************************** // *************************************************************************** // Returns the drive space used as a percentage i.e 85 or 95 function getDriveSpace($drive) { $percent = 0; if (is_dir($drive)) { $dt = disk_total_space($drive); $df = disk_free_space($drive); $percent = round((($dt - $df)/$dt) * 100); } return $percent; } // *************************************************************************** // *************************************************************************** // Display the Drive Space Graphical Bar function displayDriveSpaceBar($drivespace) { global $cfg; $freeSpace = ""; if ($drivespace > 20) { $freeSpace = " (".formatFreeSpace($cfg["free_space"])." Free)"; } ?>
:
/images/proglass.gif" width="%">
/images/noglass.gif" width="%">
1024) { $rtnValue = number_format($freeSpace/1024, 2)." GB"; } else { $rtnValue = number_format($freeSpace, 2)." MB"; } return $rtnValue; } //************************************************************************** // getFileFilter() // Returns a string used as a file filter. // Takes in an array of file types. function getFileFilter($inArray) { $filter = "(\.".strtolower($inArray[0]).")|"; // used to hold the file type filter $filter .= "(\.".strtoupper($inArray[0]).")"; // Build the file filter for($inx = 1; $inx < sizeof($inArray); $inx++) { $filter .= "|(\.".strtolower($inArray[$inx]).")"; $filter .= "|(\.".strtoupper($inArray[$inx]).")"; } $filter .= "$"; return $filter; } //************************************************************************** // getAliasName() // Create Alias name for Text file and Screen Alias function getAliasName($inName) { $replaceItems = array(" ", ".", "-", "[", "]", "(", ")", "#", "&", "@"); $alias = str_replace($replaceItems, "_", $inName); $alias = strtolower($alias); $alias = str_replace("_torrent", "", $alias); return $alias; } //************************************************************************** // cleanFileName() // Remove bad characters that cause problems function cleanFileName($inName) { $replaceItems = array("?", "&", "'", "\"", "+", "@"); $cleanName = str_replace($replaceItems, "", $inName); $cleanName = ltrim($cleanName, "-"); $cleanName = preg_replace("/[^0-9a-z.]+/i",'_', $cleanName); return $cleanName; } //************************************************************************** // usingTornado() // returns true if client is tornado function usingTornado() { return true; } //************************************************************************** // cleanURL() // split on the "*" coming from Varchar URL function cleanURL($url) { $rtnValue = $url; $arURL = explode("*", $url); if (sizeof($arURL) > 1) { $rtnValue = $arURL[1]; } return $rtnValue; } // ------------------------------------------------------------------- // FetchTorrent() method to get data from URL // Has support for specific sites // ------------------------------------------------------------------- function FetchTorrent($url) { global $cfg, $db; ini_set("allow_url_fopen", "1"); ini_set("user_agent", $_SERVER["HTTP_USER_AGENT"]); $rtnValue = ""; $domain = parse_url( $url ); if( strtolower( substr( $domain["path"], -8 ) ) != ".torrent" ) { // Check know domain types if( strpos( strtolower ( $domain["host"] ), "mininova" ) !== false ) { // Sample (http://www.mininova.org/rss.xml): // http://www.mininova.org/tor/2254847 //
FreeLinux.ISO.iso.torrent // If received a /tor/ get the required information if( strpos( $url, "/tor/" ) !== false ) { // Get the contents of the /tor/ to find the real torrent name $html = FetchHTML( $url ); // Check for the tag used on mininova.org if( preg_match( "/(.[^<]+)<\/a>/i", $html, $html_preg_match ) ) { // This is the real torrent filename $cfg["save_torrent_name"] = $html_preg_match[1]; } // Change to GET torrent url $url = str_replace( "/tor/", "/get/", $url ); } // Now fetch the torrent file $html = FetchHTML( $url ); // This usually gets triggered if the original URL was /get/ instead of /tor/ if( strlen( $cfg["save_torrent_name"] ) == 0 ) { // Get the name of the torrent, and make it the filename if( preg_match( "/name([0-9][^:]):(.[^:]+)/i", $html, $html_preg_match ) ) { $filelength = $html_preg_match[1]; $filename = $html_preg_match[2]; $cfg["save_torrent_name"] = substr( $filename, 0, $filelength ) . ".torrent"; } } // Make sure we have a torrent file if( strpos( $html, "d8:" ) === false ) { // We don't have a Torrent File... it is something else AuditAction( $cfg["constants"]["error"], "BAD TORRENT for: " . $url . "\n" . $html ); $html = ""; } return $html; } elseif( strpos( strtolower ( $domain["host"] ), "isohunt" ) !== false ) { // Sample (http://isohunt.com/js/rss.php): // http://isohunt.com/download.php?mode=bt&id=8837938 // http://isohunt.com/btDetails.php?ihq=&id=8464972 $referer = "http://" . $domain["host"] . "/btDetails.php?id="; // If the url points to the details page, change it to the download url if( strpos( strtolower( $url ), "/btdetails.php?" ) !== false ) { $url = str_replace( "/btDetails.php?", "/download.php?", $url ) . "&mode=bt"; // Need to make it grab the torrent } // Grab contents of details page $html = FetchHTML( $url, $referer ); // Get the name of the torrent, and make it the filename if( preg_match( "/name([0-9]+):[^:]+/i", $html, $html_preg_match ) ) { $filelength = $html_preg_match[1]; $filename = $html_preg_match[0]; $cfg["save_torrent_name"] = substr( $filename, 5+strlen($filelength), $filelength ) . ".torrent"; } // Make sure we have a torrent file if( strpos( $html, "d8:" ) === false ) { // We don't have a Torrent File... it is something else AuditAction( $cfg["constants"]["error"], "BAD TORRENT for: " . $url . "\n" . $html ); $html = ""; } return $html; } elseif( strpos( strtolower( $url ), "details.php?" ) !== false ) { // Sample (http://www.bitmetv.org/rss.php?passkey=123456): // http://www.bitmetv.org/details.php?id=18435&hit=1 $referer = "http://" . $domain["host"] . "/details.php?id="; $html = FetchHTML( $url, $referer ); // Sample (http://www.bitmetv.org/details.php?id=18435) // download.php/18435/SpiderMan%20Season%204.torrent if( preg_match( "/(download.php.[^\"]+)/i", $html, $html_preg_match ) ) { $torrent = str_replace( " ", "%20", substr( $html_preg_match[0], 0, -1 ) ); $url2 = "http://" . $domain["host"] . "/" . $torrent; $html2 = FetchHTML( $url2 ); // Make sure we have a torrent file if (strpos($html2, "d8:") === false) { // We don't have a Torrent File... it is something else AuditAction($cfg["constants"]["error"], "BAD TORRENT for: ".$url."\n".$html2); $html2 = ""; } return $html2; } else { return ""; } } elseif( strpos( strtolower( $url ), "download.asp?" ) !== false ) { // Sample (TF's TorrenySpy Search): // http://www.torrentspy.com/download.asp?id=519793 $referer = "http://" . $domain["host"] . "/download.asp?id="; $html = FetchHTML( $url, $referer ); // Get the name of the torrent, and make it the filename if( preg_match( "/name([0-9]+):[^:]+/i", $html, $html_preg_match ) ) { $filelength = $html_preg_match[1]; $filename = $html_preg_match[0]; $cfg["save_torrent_name"] = substr( $filename, 5+strlen($filelength), $filelength ) . ".torrent"; } if( !empty( $html ) ) { // Make sure we have a torrent file if( strpos( $html, "d8:" ) === false ) { // We don't have a Torrent File... it is something else AuditAction( $cfg["constants"]["error"], "BAD TORRENT for: " . $url . "\n" . $html ); $html = ""; } return $html; } else { return ""; } } } $html = FetchHTML( $url ); // Make sure we have a torrent file if( strpos( $html, "d8:" ) === false ) { // We don't have a Torrent File... it is something else AuditAction( $cfg["constants"]["error"], "BAD TORRENT for: " . $url. "\n" . $html ); $html = ""; } else { $html = substr($html, strpos($html, "d8:")); // Get the name of the torrent, and make it the filename if( preg_match( "/name([0-9]+):[^:]+/i", $html, $html_preg_match ) ) { $filelength = $html_preg_match[1]; $filename = $html_preg_match[0]; $cfg["save_torrent_name"] = substr( $filename, 5+strlen($filelength), $filelength ) . ".torrent"; } } return $html; } // ------------------------------------------------------------------- // FetchHTML() method to get data from URL -- uses timeout and user agent // ------------------------------------------------------------------- function FetchHTML( $url, $referer = "" ) { global $cfg, $db; ini_set("allow_url_fopen", "1"); ini_set("user_agent", $_SERVER["HTTP_USER_AGENT"]); //$url = cleanURL( $url ); $domain = parse_url( $url ); $getcmd = $domain["path"]; if(!array_key_exists("query", $domain)) { $domain["query"] = ""; } $getcmd .= ( !empty( $domain["query"] ) ) ? "?" . $domain["query"] : ""; $cookie = ""; $rtnValue = ""; // If the url already doesn't contain a passkey, then check // to see if it has cookies set to the domain name. if( ( strpos( $domain["query"], "passkey=" ) ) === false ) { $sql = "SELECT c.data FROM tf_cookies AS c LEFT JOIN tf_users AS u ON ( u.uid = c.uid ) WHERE u.user_id = '" . $cfg["user"] . "' AND c.host = '" . $domain['host'] . "'"; $cookie = $db->GetOne( $sql ); showError( $db, $sql ); } if( !array_key_exists("port", $domain) ) { $domain["port"] = 80; } // Check to see if this site requires the use of cookies if( !empty( $cookie ) ) { $socket = @fsockopen( $domain["host"], $domain["port"], $errno, $errstr, 30 ); //connect to server if( !empty( $socket ) ) { // Write the outgoing header packet // Using required cookie information $packet = "GET " . $url . " HTTP/1.0\r\n"; $packet .= ( !empty( $referer ) ) ? "Referer: " . $referer . "\r\n" : ""; $packet .= "Accept: */*\r\n"; $packet .= "Accept-Language: en-us\r\n"; $packet .= "User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n"; $packet .= "Host: " . $domain["host"] . "\r\n"; $packet .= "Connection: Close\r\n"; $packet .= "Cookie: " . $cookie . "\r\n\r\n"; // Send header packet information to server @fputs( $socket, $packet ); // Initialize variable, make sure null until we add too it. $rtnValue = null; // If http 1.0 just take it all as 1 chunk (Much easier, but for old servers) while( !@feof( $socket ) ) { $rtnValue .= @fgets( $socket, 500000 ); } @fclose( $socket ); // Close our connection } } else { if( $fp = @fopen( $url, 'r' ) ) { $rtnValue = ""; while( !@feof( $fp ) ) { $rtnValue .= @fgets( $fp, 4096 ); } @fclose( $fp ); } } // If the HTML is still empty, then try CURL if (($rtnValue == "" && function_exists("curl_init")) || (strpos($rtnValue, "HTTP/1.0 302") > 0 && function_exists("curl_init")) || (strpos($rtnValue, "HTTP/1.1 302") > 0 && function_exists("curl_init"))) { // Give CURL a Try $ch = curl_init(); if ($cookie != "") { curl_setopt($ch, CURLOPT_COOKIE, $cookie); } curl_setopt($ch, CURLOPT_PORT, $domain["port"]); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, FALSE); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, TRUE); $response = curl_exec($ch); curl_close($ch); $rtnValue = substr($response, strpos($response, "d8:")); $rtnValue = rtrim($rtnValue, "\r\n"); } return $rtnValue; } //************************************************************************** // getDownloadSize() // Grab the full size of the download from the torrent metafile function getDownloadSize($torrent) { $rtnValue = ""; if (file_exists($torrent)) { include_once("BDecode.php"); $fd = fopen($torrent, "rd"); $alltorrent = fread($fd, filesize($torrent)); $array = BDecode($alltorrent); fclose($fd); $rtnValue = $array["info"]["piece length"] * (strlen($array["info"]["pieces"]) / 20); } return $rtnValue; } //************************************************************************** // formatBytesToKBMGGB() // Returns a string in format of GB, MB, or KB depending on the size for display function formatBytesToKBMGGB($inBytes) { $rsize = ""; if ($inBytes > (1024 * 1024 * 1024)) { $rsize = round($inBytes / (1024 * 1024 * 1024), 2) . " GB"; } elseif ($inBytes < 1024 * 1024) { $rsize = round($inBytes / 1024, 1) . " KB"; } else { $rsize = round($inBytes / (1024 * 1024), 1) . " MB"; } return $rsize; } //************************************************************************** // HealthData // Stores the image and title of for the health of a file. class HealthData { var $image = ""; var $title = ""; } //************************************************************************** // getStatusImage() Takes in an AliasFile object // Returns a string "file name" of the status image icon function getStatusImage($af) { $hd = new HealthData(); $hd->image = "black.gif"; $hd->title = ""; if ($af->running == "1") { // torrent is running if ($af->seeds < 2) { $hd->image = "yellow.gif"; } if ($af->seeds == 0) { $hd->image = "red.gif"; } if ($af->seeds >= 2) { $hd->image = "green.gif"; } } if ($af->percent_done >= 100) { if(trim($af->up_speed) != "" && $af->running == "1") { // is seeding $hd->image = "green.gif"; } else { // the torrent is finished $hd->image = "black.gif"; } } if ($hd->image != "black.gif") { $hd->title = "S:".$af->seeds." P:".$af->peers." "; } if ($af->running == "3") { // torrent is queued $hd->image = "black.gif"; } return $hd; } //************************************************************************** function writeQinfo($fileName,$command) { $fp = fopen($fileName.".Qinfo","w"); fwrite($fp, $command); fflush($fp); fclose($fp); } //************************************************************************** class ProcessInfo { var $pid = ""; var $ppid = ""; var $cmdline = ""; function ProcessInfo($psLine) { $psLine = trim($psLine); if (strlen($psLine) > 12) { $this->pid = trim(substr($psLine, 0, 5)); $this->ppid = trim(substr($psLine, 5, 6)); $this->cmdline = trim(substr($psLine, 12)); } } } //************************************************************************** function runPS() { global $cfg; return shell_exec("ps x -o pid='' -o ppid='' -o command='' -ww | grep ".basename($cfg["btphpbin"])." | grep ".$cfg["torrent_file_path"]." | grep -v grep"); } //************************************************************************** function RunningProcessInfo() { global $cfg; if (IsAdmin()) { include_once("RunningTorrent.php"); $screenStatus = runPS(); $arScreen = array(); $tok = strtok($screenStatus, "\n"); while ($tok) { array_push($arScreen, $tok); $tok = strtok("\n"); } $cProcess = array(); $cpProcess = array(); $pProcess = array(); $ProcessCmd = array(); $QLine = ""; for($i = 0; $i < sizeof($arScreen); $i++) { if(strpos($arScreen[$i], $cfg["tfQManager"]) > 0) { $pinfo = new ProcessInfo($arScreen[$i]); $QLine = $pinfo->pid; } else { if(strpos($arScreen[$i], basename($cfg["btphpbin"])) !== false) { $pinfo = new ProcessInfo($arScreen[$i]); if (intval($pinfo->ppid) == 1) { if(!strpos($pinfo->cmdline, "rep python") > 0) { if(!strpos($pinfo->cmdline, "ps x") > 0) { array_push($pProcess,$pinfo->pid); $rt = new RunningTorrent($pinfo->pid . " " . $pinfo->cmdline); //array_push($ProcessCmd,$pinfo->cmdline); array_push($ProcessCmd,$rt->torrentOwner . "\t". str_replace(array(".stat"),"",$rt->statFile)); } } } else { if(!strpos($pinfo->cmdline, "rep python") > 0) { if(!strpos($pinfo->cmdline, "ps x") > 0) { array_push($cProcess,$pinfo->pid); array_push($cpProcess,$pinfo->ppid); } } } } } } echo " --- Running Processes ---\n"; echo " Parents : " . count($pProcess) . "\n"; echo " Children : " . count($cProcess) . "\n"; echo "\n"; echo " PID \tOwner\tTorrent File\n"; foreach($pProcess as $key => $value) { echo " " . $value . "\t" . $ProcessCmd[$key] . "\n"; foreach($cpProcess as $cKey => $cValue) if (intval($value) == intval($cValue)) echo "\t" . $cProcess[$cKey] . "\n"; } echo "\n"; echo " --- QManager --- \n"; echo " PID : "; echo " ".$QLine; } } //************************************************************************** function getNumberOfQueuedTorrents() { global $cfg; $rtnValue = 0; $dirName = $cfg["torrent_file_path"] . "queue/"; $handle = @opendir($dirName); if ($handle) { while($entry = readdir($handle)) { if ($entry != "." && $entry != "..") { if (!(@is_dir($dirName.$entry)) && (substr($entry, -6) == ".Qinfo")) { $rtnValue = $rtnValue + 1; } } } } return $rtnValue; } //************************************************************************** function getRunningTorrentCount() { return count(getRunningTorrents()); } //************************************************************************** function getRunningTorrents() { global $cfg; $screenStatus = runPS(); $arScreen = array(); $tok = strtok($screenStatus, "\n"); while ($tok) { array_push($arScreen, $tok); $tok = strtok("\n"); } $artorrent = array(); for($i = 0; $i < sizeof($arScreen); $i++) { if(! strpos($arScreen[$i], $cfg["tfQManager"]) > 0) { if(strpos($arScreen[$i], basename($cfg["btphpbin"])) !== false) { $pinfo = new ProcessInfo($arScreen[$i]); if (intval($pinfo->ppid) == 1) { if(!strpos($pinfo->cmdline, "rep python") > 0) { if(!strpos($pinfo->cmdline, "ps x") > 0) { array_push($artorrent,$pinfo->pid . " " . $pinfo->cmdline); } } } } } } return $artorrent; } //************************************************************************** function checkQManager() { $x = getQManagerPID(); if (strlen($x) > 0) { $y = $x; $arScreen = array(); $tok = strtok(shell_exec("ps -p " . $x . " | grep " . $y), "\n"); while ($tok) { array_push($arScreen, $tok); $tok = strtok("\n"); } $QMgrCount = sizeOf($arScreen); } else { $QMgrCount = 0; } return $QMgrCount; } //************************************************************************** function getQManagerPID() { global $cfg; $rtnValue = ""; $pidFile = $cfg["torrent_file_path"] . "queue/tfQManager.pid"; if(file_exists($pidFile)) { $fp = fopen($pidFile,"r"); if ($fp) { while (!feof($fp)) { $tmpValue = fread($fp,1); if($tmpValue != "\n") $rtnValue .= $tmpValue; } fclose($fp); } } return $rtnValue; } //************************************************************************** function startQManager($maxServerThreads=5,$maxUserThreads=2,$sleepInterval=10) { global $cfg; // is there a stat and torrent dir? if (is_dir($cfg["torrent_file_path"])) { if (is_writable($cfg["torrent_file_path"]) && !is_dir($cfg["torrent_file_path"]."queue/")) { //Then create it mkdir($cfg["torrent_file_path"]."queue/", 0777); } } if (checkQManager() == 0) { $cmd1 = "cd " . $cfg["path"] . "TFQUSERNAME"; if (! array_key_exists("pythonCmd",$cfg)) { insertSetting("pythonCmd","/usr/bin/python"); } if (! array_key_exists("debugTorrents",$cfg)) { insertSetting("debugTorrents",false); } if (!$cfg["debugTorrents"]) { $pyCmd = $cfg["pythonCmd"] . " -OO"; } else { $pyCmd = $cfg["pythonCmd"]; } $btphp = "'" . $cmd1. "; HOME=".$cfg["path"]."; export HOME; nohup " . $pyCmd . " " .$cfg["btphpbin"] . " '"; $command = $pyCmd . " " . $cfg["tfQManager"] . " ".$cfg["torrent_file_path"]."queue/ ".escapeshellarg($maxServerThreads)." ".escapeshellarg($maxUserThreads)." ".escapeshellarg($sleepInterval)." ".$btphp." > /dev/null &"; //$command = $pyCmd . " " . $cfg["tfQManager"] . " ".$cfg["torrent_file_path"]."queue/ ".$maxServerThreads." ".$maxUserThreads." ".$sleepInterval." ".$btphp." > /dev/null2>&1 & &"; $result = exec($command); sleep(2); // wait for it to start prior to getting pid AuditAction($cfg["constants"]["QManager"], "Started PID:" . getQManagerPID()); }else{ AuditAction($cfg["constants"]["QManager"], "QManager Already Started PID:" . getQManagerPID()); } } //************************************************************************** function stopQManager() { global $cfg; $QmgrPID = getQManagerPID(); if($QmgrPID != "") { AuditAction($cfg["constants"]["QManager"], "Stopping PID:" . $QmgrPID); $result = exec("kill ".escapeshellarg($QmgrPID)); unlink($cfg["torrent_file_path"] . "queue/tfQManager.pid"); } } //************************************************************************** // file_size() // Returns file size... overcomes PHP limit of 2.0GB function file_size($file) { $size = @filesize($file); if ( $size == 0) { $size = exec("ls -l \"".escapeshellarg($file)."\" | awk '{print $5}'"); } return $size; } //************************************************************************** // SecurityClean() // Cleans the file name for delete and alias file creation function SecurityClean($string) { global $cfg; if (empty($string)) { return $string; } $array = array("<", ">", "\\", "//", "..", "'", "/"); foreach ($array as $char) { $string = str_replace($char, NULL, $string); } if( (strtolower( substr( $string, -8 ) ) == ".torrent") || (strtolower( substr( $string, -5 ) ) == ".stat") ) { // we are good } else { AuditAction($cfg["constants"]["error"], "Not a stat or torrent: " . $string); die("Invalid file specified. Action has been logged."); } return $string; } //************************************************************************** // getDirList() // This method Builds and displays the Torrent Section of the Index Page function getDirList($dirName) { global $cfg, $db; include_once("AliasFile.php"); include_once("RunningTorrent.php"); $runningTorrents = getRunningTorrents(); $arList = array(); $file_filter = getFileFilter($cfg["file_types_array"]); if (is_dir($dirName)) { $handle = opendir($dirName); } else { // nothing to read if (IsAdmin()) { echo "ERROR: ".$dirName." Path is not valid. Please edit settings
"; } else { echo "ERROR: Contact an admin the Path is not valid.
"; } return; } $lastUser = ""; $arUserTorrent = array(); $arListTorrent = array(); while($entry = readdir($handle)) { if ($entry != "." && $entry != "..") { if (is_dir($dirName."/".$entry)) { // don''t do a thing } else { if (ereg($file_filter, $entry)) { $key = filemtime($dirName."/".$entry).md5($entry); $arList[$key] = $entry; } } } } // sort the files by date krsort($arList); foreach($arList as $entry) { $output = ""; $displayname = $entry; $show_run = true; $torrentowner = getOwner($entry); $owner = IsOwner($cfg["user"], $torrentowner); $kill_id = ""; $estTime = " "; $alias = getAliasName($entry).".stat"; $af = new AliasFile($dirName.$alias, $torrentowner); $timeStarted = ""; $torrentfilelink = ""; if(!file_exists($dirName.$alias)) { $af->running = "2"; // file is new $af->size = getDownloadSize($dirName.$entry); $af->WriteFile(); } if(strlen($entry) >= 47) { // needs to be trimmed $displayname = substr($entry, 0, 44); $displayname .= "..."; } // find out if any screens are running and take their PID and make a KILL option foreach ($runningTorrents as $key => $value) { $rt = new RunningTorrent($value); if ($rt->statFile == $alias) { if ($kill_id == "") { $kill_id = $rt->processId; } else { // there is more than one PID for this torrent // Add it so it can be killed as well. $kill_id .= "|".$rt->processId; } } } // Check to see if we have a pid without a process. if (is_file($cfg["torrent_file_path"].$alias.".pid") && empty($kill_id)) { // died outside of tf and pid still exists. @unlink($cfg["torrent_file_path"].$alias.".pid"); if(($af->percent_done < 100) && ($af->percent_done >= 0)) { // The file is not running and the percent done needs to be changed $af->percent_done = ($af->percent_done+100)*-1; } $af->running = "0"; $af->time_left = "Torrent Died"; $af->up_speed = ""; $af->down_speed = ""; // write over the status file so that we can display a new status $af->WriteFile(); } if ($cfg["enable_torrent_download"]) { $torrentfilelink = ""; } $hd = getStatusImage($af); $output .= "image."\" width=16 height=16 title=\"".$hd->title.$entry."\" border=0 align=\"absmiddle\">".$torrentfilelink.$displayname.""; $output .= "".formatBytesToKBMGGB($af->size).""; $output .= "".$torrentowner.""; $output .= "
"; if ($af->running == "2") { $output .= ""._NEW.""; } elseif ($af->running == "3" ) { $estTime = "Waiting..."; $qDateTime = ''; if(is_file($dirName."queue/".$alias.".Qinfo")) { $qDateTime = date("m/d/Y H:i:s", strval(filectime($dirName."queue/".$alias.".Qinfo"))); } $output .= "', CSSCLASS);\" onmouseout=\"return nd();\">"._QUEUED.""; } else { if ($af->time_left != "" && $af->time_left != "0") { $estTime = $af->time_left; } $sql_search_time = "Select time from tf_log where action like '%Upload' and file like '".$entry."%'"; $result_search_time = $db->Execute($sql_search_time); list($uploaddate) = $result_search_time->FetchRow(); $lastUser = $torrentowner; $sharing = $af->sharing."%"; $graph_width = 1; $progress_color = "#00ff00"; $background = "#000000"; $bar_width = "4"; $popup_msg = _ESTIMATEDTIME.": ".$af->time_left; $popup_msg .= "
"._DOWNLOADSPEED.": ".$af->down_speed; $popup_msg .= "
"._UPLOADSPEED.": ".$af->up_speed; $popup_msg .= "
"._SHARING.": ".$sharing; $popup_msg .= "
Seeds: ".$af->seeds; $popup_msg .= "
Peers: ".$af->peers; $popup_msg .= "
"._USER.": ".$torrentowner; $eCount = 0; foreach ($af->errors as $key => $value) { if(strpos($value," (x")) { $curEMsg = substr($value,strpos($value," (x")+3); $eCount += substr($curEMsg,0,strpos($curEMsg,")")); } else { $eCount += 1; } } $popup_msg .= "
"._ERRORSREPORTED.": ".strval($eCount); $popup_msg .= "
"._UPLOADED.": ".date("m/d/Y H:i:s", $uploaddate); if (is_file($dirName.$alias.".pid")) { $timeStarted = "
"._STARTED.": ".date("m/d/Y H:i:s", strval(filectime($dirName.$alias.".pid"))); } // incriment the totals if(!isset($cfg["total_upload"])) $cfg["total_upload"] = 0; if(!isset($cfg["total_download"])) $cfg["total_download"] = 0; $cfg["total_upload"] = $cfg["total_upload"] + GetSpeedValue($af->up_speed); $cfg["total_download"] = $cfg["total_download"] + GetSpeedValue($af->down_speed); if($af->percent_done >= 100) { if(trim($af->up_speed) != "" && $af->running == "1") { $popup_msg .= $timeStarted; $output .= "', CSSCLASS);\" onmouseout=\"return nd();\">seeding (".$af->up_speed.") ".$sharing.""; } else { $popup_msg .= "
"._ENDED.": ".date("m/d/Y H:i:s", strval(filemtime($dirName.$alias))); $output .= "', CSSCLASS);\" onmouseout=\"return nd();\">"._DONE.""; } $show_run = false; } else if ($af->percent_done < 0) { $popup_msg .= $timeStarted; $output .= "', CSSCLASS);\" onmouseout=\"return nd();\">"._INCOMPLETE.""; $show_run = true; } else { $popup_msg .= $timeStarted; if($af->percent_done > 1) { $graph_width = $af->percent_done; } if($graph_width == 100) { $background = $progress_color; } $output .= "', CSSCLASS);\" onmouseout=\"return nd();\">"; $output .= "".$af->percent_done."% @ ".$af->down_speed."
"; $output .= ""; $output .= ""; $output .= ""; $output .= "
"; } } $output .= "
"; $output .= "
".$estTime."
"; $output .= "
"; $torrentDetails = _TORRENTDETAILS; if ($lastUser != "") { $torrentDetails .= "\n"._USER.": ".$lastUser; } $output .= "running == 1) { $output .= "&als=false"; } $output .= "\">"; if ($owner || IsAdmin($cfg["user"])) { if($kill_id != "" && $af->percent_done >= 0 && $af->running == 1) { $output .= ""; $output .= ""; } else { if($torrentowner == "n/a") { $output .= ""; } else { if ($af->running == "3") { $output .= ""; } else { if (!is_file($cfg["torrent_file_path"].$alias.".pid")) { // Allow Avanced start popup? if ($cfg["advanced_start"]) { if($show_run) { $output .= ""; } else { $output .= ""; } } else { // Quick Start if($show_run) { $output .= ""; } else { $output .= ""; } } } else { // pid file exists so this may still be running or dieing. $output .= ""; } } } if (!is_file($cfg["torrent_file_path"].$alias.".pid")) { $deletelink = $_SERVER['PHP_SELF']."?alias_file=".$alias."&delfile=".urlencode($entry); $output .= ""; } else { // pid file present so process may be still running. don't allow deletion. $output .= ""; } } } else { $output .= ""; $output .= ""; } $output .= "
"; $output .= ""; $output .= "\n"; // Is this torrent for the user list or the general list? if ($cfg["user"] == getOwner($entry)) { array_push($arUserTorrent, $output); } else { array_push($arListTorrent, $output); } } closedir($handle); // Now spit out the junk echo ""; if (sizeof($arUserTorrent) > 0) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "\n"; foreach($arUserTorrent as $torrentrow) { echo $torrentrow; } } if (sizeof($arListTorrent) > 0) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "\n"; foreach($arListTorrent as $torrentrow) { echo $torrentrow; } } } ?> torrentflux_2.4/html/startpop.php0000755000004100000410000002074411017367654017442 0ustar www-datawww-data= 55) { $displayName = substr($displayName, 0, 52)."..."; } ?> <?php echo _RUNTORRENT ?> - <?php echo $displayName ?>/style.css" TYPE="text/css" /> ">

".$cfg["user"].": "._TORRENTFILE."
Size
"._USER."
"._STATUS."
"._ESTIMATEDTIME."
"._ADMIN."
"._TORRENTFILE."
Size
"._USER."
"._STATUS."
"._ESTIMATEDTIME."
"._ADMIN."
"; ?>
Max Upload Rate: "> kB/s Max # Uploads: ">
Max Download Rate: "> kB/s (0 = max) Super Seeder (dedicated seed only)
Rerequest Interval: "> Add to Queue"; } else { // Force Queuing if not an admin. echo ""; } } else { echo " "; } echo "
Completion: Port Range: "> - ">

   Torrent Meta Data / Priority Selection:
; background-color: ; position:relative; width:650; height:290; padding-left: 5px; padding-right: 5px; z-index:1; overflow: scroll; visibility: visible">

  
torrentflux_2.4/html/dtree.js0000755000004100000410000003232311017132666016503 0ustar www-datawww-data/*--------------------------------------------------| | dTree 2.05 | www.destroydrop.com/javascript/tree/ | |---------------------------------------------------| | Copyright (c) 2002-2003 Geir Landrö | | | | This script can be used freely as long as all | | copyright messages are intact. | | | | Updated: 17.04.2003 | |--------------------------------------------------*/ function getSizes() { var len = 0; for (var n=0; n (1024 * 1024 * 1024)) { rsize = Math.round((sel / (1024 * 1024 * 1024))*100)/100 + " GB"; } else if (sel < 1024 * 1024) { rsize = Math.round((sel / 1024)*10)/10 + " KB"; } else { rsize = Math.round((sel / (1024 * 1024))*10)/10 + " MB"; } document.getElementById("sel").innerHTML = String(sel) + " (" + rsize +")"; } function chg(node,status,recursion) { var n=0; if (typeof status == 'undefined') { while(d.aNodes[n].id != node && n'; } // dirty hack by alatar :) str += ''; // alatar end if (node.url) { str += ''; str += node.name; if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += ''; str += ''; if (node._hc) { str += '
'; str += this.addNode(node); str += '
'; } this.aIndent.pop(); return str; }; // Adds the empty and line icons dTree.prototype.indent = function(node, nodeId) { var str = ''; if (this.root.id != node.pid) { for (var n=0; n'; (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1); if (node._hc) { str += ''; } else str += ''; } return str; }; // Checks if a node has any children and if it is the last sibling dTree.prototype.setCS = function(node) { var lastId; for (var n=0; ncache_dir != '') { $cache_file = $this->cache_dir . '/rsscache_' . md5($rss_url); $timedif = @(time() - filemtime($cache_file)); if ($timedif < $this->cache_time) { // cached file is fresh enough, return cached array $result = unserialize(join('', file($cache_file))); // set 'cached' to 1 only if cached file is correct if ($result) $result['cached'] = 1; } else { // cached file is too old, create new $result = $this->Parse($rss_url); $serialized = serialize($result); if ($f = @fopen($cache_file, 'w')) { fwrite ($f, $serialized, strlen($serialized)); fclose($f); } if ($result) $result['cached'] = 0; } } // If CACHE DISABLED >> load and parse the file directly else { $result = $this->Parse($rss_url); if ($result) $result['cached'] = 0; } // return result return $result; } // ------------------------------------------------------------------- // Modification of preg_match(); return trimmed field with index 1 // from 'classic' preg_match() array output // ------------------------------------------------------------------- function my_preg_match ($pattern, $subject) { preg_match($pattern, $subject, $out); return trim($out[1]); } // ------------------------------------------------------------------- // Replace HTML entities &something; by real characters // ------------------------------------------------------------------- function unhtmlentities ($string) { $trans_tbl = get_html_translation_table (HTML_ENTITIES); $trans_tbl = array_flip ($trans_tbl); return strtr ($string, $trans_tbl); } // ------------------------------------------------------------------- // Encoding conversion function // ------------------------------------------------------------------- function MyConvertEncoding($in_charset, $out_charset, $string) { // if substitute_character if ($this->subs_char) { // Iconv() to UTF-8. mb_convert_encoding() to $out_charset $utf = iconv($in_charset, 'UTF-8', $string); mb_substitute_character($this->subs_char); return mb_convert_encoding ($utf, $out_charset, 'UTF-8'); } else { // Iconv() to $out_charset return iconv($in_charset, $out_charset, $string); } } // ------------------------------------------------------------------- // Parse() is private method used by Get() to load and parse RSS file. // Don't use Parse() in your scripts - use Get($rss_file) instead. // ------------------------------------------------------------------- function Parse ($rss_url) { include_once( "db.php" ); include_once( "functions.php" ); // Open and load RSS file $rss_content = fetchHTML( $rss_url ); if( empty( $rss_content ) ) { return false; } // Parse document encoding $result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content); // If code page is set convert character encoding to required if ($this->cp != '') $rss_content = $this->MyConvertEncoding($result['encoding'], $this->cp, $rss_content); // Parse CHANNEL info preg_match("'(.*?)'si", $rss_content, $out_channel); foreach($this->channeltags as $channeltag) { $temp = $this->my_preg_match("'<$channeltag.*?>(.*?)'si", $out_channel[1]); if ($temp != '') $result[$channeltag] = $temp; // Set only if not empty } // Parse TEXTINPUT info preg_match("']*[^/])>(.*?)'si", $rss_content, $out_textinfo); // This a little strange regexp means: // Look for tag with or without any attributes, but skip truncated version (it's not beginning tag) if ($out_textinfo[2]) { foreach($this->textinputtags as $textinputtag) { $temp = $this->my_preg_match("'<$textinputtag.*?>(.*?)'si", $out_textinfo[2]); if ($temp != '') $result['textinput_'.$textinputtag] = $temp; // Set only if not empty } } // Parse IMAGE info preg_match("'(.*?)'si", $rss_content, $out_imageinfo); if ($out_imageinfo[1]) { foreach($this->imagetags as $imagetag) { $temp = $this->my_preg_match("'<$imagetag.*?>(.*?)'si", $out_imageinfo[1]); if ($temp != '') $result['image_'.$imagetag] = $temp; // Set only if not empty } } // Parse ITEMS preg_match_all("'(.*?)'si", $rss_content, $items); $rss_items = $items[2]; $result['items_count'] = count($items[1]); $i = 0; $result['items'] = array(); // create array even if there are no items foreach($rss_items as $rss_item) { // Parse one item foreach($this->itemtags as $itemtag) { $temp = $this->my_preg_match("'<$itemtag.*?>(.*?)'si", $rss_item); if ($temp != '') $result[items][$i][$itemtag] = $temp; // Set only if not empty } // Strip HTML tags and other bullshit from DESCRIPTION (if description is presented) if ($result['items'][$i]['description'] && $this->strip_html == true) { $result['items'][$i]['description'] = strip_tags($this->unhtmlentities(strip_tags($result['items'][$i]['description']))); } // Item counter $i++; } return $result; } } ?>torrentflux_2.4/html/cookiehelp.php0000755000004100000410000000473211017367654017707 0ustar www-datawww-data
[ close ]

; position:relative; width:580; padding-left: 5px; padding-right: 5px; z-index:1; visibility: visible"> How to get Cookie information....


FireFox
  • Tools => Options
  • Cookies => View Cookies
  • Locate the site you want to get cookie information from.
  • Get the UID and PASS content fields


Internet Explorer
  • Tools => Internet Options
  • General => Settings => View Files
  • Locate cookie file for site (eg: Cookie:user@www.host.com/)
  • Open the file in a text editor
  • Grab the values below UID and PASS
The file will look something like this:
------

userZone
-660
www.host.com/
1600
2148152320
29840330
125611120
29766905
*
uid
123456 <----------------------------
www.host.com/
1536
3567643008
32111902
4197448416
29766904
*
pass
0j9i8h7g6f5e4d3c2b1a <--------------
www.host.com/
1536
3567643008
32111902
4197448416
29766904
*

--------

[ close ]

torrentflux_2.4/html/history.php0000755000004100000410000001331411017367654017262 0ustar www-datawww-dataqstr($cfg["constants"]["url_upload"])." OR action=".$db->qstr($cfg["constants"]["file_upload"])." ORDER BY time desc"; $result = $db->SelectLimit($sql, $offset, $min); while(list($user_id, $file, $time) = $result->FetchRow()) { $user_icon = "images/user_offline.gif"; if (IsOnline($user_id)) { $user_icon = "images/user.gif"; } $output .= ""; $output .= "".$user_id."  "; $output .= "
"; $output .= $file; $output .= "
"; $output .= "
".date(_DATETIMEFORMAT, $time)."
"; $output .= ""; $inx++; } if($inx == 0) { $output = "
-- "._NORECORDSFOUND." --
"; } $prev = ($min-$offset); if ($prev>=0) { $prevlink = ""; $prevlink .= "<<".$min." "._SHOWPREVIOUS."]  "; } $next=$min+$offset; if ($inx>=$offset) { $morelink = ""; $morelink .= "["._SHOWMORE.">>"; } echo ""; echo "
"; echo "
"; echo "  "._UPLOADACTIVITY." (".$cfg["days_to_keep"]." "._DAYS.")"; if(!empty($prevlink) && !empty($morelink)) echo "".$prevlink.$morelink."
"; elseif(!empty($prevlink)) echo "
".$prevlink."
"; elseif(!empty($morelink)) echo "".$morelink.""; else echo ""; echo ""; echo ""; echo "
"._USER."
"; echo "
"._FILE."
"; echo "
"._TIMESTAMP."
"; echo ""; echo $output; if(!empty($prevlink) || !empty($morelink)) { echo ""; echo "
"; echo $prevlink; echo ""; echo $morelink; echo "
"; echo ""; } echo ""; } //**************************************************************************** //**************************************************************************** //**************************************************************************** //**************************************************************************** // TRAFFIC CONTROLER if(!isset($op)) $op = ""; switch ($op) { default: if(!isset($min)) $min = 0; showIndex($min); break; } //**************************************************************************** //**************************************************************************** //**************************************************************************** //**************************************************************************** ?>torrentflux_2.4/html/searchEngines/0000755000004100000410000000000011026130124017575 5ustar www-datawww-datatorrentflux_2.4/html/searchEngines/GoogleFunctions.php0000755000004100000410000000632611017367654023451 0ustar www-datawww-dataGetOne( $sql ); showError( $db, $sql ); } if( !array_key_exists("port", $domain) ) { $domain["port"] = 80; } if (($rtnValue == "" && function_exists("curl_init")) || /*(strpos($rtnValue, "HTTP/1.1 302") > 0 &&*/ function_exists("curl_init"))//) { // Give CURL a Try $ch = curl_init(); if ($cookie != "") { curl_setopt($ch, CURLOPT_COOKIE, $cookie); } curl_setopt($ch, CURLOPT_PORT, $domain["port"]); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, FALSE); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE); curl_setopt($ch, CURLOPT_TIMEOUT, 5); $response = curl_exec($ch); curl_close($ch); $rtnValue = substr($response, strpos($response, "d8:")); $rtnValue = rtrim($rtnValue, "\r\n"); } return $rtnValue; } ?>torrentflux_2.4/html/searchEngines/PirateBayEngine.php0000755000004100000410000004065111026020275023332 0ustar www-datawww-datamainURL = "thepiratebay.org"; $this->altURL = "thepiratebay.org"; $this->mainTitle = "The PirateBay"; $this->engineName = "PirateBay"; $this->author = "kboy"; $this->version = "1.06"; $this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,1125.0.html"; $this->Initialize($cfg); } function populateMainCategories() { $this->mainCatalog["000"] = "Top100"; $this->mainCatalog["100"] = "Audio"; $this->mainCatalog["200"] = "Video"; $this->mainCatalog["300"] = "Applications"; $this->mainCatalog["400"] = "Games"; $this->mainCatalog["500"] = "Porn"; $this->mainCatalog["600"] = "Other"; } //---------------------------------------------------------------- // Function to Get Sub Categories function getSubCategories($mainGenre) { $output = array(); switch ($mainGenre) { case "100" : $output["101"] = "Music"; $output["102"] = "Audio books"; $output["103"] = "Sound clips"; $output["199"] = "Other"; break; case "200" : $output["201"] = "Movies"; $output["202"] = "Movies DVDR"; $output["203"] = "Music videos"; $output["204"] = "Movie clips"; $output["205"] = "TV shows"; $output["206"] = "Handheld"; $output["299"] = "Other"; break; case "300" : $output["301"] = "Windows"; $output["302"] = "Mac"; $output["303"] = "UNIX"; $output["304"] = "Handheld"; $output["399"] = "Other OS"; break; case "400" : $output["401"] = "PC"; $output["402"] = "Mac"; $output["403"] = "PS2"; $output["404"] = "XBOX"; $output["405"] = "Gamecube"; $output["406"] = "Handheld"; $output["499"] = "Other"; break; case "500" : $output["501"] = "Movies"; $output["502"] = "Movies DVDR"; $output["503"] = "Pictures"; $output["504"] = "Games"; $output["599"] = "Other"; break; case "600" : $output["601"] = "E-books"; $output["602"] = "Comics"; $output["603"] = "Pictures"; $output["604"] = "Covers"; $output["699"] = "Other"; break; } return $output; } //---------------------------------------------------------------- // Function to Make the Request (overriding base) function makeRequest($request) { return parent::makeRequest($request, false); } //---------------------------------------------------------------- // Function to get Latest.. function getLatest() { //recent.php //top100.php if ($_REQUEST["mainGenre"] == "000") { $request = "/top/all"; } else { if (array_key_exists("subGenre",$_REQUEST)) { $request = "/brwsearch.php?b=1&c=".$_REQUEST["subGenre"]; } elseif (array_key_exists("mainGenre",$_REQUEST)) { if ($_REQUEST["mainGenre"] == "000") { $request = "/top/all"; } else { $request = "/brwsearch.php?b=1&c=0&d=".$_REQUEST["mainGenre"]; } } else { $request = "/recent.php?orderby=se"; } if (!empty($this->pg)) { $request .= "&page=" . $this->pg; } } if ($this->makeRequest($request)) { return $this->parseResponse(); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to perform Search. function performSearch($searchTerm) { if (array_key_exists("subGenre",$_REQUEST)) { $request = "/brwsearch.php?b=1&c=".$_REQUEST["subGenre"]; } elseif (array_key_exists("mainGenre",$_REQUEST)) { $request = "/brwsearch.php?b=1&c=0&d=".$_REQUEST["mainGenre"]; } else { $request = "/search.php?orderby=".$searchTerm; } if(strlen($searchTerm) > 0) { $searchTerm = str_replace(" ", "+", $searchTerm); $request .= "&q=".$searchTerm; } $request .= "&audio=&video=&apps=&games=&porn=&other=&what=search&orderby="; if (!empty($this->pg)) { $request .= "&page=" . $this->pg; } if ($this->makeRequest($request)) { return $this->parseResponse(); } else { return $this->msg; } } //---------------------------------------------------------------- // Override the base to show custom table header. // Function to setup the table header function tableHeader() { $output = ""; $output .= "
\n"; $output .= "cfg["table_header_bg"]."\">"; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= "\n"; return $output; } //---------------------------------------------------------------- // Function to parse the response. function parseResponse() { $output = $this->tableHeader(); $thing = $this->htmlPage; // We got a response so display it. // Chop the front end off. if (is_integer(strpos($thing,"Your search did not match any torrents"))) { $this->msg = "Your search did not match any torrents"; } else { while (is_integer(strpos($thing,"results"))) { $thing = substr($thing,strpos($thing,"results")); $thing = substr($thing,strpos($thing,"")); $thing = substr($thing,strpos($thing,"")); $tmpList = substr($thing,0,strpos($thing,"
 Torrent Name  ("; $tmpURI = str_replace(array("?hideSeedless=yes","&hideSeedless=yes","?hideSeedless=no","&hideSeedless=no"),"",$_SERVER["REQUEST_URI"]); // Check to see if Question mark is there. if (strpos($tmpURI,'?')) { $tmpURI .= "&"; } else { $tmpURI .= "?"; } if($this->hideSeedless == "yes") { $output .= "Show Seedless"; } else { $output .= "Hide Seedless"; } $output .= ")Category  SizeDate AddedSeedsPeers
")); // ok so now we have the listing. $tmpListArr = split("",$tmpList); $bg = $this->cfg["bgLight"]; foreach($tmpListArr as $key =>$value) { $buildLine = true; if (strpos($value,"static.thepiratebay.org")) { $ts = new pBay($value); // Determine if we should build this output if (is_int(array_search($ts->CatName,$this->catFilter))) { $buildLine = false; } if ($this->hideSeedless == "yes") { if($ts->Seeds == "N/A" || $ts->Seeds == "0") { $buildLine = false; } } if (!empty($ts->torrentFile) && $buildLine) { $output .= trim($ts->BuildOutput($bg, $this->searchURL())); // ok switch colors. if ($bg == $this->cfg["bgLight"]) { $bg = $this->cfg["bgDark"]; } else { $bg = $this->cfg["bgLight"]; } } } elseif (strpos($value,"torrents.thepiratebay.org")) { $ts = new pBay($value); // Determine if we should build this output if (is_int(array_search($ts->CatName,$this->catFilter))) { $buildLine = false; } if ($this->hideSeedless == "yes") { if($ts->Seeds == "N/A" || $ts->Seeds == "0") { $buildLine = false; } } if (!empty($ts->torrentFile) && $buildLine) { $output .= trim($ts->BuildOutput($bg, $this->searchURL())); // ok switch colors. if ($bg == $this->cfg["bgLight"]) { $bg = $this->cfg["bgDark"]; } else { $bg = $this->cfg["bgLight"]; } } } } } $output .= ""; // is there paging at the bottom? if (strpos($thing, "&page=") != false) { // Yes, then lets grab it and display it! ;) $thing = substr($thing,strpos($thing,"")+1); $pages = substr($thing,0,strpos($thing,"")); if (strpos($pages,"prev") > 0) { $tmpStr = substr($pages,0,strpos($pages,"")+1); $pages = $tmpStr."Prev".$pages; if (strpos($pages,"next") > 0) { $pages = substr($pages,0,strpos($pages,""; } } elseif (strpos($pages,"next") > 0) { $pages = substr($pages,0,strpos($pages,""; } if(strpos($this->curRequest,"LATEST")) { $pages = str_replace("?",$this->searchURL()."&LATEST=1&",$pages); $pages = str_replace("/recent.php","",$pages); } else { $pages = str_replace("?",$this->searchURL()."&",$pages); $pages = str_replace("/search.php",'',$pages); } $pages = str_replace("page=","pg=",$pages); $pages = str_replace("d=","cat=",$pages); $pages = str_replace("c=","subGenre=",$pages); $pages = str_replace("q=","searchterm=", $pages); $pages = str_replace("orderby=","",$pages); $pages = str_replace("&&","&",$pages); $pages = str_replace("/brwsearch.php","",$pages); $output .= "
".$pages."
"; } } return $output; } } // This is a worker class that takes in a row in a table and parses it. class pBay { var $torrentName = ""; var $torrentDisplayName = ""; var $torrentFile = ""; var $torrentSize = ""; var $torrentStatus = ""; var $CatName = ""; var $CatId = ""; var $MainId = ""; var $MainCategory = ""; var $SubId = ""; var $SubCategory = ""; var $Seeds = ""; var $Peers = ""; var $Data = ""; var $dateAdded = ""; var $dwnldCount = ""; function pBay( $htmlLine ) { if (strlen($htmlLine) > 0) { $this->Data = $htmlLine; // Chunck up the row into columns. $tmpListArr = split("",$htmlLine); if(count($tmpListArr) > 6) { // Cat Id $tmpStr = substr($tmpListArr["0"],strpos($tmpListArr["0"],"c=")+2); $this->CatId = substr($tmpStr,0,strpos($tmpStr,"\"")); $this->CatName = $this->cleanLine($tmpListArr["0"]); // Cat Name if (strpos($this->CatName,">")) { $this->MainCategory = trim(substr($this->CatName,0,strpos($this->CatName,">"))); $this->MainId = substr($this->CatId,0,1) . "00"; $this->SubCategory = trim(substr($this->CatName,strpos($this->CatName,">")+1)); $this->SubId = $this->CatId; } else { $this->MainCategory = $this->CatName; $this->MainId = $this->CatId; } $this->torrentName = $this->cleanLine($tmpListArr["1"]); // TorrentName $this->dateAdded = $this->cleanLine($tmpListArr["2"]); // Date Added $tmpStr = ""; $tmpStr = substr($tmpListArr["3"],strpos($tmpListArr["3"],"href=\"")+strlen("href=\"")); // Download Link $this->torrentFile = substr($tmpStr,0,strpos($tmpStr,"\"")); $this->torrentSize = $this->cleanLine($tmpListArr["4"]); // Size of File $this->Seeds = $this->cleanLine($tmpListArr["5"]); // Seeds $this->Peers = $this->cleanLine($tmpListArr["6"]); // Peers if ($this->Peers == '') { $this->Peers = "N/A"; if (empty($this->Seeds)) $this->Seeds = "N/A"; } if ($this->Seeds == '') $this->Seeds = "N/A"; $this->torrentDisplayName = $this->torrentName; if(strlen($this->torrentDisplayName) > 50) { $this->torrentDisplayName = substr($this->torrentDisplayName,0,50)."..."; } } } } function cleanLine($stringIn,$tags='') { if(empty($tags)) return trim(str_replace(array(" "," ")," ",strip_tags($stringIn))); else return trim(str_replace(array(" "," ")," ",strip_tags($stringIn,$tags))); } //---------------------------------------------------------------- // Function to build output for the table. function BuildOutput($bg, $searchURL) { $output = "\n"; $output .= " torrentFile."\">torrentName."\" border=0>\n"; $output .= " torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName."\n"; if (strlen($this->MainCategory) > 1){ if (strlen($this->SubCategory) > 1){ $mainGenre = "MainId."\">".$this->MainCategory.""; $subGenre = "SubId."\">".$this->SubCategory.""; $genre = $mainGenre."-".$subGenre; }else{ $genre = "MainId."\">".$this->MainCategory.""; } }else{ $genre = "SubId."\">".$this->SubCategory.""; } $output .= " ". $genre ."\n"; $output .= " ".$this->torrentSize."\n"; $output .= " ".$this->dateAdded."\n"; $output .= " ".$this->Seeds."\n"; $output .= " ".$this->Peers."\n"; $output .= "\n"; return $output; } } ?> torrentflux_2.4/html/searchEngines/TorrentPortalEngine.php0000755000004100000410000003557211017367654024316 0ustar www-datawww-datamainURL = "torrentportal.com"; $this->altURL = "tp.searching.com"; $this->mainTitle = "TorrentPortal"; $this->engineName = "TorrentPortal"; $this->author = "kboy"; $this->version = "1.03"; $this->updateURL = "http://www.torrentflux.com/forum/index.php?topic=875.0.html"; $this->Initialize($cfg); } //---------------------------------------------------------------- // Function to Get Main Categories function populateMainCategories() { $this->mainCatalog["0"] = "(all types)"; $this->mainCatalog["1"] = "Games"; $this->mainCatalog["2"] = "Movies"; $this->mainCatalog["3"] = "TV"; $this->mainCatalog["4"] = "Videos"; $this->mainCatalog["5"] = "Apps"; $this->mainCatalog["6"] = "Anime"; $this->mainCatalog["7"] = "Audio"; $this->mainCatalog["8"] = "Comics"; $this->mainCatalog["9"] = "Unsorted"; $this->mainCatalog["10"] = "Porn"; } //---------------------------------------------------------------- // Function to Make the Request (overriding base) function makeRequest($request) { return parent::makeRequest($request, false); } //---------------------------------------------------------------- // Function to get Latest.. function getLatest() { $cat = getRequestVar('subGenre'); $count = getRequestVar('count'); if (empty($cat)) $cat = getRequestVar('cat'); if(empty($cat) && empty($this->pg)) { $request = "/new-torrents.php"; } else { $request = "/torrents.php"; } if(!empty($cat)) { if(strpos($request,"?")) { $request .= "&cat=".$cat; } else { $request .= "?cat=".$cat; } } if(!empty($count)) { if(strpos($request,"?")) { $request .= "&count=".$count; } else { $request .= "?count=".$count; } } if (!empty($this->pg)) { if(strpos($request,"?")) { $request .= "&page=" . $this->pg; } else { $request .= "?page=" . $this->pg; } } if ($this->makeRequest($request)) { return $this->parseResponse(); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to perform Search. function performSearch($searchTerm) { $searchTerm = str_replace(" ", "+", $searchTerm); $request = "/torrents-search.php?search=".$searchTerm; if(!empty($cat)) { $request .= "&cat=".$cat; } $count = getRequestVar('count'); if(!empty($count)) { $request .= "&count=".$count; } $onlyname = getRequestVar('onlyname'); if (empty($onlyname)) $onlyname = "no"; $request .= "&onlyname=".$onlyname; $incldead = getRequestVar('incldead'); if (empty($incldead)) $incldead = "0"; $request .= "&incldead=".$incldead; $request .= "&submit="; if (!empty($this->pg)) { $request .= "&page=" . $this->pg; } if ($this->makeRequest($request,true)) { return $this->parseResponse(); } else { return $this->msg; } } //---------------------------------------------------------------- // Override the base to show custom table header. // Function to setup the table header function tableHeader() { $output = ""; $output .= "
\n"; $output .= "cfg["table_header_bg"]."\">"; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= "\n"; return $output; } //---------------------------------------------------------------- // Function to parse the response. function parseResponse() { $output = $this->tableHeader(); $thing = $this->htmlPage; // We got a response so display it. // Chop the front end off. while (is_integer(strpos($thing,">Health"))) { $thing = substr($thing,strpos($thing,">Health")); $thing = substr($thing,strpos($thing,"")); // ok so now we have the listing. $tmpListArr = split("",$tmpList); $bg = $this->cfg["bgLight"]; foreach($tmpListArr as $key =>$value) { $buildLine = true; if (strpos($value,"/download/")) { $ts = new tPort($value); // Determine if we should build this output if (is_int(array_search($ts->MainCategory,$this->catFilter))) { $buildLine = false; } if ($this->hideSeedless == "yes") { if($ts->Seeds == "N/A" || $ts->Seeds == "0") { $buildLine = false; } } if (!empty($ts->torrentFile) && $buildLine) { $output .= trim($ts->BuildOutput($bg, $this->searchURL())); // ok switch colors. if ($bg == $this->cfg["bgLight"]) { $bg = $this->cfg["bgDark"]; } else { $bg = $this->cfg["bgLight"]; } } } } // set thing to end of this table. $thing = substr($thing,strpos($thing,"
 Torrent Name  ("; $tmpURI = str_replace(array("?hideSeedless=yes","&hideSeedless=yes","?hideSeedless=no","&hideSeedless=no"),"",$_SERVER["REQUEST_URI"]); // Check to see if Question mark is there. if (strpos($tmpURI,'?')) { $tmpURI .= "&"; } else { $tmpURI .= "?"; } if($this->hideSeedless == "yes") { $output .= "Show Seedless"; } else { $output .= "Hide Seedless"; } $output .= ")Category  SizeSeedsPeersHealth
")); } $output .= ""; // is there paging at the bottom? /*

1 - 25 | 26 - 50 | 51 - 75 | 76 - 87
<< Prev      Next >>

*/ if (strpos($thing, "page=") != false) { // Yes, then lets grab it and display it! ;) $thing = substr($thing,strpos($thing,"

")+strlen("

")); $pages = substr($thing,0,strpos($thing,"

")); //$output .= $pages; if(strpos($this->curRequest,"LATEST")) { if(strpos($pages,"cat=")) { $pages = str_replace("page=","pg=",str_replace("?",$this->searchURL()."&LATEST=1&",$pages)); } else { $pages = str_replace("?page=",$this->searchURL()."&LATEST=1&pg=",$pages); } } else { if(strpos($pages,"\"?")) { $pages = str_replace("?",$this->searchURL()."&",$pages); } if(strpos($pages,"?search=")) { $pages = str_replace("?search=",$this->searchURL()."&searchterm=",$pages); } if(strpos($pages,"search=")) { $pages = str_replace("search=","searchterm=",$pages); } } if(strpos($pages,"torrents.php?")) { $pages = str_replace("torrents.php?",$this->searchURL()."&",$pages); } if(strpos($pages,"torrents-search.php?")) { $pages = str_replace("torrents-search.php?",$this->searchURL()."&",$pages); } $pages = str_replace("page=","pg=",$pages); $output .= "
".$pages."
"; } return $output; } } // This is a worker class that takes in a row in a table and parses it. class tPort { var $torrentName = ""; var $torrentDisplayName = ""; var $torrentFile = ""; var $torrentSize = ""; var $torrentStatus = ""; var $MainId = ""; var $MainCategory = ""; var $fileCount = ""; var $Seeds = ""; var $Peers = ""; var $Data = ""; var $torrentRating = ""; function tPort( $htmlLine ) { if (strlen($htmlLine) > 0) { $this->Data = $htmlLine; // Cleanup any bugs in the HTML $htmlLine = eregi_replace("\n",'',$htmlLine); // Chunck up the row into columns. $tmpListArr = split(" 8) { $tmpStr = substr($tmpListArr["1"],strpos($tmpListArr["1"],"href=\"")+strlen("href=\"")); // Download Link $this->torrentFile = "http://www.torrentportal.com".substr($tmpStr,0,strpos($tmpStr,"\"")); $this->MainCategory = $this->cleanLine(""); // MainCategory $tmpStr = substr($tmpListArr["2"],strpos($tmpListArr["2"],"cat=")+strlen("cat=")); // Main Id $this->MainId = substr($tmpStr,0,strpos($tmpStr,"\"")); $this->torrentName = $this->cleanLine(""); // TorrentName $this->torrentRating = $this->cleanLine(""); // Rating $this->torrentSize = $this->cleanLine(""); // Size of File $this->Seeds = $this->cleanLine(""); // Seeds $this->Peers = $this->cleanLine(""); // Leech $tmpStr = substr($tmpListArr["9"],strpos($tmpListArr["9"],"Health ")+strlen("Health ")); // Health $tmpStr = substr($tmpStr,0,strpos($tmpStr,"\"")); $tmpArr = split("/",$tmpStr); if (count($tmpArr) > 1 && $tmpArr["1"] > 0 ) { $this->torrentStatus = ($tmpArr["0"] / $tmpArr["1"]) * 100 . "%"; } else { $this->torrentStatus = "0%"; } if ($this->Peers == '') { $this->Peers = "N/A"; if (empty($this->Seeds)) $this->Seeds = "N/A"; } if ($this->Seeds == '') $this->Seeds = "N/A"; $this->torrentDisplayName = $this->torrentName; if(strlen($this->torrentDisplayName) > 50) { $this->torrentDisplayName = substr($this->torrentDisplayName,0,50)."..."; } } } } function cleanLine($stringIn,$tags='') { if(empty($tags)) return trim(str_replace(array(" "," ")," ",strip_tags($stringIn))); else return trim(str_replace(array(" "," ")," ",strip_tags($stringIn,$tags))); } //---------------------------------------------------------------- // Function to build output for the table. function BuildOutput($bg, $searchURL = '') { $output = "\n"; $output .= " torrentFile."\">torrentName."\" border=0>\n"; $output .= " torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName."\n"; if (strlen($this->MainCategory) > 1){ $genre = "MainId."\">".$this->MainCategory.""; }else{ $genre = ""; } $output .= " ". $genre ."\n"; $output .= " ".$this->torrentSize."\n"; $output .= " ".$this->Seeds."\n"; $output .= " ".$this->Peers."\n"; $output .= " ".$this->torrentStatus."\n"; $output .= "\n"; return $output; } } ?> torrentflux_2.4/html/searchEngines/SearchEngineBase.php0000755000004100000410000002413011017424431023446 0ustar www-datawww-datacfg = unserialize($cfg); $this->pg = getRequestVar('pg'); if (empty($this->altURL)) $this->altURL = $this->mainURL; if (empty($this->cfg)) { $this->msg = "Config not passed"; $this->initialized = false; return; } $this->catFilterName = $this->engineName."GenreFilter"; $this->mainCatalogName = $this->engineName."_catalog"; if (array_key_exists('hideSeedless',$_SESSION)) $this->hideSeedless = $_SESSION['hideSeedless']; if (array_key_exists($this->catFilterName,$this->cfg)) $this->catFilter = $this->cfg[$this->catFilterName]; else $this->catFilter = array(); if (array_key_exists($this->mainCatalogName,$this->cfg)) $this->mainCatalog = $this->cfg[$this->mainCatalogName]; else $this->populateMainCategories(); if ( $this->getConnection() ) $rtnValue = true; $this->closeConnection(); // in PHP 5 use //$this->curRequest = http_build_query($_REQUEST); $this->curRequest = $this->http_query_builder($_REQUEST); $this->initialized = $rtnValue; } //------------------------------------------------------------------ // This is for backward compatibility. function http_query_builder( $formdata, $numeric_prefix = null, $key = null ) { $res = array(); foreach ((array)$formdata as $k=>$v) { $tmp_key = urlencode(is_int($k) ? $numeric_prefix.$k : $k); if ($key) $tmp_key = $key.'['.$tmp_key.']'; if ( is_array($v) || is_object($v) ) { $res[] = $this->http_query_builder($v, null, $tmp_key); } else { $res[] = $tmp_key."=".urlencode($v); } } $separator = ini_get('arg_separator.output'); return implode($separator, $res); } //---------------------------------------------------------------- // Function to populate the mainCatalog function populateMainCategories() { return; } //---------------------------------------------------------------- // Function to Get Sub Categories function getSubCategories($mainGenre) { return array(); } //---------------------------------------------------------------- // Function to test Connection. function getConnection() { // Try to connect if (!$this->fp = @fsockopen ($this->mainURL, 80, $errno, $errstr, 30)) { // Error Connecting $this->msg = "Error connecting to ".$this->mainURL."!"; return false; } return true; } //---------------------------------------------------------------- // Function to Close Connection. function closeConnection() { if($this->fp) { fclose($this->fp); } } //---------------------------------------------------------------- // Function to return the URL needed by tf function searchURL() { return "torrentSearch.php?searchEngine=".$this->engineName; } //---------------------------------------------------------------- // Function to Make the GetRequest function makeRequest($request, $useAlt = false) { $rtnVal = false; if (isset($_SESSION['lastOutBoundURI'])) { $refererURI = $_SESSION['lastOutBoundURI']; } else { $refererURI = "http://".$this->mainURL; } if ($useAlt) { $request = "http://".$this->altURL. $request; } else { $request = "http://".$this->mainURL. $request; } $this->htmlPage = FetchHTML( $request, $refererURI ); $rtnVal = true; return $rtnVal; } //---------------------------------------------------------------- // Function to Get Main Categories function getMainCategories($filtered = true) { $output = array(); foreach ($this->mainCatalog as $mainId => $mainName) { if ($filtered) { // see if this is filtered out. if (!(@in_array($mainId, $this->catFilter))) { $output[$mainId] = $mainName; } } else { $output[$mainId] = $mainName; } } return $output; } //---------------------------------------------------------------- // Function to Get Main Category Name function GetMainCatName($mainGenre) { $mainGenreName = ''; foreach ($this->getMainCategories() as $mainId => $mainName) { if ($mainId == $mainGenre) { $mainGenreName = $mainName; } } return $mainGenreName; } //---------------------------------------------------------------- // Function to setup the table header function tableHeader() { $output = ""; $output .= "
\n"; $output .= "cfg["table_header_bg"]."\">"; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= " "; $output .= "\n"; return $output; } } ?> torrentflux_2.4/html/searchEngines/isoHuntEngine.php0000755000004100000410000003664511017367654023132 0ustar www-datawww-datamainURL = "isohunt.com"; $this->altURL = "isohunt.com"; $this->mainTitle = "isoHunt"; $this->engineName = "isoHunt"; $this->author = "kboy"; $this->version = "1.05"; $this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,878.0.html"; $this->Initialize($cfg); } //---------------------------------------------------------------- // Function to Make the Request (overriding base) function makeRequest($request) { return parent::makeRequest($request, true); } //---------------------------------------------------------------- // Function to get Latest.. function getLatest() { $request = "/latest.php?mode=bt"; if (!empty($this->pg)) { $request .= "&pg=" . $this->pg; } if ($this->makeRequest($request)) { return $this->parseResponse(true); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to perform Search. function performSearch($searchTerm) { // This is what isohunt is looking for in a request. // http://isohunt.com/torrents.php?ihq=test&ext=&op=and // create the request string. $searchTerm = str_replace(" ", "+", $searchTerm); $request = "/torrents?ihq=".$searchTerm; //$request .= "&ext=&op=and"; if (!empty($this->pg)) { $request .= "&ihs1=18&iho1=d&iht=-1&ihp=" . $this->pg; } // make the request if successful call the parse routine. if ($this->makeRequest($request)) { return $this->parseResponse(false); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to parse the response. function parseResponse($latest = true) { $output = $this->tableHeader(); $thing = $this->htmlPage; // Strip out those Nasty Iframes. $thing = eregi_replace("
 Torrent Name  ("; $tmpURI = str_replace(array("?hideSeedless=yes","&hideSeedless=yes","?hideSeedless=no","&hideSeedless=no"),"",$_SERVER["REQUEST_URI"]); // Check to see if Question mark is there. if (strpos($tmpURI,'?')) { $tmpURI .= "&"; } else { $tmpURI .= "?"; } if($this->hideSeedless == "yes") { $output .= "Show Seedless"; } else { $output .= "Hide Seedless"; } $output .= ")Category  SizeSeedsPeers
",'',$thing); // We got a response so display it. // Chop the front end off. if ($latest) { $start = strrpos($thing, "New torrents on isoHunt"); } else { $start = strrpos($thing, "isoHunt Rank"); } $thing = substr($thing, $start, strlen($thing) - $start); if ($latest) { $end = strrpos($thing, "adclick"); } else { $end = strrpos($thing, "»"); } $thing = substr($thing, 0, $end); $tmpList = $thing; //echo $tmpList; if (strpos($tmpList,"/download/") || strpos($tmpList,"torrent_details")) { // ok so now we have the listing. $tmpListArr = split("",$tmpList); array_pop($tmpListArr); $bg = $this->cfg["bgLight"]; foreach($tmpListArr as $key =>$value) { //echo $value; $buildLine = true; if (strpos($value,"/download/") || strpos($value,"torrent_details")) { $ts = new isoHunt($value,$latest); // Determine if we should build this output if (is_int(array_search($ts->CatName,$this->catFilter))) { $buildLine = false; } if ($this->hideSeedless == "yes") { if($ts->Seeds == "N/A" || $ts->Seeds == "0") { $buildLine = false; } } if (!empty($ts->torrentFile) && $buildLine) { $output .= trim($ts->BuildOutput($bg)); // ok switch colors. if ($bg == $this->cfg["bgLight"]) { $bg = $this->cfg["bgDark"]; } else { $bg = $this->cfg["bgLight"]; } } } } // set thing to end of this table. $thing = substr($thing,strpos($thing,"")); if (!is_integer(strpos($thing,"name=ihLogin"))) { $thing = ""; } } $output .= ""; // is there paging at the bottom? if (strpos($this->htmlPage, "") != false) { // Yes, then lets grab it and display it! ;) $thing = substr($this->htmlPage,strpos($this->htmlPage,"
")+strlen("
")); $pages = substr($thing,0,strpos($thing,"
")); $pages = str_replace("  ",'',strip_tags($pages,"")); $tmpPageArr = split("",$pages); array_pop($tmpPageArr); $pagesout = ''; foreach($tmpPageArr as $key => $value) { $value .= "  "; $tmpVal = substr($value,strpos($value,"/torrents/"),strpos($value,"\>")-1); $pgNum = substr($tmpVal,strpos($tmpVal,"ihp=")+strlen("ihp=")); $pagesout .= str_replace($tmpVal,"XXXURLXXX".$pgNum,$value); } if(strpos($this->curRequest,"LATEST")) { $pages = str_replace("XXXURLXXX",$this->searchURL()."&LATEST=1&pg=",$pagesout); } else { $pages = str_replace("XXXURLXXX",$this->searchURL()."&searchterm=".$_REQUEST["searchterm"]."&pg=",$pagesout); } $pages = strip_tags($pages,""); $output .= "
".$pages."
"; } return $output; } } // This is a worker class that takes in a row in a table and parses it. class isoHunt { var $torrentName = ""; var $torrentDisplayName = ""; var $torrentFile = ""; var $torrentSize = ""; var $torrentStatus = ""; var $CatId = ""; var $CatName = ""; var $fileCount = ""; var $Seeds = ""; var $Peers = ""; var $Data = ""; var $dateAdded = ""; var $dwnldCount = ""; function isoHunt( $htmlLine , $latest = true) { if (strlen($htmlLine) > 0) { $this->Data = $htmlLine; // Fix messed up end td's once in a while. $htmlLine = eregi_replace("<(.)*1ff8(.)*/td>",'',$htmlLine); // Chunck up the row into columns. $tmpListArr = split("",$htmlLine); array_pop($tmpListArr); //Age Type Torrent Names MB F S L D if(count($tmpListArr) > 5) { if ($latest) { // Latest Request // if(strpos($tmpListArr["3"],"[DL]")) { //$tmpListArr["1"] = $this->cleanLine($tmpListArr["1"]); // Age $this->CatName = $this->cleanLine($tmpListArr["2"]); // Type $tmpStr = $tmpListArr["3"]; // TorrentName and Download Link // move to the [DL] area. and remove [REL] line $tmpStr = substr($tmpStr,strpos($tmpStr,"[DL]")+strlen("[DL]"), strpos($tmpStr,"[REL]")); $tmpStr = substr($tmpStr,strpos($tmpStr,"href=\"")+strlen("href=\"")); // Download Link $this->torrentFile = "http://isohunt.com".substr($tmpStr,0,strpos($tmpStr,"\"")); $tmpStr = substr($tmpStr,strpos($tmpStr,"title=\"")+strlen("title=\"")); $tmpStr = substr($tmpStr,0,strpos($tmpStr,"\"")); $tmpStr = substr($tmpStr,strpos($tmpStr,'\'')); $this->torrentName = str_replace("'",'',$tmpStr); $this->torrentSize = $this->cleanLine($tmpListArr["4"]); // MB $this->fileCount = $this->cleanLine($tmpListArr["5"]); // Files $this->Seeds = $this->cleanLine($tmpListArr["6"]); // Seeds $this->Peers = $this->cleanLine($tmpListArr["7"]); // Peers / Leechers $this->dwnldCount = $this->cleanLine($tmpListArr["8"]); // Download Count } else { $this->CatName = $this->cleanLine($tmpListArr["1"]); // Type $tmpStr = $tmpListArr["0"]; // TorrentName and Download Link $tmpStr = substr($tmpStr,strpos($tmpStr,"torrent_details/")); $this->torrentFile = "http://isohunt.com/download/".substr($tmpStr,0,strpos($tmpStr,"'")); $this->torrentName = $this->cleanLine($tmpListArr["2"]); $this->torrentSize = $this->cleanLine($tmpListArr["3"]); // MB $this->fileCount = $this->cleanLine($tmpListArr["4"]); // Files $this->Seeds = $this->cleanLine($tmpListArr["5"]); // Seeds $this->Peers = $this->cleanLine($tmpListArr["6"]); // Peers / Leechers $this->dwnldCount = $this->cleanLine($tmpListArr["7"]); // Download Count } } else { // Search Request // if(strpos($tmpListArr["2"],"[DL]")) { $this->CatName = $this->cleanLine($tmpListArr["0"]); // Type //$tmpListArr["1"] = $this->cleanLine($tmpListArr["1"]); // Age $tmpStr = $tmpListArr["2"]; // TorrentName and Download Link // move to the [DL] area. and remove [REL] line $tmpStr = substr($tmpStr,strpos($tmpStr,"[DL]")+strlen("[DL]"), strpos($tmpStr,"[REL]")); $tmpStr = substr($tmpStr,strpos($tmpStr,"href=\"")+strlen("href=\"")); // Download Link $this->torrentFile = "http://isohunt.com".substr($tmpStr,0,strpos($tmpStr,"\"")); $tmpStr = substr($tmpStr,strpos($tmpStr,"title=\"")+strlen("title=\"")); $tmpStr = substr($tmpStr,0,strpos($tmpStr,"\"")); $tmpStr = substr($tmpStr,strpos($tmpStr,'\'')); $this->torrentName = str_replace(array("'","Download .torrent here: "),'',$tmpStr); } else { $tmpStr = $tmpListArr["0"]; // Download ID and Type $this->CatName = $this->cleanLine($tmpStr); // Download ID and Type $tmpStr = substr($tmpStr,strpos($tmpStr,"torrent_details/")+strlen("torrent_details/")); $this->torrentFile = "http://isohunt.com/download/".substr($tmpStr,0,strpos($tmpStr,",")-1); //$tmpListArr["1"] = $this->cleanLine($tmpListArr["1"]); // Age $this->torrentName = $this->cleanLine($tmpListArr["2"]); } $this->torrentSize = $this->cleanLine($tmpListArr["3"]); // MB $this->Seeds = $this->cleanLine($tmpListArr["4"]); // Seeds $this->Peers = $this->cleanLine($tmpListArr["5"]); // Peers / Leechers $this->torrentDisplayName = $this->torrentName; } if ($this->Peers == '') { $this->Peers = "N/A"; if (empty($this->Seeds)) $this->Seeds = "N/A"; } if ($this->Seeds == '') $this->Seeds = "N/A"; $this->torrentDisplayName = str_replace(".torrent",'',$this->torrentName); if(strlen($this->torrentDisplayName) > 50) { $this->torrentDisplayName = substr($this->torrentDisplayName,0,50)."..."; } } } } function cleanLine($stringIn,$tags='') { if(empty($tags)) return trim(str_replace(array(" "," ")," ",strip_tags($stringIn))); else return trim(str_replace(array(" "," ")," ",strip_tags($stringIn,$tags))); } function dumpArray($arrIn) { foreach($arrIn as $key => $value) { echo "\nkey(".$key.")"."value(".$value.")"; } } //---------------------------------------------------------------- // Function to build output for the table. function BuildOutput($bg) { $output = "\n"; $output .= "
torrentFile."\">torrentName."\" border=0>\n"; $output .= " torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName."\n"; $output .= " ". $this->CatName ."\n"; $output .= " ".$this->torrentSize."\n"; $output .= " ".$this->Seeds."\n"; $output .= " ".$this->Peers."\n"; $output .= "\n"; return $output; } } ?> torrentflux_2.4/html/searchEngines/TorrentBoxEngine.php0000755000004100000410000003150211017367654023572 0ustar www-datawww-datamainURL = "torrentbox.com"; $this->altURL = "torrentbox.com"; $this->mainTitle = "TorrentBox"; $this->engineName = "TorrentBox"; $this->author = "kboy"; $this->version = "1.04"; $this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,876.0.html"; $this->Initialize($cfg); } function populateMainCategories() { $this->mainCatalog["0"] = "(all types)"; $this->mainCatalog["9"] = "Anime"; $this->mainCatalog["90"] = "Apps"; $this->mainCatalog["11"] = "Books"; $this->mainCatalog["10"] = "Comics"; $this->mainCatalog["91"] = "Games"; $this->mainCatalog["6"] = "Misc"; $this->mainCatalog["92"] = "Movies"; $this->mainCatalog["93"] = "Music"; $this->mainCatalog["8"] = "Pics"; $this->mainCatalog["3"] = "TV"; $this->mainCatalog["13"] = "Videos"; } //---------------------------------------------------------------- // Function to Get Sub Categories function getSubCategories($mainGenre) { $output = array(); switch ($mainGenre) { case "90" : $output["51"] = "Linux"; $output["52"] = "Mac"; $output["50"] = "Windows"; $output["5"] = "Misc"; break; case "91" : $output["4"] = "Misc"; $output["41"] = "PC"; $output["42"] = "PS2"; $output["43"] = "PSX"; $output["44"] = "ROMS"; $output["40"] = "Xbox"; break; case "92" : $output["14"] = "DVD-R"; $output["100"] = "Action"; $output["101"] = "Adventure"; $output["102"] = "Animation"; $output["103"] = "Comedy"; $output["104"] = "Drama"; $output["105"] = "Documentary"; $output["106"] = "Horror"; $output["107"] = "Sci-Fi"; $output["1"] = "Misc"; break; case "93" : $output["15"] = "Alternative"; $output["16"] = "Blues"; $output["17"] = "Electronic"; $output["18"] = "Pop"; $output["19"] = "Rap"; $output["20"] = "Rock"; $output["21"] = "Reggae"; $output["22"] = "Jazz"; $output["23"] = "Dance"; $output["24"] = "Christian"; $output["25"] = "Spanish"; $output["2"] = "Misc"; break; } return $output; } //---------------------------------------------------------------- // Function to Make the Request (overriding base) function makeRequest($request) { return parent::makeRequest($request, false); } //---------------------------------------------------------------- // Function to get Latest.. function getLatest() { $cat = getRequestVar('subGenre'); if (empty($cat)) $cat = getRequestVar('cat'); $request = "/torrents-browse.php"; if(!empty($cat)) { if(strpos($request,"?")) { $request .= "&cat=".$cat; } else { $request .= "?cat=".$cat; } } if (!empty($this->pg)) { if(strpos($request,"?")) { $request .= "&page=" . $this->pg; } else { $request .= "?page=" . $this->pg; } } if ($this->makeRequest($request)) { return $this->parseResponse(); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to perform Search. function performSearch($searchTerm) { $searchTerm = str_replace(" ", "+", $searchTerm); $request = "/torrents-search.php?search=".$searchTerm; if(!empty($cat)) { $request .= "&cat=".$cat; } $onlyname = getRequestVar('onlyname'); if (empty($onlyname)) $onlyname = "no"; $request .= "&onlyname=".$onlyname; $incldead = getRequestVar('incldead'); if (empty($incldead)) $incldead = "0"; $request .= "&incldead=".$incldead; $request .= "&submit="; if (!empty($this->pg)) { $request .= "&page=" . $this->pg; } if ($this->makeRequest($request)) { return $this->parseResponse(); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to parse the response. function parseResponse() { $output = $this->tableHeader(); $thing = $this->htmlPage; // We got a response so display it. // Chop the front end off. while (is_integer(strpos($thing,">Uploader<"))) { $thing = substr($thing,strpos($thing,">Uploader<")); $thing = substr($thing,strpos($thing,"")); // ok so now we have the listing. $tmpListArr = split("",$tmpList); $bg = $this->cfg["bgLight"]; foreach($tmpListArr as $key =>$value) { $buildLine = true; if (strpos($value,".torrent")) { $ts = new tBox($value); // Determine if we should build this output if (is_int(array_search($ts->CatName,$this->catFilter))) { $buildLine = false; } if ($this->hideSeedless == "yes") { if($ts->Seeds == "N/A" || $ts->Seeds == "0") { $buildLine = false; } } if (!empty($ts->torrentFile) && $buildLine) { $output .= trim($ts->BuildOutput($bg)); // ok switch colors. if ($bg == $this->cfg["bgLight"]) { $bg = $this->cfg["bgDark"]; } else { $bg = $this->cfg["bgLight"]; } } } } // set thing to end of this table. $thing = substr($thing,strpos($thing,"")); } $output .= ""; //http://www.torrentbox.com/torrents-browse.php?cat=4&page=2 // is there paging at the bottom? if (strpos($thing, "") != false) { // Yes, then lets grab it and display it! ;) $thing = substr($thing,strpos($thing,"")+strlen("")); $pages = substr($thing,0,strpos($thing,"")); $pages = str_replace("http://www.torrentbox.com","",$pages); $pages = str_replace("page=","pg=",$pages); $pages = str_replace("search=","searchterm=",$pages); if(strpos($this->curRequest,"LATEST")) { $pages = str_replace("/torrents-browse.php?",$this->searchURL()."&LATEST=1&",$pages); } else { $pages = str_replace("/torrents-browse.php?",$this->searchURL()."&",$pages); } $output = "
".$pages."
"; } return $output; } } // This is a worker class that takes in a row in a table and parses it. class tBox { var $torrentName = ""; var $torrentDisplayName = ""; var $torrentFile = ""; var $torrentSize = ""; var $torrentStatus = ""; var $CatId = ""; var $CatName = ""; var $fileCount = ""; var $Seeds = ""; var $Peers = ""; var $Data = ""; var $dateAdded = ""; var $dwnldCount = ""; function tBox( $htmlLine ) { if (strlen($htmlLine) > 0) { $this->Data = $htmlLine; // Fix messed up end td's once in a while. $htmlLine = eregi_replace("<(.)*1ff8(.)*/td>",'',$htmlLine); $htmlLine = eregi_replace("1ff8",'',$htmlLine); // Chunck up the row into columns. $tmpListArr = split("",$htmlLine); if(count($tmpListArr) > 8) { $this->CatName = $this->cleanLine($tmpListArr["0"]); // Cat Name if (strpos($this->CatName,">")) { $this->CatName = trim(substr($this->CatName,strpos($this->CatName,">")+1)); } $this->torrentName = $this->cleanLine($tmpListArr["1"]); // TorrentName $tmpStr = $tmpListArr["2"]; $start = strpos($tmpStr, "href"); $tmpStr = substr($tmpStr,$start + 6, strlen($tmpStr)-$start-6); $end = strpos($tmpStr, ".torrent"); $tmpStr = substr($tmpStr, 0, $end + 8); //the DL link $this->torrentFile = "http://www.torrentbox.com".$tmpStr; $this->dateAdded = $this->cleanLine($tmpListArr["4"]); // Date Added $this->torrentSize = $this->cleanLine($tmpListArr["5"]); // Size of File $this->dwnldCount = $this->cleanLine($tmpListArr["6"]); // Download Count $this->Seeds = $this->cleanLine($tmpListArr["7"]); // Seeds $this->Peers = $this->cleanLine($tmpListArr["8"]); // Peers //$tmpListArr["9"] = $this->cleanLine($tmpListArr["9"]); // Person who Uploaded it. if ($this->Peers == '') { $this->Peers = "N/A"; if (empty($this->Seeds)) $this->Seeds = "N/A"; } if ($this->Seeds == '') $this->Seeds = "N/A"; $this->torrentDisplayName = $this->torrentName; if(strlen($this->torrentDisplayName) > 50) { $this->torrentDisplayName = substr($this->torrentDisplayName,0,50)."..."; } } } } function cleanLine($stringIn,$tags='') { if(empty($tags)) return trim(str_replace(array(" "," ")," ",strip_tags($stringIn))); else return trim(str_replace(array(" "," ")," ",strip_tags($stringIn,$tags))); } //---------------------------------------------------------------- // Function to build output for the table. function BuildOutput($bg) { $output = "\n"; $output .= " torrentFile."\">torrentName."\" border=0>\n"; $output .= " torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName."\n"; $output .= " ". $this->CatName ."\n"; $output .= " ".$this->torrentSize."\n"; $output .= " ".$this->Seeds."\n"; $output .= " ".$this->Peers."\n"; $output .= "\n"; return $output; } } ?> torrentflux_2.4/html/searchEngines/mininovaEngine.php0000755000004100000410000002406411017367654023311 0ustar www-datawww-datamainURL = "mininova.org"; $this->altURL = "mininova.org"; $this->mainTitle = "mininova"; $this->engineName = "mininova"; $this->author = "sloan"; $this->version = "1.01"; $this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,1501.0.html"; $this->Initialize($cfg); } function populateMainCategories() { $this->mainCatalog[0] = "(all types)"; $this->mainCatalog[1] = "Anime"; $this->mainCatalog[2] = "Books"; $this->mainCatalog[3] = "Games"; $this->mainCatalog[4] = "Movies"; $this->mainCatalog[5] = "Music"; $this->mainCatalog[6] = "Other"; $this->mainCatalog[7] = "Pictures"; $this->mainCatalog[8] = "Software"; $this->mainCatalog[9] = "TV Shows"; } //---------------------------------------------------------------- // Function to Make the Request (overriding base) function makeRequest($request) { return parent::makeRequest($request, true); } //---------------------------------------------------------------- // Function to get Latest.. function getLatest() { $request = "/today/"; if ($this->makeRequest($request)) { return $this->parseResponse(true); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to perform Search. function performSearch($searchTerm) { // This is what mininova is looking for in a request. // http://www.mininova.org/search/?search=test // create the request string. $searchTerm = str_replace(" ", "+", $searchTerm); $request = "/search/?search=".$searchTerm; // make the request if successful call the parse routine. if ($this->makeRequest($request)) { return $this->parseResponse(false); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to parse the response. function parseResponse($latest = true) { $output = $this->tableHeader(); $thing = $this->htmlPage; // Strip out those Nasty Iframes. $thing = eregi_replace("",'',$thing); // We got a response so display it. // Chop the front end off. $thing = substr($thing,strpos($thing,">Leechers<")); $thing = substr($thing,strpos($thing,"")); // ok so now we have the listing. $tmpListArr = split("",$tmpList); $bg = $this->cfg["bgLight"]; foreach($tmpListArr as $key =>$value) { //echo $value; $buildLine = true; if (strpos($value,'catFilter); print_r($ts->CatName); print_r("-->"); if ($this->hideSeedless == "yes") { if($ts->Seeds == "---") { $buildLine = false; } } if (!empty($ts->torrentFile) && $buildLine) { $output .= trim($ts->BuildOutput($bg)); // ok switch colors. if ($bg == $this->cfg["bgLight"]) { $bg = $this->cfg["bgDark"]; } else { $bg = $this->cfg["bgLight"]; } } } } // set thing to end of this table. $thing = substr($thing,strpos($thing,"")); $output .= ""; return $output; } } // This is a worker class that takes in a row in a table and parses it. class mininova { var $torrentName = ""; var $torrentDisplayName = ""; var $torrentFile = ""; var $torrentSize = ""; var $torrentStatus = ""; var $CatId = ""; var $CatName = ""; var $fileCount = ""; var $Seeds = ""; var $Peers = ""; var $Data = ""; var $dateAdded = ""; var $dwnldCount = ""; function mininova( $htmlLine , $latest = true) { if (strlen($htmlLine) > 0) { $this->Data = $htmlLine; // Chunck up the row into columns. $tmpListArr = split("",$htmlLine); array_pop($tmpListArr); //print_r($tmpListArr); //Age Type Torrent Names MB S L if(count($tmpListArr) > 4) { if ($latest) { // Latest Request // $this->CatName = $this->cleanLine($tmpListArr["1"]); // Type $tmpStr = substr($tmpListArr["2"],strpos($tmpListArr["2"],"/tor/")+5); $this->torrentFile = "http://www.mininova.org/get/".substr($tmpStr,0,strpos($tmpStr,'">')); $this->torrentName = $this->cleanLine($tmpListArr["2"]); // Name $this->torrentSize = $this->cleanLine($tmpListArr["3"]); // MB $this->Seeds = $this->cleanLine($tmpListArr["4"]); // Seeds $this->Peers = $this->cleanLine($tmpListArr["5"]); // Leechers } else { // Search Request // $this->CatName = $this->cleanLine($tmpListArr["1"]); // Type $tmpStr = substr($tmpListArr["2"],strpos($tmpListArr["2"],"/tor/")+5); $this->torrentFile = "http://www.mininova.org/get/".substr($tmpStr,0,strpos($tmpStr,'">')); $this->torrentName = $this->cleanLine($tmpListArr["2"]); // Name $this->torrentSize = $this->cleanLine($tmpListArr["3"]); // MB $this->Seeds = $this->cleanLine($tmpListArr["4"]); // Seeds $this->Peers = $this->cleanLine($tmpListArr["5"]); // Leechers $this->torrentDisplayName = $this->torrentName; } if ($this->Peers == '') { $this->Peers = "N/A"; if (empty($this->Seeds)) $this->Seeds = "N/A"; } if ($this->Seeds == '') $this->Seeds = "N/A"; $this->torrentDisplayName = str_replace(".torrent",'',$this->torrentName); if(strlen($this->torrentDisplayName) > 50) { $this->torrentDisplayName = substr($this->torrentDisplayName,0,50)."..."; } } } } function cleanLine($stringIn,$tags='') { if(empty($tags)) return trim(str_replace(array(" "," ")," ",strip_tags($stringIn))); else return trim(str_replace(array(" "," ")," ",strip_tags($stringIn,$tags))); } function dumpArray($arrIn) { foreach($arrIn as $key => $value) { echo "\nkey(".$key.")"."value(".$value.")"; } } //---------------------------------------------------------------- // Function to build output for the table. function BuildOutput($bg) { $output = "\n"; $output .= " torrentFile."\">torrentName."\" border=0>\n"; $output .= " torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName."\n"; $output .= " ". $this->CatName ."\n"; $output .= " ".$this->torrentSize."\n"; $output .= " ".$this->Seeds."\n"; $output .= " ".$this->Peers."\n"; $output .= "\n"; return $output; } } ?> torrentflux_2.4/html/searchEngines/GoogleEngine.php0000755000004100000410000002166311017367654022707 0ustar www-datawww-datamainURL = "google.com"; $this->altURL = "www.google.com"; $this->mainTitle = "Google"; $this->engineName = "Google"; $this->author = "kboy"; $this->version = "1.00"; $this->updateURL = "http://www.torrentflux.com/forum/index.php/topic,1690.0.html"; $this->Initialize($cfg); } //---------------------------------------------------------------- // Function to get Latest.. function getLatest() { $this->msg = "Get Latest Not available on this Engine"; return $this->msg; } //---------------------------------------------------------------- // Function to perform Search. function performSearch($searchTerm) { //http://www.google.com/search?as_q=test+d8&num=3&as_qdr=m3&as_filetype=torrent // as_q -> advanced search query term (NOTE: we must add +d8 to scrub down to just true torrent files) // num -> is the number of results per page. // lr -> language (lang_en) for english // as_qdr -> advanced search query days returned. (m3) is updated in the past 1 months // m3 ... and y (year) are valid values. // as_filetype -> to search for torrents :-) $searchTerm = str_replace(" ", "+", $searchTerm); $request = '/search?as_q=' . $searchTerm . '+d8&num=100&lr=lang_en&as_qdr=m3&as_filetype=torrent'; if ($this->makeRequest($request)) { return $this->parseResponse(); } else { return $this->msg; } } //---------------------------------------------------------------- // Function to parse the response. function parseResponse() { $output = $this->tableHeader(); $output .= "\n \n"; $thing = $this->htmlPage; // We got a response so display it. // Chop the front end off. while (is_integer(strpos($thing,"Results"))) { $thing = substr($thing,strpos($thing,"Results")); $thing = substr($thing,strpos($thing,"")+strlen("")); if (is_integer(strpos($thing,"Sponsored Links"))) { $thing = substr($thing,strpos($thing,"Sponsored Links")); $thing = substr($thing,strpos($thing,"")+strlen("")); } //$thing = substr($thing,strpos($thing,"
")-strlen("
"); $tmpList = substr($thing,0,strpos($thing,"
")); if (is_integer(strpos($tmpList,"In order to show you the most relevant results"))) { $tmpList = substr($thing,0,strpos($thing,"In order to show you the most relevant results")) . "
"; } // ok so now we have the listing. //$tmpListArr = split("

",$tmpList); $allowedTags = '
'; // ok so now we have the listing. $tmpListArr = split("
",strip_tags($tmpList,$allowedTags)); $langFile = _FILE; $bg = $this->cfg["bgLight"]; foreach($tmpListArr as $key =>$value) { if (strpos($value,"Similar pages")) { } elseif (strpos($value, "ile Format:")) { } elseif (strpos($value, "Cached")) { } elseif (strpos($value, "More results from")) { } elseif (strpos($value, "Translate this page")) { } else { $goo = new gOOGLE($value); if (!empty($goo->torrentFile)) { $output .= trim($goo->BuildOutput($bg,$langFile,$this->searchURL())); // ok switch colors. if ($bg == $this->cfg["bgLight"]) { $bg = $this->cfg["bgDark"]; } else { $bg = $this->cfg["bgLight"]; } } } } // set thing to end of this table. $thing = substr($thing,strpos($thing,"")); } $output .= ""; $output .= "\n \n"; return $output; } } // This is a worker class that takes in a row in a table and parses it. class gOOGLE { var $torrentName = ""; var $torrentDisplayName = ""; var $torrentFile = ""; var $torrentStatus = ""; var $torrentSize = ""; var $fileCount = ""; var $Seeds = ""; var $Peers = ""; var $Data = ""; function gOOGLE( $htmlLine ) { $tmpVal = substr($htmlLine,strpos($htmlLine," 0) { $this->Data = $htmlLine; $tmpVal2 = substr($tmpVal,strpos($tmpVal,"href=\"")+strlen("href=\"")); $this->torrentFile = substr($tmpVal2,0,strpos($tmpVal2,"\"")); $html = FetchHTMLNoWaitNoFollow( $this->torrentFile ); // Make sure we have a torrent file if( strpos( $html, "d8:" ) === false ) { // We don't have a Torrent File... it is something else $this->torrentFile = ""; } else { $array = BDecode($html); $this->torrentSize = formatBytesToKBMGGB($array["info"]["piece length"] * (strlen($array["info"]["pieces"]) / 20)); $this->torrentName = $array['info']['name']; $this->fileCount = count($array['info']['files']); $this->torrentDisplayName = $array['info']['name']; if(array_key_exists('comment',$array)) { $this->torrentDisplayName .= " [". $array['comment']."]"; } } /* $this->Seeds = $this->cleanLine($tmpListArr["4"]); // Seeds $this->Peers = $this->cleanLine($tmpListArr["5"]); // Peers */ if ($this->Peers == '') { $this->Peers = "N/A"; if (empty($this->Seeds)) $this->Seeds = "N/A"; } if ($this->Seeds == '') $this->Seeds = "N/A"; if(strlen($this->torrentDisplayName) > 50) { $this->torrentDisplayName = substr($this->torrentDisplayName,0,50)."..."; } } } function cleanLine($stringIn,$tags='') { if(empty($tags)) return trim(str_replace(array(" "," ")," ",strip_tags($stringIn))); else return trim(str_replace(array(" "," ")," ",strip_tags($stringIn,$tags))); } //---------------------------------------------------------------- // Function to build output for the table. function BuildOutput($bg,$langFILE, $searchURL = '') { $output = "\n"; $output .= " torrentFile."\">torrentName." - ".$this->fileCount." ".$langFILE."\" border=0>\n"; $output .= " torrentFile."\" title=\"".$this->torrentName."\">".$this->torrentDisplayName.""; $output .= "\n"; $output .= "  \n"; $output .= " ".$this->torrentSize."\n"; $output .= " ".$this->Seeds."\n"; $output .= " ".$this->Peers."\n"; $output .= "\n"; return $output; } } ?> torrentflux_2.4/html/setpriority.php0000755000004100000410000000570511023132572020145 0ustar www-datawww-data 0) { $files = array_filter($files,"getFile"); for($i=0;$i torrentflux_2.4/html/dtree.css0000755000004100000410000000143211017132666016654 0ustar www-datawww-data/*--------------------------------------------------| | dTree 2.05 | www.destroydrop.com/javascript/tree/ | |---------------------------------------------------| | Copyright (c) 2002-2003 Geir Landrö | |--------------------------------------------------*/ .dtree { font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 8px; color: #666; white-space: nowrap; } .dtree img { border: 0px; vertical-align: middle; } .dtree a { color: #333; text-decoration: none; } .dtree a.node, .dtree a.nodeSel { white-space: nowrap; padding: 1px 2px 1px 2px; } .dtree a.node:hover, .dtree a.nodeSel:hover { color: #333; text-decoration: underline; } .dtree a.nodeSel { background-color: #c0d2ec; } .dtree .clip { overflow: hidden; }torrentflux_2.4/html/message.php0000755000004100000410000000735511017367654017215 0ustar www-datawww-data".str_replace("\n", "\n>", $message); $message = "\n\n\n".$message; } DisplayHead(_SENDMESSAGETITLE); ?>
" align="right">: ">
" align="right">: ">
" colspan="2">
:

"._FORCEUSERSTOREAD.""; } ?>
torrentflux_2.4/html/metaInfo.php0000755000004100000410000001773511017367654017336 0ustar www-datawww-dataname = $name; $this->num = $num; $this->prio = $prio; $this->files = array(); $this->subdirs = array(); } function &addFile($file) { $this->files[] =& $file; return $file; } function &addDir($dir) { $this->subdirs[] =& $dir; return $dir; } // code changed to support php4 // thx to Mistar Muffin function &findDir($name) { foreach (array_keys($this->subdirs) as $v) { $dir =& $this->subdirs[$v]; if($dir->name == $name) { return $dir; } } return false; } function draw($parent) { echo("d.add(".$this->num.",".$parent.",\"".$this->name."\",".$this->prio.",0);\n"); foreach($this->subdirs as $v) { $v->draw($this->num); } foreach($this->files as $v) { if(is_object($v)) { echo("d.add(".$v->num.",".$this->num.",\"".$v->name."\",".$v->prio.",".$v->size.");\n"); } } } } class file { var $name; var $prio; var $size; var $num; function file($name,$num,$size,$prio) { $this->name = $name; $this->num = $num; $this->size = $size; $this->prio = $prio; } } function showMetaInfo($torrent, $allowSave=false) { global $cfg; if (empty($torrent) || !file_exists($cfg["torrent_file_path"].$torrent)) { echo _NORECORDSFOUND; } elseif ($cfg["enable_file_priority"]) { $prioFileName = $cfg["torrent_file_path"].getAliasName($torrent).".prio"; require_once('BDecode.php'); echo ''; $ftorrent = $cfg["torrent_file_path"].$torrent; $fp = fopen($ftorrent, "rd"); if (!$fp) { // Not able to open file echo _NORECORDSFOUND; } else { $alltorrent = fread($fp, filesize($ftorrent)); fclose($fp); $btmeta = BDecode($alltorrent); $torrent_size = $btmeta["info"]["piece length"] * (strlen($btmeta["info"]["pieces"]) / 20); if (array_key_exists('files',$btmeta['info'])) { $dirnum = count($btmeta['info']['files']); } else { $dirnum = 0; } if ( is_readable($prioFileName)) { $prio = split(',',file_get_contents($prioFileName)); $prio = array_splice($prio,1); } else { $prio = array(); for($i=0;$i<$dirnum;$i++) { $prio[$i] = -1; } } $tree = new dir("/",$dirnum,isset($prio[$dirnum])?$prio[$dirnum]:-1); if (array_key_exists('files',$btmeta['info'])) { foreach( $btmeta['info']['files'] as $filenum => $file) { $depth = count($file['path']); $branch =& $tree; for($i=0; $i < $depth; $i++) { if ($i != $depth-1) { $d =& $branch->findDir($file['path'][$i]); if($d) { $branch =& $d; } else { $dirnum++; $d =& $branch->addDir(new dir($file['path'][$i], $dirnum, (isset($prio[$dirnum])?$prio[$dirnum]:-1))); $branch =& $d; } } else { $branch->addFile(new file($file['path'][$i]." (".$file['length'].")",$filenum,$file['length'],$prio[$filenum])); } } } } echo ""; echo ""; echo ""; echo ""; if(array_key_exists('comment',$btmeta)) { echo ""; } echo ""; echo ""; echo ""; if (array_key_exists('files',$btmeta['info'])) { echo ""; echo "
Metainfo File:".$torrent."
Directory Name:".htmlentities($btmeta['info']['name'], ENT_QUOTES)."
Announce URL:".htmlentities($btmeta['announce'], ENT_QUOTES)."
Comment:".htmlentities($btmeta['comment'], ENT_QUOTES)."
Created:".date("F j, Y, g:i a",$btmeta['creation date'])."
Torrent Size:".$torrent_size." (".formatBytesToKBMGGB($torrent_size).")
Chunk size:".$btmeta['info']['piece length']." (".formatBytesToKBMGGB($btmeta['info']['piece length']).")
Selected size:0

\n"; if ($allowSave) { echo "
"; echo ""; echo ""; } echo "\n"; echo ""; echo ""; echo "
"; if ($allowSave) { echo ''; echo "
"; } echo "
"; } else { echo "
"; echo htmlentities($btmeta['info']['name'].$torrent_size." (".formatBytesToKBMGGB($torrent_size).")", ENT_QUOTES); } } } else { $result = shell_exec("cd " . $cfg["torrent_file_path"]."; " . $cfg["pythonCmd"] . " -OO " . $cfg["btshowmetainfo"]." ".escapeshellarg($torrent)); echo "
";
        echo htmlentities($result, ENT_QUOTES);
        echo "
"; } } ?> torrentflux_2.4/html/login.php0000755000004100000410000002604211017367654016673 0ustar www-datawww-data <?php echo $cfg["pagetitle"] ?> /style.css" type="text/css" /> ">


" cellpadding="0" cellspacing="0">
/images/bar.gif" bgcolor=""> Login
">
">
" width="352 pixels" cellpadding="1">
GetOne($sql); if($user_count == 0 && $allow_login) { // This user is first in DB. Make them super admin. // this is The Super USER, add them to the user table $record = array( 'user_id'=>$user, 'password'=>md5($iamhim), 'hits'=>1, 'last_visit'=>$create_time, 'time_created'=>$create_time, 'user_level'=>2, 'hide_offline'=>0, 'theme'=>$cfg["default_theme"], 'language_file'=>$cfg["default_language"] ); $sTable = 'tf_users'; $sql = $db->GetInsertSql($sTable, $record); $result = $db->Execute($sql); showError($db,$sql); // Test and setup some paths for the TF settings $pythonCmd = $cfg["pythonCmd"]; $btphpbin = getcwd() . "/TF_BitTornado/btphptornado.py"; $tfQManager = getcwd() . "/TF_BitTornado/tfQManager.py"; $maketorrent = getcwd() . "/TF_BitTornado/btmakemetafile.py"; $btshowmetainfo = getcwd() . "/TF_BitTornado/btshowmetainfo.py"; $tfPath = getcwd() . "/downloads/"; if (!isFile($cfg["pythonCmd"])) { $pythonCmd = trim(shell_exec("which python")); if ($pythonCmd == "") { $pythonCmd = $cfg["pythonCmd"]; } } $settings = array( "pythonCmd" => $pythonCmd, "btphpbin" => $btphpbin, "tfQManager" => $tfQManager, "btmakemetafile" => $maketorrent, "btshowmetainfo" => $btshowmetainfo, "path" => $tfPath ); saveSettings($settings); AuditAction($cfg["constants"]["update"], "Initial Settings Updated for first login."); $next_loc = "admin.php?op=configSettings"; } if ($allow_login) { $sql = "SELECT uid, hits, hide_offline, theme, language_file FROM tf_users WHERE user_id=".$db->qstr($user)." AND password=".$db->qstr(md5($iamhim)); $result = $db->Execute($sql); showError($db,$sql); list( $uid, $hits, $cfg["hide_offline"], $cfg["theme"], $cfg["language_file"]) = $result->FetchRow(); if(!array_key_exists("shutdown",$cfg)) $cfg['shutdown'] = ''; if(!array_key_exists("upload_rate",$cfg)) $cfg['upload_rate'] = ''; if($result->RecordCount()==1) { // Add a hit to the user $hits++; $sql = 'select * from tf_users where uid = '.$uid; $rs = $db->Execute($sql); showError($db, $sql); $rec = array( 'hits'=>$hits, 'last_visit'=>$db->DBDate($create_time), 'theme'=>$cfg['theme'], 'language_file'=>$cfg['language_file'], 'shutdown'=>$cfg['shutdown'], 'upload_rate'=>$cfg['upload_rate'] ); $sql = $db->GetUpdateSQL($rs, $rec); $result = $db->Execute($sql); showError($db, $sql); $_SESSION['user'] = $user; session_write_close(); header("location: ".$next_loc); exit(); } else { $allow_login = false; $log_msg = "FAILED AUTH: ".$user; } } if (!$allow_login) { AuditAction($cfg["constants"]["access_denied"], $log_msg); echo "
Login failed.
Please try again.
"; } } ?>
Username:
Password:
:
torrentflux_2.4/html/AliasFile.php0000755000004100000410000001240211020033561017364 0ustar www-datawww-datatheFile = $inFile; if ($user != "") { $this->torrentowner = $user; } if(file_exists($inFile)) { // read the alias file $arStatus = file($inFile); $this->running = trim($arStatus[0]); $this->percent_done = trim($arStatus[1]); $this->time_left = trim($arStatus[2]); $this->down_speed = trim($arStatus[3]); $this->up_speed = trim($arStatus[4]); $this->torrentowner = trim($arStatus[5]); $this->seeds = trim($arStatus[6]); $this->peers = trim($arStatus[7]); $this->sharing = trim($arStatus[8]); $this->seedlimit = trim($arStatus[9]); $this->uptotal = trim($arStatus[10]); $this->downtotal = trim($arStatus[11]); $this->size = trim($arStatus[12]); if (sizeof($arStatus) > 13) { for ($inx = 13; $inx < sizeof($arStatus); $inx++) { array_push($this->errors, $arStatus[$inx]); } } } else { // this file does not exist (yet) } } //---------------------------------------------------------------- // Call this when wanting to create a new alias and/or starting it function StartTorrentFile() { // Reset all the var to new state (all but torrentowner) $this->running = "1"; $this->percent_done = "0.0"; $this->time_left = "Starting..."; $this->down_speed = ""; $this->up_speed = ""; $this->sharing = ""; $this->seeds = ""; $this->peers = ""; $this->seedlimit = ""; $this->uptotal = ""; $this->downtotal = ""; $this->errors = array(); // Write to file $this->WriteFile(); } //---------------------------------------------------------------- // Call this when wanting to create a new alias and/or starting it function QueueTorrentFile() { // Reset all the var to new state (all but torrentowner) $this->running = "3"; $this->time_left = "Waiting..."; $this->down_speed = ""; $this->up_speed = ""; $this->seeds = ""; $this->peers = ""; $this->errors = array(); // Write to file $this->WriteFile(); } //---------------------------------------------------------------- // Common WriteFile Method function WriteFile() { $fw = fopen($this->theFile,"w"); fwrite($fw, $this->BuildOutput()); fclose($fw); } //---------------------------------------------------------------- // Private Function to put the variables into a string for writing to file function BuildOutput() { if (strlen($this->time_left) > 10) { $this->time_left = "unknown"; } $output = $this->running."\n"; $output .= $this->percent_done."\n"; $output .= $this->time_left."\n"; $output .= $this->down_speed."\n"; $output .= $this->up_speed."\n"; $output .= $this->torrentowner."\n"; $output .= $this->seeds."\n"; $output .= $this->peers."\n"; $output .= $this->sharing."\n"; $output .= $this->seedlimit."\n"; $output .= $this->uptotal."\n"; $output .= $this->downtotal."\n"; $output .= $this->size; for ($inx = 0; $inx < sizeof($this->errors); $inx++) { if ($this->errors[$inx] != "") { $output .= "\n".$this->errors[$inx]; } } return $output; } //---------------------------------------------------------------- // Public Function to display real total download in MB function GetRealDownloadTotal() { return (($this->percent_done * $this->size)/100)/(1024*1024); } } ?> torrentflux_2.4/html/language/0000755000004100000410000000000011026130101016575 5ustar www-datawww-datatorrentflux_2.4/html/language/lang-german.php0000755000004100000410000001650611017367654021542 0ustar www-datawww-data torrentflux_2.4/html/language/lang-taiwanese.php0000755000004100000410000001567211017367654022254 0ustar www-datawww-data torrentflux_2.4/html/language/lang-turkish.php0000755000004100000410000001630711017367654021761 0ustar www-datawww-data /* $Id: lang-turkish.php,v 1.0 2006/04/24 14:37:23 rj Exp $ /**************************************************************************/ define("_CHARSET","windows1254"); // if you don't know... then leave this as is. define("_SELECTFILE","Yükleme için Torrent seç"); define("_URLFILE","URL ile Torrent yükle"); define("_UPLOAD","Yükle"); define("_GETFILE","Dosyayi Al"); define("_TORRENTLINKS","Sik Kullanilanlar"); define("_ONLINE","Online"); define("_OFFLINE","Offline"); define("_STORAGE","Storage"); define("_DRIVESPACE","Sürücü Alani"); define("_SERVERSTATS","Server durumu / Kullanicilar"); define("_DIRECTORYLIST","Dosya Listesi"); define("_ALL","Genel"); define("_PAGEWILLREFRESH","Sayfa Her"); define("_SECONDS","Saniyede Bir Yenilenecektir"); define("_TURNONREFRESH","Otomatik Yenilemeyi AÇ"); define("_TURNOFFREFRESH","Otomatik Yenilemeyi KAPA"); define("_WARNING","DIKKAT"); define("_DRIVESPACEUSED","Sürücü alani kullanimda!"); define("_ADMINMESSAGE","Mesaj kutusunuzda yöneticiden yeni bir mesajiniz var."); define("_TORRENTS","Torrentler"); define("_UPLOADHISTORY","Yükleme Geçmisi"); define("_MYPROFILE","Profil Düzenle"); define("_ADMINISTRATION","Yönetim"); define("_SENDMESSAGETO","Mesaj Gönder"); define("_TORRENTFILE","Torrent Dosyasi"); define("_FILESIZE","Dosya Boyutu"); define("_STATUS","Durum"); define("_ADMIN","Admin"); define("_BADFILE","hatali dosya"); define("_DATETIMEFORMAT","m/d/y g:i a"); //Date Time mask '02/26/04 03:53 pm' define("_DATEFORMAT","m/d/y"); //Date mask '02/26/04' define("_ESTIMATEDTIME","Tahmini Süre"); define("_DOWNLOADSPEED","Yükleme Hizi"); define("_UPLOADSPEED","Gönderme Hizi"); define("_SHARING","Sharing"); define("_USER","Kullanici"); define("_DONE","TAMAMLANDI"); define("_INCOMPLETE","TAMAMLANAMADI"); define("_NEW","YENI"); define("_TORRENTDETAILS","Torrent Detaylari"); define("_STOPDOWNLOAD","Torrenti Durdur"); define("_RUNTORRENT","Torrenti Baslat"); define("_SEEDTORRENT","Torrenti Seed Et"); define("_DELETE","Sil"); define("_ABOUTTODELETE","Silme islemi"); define("_NOTOWNER","Torrent sahibi baskasidir"); define("_MESSAGETOALL","Bu mesaj Tüm Kullanicilara gönderilmistir"); define("_TRYDIFFERENTUSERID","Hata: Lütfen baska bir kullanici ID'si deneyin."); define("_HASBEENUSED","kullanimda."); define("_RETURNTOEDIT","Düzenlemeye Geri Dön"); define("_ADMINUSERACTIVITY","Yönetim - Kullanici Etkinlikleri"); define("_ADMIN_MENU","admin"); define("_ACTIVITY_MENU","etkinlik"); define("_LINKS_MENU","baglantilar"); define("_NEWUSER_MENU","yeni kullanici"); define("_BACKUP_MENU","yedekle"); define("_ALLUSERS","Tüm Kullanicilar"); define("_NORECORDSFOUND","KAYIT BULUNAMADI"); define("_SHOWPREVIOUS","Önceki"); define("_SHOWMORE","Daha Fazla Göster"); define("_ACTIVITYSEARCH","Etkinlik Arama"); define("_FILE","Dosya"); define("_ACTION","Olay"); define("_SEARCH","Arama"); define("_ACTIVITYLOG","Etkinlik Kayit - Son"); define("_DAYS","Gün"); define("_IP","IP"); define("_TIMESTAMP","Tarih"); define("_USERDETAILS","Kullanici Bilgisi"); define("_HITS","Yogunluk"); define("_UPLOADACTIVITY","Gönderim Etkinligi"); define("_JOINED","Üyelik Tarihi"); // header for the date when the user joined (became a member) define("_LASTVISIT","Son Giris"); // header for when the user last visited the site define("_USERSACTIVITY","Etkinlik"); // used for popup to display Activity next to users name define("_NORMALUSER","Normal Kullanici"); // used to describe a normal user's account type define("_ADMINISTRATOR","Yönetici"); // used to describe an administrator's account type define("_SUPERADMIN","Süper Admin"); // used to describe Super Admin's account type define("_EDIT","Düzenle"); define("_USERADMIN","Yönetim - Admin Kullanicisi"); // title of page for user administration define("_EDITUSER","Kullaniciyi Düzenle"); define("_UPLOADPARTICIPATION","Katlimli Yükleme"); define("_UPLOADS","Yükleme"); // Number of uploads a user has contributed define("_PERCENTPARTICIPATION","Katilim Yüzdesi"); define("_PARTICIPATIONSTATEMENT","Katilim ve Yükleme:son"); // ends with 15 Days define("_TOTALPAGEVIEWS","Toplam Sayfa Görüntülenmesi"); define("_THEME","Tema"); define("_USERTYPE","Kullanici Türü"); define("_NEWPASSWORD","Yeni Sifre"); define("_CONFIRMPASSWORD","Sifre Onay"); define("_HIDEOFFLINEUSERS","Anasayfada Offline Kullanicilar Arasinda Gösterme"); define("_UPDATE","Güncelle"); define("_USERIDREQUIRED","Kullanici ID'si gerekli."); define("_PASSWORDLENGTH","Sifre en az 6 yada daha fazla karakter olmalidir."); define("_PASSWORDNOTMATCH","Sifreler farkli."); define("_PLEASECHECKFOLLOWING","Lütfen kontrol edin"); // Displays errors after this statement define("_NEWUSER","Yeni Kullanici"); define("_PASSWORD","Sifre"); define("_CREATE","Olustur"); // button text to create a new userfto define("_ADMINEDITLINKS","Yönetim - Sik Kullanilanlari Düzenle"); define("_FULLURLLINK","Tam URL Adresi"); define("_BACKTOPARRENT","Komsu Dosyalar"); // indicates going back to parent directory define("_DOWNLOADDETAILS","Yükleme Dosyalari"); define("_PERCENTDONE","Tamamlanan Yüzde"); define("_RETURNTOTORRENTS","Torrentlere Geri Dön"); // Link at the bottom of each page define("_DATE","Tarih"); define("_WROTE","yazan"); // Used in a reply to tag what the user had writen define("_SENDMESSAGETITLE","Mesaj Gönderme"); // Title of page define("_TO","Alici"); define("_FROM","Gönderen"); define("_YOURMESSAGE","Mesaj"); define("_SENDTOALLUSERS","Genel Mesaj"); define("_FORCEUSERSTOREAD","Okuma Için Zorla"); // Admin option in messaging define("_SEND","Gönder"); // Button to send private message define("_PROFILE","Profil"); define("_PROFILEUPDATEDFOR","Profil Güncellendi"); // Profile updated for 'username' define("_REPLY","Yanit Ver"); // popup text for reply button define("_MESSAGE","Mesaj"); define("_MESSAGES","Mesajlar"); // plural (more than one) define("_RETURNTOMESSAGES","Mesajlara Geri Dön"); define("_COMPOSE","Olustur"); // As in 'Compose a message' for button define("_LANGUAGE","Diller"); // label define("_CURRENTDOWNLOAD","Yükleme Hizi"); define("_CURRENTUPLOAD","Gönderme Hizi"); define("_SERVERLOAD","Server Yüklenmesi"); define("_FREESPACE","Bos Alan"); define("_UPLOADED", "Yüklendi"); define("_QMANAGER_MENU","sira"); define("_SETTINGS_MENU","ayalar"); define("_SEARCHSETTINGS_MENU","ayarlari ara"); define("_ERRORSREPORTED","Hatalar"); define("_STARTED", "Basladi"); define("_ENDED", "Bitti"); define("_QUEUED","Sirada"); define("_DELQUEUE","Siradan Çikart"); define("_FORCESTOP","Torrenti Durdur"); define("_STOPPING","Durduruluyor"); define("_COOKIE_MENU","çerezler"); ?>torrentflux_2.4/html/language/lang-svenska.php0000755000004100000410000001641511017367654021742 0ustar www-datawww-data torrentflux_2.4/html/language/.htaccess0000755000004100000410000000001511017132666020414 0ustar www-datawww-datadeny from alltorrentflux_2.4/html/language/lang-chinese.php0000755000004100000410000001571011017367654021703 0ustar www-datawww-data torrentflux_2.4/html/language/lang-portuguese.php0000755000004100000410000001737411017367654022477 0ustar www-datawww-data torrentflux_2.4/html/language/lang-polish.php0000755000004100000410000001630611017367654021565 0ustar www-datawww-data /* /**************************************************************************/ define("_CHARSET","iso-8859-2"); // if you don't know... then leave this as is. define("_SELECTFILE","Wybierz Torrenta do wczytania"); define("_URLFILE","Adres URL z plikiem Torrenta"); define("_UPLOAD","Wczytaj"); define("_GETFILE","Pobierz"); define("_TORRENTLINKS","Linki z Torrentami"); define("_ONLINE","Dostêpni"); define("_OFFLINE","Niedostêpni"); define("_STORAGE","Zajête"); define("_DRIVESPACE","Miejce na dysku"); define("_SERVERSTATS","Statystyki serwera / Kto"); define("_DIRECTORYLIST","Katalog"); define("_ALL","Wszystko"); define("_PAGEWILLREFRESH","Strona odswie¿a siê co"); define("_SECONDS","sekund"); define("_TURNONREFRESH","W³±cz od¶wie¿anie strony"); define("_TURNOFFREFRESH","Wy³±cz od¶wie¿anie strony"); define("_WARNING","UWAGA"); define("_DRIVESPACEUSED","Brak miejsca na dysku!"); define("_ADMINMESSAGE","Masz w skrzynce wiadomo¶æ od administratora"); define("_TORRENTS","Torrenty"); define("_UPLOADHISTORY","Historia Przesy³ania"); define("_MYPROFILE","Edytuj Mój Profil"); define("_ADMINISTRATION","Administracja"); define("_SENDMESSAGETO","Wy¶lij Wiadomo¶æ do"); define("_TORRENTFILE","Plik Torrent"); define("_FILESIZE","Rozmiar Pliku"); define("_STATUS","Status"); define("_ADMIN","Admin"); define("_BADFILE","uszkodzony plik"); define("_DATETIMEFORMAT","d/m/y G:i"); //Date Time mask '02/26/04 03:53 pm' define("_DATEFORMAT","d/m/y"); //Date mask '02/26/04' define("_ESTIMATEDTIME","Szacowany Czas"); define("_DOWNLOADSPEED","Prêdko¶æ ¶ci±gania"); define("_UPLOADSPEED","Prêdko¶æ przesy³ania"); define("_SHARING","Udostêpnione"); define("_USER","U¿ytkownik"); define("_DONE","UKOÑCZONY"); define("_INCOMPLETE","NIEKOMPLETNY"); define("_NEW","NOWY"); define("_TORRENTDETAILS","Szczegó³y Torrenta"); define("_STOPDOWNLOAD","Zatrzymaj Torrenta"); define("_RUNTORRENT","Uruchom Torrenta"); define("_SEEDTORRENT","Udostêpnij Torrenta"); define("_DELETE","Usuñ"); define("_ABOUTTODELETE","Usuwasz plik"); define("_NOTOWNER","Nie jeste¶ w³a¶cicielem tego Torrenta"); define("_MESSAGETOALL","Ta wiadomo¶æ zosta³a wys³ana do WSZYSTKICH"); define("_TRYDIFFERENTUSERID","B³±d: Spróbuj inne ID U¿ytkownika."); define("_HASBEENUSED","ju¿ instnieje."); define("_RETURNTOEDIT","Powrót do Edycji"); define("_ADMINUSERACTIVITY","Administracja - Aktywno¶æ U¿ytkowników"); define("_ADMIN_MENU","admin"); define("_ACTIVITY_MENU","aktywno¶æ"); define("_LINKS_MENU","linki"); define("_NEWUSER_MENU","nowy u¿ytkownik"); define("_BACKUP_MENU","kopia zapasowa"); define("_ALLUSERS","Wszyscy U¿ytkownicy"); define("_NORECORDSFOUND","BRAK"); define("_SHOWPREVIOUS","Poprzednia"); define("_SHOWMORE","Poka¿ wiêcej"); define("_ACTIVITYSEARCH","Przeszukiwanie Aktywno¶ci"); define("_FILE","Plik"); define("_ACTION","Akcja"); define("_SEARCH","Szukaj"); define("_ACTIVITYLOG","Aktywno¶æ - Ostatnie"); define("_DAYS","Dni"); define("_IP","IP"); define("_TIMESTAMP","Data i Czas"); define("_USERDETAILS","Szczegó³y U¿ytkownia"); define("_HITS","Akcje"); define("_UPLOADACTIVITY","Aktywno¶æ Przesy³ania"); define("_JOINED","Utworzony"); // header for the date when the user joined (became a member) define("_LASTVISIT","Logowanie"); // header for when the user last visited the site define("_USERSACTIVITY","Aktywno¶æ"); // used for popup to display Activity next to users name define("_NORMALUSER","Normalny"); // used to describe a normal user's account type define("_ADMINISTRATOR","Administrator"); // used to describe an administrator's account type define("_SUPERADMIN","Super Admin"); // used to describe Super Admin's account type define("_EDIT","Edytuj"); define("_USERADMIN","Administracja - U¿ytkownik Admin"); // title of page for user administration define("_EDITUSER","Edytuj U¿ytkowika"); define("_UPLOADPARTICIPATION","Udzia³ w Przesyle"); define("_UPLOADS","Przes³anych"); // Number of uploads a user has contributed define("_PERCENTPARTICIPATION","Procent Udzia³u"); define("_PARTICIPATIONSTATEMENT","Udzia³ i Przesy³ przez ostatnie"); // ends with 15 Days define("_TOTALPAGEVIEWS","Liczba Od¶wie¿eñ Strony"); define("_THEME","Temat"); define("_USERTYPE","Typ U¿ytkownika"); define("_NEWPASSWORD","Nowe Has³o"); define("_CONFIRMPASSWORD","Powtórz Has³o"); define("_HIDEOFFLINEUSERS","Ukryj U¿ytkowników Niedostêpnych"); define("_UPDATE","Uaktualnij"); define("_USERIDREQUIRED","ID U¿ytkownika jest wymagane."); define("_PASSWORDLENGTH","Has³o musi siê sk³adaæ z 6 lub wiêcej znaków."); define("_PASSWORDNOTMATCH","Has³a musz± byæ identyczne."); define("_PLEASECHECKFOLLOWING","Sprawd¼ poni¿sze b³êdy"); // Displays errors after this statement define("_NEWUSER","Nowy U¿ytkownik"); define("_PASSWORD","Has³o"); define("_CREATE","Utwórz"); // button text to create a new user define("_ADMINEDITLINKS","Administracja - Edytuj Linki"); define("_FULLURLLINK","Pe³ny URL Linka"); define("_BACKTOPARRENT","Katalog Wy¿ej"); // indicates going back to parent directory define("_DOWNLOADDETAILS","Szczegó³y ¦ci±gania"); define("_PERCENTDONE","Ukoñczono"); define("_RETURNTOTORRENTS","Powrót do Torrentów"); // Link at the bottom of each page define("_DATE","Data"); define("_WROTE","zapisano"); // Used in a reply to tag what the user had writen define("_SENDMESSAGETITLE","Wy¶lij Wiadomo¶æ"); // Title of page define("_TO","Do"); define("_FROM","Od"); define("_YOURMESSAGE","Twoja Wiadomo¶æ"); define("_SENDTOALLUSERS","Wy¶lij do Wszystkich"); define("_FORCEUSERSTOREAD","Wymu¶ Odebranie tej Wiadomo¶ci"); // Admin option in messaging define("_SEND","Wy¶lij"); // Button to send private message define("_PROFILE","Profil"); define("_PROFILEUPDATEDFOR","Profil Zaktualizowany dla"); // Profile updated for 'username' define("_REPLY","Odpowiedz"); // popup text for reply button define("_MESSAGE","Wiadomo¶æ"); define("_MESSAGES","Wiadomo¶ci"); // plural (more than one) define("_RETURNTOMESSAGES","Powrót do Wiadomo¶ci"); define("_COMPOSE","Utwórz"); // As in 'Compose a message' for button define("_LANGUAGE","Jêzyk"); // label define("_CURRENTDOWNLOAD","Current Download"); define("_CURRENTUPLOAD","Current Upload"); define("_SERVERLOAD","Server Load"); define("_FREESPACE","Free Space"); define("_UPLOADED", "Uploaded"); define("_QMANAGER_MENU","queue"); define("_SETTINGS_MENU","settings"); define("_SEARCHSETTINGS_MENU","search settings"); define("_ERRORSREPORTED","Errors"); define("_STARTED", "Started"); define("_ENDED", "Ended"); define("_QUEUED","Queued"); define("_DELQUEUE","Remove from Queue"); define("_FORCESTOP","Kill Torrent"); define("_STOPPING","Stopping"); define("_COOKIE_MENU","cookies"); ?> torrentflux_2.4/html/language/lang-norwegian.php0000755000004100000410000001612411017367654022256 0ustar www-datawww-data torrentflux_2.4/html/language/index.html0000755000004100000410000000001511017132666020613 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-estonian.php0000755000004100000410000001720111017367654022102 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-finnish.php0000755000004100000410000001620611017367654021724 0ustar www-datawww-data torrentflux_2.4/html/language/lang-slovenian.php0000755000004100000410000001471711017367654022271 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-italian.php0000755000004100000410000001630611017367654021710 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-spanish.php0000755000004100000410000002072211017367654021731 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-redneck.php0000755000004100000410000001430511017367654021677 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-dutch.php0000755000004100000410000001655311017367654021402 0ustar www-datawww-data /* $Id: lang-dutch.php,v 1.1 2004/04/16 22:54:34 rj Exp $ /**************************************************************************/ define("_CHARSET","iso-8859-1"); // if you don't know... then leave this as is. define("_SELECTFILE","Selecteer een torrent voor upload"); define("_URLFILE","Adres van het torrent-bestand"); define("_UPLOAD","Upload"); define("_GETFILE","Download"); define("_TORRENTLINKS","Torrent-links"); define("_ONLINE","On-line"); define("_OFFLINE","Off-line"); define("_STORAGE","Opslag"); define("_DRIVESPACE","Schijfruimte"); define("_SERVERSTATS","Serverstatistieken / Wie"); define("_DIRECTORYLIST","Mapinhoud"); define("_ALL","Alles"); define("_PAGEWILLREFRESH","De pagina ververst elke"); define("_SECONDS","seconden"); define("_TURNONREFRESH","Zet paginaverversing AAN"); define("_TURNOFFREFRESH","Zet paginaverversing UIT"); define("_WARNING","WAARSCHUWING"); define("_DRIVESPACEUSED","Schijfruimte in gebruik!"); define("_ADMINMESSAGE","U heeft een bericht van een beheerder in uw brievenbus"); define("_TORRENTS","torrents"); define("_UPLOADHISTORY","Upload-geschiedenis"); define("_MYPROFILE","Bewerk mijn profiel"); define("_ADMINISTRATION","Administratie"); define("_SENDMESSAGETO","Stuur een bericht aan"); define("_TORRENTFILE","torrent-bestand"); define("_FILESIZE","Bestandsgrootte"); define("_STATUS","Status"); define("_ADMIN","Beheer"); define("_BADFILE","kapot bestand"); define("_DATETIMEFORMAT","d/m/Y G:i"); //Date Time mask '15/04/2004 21:10' define("_DATEFORMAT","d/m/Y"); //Date mask '15/04/2004' define("_ESTIMATEDTIME","Geschatte tijdsduur"); define("_DOWNLOADSPEED","Download-snelheid"); define("_UPLOADSPEED","Upload-snelheid"); define("_SHARING","Gedeeld"); define("_USER","Gebruiker"); define("_DONE","KLAAR"); define("_INCOMPLETE","INCOMPLEET"); define("_NEW","NIEUW"); define("_TORRENTDETAILS","torrent-details"); define("_STOPDOWNLOAD","Stop torrent-download"); define("_RUNTORRENT","Start torrent"); define("_SEEDTORRENT","Voed torrent"); define("_DELETE","Wissen"); define("_ABOUTTODELETE","U staat op het punt om te wissen"); define("_NOTOWNER","Niet de eigenaar van deze torrent"); define("_MESSAGETOALL","Dit bericht is verzonden naar ALLE GEBRUIKERS"); define("_TRYDIFFERENTUSERID","Fout: Probeer een andere gebruikersnaam."); define("_HASBEENUSED","is gebruikt."); define("_RETURNTOEDIT","Terug naar Bewerken"); define("_ADMINUSERACTIVITY","Administratie - Gebruikersactiviteit"); define("_ADMIN_MENU","beheer"); define("_ACTIVITY_MENU","activiteit"); define("_LINKS_MENU","links"); define("_NEWUSER_MENU","nieuwe gebruiker"); define("_BACKUP_MENU","backup"); define("_ALLUSERS","Alle gebruikers"); define("_NORECORDSFOUND","GEEN VELDEN GEVONDEN"); define("_SHOWPREVIOUS","Vorige"); define("_SHOWMORE","Toon meer"); define("_ACTIVITYSEARCH","Zoeken naar activiteit"); define("_FILE","Bestand"); define("_ACTION","Actie"); define("_SEARCH","Zoek"); define("_ACTIVITYLOG","Activiteitslog - Laatste"); define("_DAYS","dagen"); define("_IP","IP-adres"); define("_TIMESTAMP","Tijdstip"); define("_USERDETAILS","Details gebruiker"); define("_HITS","Oproepen"); define("_UPLOADACTIVITY","Upload-activiteit"); define("_JOINED","Deelname"); // header for the date when the user joined (became a member) define("_LASTVISIT","Laatste bezoek"); // header for when the user last visited the site define("_USERSACTIVITY","Activiteit"); // used for popup to display Activity next to users name define("_NORMALUSER","Normale gebruiker"); // used to describe a normal user's account type define("_ADMINISTRATOR","Beheerder"); // used to describe an administrator's account type define("_SUPERADMIN","Hoofdbeheerder"); // used to describe Super Admin's account type define("_EDIT","Bewerk"); define("_USERADMIN","Administratie - Gebruikersadministratie"); // title of page for user administration define("_EDITUSER","Bewerk gebruiker"); define("_UPLOADPARTICIPATION","Upload-deelname"); define("_UPLOADS","Uploads"); // Number of uploads a user has contributed define("_PERCENTPARTICIPATION","Deelnamepercentage"); define("_PARTICIPATIONSTATEMENT","Deelname en uploads gebaseerd op de laatste"); // ends with 15 Days define("_TOTALPAGEVIEWS","Paginaoproepen"); define("_THEME","Thema"); define("_USERTYPE","Gebruikerstype"); define("_NEWPASSWORD","Nieuw wachtwoord"); define("_CONFIRMPASSWORD","Bevestig wachtwoord"); define("_HIDEOFFLINEUSERS","Verberg off-line gebruikers op de hoofdpagina"); define("_UPDATE","Bijwerken"); define("_USERIDREQUIRED","Gebruikersnaam vereist."); define("_PASSWORDLENGTH","Wachtwoord moet 6 of meer tekens bevatten."); define("_PASSWORDNOTMATCH","Wachtwoorden komen niet overeen"); define("_PLEASECHECKFOLLOWING","Controleert u het volgende"); // Displays errors after this statement define("_NEWUSER","Nieuwe gebruiker"); define("_PASSWORD","Wachtwoord"); define("_CREATE","Aanmaken"); // button text to create a new user define("_ADMINEDITLINKS","Administratie - Links bewerken"); define("_FULLURLLINK","Volledige adres link"); define("_BACKTOPARRENT","Terug naar vorige map"); // indicates going back to parent directory define("_DOWNLOADDETAILS","Download-details"); define("_PERCENTDONE","Percentage voltooid"); define("_RETURNTOTORRENTS","Terug naar torrents"); // Link at the bottom of each page define("_DATE","Datum"); define("_WROTE","schreef"); // Used in a reply to tag what the user had writen define("_SENDMESSAGETITLE","Zend een bericht"); // Title of page define("_TO","Aan"); define("_FROM","Van"); define("_YOURMESSAGE","Uw bericht"); define("_SENDTOALLUSERS","Zend naar alle gebruikers"); define("_FORCEUSERSTOREAD","Verplicht gebruiker(s) te lezen"); // Admin option in messaging define("_SEND","Zend"); // Button to send private message define("_PROFILE","Profiel"); define("_PROFILEUPDATEDFOR","Profiel bijgewerkt voor"); // Profile updated for 'username' define("_REPLY","Antwoord"); // popup text for reply button define("_MESSAGE","Bericht"); define("_MESSAGES","Berichten"); // plural (more than one) define("_RETURNTOMESSAGES","Terug naar berichten"); define("_COMPOSE","Opstellen"); // As in 'Compose a message' for button define("_LANGUAGE","Taal"); // label define("_CURRENTDOWNLOAD","Current Download"); define("_CURRENTUPLOAD","Current Upload"); define("_SERVERLOAD","Server Load"); define("_FREESPACE","Free Space"); define("_UPLOADED", "Uploaded"); define("_QMANAGER_MENU","queue"); define("_SETTINGS_MENU","settings"); define("_SEARCHSETTINGS_MENU","search settings"); define("_ERRORSREPORTED","Errors"); define("_STARTED", "Started"); define("_ENDED", "Ended"); define("_QUEUED","Queued"); define("_DELQUEUE","Remove from Queue"); define("_FORCESTOP","Kill Torrent"); define("_STOPPING","Stopping"); define("_COOKIE_MENU","cookies"); ?> torrentflux_2.4/html/language/lang-russian.php0000755000004100000410000001643011017367654021751 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-hungarian.php0000755000004100000410000001677311017367654022253 0ustar www-datawww-data torrentflux_2.4/html/language/lang-english.php0000755000004100000410000001570011017367654021715 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-french.php0000755000004100000410000001677711017367654021550 0ustar www-datawww-datatorrentflux_2.4/html/language/lang-galician.php0000755000004100000410000002022511017367654022031 0ustar www-datawww-datatorrentflux_2.4/html/db.php0000755000004100000410000000545711017367654016157 0ustar www-datawww-dataConnect($cfg["db_host"], $cfg["db_user"], $cfg["db_pass"], $cfg["db_name"]); if(!$db) { die ('Could not connect to database: '.$db->ErrorMsg().'
Check your database settings in the config.php file.'); } return $db; } function showError($db, $sql) { global $cfg; if($db->ErrorNo() != 0) { include("themes/matrix/index.php"); ?> <?php echo $cfg["pagetitle"] ?> ">


" cellpadding="0" cellspacing="0">
"> Database/SQL Error
">
">
" width="740 pixels" cellpadding="1">

SQL: ".$sql."


"; } echo "Database error: ".$db->ErrorMsg()."

"; echo "Always check your database variables in the config.php file.

" ?>
torrentflux_2.4/html/dir.php0000755000004100000410000004352211024310576016330 0ustar www-datawww-data 1) { array_pop($arTemp); $current = implode("/", $arTemp); } AuditAction($cfg["constants"]["fm_delete"], $del); } else { AuditAction($cfg["constants"]["error"], "ILLEGAL DELETE: ".$cfg['user']." tried to delete ".$del); } } else { AuditAction($cfg["constants"]["error"], "ILLEGAL DELETE: ".$cfg['user']." tried to delete ".$del); } header("Location: dir.php?dir=".urlencode($current)); } // Are we to download something? if ($down != "" && $cfg["enable_file_download"]) { $current = ""; // Yes, then download it // we need to strip slashes twice in some circumstances // Ex. If we are trying to download test/tester's file/test.txt // $down will be "test/tester\\\'s file/test.txt" // one strip will give us "test/tester\'s file/test.txt // the second strip will give us the correct // "test/tester's file/test.txt" $down = stripslashes(stripslashes($down)); if (!ereg("(\.\.\/)", $down)) { $path = $cfg["path"].$down; $p = explode(".", $path); $pc = count($p); $f = explode("/", $path); $file = array_pop($f); $arTemp = explode("/", $down); if (count($arTemp) > 1) { array_pop($arTemp); $current = implode("/", $arTemp); } if (file_exists($path)) { header("Content-type: application/octet-stream\n"); header("Content-disposition: attachment; filename=\"".$file."\"\n"); header("Content-transfer-encoding: binary\n"); header("Content-length: " . file_size($path) . "\n"); // write the session to close so you can continue to browse on the site. session_write_close(); //$fp = fopen($path, "r"); $fp = popen("cat \"$path\"", "r"); fpassthru($fp); pclose($fp); AuditAction($cfg["constants"]["fm_download"], $down); exit(); } else { AuditAction($cfg["constants"]["error"], "File Not found for download: ".$cfg['user']." tried to download ".$down); } } else { AuditAction($cfg["constants"]["error"], "ILLEGAL DOWNLOAD: ".$cfg['user']." tried to download ".$down); } header("Location: dir.php?dir=".urlencode($current)); } // Are we to download something? if ($tar != "" && $cfg["enable_file_download"]) { $current = ""; // Yes, then tar and download it // we need to strip slashes twice in some circumstances // Ex. If we are trying to download test/tester's file/test.txt // $down will be "test/tester\\\'s file/test.txt" // one strip will give us "test/tester\'s file/test.txt // the second strip will give us the correct // "test/tester's file/test.txt" $tar = stripslashes(stripslashes($tar)); if (!ereg("(\.\.\/)", $tar)) { // This prevents the script from getting killed off when running lengthy tar jobs. ini_set("max_execution_time", 3600); $tar = $cfg["path"].$tar; $arTemp = explode("/", $tar); if (count($arTemp) > 1) { array_pop($arTemp); $current = implode("/", $arTemp); } // Find out if we're really trying to access a file within the // proper directory structure. Sadly, this way requires that $cfg["path"] // is a REAL path, not a symlinked one. Also check if $cfg["path"] is part // of the REAL path. if (is_dir($tar)) { $sendname = basename($tar); switch ($cfg["package_type"]) { Case "tar": $command = "tar cf - \"".addslashes($sendname)."\""; break; Case "zip": $command = "zip -0r - \"".addslashes($sendname)."\""; break; default: $cfg["package_type"] = "tar"; $command = "tar cf - \"".addslashes($sendname)."\""; break; } // HTTP/1.0 header("Pragma: no-cache"); header("Content-Description: File Transfer"); header("Content-Type: application/force-download"); header('Content-Disposition: attachment; filename="'.$sendname.'.'.$cfg["package_type"].'"'); // write the session to close so you can continue to browse on the site. session_write_close(); // Make it a bit easier for tar/zip. chdir(dirname($tar)); passthru($command); AuditAction($cfg["constants"]["fm_download"], $sendname.".".$cfg["package_type"]); exit(); } else { AuditAction($cfg["constants"]["error"], "Illegal download: ".$cfg['user']." tried to download ".$tar); } } else { AuditAction($cfg["constants"]["error"], "ILLEGAL TAR DOWNLOAD: ".$cfg['user']." tried to download ".$tar); } header("Location: dir.php?dir=".urlencode($current)); } if ($dir == "") { unset($dir); } if (isset($dir)) { if (ereg("(\.\.)", $dir)) { unset($dir); } else { $dir = $dir."/"; } } DisplayHead(_DIRECTORYLIST); ?> "; if(!isset($dir)) $dir = ""; if (!file_exists($cfg["path"].$dir)) { echo "".htmlentities($dir)." could not be found or is not valid."; } else { ListDirectory($cfg["path"].$dir); } DisplayFoot(); //************************************************************************** // ListDirectory() // This method reads files and directories in the specified path and // displayes them. function ListDirectory($dirName) { global $dir, $cfg; $bgLight = $cfg["bgLight"]; $bgDark = $cfg["bgDark"]; $entrys = array(); $bg = $bgLight; $dirName = stripslashes($dirName); if (isset($dir)) { //setup default parent directory URL $parentURL = "dir.php"; //get the real parentURL if (preg_match("/^(.+)\/.+$/",$dir,$matches) == 1) { $parentURL="dir.php?dir=" . urlencode($matches[1]); } echo ""; echo ''; echo ''; echo ''; echo ''; echo ''; } $handle = opendir($dirName); while($entry = readdir($handle)) { $entrys[] = $entry; } natsort($entrys); foreach($entrys as $entry) { if ($entry != "." && $entry != ".." && substr($entry, 0, 1) != ".") { if (@is_dir($dirName.$entry)) { echo ""; echo ""; echo ""; echo "\n"; if ($bg == $bgLight) { $bg = $bgDark; } else { $bg = $bgLight; } } else { // Do nothing } } } closedir($handle); $entrys = array(); $handle = opendir($dirName); while($entry = readdir($handle)) { $entrys[] = $entry; } natsort($entrys); foreach($entrys as $entry) { if ($entry != "." && $entry != "..") { if (@is_dir($dirName.$entry)) { // Do nothing } else { $arStat = @lstat($dirName.$entry); $arStat[7] = ( $arStat[7] == 0 )? file_size( $dirName . $entry ) : $arStat[7]; if (array_key_exists(10,$arStat)) { $timeStamp = $arStat[10]; } else { $timeStamp = ""; } $fileSize = number_format(($arStat[7])/1024); // Code added by Remko Jantzen to assign an icon per file-type. But when not // available all stays the same. $image="images/time.gif"; $imageOption="images/files/".getExtension($entry).".png"; if (file_exists("./".$imageOption)) { $image = $imageOption; } echo ""; echo ""; echo ""; echo ""; echo "\n"; if ($bg == $bgLight) { $bg = $bgDark; } else { $bg = $bgLight; } } } } closedir($handle); echo "
'; echo "["._BACKTOPARRENT."]"; echo 'Multi-Delete->'; echo ''; echo '
".$entry."  "; if ($cfg["enable_maketorrent"]) { echo ""; } if ($cfg["enable_file_download"]) { echo ""; } // The following lines of code were suggested by Jody Steele jmlsteele@stfu.ca // this is so only the owner of the file(s) or admin can delete // only give admins and users who "own" this directory // the ability to delete sub directories if(IsAdmin($cfg["user"]) || preg_match("/^" . $cfg["user"] . "/",$dir)) { echo ""; echo ""; } else { echo " "; } echo "
"; // Can users download files? if ($cfg["enable_file_download"]) { // Yes, let them download echo ""; echo "\"".$entry."\""; echo "".$entry.""; } else { // No, just show the name echo "\"".$entry."\""; echo $entry; } echo "".$fileSize." KB".date("m-d-Y g:i a", $timeStamp).""; if( $cfg["enable_view_nfo"] && (( substr( strtolower($entry), -4 ) == ".nfo" ) || ( substr( strtolower($entry), -4 ) == ".txt" )) ) { echo ""; } if ($cfg["enable_maketorrent"]) { echo ""; } if ($cfg["enable_file_download"]) { // Show the download button echo ""; echo ""; echo ""; } // The following lines of code were suggested by Jody Steele jmlsteele@stfu.ca // this is so only the owner of the file(s) or admin can delete // only give admins and users who "own" this directory // the ability to delete files if(IsAdmin($cfg["user"]) || preg_match("/^" . $cfg["user"] . "/",$dir)) { echo ""; echo ""; } else { echo " "; } echo "
"; } // *************************************************************************** // *************************************************************************** // Checks for the location of the users directory // If it does not exist, then it creates it. function checkUserPath() { global $cfg; // is there a user dir? if (!is_dir($cfg["path"].$cfg["user"])) { //Then create it mkdir($cfg["path"].$cfg["user"], 0777); } } // This function returns the extension of a given file. // Where the extension is the part after the last dot. // When no dot is found the noExtensionFile string is // returned. This should point to a 'unknown-type' image // time by default. This string is also returned when the // file starts with an dot. function getExtension($fileName) { $noExtensionFile="unknown"; // The return when no extension is found //Prepare the loop to find an extension $length = -1*(strlen($fileName)); // The maximum negative value for $i $i=-1; //The counter which counts back to $length //Find the last dot in an string while (substr($fileName,$i,1) != "." && $i > $length) {$i -= 1; } //Get the extension (with dot) $ext = substr($fileName,$i); //Decide what to return. if (substr($ext,0,1)==".") {$ext = substr($ext,((-1 * strlen($ext))+1)); } else {$ext = $noExtensionFile;} //Return the extension return strtolower($ext); } ?> torrentflux_2.4/html/multi.php0000755000004100000410000001164411017367654016717 0ustar www-datawww-data $element) { # since we only have the .torrent file, get the stat $alias = getAliasName($element).".stat"; # this is acctualy a copy and paste from index.php since its not a function # and we need to call it serveral times in a row $element = urldecode($element); if (($cfg["user"] == getOwner($element)) || IsAdmin()) { # the user is the owner of the torrent -> delete it # FIRST delete data, then the torrent if ($action == "data") { require_once('BDecode.php'); $ftorrent=$cfg["torrent_file_path"].$element; $fd = fopen($ftorrent, "rd"); $alltorrent = fread($fd, filesize($ftorrent)); $btmeta = BDecode($alltorrent); $delete = $btmeta['info']['name']; if(trim($delete) != "") { $delete = $cfg['user']."/".$delete; # this is accutaly from dir.php - its not a function, and we need to call it serval times $del = stripslashes(stripslashes($delete)); if (!ereg("(\.\.\/)", $del)) { avddelete($cfg["path"].$del); $arTemp = explode("/", $del); if (count($arTemp) > 1) { array_pop($arTemp); $current = implode("/", $arTemp); } AuditAction($cfg["constants"]["fm_delete"], $del); } else { AuditAction($cfg["constants"]["error"], "ILLEGAL DELETE: ".$cfg['user']." tried to delete ".$del); } } } @unlink($cfg["torrent_file_path"].$element); @unlink($cfg["torrent_file_path"].$alias); @unlink($cfg["torrent_file_path"].getAliasName($element).".prio"); AuditAction($cfg["constants"]["delete_torrent"], $element); } else { AuditAction($cfg["constants"]["error"], $cfg["user"]." attempted to delete ".$element); } } } else if ( $action == "fileDelete" ) { $file = getRequestVar("file"); // Lets delete some files if(is_array($file)) { foreach($file as $key => $element) { $element = urldecode($element); delFile($element); } } } if ( isset($_SERVER["HTTP_REFERER"]) ) { header("location: ".$_SERVER["HTTP_REFERER"]); } else { header("location: index.php"); } function delFile($del) { global $cfg; if(IsAdmin($cfg["user"]) || preg_match("/^" . $cfg["user"] . "/",$del)) { // Yes, then delete it // we need to strip slashes twice in some circumstances // Ex. If we are trying to delete test/tester's file/test.txt // $del will be "test/tester\\\'s file/test.txt" // one strip will give us "test/tester\'s file/test.txt // the second strip will give us the correct // "test/tester's file/test.txt" $del = stripslashes(stripslashes($del)); if (!ereg("(\.\.\/)", $del)) { avddelete($cfg["path"].$del); $arTemp = explode("/", $del); if (count($arTemp) > 1) { array_pop($arTemp); $current = implode("/", $arTemp); } AuditAction($cfg["constants"]["fm_delete"], $del); } else { AuditAction($cfg["constants"]["error"], "ILLEGAL DELETE: ".$cfg['user']." tried to delete ".$del); } } else { AuditAction($cfg["constants"]["error"], "ILLEGAL DELETE: ".$cfg['user']." tried to delete ".$del); } } ?> torrentflux_2.4/html/themes/0000755000004100000410000000000011026130110016277 5ustar www-datawww-datatorrentflux_2.4/html/themes/mint/0000755000004100000410000000000011026130107017254 5ustar www-datawww-datatorrentflux_2.4/html/themes/mint/style.css0000755000004100000410000000735411017367654021165 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #ffffff; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/mint/index.php0000755000004100000410000000051111017367654021117 0ustar www-datawww-datatorrentflux_2.4/html/themes/mint/images/0000755000004100000410000000000011026130107020521 5ustar www-datawww-datatorrentflux_2.4/html/themes/mint/images/messages_on.gif0000755000004100000410000000312011017132666023526 0ustar www-datawww-dataGIF89a1 æ+6On&FW.:|“ŸebvŽš ÐÂ'åÓ”ž¤òÛ"CUm‚ ÍÀ:¼¶¢ -8+Sg‡Om|:”˜¡ Eev~• ’ s~7„Œfƒ’#gv{…4s<^p%\m2Wk/bs#guøß.ÜÍ ÅºŠ—žìÖ íØž¦ªÜËf‚‘3ÓÆ€™¹±h„“ãÐ;¢£v‰“Yt‚ Ùȱ«­©7ȾŠ{’Ÿ—¢–ª´(Od.Ui:J)2&Ma6Cc{‡þã¸Âȧ­°±´µ úá;°¬ôÝ•¡À¶óÜèÓxœz’–˜üâ5B ÑÃ}“ &EU(åÓ'Maž°¸Kk|`~•Ÿ¥óÛ¡²¹Rqgƒ’&EV_}Œ ±¹&L` ˆ£¡j†”"u€HizHgx1duaŽ(^oQo}œ­¶%iw:…Ž‘”5YmUtƒuŽš ÜË;•˜.9y‘c€.:+Rg"DV(Pe!ÿ NETSCAPE2.0!ùd,1 ÿ€A„…†‡ˆ‰Š‹C@~‘’“”•–—˜Yu >Ÿ ¡¢£¤¥¥Lœ¦«¬­Ÿ1<ª( G ¶4 "µ("½4À +º +µÄ+ ÏŰ² /5Ú5 DÒ /´"¿ Òººà (Ø  "/ çÏÕ³Òûç+Åñ%âm z¡hÀï<$½\(x0ßµ†¿IQDm uÑà÷ñ\»iVÌ«!BÝ®7±ôaëG¯—®^+@€øïÂ?Ƙõz§ÀØÎ^])ýäñ˜;SIûHJµªÕ«tºtY±æêÔhxP)3Æ€Ù³hÓª]Ëvm_®¨±s ®Ý»xóêÝ« #!ù ,1 ÿ€A|„…†‡ˆ‰ŠŠC@ ~“”•–—˜™™Y` >¡¢£¤¥¦§§{ž¨­®¯¡¬'O¸8!·'!¿8Â,¼,·Æ,ÑDz´ 0:Ü:RÔ0¶!ÁÔ¼¼â'Ú!0éÑ×µÔýé,ŽýðXN¸uøu‚¿PòœüB á`Â}Ùj G-„Ž:º9ä…Ã_ÈtïªýaQOGv½ÌÌâ§íŸ½_¼~±èÐ! < O sö+d=a„Å4ÈdðP]ËãçOŸ«X³jÝÊÕM•*wÒpÅú#*B¸ìY˶­Û·pãÂmу̕-PôèÝË·¯ß¿€ÿFÑb$!ùd,1 ÿ€Ay„…†‡ˆ‰ŠŠ|Cb@ ~“”•–—˜™™By >¡¢£¤¥¦§§zž¨­®¯¡-;¬) S¸6 $·)$¿6 %¼%·Æ%ÑDz´ 27Ü7MÔ2¶$ÁÔ¼¼â)Ú  $2éÑ×µÔýé%Žýq0 E¸yø•¿PòŠüZá`Â}Ùj GÄ 7º9äeÃ_Ètïªý)Qï v½ÎÌâ§íŸ½_¼~•ðà! ¼ S sö+Þd=a„Å4ÈdðP]ããçOŸ«X³jÝÊ5Ž/%æpÅú#Œ•!BÚX˶­Û·pã ӃŒ˜QèÝË·¯ß¿€ÿZ!c$!ù ,1 ÿ€A|„…†‡ˆ‰ŠŠC@ ~“”•–—˜™™Y` >¡¢£¤¥¦§§{ž¨­®¯¡¬& K¸9 #·&#¿9 *¼*·Æ*ÑDz´ .3Ü3JÔ.¶#ÁÔ¼¼â&Ú  #.éÑ×µÔýé*Žýy°ØI¸}øeâ¿Pò’üJ°á`Â}Ùj GmÄŒ3º9ä•Ã_ÈtïªýQQoÆv½ðÌâ§íŸ½_¼~©øð! ¼ M sö+^d=a„Å4ÈdðP]ËãçOŸ«X³jÝÊ• ,*äpÅú#*B¸ìY˶­Û·pãÂmу̕-PôèÝË·¯ß¿€ÿFÑb$;torrentflux_2.4/html/themes/mint/images/admin.gif0000755000004100000410000000065211017132666022322 0ustar www-datawww-dataGIF89a1 Õ"CU-8h„“—¢øßüâ#guãб«’{… ÙÈÀ¶f‚‘ìÖ—«µ%DU:J7Dk†•Hiz!CT(Odxœ*5)25B.:)Qf¢³ºþã¹ÃɃ˜£b.Ui•¡+6&FW'Mb`}œ­¶&L`UtƒuŽšòÛ ÍÀ¡ c€w›"DV.:+Sg(Pe!ù,1 ÇÀ i#+Ȥr¹””0@lJ­Z¯ØlÖ¤ T,´°xL/Êâ]æ4F{fÑïâ™`¿/Xk,4.…-… .-.„ lz|rs 4 v,‡4£¦-”{}tu‡«ŽµŽ··h•®l.g vŸ†º¶¨Ç¬–t,,‰‡‘µÔ¹¨Ô¼­—xÜÝyÚ43âãäåæçèç" )'/ñòóôõö÷õ! +0 H° Áƒ/ ø;torrentflux_2.4/html/themes/mint/images/profile.gif0000755000004100000410000000073511017132666022674 0ustar www-datawww-dataGIF89a1 Õ ÍÀìÖ-8{…"CUãÐ#gu—¢h„“ ÙÈÀ¶’üâf‚‘±«*5—«µœ­¶b)2•¡7D ÎÀUtƒ)Qfƒ˜£(Od'MbHiz.Ui`}!CTuŽš¢³ºóÛ£¡¹ÃÉ+65B&L`:Jxœ ÚÉ%DU&FW.:k†•øß¡ c€òÛw›"DV.:+Sg(Pe!ù,1 úÀI©U+Ȥr¹¬°(mJ­Z¯Ølvs|4·°xL.›Ã†@"qc—1 Š€p®ÛÇ0÷Mf¶!sa2 /…ia/b022/7 20//7/ ||i2a~€t{‘š7z7 ’Ч0™ž7 7 7¤{‚Å ‘a¸Å|Ä70ÌºŽŽÀ¦ÎÚ7/ÎË¢0³Î/¶2ÓÄ0±½ØÅÏΙŒÞ2æËÞ™é|¡¶ÞÙI†‡Þƒïl(\¸P„ †6FX€H±bÅ.2˜8á!†Ç CŠIR¤„B¬àb†Ë—0cÊœIsfŠ$‚;torrentflux_2.4/html/themes/mint/images/messages_off.gif0000755000004100000410000000075411017132666023676 0ustar www-datawww-dataGIF89a1 Õ#guìÖøßãб« ÙÈÀ¶þãüâ"DV*5&MaóÛ6C.:}“ &EVh„“¹ÃÉbc€On~¡²¹£¡—«µ.Uiz’On)2(Od °¸%iwey‘‘”:J{…’¡  ÍÀòÛ+Sgf‚‘|“Ÿ"CU-9(Pe!ù,1 ÿ@Ž¢E,ȤRéh@#–tJ­Z¯XlbQi±:®°xL.›ÏgJÈ‹n»ßá”jÅ6Pˆ¾ä* P$w%.‚(|'w.†'‘‡rt,.&.œ'”$v'”|&|¢$š(.(.$©‘—u”&½©‡.'€œ$'¾a²(%ÇÉ»™ÏÚ¡”$Î|¾á©¯•.µ¬}s¼š¿¶|$$Á²%Á rô' Dýþ`ƒÃ0 ¸D°Ð\rÀEŠ‹3jÜÈñDpĘ!ƒ &¨Xɲ¥Ë—0c¾ƒ4¬ØÉ³§Ï Ÿ@ƒ}`AB;torrentflux_2.4/html/themes/mint/images/progressbar.gif0000755000004100000410000000021211017132666023553 0ustar www-datawww-dataGIF89ad³dÕÜ]–´dÜÜa­Ìa¬ÌdÜÜdÙÜdÜÜa¯Ì^š¶LLLLLLLLLLLLLLLLLL,d?ðˆI«½8ëÍ»/`A`žhª®lë¾p¼È@ xnß:Î÷„Û¯G,ڌŠo¸C‰€tJ­Z¯Ø¬vËí^;torrentflux_2.4/html/themes/mint/images/torrents.gif0000755000004100000410000000070611017132666023112 0ustar www-datawww-dataGIF89a1 Õ5ˆ,:s4ŒŒŒû?]<,­"Ö(¼á ===|||‹‹‹///BBB(((ë­­­%%%www222###«««¥¥¥fff&&&xxxJJJDDDeee;;;ŽŽŽÀÀÀø0›%ò%ÊzzzHHH''':::EEE!ù,1 ã@JäD,ȤRé`$0”tJ­Z¯Xl§Á9¡6©°›Ïè39mÎ,¼éQˆMGË릒®€# s#"! ""Š)† ~Œ"efy{(q!") )#)!)#)©Ž£wgš|gr!¬¤s¼¤‰"¾¾w s™z¹frŸ¡±À¬«¡Æ w¬ Í›i€‰„Õaeß ãå ÙàÏuõöišœ&üýþÿ ¨A  $”XȰ¡Ã‡#BT`¡B‚ HhÜȱ£Ç ?z€ð!;torrentflux_2.4/html/themes/mint/images/index.html0000755000004100000410000000001511017132666022531 0ustar www-datawww-datatorrentflux_2.4/html/themes/mint/images/bar.gif0000755000004100000410000000325611017132666022001 0ustar www-datawww-dataGIF89adæT…‡(UW_Ž &(/1“¹ººÔÕi—™J{}žÀÁ KN‰±²/_a8ik~¨ªArtBE§ÇÈt ¢/`a±ÎΧÇÉ7ik¨ª9;AC8hkBE8:8:!KN²ÎÎ/_b‰°²ž¿Á¨ÇÈ KOBC~©ªt ¡ˆ±²Aru~¨« MNBrt§ÈȲÎÏtŸ¢±ÍΉ±±9;i–™AstK{}±ÎÏsŸ¢s ¡ÀÁ²ÍÎi—˜BrutŸ¡±ÍÏ9:8;9:sŸ¡žÀÁ8ijJ{~AEh—™Asu8;§ÈÉ0_a¼ÔÕ¨ÈÈJ|}7hk¨ÈɲÍÏ©ªs ¢BsuAEBC©«!KOºÕÕBstJ|~K{~7ij“¸º/`bºÔÖ¨ÇÉ~©«ˆ±±0`ai–˜’¹ºK|}ˆ°²‰°±h–™h—˜8hjAC¿ÁÀÁž¿Áh–˜¨«’¸º“¹¹0_b0`b,dÿ€‚h‚…†R„ƒ‚_†ŒR“–R’—Œ•”…‰R35??;§;$;3$?5$°53³W¯DD$W?5Wµª²?D·®Â3Æ$½;Ê»$5·Ê¸D¤WÆ55ÏÂ;¥$3ÝͳáÁß$VV2SPë(Vi(÷ë2êñâM‘eŸ2ÞY)ˆ/Ÿ +àDž{SÖQ¤øp @|Òø‹˜ð Šu2î݃(á„'ÈŒ™ä¥‚—6cº”ÉSæž0Oļù2 P™F{%Ú3‰Î£ ’Îăgè§yŠžpªÀ€×¯`Êû¦Ìس^ùx5k€-Z°eÿú¼ ¶¬7L0`£×„ ½ â˜Ì@¯ -ü28ü—AaÇ&ZØ`ƒqä-(#–Ób1dÈ+f¼˜´ 9Ž Ní¸sœ½¡p~ðàmÚ/^hÐðË XvÓö­ÁöŠß/º$/®aî5]V¬ð-ýÁ àÑiï¶mü6ôî´ÛF~{Ïõ/Žïý` oáúˆÃ–@B¹ãAJ©$b’)¦”@vy¦l¶éæ›pÆ)çœtÖiçs çž|öé矀*è „h „¡ˆ6†ˆê£ˆBš€¤“6zé¥:`º„¥ˆR§KÀAÅ•&)ªaPꨦ°&°Ä’¢Z+¢phšëŒæ9¸àBá‚ À‚¸À¬¯1@à„³¿þŠlÑÆ ­B@ƒ¯Í. 9øê‚Ñ ¡…¶ÝJëê"ë­1aî·ÓK¯´É*[,².8 °8PpÔáx0†ÁW!°{ ñÿà g@±{ DÃìÆ+a²À"/<ÆÂÌòÉ,WQ°g03ÍuTñðÁXÐ@m˜Q‚?[PBG#]‚Ï DQôÏ@?Ý€DC]ÂÑ~8 õ>mÑO3=õ×S;ÅÕQhýsÕC_½ô×8ísS—ÀÝxç­÷Þ|÷í÷߀.¸ß^,0 ¤8â0^øá7®xá‘#n¹á—ÃæˆCn¹#Œ‚æ)À xé CžÂ醯nøá˜~9ãˆ+¾€é DðAD Âî½óþA| B[DÀE0Á;[0±E¿3<Ë3¡ÂöÅ3¿½ôËw`‡ÿ ÒðÁòæï»ÃïÎ|ó*ø®;ïÚ¿?ñÃKÏû €PDO8B@°nàE8ÂŒpá  7PÀ„`GxB8@#ð¤ h„n!a ø Rð‚Dà Ø¿ÜÀƒ(Ä!  @ ¢‡HÄ"ñˆHL¢—xÄ8ñ‰PŒ¢§HÅ*ZñŠXÌb9P p€" CD|‘jà¢*P2¨aŒm¬‚Æ2rQŽÂÐÈ3ˆ€l£»È¨ yäE ‚3Ìñ‹xT$ÿ¨ÇAž¡‹kdÊèEDà“  ¥(GIÊRšò”¨L¥*M;torrentflux_2.4/html/themes/mint/images/noglass.gif0000755000004100000410000000115711017132666022701 0ustar www-datawww-dataGIF89aLÕ,,,zzz”””kkkžžž;;;KKK[[[‡‡‡[Z[‡ˆ‡[[Zˆ‡‡KKLžŸž‡‡ˆKLKˆ‡ˆ;<;<;;LKK‡ˆˆkjkLKLZ[[;;<ˆˆˆkkj[ZZˆˆ‡ŸžžZ[ZLLLjkkZZ[LLKžžŸKLL<;<žŸŸjkj,Lÿ@€pH,ȤrÉl:ŸP¨aJ­NM›j–ºv»VƒÌ ¾†MtØ+ ¸ßð¸|N¯ÛïvŠ£âp40 ‚"†z  Œ"“{†šz~"z ³´µ¶·¸¹º»¼»¿À¿Á%ÀÃ%ÁÀ4ÇÀÊÊ¿ÏÃÁÇÏÎÈÀØÕÀ ààã  #0-å3åà0 åôæîáîìä#ã#òþÆI'Ÿºâ~¸À@C$ 8TÂaC%:d‘DC/P¡$ !49q$•+bÄxR#ÈŠ)ØÉ³g”PØ@±3„‹¢?}*]Š”iPŸ!ˆu: ªÕ«X³jÝʵ«×® ¨X`A……'Ά‘!ì‰ @À…Á-Ù¸ "ˆ B"´y˘3kÞ̹³çÏ ?]cÅèFÇ8mútêÓ£S¿>°6êÙ¶˜Æ;vnÔ£ƒ;torrentflux_2.4/html/themes/mint/images/home.gif0000755000004100000410000000064611017132666022165 0ustar www-datawww-dataGIF89a1 Õ-8"CUÀ¶h„“—¢üâìÖ{…ãÐøßf‚‘#gu)Qfœ­¶.Ui5B&FW'Mb!CT•¡—«µUtƒ¹ÃÉ)2%DUbuŽš.::J`}¢³º’xœ*5&L`+6ƒ˜£Hiz(Od ÙÈk†•7D¡  ÍÀòÛc€w›"DV.:+Sg(Pe!ù,1 ÃÀËh+Ȥr¹LABœÀkJ­Z¯Øl6RHL²°x,øŒÏè´ZÆPLux¥’Ûå±n_±þa2 ~2, uky{qr+‹'*+2*22   ,a,xz|•utt¨2©²¨*³j’¬k°tšœž³Ã³‹‘«”½®u‚„ñ~,ǺÉwØÙg»q1Þßàáâãäã($"-íîïðñòóñ %.ýþÿ (D A;torrentflux_2.4/html/themes/mint/images/history.gif0000755000004100000410000000070211017132666022727 0ustar www-datawww-dataGIF89a1 Õ-8"CU{…øßh„“—¢ ÙÈìÖ±«ãÐÀ¶üâ#gu’f‚‘`}!CT&FW¢³ºb.::J%DUUtƒ)2þã¹ÃÉ.Ui*5Hiz+6xœuŽšóÛ ÚÉ—«µ7D'Mbƒ˜£)Qfk†••¡(Od&L`œ­¶5B¡  ÍÀòÛc€w›"DV.:+Sg(Pe!ù,1 ß@Œ‡B+Ȥr¹$E8•ÀlJ­Z¯Øl¶t@T¶°8ÜPŒ ã°9Ín‡OŽ à¶¹^õ0,ϯ su.06{00 h‹‡ 0am~€tn. 6x{  ‡{ xŸ6 ahl›ž«£¡ .ˆ6/½¾{6ª ‡´¶mwv¹x {©« Ã „nµË¸¾/60°¾¯xšÉÚ|ínÆØë65ôõö÷øùö!"ú5(L´Xñ †Áƒ*\ÈPá#$XèB†Å‹3jÜÈqã‚;torrentflux_2.4/html/themes/mint/images/directory.gif0000755000004100000410000000074211017132666023236 0ustar www-datawww-dataGIF89a1 Õøß’-8"CU#guh„“—¢À¶{…±«ìÖãÐ ÙÈþãüâf‚‘Á·Hiz%DU.:5B.Ui)Qf¹ÃÉ:J(Od+6&L``}'Mbœ­¶ ~†ƒ˜£¢³º)2•¡—«µbuŽšxœk†•Utƒ&FW*5!CT7D¡  ÍÀòÛc€w›"DV.:+Sg(Pe!ù,1 ÿ@‘fB+Ȥr¹l©V˜ÁlJ­Z¯Øl¶“°2¶°8p°1Äèt8P»Ñ–ÇH0p»^ï÷Ë•× ti0„x060 /0x6 ‰/|/‰ m/eaubx/†ˆˆ¦6 {‡6Ÿ6 6­¡€‚b{6wˆÈ6 „0–|a{ÇÈž½b¢Ãa°¨È‡¾­ °.³.µ6·¹Ï 0 hÙ¤b …Þa.„gˆ‰ –`hz Ašx}*Dcí °:5"JœH±¢E‹| X 8ÄI²¤É“(Sž,ñ€D LȘI³¦Í›8sâ<ááB;torrentflux_2.4/html/themes/mint/images/proglass.gif0000755000004100000410000000501111017132666023056 0ustar www-datawww-dataGIF89añæÿ]ÅüýéêÄͦD‰Á]§¡ƒ¥ÆÜÚúÙÙ~“®Á1„Vi‰~Uo‹£ŒEkÀ¸¾?“åÿñýÿïÍÿìž·Æ}`€ªøåØ]µ/gåÿêªn‘úÎÚ‡1TÿsØÿÿïÈÅÏÀ°Äë²Î`XtëØØšZyÿÞèÿéàÿÉæÚ‰Á¦ž¹ë_¾ÿ†Ûº{Ÿ¯d”دÃq§¼”Ro…o’>x—ªÎÑÿrÑÛœÀÿˆàÑÓíÑÿ´æž*1Ü>¡ºp »Èÿüé—c…av•·‹«ÇŠªçH®ÿ™Þ:[u­*^ø¯ÚÈq¯í‹Î`–°òU»Íˆ³ýƒÔø™Ø˜*@ØÙÙÔr¹ÿzÝÖïãÿ²àÁ÷äÿ”á¤5y³Q˜Óœ·ÎL§+FázÄórÊP†¤ÿgÎíìáäÜá;Ÿ:i¤b…mƒ¢Óÿò².u´âÛÿ£ã¦*CCbîD­úN¹Ð6’ð|Ìâ®Ä¼,påkÀ£TŠ÷ÂÙÖC£ÿ€Þã›ÉáP±ñ¸ÔÿïéùiÈŒ¥»*]x´ÿí¾ÿó*h†,ñÿ€~‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ‡e ¡¢£¤¥£eª«¬­®°°´µ¶·¸º¼¾¿ÀÁÂÃÄÅÆ==ÊËÌÊyÏÐÑy$ÔÕÖÕ&ÙÚÛÙ8&8àáâáh8hçèéêUìíîïð5òóôõôu5uúûüýúQ HP`Ÿƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠd(¡¤É“(Sª\yƒ 0cÊœISf€›8sêÜ©³GŸÍ‚ J´¨´£Ò®)%a‚)·§Ú¦˜˜BµªÕ«S†dµ«×¯^U Q!–¬Ù³hӢ堂-‡·pÿãÊK·®]¹òêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžLÙ/•˘3kÞÌ9³*Ÿ¥ˆMº´iÑ_¤|Yͺµë׬K|)A»¶íÛ¸sëÞÍ[7‰~®¡¸ñãs’+_>LjóçС71Ò¤ºõëØ›0Ñ®‰÷ïàËg2ƒ|ùèÓ«_Ï~½—÷ðãËŸO¿~|0øóëßÏ¿¿ÿÿ(à€hà&¨à‚ 6èàƒF(á„ýaá…f¨á†Ðáxâˆ$’ø„O¤¨âŠ,®(Â"Ä(ãŒ4Òx€Àá8ÜŽ<öèãÄ'äÌ1‡Ç‘H&‰ÿL6yOÞ å”TÞ€„•Hd©å–Zºáå—`†ÉŘd–9¦\ ©‡šk¶éæ›m tÖiçxæ©çžtÚà矀*è „j衈&ªè¢Œ6êè£F*餔Vj饘f:¨ œvêé§ †**¨ÈPª¨¦ªêª¬¦*ª¯zðª³Òjë­¸æªë®¼öÊk“ÀËäÂðƱoØ‘¬Ì6묳' q´ÔV»Å [d«í¶ÜÆáí·à† n ä–kî¹è*¡îºì¶ëî»ê²!ï¼ôÖk¯½<ä«ï¾üöëï¿,ðÀlðÁ'¬ð 7ìðÃG,ñÄû;ÁÿÅðñÆwìñÇ {üÆ#—úñ|ì‚ IÈBòˆL¤"ÉÈF:ò‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉN’ÿ   ¥(GIÊR’’d@%VÉÊVºò•«,dÙÂYÂð–+(@.ÈË^úò—À ¦0y¹ƒ(Zñ˜SdÁXÀÌf:³™W`A4å0Í+ÈášÖ¤¦6Ã80vó›xÀÂ9ÎrŠÓá<§Ûhv> ïŒgæIÏzÚóžøÌ§>÷™8ÌÓŸýL@ JЂô M¨BÊІ:ô¡¨D'JÑŠZô¢ͨF7ÊÑŽz¡?iHc R’Šô¤(M©JU ƒ´0©LgJS™ú7Í 2àƒ ðÔ§@ ªP‡JÔ¢õ¨B}æ3ÇÀ‚18õ©Pƒ¤zͪZõª×ÿ€´Zήzõ«V(gXÇj…²šõ¬hMkYÍpV¶ºÕ fˆ«\çJ׺Ú5®pÈ«^÷Ê×¾úu¯¬`KØÂö°ˆM¬bËØÆ:ö±¬d'KÙÊZö²˜Í¬f7ËYÃ*à³ Uh ÚÑšö´¨M-h)ðYÖº–°­lgë Ôö¶¶õÁmuËÛÞúV·Q ®p‡KÜâBucr—+æ*W/€®t_@Ýê¾ ×mÀÀÝîz·»b¯xÇ;^+„×¼èCY7`… ´·½ˆ¯|çKßúÖ·À¯~‹Àßþú÷¿°€ àÎøÀN°‚Ìà;øÁ~¬ÿ&ü‡ SØÂΰ†7¬†t8 ±ˆGûùÏ€´ MèBÎDH´¢ÍèF;šÑ!Ht¤‰éJ“øÒ˜ñB°€N{úÓ 5¨_°RïøÔ¨NµªUÝ㻚»b2‘gmd&ÛúÖZØ–wÍë,gÙËÀ¶r0lb;ÈN¶²—nÍìf;Ù‡Ž¶´§Míj[ûÚØÎ¶¶·çFóáÑà7¥%Mi;Ó—Þ´º9ÍnQ»»Ó¦.5uå­ê¬úÞø¾nv÷ýêïÆZÈŸµx‘|äZߚɹN¸®Þë†ûÚ ¿¶—‰­åc?ûâ¿x ;torrentflux_2.4/html/themes/G4E/0000755000004100000410000000000011026130101016656 5ustar www-datawww-datatorrentflux_2.4/html/themes/G4E/style.css0000755000004100000410000000754211017367654020574 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #ffffff; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} .links {background-image: url(images/gentoo2.png); background-repeat: no-repeat; background-position: right;} torrentflux_2.4/html/themes/G4E/favicon.ico0000755000004100000410000000607011017132666021027 0ustar www-datawww-dataBM8 6(    ØÏÊÜÙ×Û×ÔÛ×ÔÛ×ÔÛØÕÛ×ÕÙÓÏ×ÌÄÓ¹λ®Ê³£È«šÅ¦‘áŒÂŸ‰ÂžˆÂŸŠÄ¢Æ¦”É­›Ë´¦Ð½±ÔŽ×ÎÈÚÕÑÛØÕÛ×ÔÛ×ÔÛ×ÔÜÙרÏÊÜØÕàààààààààààáàààÝÙרÎÈÓùη©É«™Ä¡‹À™€½’w»Žqº‹mºŠlºŒn¼r¾”yÁ›ƒÅ¤Ê®Ïº­ÕƽÚÒÍßÛÚàááàààààààààÜØÕÝÙÖááááááááááààÝÙÖØÍÆÑ¿³Ë± Å£À–|»Œn¶ƒa±{X¯wS¯uQ®uP¯uQ°wT³}[¸…e¼rÁ™€Ç¦’Í´¥ÓøÙÐÊÞÛÚáááááááááÝÙÖÞÚ×âââââââââßÛÙÙÎÆÒ¿²Ë®œÄž†¾s¶‚`°wS³xR»Xć`ÊfËgÇŠc¿ƒ\¶zT¯uO°yU¸†fÀ•xÅ¢ŒÌ³¢Ô÷ÛÑËàÞÜââãâââÞÚ×ßÛØããããääáÞÝÛÑÊÔÀ´Ì¯œÄ…¼n±zW¶{UÌhá£}ï°Šö·‘øº”øº”ö·‘ð±‹å¦€Ô—p¿‚\¯tO²}[¿’uÆ¢‹Î³£ÖÅ»ÝÕÐâáàããäßÛØàÛÙäääããâÞ×Òׯ¼Ï³¢Æ ‰»‹m²zUÇŠc䦀÷¹’þœÿÉ¢ÿͦÿϨÿϨÿÌ¥þÆ ü¿˜õ¶ç©ƒÒ”n¶zT°xU¿’uȥѸ©ÙËÂàÛØäääàÛÙáÜÚåååâÞÛÚÍÆÒº«É¦¼q´{VÑ“mð±‹ýÁšÿÌ¥ÿÕ®ÿܵÿá»þã¼þâ»þ߸þÙ²ÿЩþÆŸùº”쮈ڜv»~W®wTÁ–zË«˜ÔÀ³ÜÒÌãàßáÜÛâÝÛåääß×Óןΰ˜~´{WÑ“lð±‹ýÀ™üÉ¡ñË¥ïÓ­÷ä½ýòÊþöÏþöÏþòËþëÄþáºþÖ¯ÿÉ¢ùº”ꬆٛt¹{T°zXÇ¡ˆÐ¶¤ÙÊÀáÛØáÝÛãÞÜåáßÝÒÊÔ½­Ê§µ`ÈŠbë­‡ú¼–컕µ”y›kœmª“|ǸœéãÅûúÛÿÿÜÿüÕþòËþå¾þ×°ÿÇ¡õ¶å§€Ò“m±tM·ˆiήšÖ¶ßÕÐâÛØäÞÜãÞÚÛÌÂÒ·¦À•zº}Vß¡{õ·øÀ˜¯†k˜j[²~n°zi¢o\”eTzj°žìåÑþþâþþÙþóÌþâ¼þÒ«üÀ™í¯‰ÜžxĆ_«qLÆ ˆÕ½®ÝÑÉáÙÔäÞÜâÚÕÙǼϰµ€^Ìfé«…û¾—ä´±€mÓŸ‘Ø©œ×ªÔ¨™ÊŸŽ¶†užlZ£oÑIJø÷ÛþüÖþíÆþÛ´ÿÈ¢ô¶á£}Ð’l±sL´…fÓ¹¨ÜÍÃà×ÐäÝÛá×ÒÙÅ¸Æ¢ŠµyRÙ›tþÃœåº–È˜ŠØ³§×¶©×¸«Ø¸¬Ù¹­Ú¼¯Ò³¤»Œzžm\¹ ŒïëÊþóÌþâ»ÿϧù»•樂Ԗp½~W©pLί›ÛÊ¿ßÔÎäÝÚá×ÐÙŸ½’v¼~VÝŸyñ²ŒÿÆŸôΦϦ׸¯ÛÇ»ÚÇºÚÆºÚ÷۾²Û¾±Ûµͨ˜©s`±ŽvæÚµýä½ÿÒ«û¿˜é«…Ö˜rÃ…^§jCÅ¡‰ÜÊ¿ßÓÌäÞÚâ×ÐÙÄ·¶…fÃ\Þ zñ²ŒÿÇ ýÙ²çΩбÝ˾ÝÎÀÝÍ¿Þ̾ÞʼÝôݼ¯àÁ³Ù¼«¹†t¯…mâÆ¡ýЩü¿™ê«…Ö˜rŇaªjC¹uÝÌÀàÔÌäßÛãØÒØÃµ³~\ņ_ÝŸyð±‹þÆŸÿÙ²ûêÂåÖ³Õ·¦áÎÀâÐÁáÏÀâÏÀâʼâÁ²â¹ªâº«á³Ř†³ƒk渔ù¼•é«„Ö˜rĆ`«kD³„gÞÍÂáÕÎåàÜäÛ̦ͯ°zWÄ…^Úœví®ˆýÁ›ÿÕ®ÿèÁûôÍßҳάœâ;åÒÄæÒÃæÐÁæÄ¶æº«æ³£æ± æÂ³Ê¡½…jæ¨Ó•oÁƒ]ªkC¯€aßÏÅâ×ÐåáÞåÞÙÙÇ»¯xUÁ[Ö˜r穃ù¼–ÿΧûÛ´âϪµƒ£weÕ§–é×ÇêÖÆéÕÆêȹ黫鲡譚驘éÁ²Ò¤Žß¡|á£|Ï‘k¾€Z§h@¯€báÓÊãÚÓæâßçáÞÞÏÆ°|[ºzSÏ‘kà¢|ó´ŽüÃœÚ±Ž¨}gº…rÛ­›éͼìÙÊíÚÊîÔÄíË»ì»ªì±žíª˜ì§”í¨•ä©’ÝŸzÚœuÉ‹e¹{U£c;²‡kãÙÒäÜØåâßèåãâÙÒ³†i²qJÈŠd×™s髅ﵑēzÖ¦•ò×ÇòàÑïÞÐï×Ç鹩٬šÜ°¡ï±ð³¢ð­œð«˜î¤’ÝŸ‚Ý¢}Ò”mƒ]³uO]5»—€æßÛäÞÜäàÝèèçæáÝ¿†§h@À[Ï’lᬊ㯎౞öâÕóäÕòáÓóäÕòÆµÔ Ž¶“ƒÛ²£õɺó¹©ôµ¤ó¯žã§ÞªŠÜ¨‡Î˜v»}W«mF™[4Ì´¥èäâäàÝäßÜèèéèåäÒ¿³¡e>¶wOÍšzܰ“ⳕݱ›ñÛÏ÷èÜöæÙöæÚôàÓêɺêŵôÔÅöǹ÷Á²õº«æ±œß³—᳕תŒÎ¡…»†e¡`9žiEÝÑÊèæåäàÝäßÜèèèèççäÞÚ®€b¨h@Τ‰Ù³›à¹ ß·Ÿå³øèÞùìâøëàøìáúèÞùßÓùÔÇúÍÁôŷ缪㽥佤ݷžÕ¯–Ï©‘¿’u•T*·“|éæäèèèäßÜãÞÜççççèèéèèÏ»¯œ]6É¢‰Û½ªÞ¿«âïàÀ®èÍÀ÷èßúïçúëäûäÜûÝÔùÖËðË¿æÅµåÇ´çÇ´â¯ܽ©Ö·£Ô·¤¶‰m˜^9ÛÐÉèèèçèèãÞÜâÝÛæææææææçççå䱈o´„fàÌ¿ßȹã̽æÎ¿ä̽çÐÄïÜÓõàÙõÞÖñØÎëÑÆçÐÁéÒÃèÑÂåοâʼßǸÛĵÙõ¡kI¿¢ééêææææææâÝÛáÜÚååååååååæççèßÙÕ«~`Õ¼¬èÚÒæÖÌéÙÏêÛÐêÚÐéÙÏêÚÐêÚÑêÚÐëÜÒìÜÒëÜÑéÚÐçØÎåÖËãÓÉçÚÒÀžˆ­„jæåäæççååååååáÜÚáÜÚååååååååååååçéêØÍÇ·‘zå×ÏðèãíãÝîåÞïåßïæàðæàðæàðæàðæàïæßîåÞîäÞíãÝìâÜðéå×´²ŒtàÜÚæèèäääååååååáÜÚàÛÙäääääääääääääääçéêÙÑÌç–èÛÓù÷ööòðõñîöñïöñïöñïöñïöñïöñïõñîõðî÷óòøõóÚǼ¿¢àÝÜæèéääääääääääääàÛÙßÛØããããããããããããããããããåçèàÞÜͺ®ÞÏÆõòïýþþýþþüüüûûüûûûûûüüüýýþÿüüüðéåÓÀ´Ì»±ãäåäåæãããããããããããããããßÛØÞÚ×ââââââââââââââââââââââãäã俨ÓÐÔÈ¿ßÓÌéáÜóïìõòðöóñõòðñìéåÜÕÚÍÄÒżÛ×ÔäæèâãâáâââââââââââââââââÝÙÖÜØÕáááááááááááááááááááááááááááâããâãäÝÛÚÙÓÐÙÓÏÚÒÎÚÒÍÚÓÎÙÒÎØÔÐÞÞÝâäåâââáááááááááàááááááááááááááÝÙÖÜØÕàààààààààààààààààààààààààààààààààááááââáâãáââáââáââáâãáââàààààààààààààààààààààààààààààààààÜØÕÔÈÁÙÑÍØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐËØÐÌØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊØÐÊÙÑÍÔÈÁtorrentflux_2.4/html/themes/G4E/index.php0000755000004100000410000000051011017367654020526 0ustar www-datawww-data.]ƒ9“Ö`z€ƒß(“cÈ„G‡é"7­.7þŒ<4ôE0™Ž]Çk¦«¹T͇¦ËÕ\#”ihÈ´öÐp¹Ö |£©r}?†_ÖôKrCp_-o Á±&ÀO&–ð`:!ùNq˜\xJSp5„-á¸!|ù  Ê%üõ— Á¥T — ‚?ðà:n6›Hn6p4à)ƒ[˜¿ÓBF¿!ƒ8…CÐ%ൠ_à ÇËËË«CC« £‰Uøœäš^Z~I6 •ð—ðÁ  y¹ê‚Û 8Ô—F#’ÉѧԑêAAÐüš¼64D2þúõº¬C„*áÃÀ¡nt]pŠ!èv ¹ƒø>äæêCC!þ+²Çø*ˆ£å‚ðÉå!Áñ€%‡e7þI€/"8Åà†¨—»Ú?“ƒÓ†ºJU'wÐ/ƒÊÿË"C~T A¼êTª U½¬u¢ÛÉU=XŸ6LO#Xä…?)ƒA¢Ó¯ÀSëøªO'& Úá­Ÿ“íÎú|° ë évÕ%áÏHïøwøÀ<È6´{ï>üŒìf£vO›ŸèL–ÿŽTüsžÊ6o³Ùív-vçuÿH>ækvN±͇AaøxI':¾Þ§§ÚQT r·}üÙ™Å7÷÷÷µGÉgð˜ðxºPø “o”E4|€Pâ âð°ö%Ù>l ÄfÛý–ÀKÐÓeDun§¶{[´%8ë6˜£òÞáá…Nr³äuúQ û> Q¹——)˜ºö˜Í‹áûû{x?½ßÇ?õädkë„ö6:ȱaÞY.Ÿœ4èö6{{{0Š’=„l^\¼?<¼½=ɆýÈ=ÉçkyˆC΃’ ^/ët®ç zÎ d …[s@)ÙØ"Èð凇jØï/6_Å€<\o#‹Þ3Ñétæó'eLÄï/€ÌF ¬ÍfJŽf³ñ@–’ýe Y½ÃwÃl‹ôžm«5D¯—Ëe8µœ L;ÔÕåöHàÅÅ·Ù‚"à®#7ŠY·Áó]P!ƒå’ºÆ={Ñëëë¹0ÖCYÎɈÖéàÔÂ8žîtrpc1k ã`eò´÷ ÈÖÇ!™(¿ßÕe|iÐaÊ}û¦Ó­¯ëÊ‚ÌYc1‹¥ä•“Fr ,÷§­VîéÉ9€rnú=´ÐÑê ä·T@ä|z°ÀbÉ‹h‘’—KÛ¥þþL ÉOpðkÑç.LCóí½LKäo Q… Ÿ°Õb±è·½ˆÆšò‚w»T©dÔV+!ãiëž.»Ë­€Ã]‹›¡—xø^ýz4‚>Àò“•XVW¶Ïˆé8!‹`¹’Éœ'fnà‰ßâRáVÈ æwÄY-!¿yú>û–`A_ÿy¢òÊ£ú¼¿´½hÉÆR©ÔŸÑëÏÕ …íò@‘Ûøßâ‘NÇÁÈ[´–‚9œÍRòWD>`«õÑò¾"“‡@¶Ÿ¡eýùû÷+ÌÜÜžè<ìšq{Z2|å,Z­¶Zå¢W‡-0˜¤•ažëŠZ­2¢¬r쬿¿¢×§ß«Œ9[ fÏôt‹<ómçÝ’y–+\Ý’ˆŠzw`M™ArZŸ!h4­ýΘôÔ2’Á´o`î)]=úvåq{”Ýjæjtgçë¢ê„e¹œ9K#&Üw¿ÛÙIÀ%+ïÓz0ÝOÉc„0`ø‚žKÍ ˆ|Õª[4_)dÃŒy”³læ²:K,p_ – Å¥N§Ï‰iš´‹ Ÿ•hÊjoÌ¥|ÖÏWG²Ñ¶=Ö3-p;ëf šý&[¦ä ¯¬$ 2Þ§Ï3dã?˘²:‘8˜K|sl„åYËQ6,ùÆð &É[Xîo³’åw²vvVà÷]YA25}ä-&„–Éø% O^^¦RÖH„eÙêÎÓø¡ù $ïØWáè}ö[A÷õëÑÑ%ïX ¦•8†‡cŒ…†Ãw0çKö€./C‘lÖ•ïe0ˆ’Gu0ùþ–Á##ÜÀÈ#z~”LÓê¨2b©B R>ð¥&{zº»»ÇÇkl¤ÒæY‘+â¾VÈÙQNöLÀ³á¯V 'Õ-ÓÃÃ<“)aÉA‰ƒ ßédO÷›7o.Æ/Æc|$BÙ›o;=Ã"§;’ãáÊWŸÀsBC)ŽS)Ñ0ÀòÆ)„àÁÁÁ‹‹Ý›ïÀPªÜÛVód(:B¦hn=z¨ê@NHqÐâð2°~ÊãçK˃ƒ} Ïc»7Z¶—¯r÷‹óaÒaór¨xôÑÑ&,÷b1c]ÁÉò¨–«C"Ó˜!Œäd7’û^ƒf>ïîÞÔÄj(Š=W˜’mûPt²ç# ŽŠÅ¢ša˜D«:À4SéÇiòˆdL¹À@žšz´?¯ÝŒ†UAìò-Ñ-n€åu‰œ³‡£–b±ß sŒ’Ó-Ï™Š³§<¶ÿI¢HIQì\ þrnýèoàr9û|ÔR*FÔss YOÉEFOÈXs8~R@ËyË&0?¯²IŠb³Uðûu:`ë6ãö‰{1’á«Os¾Ó &!Oé Q&c@”cËk?E£v[›H³äQ].§[ïΪ|†g­¾TÒ‡d)h$óL¬¢—P‰¹ïõÌÌØEM{b£í´â™€ Y—ËÇíW~–ÏDاËËžÉÉSˆ£,2\?’I5Ë1÷Íô!ØÅ–[î½ñˆÍtgeŒcÖÞ„yáke ÷L&}ä3 U×"“4ÇÆ.B¢?jk'c_M8öçNr…Û(€ÙÐÍeO÷OÈqf¢ƒL& ÌÀšXŽR\ûõé;±óœÕزÕ"ËGØÚø8,4Ý?’çc%sÞ‘3pbM+Bp`a-çfwÃy¾¨ôjo..`9xó#ÙÛ`Lb¦ca=:ÔUCûíTU;8¾ ±í“$zY¾$“zæMÌw®Óó›‹‹²¥Zˆ¾ð+]âø þ¸Fåg‹,[ìoÆÆúú ½žûKgÞt¶J‹ŒAǪ\aAÓ®"r‘³`¿‡}å{{c»cŸû^úÍämÒo,gôòLAÓÝ—N±ºé÷/ü x<¿ù°¯ùjq/RÛý<SêG2I{¤ï–LZY7zº//kUq=—‹Ç[tµ¿±ib‘H•ß»ãO>°B†™"ÍÁ „Q%ã~æ\e‡; n‚±ªå*Gä'Õ‹ô®&_ÅÙ±·§ÝÿüùùùyjŠ» YZ70fƒôÏú¶8z.ŸDQÜÜÜDt‹?Æ5š¼ÛÙë Aϯ$0!'‘LWQ o7iÏÏA„œ$dV¹MEŸ¨N·Àű··zÜçW¯^I–IÌÊÊß¿ •AÉnJžóQ2lªލ…÷ÏÂn^ä#Å^¨ ‚eò`+fÜ­ôóžA¾¶ŠA RwÐÈ ð{U‹¥E†ãÉzŒ Š½{ìVpz±¯ ׄÜM—:@bùÌ+*WmÓ0†h☼°ìm±rŠD´éE…ìÓn£‘€_µÖ Vƶ·Þº†Óšx*Þíñ€Þ±ìàE ÔØž·HrphãW÷ór;X® 9æJ‰Z–Ènr-u—œ¼L]Š{@F£ %V,îíKEà:xíÖüÕ̳dX+ã·B+cÛkh¿W׿‡8Þ‚éT ’Þx‘ ê!Bün…¯hIÈ`yø°ä$˰ÎyCw!ŽÓ˜ô;,< ‡H¦‡ƒç¼£·w¨—Õníδq)X±,¥üSŽ4;ïÉ„3éÇÄä}nj€céxõ:ÈÝì^ÍÌ´¸/À§òøõ—¼ª—÷‘0ØXR©I,½'k• ÖáÐj·nÆä –¹­‰å9†¬FúʶœEyÍB.}H†Åc \ÃkÿXífKð;Õn¸åX±Œ=]¦ß˯ýx¿Î•†™]T W˜‹ã Ø3.ÆÆf^OµÀSSàÖðÁ6µ]rýìã„>MvÚiü{º/ºa“ë£mÞÔ«);õºÝ±TqPqòüÏï‹ÚIéÑå7ä7RÇKȲ^+\ uA²À‚ÓüÓ½Ü@Ñ`š¢I‹@ÈmÂÞzì}|ê“ê'_üŸï?p¥†õCÚ¸h÷¬>…J±4bŒkTrüW÷ÌíçPÖ öèÄözm!Ñ%,M˜ôEÉv𯟧L&²NNÊYS¶"◂ᢔ€qŠÌÿîé’ÑrN¦ ljÝ)Âí™LùL«b›uýþ‰Øñ:íó`ÒÈp™O$Ød2µ3Œ¬o¡ã?zÖÏIùm$“tÖt+"•޵–J) g‰·ÿéS¼ã<½tKÏSÜg(Ÿ A`×·1G¦™Ñ¥Pó_<t[õd×=ØØ€P’„N©Éä)ÉWZè+%Ñð/Ÿ‡]Þ·žã•—šÜY!wÔ°uÍ¿"–ÿŸgÇË6NÌÀ5ÿyu‹ÔJ:d7þŸO¥ñù›q"à´Z ýÁÛBb¬6;aüƒçÝÿ`dûafúîìIEND®B`‚torrentflux_2.4/html/themes/G4E/images/messages_off.gif0000755000004100000410000000016011017132666023275 0ustar www-datawww-dataGIF89a1 €ÿÿÿ!ù,1 GŒ©Ëí£œ´Ú»@Ò¸|'~œy ¡¸‚æÉ¶éJ—Z§÷^óoC½Z0[O¨ ý|K]ï™3àšD™µŠ&G(·²u;torrentflux_2.4/html/themes/G4E/images/progressbar.gif0000755000004100000410000000231011017132666023164 0ustar www-datawww-dataGIF89ad÷W}»µËÜ\½c‡¿Z€¼[€½®ÅÙnñÇÚ¥½ÖX~»]‚½¢»Õ^ƒ¾Ž«Î³ÉÛh‹Á·ÍÜ­ÄÙb†¿¶ËÜa…¿š´ÒŸÉzšÇ«ÂØY¼r“Ä•°Ð²ÈÚ“¯Ð¶ÌÜp’Ä´ÊÛZ¼«Ãا¿×ˆ¥Ì°ÇÚlŽÂmÂy™Ç¬ÄØ_ƒ¾`„¾—±Ñ‚ Ê‚¡Êž¸ÔŸ¸ÔŸ¹Ô¨À×›¶ÓžÈ©Á×”¯Ð·Ó}Èp‘ÄY~¼s•Å£¼Õo‘Ȧ̜¶ÓX~¼¡ºÔw˜ÆY»‘­Ï…¤ËgŠÀ_„¾²ÈÛgŠÁŸÉ¹ÎÝkÁ°ÆÙe‰¿·Ìܤ½Õ˜´ÒŒ¨Í¬Ïu–Æ’­ÏŠ§Ì‡¤Ëf‰ÁjÂa†¿´ÉÛ~ÉªÂØ}œÈ¸Íݦ¾ÖiŒÁ¦¿×´ÊÜ•±Ñp’ģ˔°ÑœµÓ¬ÃÙb†¾mïÆÙ{œÈw—Æ™´Òž¸Óƒ¢Ëu–ŪÁ؃¡Ës“ĸÍܸÌݸÌÜkŽÂšµÒ…¤Ì¬Î§ÀÖžÉjŒÂ¯ÅÙ‡¥Ëz›Çe‰ÀdˆÀ–±Ñx˜ÆeˆÀx™Ç]‚¼u—Æ“®ÐjŽÂ‹¨Ì†¤Ì¬ÃØŒ©Í¯ÆÚ¤¼Ö©Î‰§Ì§À×d‡À|›Ç±ÈÚ¶ËÛiŒÂ™³Ñv—Æy™Æ¹ÍݪÍa†¾†£Ët•Å‘¬ÏªÎ\€½£»Õž·Ô‹¨Íd‡¿f‰À©ÁØ«Îz™Ç\¼_…¾{›Çw˜Ç·ÌÝa…¾ƒ¡Êi‹Á›µÓ’®Ï©À× ºÔ Ê—³Ò®ÄÙ ¹Ôr”İÇÙŠ§Í˜³Ñ|›È¤¼Õƒ¢Ê„¢Ës”Ä|œÈ¬Ï£¼Ö®ÅÚ\‚½s“ÅjŒÁ¨ÀزÉÛlŽÃlÃ`…¾ŸÊX}¼dˆ¿ŸºÔŒ¨Î ºÕ•±ÐŒªÍ„£Ê…¢ËeŠÀv—Åœ¶Ô^„¾t–Åv–ƹÎÜ¡ºÕ{šÇ‘®Ï‰¦Ím˜³Ò–²Ñ­ÄØs”Å—²Ñq’ÄŠ¨Í!ù,dÿT BDƒˆ¦XÐ ’i[& PEhÕbœé9â€ìð¨òMÖ¡æåèra‰ 9ÝŒ`ùQÉ6P¨$³â‡uÂàX¸$N _Ùô˜” ‰¬¼ŒP!¡—'&2u€Æ…L fE¸Ã;vˆ PàÕÂáXT%ñ¢,J0jiÄñ€ÍFŽ’à L_XR{QëŒA?ЛBÉAR<Ñp0Ä‹“8`ȸ&„Á)bMŸÚð’ª@ÀL Hò€Kˆ¯ äSö¬ƒl0c¸­ kz’å¢-@M¤¥ó âݱvâ:½I„!Ö°/5Z¾¥¨cŒÏ£WàE*å U\Œn”i¡NÊž4@PÁÐU޲( ŒaÉ36d0$ì°LtÐÁ!ÜöU€AÎY D@pŠ'WDXó„7ym¢EѰá‘ü2Ê‹ á‰+¸‘C ìâB1܈‚z©L±MNEœãÁ Ú´àŽŸƒC 2”Ö€cø‘ ª!’8Àl<à•&¹áÁ';torrentflux_2.4/html/themes/G4E/images/index.html0000755000004100000410000000001511017132666022141 0ustar www-datawww-datatorrentflux_2.4/html/themes/G4E/images/bar.gif0000755000004100000410000000322411017132666021404 0ustar www-datawww-dataGIF89adæ$X6¡ºÕš´Ò8X…*Jy‘¬ÌTrœOFe‘¡ºÔFf‘‡£Ä=m?{˜»9X…b€¨0c·ÔF‡£Å‡¢Ä‘¬ËoŒ±$X¬Ì¥½Ö0b8X†=n ºÕFež·Ó‡¢Å¤¼Ö%X$Yz—»b§Ge‘0c¤½Õ¬Ë8Y… ºÔo²=mUsœ‘«Ì>Ff†£Ä†¢Ä$Yz˜»Gf‘¤¼Õo±9X†«Ì†£Åž·Ô¥½ÕTs›%X*JxnŒ²)KyP9Y…Urœ%Yb¨*Ky™³Ò‘«Ë>Gf{—¼{˜¼E™´ÓTr›E¥¼Ö†¢Å9Y†š³Ò«ËêëBÀ›çÎ_ºïâû'`¼w!Ø ØnÀ€3g,j¼hcFŒK.~ô˜‘#GŒÏHù8À‹É“¿`Á¸R¤Í”—”,rçI’g.ĸpÁ²Äˆa@à ¤š½°â©†¨®^àQôjÔªHW86+SC›:Õ@Ô«&Eÿ‹’õÊömݦhcp}{4ªˆ 5,T`0øo0@X„=+®Acp…Ê/\Y±ˆÈþZèa†iÁŠ%¸‚ëÅš-Ô˜œ¸ÇáÄ™FLC„6lL<ø Á?)Ü„ (À@yPüð7¨'Žœ¸öèØÙX§¾¼;sí7˜'7®½}tñâãÄÇE òå㯯#ÿýÿþé'Ÿ}ù¹€ÿ•Ñ_~ûíG_€ÿˆÁâ‡Á ê§Ã„ÞÁ oDðF'ˆøÆ‰!šˆ"Šˆ(â †Xâ‰1®â7¶x¢Š:æÈb‰"Šñáˆ6Öø†‘,&aÆÿ’f±$˜Ã’0DiÆQf‰%“XN1å•R.i¥–XNéä•VŠ Ä•U¦&›bF9˜Z¡%šjÎÀž{¢B ,0à 8Ìè $º'ºç€¢€ÃŸ(ø èŸ €€Ÿ›&`( Š(£žö *© 8A蟡&ª88ŠC£¬.Á­;®°p+ºvÐÃvà+±½`DÀ6›ì,(;Ìò ,±ÂòЬ®»KìDîáZKí®Ê6[-¹Í²PÀ»ð¢!ð@¯½h ¡DØko¿ïÞ›¯¿øö›ïÁãKï¾ûÛ°½d¼ËÅ»ó",/ÿ¾ Œ¯ÂitÜ@i€ü‚Ç—Ü€wì!ƒ¼r,w,3Ë(·¬…Ì3‡œÆÈùé»ÿ=úõoþþ뫯þõƒƒ84a€`¸À&,pL (&ЂŒàe Áf0ƒ¼àÀAJP„œƒ WȺP…uXa ç0ÃÚÐ…5¼¡mXÃʆu¢‡HÄ" †44╨Ä$2ñ‰O¢é@‡ VQˆT¬·¸E-ZñŠ\c³XÅ.ŽÑ‹Z$ã˘Æ.~ÑŒe„#€9αŽu #éH<Ú±€Ì#û˜G=’„$ ïHÇFÒ‚lä;torrentflux_2.4/html/themes/G4E/images/noglass.gif0000755000004100000410000000011511017132666022302 0ustar www-datawww-dataGIF89aA ‘îîîøøø&&&+++,A &œŽ©Ëíߘ´Ú‹³Þ¼û†âH–扦êʶî ÇòL—„ç:>;torrentflux_2.4/html/themes/G4E/images/home.gif0000755000004100000410000000157011017132666021572 0ustar www-datawww-dataGIF89a1 ÷ÿÿÿ!ù,1 UH° Áƒ*\Ȱ¡Ã‡#Jœ)jÄx1@Æ?Š™ñ£G“!-ª<ɲäE—,5Žlù²&Í•2;ÂÜieNŽuöê¤Ñ£H ;torrentflux_2.4/html/themes/G4E/images/gentoo2.jpg0000755000004100000410000001315011017132666022227 0ustar www-datawww-dataÿØÿàJFIFddÿìDuckyÿîAdobedÀÿÛ„   #%'%#//33//@@@@@@@@@@@@@@@&&0##0+.'''.+550055@@?@@@@@@@@@@@@ÿÀúÃ"ÿÄ•!1ðQaAq‘¡"2±ÁBRr#Ññ’áb‚²3¢ÂCS6!1A‘Qa2q±"¡ñBrÿÚ ?ؤ—%ÆHIq’\d$—.9Íh.q I8ƒ«…Íh.q É4 ¼n3^HaÚ¢óÈÁ÷øag·ñ{1lŒyn2›É?!øaotc?j·~Wo(Î{uGýÊÝî,¶kîž3´¸÷|£ÅHÖîÒü°EnÞr¼¹ßÓñVlc#hdm `É­uFg‰òbù¿ ïí÷ïùï9ˆâkË—µHs¾ŸÙåû‚IÊý¾ +ÿµJ>[éÿÔ#?öÃa¸°~ÝÛ$é,t÷±ÁX¤œ¯ÛàÂ¥ÎÝaÆ[FÌÑø }OôI¥6=ÒÍÏò¤q·—ÿŽ`cw³V\(ç·‚å†;ˆÛ+áx{ÔæyŸ/‹òÉu.Ë=±/Úg1vý4µ|Gº¸µEî0µÜc6w9ìcè~IÇ=uþ_¹ËëÑb’@‚—*¤’KŒ’ã$ $¸É.2AÚŠve÷¤¹ÆI î=RǪ^ x XõKÅ#AɹnPØ@e’…Çã2[qn:Ô—Û…½Œ&Yݤ~þ'@ -­/7’.7 PXg¨42o<»]œ»”ÿÝ7‰€þÄGåöœ‚ÑkZY4é:íæý?EsË­íôMc†6ÇC#h£ZÑ@µ¡õ®ëTÂÙO­-j kºÓSjKR‡ZZÓSjKZ‡ZZÓSkKZƒZZÓSëP]Û[^Â`¹ŒIì9ƒÌÅÍikL`QHëýãQuÞÖMÏB®-®¡º‰³@íq»">žòÉæ<1ÂŽiÄV^æ;OÞ ‹Z¾ÊcŒg/Òzò+LMþÛþêgüþÍ^=RǪÊö È<$;1Ú"‰ðYYgJÒ\—ŠXõKÁ/cÕ$¼AÔ‰§ò]ñQ½Çª/.âµóÊhÆi=€,¤^võ¹Ï„cM`ü#½?}Ü åÏ‘ýˆM?SûJ3d„EldüRŸúFK«M8iËý«¶å¶+d@zî´>¤µ§"5¥­2(ß&Ys(†ÀÑž%GD¢ÔRÔTÅ­‰®kS=kºÓ\ÎJ2HSÄM©sR‡ZEÉÅI­p½F\˜\œL¦/PÜÇÌ‚QV+å.´U´¾7ü½ƒšÒ?6L~VâU˜ •6¸é‡ŠA’íS*•VxYÒ£rv±Z( ݹqn±Ui)—ILu s±i¨è¢qZjƒ(™®‰åÊ'ŽJÜU;Rkœ£ÕD‹ª£Š2NrÏIÅDç'(7ŽÒAÊ„{ ¡«˜àö9¦­#°…uvúBáù°UjÓIÑM»¶›eëo-#œSQxäáš=¤’ôÍ×—<–®? ƒ[?Ss÷-S'·N;XßM³à’U–k‚º˜Eå5£]à±m&G—»8—ò´›ìº,$7ϳеvz'K\þË× ãj2Ü–aØTµVª nIŠä`€”Ì.c€ÌŒ;ÕlL« æ®(ª¬åžèè¨$¯"ê}ªê¸¦h-#ŽúÞýãYDÕ*¦U*¬ÒyžÙ$ŒšöªçH>\0V÷í¼œ2rE$5…²´öÓ´²ëüzmôGê‚ÒññÌ AŠÊB Üœ*«~:q,1º<(C±h<Â9Ø1¬Ì4R©Ž³ëä5Å0¹'+YOæz¨ŸUð*n¹VœMT/4NÕØ¢–§¹FÈ;‡žƒ$#Ú‘¨i¥mf6×qL0ÐàOwjÜÆêЊЬlvɼÛ($9– ÷Œ>ùÚ´õ^ñe¨õÉ$Êý‰.l6gýBÿÙ‰œß_«!ÿP|Ôï°   ³ÕøÇ>ÿ•QQµAEÆЦªCBQµÆÕSkIwa#^e„TŸxBGrø…ZF|¼«Èy¶Á..mù†k.x«Ê Ûwsh$ËžaZCuÀi8•ŸšÆHž4º šWµZmö^P?›÷”¼lÍè´XÕu4ª³XסާyP9i¢9FTŽM!k* NŽLh02œÈËÝAí)×—qØÃ¡¸Èì‡ÞTm½í¯sÞÍ/¢k† –¦IXdy©{ª;”în ñîF¡dÙ@¥¥ G°>»{ås‡½g¥ ÷ÓÄýÏþG}Ë/oãýVõþKªáìIr¦¹$¹[¨wÑðÄy8ƒƒ$~òÝVÕü®îUöåuúÿ÷Eı"âZ*&0ŠŒ!ãS‡P,·"}@åÓX)›Ž£2›uv#m.84(à€ƒæËñJéîXãÍ_XäçW6/ü-ìj*©«ª-ËGj•SW qÅDäâS ¼A¤$ØËÍ´§µ…ØœïslU†ÖŽ|Ïü-ÿlÛÓ_ð'º¼ŠÍšñJroÞU?—%äÕy.q5qì(¢–åä0—~9 ¸¶³l, hï<ÔÌN“­½ê»TqÂÐÐ(I²[›@†•k;3 BÈr!dR™]ìB–@ósÜ©&Z ©º,áiΕñÅeíüVӺ˳ÙÍ%ÊáìûÒ\Í•÷ÑùÈÌ~ iÞ©­’¾œgüUŒònžÌ:›ÜWOªøe¸ø‘‘ au@FDVª a\š`Æ’{ZpAÞÉ€gk±ðYï;Ÿkû²‰1ì`äÔ6î&€¦Ym3[A:‚æ  óuªñ—¦—(õ.€H©Às)ŒÖ«|P°É3ƒZ9¡¦Ü¡Š­‡÷ϰ*©î#µÊã#¿ {pVšÛߤþèÈ«ÍÊIÁk †Ó“ü¶’Þ1ƒ‹¹©lviîÞ&»«cͱ…¥·´dL k@hÈÛy&5V†µ±ŽÃ(™ÍàPHSE(i’¢¤(IJèD$¨© b¤ ö—½¬¸€=«OnÝ-kEhÐö* ¾?6ì8âØñöö-#§½cí¾Ò ìíËïIv˜{9¤¹Ú…˜g’¨ÜbÀJ3f}Å]ÌÓŽh ÙPA©0µÒ©´m%@GÄåRÐ`”Ærü'¢±†J€ºiÁWîºØÆÎÌã8÷k¹4m‘Žc…ZáB£h™q@ZÝ1íøMFe½¡$µRËo5¬¥£áü¯T)s=(^xYæyèÑqæk†f4UΠɢ¨t×ÿËN€ šÒk#‹ÏRŸÇêž«Wî°´é„yŽüÇå@Ïw4ç÷Hü£™ ´ÓšDÃEog±V†sþ«vÖvùGꩆ‹‡è…¤ŸŽò¯¶í‘‘$¿¹/3îVvöQÄÐÖ44ÀŠk =·´Ìˆã„4'šœH ½VL«i²9 #”rG.5R¢¡$*i…‘Ëa¥;Ñ3>ˆx"7ãò3à¶ÃåÄ ùŸñ¹[B;°´õGDUͽk¬KL;2I>‡®I,š!•¹ÿ ÌâªÊVŽˆ9X:+ëUÚ*n¡Ö0ÁÕ´Ô48˜GJÎäñílù†cšèÓf[EœRˆi*‹kŽÂ¬"”uSI$pr(Gí8Õ¤·ÞŽc•¤*mªe±VÍ‘¤âòGr2 šÙ„ÝGüÈÖÑJוÕ<©ClÆ-cBˆ=wÌTºÓ)êiz„ȘdI¢2•ÏP=鮑Bç­uÐuïCÈõ×½#ÖÒaÈô$²Q>Y@UóL\t·r+#ËŽJÂÖÆÀÑí<Ê‚Ö ¨^s?r°‰ƒ¢Ï}–Ö'…œUxª‚&ŽˆÈÚ:.}«maú~Îi'ÐtÉ%žV2F¡doF¸UA#z{ÔëQb¶VqD¬V’GÓÞ„–>‹}vgbªXˆ:›ƒ¾Ôø.H:]…$}²E^Ìy­µÙ‹(®íD²P¨[$±qÑPÞÚ¬…ËdR k.íS6qÍEÖ„‹¾b L9®ùª8Œ‰¦D1”sMtÚž0NéO‘@ùÀíCÉr9©>P„–pòݨ)$§½d™Ò;K1*X Äâã™]ŠÜEÇOz¦Û-!Ñ1"Œò÷¢ãgOzÇmšH’6¢XÞžõ0þk«II.3IU.x&9£¢~) Fw!¤¹æñE ÙÅõÙ[’G܆’>åhøÏ øk®ÌìV>>å¢å‡P¬Ÿëà¡tG€µ›)u+25OmÛÛš•ÑŒÄzø+òF6û™NúáÍc<Ï+Š)Ê0 ßi޽ä¢ò¸¢èŒðdÃŽ¹‘ÙÊHüÝà§¾ FÄx vN2 9w©Ùr•‘‘¾ —e¤G}ȨãîNŽ.(ˆd|Qe¶ËÈäq÷"XÎä˜Î(¦kiü–V¯#­rNðKŒ’Ç€¨±x$–<sŒÒã5Ì:%‡Dã4Ç2©I,Q0¾WµŒ¹ÆƒÄª÷úac‹]} Ft%ßíªßP>%7ýŠgheô:Ž@»Oû¨Œ£Ðæ月5 ÓdXñqU¡V.ŒtQº!Ñi6Rê­t=fŠÅщ†ÑZnŽ*óDß'¢°0މ¾Hè­Í^ |ž‰Âˆß$t]މÍä»â¨¹Î¦A9Jß,¼°8¶…ͨ*…(gX=Õù__^²G¢Ý-ˆjÒZ7Álvæßvd‚)bÒ%I¨® 2`pgNäªwoRÙm’¶×KîoòÛÅ‹±üDZ }A¼5žk¶¿Û̵³úwi¢Œ¥¡ã$«ÅnÑ¿XîìwÓ—2hÿäø=¾Åc⃵â‰WŠ* ¯V[¶éÖ[t¿¸f,!±·½å2oS_ٷ;Û\Ø?á<·©iмQ*ñD-†ãi¸Û¶æÎO2'xƒÈŽÂ‰ñAÚñD’ING%å;ðu·¨§{ÆVÈ:Œ õn2XßZì2\lÝR0RF›ÁºÚFKoŒ µí„)]‹èïSEmÚ¯ßå–ao#²§äw.‹m^¨3›œž§·l³As•sYä€Ä Ôª}ŸÔ¾¥ÝgtK K¨¸Å^Úv±Ý%޾y%pkÇN%‡ÿ×í'rÃ!÷”Òþ÷oôü×/kïKCÚÝ#SÒ«7éx÷h¬ÍÍœP?Îq%ók.¨Ãð­'«m_u²ÎÈÅ\Ðé5Tž„Þ`d/Û.#8ºX›qíªo¤Ý¡ÎÛpÀC¿m®¦ªÿnÛ¦vÂͺü‡‘–üN-ì ÒY¢‚3,Ïlq´UÏu¼¨¬¯­ïíÅͳ‹¢q!®-¥tšTW±Ÿí[U³}Vûè¢.-@}«~û Sg–ÚQc,?ýÜýïÿh[·WIîäƒév=Ys x0 Ze‚ÛîÇ-´šÀ4i§‚Åz|ë+°sýß÷¸¼¯ÒËLôžÎˆ1>ƒ·†i¯Ò[JûVÆíñmÖ3Ü1 yLs©Ü*²_úôþýè®?Ôµ»œUc=½q‘…¾!7ÑVÿÜ7­Âèù’ƒ›¹¾¤­ÙŽ2Ý%­¢Ãú_¤Ü.öéþ Aí,¨4ñ[ªñDw¾kؽOÝ·Â×ÑîhÈ‚t¼õ¦õfèûMÒ@tÉqHÚá˜ÌbÍzãÔÑÚ[|b*F÷ †5‚Ðz¯n’çbòâ|xm?/g‚} ·ÄͳêœÐ_3‰©ä ÑÜÛÅ<.íi¨= yÛGÓƒû¶î-s{hMAZ9$lqºG»KZ q9yÿ¦î$Ú}M.ÜìL÷F[ÙQñ0¯Bð^w±Äý×Õîƒä2G<;ÜÑཌwÁ%ʤ&½{K\* êH3»Ÿ£¬/^ec|¹e¸(mý?¼Ú4Go¹\21“jé©i×Pf&ôµÕép½žáµ®—¾þ–«¯f´Ú٦ݚIÌŒÊ=${ÚZáPsYÓÐñÏ3¦´qˆ¸Ô•V½$û?EÈ\߯óÆÜDnqÓáU£¸Û‹¬ ¼·>#¥ÀG±’ ‹}[?Ô ™„µ¯˜ñמªU]\mWSí̳ú¹Úö™šúHìðs€V‰ È3ÐÚ&ó›q+d­uµô~?æ¢ÕE ›lØç<µ¡¥Î5&‚•'š•$3èùíï$¸°º–ØIZˆÍ0=ŠïhÚ†ßõ=òË)¬²Hâ÷8Žd«Qî¾™‚òau t,5l±.(Ÿ¶ú†Xü‰7)<³-cò?XZTìþž´ÚÁsªWbç¸ÕÄõ*ÕìkÚZáPsIuvK˜nÍîÙ3í&wÌc¥êiÀ®\l›Æàß&þúGÁø£c[]ú´æ´i mÚí¶ØDP3H‘‰$ƒ©.$ƒÿÙtorrentflux_2.4/html/themes/G4E/images/history.gif0000755000004100000410000000015411017132666022340 0ustar www-datawww-dataGIF89a1 €ÿÿÿ!ù,1 CŒ©Ëí£œ´Ú0:tõaÍ.¥nÞFvÚ»ªî,½0}´k¼Ÿ£Ì êzAN1Ü—D%¯–œ©ŒBæ…õa+ZC;torrentflux_2.4/html/themes/G4E/images/gentoo.jpg0000755000004100000410000000050211017132666022142 0ustar www-datawww-dataÿØÿàJFIFddÿìDuckyÿîAdobedÀÿÛ„   #%'%#//33//@@@@@@@@@@@@@@@&&0##0+.'''.+550055@@?@@@@@@@@@@@@ÿÀ"ÿÄTa!AÿÚ ?¹K·Ûkë^+äÿÙtorrentflux_2.4/html/themes/G4E/images/directory.gif0000755000004100000410000000162111017132666022643 0ustar www-datawww-dataGIF89a1 ÷ÿÿÿ!ù,1 nH° Áƒ*\Ȱ¡Ã‡#Jœˆ€E‹1BÔ8Q#LjAÈ8£É¦¼hÒcÉ–]¢|ùr¦M•#m¶¬ùQ&Ì™+s’úóçP5o= “cʘ,‰ 'Í¥O)j…ºµ«Ò;torrentflux_2.4/html/themes/G4E/images/proglass.gif0000755000004100000410000000524611017132666022500 0ustar www-datawww-dataGIF89añÕ„™ªj޽Òêj²ÆÜ•©¼¾Òê½Òé¾Ò餹Ì}‘¢»Ðç|‘£·Ëâj~ŽiŽ”ª¼i²ÇÝj~|’¢²ÆÝ»Ïæ}‘£”©¼i~ޤºÍ|’£i~}’¢•©½•ª½»Ïç½Óꤺ̾ÓꜲĔ©½œ±Ä}’£”ª½¾Óé½Óéo„“œ²Å«ÀÔuŠ›uŠš«ÀÕœ±Åo„”•ª¼|‘¢²ÇÜ„™«¤¹Í»Ðæ·Ì⌡³,ñÿÀpH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.››¸4n¡n³Ûðô›ýŽ·AðùŽßûíui}irqyk‰vjƒ†’€qt‘j …n8š”—Ÿ„ ›p£~‰™˜¦œŠŒ˜Ž‘¨Š“Ÿ°·•±¡³ ¶ –©z¾yl«»µÊºÈ¼¥¸¸¬uÀ¬¹†Ó×ΘÕÐr…ÀÚáÑ®ÓÇžº{ˆÞ¦Œ®mˆ –”B9ø9 ùüúþüûöH_@û,Èpa¿€æ‹(РAŠ%¤ÈQcE1Z™QdA“$A:T¨ò_ȉ)'²8S¦Ë4Oº„ó"Iÿ”=õÕ¼i³áÆ 0%®L¹0!POŒ˜p'Ò¤8¯2Š5§D!5„­A¶lXbÉJ0[£BÚ²oß’• —­ÚµfÅ¢mkwìÜ·è¢ ìw¬¼zkàëW¯à l÷Ö•YîâÄf«Uœv1\¹ 7®,º2YÑ}KF;¸­Þµ„#ËEí7°Ûµ Óš®ûwóØ´¹?KÎ[wïaàaUGžxq·Å˺]m:q½¢qoö|ö,óá|?sn«¶fÅa+&,–»á»á3fm—®ëÍq1‡–ß¾»÷¼ûÉfœ}¾°˜võñÆ‚}Íw€¼%(Þ\MWÖa½Æ^fýEÿàƒÈ%Ú^åe]a"z·–iqÁ–˜XB´ c 0À@£2ÖxcŽ5âèãŽ=Î(¤AÚècFêXd’DΈdŽ4:¹c”:Nyã’@"‰#”F^ ¤”J^™d•]R9d˜PFi%™[ò¸d˜[é%–qþ(ç‘OÂÉ$™iº™gœYªI%ŸoV©¦’cþÙ§¡`úé%:ºfABz¤ …:¹çœ‘jÉ%œV~Yi™Rvú¤ šr9(¢£¶ è™”š)¦‰ºzê °Þ &£cšÙ飠òú&®y¢ªª–?Éf¤†)Ä ÐB›@´Ñj@­´ÑN+­¶7XËí ß‚{­¸ã& BµÓ&ÿ.¶ãŠû­ºÕºÛ.¼ìb».½Ú†+®·í’Km¾ý °¿_.½å¾Ûm¿ú‚+BÃÛ ­lq¶ó1Æóúû­µ¿ ñ¿ Ë»ð¿!K<.ÈW îÈ?¼mÉ“Œ.Êõ&Ì/ÍúN{nÂ5—‹1¿ŒðÐà²l4Òöý²Ä03\t¾4?MpÊüóÅÑn}µº=Ÿ¼1Ð7 hÇ 6Úl¯­öÙi¿ÍÂÙtÏ]·ÜwíwÞmËÍöÜ}ïý¶Þnw߇ ^¸á‡ÿwÜ{¸Û1˜vãuÛ ™ßíxá“íyè¢cNùèk“N8Ý¥³ùåw~¹á¥ƒþÿøèmÇŽ·äƒ÷^»ï¢·î»æxûÝ;ì‰ç^üë›Ïzäϧ½Û'¾zò±?θöÒÏ»ãÔo}ðÞãÞ¹çà‡zæÜ#ïºâ‹O>·åG>{÷æ¯;ïgsþ{öå“ÜýÈÇ<ÁíŽr© ñ„ œg:°tàÁ J°ƒä`0hA b`‚ |  ‚Ѓ#Ì` a8A¾ðƒt ^HB Nð„6„À QÈB ’…F¬!7˜Ãv)$!}XÂ~Ð…X”àŸØÄ9ô` 'X‚&–І7ô€·ˆÁŽƒC¼`=Ð@ ”ÿ‡/¬bqHÁ%f°‚!$}Ã"ŽˆNt ÏHÁ(rЊ4â #hC"žp‹”! ÝhÅ4~1Œ„ô ]8Æ+êñÜá[8EHZPWÔâ ÔÈA(~2”¦ä!?ÈÒ–HŒd %ÉÇ®’rá0ÿXI .™ËÄc&•XD>΀—«¤àÑ(Í?6•“$}HKkæP:H§:×ÉÎvºóðŒ§<çIÏzÚóžøÌ§>÷ÉÏ~úóŸ ¨@JЂô M¨BÊІÆS°D#jPt¢¥¨E/ZQ‰v”£ýhEA*ÒzT£&=)FAjÑŽb4¤ÿÕhFG S•Ž4¦)%iK]ZÓ‰–”§&èN_JÓ¢Ò´¥BMêP?ªT˜"U¨N…êIwºÑ r4£8EªKeŠSŸ2U¥,jO¿ZT©VuªKõiRyÚÔ±²Õ¨[MkUåJR§®´¬Y­©TúV®ª•ªj½iJ:Óžju¯g%¬Wß W”ÖÕª"UêZkÓ´•¯f,UcÊÙ˺5§—Ýë`szV¬–©(%ªG…@0 µ  @kgK[´–°- tÛÚ ÐÀ·®½­ny+Û×Êv·´míkk›Üæ*—Ë-nr—{åîöµ¼eÀq¯{]ØÖºÂí@n•K[à"×µ xÿm`[èÊ6¶¿Õ®si°]ò²7¶ËU@‚ [ë¶—·æ…-oÓ;[Û—¾éeok×Û\âžWÁîxK[èÒ—¾ûe.lw[_ÏW¹æ ðn}›[dø¼¾ðdë[+½ßM¯mO¼áåb7¿¯U0|“»á"7¶Þ-0m[áS¸Çü-rz7`]ߦw»Õ•1r_‹dë¶Çº5îr÷«$¸¿´­ò|°í¶W¹&o…gË€6»v¼V3šßüÛ k¸·5¦—“k[,óÍr’)ì[ÿb»_žíx'üàg¼^Æ®žd637Ñä ômíÜúžÅÍ}/Šÿ…ð‚R›ÚÔ.pA©UÍêU¿@Õ¯nõªS}jX¿úÖ©–µ«Q=k\Ÿz×½Î5ªsmk[ÛÕ¬66¬‹íkZûֵ޵°liÛÙ¿Fv«i mgc{ÖÉ~¶µ¥-locûÛÞÆõ¹]î]o{ÙàÖ6¯¹mY‡›Ü÷Ž·½¡­î~»ØÄ^6·÷î‚7ÛÞÿµ®ƒ=ðho;ÖÝæ·¹÷­mƒçââþv¼ñ]íŒ'¼Û§·±þðl÷Ú×?6²­ o‡âµ¹¾%þìu›ßÇ8̧}í…çäÔŽ¸V ƒ½èE7úÑeÀt¢+éM_úÑu¦G=éVG:ÕîËô¦c=êJ_º×ÅŽõ­[êY‡úÖ»žt´sìU—zÕÏÎö¬»Ýîj7;×ïþu¹£îZûØ÷~u¯~î{ïzØÉ.õ©×îO{ãÓî÷¿Oð“¼ÖÓw¹ÓÝí—ç¼Ú%÷¹s¾ñd?ûæÿ÷Õ³½îO»ág¯ùÈמò §¼éõÞvǯ]ì »ß?O|À«žö±<ìÇ~üÊÏ^ø©Ÿ<êi/zχ^÷Õ¿þóüÓŸáûà¿øÇOþò›ÿüèO¿ú×Ïþö+!;torrentflux_2.4/html/themes/midnight/0000755000004100000410000000000011026130107020110 5ustar www-datawww-datatorrentflux_2.4/html/themes/midnight/style.css0000755000004100000410000000750411017367654022016 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; COLOR: #02CCFF; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; COLOR: #02CCFF; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; COLOR: #02CCFF; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; COLOR: #02CCFF; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; COLOR: #02CCFF; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #02CCFF; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #FFFFFF; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/midnight/index.php0000755000004100000410000000051111017367654021753 0ustar www-datawww-datatorrentflux_2.4/html/themes/midnight/images/0000755000004100000410000000000011026130107021355 5ustar www-datawww-datatorrentflux_2.4/html/themes/midnight/images/messages_on.gif0000755000004100000410000000175311017132666024374 0ustar www-datawww-dataGIF89a1 Õ)3@@@@¿¿¿™¿222mmmŸŸŸŸïïï¿ï¦ÏÏÏÏ000&0pppßß߲߯¯¯Œ¯ Zp ```rM`KKK@P’’’PPPSSSf€€€ÌÿUUU)))ÿÿÿ!ÿ NETSCAPE2.0!ù2),1 á@”pH,ȤrÉl9ΨTH(E$ŠDÚ’ 2Á’D¨eQ,f€=¬^¹€õwƒÍc] $ }$X"$€]uVEX „[ $a [jr]|$Ÿ¡w j^(X „y~}"¤¨¹Dv’$Ç]g(r ¿È‡"XBÑ…®ÆŠÊרjÕ__±ÖŠyå­(ÅD}àÊ\j ›¥ „ ÂÉ·‰X¤)•3Á°¡Ã‡#Jœ" %2jÜȱ£Ç x!ù2),&œÀÑi:Š'åqzP„§J`D]¨‚ 4•n«IŒ0= GÄâÄŸÂÅŒF ‚uÑÀÀœ"KET\Gb'ƒ…BTHv' kdd#c#ˆŒœf˜'©ER\ £h©hn¡Gvuqe†¸T¶II”·qdĘBH'T‰k ¸QÖ(A!ù2),&@I‘"‘ФÁB‚L„$Qj`LY¨ •n«É%Ç„‚Ô“*BÑÄŒN ƒuñÐØ$K ET\Gb$ƒ…B THv$ kdd"c"ˆŒœf˜$©ER\ £h©hn¡GvhmeB†¸T¶II”·qdň¿F$T ‰ k ¸Q×)A!ù2),&œÀÑi:Š'åqzP„§J`D]¨‚ 4•n«IŒ0= GÄâÄŸÂÅŒF ‚uÑÀÀœ"KET\Gb'ƒ…BTHv' kdd#c#ˆŒœf˜'©ER\ £h©hn¡Gvuqe†¸T¶II”·qdĘBH'T‰k ¸QÖ(A;torrentflux_2.4/html/themes/midnight/images/admin.gif0000755000004100000410000000042411017132666023153 0ustar www-datawww-dataGIF89a1 Ä™¿222mmm¦Ï3@Œ¯Ÿ²ß¿ïZpr 000KKK&0“““ppp@PTTTfUUU)))Ìÿ!ù,1 ‘ &Ždižhª®lk6n,‹Ð×Ea¹Î_ŠNÈ3UµVâ2( —0Œ^ÇT’%x"0¨þÊ«íÊ+[ªû—KÛX‡ua¾(ü}eQHw+e8P`:}ƒZ…):8K9N:8s:’(j3¥“"©ª«¬­®¯° ¶·¸¹º»¼½!;torrentflux_2.4/html/themes/midnight/images/profile.gif0000755000004100000410000000051311017132666023522 0ustar www-datawww-dataGIF89a1 Ä222mmm¦ÏrŸ&0Zp¿ï²ßM` Œ¯KKKTTTppp000@P“““ f™¿3@UUU)))Ìÿ!ù,1 È &Ždižhª®lk2n,‹@PR™ eY’i‚ÆÂC*¼¦€È(y¢¥Rò(4 å)º«!C©¿…`\ÈT(Rª•`ÉÞræß9£°Ëg@RtqUDv[nH9"D< JT…<ˆVd#8““VXbƒ8ƒ…X R#5w8­•Q"T­jl¢q> £"8S·¢~»o?LN;°QHd8dY^]„ˆ™m$Vr §=GRŸa¨ag8"±eަjª·ˆJµ??‘¶jYÅ¥$]Àª<J {… dÁGÙ{¤q3è*¥ìíîïðñòóùúûüýþÿ#@;torrentflux_2.4/html/themes/midnight/images/progressbar.gif0000755000004100000410000000007211017132666024413 0ustar www-datawww-dataGIF89ad€Æÿ!ù,d„©Ëí£œ´Ú‹³Þ¼û¯;torrentflux_2.4/html/themes/midnight/images/index.html0000755000004100000410000000001511017132666023365 0ustar www-datawww-datatorrentflux_2.4/html/themes/midnight/images/bar.gif0000755000004100000410000000070511017132666022631 0ustar www-datawww-dataGIF89adÄ*"„˜C³ª^:2ŽqÍÅ¡{LU¼gÝÕ!ù,dÿ`$Ždižhª®l›p,Ïtmßx®ï7àÿÀ pH,Èd1Ál:ŸÐ¨tJ­Z¯S„vËíz¿à°xL.‡ è´zÍn»ßð¸|þ†Øïø¼~Ïïûÿ€}„…†‡ˆ‰Š‹ŒŽ‹’“”•–—˜™š›œ™ ¡¢£¤¥¦§¨©ª«§ ®¯°±²³´µ¶·¸¹µ¼½¾¿ÀÁÂÃÄÅÆÇÃÊËÌÍÎÏÐÑÒÓÔÕÑ ØÙÚÛÜÝÞßàáâãßæçèéêëìíîïðñíôõö÷øùúûüýþÿû H° Áƒ*\ȰaÂ#JœH±¢Å‹3jÜxq‚Ç CŠI²¤É“(SB–lÀ²¥Ë—0cÊœI³¦Í›3èÜɳ§ÏŸ@ƒ J´hP H“*]Ê´©Ó§P£Jú´‚Õ«X³jÝʵ«×¯`Ãv ;torrentflux_2.4/html/themes/midnight/images/noglass.gif0000755000004100000410000000011011017132666023521 0ustar www-datawww-dataGIF89aL€ÿÿÿ!ù,L„©Ëí£œ´Ú‹³Þ¼û†âH–扦êʶî Ça;torrentflux_2.4/html/themes/midnight/images/home.gif0000755000004100000410000000040311017132666023010 0ustar www-datawww-dataGIF89a1 Ä222mmm™¿Zp ¦ÏŸr¿ï“““ TTTM`000KKKppp3@fUUU)))Ìÿ!ù,1 € %Ždižhª®lk>n,‹@àJ•UI„P \AW‰Tv­Ú-·+Üóiˆ$m-œ§“…ç@q]½L´á3"YÊlš»Ã*w£µ,ï:Q;‚F |,t<>@8G‡3”)q˜™š›œžŸ ¥¦§¨©ª«¬ !;torrentflux_2.4/html/themes/midnight/images/history.gif0000755000004100000410000000046211017132666023566 0ustar www-datawww-dataGIF89a1 Ä222mmmŸM`Zp¦Ï ™¿@P&0 “““000KKKr²ßpppŒ¯TTT¿ï3@fUUU)))Ìÿ!ù,1 ¯ &Ždižhª®lk6n,‹@ Z™–Y¸vdÄ/³P(ƒ ‘btSí–ÛᔄÂa È*€‚Ý!2J…Ԗ¹q†LaÐ(+::Cà+¼'SmDV9QwyWL‚l(=† vh{JW–T¢X9Œacw;¦¡k©†]¥ŒFH±¥§µ3Ã+ƒÇÈÉÊËÌÍÎ ÔÕÖרÙÚÛ !;torrentflux_2.4/html/themes/midnight/images/directory.gif0000755000004100000410000000050611017132666024070 0ustar www-datawww-dataGIF89a1 Ä222mmmZp²ß¦Ï&0@PrŸŒ¯¿ï M`“““pppKKK 000TTT™¿f3@UUU)))Ìÿ!ù,1 à&Ždižhª®lkBn,‹@PVY6,¸–g_†¢9è ”_Å8(XrŠÅ ò\Ðl$œ!Séeâñ„ˆ¯ cN”¹J…0ªÝ2¾.þKHøNDO†„o uX#^z>@B†#†ˆ™:Q9AWwy“„yª‚†\I$vY@\§brl}¬»m¯±xw ¸BxL¾EGÂij‘3×)´ÛÜÝÞßàáâèéêëìíîï !;torrentflux_2.4/html/themes/midnight/images/proglass.gif0000755000004100000410000000412411017132666023716 0ustar www-datawww-dataGIF89añ÷Æÿ ÈÿÇÿÿÿÿ¹ïÿÆÿ ÈÿÊÿÊÿÇÿÇÿ¶îÿºïÿ»ðÿ!Íÿ³îÿ°íÿÉÿAÔÿ­ìÿªìÿ¸ïÿËÿ-ÐÿÇÿ)ÏÿÌÿËÿÌÿ Èÿ Èÿ=ÓÿÉÿ'Îÿžéÿ$ÎÿËÿ9Òÿ#Íÿ&ÎÿÉÿ}âÿYÚÿ,Ïÿ?ÔÿDÕÿ·ïÿPØÿFÕÿËÿbÜÿ4Ñÿ6Òÿ ÈÿJÖÿÌÿ*ÏÿnÞÿL×ÿ‰äÿ§ëÿ8ÒÿN×ÿ’æÿ˜èÿeÜÿqßÿgÝÿ3Ñÿµîÿ¤êÿHÖÿ‚ãÿBÕÿ´îÿxáÿ–çÿSØÿ`Ûÿ¥ëÿ²îÿÊÿœéÿ1ÑÿÉÿ¡êÿ®íÿ€âÿ«ìÿ¨ëÿUÙÿ<ÓÿzáÿlÞÿiÝÿ0Ðÿ^Ûÿ êÿ\Úÿ/ÐÿŒåÿWÙÿvàÿ¾Â¿›èÿ•çÿsßÿ„ãÿ¯íÿ ¤¦šèÿ”çÿ‡äÿŽæÿæÿ†äÿ±íÿÌÿÌÿæÿ£êÿåÿõõõjÝÿ…äÿ{áÿ"ÍÿkÞÿVÙÿtàÿuàÿ[Úÿ‹åÿ]Ûÿ¢êÿùùù©ìÿäääÊÿâÿ¬ìÿŸéÿ;ÓÿTÙÿýýý¦ëÿþþþ›žãÿGÖÿ_Ûÿ‘œŸ ÍÿRØÿãããwàÿéééíííçççèèèôôôÖÖÖ“çÿ™èÿÄÄÄüüüòòòúúúM×ÿßßß÷÷÷­­­ggfÁÁÁrßÿàààøøøõõö²²²½Á¿ÐÐФ¨§fÝÿ™œ„–šÀÀÀßßÝËËË»»»š £¤ÎÎΠ  dÜÿ§§¦ÔÔÔéÿÄÈÆÃÃÃÅÆÂôôópßÿñññÝÝÝ‘æÿìì씜œƒãÿ¿¿¿—èÿƒ‘–ÂÅÃÛÛÛ¿ïþˆäÿ««ªŠåÿöööÆÆÆmmm¾ÐÕÇÇÇnwz¾¾¾Ž™œ···–––2Ñÿ7Òÿ¬¬¬þÆÿ!ù,ñÿ§ Hp€®cܪ1 À°‚‹ Š(y…+Q@Ä#’a„!“¢!c?XŠ)9öÑi ŸîªDù]’§6ù$S|Õ”ìùñj¬[véV­bæWfhþ·¦± 7ìðÃG,qeÈ&;€¦´R)¡ ãÉ!“T{(¶¿A°­£‚ £¸Lkîp +ºf°Û£»@ÂKê¼J2ùAªçå»o«&ø+¬ñLk˜ø‘¹Ÿ™þ©àÄTWmõÕXgM`Åzò Ê*âвÌ/‰€,òµe …Évûm¸ã–{)Ì2§@³Í]àœÎòúÿ€ ½K¢z¯ÐêQYô¿I«%ð—Lßz°® O­õä”WnùåsçkÙ4ÓI' ÐMÙÔZ+bÚ%Ÿì¶ÊR°ìòÜ1§»n»ïŽÚ·©Û«*¾úÞ/âZ*¾´­?ð® c®üòÌ7ïüšSxq(špÂÉ'²hr8†¢è¢l´ý¨·’®÷˱Ï<û͵Ç[*à> eïüze´H?ëÀŸkÔ¼*ÌóHÀð€‡‰ž„^sŠ]|äÈ4L¡Š^tïtß;‘ø U>J¡}šÒ@•3Û½¯g‚Û]”†f8+ `Âãñœö¿„I­WÌ¡wÈCˆ)°5³(ˆÿõ²!ªD'š·Æç"-§9+¹QŽ8å©ýho&äY½~68VµðJðÑßâÖ4\A͆dS×ÈÆ6ºñA?dM1„XiåÆ{jK¢F8rœŒä‰4zŽb©êàäŠÚ n¿Í‹ìq!–·?ÆÍЌNjßÈÉNzò“ÇŠcjœQ‹6˜ò”¦ô…4ŒH2madùˆÑ0 “ˆ"7‚‰Lh£ëðÄ'Šʼ’²ò@ewVaa$Ã2IýÑç-ý£á‘'9PZóšØ´¦(U“›jySdwÄ#Å-ŽxËU1h4ˆ‚r 6¬1‡gèr&‚pE2i1‹`ôd;B! *ŽBL¦8*ä˜Ê8’é»*13Œ²z¦} &ÍLÞP€Ų̀F7ŠÀm¦& ;torrentflux_2.4/html/themes/matrix/0000755000004100000410000000000011026130107017611 5ustar www-datawww-datatorrentflux_2.4/html/themes/matrix/style.css0000755000004100000410000000735411017367654021522 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #ffffff; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/matrix/index.php0000755000004100000410000000051111017367654021454 0ustar www-datawww-datatorrentflux_2.4/html/themes/matrix/images/0000755000004100000410000000000011026130107021056 5ustar www-datawww-datatorrentflux_2.4/html/themes/matrix/images/messages_on.gif0000755000004100000410000000251511017132666024072 0ustar www-datawww-dataGIF89a1 æZxxxŠŠŠœœœ!ø PI|||4Ú#O}JMlJHHHIYH4í!AÛ1dddA«6FÑ8JÆ>PHD—;]]]F€@UUUFdCMMMû&ó”””ŽŽŽ£££*í/ä=¾0lll„„„///‹‹‹===BBB;;;{{{«««,ôwwwO¬F"ú ###¥¥¥&&&%%%¿¿¿222DDDJJJþ³³³ÿ9Í*eeefffttt¬¬¬P~KRLK[JOOOvvvCCCC®8>>>...­­­gggccc¤¤¤E˜<‰‰‰HfE^^^hhh(((M¹B;å*zzzGGGŒŒŒ''':::EEEÿÿÿ!ÿ NETSCAPE2.0!ùdZ,1 ÿ€-0Q„…†‡ˆ‰Š‹"E/2X‘’“”•–——&CPWX3Y ¡¢£¤¥¦¦V§¬­®  '« (·Y!¶¾!YÁ»¶YÅÐÆ±³XY VY Û <ÓVµÀÓ» »áÙYYVèÐÖ´Ó üèƲ@ñë‚Û*øÒP ¨x6| ˜`¡>l3‚›vDÜî Ñ$:wÔ²p âÂ:^HdíËæ¯ž¯]¾8T¨0Þ€Ž5óOÀ1ž¾.¾Z ê#²w§”V™JµªÕ«XƒøRò+U–)!€Ù³hÓª]Ëv-GH$i ®Ý»xóêÝ«wŠ!ù Z,1 ÷€ZZW„…†‡ˆ‰ŠŠ‚$‚‘’“”•%:–š›œZ*#¡¢‚TV S)RªZSS © ±Z´S ®R ©Z¸ RùZ¥§ZÌR+ƨ ³RÆ®®Ò ZSZS ZÙÃɦ‚ÆïáÙ ÈR)² ,̱ RñÈiakÊ|ûØ‚ÇPÚ®"4è Â;‰Ù¾Ó²À\Ü^ýP採¼s±\ÅZ€½qè1Ð,V8d.m’µ)â.p–JE1ÁS•>6áቊӧP£JJuj-(´ìa¥«×¯`Ê+vC-!ùdZ,,§€5„Zƒ‹ZŽˆƒZ’“ZZ¥9 ‚ ˆˆ«£ZZ²£ Ų¢5Œ7¥‹ÆZ¼Z7‹ÎÐÄàÆ«•¦ÕˆÆç²¸¡Z¾µ‰DÖù ‹ˆ‹($Û%!YJšé@I Âk#JœHQ‹¹J¹*jÜÈÑÉ?&!ù Z,,§€ S)R„ZSS ƒ ‹ZŽS ˆR ƒZ’ R“ZZ¥R+ ‚ R ˆˆ« £SZS Z²£ Ų ¢R)Œ ,¥‹ RÆZ¼Z,‹SÎÐÄàÆ«•¦ÕˆÆç²¸¡Z ¾ µ‰?Öù ‹ˆ‹ $Ûu JšéšBI Âk#JœHQ‹¹J¹*jÜÈÈ?;torrentflux_2.4/html/themes/matrix/images/admin.gif0000755000004100000410000000064211017132666022656 0ustar www-datawww-dataGIF89a1 ÕüŒŒŒ?]<ø(¼0›%ê"Ö|||‹‹‹(((///BBB===;;;%%%ÀÀÀDDD¥¥¥JJJ,¬xxx###á fff&&&www5ˆ,eee­­­ŽŽŽ222«««%ÊòzzzHHH''':::EEE!ù,1 ¿@ËÃD,ȤR©X42Ÿ“tJ­Z¯X¬ƒÁ1"¨°xLoeñ!Í®$¼ì8ª’ÛÅ%R'ˆk("ƒu!"h"(Šqy{'ru(u!u(Ÿ¢l“|l!†Ÿ!su§³‚µ¶i©•q™¡šœ²a´¤Á’zªiƒ(„¶ÂÐÅ”wÕÖd“ •%ÜÝÞßàáâá# $ëìíîïðñð  #úûüýþÿÿyè!;torrentflux_2.4/html/themes/matrix/images/profile.gif0000755000004100000410000000073211017132666023226 0ustar www-datawww-dataGIF89a1 Õá :s4ø(¼5ˆ,댌Œ,­û"Ö///(((|||‹‹‹===BBBxxxwwweee¥¥¥&&&DDDÀÀÀŽŽŽtorrentflux_2.4/html/themes/matrix/images/bar.gif0000755000004100000410000000326611017132666022337 0ustar www-datawww-dataGIF89adænnn>>>xxx ¨¨¨ÉÉÉ‚‚‚ddd±±±555ŸŸŸGGGQQQ•••ZZZ---¹¹¹ŒŒŒGHGÁÂÁ¹¹ºPQQ–••%%%-,,QPQ,--$$$%$$655ÂÂÁGGHŸžŸ±°±º¹¹556--,•–•ŒŒ‹žŸŸZZ[••–565[ZZ¹º¹ÂÂÂŒ‹ŒÁÁÁŸŸž$%%‚‚Z[ZeddÁ‹‹Œ‹Œ‹°±±ÂÁÁ‚‚[Z[Œ‹‹ÁÁÂ$%$%$%%%$‹‹‹±±°QQPdde-,-‚‚Z[[$$%¹ººHGGÊÉɺº¹dedPPQºººÂÁ––•‹ŒŒ[[[,,-,-,–––656ÉÊÉ[[ZdeeedePQP¨§¨GHHÉÉʺ¹º•––žŸžHHG‚§¨¨eedžžŸŸžž‚‚QPP,,,°°±°±°±°°–•–§§¨¨¨§HGHHHH!ù,dÿ€‚h‚…†R„ƒ‚_†ŒR“–R’—Œ•”…‰R35??;§;$;3$?5$°53³W¯DD$W?5Wµª²?D·®Â3Æ$½;Ê»$5·Ê¸D¤WÆ55ÏÂ;¥$3ÝͳáÁß$VV2SPë(Vi(÷ë2êñâM‘eŸ2ÞY)ˆ/Ÿ +àDž{SÖQ¤øp @|Òø‹˜ð Šu2î݃(á„'ÈŒ™ä¥‚—6cº”ÉSæž0Oļù2 P™F{%Ú3‰Î£ ’Îăgè§yŠžpªÀ€×¯`Êû¦Ìس^ùx5k€-Z°eÿú¼ ¶¬7L0`£×„ ½ â˜Ì@¯ -ü28ü—AaÇ&ZØ`ƒqä-(#–Ób1dÈ+f¼˜´ 9Ž Ní¸sœ½¡p~ðàmÚ/^hÐðË XvÓö­ÁöŠß/º$/®aî5]V¬ð-ýÁ àÑiï¶mü6ôî´ÛF~{Ïõ/Žïý` oáúˆÃ–@B¹ãAJ©$b’)¦”@vy¦l¶éæ›pÆ)çœtÖiçs çž|öé矀*è „h „¡ˆ6†ˆê£ˆBš€¤“6zé¥:`º„¥ˆR§KÀAÅ•&)ªaPꨦ°&°Ä’¢Z+¢phšëŒæ9¸àBá‚ À‚¸À¬¯1@à„³¿þŠlÑÆ ­B@ƒ¯Í. 9øê‚Ñ ¡…¶ÝJëê"ë­1aî·ÓK¯´É*[,².8 °8PpÔáx0†ÁW!°{ ñÿà g@±{ DÃìÆ+a²À"/<ÆÂÌòÉ,WQ°g03ÍuTñðÁXÐ@m˜Q‚?[PBG#]‚Ï DQôÏ@?Ý€DC]ÂÑ~8 õ>mÑO3=õ×S;ÅÕQhýsÕC_½ô×8ísS—ÀÝxç­÷Þ|÷í÷߀.¸ß^,0 ¤8â0^øá7®xá‘#n¹á—ÃæˆCn¹#Œ‚æ)À xé CžÂ醯nøá˜~9ãˆ+¾€é DðAD Âî½óþA| B[DÀE0Á;[0±E¿3<Ë3¡ÂöÅ3¿½ôËw`‡ÿ ÒðÁòæï»ÃïÎ|ó*ø®;ïÚ¿?ñÃKÏû €PDO8B@°nàE8ÂŒpá  7PÀ„`GxB8@#ð¤ h„n!a ø Rð‚Dà Ø¿ÜÀƒ(Ä!  @ ¢‡HÄ"ñˆHL¢—xÄ8ñ‰PŒ¢§HÅ*ZñŠXÌb9P p€" CD|‘jà¢*P2¨aŒm¬‚Æ2rQŽÂÐÈ3ˆ€l£»È¨ yäE ‚3Ìñ‹xT$ÿ¨ÇAž¡‹kdÊèEDà“  ¥(GIÊRšò”¨L¥*M;torrentflux_2.4/html/themes/matrix/images/noglass.gif0000755000004100000410000000115711017132666023236 0ustar www-datawww-dataGIF89aLÕ,,,zzz”””kkkžžž;;;KKK[[[‡‡‡[Z[‡ˆ‡[[Zˆ‡‡KKLžŸž‡‡ˆKLKˆ‡ˆ;<;<;;LKK‡ˆˆkjkLKLZ[[;;<ˆˆˆkkj[ZZˆˆ‡ŸžžZ[ZLLLjkkZZ[LLKžžŸKLL<;<žŸŸjkj,Lÿ@€pH,ȤrÉl:ŸP¨aJ­NM›j–ºv»VƒÌ ¾†MtØ+ ¸ßð¸|N¯ÛïvŠ£âp40 ‚"†z  Œ"“{†šz~"z ³´µ¶·¸¹º»¼»¿À¿Á%ÀÃ%ÁÀ4ÇÀÊÊ¿ÏÃÁÇÏÎÈÀØÕÀ ààã  #0-å3åà0 åôæîáîìä#ã#òþÆI'Ÿºâ~¸À@C$ 8TÂaC%:d‘DC/P¡$ !49q$•+bÄxR#ÈŠ)ØÉ³g”PØ@±3„‹¢?}*]Š”iPŸ!ˆu: ªÕ«X³jÝʵ«×® ¨X`A……'Ά‘!ì‰ @À…Á-Ù¸ "ˆ B"´y˘3kÞ̹³çÏ ?]cÅèFÇ8mútêÓ£S¿>°6êÙ¶˜Æ;vnÔ£ƒ;torrentflux_2.4/html/themes/matrix/images/home.gif0000755000004100000410000000064411017132666022520 0ustar www-datawww-dataGIF89a1 Õ(¼ŒŒŒûë:s4|||BBB?]<‹‹‹ø///(((===á ¥¥¥%%%JJJ5ˆ,222"ÖxxxŽŽŽ«««;;;­­­ÀÀÀDDD###fffwwweee&&&0›%%ÊòzzzHHH''':::EEE!ù,1 ÁÀÍÃD,ȤR¹P0>’“tJ­Z¯XìÅà14¨°x ˆŒÏè´:LAx×áN‡—H7<$ê‡}( |(" skwy't!‰ !( ((ž"a"vxzkr(r¬(§§°¦ }²jªj¬r˜šœ²Â²‰©’{s¬€‚¦­}ƹÈuרg ’%Þßàáâãäã# $íîïðñòóò #üýþÿ XC† ;torrentflux_2.4/html/themes/matrix/images/history.gif0000755000004100000410000000070211017132666023264 0ustar www-datawww-dataGIF89a1 Õ5ˆ,øŒŒŒ:s4á "Ö?]<(¼///,­===(((þ‹‹‹BBBëû|||;;;ŽŽŽÀÀÀfffwww222­­­JJJ%%%###xxx&&&)½L±àăRˆI²¤É“(O.Ð ÁA†'bÊœI³¦Í›6'`;torrentflux_2.4/html/themes/matrix/images/proglass.gif0000755000004100000410000000502111017132666023414 0ustar www-datawww-dataGIF89añæÓpkÌçš·ÃurQ-pIm”G‘Ó…ÉÑ„M¡Q0),|-MgX’EYSŒ¨[‰J6²ò¥Íížj»lLs&u䔥pXi)²è›u4ÉÊ…U0醂æï¢“ÄwŒ¶i¹·v3k¸Ðƒfm!ÚÔ˜ÒÛŽÖÇ•§˜fr©]¸rbÜ–†…Azx7¥µhA°``dS‚5Š:uÊzÖ…y¨§eê—\Ì|»¨yÚ¹•j©IC…ƒBO¾nàæšcw*4ˆ8‚šM’™LµXQÔ¥Šnxǵ…“„R»šv3£SÁg_™—VÍ”}Ç¥‚d¥Ñ„ …]õŒ‰¢Þ‘Ñ·Žã“ã¢p8!b;Ÿ§Zš]I[ ®ŒiÂ…q'–Fàzv»Üi؈®DAZBpu*>”DŸ÷§~'€×‡Þ­’r u%¼ROÉ_]œ:5¾Žs¯´i‡²~eof.ÆÂ„¢PEð‘‹°¦o®aT¿¼~ÞÞšÈ|nY®_p €ïŸ‰ø¨ {+!ù,ñÿ€~‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ‡e ¡¢£¤¥£eª«¬­®°°´µ¶·¸º¼¾¿ÀÁÂÃÄÅÆ==ÊËÌÊyÏÐÑy$ÔÕÖÕ&ÙÚÛÙ8&8àáâáh8hçèéêUìíîïð5òóôõôu5uúûüýúQ HP`Ÿƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠd(¡¤É“(Sª\yƒ 0cÊœISf€›8sêÜ©³GŸÍ‚ J´¨´£Ò®)%a‚)·§Ú¦˜˜BµªÕ«S†dµ«×¯^U Q!–¬Ù³hӢ堂-‡·pÿãÊK·®]¹òêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžLÙ/•˘3kÞÌ9³*Ÿ¥ˆMº´iÑ_¤|Yͺµë׬K|)A»¶íÛ¸sëÞÍ[7‰~®¡¸ñãs’+_>LjóçС71Ò¤ºõëØ›0Ñ®‰÷ïàËg2ƒ|ùèÓ«_Ï~½—÷ðãËŸO¿~|0øóëßÏ¿¿ÿÿ(à€hà&¨à‚ 6èàƒF(á„ýaá…f¨á†Ðáxâˆ$’ø„O¤¨âŠ,®(Â"Ä(ãŒ4Òx€Àá8ÜŽ<öèãÄ'äÌ1‡Ç‘H&‰ÿL6yOÞ å”TÞ€„•Hd©å–Zºáå—`†ÉŘd–9¦\ ©‡šk¶éæ›m tÖiçxæ©çžtÚà矀*è „j衈&ªè¢Œ6êè£F*餔Vj饘f:¨ œvêé§ †**¨ÈPª¨¦ªêª¬¦*ª¯zðª³Òjë­¸æªë®¼öÊk“ÀËäÂðƱoØ‘¬Ì6묳' q´ÔV»Å [d«í¶ÜÆáí·à† n ä–kî¹è*¡îºì¶ëî»ê²!ï¼ôÖk¯½<ä«ï¾üöëï¿,ðÀlðÁ'¬ð 7ìðÃG,ñÄû;ÁÿÅðñÆwìñÇ {üÆ#—úñ|ì‚ IÈBòˆL¤"ÉÈF:ò‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉN’ÿ   ¥(GIÊR’’d@%VÉÊVºò•«,dÙÂYÂð–+(@.ÈË^úò—À ¦0y¹ƒ(Zñ˜SdÁXÀÌf:³™W`A4å0Í+ÈášÖ¤¦6Ã80vó›xÀÂ9ÎrŠÓá<§Ûhv> ïŒgæIÏzÚóžøÌ§>÷™8ÌÓŸýL@ JЂô M¨BÊІ:ô¡¨D'JÑŠZô¢ͨF7ÊÑŽz¡?iHc R’Šô¤(M©JU ƒ´0©LgJS™ú7Í 2àƒ ðÔ§@ ªP‡JÔ¢õ¨B}æ3ÇÀ‚18õ©Pƒ¤zͪZõª×ÿ€´Zήzõ«V(gXÇj…²šõ¬hMkYÍpV¶ºÕ fˆ«\çJ׺Ú5®pÈ«^÷Ê×¾úu¯¬`KØÂö°ˆM¬bËØÆ:ö±¬d'KÙÊZö²˜Í¬f7ËYÃ*à³ Uh ÚÑšö´¨M-h)ðYÖº–°­lgë Ôö¶¶õÁmuËÛÞúV·Q ®p‡KÜâBucr—+æ*W/€®t_@Ýê¾ ×mÀÀÝîz·»b¯xÇ;^+„×¼èCY7`… ´·½ˆ¯|çKßúÖ·À¯~‹Àßþú÷¿°€ àÎøÀN°‚Ìà;øÁ~¬ÿ&ü‡ SØÂΰ†7¬†t8 ±ˆGûùÏ€´ MèBÎDH´¢ÍèF;šÑ!Ht¤‰éJ“øÒ˜ñB°€N{úÓ 5¨_°RïøÔ¨NµªUÝ㻚»b2‘gmd&ÛúÖZØ–wÍë,gÙËÀ¶r0lb;ÈN¶²—nÍìf;Ù‡Ž¶´§Míj[ûÚØÎ¶¶·çFóáÑà7¥%Mi;Ó—Þ´º9ÍnQ»»Ó¦.5uå­ê¬úÞø¾nv÷ýêïÆZÈŸµx‘|äZߚɹN¸®Þë†ûÚ ¿¶—‰­åc?ûâ¿x ;torrentflux_2.4/html/themes/BlueFlux/0000755000004100000410000000000011026130104020030 5ustar www-datawww-datatorrentflux_2.4/html/themes/BlueFlux/style.css0000755000004100000410000000751611017367654021744 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #ffffff; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#A8C4DA; } .fg { border: 0px outset #E6E6E6; background-color:#EEEEEE; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#EEEEEE; font-size:9pt; font-weight:normal;} .detailbar { border-right-width: 1px; border-right-style: solid; border-right-color: #000000; }torrentflux_2.4/html/themes/BlueFlux/index.php0000755000004100000410000000051111017367654021676 0ustar www-datawww-datatorrentflux_2.4/html/themes/BlueFlux/main-icons/0000755000004100000410000000000011026130104022065 5ustar www-datawww-datatorrentflux_2.4/html/themes/BlueFlux/main-icons/black.gif0000755000004100000410000000047611017132666023661 0ustar www-datawww-dataGIF89aÕ+¯¯¯°°°²²²›››µµµ­­­¬¬¬œœœššš¦¦¦óó󌌌«««‰‰‰···§§§ÑÑÑíííÔÔÔáááðððàààÇÇÇùùù¡¡¡Ëˡ‡‡ÌÌÌ———˜˜˜±±±ÈÈÈõõõÊÊÊ’’’™™™“““………¨¨¨ˆˆˆ³³³žžž•••ÿÿÿ!ù+,[À•pH,È$2RX,>”ä¤12D*R#x¦ÄÑrÎçAÅ8(˜Ñ(ŒÃˆ@£Œƒ1ñðØ F %)G $!I 'JžŸ GA;torrentflux_2.4/html/themes/BlueFlux/main-icons/delete_off.gif0000755000004100000410000000013711017132666024673 0ustar www-datawww-dataGIF89a‘¨¨¨€€€ÿÿÿ!ù,0”©«á  ÚæÝ ÚNåbDjäc•Žé·B³¹æÊÝoßšD†Œ¢qQ;torrentflux_2.4/html/themes/BlueFlux/main-icons/logout.gif0000755000004100000410000000012011017132666024100 0ustar www-datawww-dataGIF89a ‘ª_WÜuÿÿÿ!ù, !„&íÖ›!²zM³;mÙiß…‰˜dh¦’ÔéRVš;torrentflux_2.4/html/themes/BlueFlux/main-icons/delete_on.gif0000755000004100000410000000013711017132666024535 0ustar www-datawww-dataGIF89a‘ª_WÜuÿÿÿ!ù,0”©«à¡Ú æÝ!ÚNåbDjäc•Žé·B³¹æÊÝoßšD†Œ¢qQ;torrentflux_2.4/html/themes/BlueFlux/main-icons/user_group.gif0000755000004100000410000000112411017132666024766 0ustar www-datawww-dataGIF89aæA­­­cccê⃊·P:vÖÐuƒƒƒsssŒŒŒs¢A/iBBBFŒ¾VÞÖzÆÀekš9*e÷ñEf!ˆ¹T'aÎÈmïëŠ 4nc’1?~ŒŠF‚­J÷ó’C‚"YïçŠêçŽ'aòñØ’¾YÔÑqÆÃi¾»aÚçÌ*h½Ç×!G†ºÄÔg”7õôÛx¨DÞÛz:yðê‡ñô  0nZ…,¶³]&I‚Á\×äÉ„·M#]Ám_Œ/ÿÿÿ!ùA,±€AA„‚„†…† ŒŽ‹ —™›† Ÿ¡£•Aª©«­•:.$ 6;?¬-!1+¬7435#2='¬, /(&È <¬ ¬¬ ¬¨%"°J‘+8œ€áV``¥ÂƒV@,pX¨ Ö+V%+;torrentflux_2.4/html/themes/BlueFlux/main-icons/download_on.gif0000755000004100000410000000013411017132666025077 0ustar www-datawww-dataGIF89a‘|¦Â°Öðÿÿÿ!ù,-”©«à¡Ú æÝ!j9˜‚•g˜Š `ô’«xÊëøqxª‡a‡‹;torrentflux_2.4/html/themes/BlueFlux/main-icons/user.gif0000755000004100000410000000032211017132666023551 0ustar www-datawww-dataGIF89aÄŠ·Ps¢A­­­‚­Jkš9ˆ¹TŒ¾Vcccc’1Ef!Z…,„·M_Œ/g”7‹¸\ƒƒƒÚçÌoŸXÙÒ%Ìœ3yÚ$ðS¦P›ŠZ\ÀÒæIqÊäHÕ ÇŠ#8„(‘"Á¬T±~ýAÁX²ÊjÕzVBÚ´ Ö;torrentflux_2.4/html/themes/BlueFlux/main-icons/seed_on.gif0000755000004100000410000000013311017132666024207 0ustar www-datawww-dataGIF89a‘o±o¦ä¦ÿÿÿ!ù,,”©«à¡Ú æÝ!j9˜VA!ž–mGºã‡½«ðrw¾íiÄ ;torrentflux_2.4/html/themes/BlueFlux/main-icons/favicon.ico0000755000004100000410000000607011017132666024233 0ustar www-datawww-dataBM8 6(    µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚æßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖæßÖµŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚µŸ‚torrentflux_2.4/html/themes/BlueFlux/main-icons/folder.gif0000755000004100000410000000176211017132666024057 0ustar www-datawww-dataGIF89a÷˜Ö×éÿÿÿ†–Þ“¡êhk¯†ÏŽáâlw¸ããÿqw¯íãÿÔÍÌÿŽÕx†Ïx„Änw·ãäÿª²û–£ë€†Âz…ƚ㤱畢è¿Àÿej¯z‚½¯¼ð#qlwÅ%n‰˜Ünx¸jo¯#l,8yw}º›¢ír~¿or©œªót‚È{‹Ö””¢ëßÿjy¾ox¼›Õ›èr{Âlw«¥®ú×Øê ªï ªÿÒÓÿŠÈ¹Âù]eÀ”¤ýGV½ÐÑæ%+fw³gr³¼½ÿÛàÿƒ”Ú…ŒÎ8G¤gm¤ú÷ÿjw¹±¶ÿ¨µÿu€Ìsv®%y‚Ê…Ï4?›§°æ†•Þ®¶ÿœ¨ümv¨r}Ɖ’Ò•¡ô½Ãÿ*3w…ŠÅåÝÿš£Ü¢¯ÿ?L«Ä¾ÿ3?’5EŸuÈŒ•Ú“¥ë?M°˜£óßÖÿ„Õ†•ݬ»ÿe‹Ë£¦ÚÃÂÿÆÍ÷Ž¢ã÷êÿ ]w€Æ1?˜~Ô©°ú$b—¢çŠ™â™¢×ÆÈáÙÚꜩÿ…Åž¦í“ÚI‚†Åz†Íw€¿ÂÉúy‚Ëm|ÂŽ›à6?~ƒÀ{‚¼fmª´»ÿ¨±ÿÊËâ9BŠ€‰Òu€Æ+6º»æÿÿÿ!ù˜,Ï1 H° Áƒ% @`ĘüèH€N?h`c` j¸ƒ£K¡FLj!ð‘ ¼äƒhG _¦Ôg‹†8CòœA…E“+žìiI• 7ö,*R Œ"Æ`©†  ØPJ4CÉ!³€±’fÀ a!D Fi¡`@ƒvP x¤ÀÀ(=ð„J¥œ I¡G ™6*ÎÌ ±æGAh\"ðŽ4aŽ‘2†Ñ$K%¸‚H»6Á€;torrentflux_2.4/html/themes/BlueFlux/main-icons/download_owner.gif0000755000004100000410000000013411017132666025615 0ustar www-datawww-dataGIF89a‘|¦Â°Öðÿÿÿ!ù,-”©«à¡Ú æÝ!j9˜‚•g˜Š `ô’«xÊëøqxª‡a‡‹;torrentflux_2.4/html/themes/BlueFlux/main-icons/tar_down.gif0000755000004100000410000000170011017132666024411 0ustar www-datawww-dataGIF89a‡x€€€€ˆŸ˜Ÿ    ¨ ¯¨¯¯°¯°°°°¸°¿¸¿¿À¿ÀÀÀÏÈÏÏÐÏÐÐÐÐØÐߨßßàßààààèààèïïèïïðïððïððððøððøÿÿøÿÿÿÿ!ù",@EH°  €‡ .Lˆà`A j ááá 0 ì À(/(@@äÂ?<¨p0#J b¨ !B—9d¸ùগxBhÁJ¸„¹ñAÍŒT?x¸9ucNˆJ»âÔi¡gÅ© lÈ ‘¢E.=t`a"(àRÃ!QÂe9@$×ÇE;torrentflux_2.4/html/themes/BlueFlux/main-icons/green.gif0000755000004100000410000000047711017132666023706 0ustar www-datawww-dataGIF89aÕ6¦ä¦§å§«é«£Ì£ˆÁˆ©ç©óøó¢à¢£á£ôùôÈáÈŸÞŸßîß—É—ŒÈŒªèªÊáÊ–Ê–ìõì¯Ó¯ð÷ðµ×µ“Ó“ªÒªšÉš¤á¤¨æ¨¾¦å¦¤ã¤™Ê™‚½‚ÏäÏÉáÉÆàÆÅߍ⤕ҕ”Í”ùüùÏĕ͕‘Б‘Ñ‘àîà‚ ޠÓçӪ窕ʕŒÌŒ„¾„™Ø™ÿÿÿ!ù6,\@›pH,È$Rr!D”d‹ÆB )ò x ¯ÁqT ÎgÃØè˜ÑZÅhâ ÏƒÇ8Xhî+ F $'G(3 I.2!0JŸ ¡GA;torrentflux_2.4/html/themes/BlueFlux/main-icons/kill.gif0000755000004100000410000000013311017132666023526 0ustar www-datawww-dataGIF89a‘º”JáÉvÿÿÿ!ù,,”©«à¡Ú æÝ!j9˜VA!ž¡F%Ù=ç‡/ÍÍl® iÊ ;torrentflux_2.4/html/themes/BlueFlux/main-icons/run_on.gif0000755000004100000410000000013411017132666024074 0ustar www-datawww-dataGIF89a‘|¦Â°Öðÿÿÿ!ù,-”©«à¡Ú æÝ!j9˜‚•g˜Š `ô’«xÊëøqxª‡a‡‹;torrentflux_2.4/html/themes/BlueFlux/main-icons/download.gif0000755000004100000410000000013411017132666024403 0ustar www-datawww-dataGIF89a‘|¦Â°Öðÿÿÿ!ù,-”©«à¡Ú æÝ!j9˜‚•g˜Š `ô’«xÊëøqxª‡a‡‹;torrentflux_2.4/html/themes/BlueFlux/main-icons/locked.gif0000755000004100000410000000173411017132666024044 0ustar www-datawww-dataGIF89a÷ÿáŒBõõõÿÿÿþâ•ååäëȉíÌ©ú»Y{{{ϧ‡óCâ͹ç©ejjjñÝÌ̹«þÝ‘Ãk<þâ›úúúÙÙÙë”A›››íó÷ñññæîöïïïð˲ÑÅÀÆÆÆ‘’’ÉÉÉþþþãÓ´íÞ²ü¦DÎÆÀâ•JÛ~;ÿñ³áááýÝöÆs±±±é¤U´­©ì¢LþÀeüÍoÿÔ‹ñ´aî—DÏÁ»üüüÖr4í¬[¬¬¬ËzCõ½uà…=ýå¼íÚ¡Ý<ûׇýÆn÷ÃiþõÚèçä‰;¢¢¢ð‹2ÓƒEݽ“ÜÜÜõÕ´ÒÒÒûÌpúÃiõ¿eÿé ÷ÅmþüüÒj2þÓvíá¼ÿõÎÿñ¸ÕäóþÜ‹êêêÿëÀÆrAý؃ýþþÿ”+î­VúÒ‚ýüûÿóÁýÆu¶¶¶ÃÃþ¾¾ð³]æÀ¤âÜØÝŠCñ㹃ƒ„ÙæóÖÖÖýÈu¦¦¦ú§Lù©FçžPü×ÿ×…üúùÿÅhþÿÿùÏ{þÊxñïîòºfÿõ¾ù™7ÿí§ÿ³UýýþÞάë’=ùÑôóòúûýúÕƒûø÷ѽªîëéùÊvþèžô¹]ÿí©ºººå›NÌÌÌõ÷úÒi+çØ³üÏ©õÁlÿã´ÿÚ«ÿôºÚƳõ½`Ö¸’êÛÀèççú¡Aûº`Ÿ ¡ÿþýÿà×™fèƒ/ØÎÅø÷÷æ×»êÖ¼íÞ¼Øv6¥šÍb.æÈ¢ì¯êɨÚHô½h¹»¼ôŸIò­Oëè猅€þÌÞ‘IÔÈÁò­SÝÎÈúÈf—ŒþÓ‚ÿÒ‡æ„5ÿ·[ð6è†6ßéôÆ¿º×‰G„|xíìíøÉqûÎtþÉoÏÇÂÿä¤î´srrr———÷ËwѵðððÕĺðÑ‹ÞϳïáÀÿé¤þþÿøñëÿþþôÇï°YøÎ}ßЪþË}ô±UòºcØÆ¹ó½gþÌsô»eÔÀ¢ôׯðÝ£½·²ŠŠŠØ°•îЬح‡Õ¬’ÿò¼øÌ€ÿÿþÏÑÑ÷?þŸ:÷Ú¸ùÞ¹åÕÌëÙÍ㹓ûÑxÉž†üÒzÿÿÿ!ùÿ,¹ÿ (`Bz @­ N ÃއG‘"¤€` ŽR030@ˆ—€xÊ Ê„óŒµ&Š¢ˆ"²aƒ;%øx\Jç ¡+ j9Yôc@60ùž:ç:þdJÁ+a!13\œ±ô yäj¨²C ¤ç˜ÜÑ‘(¡¢*̹!k³1ÚêCK\<)9Âa$"lÉq$ž4v¹PìJ›b ;torrentflux_2.4/html/themes/BlueFlux/main-icons/yellow.gif0000755000004100000410000000047611017132666024120 0ustar www-datawww-dataGIF89aÕ1êßuêßwêßzéÞpëáäÖRéÝnéÞqÙÐsÜÍ>ÞÖ…èá¥ãÛŒäÖOúùíãÕKúùìëæ¸íè¼èÜiù÷èòïÏçÛgÚÍPãÙyôðÏäÖPéã¯ä×Uèã¯äÖQ÷õããÕMûúî×È9ßÐ2×È;å×TßÒWêßxÞÌ,êäªâÒBêã§ÝÒ`âÓDýüõæÙ]ëá|ÿÿÿ!ù1,[À˜pH,È$òƒI$V”d†Ô TR$xÄqÁ ÎçBÅh:˜Ñ°ÃèA£†’a9Ù F!(,.G -)I#JžŸ GA;torrentflux_2.4/html/themes/BlueFlux/main-icons/red.gif0000755000004100000410000000047611017132666023357 0ustar www-datawww-dataGIF89aÕ,߬¬ß­­Ü¦¦á³³à°°Ý¨¨ÓŽŽèÃÃÓÒŒŒ×˜˜Ý©©Ð……Ì}}æÀÀÛ¡¡æ¾¾úññ௯êÊÊÔ÷êêñÜÜüøøÕ’’Û££Û¢¢×™™òÝÝá²²ìÎÎÔÊwwúóóÉuuÉttúòòÕ““ËzzçÂÂÒÓшˆøîîÿÿÿ!ù,,[@–pH,È$²òh4«$„(ŒRDx ÅR Îg„ňZ˜ÑMÀh@£ŠQ¡‘ØF!# G) *'I$& JžŸ GA;torrentflux_2.4/html/themes/BlueFlux/images/0000755000004100000410000000000011026130104021275 5ustar www-datawww-datatorrentflux_2.4/html/themes/BlueFlux/images/messages_on.gif0000755000004100000410000000103511017132666024310 0ustar www-datawww-dataGIF89a1 ‘ÿÿÿÿÿÿ!ÿ NETSCAPE2.0!ù,1 G”©Ëí£œ´Ú»@Ò¸.|'~œy ¡¸‚æÉ¶éJ—Z§÷^óoC½Z0[O¨ ý|K]ï™3àšD™µŠ&G(·²u!ù,T!ù,T!ù,T!ù,T!ù,T!ù,T!ù,T!ù,. =Œ~†ËíÏ‚Ú ¥Ñ©vÅQžè…䆊ê8"Õ›ÂÉŠrZ Úñ}NtÃÚýZŸEI—›ðNŸæ™ñA§Q©£!ù,T!ù,T!ù,T!ù,T!ù,T!ù,T!ù,T;torrentflux_2.4/html/themes/BlueFlux/images/admin.gif0000755000004100000410000000014211017132666023073 0ustar www-datawww-dataGIF89a1 €ÿÿÿ!ù,1 9Œ©Ëí£œ´J¬8'ì€Û'"åe—±œ§v[lÐv‹¿ ç·N«¬|D`Qèѽ~Ì$ê : ;torrentflux_2.4/html/themes/BlueFlux/images/profile.gif0000755000004100000410000000015111017132666023443 0ustar www-datawww-dataGIF89a1 €ÿÿÿ!ù,1 @Œ©Ëí£œ´Ú2wgi&vbÙ #h‚$Ÿß·4%¯qÍ¿µú˜¹†=âë&Qår¿EÉB.‡ÀŽõŠ•;torrentflux_2.4/html/themes/BlueFlux/images/messages_off.gif0000755000004100000410000000016011017132666024444 0ustar www-datawww-dataGIF89a1 €ÿÿÿ!ù,1 GŒ©Ëí£œ´Ú»@Ò¸|'~œy ¡¸‚æÉ¶éJ—Z§÷^óoC½Z0[O¨ ý|K]ï™3àšD™µŠ&G(·²u;torrentflux_2.4/html/themes/BlueFlux/images/progressbar.gif0000755000004100000410000000007211017132666024336 0ustar www-datawww-dataGIF89ad€¦ä¥!ù,d„©Ëí£œ´Ú‹³Þ¼û¯;torrentflux_2.4/html/themes/BlueFlux/images/index.html0000755000004100000410000000001511017132666023310 0ustar www-datawww-datatorrentflux_2.4/html/themes/BlueFlux/images/bar.gif0000755000004100000410000000005311017132666022550 0ustar www-datawww-dataGIF89a€¨ÄÚ!ù,D;torrentflux_2.4/html/themes/BlueFlux/images/noglass.gif0000755000004100000410000000011511017132666023451 0ustar www-datawww-dataGIF89aA ‘îîîøøø&&&+++,A &œŽ©Ëíߘ´Ú‹³Þ¼û†âH–扦êʶî ÇòL—„ç:>;torrentflux_2.4/html/themes/BlueFlux/images/home.gif0000755000004100000410000000013611017132666022736 0ustar www-datawww-dataGIF89a1 €ÿÿÿ!ù,1 5Œ©Ëí£œ´Ú[0{¾݇æÙ¢Zjî §› {g<çøk‡ô¯cõ@ _Ð($)—LE;torrentflux_2.4/html/themes/BlueFlux/images/history.gif0000755000004100000410000000015411017132666023507 0ustar www-datawww-dataGIF89a1 €ÿÿÿ!ù,1 CŒ©Ëí£œ´Ú0:tõaÍ.¥nÞFvÚ»ªî,½0}´k¼Ÿ£Ì êzAN1Ü—D%¯–œ©ŒBæ…õa+ZC;torrentflux_2.4/html/themes/BlueFlux/images/directory.gif0000755000004100000410000000016111017132666024010 0ustar www-datawww-dataGIF89a1 €ÿÿÿ!ù,1 HŒ©Ëí£œ´ÚË€Ö†Sy`5’@wrj°í¦ŠiŒÈì<ߺ{êq>²Ñn¯ê8}¹ÝrIµj0¤±JäážSŒ—ú ;;torrentflux_2.4/html/themes/BlueFlux/images/proglass.gif0000755000004100000410000001105211017132666023637 0ustar www-datawww-dataGIF89a… ÷‚¡¸Îà눦¼àî÷r”­¦¾Ð†¤ºs•®œ¶Éž¸Ê¤½Ï¾Òà\‚žÙèòhŒ§ÔäïÇÚæj¨¼ÑßÞíöÜëôRz˜Š¨½²ÉØÍÞêPx—]ƒŸŽªÀ”°Äp’¬´ÊÚX~›˜³ÇŒ©¿ ºÌ­ÄÔæòû’®Ã¶ÌÛ£¼ÎÀÔâ¸ÎÜ ·ÄØä„£¹áïø|œ´dˆ¤nªNv•b‡¢ÒãîçôüÐáìªÂÓyš²ÂÖãÜìõšµÈJs’ÚéòÏàì»ÐÞV}š¯ÆÖÚêóv˜°kŽ©®ÆÖÆÙæY€Lu”—²Æ¨ÁÒx˜±Kt’éöüHr’Òäîêöý¨ÀѬÁ~ž¶ÚêôfŠ¥ÆÚæÆØåT{™u–¯fЦ_„ Lv•ެÀZ€žÝìõU|šæôûV~›š¶ÈÂÕâÃÖäÄ×ä~žµxš²Øçñ`†¢€Ÿ¶¹ÎÝäñùlª¬ÃÔÉÛ矹˙´ÈLu“Òâí¸ÍÜXœÍßë·ÌÛ§ÀѰÈ×ÀÔáT|™ºÏÝg‹¦Þî÷ªÂÔ­ÂNv–®ÄÖx™±b‡£eŠ¥ÉÜèa†¡¼Òàéöýn‘«ãðúäòù•±Å‡¥»‘®ÂÌÞé¿ÓáOx– ¹Ì–²Å®ÆÕµËÚ}žµ[žm©Ir’cˆ£`…¡·ÍÛáðøW~›Ow–gŒ¦©ÁÒSz—(((×çñâðøäòúê÷þãñùë÷þËÝééõýÕåðÖæðÊÜèåòúèõüêöþ®ÅÕâðù¡»Íèõý{œ³Õæð}µèôü±ÈØ´ÊÙåòû“¯ÃæóûäñúÖæñ°Ç׿ÔáÌÝép’«dˆ£ãðùéõü³ÊÙë÷ÿËÞéQy—׿ðãðø½Ñß|œ³×æñKt“¢»ÎØèñæóúÊÜé{œ´^„ ëøÿçóû”¯ÄßíöQz˜ËÝ蔯éÂÓÑâíÖåð[{›³o’«ëöþèôýÖçñ³ÉÙ«ÃÓÊÝèÊÝéÁÖâ×çòèôûêõþ ºËâñùãñø«ÄÔÃÖãëöÿËÜèËÜ铰Ñ­Âêõýe‰¥ÌÝêËÝêu—¯!ù,… ÿI H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠ Q•2e¨PÉJ™òI¢D.Y½LËV¬s4b颡K Ú~ùE”h¯^°N)U ŒM*§ÎL9£EËT‹«X±ØÊ­«W/`Â¥@–씳A‚L £mÔ¨5@C·”Ýh®J¹ç —«V€~àäÁ '3Ϙ®F¸Æ5"÷˜ ²Ëv0Ø´ ÒªÏÞ¬½zeèéÓRP¤ˆ•×VV”‘]¦v½zcpŒÙ…=‘† ‹D|qãÏ$ø Ü‡>ÏùðY³†²ß1ÁÝ„¥ï<¤ÿáÂ.ó„å$="@fÉA¿¾7êlèeCÿP@h` $˜à N3M-µˆ a<“ÀGf˜v¨Ã‡q„B €€ P‚%´Ø0úò/¾”PÂ#èó €DáãDä„`d$©¤ऎ8b@”TÉ•X²À–[ª€ *¨!¦fiF.—ä’‹ lBã9p’sÜ7œ1ÈJ(!ÄžBüã'€bqÀ ƒ`è¡$šh9å(â( 0di”¶1Ä¥—F itÚ‡§}dÑGTPQüÂ?Ƽ`Ì&„Èÿk¬2b+'¸âª…ØôªÁ¯À2 ¬°˜0€IÇŽÓ…ÌÖál8ûÁŸüðC?|ñE¶Új»ÇàŽRAWŒ".30£îº0“A’€"ï¼1ÄJ½ø¡¯rÁ¯4¼ÃÀï ÉÁ7!* «ÒÒJ²ÈâÒL‰°Â 2ÈÄ¢±Nïüä“OBUÍ/°ÀÒË)°°Ì)l0’Ê"©ÄLUUž˜b•V[åÌÍ]Màóby‘CYfQ VZl½åV\tQsW3¥ ãJ_¸ÖÊW ¦Xbs,öXcÕ@Y–]¦$Ä MÌ*ëxÃÎh¥öFj¬QEk­½¶meÔÿCÆm¹é6Fo¾7\$Ç=³À3ˆ$ÇœsÒENuXwG'Ûy÷%áñ’L2é”WÞ.ž{ñÍB„|óà=øý¡ß~¢ø—„€x ‚ œÐ{ƒB(¡^¨a†ŠÁ!ˆqè@b‰&ªˆD#,¶#4Òhã#7ê£> IäG©ä’OF©¾”Vfy%—\‚)ÿ˜R˜qfšjºp ÐÜr œtº“ï$=ùéO€"T¡ …(E£QrT&Ú0ÁJ ÁR˜ÚT§ЇPŒjT¢Ê‚©Tµ*~¼à„›€¬j%ƒZÝJW»â¯°¬`ËX˜G»°,fAZÐúÀ'ÿ†H-kqk[ں¾®+ŒK\éê†Õõ®*¾ ñ¢×½ðU¯#Ä@_þ˜&,a`g4˜&Ô¨0R(ƒaö0‡ÃXò„:Z¬bC+l¢±œìäcE©† aA‚“• e§FÌbvŒcÐ"*6Ë Îxæ¯ø,h`ÑŒ†–¶x² 5Üa—R4jÁè‹Õ¬6Â(¦kŒyLdÓ±‰2fË $v¹ŒÏ¬b4¤1DÜLC7¼ÝÍ5z« mêQÝnp¾q¦‰œÅ%'9Îɦt&—ëXîrÜÙç<À Ï‘Ç<»0{P·:ÖµÎuøÉÏìjw»$ÜNw*ï~Çÿ àEhxijÐñ6Ô¡å}Èy"‚Þ‰Vä"ëq`ØË^p”£ð ) \_ùÌw¾'9É¥’Ü÷>ø}éKa“ê·R5¹tM.ðétæIO}:` H¨CªPTŠ¡ˆ:J™HjR)xÁ nJSàÔ§¦úAS¥Ê„/0a UH«CÔ* œk®vEC_ýŠ–Z… L¡ uøa\£å,"†áØ2b·ÀÅDp‘k\éª@7ÖÅ®*b1^’D½¶ØÅ.‚ñ_ ØÊX0‚i¢ÙhKR"‹Dt6ð¨˜-˜À›ÐÀ&;ù À ¡åµIaY"ò”˜ÿÍC¦¨J$qÖ‚œålÜøX&@Lnò,ka‹[>JjÔÅ.ÁH¥*qQµ«]­0†Ùš×¾É€l=À Æ»Kά ŸÍi†97¼å 6±™MßêÜŒ¡»œz#MÄ%nÌyF6!7mv³›ÖÁ\8ÅIN^Œ'téŒðzN„JÀ§¬£Ï}ð3»þ€Ãv î„ ÞõóÞ$DP¡â¯ :PÞAC”Эˆ8vŒ¶!QíåÈ{= ßø€‚"©£MòèG«Ô>’ÂÏK`RCJWZ?ûáM1ý_œä4§æ‰OüG ØSŸ*ª€àQa€Ô b°ÿ©Cˆ@œ5*†ªT¥*¡ YEXÍÊ«¶²•XcØ«²ë¬7Ì¡¢•õÖe=ëYÑbµôª-nñµ‰åª€¹ÆEØvYQ’ȵ˜¯Æ‚q_‘•ÆV]Ùƒ¹Z ™eXJ̱' Â³2©ØmÁ lL'ª ÙkiÈØ¦â©8F²©b•HÞì*¾õ­‚{I ya“EãdZ>ÉP6÷¹Ñ:‚Á—UfÍ0ˆÑn,ÃÖ]ÊÀïÆ /WÑÏÜãmpc/Ý p7øêo}#ƒ3y³_ Gš ðïâ˜Óos )800—¹sŽs:KGa ¼'uï„g~òóáÚÕN@¸ÿ#q‰ÇÏi øŸ,fñ@1TPtÆÏ³1ŽOÄ"¼{3ÒžôQ‚ïéÃGåBF5zäó¡JKfòH³-™ôKR“ýì÷R˜öoË4õ2NýÔ§ Š> jPÏ|TEDj©K¥¦æLç ~pT¥* WåªW¥V„ô!Ī+Z4Dô°ÚÊ€.ŒCY<ä¡\ø!NzÒGÄt¸Â¥itÖ]í=¼@M/.~Ñ‹§ãĨêÊl®Ö¬ß¨ Z«¤Ö0yÂ>tm‹Œñ'ªU­kÑ‹_²d%cÄÊØàÚ&;·6ó„${;êSrÀ¥vXŽ[–µð` ždnÿ(Á-Ý¿T÷ÜçN÷bfð5vK†lñ/v¹ ¬â¢YÜP37ÖÔ-oÈpG_÷58cðÁAMÇaM ×pÛd`—`w9âd ¼ ƒNè”NîÁíT ‚0 O²“üAO·ƒ;#Fbû<P-&PRsbÀ<5=)Â"Õós0’B‡#EÇ#à³KG$…$H–>P2%RBRXòd]eZgehâR× ×v$@fa¶SeffgV FµfJU)r—At·A „w}p*«¢*(´U}+€&ipaC½Â+¿’xhE,mµC×,q%-•GDÕ‚-Ûÿb-{¥yåEœöyîâ.Y4jòòbzG°§¶zb4Y®W0ÓF&*±Y3Q7áG<á@!lEq±µMQ[Q1U1}“TI]IcA4ȕ޷\q1ÏU x¡|á¬4…q[ÃŽÁn“ñ—›Ñ¾û'7ýçï•L8ÏÄ_À! ˜8Êñ8ÓQב Ö›6:è¡ëä WöÁaûÑÿb+¸;&æO0G!2øb5‡s$ò<'’" ¥c1tÛ“#;dâ#>FØtI˜>R"RSç>&e)%&eÂuWÖ&o'4e'x‚S{ÿ¢Sc¦@i·vg¦f")nöf™RwŸbg¢B*¦‚*$Ô*¯2+²ÒB–+~hV‡¦V‰†,Ž×C“-ÒRD×Â-Gä-ME“X–èið2/¥ÇXŽå/ýY’åz®–0 £Y¨ð#1£kókºÐ1@1˜Â62%cH*Ã2.32Ãl5ólÖ§3”ô3ÖšÔ}Ú¶mJÓmLƒNãŒP#5TÃJç¦nÛ6í^eãh£6lã6㈪a7îõoµ1€¸‚C8Òt8ÿÅ8ŽÓ‘óp”c9ùÈ`äô97:×qòÑN­ó:±Óa&÷”;ù¤O â;ýä )6<.6sÉÿcP!â<8¸"'B=Q?Ø=ß’CFdåãtIRëÃdNxuò#…jPeU˜?ûÓ?Z¶…4]ø…<ÕShç“C”DAhgEÉ)žò† tgz§g'ô·B^åB|CZ`x‰—V6T,m¥C‡èC”gyÕ‚yÝbiK„iOÄiR4X¢gEšØ‰nij¨& cTFe”Fi„0§(´GsÔv$NªG| ²H"3H…„2I‘Š´HôH6™Á(ŒÚ‡I—Yj‘ŒÌ%J¤d§T ©t~Ó(êKÜå¶TKÛoš1óöÀ$Lú6›´‰Lñ%_}ÓL¹‘_ì8M ÿ¨8ÏpM G`ÜäMt0`qãTN £qFaìäNïtê O´SO×YÙÙ‚'†b/Pá9ƒI‘çÉs õsÕc7‚#G'dÅtóÙQRP"Rù¹’(E?,%]S2ÅezS9©“;¹ j'TDU†mv†™ ¡OURÅAv†wªB‡YÅ¡ÚU_Õ‡cˆV9ˆXi,ÈâVp%WF@Wu`WxeD™§D4êDœ&XiiX¤—X‹ÅE^tzû¤©FŠ¥xY°†—,ÑYŸZ{DZ¦…ZÁÇZÃ÷Z$£l0[1C[·}»mÕmØGmÖF\ÆeŒh¡\Ý–¦Î…¥]SÿS5Ô×¥5êÖ~Ý%6ßõ]òÇ§æµ èµ êeúæ^„ŠŽóU_»_Ç_ï¸8&6`8'˜Ê9åÔ–NæVaO¹f!–r,Ø !²b1h<Èã!2fƒ9=8¶ƒ;Öcå=ßcQñYd¿š$L¢dQ×d*?Ç:e+µu1™e[æ¬bç…tvd–vg–fmçvmfA—‚AröTvGU"„gÊg~&+€hƒ6¢‡W¢ˆ†¢*ºCÖ•@$iú£Iįe©iPÔi9 j¢–‰öRj_„°?0«–F–{$Q½Ö{½Ø›½Ú»½ÜÛ½Þû½à¾âK ;torrentflux_2.4/html/themes/BlueFlux/readme.txt0000755000004100000410000000332711017367654022064 0ustar www-datawww-data####################################################################### # # # BlueFlux theme for Torrentflux (http://www.torrentflux.com) # # # # By: Micke (RaWeN @ torrentflux forums) # # Contact: ICQ 32133138 HTTP www.riskaka.com # # # ####################################################################### Installation (Optional steps within []) ---------------------------------------- 1. Unzip and upload the BlueFlux folder to /*your_torrentflux_directory*/themes/ [ 2. BACKUP YOUR CURRENT FILES BEFORE PROCEEDING! ] [ 3. Replace the icons in /*your_torrentflux_directory/images with the ones in BlueFlux/main-icons/ ] [ 4. Edit the files below to get the final touches. ] 5. Enjoy your new theme =) Changed files: -------------- # downloaddetails.php Original: New:
* Also the heights of the to "; if (IsUser($user_id)) { $output .= ""; } else { $output .= ""; } $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .= ""; $inx++; } if($inx == 0) { $output = ""; } $prev = ($min-$offset); if ($prev>=0) { $prevlink = ""; $prevlink .= "<<".$min." "._SHOWPREVIOUS."]  "; } if ($inx>=$offset) { $morelink = ""; $morelink .= "["._SHOWMORE.">>"; } ?>
below this line is changed from 13 to 12 # functions.php Original: New:
Changelog (not much but hey, why not!): --------------------------------------- 20051120 - 1.0: First official release Changed since last time * More icons * Added instructions on how to change files * Added .detailbar class in style.css . 20051118 - 0.1: The all new blueflux theme.torrentflux_2.4/html/themes/index.html0000755000004100000410000000001511017132666020315 0ustar www-datawww-datatorrentflux_2.4/html/themes/slate/0000755000004100000410000000000011026130107017415 5ustar www-datawww-datatorrentflux_2.4/html/themes/slate/style.css0000755000004100000410000000735411017367654021326 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #FFFFFF; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/slate/index.php0000755000004100000410000000051111017367654021260 0ustar www-datawww-datatorrentflux_2.4/html/themes/slate/images/0000755000004100000410000000000011026130107020662 5ustar www-datawww-datatorrentflux_2.4/html/themes/slate/images/messages_on.gif0000755000004100000410000000342411017132666023676 0ustar www-datawww-dataGIF89a1 æÉÉɤ¤¤ÝÝÝ………šššŒŒŒSSS|||777¸¸¸ªªªkkk¡¡¡ttt:::uuuŸŸŸ‘‘‘¯¯¯ÚÚÚzzz§§§yyy’’’ÑÑÑ‹‹‹888†††àààiiiooo˜˜˜···ÖÖÖ}}}ÁÁÁ€€€©©©–––ÊÊʵµµ555   HHHbbb³³³111lllVVVÈÈȰ°°hhhggg@@@¹¹¹CCC444âââvvvaaa___{{{ppp‚‚‚¢¢¢ááá“““~~~‡‡‡```jjj«««mmmÞÞÞ›››¥¥¥BBBAAAœœœžžžUUUŽŽŽÀÀÀTTTdddeee999fff™™™ccc!ÿ NETSCAPE2.0!ùd,1 ÿ€0+\„…†‡\„ŠŠ‰ˆˆ9U:-UYYU—˜˜›™œ—›ž£Ÿœ™2U=A._°_Z±°³²µ´¶´·¸Zº±Z´[¼²º¿À¸»¼¿³[ Y_TÚ_@ÙTIá_ä'ÞX Ù[è'_èÒÔÖ _&þ™(°ÁÞØ<|ðP‹o?¼ÁòÊ—´ðð,Xîí#vÍ“ œH÷¥€„ A¨¡åC8*NÊ ðEE¸<ÈÑåµb:u(pÄžLÄBá– '¥¦BåaÆM$©zõ€Q’? hIjD8«árN|ø°’烕T.h)  Ü5–úØ×Ê™agËx}ˆ²Î¢2cÓ o™L¹r—Ê[.gÞ\ÙÆ‚Nð˜|Y3éD„Üð‘‹+®AÊ {öìÚ¶iãÆ rÄ Y,xñB øðãÈ“HÎ|øòçÇ—W1#!ù ,,Ö€ WT„_WW ƒ 1$‹_ŽWˆƒ[—T_žW[_X§XT(  4‚ TZ$_ˆ( ¹WZW _<_$¥ ÍTT“_TW³4Z ‹ TÎ_Â_‹W$ Ú]áᬠ X X¨ZÎõÐ Z·q£öMŽc@Þhº{r"³Õ€n.s‚€x€3d…tm.8.81+™0™ 101˜m‹6/ˆk7 8 .8. ›–¼ ££¾ˆi‹¬xiÊ7µ„¶›0Ó› ÀÕ¨8ÆŽ‡o1uµ¸š¢Õ¢¢ چ܌~sz8 ..µ¤(çíè1ײaÛoÕ 6ʽˣp^B…ðœ`E‹+^Ô¨£ÅŠ=‚ ±D $>dÁRF–/[º„ISæÌ™/è´érB 4DT¨QCÑ£H‘MÊ´éÒ¢D/tp;torrentflux_2.4/html/themes/slate/images/profile.gif0000755000004100000410000000105611017132666023032 0ustar www-datawww-dataGIF89a1 Õééé»»»ÒÒÒŠŠŠÜÜÜnnnããã^^^®®®ÈÈÈ”””ooo“““¼¼¼íííèèèÇÇÇ‘‘‘ÛÛÛ’’’€€€___222‚‚‚ÓÓÓ111­­­ŸŸŸEEEQQQ   ªªª:::ÉÉÉLLL‰‰‰cccxxx<<³ÛnËD¡ÐEÔl‹Â“ÁÑomo9ƒg3 <8g“kk:199 =91= 9==r9ŠŒ}g9:º=ug=¢g=¹1©®®: =6¶2::ˆÝ¸= ¡kÏkÑà=11ÍÍÝž9×Ù }l®ððúÄ´b ÓYÏtø6 †1jÙùÙ+žŽI€àÉ SRIxM‡³˜Ù»µ&M 別r#èžE÷ṵ̈Á“çŒKDØØ9”‚Ÿ=‰&ýÙÓ'S0ÀxÑÂD«4®j¥Á+ׯZ½ŠÅ¶ÆW Và(Aâ†Û·¼u+îÜ»toÔ­{—ÅA;torrentflux_2.4/html/themes/slate/images/messages_off.gif0000755000004100000410000000111411017132666024026 0ustar www-datawww-dataGIF89a1 Õ€€€OOO^^^nnnÒÒÒ|||ãããÜÜÜŸŸŸéééÈÈȼ¼¼DDD‘‘‘oooèèèÛÛÛïïïÇÇÇ®®®íííiiiEEE:::111zzz°°°RRR   ```³³³KKKªªª’’’<<<___JJJ222444»»»âââPPPNNN}}}CCC333MMM!ù,1 ÿÀLF&K‹)#rÉTÇc’HMa.(RŒëz¿^.L.—&K*6k¿Úð7ÜMŸÇíö·üµÑ¬ñ/zr3y„w{wx,0.2l-+*“3+++š 3+ —*3 3šŒ- 3/**3‘%*×-3Â/-+3/*²·kÔà */äª+¤*+É»š*-Ã/Öšð9‚4ìž8 ² x€`†{—´X€àÅ"¸²–@/-"ŽhôhƽäÄÍ  é’¦@Ðä*ÁŠf¨°i­E:iRx²(0ÐPœAŠÉÐPÀ4£/4JÁ`F€,²²Àªµ+ׯ[µø`À@‚\½níàÀ†`È+·À\»0ðÒÝ‹W¯ß»Dp¸`Aƒ‹Ã-\$VÌXqâŇ3†Ü8r‹ÇŠA(;torrentflux_2.4/html/themes/slate/images/progressbar.gif0000755000004100000410000000142711017132666023725 0ustar www-datawww-dataGIF89ad樷ʣÕ혪¸¤Úø‰´ês¸â–Èôš²ÃvœØ§È牗¶ºØóÄÌÑ’™²›Âºv¨Ú¸¹È•ºÒŒÈñ¬ÇÆcˆª–´µa~¤¡³}¢¼‡ºÙx·Å¹«Ãw˜¦„žª„ÆÔ‡ˆ¹`•³²íú“Óå¢éõœÕèz¢ã‚Â䛨Ɍ›Æ£¾äx†¹‡«Â¥¸·‹À㉥¬—ÑõµÄÂa™¹…©Ù{ŒÉg†É¨«Ó”´q±ß«ê÷žâïv°Ðb„¸^‡¤®íùƒÊîžÎ惬åm‘¥“ÒꢶàÅá¹æ¤åó‘¥Ùršäœßî•ÅÛ®Ôìk¬Ít´Ø{Âá}³Ûo¤º°âú–«ã©æöb¢Åu«Í‘¿é²ãl‹Ø†´°ÉÞ|ÆëvÈê…Àr¿Þo¯Ó]Ÿi¢ÁÀáõ•Äì˜Ôç—×îtÇèÎ𔟼ÀÚõkŸÀo‘Ûx–ÑŽÐã|Éë†ÅæŽÇèžÅÜoƒ¬³²Ñ¼ß^‘¯xÀâ~¡±®¨ÌÌæ”Èèv²¿²á’¿òÁØ•Éß!ù,dÿ€+q K ii K?~~~JZ )CC5xxž,,,00 ©© s55'h ³((GGRRWW™))†KK$"Æ"dÉd$$KbÐbKZ+w+ZKu 1jUOVcä-tM_LL__MOl3]6÷ A.*8p@4(ºtQ!Ç‚C‡;hÐÀ²Å2€(b¥… v¼ˆôbljIoÞÀÑ£§E†*ab€¨F`ròAå  ^œñ±ÅN£7Æ›7ãƒ=ùöQ˜ÚÏ… XÑ(P¨‚áÔ¯;"RD‚¤D ú ¨™·\tÜøðqæÌ‹»gÞ4¡ƒ:1˜ÐycB ”Ã{4x‘ÄŽÇ#ŒÉ‘¤Œe!yˆø‰€g0&Lp¥t– ˆíÀ X\ܹƒà |8Ž `À€(À§LA¼8Ž=B(Ÿ’D„ {{hSÆ÷‹@;torrentflux_2.4/html/themes/slate/images/index.html0000755000004100000410000000001511017132666022672 0ustar www-datawww-datatorrentflux_2.4/html/themes/slate/images/bar.gif0000755000004100000410000000010511017132666022130 0ustar www-datawww-dataGIF89a—€t•µ>m›!ù,—Œ©Ëí£œt‚‹³Þ¼û†âH–扦êʶW;torrentflux_2.4/html/themes/slate/images/noglass.gif0000755000004100000410000000105111017132666023033 0ustar www-datawww-dataGIF89aLÕeeeede¦§¦§¦¦€€´µ´edddee¦¦§€€ddeeed§¦§dedWVW€€¦§§ddd€§§§WWV§§¦µ´´´´µ€€VWW´µµ¦¦¦€€€´´´WWWŠŠŠmmm]]]”””www®®®žžžRRR!ù,Lÿ@”pH,ȤrÉl:ŸP(hJ­N)Žj–ºv»VÆ ¾†) tØ«¹ßð¸|N¯ÛïöCÀ  ‚ †z Œ  “ {†š z~   z  "³´µ¶·¸¹º»¼»%¿ÀÁÂÃÄÅÆÇÈÇËËÎ ÐÐËÐßÑÙÌÙ×ÏÎ ÝéÎÍçÕÍó !øùúûüýþÿ$A° Áƒ*\Ȱ!Ã#JœH±¢Å‹3bì  B˜ ’#'tèaåÊ)?²ì0@€€— pD9F˜ZžD™SÀ€ 5è0%¦LHJµªÕ«X³jݪõƒW¼~(àõ‚ذbÉŠõJVí³kǺû!ìܹléŽõ;torrentflux_2.4/html/themes/slate/images/home.gif0000755000004100000410000000077711017132666022333 0ustar www-datawww-dataGIF89a1 Õ»»»®®®ŠŠŠ”””nnníííãããÜÜÜ‘‘‘^^^JJJ}}}111ÇÇǼ¼¼éééÒÒÒ´´´ŒŒŒÛÛÛ‰‰‰999LLLEEE•••ªªª“““QQQddd222yyy<<<¬¬¬xxx’’’ÓÓÓ:::zzzOOOCCCâââ{{{DDD‹‹‹PPP444NNN333MMM!ù,1 ÿ@‡C+È$’¨lÂNHÕªZ©Öª ›ÍR¹Þë¶Ê0ÈT™YL=k»wlݦÏÝø|]Þ(åykzt€…{z)0*ˆl+“j “1+3+„lk†‹vz  331 3 + m+†vk/Œ«znƒ3ƒ¥+3Ð3Á”‰{ƪÚu1 á²´&1Ð1ÔÑÔ1 Ä†Üxƒä1– ÑÁÿ’VÄc“ÈX‡zöâ1”ˆ¡Ãd©þ¼˜81E Š/.f¤hq#ÆŠ5~¤èA H°@±’åJ0cÂDáÒåK™4YÖ”¢ ->\pA´(¢.%º©S¦H›&%Zaă ;torrentflux_2.4/html/themes/slate/images/history.gif0000755000004100000410000000102511017132666023067 0ustar www-datawww-dataGIF89a1 ÕÈÈÈ”””éééÒÒÒnnn®®®ŠŠŠãããíííoooÜÜÜŸŸŸÛÛÛ€€€___¼¼¼   èèècccªªª‰‰‰ŒŒŒÉÉÉ´´´888<<<­­­‘‘‘’’’QQQKKK;;;111FFFïïï‚‚‚^^^JJJxxxyyy~~~}}}000ÇÇÇ|||222•••“““»»»OOOzzzCCCâââ{{{PPPDDD‹‹‹444NNN333MMM!ù,1 ÿ@ÖkG,ÅrÉ<†F¢Mmš«Z«Ôi {ín»`,hÑ«ùÎhôã¤}¼w¦Ãßõ7oåÙ™ávv2ytvp6x€h†Œg8ei‡>6 >‰66$-< Ÿ› 6 gusp’9Šg> „‰ < >„¸ g nz3‘“wy–Å»¹ œ>s‰‰q2 h²eæiƒÔÛ„&6<‰Ä–¸Â>÷•>8*1~ôÜaÇ.Q$ø àÆ 8Ár £’g³já9k%@"6:Í Ž“(Sžœ‘r†K–8`¶Ä‘Ì›,?”€¡áŠ2@oÐJcèРG…*š4(R¥Ei¤pQ!C thÕ`«W®]¿Šë5¬Ö ;torrentflux_2.4/html/themes/slate/images/directory.gif0000755000004100000410000000106211017132666023373 0ustar www-datawww-dataGIF89a1 Õãããééézzz€€€®®®ŠŠŠ333”””^^^ŸŸŸÒÒÒnnn¼¼¼ÛÛÛÈÈÈ“““èèèooo___ÇÇÇ}}}ÜÜÜJJJ222íííïïï‘‘‘   ’’’ddd:::¯¯¯xxx<<<999ªªª000EEE‰‰‰ŒŒŒ´´´LLLqqqQQQ­­­CCCOOOâââ»»»PPP‹‹‹{{{DDDNNN444MMM!ù,1 ÿ@&G,Ȥrù9aD°Û-*­Z§VªöZ¥b­É¶Ò™Ï„‚î3·Ïï7€«ÇÏn8®ÒÉÁàg/3uxnm‡f3/…€xo4~…2•3:2˜3—: 23‹3:3jfc:‡—3ƒ™ 82 ¡»: Š ™ : j : ¸oŠ:‚˜:¹22݉/‚m™ ‹:Ôg1‘¸gǽÂáf8$Ø…ã…‚e2p8ƒ¶Ç Ùƒ0)s À‰Ó±¡…\•,LP]¬6˜! ¡ÐÄ1oåŠéHf®Ff,8ÔÆÞ­O?4b¥1t¨P¢1ŽEÊ4)S °JµÅ$.„°Áµ«^¿Š K–+X°fèPBÅ (j¨A×À\ºxåæÕ»·¯_»5R¸x;torrentflux_2.4/html/themes/slate/images/proglass.gif0000755000004100000410000001342511017132666023227 0ustar www-datawww-dataGIF89añæs†‘3nw—µ.:j—¥ÇQes‰’œ9dŠ.YTd¢¼°µ¯À¿Â”ލ\g”co¡ol‘–Ÿ£!ù,ñÿ€+Fu^j‡ˆˆ†Šdrrt””yc**cyffzzR’/--55..A±7³7dŒŒG¼½¾GŒŽjuF+5+`u‰Îd¶¶³kkR¡R*›žzÖccFç\>„dÎídd^u>èÆ+‚>í‹GS\V\Ò’6ËÔ‹ƒ­iÚÔé“6R¦P©bå –,Z¶pé¢ð«c0DÄŒ!SÆì¤hÓ*T»–M7ocÀ‰#g:/ìö½‹7Ï—z÷òí[äÅŸê>ÔQyà  5qòJÄS©Vµz‹­Z·réêøëã¡Ç’-kö å´•Øÿ´½üf&ܸ5åÎ!]7t§ÅŠu+2d€ó€ ‡/qÐYÀàD‡ 8Q àŠû÷mÚZ&,Q0}jžE"õ‚Ô13üñÇ urW)¨¸ÁpÆ]†Ùs^THu¾T¨K<ÆÄ'ß ^lôNi_5eÊ,m°€5À´ÁL™¶]v%õΈmÆ Ê†:ï0ÂÓ?2ÔèCEÄ‚ ÿ*ià€ªh ‚-(È ƒ¾"¡saUXÔ…Sd¢ y8ߘŒŒHÍW¦@€"6*²è"Œ*ȉÝMŽÛñhæuè9dvE¦ƒ¤’K6©Â“rbà”XYÙàƒv5a—‚)æ†eÆw¦ˆÐ¬IK›on³â -~C§xÚx£Róèè§§€ *„Öx(K¶ (£Qé‚“fÄ–`áâ%˜aö¢!™z "¨$²ybЧ¦ÓªöÌX¨«8ÆÚgÉyã ­îÚë¯6šÇ£kP))–•vÅ¥²™^øvôûT”ñÅ q€Æ ,@á°Z¼WÂ(ì`±ÿ>bˆnéjA¾6‰jƒ ¶ëä Yí±‡"tárL<8ÂÇ^†d>øÐu¥£N@×Á…mX|±·åP@EÈ˱®¸2à 3@°‹Ö`€¶ã,u„-v¿21 ’ÚIðoÑFïŸ2$•³u2ôK¶ÚA¸¢²*ª¨5É&/в**³ü2Ì2Ó|lW7+½¯uF ôÐl´ÎK7ýtÞQO]õÕYoíâp3|-öØp›m Ú`¨Gå·wηfg÷íp¾7ß~“l@àT§¼rË/Ç|ÆÌ53n¶ãRaŠ|g€,€ ]lQïÎ38ò‘ޤ ±í‘ (CPÇ:r ÿ ’á¿öxI’ `Tɸ/6Œ.# ÈxF4ª1†mt#Ùà(9Ò±ŽwÌc/ùèG@2’‘„4$"[©H:¨‘|¤$)IK,“›ì$>9M»Y³×/ÉO"ÓwÊè"¡yÐi*´šŤCµQñù+§’Ĥ83JNŽ6è‹úûh-Ý Oê2§Žä€ Np(€`ÿ¶J(4á KÁžà%*1¿üevJ“ÒÓ_ÛÁES)‚-Ò xÅ‚ Ș„¾ÊÒ~P‚`Y@XÂò}èÃ~ w¦QšüŒ,&³ðÄq°Á8Id! &­ ~yƾö¦…ALKƒ½Ò ] ^t°Øˆö¶&ød¢™Æ2Hõ 6°l2kƒÜ~Rüôìg9ðÛ3Êòe¸k^]›Z1V°J(¬a«XÆ:v•¬=[ÙËfv³ýìmIkFÓ&µ~]m_[Ëרºl¶µÅ­huËÛ!øv´Á.q¿ÛÏBò³¾eîh+FèJ¯Ôõ«ÿu;Xí6±‹m¬cÃ+ÞÉ–³šå,r•»^:–Ö´ðM‚jYK]û®–¶‹Õohù ÉÞþ6Àà .iìH3·¹f|®Ë¢›W½òUÂ0¸n… {áîjØ/ykÞ§´¢e¯Ü›âϷŲ…±meÌcGÚÀÂpwûH+ø Vílä×"YÉÙµ0w3üÝ(cÒ³ÿíÀ„‚Ì! aHA¸*„&„ÕvЀ2%F!98pm WÍš   ´ädLG2Ò@–óÅB bÐC4ˆ§…å¬{@ë`úÖ9¨Âv½óœÇ×¶Ç­`¼á ¸uÿpã†ö o`\íj °J(²`ÝÀm7ð€@8€µY€ÝìZ[a [˜ºPžt ¶µu7z`04ô°KÀ:`1ø[ &p7kÚÜ~0uVÝêWÇzÖµÆ5¦uÍk_ŸØý&ö°Ÿle3ÛÙÆŽö´©=nrk[ Ýö6¸Å}írƒ{< [·ºÛýnxÿ@Þ  ·«ïïòˆàòxÁpp%$œŒ g5¾NXYó Ö¶–8Å/Ðkyc\Ø/ö±“ée7[ë"§¶x®mò¼n»Ûß÷¸]~î˜ËœÝÀ¶9ÎunïV#Ìç¡úy„¾ƒcûè4HzÉþðÿ§G\껦ºÅ¯žu­w¼ë»´Å^òl›åh_ùÚ±ûrt¿îî¶ùÍÏ“ózóüîÍÎ{À÷Nð¾á gøÒ_ϧC]â¹N|ÕúŒÛ7g@š`ßøHxƆF/Á)Ht R0 X w¸Ã ‡ô°|Àÿ” £¨N0ä‘ëÖ|K †v|)ðlÀn Ð|Ž}Ó7ԇؗ}ç×`óGó—“6(ðˆþW$(i!°KÐ[ pà8˜ÿƒ8ØUc’6}Óg!Ðpép°c%is0Ø…À~î—ðgVôW÷Gùw|üþ€(€˜­—€B°€ h|ÂGÏ„è„xø!8‚%x‚(¨‚þׂ’ƒ2Hƒ6¨ƒ:ȃOàƒ „`D ƒƒI¸„ЄO(…SØ~ïGiXH[È…ú÷…a€X†˜nÌ—† Ø…І‡hhX‡w‚õ§‡`‚(h~È‚.ø‚18ƒ5xƒ†¸ƒC”ˆ?ÈˆŽ¸˜’¨„OÀ„t…RH…›(…ŸÈŠû×ÿGŠdh€g¨ÿn ¸Š¯è|±8‡˜}v¸jh‹"8$˜‹|˜‚+ˆÀ8ˆÃXŒÆØƒÉø~ËØŒÏH‰–˜Ô…Öh…œ(ž¸…Ü(Šß8†(ލÈJH€hú! ‹H`hs`‰8àŽ1°} SUVWµUÐkˆƒJ¸Š%‰ˆ9P‡†HÀ€_û§DŠÞ¨%€”ÿG€E([ÐPù|I”a€K XY>Dy“8ykQ …öבaÀ÷×€hjY•> iBƒOr9—téƒ[¹–H „[€„H(—v°‘\‰sð•w`k<É–@ù…CY”E)ÿ‘H©”iÀ”Í÷”Qù—y|Uy•Y)•S©^™“9–[H–f9–_¸–ˆæ“y i0(Vtùši`—€‰\Y•bE(—vÉ‘‚I˜†É…ˆ™A¹˜Œi”`˜”ȹ”NД”©•—i|™‰•긕]9˜_‰i¢y–˜Y–p–§‰šªé–­—°9—²É‘µ‰·™›±©³Ù›íø›=ù“©˜BYœÆé†’é”PéœTi•Ò©•y|Ÿ –bI¤Ù¦É¨É–«ù–®Yžºéž³™žë©úžÖ‰}òœÃyŸøi|Ž™œ‘¹œÍ×h•Y Ði ™Šae“^‰’°’N@ÿ‰hhµi›c¨›Ôy“9ÐQ`‹ðrYA)” ªù¹‚©DàÒæ|Ïg™™—M’Y i€˜ŸÉ1P˜ð‰$ê¹…ýG’‡–«)ƒp •[0§[à0s£D‘–©–ê¹—7ˆ„ª‘ˆfv…8‚HšJ:œM:–D)‘úÉŸSZ¥Žv¥,Z•v°¥)J|{ ¦Öy’ïH¦fºhÊ ö·¦%Ù¦o §3Hƒtj§Sê0zú¥˜úHˆ§ ˜„*¤Cj¤‰º¨ŠÙ¨ ú¨Þ©K9©ph©Ï‰©šÚ¥j|aª8ªÇ™¦÷‡ª%™h«§®:§°Š§³Šÿ—Žx«“«ƒŠ“…Ú«ˆ:—ÀÊ ¬Y¬&*¥Tš¬^º¬ZÊ¥v¯¼­«&ª£Iª%`­§ †lª­Æª­J§uj§àšˆZ«äŠ›±©«èÊ«‡J¿º¤ïú®Žú¤Æ™Èj¥R}Ð9vp•‡?˜ªèúŽP7Êžîy™ˆ¦ÞЧÈ}*¤Dj‹Çª¡+ø…Ÿ8¬A9˜@—Rš§é‚ئ0ƒ I©jȦ3*¦QX¤Ÿ(¯¦ª±¹˜ªV(VÿùŸ5(EˆƒëF“Ñ(‹ŠÆŒm‹£>¤…ú³ó´ŠêDK­_ˆ´,¨´L+«O›ŒÙj…T+m,ÿµ. ª0˵àµjzœ|{b;dû‚Op¶r*6Èl«nn»Šï‰t[‰ƒ‰}>[¤y+²BË·¥°G›´K;—M;§Èh¸R›¸V»ˆ©šµÛµe:¹+¨¤–{¤c[’e»¹œ›¶X¹¶(ºNP“p«¦+º©k·­ ´°»·ÀZ´$ú·¶;¸N»»ÀÛ»šú»Œ+¼«¶µÄûµ”‹¼öw¹™k¶Ïë¹ÒÛ¶Õû¶h…Ù‹ºÈȽCêºHû½C;»ÚY»{»r™»…›¾ˆ½U›ŠMÕÇ¦íø¾1‹W ì¡DО;8;¥Îx£Ö[}¬KkŒU Î1HTÿž‚\”få ð¸UÇØ²Á ÀB°0䇑j¼7)¦1³M÷txˆ$s‹ó‡S}ZÝC po÷¶U.ÙÑ—¬Uù¦n,é’% Ò<Òµ·ÍóÇ‹>­8‚QÐUÀu.¹UÏÜÉŸçÉåqqóFE ‚œ0e ƒÖ=$…2MÉ­œÂëÕ9m‹#x¤0üÓ ÔBíC-iÔZŒÔ§»0K}ÿUÔ—ªPÏRÍT=VÃYý[ÝÕ˜öÕPÖÍøyfhÖgÖkMf½’pÝr·4íÊ6×Ù¨Ó{ÝÓ~ ØBMÔL½Ì†½n‰ÝÔŒ½ÁŽ]x5Õ -Ù}×ZÍÕ^­U›ÍÉcMÖ sh]Ô£ÝÖ¦ Ø©íº«m×7×YÈÓ}ÝÕØ‚]ÔË<¹­Ô¶ÍÛOíÛ" ÜX ÜLÜW]ÙpÙÉ ÖÌÝÜŸ]Ú #ÚELÚWÝqm¨ª]×9¸Ý¯­×ôÈ×> Þ´=ÔƒÛZEo1—söÖ’åýÆ#WP0¥ôæÒo Àm€èaÚ^ÀØíÓ@ ºX]Eš‚fUÿ*¾kâ}oiã?“BÇ0öFØÎ"}rF…‰wDZkR(Ô@TÐä1pR>ågÖgáÊ-<~qV§0®vrmä3­â,îâ>ã¼8ã5~7Ô9^Ô;å+ùãå}ÉèØDnxF¾ÕäKNkM~z3ÆT^èm}å“å[¾x^Ž`n¨b¾ÐºVæ‘øâhnV*¸æmþ×oþÕ#ç>þ×u®Åw>ä—WäGÞç‰÷ç éäNè†>åVÞ—è`½è]^~Žæ)>é-^égÞ‡j>u›ÞéžÎãäÇC@¾Ì¥¾áX X¨Îç~¾Õ€…®>èbë²Îå´Žÿå·à¹þå¼>æ¾næ0.ìJDãÄÞæÆnؽ&t:WÔ9Àì˜ÕEV§Î0DmÞO°Ül Úµ»6¤Dã¹7Ÿ,ðUPð4}Õ °kÖ¶s®Om<÷éíVët^緳ΎWyÙ´ætÖ&ðàt²nÿäl-å }q…îk8çãONsït®÷èÿÐ ÏðßÍ¿òK·s ·åÝ®ì£Þñö^dÏÞtOòÖæ(Ÿv+ŸïQ^å/óî6óõFá6?z*Yõnðº†ðcüóFÞð1üðñö6ñôK§ô/êiïÞÚ&õ#/k%oõ(¯ò®¦rõÛðT.ó¤Gób/ódOpfâ<Ÿö> ßöA÷r¿tF/v÷®÷Î÷Oÿ÷ÂÝToòWoø,¿õmmÖ^ÿõnö¨÷õ‘Ÿóg_ùqù™n/ôqOôsŸoñI¿{ÛW~=4ï,,qðüñ;torrentflux_2.4/html/themes/rust/0000755000004100000410000000000011026130105017300 5ustar www-datawww-datatorrentflux_2.4/html/themes/rust/style.css0000755000004100000410000000737711017367654021220 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #724D33; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #724D33; FONT-WEIGHT: bold; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/rust/index.php0000755000004100000410000000051111017367654021145 0ustar www-datawww-datatorrentflux_2.4/html/themes/rust/images/0000755000004100000410000000000011026130105020545 5ustar www-datawww-datatorrentflux_2.4/html/themes/rust/images/messages_on.gif0000755000004100000410000000436611017132666023571 0ustar www-datawww-dataGIF89a1 æ3šŽ\§xq©©¥uj&s1.µµ¡Ù˺U‡IE¸··™™}äâÙÜËËëææ}{{uuRõõóc^^]]]¥£—‘f4˜ZHHêÞÛdzšIFFœg_dbb“‘ou:Ò¼» óñí–••¤lWvClÇÇÇθ·£Š‰FEE……eñíí‡Z$’][±‰†ýýüº¹œ––†É´¯µ›z‡G5ÚÙÙB)ÙÖÃ=44uuH§†`yGG…[Z¨™‰Ÿ‹r)%%º˜•zy›ŠŠ¤\~D}r3u#uum‰edÊ­©ˆ}G·¬‰¦——ˆˆˆ` –c`ddC´†v¥hQKµ°Œ~QØØÍÑÑŧ§ŠX8^øõõq˜Uµ‘™rD˜lAh–ŽjOEEdYi$!BA$d4ŸpjÚÚÑuN ÏÎÎ}L_3‰ww£œp¿©I3ߨÉùù÷B@°¤¢~WWÂŽ‚<%†Q#Œj@uuu!ÿ NETSCAPE2.0!ùd,1 ÿ€M‚~‡ˆ‰ˆ6h~ ‘†‡)” ~M„h‚[[¦§¨§Q¦’‘«ffiQ „º%4 %%%¦M‘©·Éɯ Ñ}}«GMO~OÃM}FF]]¸§}ëÏ®ÐôÏÔGGMÕ~Tj¢žÐx€â΄wôüáàÄI™)¢¢Ç$}¢`¢Âà =²ôQ!DÄ‚N""ébà…>4Ž”ÐBÁˆ“&”PA§˜3bxð Á‚€ 4Ä(B€’,²ÉáÃ͘ GÎøi àvza£dŒ²Ä€ãŠ2lÿÔ(ðAÀŠE cTˆè“c@=ï!±`î“¢àQ¢@§ÎöqÃGL v&à8ƒÉ/*Øæ¥A…ß$<ØÙ¢eÇ;tU̘†ððÑCÈ™ B„ °b…IÃ?g˜  £Úˆ9”ôFb$9 O ˜]b° %ø]xnÔÕR!HíÁ ‚ ¸ Ü#žVãçBþ'¼ ¢O B‚"ˆŒ‚×1ñC™ÉxOlñØ‘@^$‡ ‚¨ˆ#†øá;$ d´è¢‹ .áÇ´ÐÂSLàã@J ¤>Id : aä ’ð0P|!C !ù ,,ÿ€T}sN ?mkIEk.}eƒ t7}m9155(]L%#&F}]*& Xbb$ JX77E9{K}G~p%c3lU m57r?V@!,•XU }95}ûoDrž$P"A•eUÔ³2äÌ-úh(€À˜qÌUQÑ&G| ˆxh!&Ì0 ,aa‰AHd8ð¡À…°`рџ Ö`‘ÓGƒT98áÂÈ™8Ÿ”@€ D‰ %š\¸ðäϪH\øC¶,<°â¡H)}òĺt«hâ§o_Oü’ðKØUnp6ÀÁ·I¹>Ù!ùd,. ÿ€‚~„…†…6h~ Ž…)‘Œ~MMh‚[[¡¢£¢Q¡Ž¦ffiQ ˜µ%4%%¡Mޤ²ª Ê}}¦GMOj¼M}FF]]³¢}áÈ©ÉêÈÍGGMÎ~TjR!/ ù#&++R8 Á’,ôùÁ`—,®pY¡OŠWr ˆ¡AkRj”ÈãÀˆ‰+ItYàÀ@ˆ4Μ8ABYP¸ %DP’C˜ ŽððRA‰*ØT¹Qƒc®¼XA†E „!â†}rT|¢í= ßÀ>©'àD 7Lmƒ–Å;B@|QЧ‚3ÈÉzcAˆY*ÖÙãáË™C<0°CMÝRB“Aˆ-.¬ÌÄZp‰‚AŸu8æXrº‘¯Ÿ$PÂS‰JÈ»ðäÏOH8#…€„²0K<(q€à€POžA¾^ø[šñ¤‰C…|`À‚Eƒ€ 4XƒEN <æpà„ #gÈ~’`@ O%J\(!ï“?O<] áŒÊX ñP$ ‚ B=ybÁúzëohrÄ“B$ò„Àì8ÐwÉ*ëm±W^$‚ 2¨ƒ6¸à;$ dd¨¡† .ÑB SL1Á‰(¦(ÁŠ+žÈb‹-è0Ä‹4JÀÃP@ñ… ;torrentflux_2.4/html/themes/rust/images/admin.gif0000755000004100000410000000167411017132666022355 0ustar www-datawww-dataGIF89a1 泌ˆõõñòííui%¦vjØØÌu#õòíKlul)uumzHHµµžCc u9”VLa__&g]ýýý ØÕƒEEµµµ¦…_uuQuus‹NK_ f__uuIŠKFuf"NFF¡vvddD3ìããØÉ·HFFvEuL t0&µµ¡^Yu@µ™wQFFv)!6u5¥‘hV:vB϶¶’__u>9P[FFF\ŸpkØØØõõõRLùùöééãuuD¸¶¶ucµ­ˆûúúdY²™ZLSµ•vZ¥~_ùõõŸœváááuQ‡^&¸–“ddduo,ØÓ¿V¼žn««¦———˜e`h__AüúúýüúBA%ÍɰÀ˜ŽááÙéáÖéæÛAAAd4‰G8É´¯ŽŽŽ›Q›Ž\ÇÇÇÍÍͧ§‚__ééé___uuu!ù,1 ÿ€;;(77~ˆ‰~!Œ!ˆ(/j“(‰pˆŽj;7g1;AA1«¬­¬'«•´•°PPq']@ÀA r¥  «´®½mѵ•:Xk?}° ~Ë}..¾¬}õ ŒÎ$ÿtû¶`ƒ ßü )r#Ⱥ? „üçbÕGðô‰r%@0RyÂDšI@" q“A28ü!áÁƒp÷Ì 9$DZrÀŽøV8á…‹1FÇ\<£’)Ü<°Ð€ç€Ë€€– G!:$(—P&€€&\8(•æ }Œ@pÂ⊀#"†$ÐREF†x|(u Dʳ¨yPJ¨Z¹ðw‚ÿ–q*–…‘dJø!AD2<€ &ˆ8°9‰0`Æ"ˆXöÀȰ (ø¢ JÁ‰ùñ@ /¼0E 7 ãŒ2Þ`ãÜh#X# @éÃ0øðB/¬ À+~˜ÀAATVi¥XbIe–Zv@-„)f XÂG l°¡€;torrentflux_2.4/html/themes/rust/images/messages_off.gif0000755000004100000410000000173111017132666023720 0ustar www-datawww-dataGIF89a1 æ§§£ÙÈÇuDõõó‡\&‹‹u:å×Ö´†v˜YKÙØØÅÅÅØÕÂTØØÍõõõ„^^lB4FFF²ˆ„µ­ˆòíí¤ƒ[¦vj§§uuH’^^øõõØË¹zHHéåÚL¹¶¶µ•w‰G=ui%vuta__u#uumõîíg]f__um*c õñí ̵´ƒEE¶ZC«'‹NK§ywt(!ŠKFNFFddD¦~^3—j?HFF_ &$$F??üûúîäãuuR^q——{QFF6Ÿa:—rB9ŸpkíííþþþððìSMuf"Ѹ¶éà×ðððdYááÙùùøõô𹸡éééãããÍÍÍuN ¦m\¸–“µµŸÍ­£‡{@—o@d4‡P!ððëBB/dddùøöáàÑÂŽðîæ‡€Eµ±˜e`vv§§‘g__‡z?y??@uuu___!ù,1 ÿ€OO6@MM~ˆ‰~:Œ:ˆ7m:/”•”@‰E7ˆ/~/7OM{IO7 I¬­®­44>¬–•±[[j>n/6QÀ6 #¦7¬6•¯½HÑѵ/ $$Ù$|4%±(6C ~CË7|''JJ¾­|ó H,,HŒÎØWW×Üþ @AÃF7?V¤4i0A˜FB@$ógÁ”)E hpdÎð!Ƈ ¼‘ã…O hðàA% ¤Á‚qÀœXààL%KÀ˜©²cÄ,X\ a&Cœ°¹RÁ /h4d   ~rîƒ D:ÿÆT`  ¦.HIQ„À*YX¤Y…|4<àCÅ…ãk>PùÐ"a3r`‰ƒ‹¹b¨¡§À !Jlh@D‡/y,Ñ¢!Ã]Ö±CÄprxÀ°³æ:°C@6€°`á (.þÙÀa@.|t©©¡ô'Fp°¢Å#¤BF#‚  Zü™‘ „¬4òGd“F äqÄ QDÁÊ 3œÀPeRøCCÌÌ&м0D#4"¢Î@uàaƒ64CI~-PèÇ 1ðÀÃ11ÁŽ<î(Ä@NäxàAŽ=$™$6LöÀNð€eøA„ là„}téå—&„f—b޹Á¬ æšx„‰?ÔQ‡ 0;torrentflux_2.4/html/themes/rust/images/progressbar.gif0000755000004100000410000000150311017132666023605 0ustar www-datawww-dataGIF89adæÜ™é̕ϧtí¼ªÓ‘ŒÑŽŒöÚ¾î«輤ڙ•ò¾±÷àλƒaÖ’Õ˜‘Û«ŒÏŠŠé®«á¦ Ï†÷äÙàªËŒ~Å|öȶöϺ岡±s[ñƱö˸öÛÂÚ’”õŰީ™ËÈ‹yõֶ‚sÕ•Ô£‚⮜µ{[á¦É•tˇ鱦馢箥ݥ™Êuňw繢赦ðË­öѹ䪠خ鮦͕~订§hKÄrÝ¡•殢ᣚá⫡ߦžöÆ´Ù “쮧榢îʧŠoï¹°íµ®è«¥¸ykÝ—šÒ…öÕ½öν쵦ö²öθ詡⦤ख़⶗㪤̈́‡ß¡¡¹döҾߢ™öÛÄí²¬ÓšˆöÜÈ㮠䮥ïÁ±ì«¥ïÇ­óÄ·êÀ¢å¦¦ÝžŸÚ¡˜Ý œòº¬æ£ öá§â Ÿä¥žßª™ö×ÀД„௓취§eP챩òͲߺ‰Å€}öÔº·|`!ù,dÿ€ +Y[V ‡,#N3lKkx*c :' %p -SGg_.Z1^DT`¯oG Ol& *_8POGEE:O WR fccC&t"'q ?J[A~áM"Œl.UWMFUnd9+BG ¬¼@ÂG!7B4PU:€é   torrentflux_2.4/html/themes/rust/images/bar.gif0000755000004100000410000003122411017132666022023 0ustar www-datawww-dataGIF89a æÿÿòø²xÿÿëÿýÅÿùÁæ¢lñ¬t¤iBÿÊ•í¬z«‰mÿè±þ½ŠÿÿÑÿå­ÿõÃÿÿúÿÿÕÿíµÿÅ’ÿÑœí©qÌŒ[Ú™eµ’týº…ê¦p®rHƒ\=¾€Sä£sƒU±uKŽfEñ¯~ÿÿÙõ³ÿ͘ÿÕ ÿí¸ÿÿáÿÿÝÿê´ÿâªÿÿæÿå±ÿݨݛh½šzrN3ÿÀŽÿÿÈÿúÄÿò¼Ë¦‚¨mEÿÿÎÿÜ¥ÿñº¸”vÕ”bµxMÿô¼ÿð¸{U8ÿÿËÿö¿ÿà¨áži e?Á|Y;ÿÙ¥º}PÿÿÌÿá­ÿÙ¢¡f@šԕfÒ‘`õ°w²rvP5ÿùÉø¶„¸zOÿô¿®ŒpÐ_ÿï»Ø–dxS6©‡lÿà«ÿüÍ´’k¹–wý¸~ÿûǺ˜sȉYÔ“aÿõ½Ï`Ò“dÿûÊè§vņW°gÿûËÓ”eÿ÷Ǫ†`Õ–gÏ^ÿýÎÏȵؙi®ŠdYK7é©x¨€ZÍŽ^ÿõ»†_?ÿï·ÿÿÿ!ù, ÿ€uu]M)#b E M] Q X–•MRR7›7D7E :«¬­­E®*(E[E±±«¼{¾,, ;ÆÇÆ MË=Í=aÐÐ48 lË ­;­7^^[Ë–^7— 88p7 ð óôó¼ïMŽ7ûÞ8¯ %KQn ÄRž˜ "òHôÐèQ½‹‘ºT’‚! # A:éÄÉ“#ÃHöŠ”ƒ]xé±LC‚oêû †ƒXx@ÙS¦ ²2eŒ= s,šÓ0=djÂÙ±ÀÑ%KÖ¦¯R¤F‰R(Ã&7ðmh¨BÅkÿy‰™‹±ž˜h*ôWÉ,§]WycetY‘ PT,XÌx†q>iÚ¤À-Vtñ¢‘^»BBãøp`Þ  døÀ&C1ôšˆÙùÇ‘ÔLRyõ)Ó00˜Â8£¸ñ$VhôH’äxq…I4/nÅJÁ¯Ñáë ÀõflWX¾}ùÒ¬û÷€›žã*£EÙ€èÅþ óGqI€ÔAHnÀB #´€‚Þ Ø ‚¤]uÌI¥]4»u¨ÌãY…*¬HÑD[(ªÐ“A‚ËT ÐX (ð@<õ¨nØ'YåRzÅ…A„ƒt‘ÿ ˆdÐ#ŽIt&pÂÉ'DAå¦D°‰¬lÀ/®Ì0Ã+HÄA  ç®l ÀwÎ1L1V%‚3Î<5;BàÀÆEà–*å­R„K,áÅâHåEYðhG;È#O]öàCÛkÝ€V)ìdjNVôÇ@˜6Á $EË¢ëgŃÅ&Aó‘I"dƱNˆq²#·’&t°‰%;-·Ì7ùªÀ £þºÉ(PÌTˆ;È™  =ìÕRÎÀã&Í1M”à€Vd¦—°‰@–{7D>|Á³˜°Àð²ð1IÙ…ÿÅó“—^ ›5^]mÐÄnX¢Wlp… ZhÁØ+ ¸@ 4·I h YFót°ŒEb Ä °q[§eÀÂj­uÁ0=s©Ze•¡%qSѨ«np墠]qô€ 7ÀsÏ1×qÔ!×À†0XÑA†R˜Y € ˜7"gQ„Ed ß{e Ž…—SÍ—%a=ô @Dõ_€ÑwàÁB ´°Á n„Ä ¨pƒè!} ƒw*tÐ_7³Û2(ï1ŸÈŒèÊD|‚"*œ0U^ƒÀQt‡TŸÎ“üº n@…z¯FDˆ`CüÑÂÿ#d¤,¤È‰BñQv€©•qù‡—/¼pÁ[œ)±™ú«bfmá.8ƒ ÄÉ€€+Š0Œf #Û®á `ÂA¡f€¨2œ@W0½à€HI*[È §€´à58Á (F1PÅä`ûÀL•D Uùà‡BP¶„䀬ÒÑGÀ*hA\0Å$ˆ €Í<@Vë#(qF5`p–¬ i1¤ =øÃrу¬ˆ[´ñÖ ‹…& eƒœFà°5C]Í€ÊÔ¤&Ѐ ½ÉÚP¬¸à‰õ늩bTxÒÿL0ò†…(”2¨LåÏü!±aH 5„ÅÅ`A¥?ÜEˆzYU¤”x$ÌM ™D°_ˆ   ‡·´× à€ä'Á£>Xà¸?€ 0ØAÿê·0$jßu‘íÇÚàâÃE€ ¼~¶›w} wJ$4š5)a1˜UØÈg4ÆYÙB˜À„Þ&,r¿\0"OuKd€J& LÈJ°†-L ›³rLxá4+§`£X.ùr›L†2[€‚> °…-Ìa`j*-‘áà ì®Ð˜@³Ë­Ù \à… ×+@º)†/à@ gPÑŠö.w¡†@ØÐuÎt•¨ÿp ø‰&ÐJ†1ÈêXa¤w€¬eMƒ3L‡9gȵÀVG*aè€Hè€<ãÊÐ[îÿs—-æ)®°Ð€ö…OŸè×'LÚnÕON> …$.c¦ ÀFÅé4Çu7èÀ „j„~@b#ÁþxQ?lÀßG…Ðq”úhA™ZxõÈ ³d€2`À jà§9í¦4Ž " HZ5 Àiðƒt)e0îqžÿ’PR+G8VP€H-àÀvÇÞ…à˜ @ä'ÿè°¼7HÐ| èC¯" @0Èû0¥9&üL È}<  À&ÈÂF6QT ¬`ƒü`›Ä öCa€?X ð00À¨ß¹“$áÝ `ïa(.ÄE( ß„™š]J€f ƒÈšð  ¼ù®¢<@$¤p°c¡d{Ñ#€LàIEfd2 JF'0UQÀP( 2X&LÀY'0Þ»E°y ð d, fðÃK#w@ý²0ÿǤ>%C2°»µgQ:ááCH8 ‡hØ„hCsTÐwðáTAï²…¨qv fS£òð£Fç1" vؼÄiLÒ°6pˆ³&zÍp6Íp>à¡q:@•ÌÑ50l5/»)M@BEà˜å2' 1tÒf€€AÀcÚFR«Ômú >öq=úÐaÀÕ—iPœ>£¨>ˆÀS Á ²?_&yö·o> uFµ?7ÐÖ!ˆƒØT{v…XPl`„÷p20È82·óf5`<€S'7Q÷q¾r#§ÿ·# @Tpp)"€À;dqYps@sc×DDN€sÐc0 á4 @G Ž4 `7 'Ô@£²gU:‘'ID‘ðAc‡puà‰" ‰à8À‡»å5@'mÆ¢—vD^wRc‡ð.ÍpYÈ$¢'kBru}G`u\É¥\ÄvB^P”ØÔ5`)ç¥&•# J ‰qR@ê“çq²¶[¨¤+ø.`&P€Sõzù€ ”%@ Œ&Z *°¼·—»`=R0r„L02P+ g0¹¶ÿ˜°7ÕG‘äÇàS†¢Æ qDÀ-K'jÕ—£ ˜6*P1‰'ö§8c„'(¸[EÙ‘UHˆ„LÀ&À›#À`L0U 82`œ8f9k9U³2€…r2 ©&j·{84 &s·‚P[gW}zQRú@%Žs'(`;(@šá9÷TQÊ€ ð©*m3É¥„Jh„KØ„‰¶ø U”è5ìð.Ãpiw’D£v*˜9jZ‘$ ÝñIà0€°s(0;Iu>p:°‡)jP5p6Ö±u à2ܱa0ÿ;‘" ÊõLÈ[ ? €dóÇH š…áy'”q-;‘‰(`v8Pw2 wb}F#Œ¯&'Ž•š2É 8 13°B@j²o¡pû&Œ’¥£UàP§tú›f§UÀ}*qÈè!{P`m6u DÐYœÕw}r  ‘ZŽèØÿ÷*pr(sÀspn@n0ª_0vh ¡'áôÓÀ} YC't¹[¡Qx‡Œ‰ŒZg¡ðAì 8À~0u[×0m¡A*tBð{4Ð/ˆ@‘h} “ `(l0çÿw”JÔ0>à“ Y5 3ƒW”KPBŠ—”MHB@ЭÝi@8Ðbjâr‚ˆ;´ö4ð àeiS¦–Íé€%À~—ÆÉÑ"°~¶ ²$«{"@/ àI^PPI&Pzj¢Ž#¦ €¥÷T}°Ú³ŸÉt˜‰Y˜ ¨™o²¼4 ªø'9P ›Âi–•䀈±Í)à qÇiœ^Û€\;i‰Æ9+Ò™– H)°r"*Dgú¯ ð•DŸ ›or’BDSxR}R±¬Pý&—'yFQQË@>0ÿ =Ù@û 3þéŸÉElÈ…"?P ®:0?0w`¢4K³$(°Š={º<ÁäWROpù–Dp¯fÁ ;9esp® Т¡w5€~¨B°Êt+ÐØäM)h–ë¸ø—Q* BÀªáÔ4€¤tLs7»ÃC™8±À f`¥g‡'wÂð:¥yv¶5· 9J Z€€j3€L0eû¶ pIPU@¡9V¼Œàe`„$p§7ìÚZ5°fé'›Uˆ¬Ç®§'ðx÷ t ĉc·­ÜºyL‚Ôìp^9l0PÅê‘~L%È¥”9šx•ë~‘:P]zX®VÉäÝú¯šh•Ý)4Bà[w{Àcëµ' T2Á¬,~*²@k ¹W˺ç`–/›$`¨Á\I1£#pywA€ÖÉ`䇺ÎüÌúà‰ž)À–7·GûƒrL7x(ÿœ<6µ•TÈ);†±½ q7œÄYd ðµ Øµbëµ&0Ïó<jë(`.¨~`¼™tj*gá ¥êcSО¾p'@‰€ oƒ›o¨402ŠKE”:ª„ØÒ W”ˆ†ÿ,5¹ëÚ4 yðišr¢³°×ÌÐÍj¨ºÁÀj€±Û/ˆJÿêbºkP ¢½›¢z @œ«qîJxEI3+–û¸=ºËJMÐÔåJu«©„JTSƒ8J(D¸í{Ð÷t'¤QêS¥ :wø›‘ °¿J0 ^@ƒB(3pÀ´r§UÐ! ÜÿUl+yÁ×TŒ,$@7WMÀ®XÂÉY‹ÑÍŒº5 kŽ ðޤ PÃ(§9üDsÇ8@ÄD Âd#W«ÊÉ40(@É-t´êH’&«=GźzÆÀ®)=v:оխ]Ì Ù‹¡qŽÊ¬`@žLiÝ@®]¦0ví=vv§&i@ºu‚(8DÈP:X÷½¢MlØdBJIl> -‘ø-kj’Ĥ›¨‰ÿ*À.V@3`PŸÜÈyéf‰–Çq\»–~Jþű1¶¼·bË#›À˾lÙ]Kÿ$HÈ®-][  jÓ7ýÌi7Íž™úJùfL:°…\º¹c;ÎhI¶ˆ±ê|Ê!îÎïÜÎñ\diYd(å€+üœ¨,j¼<—¤´…·ê£>XÚ/Ø–R çG®ãG.yLbŸl¼0f”Ê¥”+ Ò‚NBÏdÆ(©¹ Þ½¶$úÀÐ5íã?ä5 Ñ<]¥GޭͱÅGÚb ñɧ-g,ª‡Õ¥½8P¬=Õ‚¦”¥s½„—u¹v‚ç]Þ¶J(P¶•A¶-ž Vw¬VÇíùÖ 4*â¹¶ œÕ`þû×8°€Öðת Ì–-;o·ØŒ}Ùyÿ"Á$PÙU`–]î'¶à50ÏcKŒ€…¬g vÔ0(§JðK¬jPt`ÃY±2*àp g—ŒŽFŸ_@DPŸY‘d@` ªcKL «ß‹@ÐíHB3ݧM 5€’?pêÚ'ÏÝW¬œȹ6Þ ¼ŽìÜnZî]ÐÜZ^@„@ óþC3PÍêºß¶ȃwÈ>àÎ2Y®3ààbJÉ¢µ‰¢e•H*iA*ÅÚYñºH°áhYÎ"qLâ¶âØ+^˶²$ ÷yðíþåÊSÅáeN^LP®8Õyƒ?>ø=žD¾ ÿçý¯qdùöJÎYØ”›HøäãÜå`Kå´"±Y[œ\^öÆIÎcÛîi ±Pú& üÜÏgìBs´-žoî… í8Á@ûŽdôËÆÄJ@‡=÷Šaè–+èƒ&èƒ JÞò·¢âô݀ߞ †ª+é@nû´/ê“€Ó‡ P`’Ä.VÝëZò  ‡%_òÕ}«}÷ê„ àJ™‚¾YpÕ u`·¢§¦BAAJ88 8# (#Š……Š(,”,˜–—””,œ= ¢AZ ZƒB'*-- 2 2U C* Ã99" kkyy ÿU$UѼ""$ $ØU25%àß~? : ? JppJJc‚8j __ôTTà¤r¨Á"D8¾$üâæK7#<@c¡M0Nà›1&x3‚…‚A‚h¨œÁRÈ•/]¾¬Aólj5Nü°)ᇄž~‚ ¡)䌎ü ÕáC fà dè$GD„2È w>:™"ˆÖ©Xð3­ƒ·VÈK—n[ *Tø©áƒFX–,ƒ:ThPT–*‡îõƒ× HLHFP˜3G{†,çÏ òxX–™²ÓÌJSÓ†Ù2&^\ä(ñí«ÿ ˜èþû·ïßÀƒ ΂q’³HÁ"°‡àÍ»v…ƒÖgs›@Ûµå ¹09ó¶íܽ#ØN™¶¸ö%L0ab"2ÈL¨ø!d¨!3‘ˆ$)p‚‚%,(Ç‚n 6Ø  Bȇ°DKG-׆qÍ5„19Ô%— ÖéÇXO5Uƒ¼cÕ”$@‚Æ pq8ç ƒ6c #pŠ4 ˜W-EÓŠ>œÁ—| ¡ƒSCý[刨å\ d±Ž†X%FùàC< Abˆ$U vJ88'n¼%—œ¸1‚[ @6 H ,€„H áÂZñ,ÿ±D 90Ñ‚ —1Q/ löL"¬¦9DCM3žQC3–~†M.ºL`°J Ðt¥~RdσŒ¡kj¸ñ€@-â†[aü0ôËFEÜadðÕQñT(¸Cƒ›Hªôýõ’îÐD“Büp”NGíôC  !%_džñC<å0ƒ!RÕšŠY±Ätù +¦ÅÖ*ü¤!‡®0„–kM§B“gÆãN` «UXñÀÄ9~8[²Ei ܘ‡Ùf£‚&jhÊxÐÌÏÊ|&jª¢—1‰B $ ºA€ãÓPG­£ÊÿàXé·VÅY® ie•©·^Íà™zèQVvª2à6m&€ß|^ 1[5ô·¢¿4D€ „fBõŽ„`'Ÿ[ÙƒÃWh­ebcuÙ=ÄcZÂ¥—û°ÓÞk;B`\oˆõpê¨àŸ7R¬VÆöU€L­¨$”O6e.;í'A ?Àµ¥–-¨uW[58Iïì§ÕP©Ò•›sf"¸”Äé·%‹0“ &¸~ E}.„ƒ‹6•VcGgÄ5 b3˜zVšhùçO‚.  ªÄA¬ Vgè ^jÀ’Åy.‚x€L<à °;„Á A…$ÿä! q@ zˆÃEœ°+ŽŒaŽ;ޝx¥|P‰¿Z„C±ôç,:  j2/$K2S¿x8˜ƒE$X¯ƒâAÔ$ˆ¯œ Mþ‚aľô‹ /rÛ˜ÆäÒ±¼Q‰" I> ° I¢–à€%<¦ŽŠò«Ð“™Jq¦3¢jÖ ªe(ƒ$A4¸ÃªVÉ`bLèÉ "€@áà@»9&7Yà  ’˜àŠ+øUƒéüDs:xËlÄA›°‰Í26ãÆª¶6î€'€ªŠ‚.¿æ ÜÇPy‘À TàÞ …_iŸ,Áœ ÎN *]áìD B ÿ‡ðTðœØ‘ß"—]‡- Š»&8ÏÁèo r'sÞì¨t¡›‘(¤« Bvüòƒt ñ gà—Þ(± ¯.o¡Ø³ áŒ!kÑì¤Q.® ]c 8¿{(Pfø”‚ªK *xL¡d–¾ïL %À 6ìg‡TÃkŸüv–Ò€JgŠ •3ÈÔTY¦.pÀ˜Žr”±Ô€º ¡¢I,¢‰¯{àW †Â! ‘ƒŒpB‹´!#ªŒÂB]áN ÌGèê°¸€‡tYŸT¯$ú 9BPüÀ” ¥?‚Aÿ„ ‚•°z5Š…Ñ€fg÷Fïa+A‰2F»iLŒå<`ÅhÒØþÐ $J¨¢ì6ð ¸m’– ;¾å1ùÆzlÆ‹?"’A;Í2®a¿Ð R”¡yÚ¶ŽЀOºÑ„ p£y§¼¹À5izRâÓ!Öza-_:ÊZr ™p€MlÝ©ååöÔÊ­l­ºÀ¢pùÄ ’¦ÐÔ`¼žZDeF(9 {¦ŒÀ'¬îN@Šb6Wä“¶ÁJ×9SÑ`þä+RI;1‚4$!†3w}#€"@áæ݃˜)b#äÈ #€QÿKÑsÑLM*J:e¯ã‹[ÂÅ*fFš 4£Ð±â¿ƒ’ös¥)(Va"AIq%˜@Á `1‹r™ê¾Ð¥Å¼% +Ï –dVÄéClb!è€9¤á„dˆÃ4;€ÌVvÓ+DóD¶’Ѐ.!Xh€»!CDhS;Ð)9å0BÈœs,?)«ZøAŠ hV#׳¥ä“/‰ö:*‹eÄ)¹-á͸Ž̰H@:óbüÛâv ¹»˜Œ!ÿ7?ö‘Ÿñ¦ITFM :ê5ˆ&7U}c^5B `€T€9ˆrPœ çxÁ p¤›œw9|ª"†ÈH†fwüÒèk‚Vº¿ªÜÌJ×üw€ÞÀ†Ž`& “^V W1÷<‘)èµ­m%ÏxépL€Ï7HB¬`ô°ƒBT9щ^´rIsfAyˆFS3@é °€ @èJ‰hðpÀ`Á¬² HiÆ@Ü‘j , /@dp*ôVšU²…k±wC–Ga‡1À'E±$<< Pf&geh2*ð€Ap<EaEcŽ vM`€0lä°#³;`/_b¥nY€ctZ+@¥së r! €.`aº8@°Q…[°2è KP(­T)k“q¤RÛgT§qs@Hs04"° ëáÿ*pGóâîgy£P6B^&GOr/ðcÃQ:‡° €SI5@!–çLPÐ 0"L 7×H¯t”ñŽ”qC²TKß Q°=W_¬b ûá$CDÖ‘CX”¥u¶(!2b,Å'/ v7pbWv ²ýT'ÆûspDóñLp¶UØ(Æ „ñµ"Wpf‚20W’IðP:òÄØG£ó†³E x+ç<!ˆ£foFºæ •/Å š×XgPTV. µ%Pë0zPzYvN¨÷%~p0ÐÈy1¤o†ÿYRQó@TÑ@†à1~QÚRÅã‹2 ±†%É×4òóÒ'h `}†æˆ&TòƒyPÒW©±„I¹ •!„Hp`â~‚[ ufp|’Yð9,å€{a…”v‡ð,8-qjÂS[5´Fj0zeMM ;e7€`&|ñý‘Q40W9o5ð@ެ°GP™ Ðe0E…ƒ^`E*—ÉHq%8H@®a7*WD " ©¡·ꀄJ|¶ !@|“TH~ ÿp" `›D³ °z Ѐ áp·g(„äÆ Æ7V.k0kÀ' Âe°‡ ‡˰IO `7ðG{ r(@dêØ€9TI¿‘°'Uð‘È2 ÆÀT_aSªrœØ®‚*×6>GKGfíx@_ÆG<€BD/+è=  9™¸µu¿hšÅšDà‹À(0Œ•ä¸Ðˆ:GÔ(ùáL ‚[§7N¬›s-’Eîð1ŽðoðƱžb·À‘Àÿ›°¬ÙŽEH|b^7 ”€GR>pô0Q:p|V€;¡$gARÖ Õ£÷¨Ê y`/p_2)‘àÙ/à. ./0£WH2[ßVRQ±EºBC¤  Â7 Yè,I1 “1y`5)?DÐSÓ‡ E5k rð“ñC†k`7`¥á–R)º`3ëÁ¦Éd÷H ˜p< |¢YY Yhð®(ˆ×–f+E!ýPmÅ{Dz8pßV * y€6—6äkvY ‘\ÀÿÚ—3Зh’P¶U.J$À5*A 6ÖÑZ;’Psp¦•y Y@8lÀMp³š¡ e?±P°ꆚÞA/p±{&šÅ@/<¤„½ ë¼ê›1Ò(•R)@4ÛÁ|VV†Ì€[?[à3ÐIgHqÕ0œø*Þä¤÷mËÄqsP|Æq‡›¸ÁaÀ±på(Ø@ð² °{pD,Hr¨«=ð=Ð0º 0º£‹™ šµ‚ªès–±AW*—ã` € *÷ ÿ¢%°tV†X9ðµP¢H Nr)j=½=Ðí8™“yR b81Mp±\P¹pGP*w•!¶•)vÀEg€¤D0D !@*ØQº!Ø¡5{DáNÁ~°½7†hð|¶½7¿!z7 z)çc\¹xn7æ…W`£Ë2—ÍäâGq||Ö:€Q`º$%Ð2üð0zl rÁ‚åDNðïyË©žz±\¯eª‹™ª,Q(XP„ @Å`ö@«%´2P<.¿Ê|Àš7Fÿ“}p?Ç}Öê¬Ö‡hϦ–ÌЬÔk­© Hi32@2p{M0H ®Cà¡âµ^¹•Yð®ïÊqò–†{Ÿs,Ñ÷|¶)«Yq  ÀgÔû¤ œ 8S¡rK‘udÈÙ*—±†Ì`äBZ÷‹ö<ð‹.pЋ¾è@¾íÈGä9,ë²/{b§-€šå7‹³<ËÞ|™&°y?!eÐYpD@ç fP7PÈI±¶|±Rë€0o`¸‚*`PUú«^ûµ‘Ñ6 Ð0\ÛpÀÛi+áüÿµÒñÙe0¥ À•áKLµ|¦YÆq<0R(…äEr¡¸½áɸ•“‰#’KÓŸPðf°xûmÞ<Ô=‘7Œ º«ËÐÔÜ7G–ÑUЖñA½»2 r*¿ø‹ÛËqfmg’ñµZ'šÀÃÚÑ+vE“i׬À ˜°=¤×ß{¿âÛŽYà~fÀ•E`MPÕnçvPÝŽ•)Ø÷k±¤'¥9¨{À 0!.[s =]ú¥Ð؇[M°§ìp†,v† ÐY`Îç|ÚG`'QàÁC ÿÂâ#X 3ÐsL(<¬-¬K-Ì|5`MAf]Ž:ðÍe ZøÓ­I/ ÙËS ‘/ LëW~õW‚¨r353EO<ÐÄ€…‚Åÿ²ÅäâÅ €[ P(|VÆjÜà4ÙÆ ´ ½V€[Ï*ÇÃj“@érP@pE}Ì5ÐÈ2à„ü݆¬´½{©Ê¹MP¯Ю† ‰Àqº”4yOÄÿ§ÝS€x ušS ýÐMðÐÛÛ û–°*ˆá‘SP±©´Dp¿ØÀv7àÌU®uVî‹4¿cý‹GPD`¾|ÿEð™9}™šåšlàÍMà³ß l@ADšUE°­™À•Gp“m±àÞ጑<`€5Ê­¸ÕÐR“œŽ[º´« Åù ÓÛèáÐVÔÝÊ,…úÌñc}ƒ»Ñ¢2mcóa ðã ä°oŠ[P£@^Ì6Üv@ÃŽ/êåè–ÓGàÓu^çPeðÁÞLºânÔУ‘K  0Í79z¿V}`È\ݽb л°½ûnäÛ»'PE€gû}äb·àʶMÀ|t-§PÿÛ ÐX!E^Öðä[á¿È EŸíìñ>Ðb‡í8}Dðñ>v@ؒݦ–=˜‹¹72†Ü Ž^Êg¥}¦¾¸Ú½a›Úä†láØ^™HÚÛwfÚÒ€¶‰Û›¦‹¶ZogÑIp‘PÃ`Ã7+³¢µ¬‰£rqD@œè‹.‘ÿèäMÞ»xKÛ»D€P(}Ï÷î YP@¾äË H€7yÑ»à>“€[4I¬NàÎ /`¥;º .|–¶|&É&”{¿F‰)Õ`ËM€,ðݰ¯r®`Èö:)èâ@àÿâ0ã÷ûŽ àù@­¸ÅÆ*¨)Ô›Û;¸åï(.`*8Ö-P7PÀèÚåY§âæ[åÎ,Ù[@(.vD@翈^áHäö*é-vë>Í ð¹ÀvÞÛ½  ll&%%CDYYYGG@7\\\SŸS1Ÿ17¥7QQ7fMMQ* E¢ûØô©d’›^¼ Âe;$à‰‡ç-‹©RHL˜ø Dȉ*dXÙ ‰ ×›¬€ÛÿÏŸ?‡ù Òƒù”t1†K\@”aÁ{ÌQR+ba^e؉MÚa—ÇTP’ˆØ1H_#´¦ÉØÁKND,£ÄMA8¨ ÂÜÐÄy¥4(]pÌ .‘ƒ67ðÐd“kaÒÜwÉáÅ[´Â ”D˜ñ_êPÄ BY‚Ãì¶1ƒ"'<4BÄCìqO-Íqqvš9ÊV­”¢ÔPŠ51-H5 [üRPÒ(C#ULãèÓ|Ð0¬ÄãøŽEkä‘„±¬eJÀO7ÔS£êcöˆÃA)jÌŸMüÑÄLÿð@Äm¡e‘g Œ$R „ÝI)m´’ƒhqɆMTñØ„nCA¥ ŒzìUT3‰Á{LÁU1lp D`3]Áå­³/5¦EHa6ÓW 6Ág[ðpW^+̱G_ÅàaoðD,ô¶¢n)y2“%± q`€›}œÆTI0Î|V €NìÇT~6s Dÿ@ÐnjÔ %¬àt˜¡Ü/8ÀXN1›mÔuÝÄiÈEØâ§8À“ö˜Ð’Wè_á×ß ôajþõ€ÒAyôG­I{‘%aa &¸ÉÉ&\da@ÿPTÀƒØ_СÀ“ÓÀ±@Túl²øLËÐ@ ¶²Á²Ö›ncà€Ã/Tðãy[ Z‘55áÂ Š“Dñ@(Ê•kmAõ QÄ=Px©:TäÒX gÒ‚ÀAá[›%ƒg‘™¡u[T0(@ýnLºjUF”Ä^U¨Âƒ!ÈX9S¦Í›¤è‘!CÏÉž2]ÆQ¢ÄK :œ8¹°£Ô«R…QÃID¥d"M†h™*‘‚¦­P—Rÿ˜0p³-¨B Jp€‰”¸qÈ®ðRÖ‹€ÃhÐxbÄÈ+O˜°B¹rãÃ^öX1qMœ8@€¬ À°/^t´ræœ#<’<g“ÁFàè6âúHc@£‡†€;’C ãB˜a (PÁAuë.hDQ2€4 (ÂsЦ! .®_‡à"ý ëáÜqÆ€õ¡·‡£»%EDEE(ð‚p 58ðx€B(8`†ÉEQ„ b…Ü‘„KÌ0C8 @LPà K,±€/Ôhã QÔHFŒ/áÁ‡4˜a†‰&f‘… f4Qÿ 0(È0)% M4±Æ<ÐÄ–¾Àd•UÂÐÀ”¹Æ À@À™&:P ÄY ÌÀC>8 …kqBM``Æ „žÀ¨¡"à†YL0AKÀƒ ˜šp…œº1Á 7üpEŒŠ xpÅ‘o¼qÅ¢@‡© ¼ñEbúÆ &€1¯k|1}Y¸YÀn|ád,Ѓ©\À†0DØF`Ÿµ°ÁÆöE ÂC€ñE n$@-ôP­} $àè⪠‚¶Û¡ï¸ä‚믾üÀºl”±ÀHÐÉG /LÄD,ðC¹ §‘|h±÷ÀGlØ‘G d$p±Æ=ä‘G- ¡ÁÌ4ϼr5û‡?ü°@ÍPAEDw`4 e¤À†F7í´Ó)ðt €ðÀÕST‘Z4ൠpQd—m6^—ÝAUT‘€c›]  PGÙ @Bf÷M@eËYAÝÐ $žu\ÔÍH¤B„W^w 1—#QÅS`˜_+ uÔ;torrentflux_2.4/html/themes/rust/images/home.gif0000755000004100000410000000170111017132666022204 0ustar www-datawww-dataGIF89a1 æ¦vjKu#ul)luumzHHCui&uuJb u9uuQ”VLa__µ®‰&g] ©zvƒEEuuF‹NKuf"õõòuE_f__uAuusŠKFNFF$$$¦££ddDõõðõòí3HFFuL tå×Ö^YQFF¸¶¶6žvvýýýzvvu5¥‘hÍÍÁ:VvBµµ¢’__u>9RP[FFF\õõõŸpkóíííííucRLuh#ØØØÔ»¶dYÍÍÍ̶¶™ZL¥„_¥~_›Ž\‚__ýüúB)««¦€??ááÙ——zðð𵵟ùùö˜e`uo,d4Vǧ£îäãµ›yØØÎuQA‰G8BBBh__ddd‡‡hððéõôïØÊ¸´‹—ŒY›Q—qB]\\Í;ûúúBA%üúúøõõÉ´¯ðêãn___uuu!ù,1 ÿ€77'00}ˆ‰}ŒˆUv”•”'‰hˆ}v70f,7??,­®¯®$­–•²LL_$j=Á?g§­•#s® ÕÕ¶>< ~² }Ì~**¿/~~ú  Œž!X€`pâ 8PA\$D`üp÷‡?óT´zaÄÈ? Ä”È ‡-u^¹cc\øI ΂… ÷@Ž­1ÏÁ£~7 {ôh%;wÆDôñw´°(Šx²A#4â -D˜C B˜QA}\XÉ tØ@€`PqP€B(¦ˆ" ,¶D‹,a€&†`£.ä‚ HÂo¼Ñ‡ì°C 5ð¡ä’L:ओJ> åP@ÁÁ•XràdSDÑEoä;torrentflux_2.4/html/themes/rust/images/history.gif0000755000004100000410000000171111017132666022756 0ustar www-datawww-dataGIF89a1 æ˜YKTlB4ÌËËFFFZ¦vjKui%ØØØe__u#ul)uumµšxzHHb Aýýýu9b__&g]âââùöõuusuuJsƒEE uuR¦…^ˆG8õõõŸpkSMðîæØÕÂdYucuuDµ¯‹›Ž\ãÛÓµµ¡‡‡‡}vv´…v²ØÓ¿uQl??˜e`˵³vv¸–“ÝÊÇÓº¶—j?º’ŽÍ»¤¥~_ÇÇÇÈÇÇuo,BAAh__A€??‚__ìããÍÍÁùùùüûúýüûááÙððëd4—Ž[›Q¦wvBB/««¦p%!ððì___uuu!ù,1 ÿ€BB&0<<~ˆ‰~'Œ'ˆx'”•”0‰hˆ~BÓÓ³ ,  Ý||¯/-~-Ê"|[w½«|÷>%%>²¸õPÐc¸?2xxÎ'D,´ûӠˆ)îü±ÑÊ€<;$0ðÀˆ‹/J(H1A…==ªÄøÂE‰€ zÈAÀ  ð’­ aÀ„#rì8ãcG>¨@ › v¨ìèLL<´Y"AB~zþÄ¢!ƒ+EÿÈ0à3‚Ïi 0Ž8ÁƒI€„@2’O l kàÀ’(QŠpx±‚å*”a07Ÿ',ĘÁÎ <0¡ÃŠ—»o( ~ ` m–è.SáB„Ÿ .ç0óÄ ]œ ã⊠FŒ°Ò¡ ˆ1(ÄHÂg@’(Kn€ÐТłVèÞ`Á‚c³ÀáO÷B·ú³ @·ÿ=XÖDT `™çM愜×BÈh¢ -4À$“XVA–Íñ ~C•ÐÇ‚~T`‚ 2`‚Ä(cŒ:Ôh#6ÖÁ¼XÃ?!d C´(à 4¸Ã( $„ÂGô!å”T"`¥•R^‰e'œpÍ— ¨a¥7È‘Fm¬;torrentflux_2.4/html/themes/rust/images/proglass.gif0000755000004100000410000002006511017132666023112 0ustar www-datawww-dataGIF89añæ÷ÛÅšV8‘¬Ñ’q§á­rs¬ÐËë굦¦fF©ˆ¹oÊ“RN“Ï촦мƒaÔ™‹µwYqPŒÇ‰v‘‹¸Þ¥–笥˓vöʷب«¯•ÄØ¤ŠŒdœÙ›“|Da®ÕìR1ºzc‡køìñˆSrYI¦¨æì̉…Ó°ªhQ‚X’÷Ô¼ãÈè]Gªv“Œ›Äã¼ÒĪÕÎ’ƒÍ¾ã£b>•`v’M4w„¹‰B-eyÁtfŸæº·å×ô·…”Ó£|ÛÇí©y¡ÔÛ¶Ûaf¶´{y`Z§Ã·ÝÈ£ÌÌ—™Ÿ|¯ ]E¬nHG/ëÅ£ggƒ;,òÇ®Á~q|±àŠ»á°qSÆmÌäïҌԩÃ翜ҮØóÀ³ñÞôçÎñМ{±uM÷áѰmYõØàà¶ÅÞï®trëÐèÛ°‡Ç¬¼ÛÕ’ÙÁãž\9®èââ¾ä›]]ªqkžkƒ³l`À‹aœÄá‘K0ÀŒžÝžšÒ¡Ÿòϻ߲°á´”…BB–Q4࣠òÛ¡!ù,ñÿ€{&j‡& wby~~_==P1~Zhb’†j*bZ¬Zb*Ojw~~µ~‘j&wÂwj~¢y__?¬1=S&&ˆbV**ZVj¢*ÜZ®bZh’©~{ÑöO`TX{X¨€‘`BÌ/W~‰Q1êÉ OƒéA-O¾\¼ âÅ;·î@Ñðƒ…w˜K%托ü|ALͨ V8ìƒå'*ò´laß Fœ`D 1 ì¡>ˆÀEƒr‘Å„*®!ƒYø`„kÀDAp±Æ+ˆ„rÁ„® äEÀ ÿ„öÅC0$ >èèÆ F £ E`ÀlÁ¥UÈॗ2dP„šExPÅ›¤á¦¤!@¸ € 9Ø À”P…œ¸àQØ`àmá ´Ñ†RÐAF¤ 0JG%‡höÔBØJÁS½Ên‘0 A±p+4¯.©À*­ *ö`ô|j:^Òèar@30I÷»;`£5F1)]ÿr pkµ@_ê/{¢4’ဠúâ—l4å`ßJÊ_‹£K¡Õ0@Üà MWD¼uƒV°¦È€¸ïüš*_Aýæhf: Ì_¼Éh@¹˜ ±ÁpjpþÔ¨ ä©Q¾}D,'L’£žE)x ‘D± T%ã?†êÅ?¶ñŒW5ýUEAÆ2&V±®ŸG!ÿÊWˆBÖŒ…˜ß!è¤`…ôådóüInº ºì8È4N@¢å×½ŽàS D3P5Wñ‚X±£j9¢±Kuþàl€¨h»°Qcõ'4Mað¬ñv&w6ăpJa=p·s`T€2àÿJ€0OE ò2fp÷€JQu—°Q%ñX 1@{ð-1‡ƒ@R]ð-¬!;.áJ8áwKQPlZ6¸m&%sJn¨<)ÄÖ<:FцnXKQNÐÖ5 S€Õ0E7PÐ{PiëÂS ö€š:?£K‘æ4‰õ4'ñ6¥Rb°=0ıÑð6§DèlÃ2!0{FTÀŠ™y&‹0ØÐ]`rˆŠQ§pË‚$ˆ0tõ;GäqgÀNfqü<ãöW!ÊCIJ§jÀY_°:ð¢ÿE7E7ÎAL7h€Gtv`ÎñtܱUðq'ÀvàX`1¨C€CMC < GÁüe0MÐ<txptEwG ûx©4,µµ¨´e>À©œêÿvÐÂBÚ%x+y àÃt·‚«!Y’0E€D9©«t7¶Ê«¼Dà7Ò:Â!é—&·ZA0°D9”’¸Š’P‚BÇ –C À­ßj{áê{†2àZ'q²­`açŠ'yb(.P•v®¾ç'aô—ñJÁ§–÷Ú¯,ð |@0}Rà—û+,á÷+¿b~òjÉ‘T{±8€d¥l~k—˜åWÊ$y–‹/eë¦ô׌Ipn¸5³ÖÇqÓ‚¡š;¶;¡AªºÑƺXW ¢{½lÀØûp¸¸;ØLG›mÿ»Œ@¼s‹kZÖ˜;(àž©‹NìLr0ªŸä”¼´ÉO;J:¡Êó:À3NÌÙ(s¾•‹Í(¼#'˺ƒº8ñìWÊ&±gºÄA08ñ$‹”{0õ¶ ÀX›m‹Ë+¿.½g³¹¹™ö‡(€½E Óå› µù´™ÆNš Ê次DÊ;âk²@ÚË —Ÿº,G2X¶LØ5àÍJ`½FªƒJÀÒm;,½¶ ZÓ]ͽÜ[›Ê;z–½]=¹q׌‹ªk¸ò„2X €ˆf ÖbIÀIÖ+­½ ˆx¸dšÿg€È¡oÀ h@:€?Àt;‡0oЀڜÍÙCðÙŸÝÙ ðq@4ÐÁè(xÀCpñÈ,lÚ¦ÍÂÿQÛÿà œµ•¬>x¸º©‚׺ڪ)P‘²! ‚’Ö^â!Ù\ żšÜ 22’‘0x0Ð%¨×\"BÙÎÕ!ßí\ßÅ%)Þ ÄrŒ¶÷`y²­Á·­yaŠ|9 È90È{¬® È÷}®ö{UÉ9 €9@òº'“ÌQp(¾‚Àà>¯~Y±ÛÉæ7¯Š‚.B@D€d%n~#NæçÉ*®â¦ÌÊÁrÊÀ‚ÿâD<‰ Ëj<80(Š(£Ì‚À%šË32ÈœãIpÌ‚(º8H‹…©Œ!€ 0Ó<Í€¥éçŠ T°Ò3P3 äPð¥ñdÔª ËMк̃º,sÐsðã5í×´K¦SàøLæaÍÒ¨˜ÄÆd¹üp à¦[Þºü ¾ë™Î0T°r°LÒO ƒÚºðÌ¡)‡gOÏ­¡k »ÕøšIuÒw  Ð~=Ö›»¹c]Ø›K½{®½‚H›zÖl Ïk,=²žÎ˜”¿¯[  Í±iºü‡¶¡ªãÐÉŒ=0˜KàÿuìXÖ‚ýº]½½}ÐàŽåI0ë^=Í÷,ëÞ;´Ö«ƒ¿ž¤ßå†ËÏ™öå¼¶XβžåÓüïÿnÏT}î²ë­ëæC‹Jà×o ‹§x`ªv MÙ?ÚoÀñ‰Zo° À °ño@ܨC`ܨ´UÚ²=²Í±M¶—H Ü<€<àòy=ݰ)ô’z»:Æjò$º Ýß}­c "ÍEƼjBSÒ«ÔZ”B õbAM "2²&¼šzÔªBlǹù=ÿ È–ðߊŠüdžbDßù­÷~\~Yÿá nÈ Î@È€)kBø'âŽÊ3.âš_ʦ<ù$ð$0ù%.â$úšO$žâH†d3>±¦Ì±#®ŠÚ°éJÐiκKPíé:“^¢ꦆ} 9xÏbÍÒlÀÕØiÞ‚G‘Ë °¡5p7€î‚-ä¢{ÓйîmÛÝ+¤{F¦»LÎ/Ó¬OÌ+ˆëÞ¬Û»O»ËðV­Ò¸.äWhR]`s((I‰(S(`‹`TTI S ! S‹TJ¢JI5‰}(11]JˆIS–33 T PÀ] `Œ(´‰}‰ÍÿγI– Ž(Jȸ‡Il¨lº¹›J3¨(è^±3‚ÂS¢È¢Œ¥75–s^^êØ,¹±¤›ƒÝ¶Ë¥+€Ãm¨ú,©#V.6}jÔ)ا-Q^”[Ö­]½NÃ0…1'Ä bél›©ð Ã5– t“àM\¶Ž²—dA &ðà‰1¤Ì C†¼yÓdÁ>V©6içU>|¦R¥ê´IYMZÄiA£íoG¼ãVn[ºq6Ј3 Å$ð»!ÅZ$'NÁ¸p`$0 C‚ ÀÈ`‰d$.{FâùrÒ ,70-¸ §$0tÿiÊ æ\„´ $.&LÈ"Ç€”s(_®¼€rDX>Åôå6žç ˆwéÑs8N„…w"BX°ø@Äy @ØPàH!ÞIœÇ!¤¿8(€C~úç$|ð $°P`ƒ "Èà‚ ’à@à ¡…*à P„@E%I@@Ë̸ƒ@'IHÄFÌ$Á‰-ž€€Ä$AJ3ç@Q%¡‹.%A®cA2Ã6}lTЋÖl2:!8´NˆìÒ J„Ž%sÌ Œ%ÂØ.ÍàtƒGMB0…LË „<±@ƒBðH@AªpBË‹%Ì5=šÿ†,ÓÌFÿè¨Ä•_"pCË4Ÿ]°„€A9™²Bl(á@$. B !ržRé¢Gû€:Ô\”Bu4:YCG¥Úò¥MÑÌa#-3,ó¤CuÜàS,a2$ FÕ0¬Cm[RIOv´Ñ <9qC7èˆQNÙD˜=n;ˆZ2H™‘ô3ˆ,§,£-¦½–ã¯Näº[çA %‹-h¾Õ& ±MuÕ„W`%ÖÅWeÕSÁQ4¼QÆÅMÜE\ruà²]#¸ü2\nѰA^4 ÀW ‰ÑÀX^#ÆX  e$æ™d§I–ÛlŸá†ÛÒSÇÿÖô•eVZÑXã¦Ö pše” 7Ü9lP´qÊW\×)zÖÁM7ÛMç\ÖÕ]Þ,ˆ'ßå¸{x ßx@Ø€_ç!Þ€Vh¹~*¨9… r¾ ‚V(„€B Èaéè!¢K‰ÌϰÎ(AuÔÊÌÈiH° $!^Ô NŒvzÓl kP77z*ªÄ jFuh´D>íL1™¨x1-̈ÓM-¶„y¥ÂÚ¦â/·Qê4,"¸Œ´Ì°\k{4®H ç˜J|‹…ZÓš°SX¤Is E.ÂçxAK0WNÒu$&-ªøˆÖõ¸¥‘e@ÿªLý 2ˆRJCzV4¦`+\ÁT)LáA:&ˆ#J¶ãµžÕH‰£Û˜N0h®7i¤ºN&‘‰Ô‰XDjbí B;iaP&Ñr×@.Õ<_!ìYåÕ·†èA!áb\¢³À„B4’«\å†?c<*Q‰¶b®L¥*óØTŠÈt d'óÊT0±¥-pyÙËb&3˜E26A0ù´¤À“B+Œ'áF4®m`Š™šÓ¤æµ¯AÍ1RÚ“šˆ”hËMR0Ë¡aÍ3‘ Lnp³ËR²M:Ò™›2•I·föÍ:Ðá[3I0·¿å`pÿæQw§M"dÎQ€‡þæ ô€Î;¥ÓÐyBǹ mîsšKPçÞI¡Ñ  BÝ€ò"*xF38—O´¥C,ñRK@€Cv¹ ŒjÐŽDSéÓ\$T”¨MBŒ¤E’Ö΀2’´´.D,ˆÛ˜ Àä…94kEDAœöa*'ã ‡Fì„Y¬£NI˜nžì¤ç;ç)ã øB>uü8Õ±D  (ºp'-䔤H³ÿ(¢„%ÌÎP^@žûBѤƒµ{’šfˆ»}üSMiµmdqâS­tÆKÞ“¤šY‡ä"³Ã‰NyÊ“Ì\N0l9ª§Ò&ýc]© ‚+öp†NŒpXé»Þ2n eŠ !…žT\¸y„p%’ÇZ¦-Yô=Ø_;ÊÙmTOy7±‰.@Ò /LÁã#j3BRžÔ@&¥ú”NÖX’*î:É[ü©FàØS*¿VJæ2hl;‘›HÄvu”0åtI`oJr£ÔÓ:5¯5èkW[’úª[ÓI ô.(q6"sôÂo£ !õfä –åbeE阿›Û’‰yeUYti –½Pò»¯dxeöI¹¤·gçe>Ovnçe" ´m½f Ü3߯xÆÁJC€ ³Ë]:8åðÜÀ˜L§½7·›„ë&áÍUXÃÜ)‚¸Ya(®ÕT;-Ìóx';ÏÁzh :ýðG?:–1×kLvÐa ê{*D„@;torrentflux_2.4/html/themes/mape/0000755000004100000410000000000011026130102017222 5ustar www-datawww-datatorrentflux_2.4/html/themes/mape/style.css0000755000004100000410000000661011017367654021132 0ustar www-datawww-dataTD { FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px; border: 0px; } P { FONT-FAMILY: Verdana,Helvetica; } DIV { FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px; } INPUT { BORDER:1px solid #999; FONT-SIZE: 12px; FONT-FAMILY: Verdana,Helvetica; } TEXTAREA { BORDER:1px solid #333; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px } SELECT { FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px } FORM { FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px } A:link { BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline } A:active { BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline } A:visited { BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline } A:hover { BACKGROUND: none; COLOR: #888; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline } .titleblack { BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none } .content { BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica } .block-title { BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica } .storytitle { BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none } .storycat { BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline } .boxtitle { BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none } .boxcontent { BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica } .option { BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none } .tiny { COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; } .tinywhite { COLOR: #333; FONT-SIZE: 10px; FONT-WEIGHT: bold; TEXT-DECORATION: none; } .tinywhite { COLOR: #333; FONT-SIZE: 10px; FONT-WEIGHT: bold; TEXT-DECORATION: none; } .tinyunderline { BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline } .title { FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #666; FONT-SIZE: 12px } .adminlink { BACKGROUND: none; COLOR: #5A646D; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline } .tinypercent { BACKGROUND: none; COLOR: #5A646D; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none } .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/mape/index.php0000755000004100000410000000051111017367654021072 0ustar www-datawww-datatorrentflux_2.4/html/themes/mape/images/0000755000004100000410000000000011026130102020467 5ustar www-datawww-datatorrentflux_2.4/html/themes/mape/images/messages_on.gif0000755000004100000410000000266411017132666023515 0ustar www-datawww-dataGIF89a@÷ÿÿÿÿÿÿÿÿÿÿÿÿùùùøøø÷÷÷öööõõõôôôóóóñññðððïïïîîîíííìììëëëêêêéééèèèçççæææåååäääãããâââàààßßßÞÞÞÝÝÝÜÜÜÛÛÛÚÚÚÙÙÙØØØ×××ÖÖÖÕÕÕÔÔÔÓÓÓÒÒÒÑÑÑÏÏÏÎÎÎÍÍÍÌÌÌËËËÊÊÊÉÉÉÈÈÈÇÇÇÆÆÆÅÅÅÄÄÄÃÃÃÂÂÂÁÁÁÀÀÀ¿¿¿¾¾¾½½½¼¼¼»»»ººº¹¹¹¸¸¸´´´³³³²²²°°°¯¯¯®®®­­­¬¬¬«««ªªª©©©¨¨¨§§§¦¦¦¥¥¥¤¤¤£££¢¢¢¡¡¡   ŸŸŸžžžœœœ›››ššš™™™˜˜˜———–––•••”””“““ŽŽŽŒŒŒ‹‹‹ŠŠŠ‰‰‰‡‡‡†††………„„„ƒƒƒ‚‚‚€€€~~~}}}|||{{{zzzyyyxxxwwwvvvuuusssrrrqqqnnnmmmgggeeecccbbbaaa```^^^XXXWWWVVVUUUTTTKKKJJJIIIHHH===000ÞÞÞ!ù˜,@ÿ1s§Ï=zòä™Λ‡#JœH±â8päÜQ¨gAƒÒÀTÎ+RÐH‡ 0cÊœI³¦Í™:|(ñ"H*\ö2‘eŒ”&?FPh  AP£JJµªUª 0€Ða“'Y ¹AS% ‘,hê´­Û·pãÊ«@A |ar†Q™$>n˜È ƒÈ+^̸±cÄ,|˜#È•E[‚䀱âC† ‰ ]¢äæÒ%!D_ÒR!‘i=­_WÐb’‹Ø”,ÁAi4ªµX°p‡-dðhH‹*B¼Ä ˆÐEŠ.rãÆºŽJ:V_ÿ¸àBüx-:.<:£¥’ˆðFÖ_Т¨}úñÅ3lè ‚Ž&~p„ $p@A rxŒÁ ˆ˜fšl˜æ^ráx˜6‡@0‰šÆA„—àbˆPÀ 68ÈAÌ Â0ÀÀ!S,P>Ö¡F iä—ôP$’`\ò“€1Å$¼d#=Yä—©ãV”p‚ŒaD $\ð@‘‡H‘@_¼YG˜vÈ u^rHyBç%’’F‡jÉ/HbZ;XbZœ x A&à0E!f(‘à HÐÀ§ †*ꨤ‚JÅ$ÄpI ¥ŽêÀ¤‘ĆˆáÅ/„ ÁHÁ¯À+ì°Äzðˆim;l‹l0‚Wnüá\qƒ +¤€ 'tëí·à†+î¸ân›‚ ,¼ ÃkD"&LÇc€ÑŽ\ä«ï¾üöëï¿ÿÞ Fd¨H#R`¢0 XÄaGtD<ÇÄWlñÅgŒqÄtÔaÇtlÁ‚Â;torrentflux_2.4/html/themes/mape/images/admin.gif0000755000004100000410000000261411017132666022275 0ustar www-datawww-dataGIF89a@÷ÿÿÿÿÿÿÿÿÿÿÿÿùùùøøø÷÷÷öööõõõôôôóóóñññðððïïïîîîíííìììëëëêêêéééèèèçççæææåååäääãããâââáááàààßßßÞÞÞÝÝÝÜÜÜÛÛÛÚÚÚÙÙÙØØØ×××ÖÖÖÕÕÕÔÔÔÓÓÓÒÒÒÑÑÑÏÏÏÎÎÎÌÌÌËËËÊÊÊÉÉÉÈÈÈÇÇÇÆÆÆÅÅÅÄÄÄÂÂÂÁÁÁÀÀÀ¿¿¿¾¾¾½½½¼¼¼»»»ººº¹¹¹¸¸¸···¶¶¶´´´³³³²²²±±±°°°¯¯¯®®®­­­¬¬¬«««ªªª©©©¨¨¨§§§¦¦¦¥¥¥¤¤¤£££¢¢¢¡¡¡   ŸŸŸžžžœœœ›››ššš™™™˜˜˜———–––•••”””“““ŽŽŽŒŒŒ‹‹‹‡‡‡………„„„ƒƒƒ‚‚‚€€€~~~}}}|||{{{zzzyyyxxxwwwvvvuuusssrrrqqqpppnnnmmmgggccc```^^^]]]XXXTTTSSSNNNBBB@@@???>>>222111/// !ù™,@ÿc‡žFPh  AP£JJµªUª 0€ÐA†’&W©13åÈ,hê´­Û·pãºí")R£’DÀU  =ˆ()ƒhÌ‘6LdáãÇ#Kž¹P•Ç’PPŽ`჌@ªÊŒ2\°`¡Ì"I’ÊDŠm'P’\T¨àv™ ’Eºñ:vØXwqãQð¬/`àP¢EŒKú`éACEˆ—.\ÿ(I„lóŠrä-cHüxH.ÔãÆráNû"¹ a)éBnEe\€E{Òe°A"°pÃzhD $p@ATTQH†Ž@PHŽTQ!VèH™y("'ZD‡™Á&ãˆH@&ÔÀ]!ƒ@À ,àE DAH’Ž0ÉEéÈ/Hâß ı$’¼@H<4)ɉDe‘Cn•A 68áGEÐ@ÂéTq$!zÞUA$y¶ÕE"°AW „@¨$]$@:Ü%I/4ÛN¡ A&Ü… d à HÐÀ©¨¦Šj ’ôêr¨*무¢êÀ¤ðCƒ€Á…/„ ÁHÁ±È"‹" ÉF FÍF+í´ØXÁ#x¥Æ=С6¸°B ( p¹覫îºì¶Ën¹)¨À 9$‘#AL¢„l”†[¬ÅÀlðÁ'œpÀ^|!|$Å$³`ErÄÇÆotìñÇ ‡,òÈ"o GrÌG,P;torrentflux_2.4/html/themes/mape/images/messages_off.gif0000755000004100000410000000267111017132666023651 0ustar www-datawww-dataGIF89a@÷ÿÿÿÿÿÿÿÿÿÿÿÿùùùøøø÷÷÷öööõõõôôôóóóòòòñññðððïïïîîîíííìììëëëêêêéééèèèçççæææåååäääãããâââáááàààßßßÞÞÞÝÝÝÜÜÜÛÛÛÚÚÚÙÙÙØØØ×××ÖÖÖÕÕÕÔÔÔÓÓÓÒÒÒÑÑÑÐÐÐÏÏÏÎÎÎÌÌÌËËËÊÊÊÉÉÉÈÈÈÇÇÇÆÆÆÅÅÅÄÄÄÃÃÃÂÂÂÀÀÀ¿¿¿¾¾¾½½½¼¼¼»»»ººº¹¹¹¸¸¸¶¶¶µµµ´´´³³³²²²±±±°°°¯¯¯®®®­­­¬¬¬«««ªªª©©©¨¨¨§§§¦¦¦¥¥¥¤¤¤£££¢¢¢¡¡¡   ŸŸŸžžžœœœ›››ššš™™™˜˜˜———–––•••”””“““ŽŽŽŒŒŒ‹‹‹‡‡‡†††………„„„ƒƒƒ‚‚‚€€€~~~}}}|||{{{zzzyyyxxxwwwvvvuuusssrrrqqqmmmggg```^^^XXXTTTÞÞÞ!ùŒ,@ÿ• “çO>|öì©3GNœ‡#JœH±b9rèäQȧB…Ú˜`tBÎ-V–ØX1âC0cÊœI³¦Í™<„8!CH,`úBÑ匕(@JTh  AP£JJµªUª 0ˆà¡”)] Áa“…I‘,hê´­Û·pãÊ«@Aƒ "~²&Q&?r Ð0!‚áÈ+^̸q%\QC‡-ˆ¾Ù1£E Š ±Ò$‡+$6Œ¶#ôé®­ÀŽq ×M¢  Ñ„4 «[_À¡Ã‰4|DäåÇ #^fXrÃ’%ŽøðQý•]j`ÿÀ "üx 5N`x’£ã]X°G¿Ä½úó4pð@Â…Ž(€€! &tP$ƒ?ØÀàIt!a'ì ¡X؆6ü ¡ "(xvqA„]ü€Øt€R2†5€A 0P ð C<ÜÀÃD!y¤ Zl2°E ©Ey‚D渕'ä@!gqƒ @°@C¨€@/¼™ƒH`ÅÔy'zA'M AC*…4a' Haç Nu(èp…!j8±C LÀT] †*ꨤ֕ÂdPE¥ÖÕÀ« 8–@+1Æ!fˆA„ #l@À+ì°Ä ìKh¡Å Æ‹ ‹pP‚Wpòƒ`‘ -¬ ‚ )„+î¸ä–kî¹æ~» .ÈÀÃo,2#P"Çgƾ`ôëï¿,ðÀïKFh¸!ˆ"V0â° \ÌÇvT\ÇÅg¬ñÆwÌqÅvÜGv|á‚Ã;torrentflux_2.4/html/themes/mape/images/progressbar.gif0000755000004100000410000000047711017132666023543 0ustar www-datawww-dataGIF89adÕ‡¶ç­êþ·Ôò­íþˆ¹ê’Åû›ÑýŠ¼íˆ¶èœÒþ…¸ç£àý²òþÀñ¡ÛÿÃõŸÖþŽÂö’Èüоî°ðÿ§äþ‘Çù‰¼ëŽÀó²ñü£Ûþ­éü¨äý…ºæ«ëþ—Íü©çþªåþ‡·ç!ù,d\@pH,ȤrÉl&‘tJ­Z¯Ø¬vËí^;éå0i< ‹dÍŽ¸ßð¸|N¯ÛïtÌäB)¤    Ž‘’“”•–—˜™–! A;torrentflux_2.4/html/themes/mape/images/index.html0000755000004100000410000000001511017132666022504 0ustar www-datawww-datatorrentflux_2.4/html/themes/mape/images/bar.gif0000755000004100000410000000207111017132666021746 0ustar www-datawww-dataGIF89aÄÿÿÿÿÿÿÿÿÿÿÿÿùùùðððéééæææåååãããáááßßßÞÞÞÝÝÝÜÜÜÚÚÚÙÙÙØØØÕÕÕÒÒÒÑÑÑÏÏÏÌÌÌÊÊÊ,ÿ "Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,£„rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßK…|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—s š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜ› ßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ H\ƒƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sÿª\ɲ¥Ë—0cÊœI³¦Í›8sêÜÉ󣃟@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK胳hÓª]˶­Û·pãÊK·®Ý»xóêÝË·¯ß¿€ L¸°áÈ+^Ì-„Ç#KžL¹²å˘3kÞ̹³çÏ C‹Mº´éÓ¨S«^ͺµë×°cËžMr„Û¸sëÞÍ»·ïßÀƒ N¼¸ñãÈ“+_μ¹óçУKŸN½ºõëØ³kßη„ïàËO¾¼ùóèÓ«_Ͼ½û÷ðãËŸO¿¾ýûøóëßÏ¿¿ÿÿ(à€‚7Á&¨àÿ‚ 6èàƒF(á„Vhá…f¨á†vèᇠ†(âˆ$–hâ‰(¦¨âŠ,"HÁ‹0Æ(ãŒ4Öhã8æ¨ãŽ<öèã@)äDiä‘H&©ä’L6éä“PF)å”TÂXÁ•Xf©å–\véå—`†)æ˜d–iæ™h¦©æšl¶éæ›pÆ)çœtÖiçxæ©çž|biÁŸ€*è „j衈&ªè¢Œ6êè£F*餔Vj饘fªé¦œvêé§ †*ꨤzÁ©¨¦ªêª¬¶êê«°Æ*무Öjë­¸æªë®¼öêë¯À+ì°Äkì±È&«ì²Ì¢ŠÁ³ÐF+í´ÔVkí¾µØf«í¶Üvëí·à†+î¸ä–kî¹è¦«îºì¶ëî»ðÆ+ï¼ôB›Á½øæ«ï¾üöëï¿,ðÀlðÁ'¬ð 7ìðÃG,ñÄWlñÅg¬ñÆã«ÁÇ ‡,òÈ$—lòÉ(§¬òÊ,·ìòË0Ç,óÌ4×lóÍ8ç¬óÎ<÷ìóÏ@-ôÐDƒ¼ÁÑH'­ôÒL7íôÓPG-õÔTWmõÕXg­õÖ\wíõ×`‡-öØd—möÙh§­öÚl#;torrentflux_2.4/html/themes/mape/images/noglass.gif0000755000004100000410000000012311017132666022644 0ustar www-datawww-dataGIF89aL¢ÿÿÿÿÿÿÿÿÿÿÿÿ,L ºÜþ0ÊI«½8ëÍ»ÿ`(Ždižhª®lë¾p,Ït]&;torrentflux_2.4/html/themes/mape/images/home.gif0000755000004100000410000000262111017132666022133 0ustar www-datawww-dataGIF89a@÷†øøøôôôïïïñññžžžØØØ‚‚‚ðððöööéééåååùùùëë놆†000ää䀀€eee„„„îîî÷÷÷õõõ¨¨¨|||ÞÞÞ£££êêêccc×××aaaÖÖÖ‡‡‡ççç½½½———UUUËËËÙÙÙ}}}ÚÚÚÆÆÆìììššš“““zzzÀÀÀ®®®§§§nnnrrrããã›››ÓÓÓÇÇÇÏÏϹ¹¹ààà{{{ÛÛÛ………XXXèèèÜÜÜ~~~­­­ÑÑÑÝÝÝÌÌÌíííâââÅÅÅÕÕÕ²²²gggÉÉÉ   óóóÔÔÔ¡¡¡bbbŒŒŒÄÄÄuuu¸¸¸mmmŸŸŸ•••¤¤¤HHHœœœ«««ÁÁÁ¦¦¦˜˜˜¾¾¾ªªªIIIJJJ¿¿¿”””™™™°°°¬¬¬ÂÂÂ```æææ³³³¢¢¢xxx¯¯¯ÈÈÈ¥¥¥TTTÊÊÊÒÒÒ©©©–––^^^qqqwwwsss¼¼¼yyyßßß‹‹‹ŽŽŽÎÎÎvvv»»»ºººÿÿÿ!ù†,@ÿ aä‹;2d00¡‡"Jt``¢… {X”ø°¡G†Aîpág†9< ¥èABË…6u@h@AAM7èÜi“§‚™5}òÄÙ3' )pŒ¸ó…€ &'¢¸ ¤ *°€ëÖ® Š;V+×±h¿z  ‚…4LÀèåJˆ@s–Áá ³[ –pA°aÀ†+n[!…?/rÀh‘'Ë’7Nˆ p`€çÏ =wغ´éÓ§pÐaBň k°ŒH"Š 8phÀ»·o)%<ÈÑ …ðC€?B¸ Á8ñM]w‚RØ1¢F'/š(ÿÑPóG‚óèÓŸÿ #A‹ XIðÁ{úðe„ÑžÊõþ ‚4aƒ BìAÀFðÁ  á„N8Útpfx! $€ '\…(JHÁ œGUÔ0‚ E$p€  ãŽ<ê(A Ä x€3üˆ@,,Áô(åŽ8¾%B 7ˆ1 V4ÁCè¸Ø`…] 5烄A nFЀÂ9&:Zy‚ 1\aI j衈&ªè¢Œ&úÄ4€F L€Á!8hÀÆP À§ †*ê¨xJꩤ®Ø€@È / n@@7 xPÀ®¼öê믹þ*¬°¹‚ „ 8P tôa 3ôÐ ,``-Øf«í¶Ü^Ëí·ßZËÂxLQ…¢® nL@D Ä+ï¼ FPh  AP£JJµªUª 0€ÐA†’&W©13åÈ,hê´­[BPÜJá6Ž.uóêuª@A zQR&ј#=l˜È ƒÇ#?(TE²å0t,kÞü ‚…2n©‚( 0V|ÈpÁ‚… °cÇ6´H’$"$¹(c{ÛexKZ´Û‘í@\è–íú%ZÄØ±¤–4T„x‰á‚÷ïà/ÿ t¡Ì¡ ºÝù^æŽò"âï”yt!Ç\óá½cȰ¡ƒ7,¡‡@Ä@DÁ‚ 6¸ eTQ’ PE$’42fA4² „˜=F#U8Ø p`B LðÑ2ˆp 0°À8æ¸!Q,! H2ŽŠxáE#HÂÃŽ~yc@rŽ7Ö¸U%Øà„aA FPh  AP£JJµªUª 0€ÐAÆ'X­9CÉ,hê´m9^¼ÈqK—®?uóÒU  =ˆ,1£ˆ ’6LdáãÇŽëˆL¹ò ,k¦ÁÂ7€XI¤+>d¸`ÁB…×f*UjdÆÌ"‘*Ê"»Q*M""ûîJ‘ˆT@>©Ò _·¾€C‰1v0ñ“¥ !^bÿ¸@þ‚‹J9DHª§H%"Ð_Àcf ¢ f‘ta=~þ•dqA kˆ0IåQ—ÁˆÀ Lì±1À@ ¡†A@¢¡dbÔÑ!AÈ&›!†X±áˆ•  •@Ð"‰”Xáá†J@&ÔÐD^!ƒ@À $¹À•¼p$_|!,pÁ$/(™! 1 • @¹À“,PÉIB"¦’ ¹U%ØðÄbA <$]^ȶH\rèðˆSQÈ6I,"›!TBˆÍ=¢C•„àTŸ–º•ä›&Ü … e$à HÐÀ©¨¦ªêª¬¶ªê…´–êÀ¤ðƒƒ„Ñ…/„ ÁHÁ°Äkì±È&!•Ðp¬Žl0‚WkðÑC[aƒ +¤€ '„+î¸ä–kî¹æ~›‚ ,¼ƒj8„%Küцb|Áž[ôëï¿,ðÀïûc¤ÑÇ"QXâ0 W¸1‡qT ÇÅg¬ñÆwÌqÅqÈ1qhÁ‚Ã;torrentflux_2.4/html/themes/mape/images/Thumbs.db0000755000004100000410000004100011017132666022257 0ustar www-datawww-dataÐÏࡱá>þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿ  þÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot EntryÿÿÿÿÿÿÿÿàðøßãÅÀ11ÿÿÿÿÿÿÿÿÿÿÿÿSCatalogÿÿÿÿÿÿÿÿÿÿÿÿì2ÿÿÿÿ® þÿÿÿ- Å"#$%&'()*+,þÿÿÿ.0123456789:;<=>?@¾BCDEFGHIJKLMNOPQ¼STUVWXYZ[\]^_`abÁdefghijklmnopqrst¸vwxyz{|}~€ GÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ`"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úÿJðø¼ dÔu}.?úÕ¼¾ µ+Íö£ÿ&Š+ô™«3ò÷9w+IàøØ ýGÿÏÉÿ oü"Ïþ£ÿ'ü(¢€ç—pÿ„BùÿÔð$ÿ…ðˆAÿ?úþŸð¢Š,òîðˆAÿ?úþŸð£þ?çÿQÿÀ“þQEƒž]Ãþ?çÿQÿÀ“þÂ!üÿê?øŠ(°s˸Â!üÿê?ø²õ]Z)hõCŽÆãÿ­EQJãS•÷?ÿÙ ``2w=ÝãÅprogressbar.gif&w=ÝãÅadmin.gif"w=ÝãÅbar. ¢ÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ@"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úÓá×Ãí7Å·m®øžÉ+ø}ñNêÞþ¦ˆ.ô¸õ‹9/­-Yn-ÚFŒ‘å³!”0 §®à¼mÏÄOƒ÷séóKá‹×“O¼¹Ô-›Ï˜ysÜjpj³?sºöÖ prÍ€,§[Âß¾x*M=ôm öÍ´ý9t›c½äòíCïüÎsós¸å½èÙ ÓÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ`"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵ3ÿÿÿÿÿÿÿÿÿÿÿÿ!ß4ÿÿÿÿ/5ÿÿÿÿÿÿÿÿÿÿÿÿA¯6 ÿÿÿÿRw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û—ûf÷þ~^í›ßùùz( ûf÷þ~^í›ßùùz( ûf÷þ~^í›ßùùz( ûf÷þ~^í›ßùùz( ûf÷þ~^í›ßùùz( ûf÷þ~^í›ßùùz( ÿÙ*Š(æ—pç—pþÀ²ÿžrßçÿâ¨þÀ²ÿžrßçgif.w=ÝãÅdirectory.gif*w=ÝãÅhistory.gif$w=ÝãÅhome.gi ÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ@"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úÓá×Ãí7Å·m®øžÉÅ­j:¥Ñ´²Ót» :g¼¬s+FŠ#v%œtÀÉ >Çâ\Ÿ¯dðï‰ì%2ÂJÁqlË"Oð¸ç+‘ŽªøËãÿÃïØÚÛkZf©"ÚN.­§´ž[Kˆ% ɾ9¡t‘ Wu;Xd1 šÅðGÅoj–:`ÔþÛj:®¤aH¬4Þ)š)ævy'¸hŽ';J@Ý‘‹^øùðOÅù‹Fð,Zž¡+@¶:u¬|·Þk•Rª³‘rËpbe*¯†þ%|"ðæ›u¤øfòÒ}4©µo:Wâ!4„ÝÍ"󟽞 ^ü%·ÑäÒ£Ò|Bºix¤†×ûfø¥“FÛ£6£ÏÿE*zy;08q@öŸ< Þ3Ô4‹Ÿ‚÷p¡ŽÂ-6Í´ËH¯n.§,ñ2¼ÁT¶†$.!‘·hËÜ“âÏÂ¥ $ ®æ´¶³KíNítË5KŒÝÏhþ~éCf9m¦ßå‡ÀBFFk“>,ø0!‡5{fŠ8‘%µÔ®á•Z9%‘%“ó·O13gÌo6@X† Í}ñ7áå„õÍ'Âú[hwzž‘ýŠ×WVÒ^Çö2w;âi—Ìb×W X¶æi2űŠö èß¼{¦]ßX £ÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ@"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úÓá×Ãí7Å·m®øžÉf'#ž¸¬›ß‰ uÎÒ5Ãn·²ê bš¥ÚYËq%Ë]<’Û‰„R3—é€0Ï…¾.ø ûAKÍgá¶ÒÛ ¸Õ&´ÓìÞßM$>qfϔĈðØÄ€1?ø[ ¡±šö÷á}Ö›hÖ÷3éó]i¶xÔÚ ÒŠÜ,¤ù†I*Èp9d×&|Wð]§ŽSá­Xíl´GQ»1L¢fc–?;d±¬¬Î±¸dRÇh4ž øà=kPð,Q[Miáÿ êO«Å§3,³\üå?~Ò¨Båv’YS• ‚ô ÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ@"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úÓá×Ãí7Å·m®øžÉÅ­j:¥Ñ´²Ót» :g¼¬s+FŠ#v%œtÀÉ >Çâ\Ÿ¯dðï‰ì%2ÂJÁqlË"Oð¸ç+‘ŽªøËãÿÃïØÚÛkZf©"ÚN.­§´ž[Kˆ% ɾ9¡t‘ Wu;Xd1 šÅðGÅoj–:`ÔþÛj:®¤aH¬4Þ)š)ævy'¸hŽ';J@Ý‘‹^øùðOÅù‹Fð,Zž¡+@¶:u¬|·Þk•Rª³‘rËpbe*¯†þ%|"ðæ›u¤øfòÒ}4©µo:Wâ!4„ÝÍ"󟽞 ^ü%·ÑäÒ£Ò|Bºix¤†×ûfø¥“FÛ£6£ÏÿE*zy;08q@öŸ< Þ3Ô4‹Ÿ‚÷p¡ŽÂ-6Í´ËH¯n.§,ñ2¼ÁT¶†$.!‘·hËÜ“âÏÂ¥ $ ®æ´¶³KíNítË5KŒÝÏhþ~éCf9m¦ßå‡ÀBFFk“>,ø0!‡5{fŠ8‘%µÔ®á•Z9%‘%“ó·O13gÌo6@ wÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ@"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdef7ÿÿÿÿÿÿÿÿÿÿÿÿcƒ8 ÿÿÿÿu9ÿÿÿÿÿÿÿÿÿÿÿÿ…“01 ÿÿÿÿ’ghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úÓá×Ãí7Å·m®øžÉËP²˜Õ%É6ÅG ª3 *28ØÊFx"¥Ñ¿hé–,–Ú¤·hÎís’@_s— í“, “€Å»òrhÒ´á߈¯/,áð^˜$¶b®²ZÁ»ƒƒò\sÝ€¯-øÅðòÓÀðÜø›Â¶ãÃÚ…‚ý¦Ú[UòðéÎ:©Æ ž&¶í¿ißYj_Åa©µÜŠPÉ<¯.Õ$ªˆPH.:JÆñ?Ä ŸÚ)×Â~Ó¤Y.ÿwuytév°Ÿ¿!åˆÀPI8éÖ€  ÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ@"ÿÄ‚ƒ„³†‡ˆ‰Š‹ŒŽþÿÿÿ‘±“”•–—˜™š›œžŸ ¡¢£¹¥¦§¨©ª«¬­®¯°þÿÿÿ²þÿÿÿ´µ¶·þÿÿÿþÿÿÿº»þÿÿÿ½þÿÿÿ¿ÀþÿÿÿÂÃÄþÿÿÿÆþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úÓá×Ãí7Å·m®øžÉ'ü$:BéŸðÞý…lSMyÒÿǺMç*gÌÏ|ÙÎ{gP¿á¢¾:kmƒmîÆ™N´5Äkp3…î„‘X›É–è7l>*| Ô=B++oØ[ßnó-¬µíBbÜþaò#K€°e²t© I|sð„ZØÚ6‹®Ëcgqöµ²›V½’Þiüó?› þÿØÿàJFIF``ÿÛC     ÿÛC   ÿÀ`"ÿÄ ÿĵ}!1A11ÿÿÿÿÿÿÿÿ¤ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ú»IE.õ þðÍt enT~â/ûàQE~‘=ÏÍŠÏkvýÌ}º)¿e‡þxÇÿ|Š(¨û,?óÆ?ûäQöXçŒ÷È¢Š>Ëüñþù}–ùãýò(¢€²Ãÿ&ð­¸ðö¡`¿i¶–Õ|¼:sƒŽªq‚§‚ ¥Ñ>7|9ð÷ŠnüIm§ësëW0½¹ºÔ5 ›Ï*'pïK4®±!eRV0£å^8_ü@¹ý¢|'á=:E’ï÷wW—N‘Çk ûòNXœ“ŽhÿÙ?ÿÙÓ%¹ŠÙ¯"- œž| ŒÈ)ãù™>Y–6÷®1þ1|<´ð<7>&ð­¸ðö¡`¿i¶–Õ|¼:sƒŽªq‚§‚ §øGã—ÿÍpú%†¹kÃh³“P¹žÒ»v!·’VŠ“Ò5^8éIâˆ?´S¯„ü'§H²]þîêòéÒ8ía?~B Ë3€ ’qÓ­ÿÙ[|6ðDÑþ ÒÆFv›(ò?Jñ_Œ_-< ω¼+n<=¨X/Úm¥µ_/œà㪜`©à‚k«?µß†1ÿ—¿÷ìrÞ'øsûE:øOÂzt‹%ßîî¯.#ŽÖ÷ä œ±8 ':ÐÿÙx&ÇìPÞÜX¤ÒØDv†C¼dg)½Xq§Œc>cñ‹áå§á¹ñ7…mLJµ ûM´¶«åáÓœuSŒ<M_ð?íேþ Ñ|7¦Ùßý‡K´ŽÒ&xÁg ncݘä“Ü“T¼OñçöŠuðŸ„ôéK¿ÝÝ^]:G¬'ïÈA9bpN:u ÿÙX† Í}ñ7áå„õÍ'Âú[hwzž‘ýŠ×WVÒ^Çö2w;âi—Ìb×W X¶æi2űŠö èß¼{¦]ßXx&ÇìPÞÜX¤ÒØDv†C¼dg)½Xq§Œc>cñ‹áå§á¹ñ7…mLJµ ûM´¶«åáÓœuSŒ<M_ð?íேþ Ñ|7¦Ùßý‡K´ŽÒ&xÁg ncݘä“Ü“T¼OñçöŠuðŸ„ôéK¿ÝÝ^]:G¬'ïÈA9bpN:u ÿÙäøkày†ðf”Gýy'øWŠ|bøyiàxn|Má[qáíBÁ~Óm-ªùxtçTãO]Yý®ü1øô½ÿ¿cük–ñ?Ä ŸÚ)×Â~Ó¤Y.ÿwuytév°Ÿ¿!åˆÀPI8éÖ€?ÿÙtorrentflux_2.4/html/themes/mape/images/proglass.gif0000755000004100000410000000334011017132666023034 0ustar www-datawww-dataGIF89añæ³Òç­êþ·Ôò˜Îü­íþˆ¹ê¬ôÿ’Åû ÛýŒ¾ðžÔÿˆ·å¥áþ›Ñýмí–Â놸鈶è Åë°îý±úü…¸ç£àýžØþÁÙñ’Åü¦Éí½ê²òþ”À쑾éŽÄúÄÞõÀñÇÞõÃù–ÌüŸÙü¡ÛÿÃõŸÖþŽÂö’Èüоî°öþµôþ«èþ°ðÿ‹Áé¦êþ•Êþ¨æÿ¢Çì«ÛýŒÁó¡×ÿ“Àé»ç”Éú©ïÿ§äþœÖüÇÞó—ÌÿŸÜü„µæ„¹àœÖþ¢ßþŽÂò®àþœÓþ±þþ›Îÿ•Ìú‡µâ‘ÇùŸÙþÉàö‰¼ëÀöŽÀó²ñü£Ûþ¤Øþ Ýü¯äÿªçü×ýŽÈþƒ¸à­éüÅøšÕü«éü©äÿ¨äý‡³ë¸ÿÿÙûÁô¡Ýþ‰Àö•ÃóÍù«ëþ—Àè¥âýƒ¸æ£ÜúÄÛô¨èþ©çþÕþ¤Ýü§ìÿƒºß–Ãë™ÏýÆÝõ’Âïªåþ¤çü„³åƒµàÂÙ퇷ç!ù,ñÿ€~~O„o†??x#!ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯ˆˆ#´´†o´xxOÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåÇ¿5ëìíîïðñòóôõö÷øùúûüýþÿ H° Áƒ*\Ȱ¡C{"L·f ;v hÄXQ£Ç CŠI²¤É“(SެÈR¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ u™ñ"Æ£s(Uê¡iÓP¡r˜JU‡U ²jeÀ¤O&L„´icÁŸhÓª]˶m pÿãÊK·®Ý¸òêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžL¹²å˘3kÞü7>`ËZkö„œS«^ͺµë×°cËžM»¶íÛ’… ]vl›¼§q N¼¸ñãÈ“+_Μ³n1b$”­Sgp ŒEkß®=BYࡈåyó,Ò«g¡ ½û÷RâËŸO¿¾ýûøçŸßÏ¿¿ÿÿ(à€hà&¨à‚ 6èàƒF(á„Vhá…žGxDàᇠFZz='†wl±ÅàE·˜äñ·žz ˆ  8ÚhÄŽ;¢à# $$h€]$ÙÄÿ’L.¹Â“PF)å”TViå *d©å–\véå—`†)æ˜d–iæ™h¦©æšl¶éæ›pÆ)çœtÖiçw–¡g|7Øèžzæ(vX–`Ü•Fâ^i}&ÁXÔ á¡ž7c{8ÞPÆ>&©d“PÎ ª¨@”jê©wÜáÀª¬²ŠÄ«°Æ*+ Ôj«¸âêî¼òšÅ¯¿úú«¶{k®©&«ì²Ì6ëì³ÐF+í´ÔVkíµØf«í¶Üvëí·à†+î¸ä–kî¹w îº”P ;Ä/”G œ¢ ¥ž"¼§@zæ`ˆz±¥›¥,Ä °QÙE“Mȯ»ì°lÿ«°+G )à€C &„lB$›a²EXaE,·\Ä0_ÐÀÌ4×ÜlجóÎ<ÏŒsÎ<' ôÐDmôÑH'­ôÒL7íôÓPG-õÔTWmõÕXg­õÖ\wíõ×`‡2dˆŒÁÙgËA^xD««Vìn KÔ-1Ä]€Àe¿î=Þ€ë™Gh$©…£ž „ºÉºëÚk£”‹,´Ê+§3Ì>ÿÜÃç ‡NC¤Ó0:餿 úꬷîúë°ÇþBÏ´×nûí¸ç®ûî¼÷îûïÀ/üðÄoüñÈ'¯üòÌ×ìr'›torrentflux_2.4/html/themes/command/images/0000755000004100000410000000000011026130110021162 5ustar www-datawww-datatorrentflux_2.4/html/themes/command/images/messages_on.gif0000755000004100000410000000251511017132666024204 0ustar www-datawww-dataGIF89a1 æZxxxŠŠŠœœœ!ø PI|||4Ú#O}JMlJHHHIYH4í!AÛ1dddA«6FÑ8JÆ>PHD—;]]]F€@UUUFdCMMMû&ó”””ŽŽŽ£££*í/ä=¾0lll„„„///‹‹‹===BBB;;;{{{«««,ôwwwO¬F"ú ###¥¥¥&&&%%%¿¿¿222DDDJJJþ³³³ÿ9Í*eeefffttt¬¬¬P~KRLK[JOOOvvvCCCC®8>>>...­­­gggccc¤¤¤E˜<‰‰‰HfE^^^hhh(((M¹B;å*zzzGGGŒŒŒ''':::EEEÿÿÿ!ÿ NETSCAPE2.0!ùdZ,1 ÿ€-0Q„…†‡ˆ‰Š‹"E/2X‘’“”•–——&CPWX3Y ¡¢£¤¥¦¦V§¬­®  '« (·Y!¶¾!YÁ»¶YÅÐÆ±³XY VY Û <ÓVµÀÓ» »áÙYYVèÐÖ´Ó üèƲ@ñë‚Û*øÒP ¨x6| ˜`¡>l3‚›vDÜî Ñ$:wÔ²p âÂ:^HdíËæ¯ž¯]¾8T¨0Þ€Ž5óOÀ1ž¾.¾Z ê#²w§”V™JµªÕ«XƒøRò+U–)!€Ù³hÓª]Ëv-GH$i ®Ý»xóêÝ«wŠ!ù Z,1 ÷€ZZW„…†‡ˆ‰ŠŠ‚$‚‘’“”•%:–š›œZ*#¡¢‚TV S)RªZSS © ±Z´S ®R ©Z¸ RùZ¥§ZÌR+ƨ ³RÆ®®Ò ZSZS ZÙÃɦ‚ÆïáÙ ÈR)² ,̱ RñÈiakÊ|ûØ‚ÇPÚ®"4è Â;‰Ù¾Ó²À\Ü^ýP採¼s±\ÅZ€½qè1Ð,V8d.m’µ)â.p–JE1ÁS•>6áቊӧP£JJuj-(´ìa¥«×¯`Ê+vC-!ùdZ,,§€5„Zƒ‹ZŽˆƒZ’“ZZ¥9 ‚ ˆˆ«£ZZ²£ Ų¢5Œ7¥‹ÆZ¼Z7‹ÎÐÄàÆ«•¦ÕˆÆç²¸¡Z¾µ‰DÖù ‹ˆ‹($Û%!YJšé@I Âk#JœHQ‹¹J¹*jÜÈÑÉ?&!ù Z,,§€ S)R„ZSS ƒ ‹ZŽS ˆR ƒZ’ R“ZZ¥R+ ‚ R ˆˆ« £SZS Z²£ Ų ¢R)Œ ,¥‹ RÆZ¼Z,‹SÎÐÄàÆ«•¦ÕˆÆç²¸¡Z ¾ µ‰?Öù ‹ˆ‹ $Ûu JšéšBI Âk#JœHQ‹¹J¹*jÜÈÈ?;torrentflux_2.4/html/themes/command/images/admin.gif0000755000004100000410000000064211017132666022770 0ustar www-datawww-dataGIF89a1 ÕüŒŒŒ?]<ø(¼0›%ê"Ö|||‹‹‹(((///BBB===;;;%%%ÀÀÀDDD¥¥¥JJJ,¬xxx###á fff&&&www5ˆ,eee­­­ŽŽŽ222«««%ÊòzzzHHH''':::EEE!ù,1 ¿@ËÃD,ȤR©X42Ÿ“tJ­Z¯X¬ƒÁ1"¨°xLoeñ!Í®$¼ì8ª’ÛÅ%R'ˆk("ƒu!"h"(Šqy{'ru(u!u(Ÿ¢l“|l!†Ÿ!su§³‚µ¶i©•q™¡šœ²a´¤Á’zªiƒ(„¶ÂÐÅ”wÕÖd“ •%ÜÝÞßàáâá# $ëìíîïðñð  #úûüýþÿÿyè!;torrentflux_2.4/html/themes/command/images/profile.gif0000755000004100000410000000073211017132666023340 0ustar www-datawww-dataGIF89a1 Õá :s4ø(¼5ˆ,댌Œ,­û"Ö///(((|||‹‹‹===BBBxxxwwweee¥¥¥&&&DDDÀÀÀŽŽŽtorrentflux_2.4/html/themes/command/images/bar.gif0000755000004100000410000000555411017132666022453 0ustar www-datawww-dataGIF89adæž3Â=5Ä?¢4Ã>2Á< ™¥ £ š#²- ¤§" ˜¨# œ®)"±, ¯*7ÆA–Ÿ”)¸3$³.‘ (·2¡.½8'¶1ª%•&µ0+º5,»61À;/¾9«&©$¬'—-¼7’ 0¿: ›6Å@­(*¹4 ¡–¨$$³/(·36ÅA¬(+º68ÇB š/¾:%´/“¦!!°+!ù,dÿ€% C  C *)C/;,B'*C!3 D (2 ' #B4A2+ B8#;!9C:&B5/1(=!B)D4"0.AB,*2 0"‘*L` ”ØA C0V aà 6l¨haàÄŽ -é CÆFl¸`@ˆ0¬„Å ! 6˜(@‚8pàÓ„¢¡€K"#t øÀ@‡†!&°³ð¦ÞD0 … ÿ€°0ĉ =(¬R‚€|#A8ø€!ˆ%|h Ä:^جÂB… AhpÃĆ  @‘ Å7 ÜÐÄ„Dma!r„ˆ£Á*<0"€ƒå‚¸@Àa„‚0ø0áF5¢Ûb€Æ ¸È¸…‰~ .ä ¡B%dP\];œ0ƒ xƒQÂŒPÀ °ð@ À \°C|  ÁPÎ\ðÀ@0ƒÐÐA..°8¼ÐÂ7„‚ #TàÁ6qà Pƒ>ˆÿ%D,gx¦"h ƒDðœà g ᔥAá@Š(8 'tÉÀ¬è@`ÑPL–+8<ø‚!ÔuÐp€,h`Mu® 0R0à+àÀ^:ƒp & Yh&{`—>è¸ÐÔ ¸±Þ'É ¨À 0@>f —½À>¬|§ì<‚!”€ƒ@kM„ PÀº] ˆprïà;¾ä<àÃÂZ?„@k‰!AR•ƒÐ b#Õž º_À’´),3 €[0€& 8àôÏ0 à6`âVÙs–UL àDÁ  PÀÙDÐÓm@"Pð†+ÀCÐ3U¢ÀÑæÀó%;torrentflux_2.4/html/themes/command/images/noglass.gif0000755000004100000410000000115711017132666023350 0ustar www-datawww-dataGIF89aLÕ,,,zzz”””kkkžžž;;;KKK[[[‡‡‡[Z[‡ˆ‡[[Zˆ‡‡KKLžŸž‡‡ˆKLKˆ‡ˆ;<;<;;LKK‡ˆˆkjkLKLZ[[;;<ˆˆˆkkj[ZZˆˆ‡ŸžžZ[ZLLLjkkZZ[LLKžžŸKLL<;<žŸŸjkj,Lÿ@€pH,ȤrÉl:ŸP¨aJ­NM›j–ºv»VƒÌ ¾†MtØ+ ¸ßð¸|N¯ÛïvŠ£âp40 ‚"†z  Œ"“{†šz~"z ³´µ¶·¸¹º»¼»¿À¿Á%ÀÃ%ÁÀ4ÇÀÊÊ¿ÏÃÁÇÏÎÈÀØÕÀ ààã  #0-å3åà0 åôæîáîìä#ã#òþÆI'Ÿºâ~¸À@C$ 8TÂaC%:d‘DC/P¡$ !49q$•+bÄxR#ÈŠ)ØÉ³g”PØ@±3„‹¢?}*]Š”iPŸ!ˆu: ªÕ«X³jÝʵ«×® ¨X`A……'Ά‘!ì‰ @À…Á-Ù¸ "ˆ B"´y˘3kÞ̹³çÏ ?]cÅèFÇ8mútêÓ£S¿>°6êÙ¶˜Æ;vnÔ£ƒ;torrentflux_2.4/html/themes/command/images/home.gif0000755000004100000410000000064411017132666022632 0ustar www-datawww-dataGIF89a1 Õ(¼ŒŒŒûë:s4|||BBB?]<‹‹‹ø///(((===á ¥¥¥%%%JJJ5ˆ,222"ÖxxxŽŽŽ«««;;;­­­ÀÀÀDDD###fffwwweee&&&0›%%ÊòzzzHHH''':::EEE!ù,1 ÁÀÍÃD,ȤR¹P0>’“tJ­Z¯XìÅà14¨°x ˆŒÏè´:LAx×áN‡—H7<$ê‡}( |(" skwy't!‰ !( ((ž"a"vxzkr(r¬(§§°¦ }²jªj¬r˜šœ²Â²‰©’{s¬€‚¦­}ƹÈuרg ’%Þßàáâãäã# $íîïðñòóò #üýþÿ XC† ;torrentflux_2.4/html/themes/command/images/history.gif0000755000004100000410000000070211017132666023376 0ustar www-datawww-dataGIF89a1 Õ5ˆ,øŒŒŒ:s4á "Ö?]<(¼///,­===(((þ‹‹‹BBBëû|||;;;ŽŽŽÀÀÀfffwww222­­­JJJ%%%###xxx&&&)½L±àăRˆI²¤É“(O.Ð ÁA†'bÊœI³¦Í›6'`;torrentflux_2.4/html/themes/command/images/proglass.gif0000755000004100000410000000657111017132666023541 0ustar www-datawww-dataGIF89añÕœ • ͇ ª ê@Õ9ÆN¿ UÜ€ jãñøŽ \¸ xc+q2#G£ ÿ± !ù,ñÿ@N#*bD#²(:&›KåÓɤJ«Qè4kÕb·à¯øJö–»h®:|^Íð4;înÏåo¼=_§ßûz~|„ƒ†e  L‰‹EŒŠ‘Ž"  L #˜Ešœ•›™#L L §©«Eª¨E L ´± Lº¼¾E½»ÁÀ"Â¿ÃÆ·µ °"¯¥£Ñ¤—™ÖÕ” !”!…E##"#äæèêç"ïñóõòôðùø÷ûþö Tø'`…Dq0ᆠ"Œx0C…G„À¨P#Ç3nù1dÇ‘'K¢¹Ò$K•0IÊL9óeM—8[êŒI³§MÿŸ9yþôæN£B‹=º4)S¢O•BuJ©Õ¦WYbˆG¡Q¹®Š¾z57l±’:…RûÉS& ÔD˜ŠK Y*»®ð>›UkY.\"lÜw°ßÀ‡ ÿ-|×ÙÜRpE}‚ô(¬9oÊMÀlÏc<ã20p€‚£%˜Fm@„Óï\Ã6ð`Â}µo¿ËÛvï!„È-‘øAãÃ?®¼xsæËƒo$€À£ª_Ïn;õîÜ·¯Ý{ùðæÁOO^ýùõèãßÿ¾¾ûûíó³ß/ß¾þþøñG_€þ7 þ ˜` x`ƒ:¸àƒ VH!| < ³H°ÿa‡>àaŠâˆ%*··ÐKº¸¸Œ²°Lp€8R°ã L@ÁÕ)O‘_=@ÀIfØ$`$L”SJÉ‹•Á`X†µ8iÎ^RP¤ð˜ã8ê8cŒ!*Gb3Qb0Â)`b¡yš„p‰èy£%z6Pk0&73†ph¡Š"ºÍ¢‰Bêp,NúÍŠÒUš)¦”rz©¥š 7£F‡ÎIêFr6jªª©–Ú*ª§®êj¬¯Ê +«´æŠë®³òzk¯Àþ*¬­ÄÖj¬®Á‹ì°Çúª¬³Í&-³Ë>+mµÓZK-´ØvËí·×Bkg £bWèvçš[ÿîé²»€&Øý9œÊÉ"¦pøÝ›Ô%ðf†þ¨¡-{¸¦‰ïÞ"Ö§Dë\ ´Ñ,­´p! µÔQSuÓSc]µÖW/5¦dPÀF!„=¶Ff“6Úb«Ý6Ûg—ý¶Üq¯M·ÛuÏm÷Þz÷÷ßx·àwnxáˆó øáŠÞ8ã~;9ä‹'>¹å•?޹ä™_®ù瞇ÞùÙÁE ŒPA¨£S@:© ð:»®Ã^ÿ;»È.€ÌX³Ø@P(ÎÂ×E¼  H÷§òÕ)jÀ’°½ô` °GR&€}”Ûk¿Qö݇ÿ}”ÖW?Úw™¼¨6?#ð»¯Ø;‰«_dgгædž€ p¨r ÌÀx@á@p %ØÀàLgˆ@1¨Áœ=°ƒÜ 8x„&Ä OXB*ªD (Ã6͆3´È i¸Cæ°†<üaèC1ˆG,"—¨Ä&ñ‰CŒ¢§˜D(R‘‰V¬¢µxE'n‹_ôb³Æ1†‘Œbä¢˸Æ4²q€ âè?:Îÿgý»£òèÀ<ÐtMÙòg4Ó¤Oø;$CX׳սCNX3U$åD<ÜOf8ûÔ¦@å©Pi’R$ʉ.9J¤Í‰¯k$#¯S¿Bæo4ÅG ‚±(d]" °¼Œ@þ€ÙËaÓ˜Å4]0ý— 8“™°€ )MjN³Ѽf3«‰MnnS›Ù´¦8ûgiràœÎÔÀ99Îu¶Îtg<á©Nzʳžìœg>ñùÎ}ÞóŸö ¨?ÚÏ‚êÓ ü<¨BÊP€ô¡uhD ºP‰V”¢ ŨE3 Ñ‹v”£ýèFGªÑ’ŠÔ¤íÌ€# A•²t€ÿ` c*S˜Ö”¦(Äé9‡ Áø´§?U©OÃ&ÔÕåQ†€$šìòçÁ¤â̧Á{!ë XªRÕª/Ä*ð´ZÕ¨nÕ«]­ð|ÚÔ˜võ¨UíŸØ~z@žî4¦ëd&K[JƒJs®å¼k4ËÉÒh:Àéü+`)ØÀþUš,bÀ䕱Ž-'dÛXÊF6±••lf1{ÙÉ–“ u,cAÛ€± @Ài£™ÚÕZ µ¨Uml] [ÖÊÖ¶´½íku[ÛÝæö·³ .n…ë[âöö¸¼M.p‡ËÜâ6¹Ëu®t¡k\åV7ºÔ}®uµ‹ÝíN×»ÙýnwÇ{Ýòr×¼¾Uÿg”p½í}/{ÝKÂùÊ7¾õm¬|{@0ÖýM,€(àr@ÀÐì0£éËÕS—–/9 CV¸„¦pÓ,¼a wXÃàpˆ=â^BXš ®fØ,@ 0`Àþåo!û^€€%Ô€ÐKç: @€h,äű P€’‘¬€Ò2ÙÉŒm²žlZKùÆ ¸²•K‹e-g™Ë[®ò—Åìål X6s´¢ Íè@;ºÐ&´¤ÝhH[zÒ‹Ž4¥5éKoÚÓÆt¥ÿEÍéQšÔ 6u¨OÍêU»ZЦeì‘ed$Ïš·Îu‹Õ浑…m9åŒÚKSÇ7î¥h\ß¿–ðÀŽ p´ \ÎW›Ú0Ϋµ³}íw[Ûvì~ÝËKÐò¸Ünží¯}mäZGÙÉaNó æ^Óû̽VÀØd}óÈûÞ@¿÷íÒ®ùo²nð…'üàwxîpŠC|â·ø6~æ lüp&8›7 r’—œäH¹ÉS>ò“»œå+W9ÊeþršÃ|æ-¿yÍsnóžóüç1:΃Nô¡}çEGúÑuÎtŸ'½éBWºÔ¡þt§/ÝêSÇ:Õ¯ÿõ­g½ëZ§¹É•Üd8“Îg7»’Ѿvµ—½´m/m¾åžo%«ÈA–3‘±lïÛØÍH¼hÍ=xÐæÕ܇7ügïbÆ#~ñ/†|âûW9›;µªµqßÝLv{w~îpo2ÉélrÒûœÍ)G8ê?ÎrÖ/üã°ýfÿñÙÛ~ö¸ýr{ÞÛž÷À=í…?€àï~øÇ/>î}ÿæÛ~ßø>€ðèO¿úÒ§þ³ýëoßûÖ×~ø»/~î¿üà7ÿøÏOþö³ÿýë¿úçŸþú£ÿþî—¿ýóOüÿÿü·ÿ'€ú瀀˜€¨€¸€øÿ¹grÏGrèqÅgrÁw¸fÖ'‚p¶q—p ÀrÇo©pwWovFf`6fTVƒï6e7hƒIe;ˆƒ;ˆf6ƒ`rwpý&qWp%¸ûv|¨ç„)×|÷§|Ù§|p…¶w…€{@Ó·{]8}ÍGd(…dHfH†Ó×…j(}g¸†oè†mȆ^(‡uH‡p8‡qÁ÷g˜{~X†»÷‡ƒ(ˆˆ†…ˆˆ‡ˆ„¸ˆ‰Èˆ†Øˆ’‰”¨ˆ“h‰•‰˜¸‰šØ‰ø‰ŽŠ—艢˜‰ 8ЧhŠ¥È‰©ÈŠ«HЍøŠ­‹ª‹¶X‹¸èŠ·èŠW˜{ÿ}ø…¿è‹`(ŒUŒÅ}Í÷qRX}¶ÇrÍ}Lèqgfg,×pÿæopÙXo½æ÷ÖöŽäˆoßhŽC8z —rtæp÷z¨z`{Ìè‹}è|³§…\X†c¨†Wø†ÿèxH‡gXy™ ¹ Ùù‘9‘Y‘y‘™‘¹‘Ù‘ù‘ ù‘b¨…RH’Íg’Ò׋'©’)¹…`ø…\h˸qÇW{´—zÅ·zGrWutorrentflux_2.4/html/themes/minimal/images/0000755000004100000410000000000011026130103021174 5ustar www-datawww-datatorrentflux_2.4/html/themes/minimal/images/messages_on.gif0000755000004100000410000000342411017132666024214 0ustar www-datawww-dataGIF89a1 æÉÉɤ¤¤ÝÝÝ………šššŒŒŒSSS|||777¸¸¸ªªªkkk¡¡¡ttt:::uuuŸŸŸ‘‘‘¯¯¯ÚÚÚzzz§§§yyy’’’ÑÑÑ‹‹‹888†††àààiiiooo˜˜˜···ÖÖÖ}}}ÁÁÁ€€€©©©–––ÊÊʵµµ555   HHHbbb³³³111lllVVVÈÈȰ°°hhhggg@@@¹¹¹CCC444âââvvvaaa___{{{ppp‚‚‚¢¢¢ááá“““~~~‡‡‡```jjj«««mmmÞÞÞ›››¥¥¥BBBAAAœœœžžžUUUŽŽŽÀÀÀTTTdddeee999fff™™™ccc!ÿ NETSCAPE2.0!ùd,1 ÿ€0+\„…†‡\„ŠŠ‰ˆˆ9U:-UYYU—˜˜›™œ—›ž£Ÿœ™2U=A._°_Z±°³²µ´¶´·¸Zº±Z´[¼²º¿À¸»¼¿³[ Y_TÚ_@ÙTIá_ä'ÞX Ù[è'_èÒÔÖ _&þ™(°ÁÞØ<|ðP‹o?¼ÁòÊ—´ðð,Xîí#vÍ“ œH÷¥€„ A¨¡åC8*NÊ ðEE¸<ÈÑåµb:u(pÄžLÄBá– '¥¦BåaÆM$©zõ€Q’? hIjD8«árN|ø°’烕T.h)  Ü5–úØ×Ê™agËx}ˆ²Î¢2cÓ o™L¹r—Ê[.gÞ\ÙÆ‚Nð˜|Y3éD„Üð‘‹+®AÊ {öìÚ¶iãÆ rÄ Y,xñB øðãÈ“HÎ|øòçÇ—W1#!ù ,,Ö€ WT„_WW ƒ 1$‹_ŽWˆƒ[—T_žW[_X§XT(  4‚ TZ$_ˆ( ¹WZW _<_$¥ ÍTT“_TW³4Z ‹ TÎ_Â_‹W$ Ú]áᬠ X X¨ZÎõÐ Z·q£öMŽc@Þhº{r"³Õ€n.s‚€x€3d…tm.8.81+™0™ 101˜m‹6/ˆk7 8 .8. ›–¼ ££¾ˆi‹¬xiÊ7µ„¶›0Ó› ÀÕ¨8ÆŽ‡o1uµ¸š¢Õ¢¢ چ܌~sz8 ..µ¤(çíè1ײaÛoÕ 6ʽˣp^B…ðœ`E‹+^Ô¨£ÅŠ=‚ ±D $>dÁRF–/[º„ISæÌ™/è´érB 4DT¨QCÑ£H‘MÊ´éÒ¢D/tp;torrentflux_2.4/html/themes/minimal/images/profile.gif0000755000004100000410000000105611017132666023350 0ustar www-datawww-dataGIF89a1 Õééé»»»ÒÒÒŠŠŠÜÜÜnnnããã^^^®®®ÈÈÈ”””ooo“““¼¼¼íííèèèÇÇÇ‘‘‘ÛÛÛ’’’€€€___222‚‚‚ÓÓÓ111­­­ŸŸŸEEEQQQ   ªªª:::ÉÉÉLLL‰‰‰cccxxx<<³ÛnËD¡ÐEÔl‹Â“ÁÑomo9ƒg3 <8g“kk:199 =91= 9==r9ŠŒ}g9:º=ug=¢g=¹1©®®: =6¶2::ˆÝ¸= ¡kÏkÑà=11ÍÍÝž9×Ù }l®ððúÄ´b ÓYÏtø6 †1jÙùÙ+žŽI€àÉ SRIxM‡³˜Ù»µ&M 別r#èžE÷ṵ̈Á“çŒKDØØ9”‚Ÿ=‰&ýÙÓ'S0ÀxÑÂD«4®j¥Á+ׯZ½ŠÅ¶ÆW Và(Aâ†Û·¼u+îÜ»toÔ­{—ÅA;torrentflux_2.4/html/themes/minimal/images/messages_off.gif0000755000004100000410000000111411017132666024344 0ustar www-datawww-dataGIF89a1 Õ€€€OOO^^^nnnÒÒÒ|||ãããÜÜÜŸŸŸéééÈÈȼ¼¼DDD‘‘‘oooèèèÛÛÛïïïÇÇÇ®®®íííiiiEEE:::111zzz°°°RRR   ```³³³KKKªªª’’’<<<___JJJ222444»»»âââPPPNNN}}}CCC333MMM!ù,1 ÿÀLF&K‹)#rÉTÇc’HMa.(RŒëz¿^.L.—&K*6k¿Úð7ÜMŸÇíö·üµÑ¬ñ/zr3y„w{wx,0.2l-+*“3+++š 3+ —*3 3šŒ- 3/**3‘%*×-3Â/-+3/*²·kÔà */äª+¤*+É»š*-Ã/Öšð9‚4ìž8 ² x€`†{—´X€àÅ"¸²–@/-"ŽhôhƽäÄÍ  é’¦@Ðä*ÁŠf¨°i­E:iRx²(0ÐPœAŠÉÐPÀ4£/4JÁ`F€,²²Àªµ+ׯ[µø`À@‚\½níàÀ†`È+·À\»0ðÒÝ‹W¯ß»Dp¸`Aƒ‹Ã-\$VÌXqâŇ3†Ü8r‹ÇŠA(;torrentflux_2.4/html/themes/minimal/images/progressbar.gif0000755000004100000410000000023211017132666024234 0ustar www-datawww-dataGIF89ad³ÜÜܼ¼¼»»»×××···ÚÚÚÙÙÙ¶¶¶ÿÿÿ!ù,dGÉI«½8ëÍ»ÿ`(Ž`Å©ƒê¦h³í Ç®m§p{ëtorrentflux_2.4/html/themes/minimal/images/bar.gif0000755000004100000410000000143711017132666022457 0ustar www-datawww-dataGIF89adÕ”””ÛÛÛ»»»ŒŒŒ¡¡¡ÏÏÏ›››ïïïÇÇDz²²ŽŽŽ´´´ãããæææüüü£££ÜÜܨ¨¨‡‡‡«««©©©†††“““ÚÚÚ¼¼¼³³³¢¢¢ÑÑÑšššñññåå寯Æûûûÿÿÿ!ù,dÿ@‘pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïèô9Ä~°ßð÷ïÛïô»~Ÿ·÷õ‚„ƒ‚…ˆ‰ƒ…‹‰‡ŠŽ†˜—•–˜‹‹¡  £¤¡¦¤ª§ ¬«¨ ¢¬´±²¢·¨ª®º ¦µ¨ÇÅÉÆÄËÆÅÈÄÏÐÐÇÒÈËÄÖÊÕÊÛÒÓáØÛÚÑÊéêêéîíñëòñðõòìë÷îùüíüèéë·O =|ñ€‘@¡B† #.|‘¢Ä‰/Jl¸±"DŒ5ŠÔØ#H…2dH¹r@J–/cª„é²åÌ™,UÚÌ s¥Îÿš:ö”éó¦O—@ƒfÐÀTÓ¦O›:e ª§U³F}е*N§^Å–*U Î^= µ-Y®PÙ2µJ¡n…ºvïê­À—/…»ýö¬7/Þ½†ùJŒ·±Ý¿‡!Gî+9p`½ ØÀBæÏœC‹½ytiÓš7C(­4çÖ§_‡Žýº€çØ©soŽÝ¡÷ÞÀ} ïð[øïãÃΜ¸ïåË›W=:påÌS×~@÷ï¿@~|wñáÓ{ožýyïåÑË_o|üùåãçWO~þ €€ àŸ$øŸ6ÈàƒX` þ·à€*¨!… t<`ÿHàb˜ ˆ Z ¢°Ø¢Š-Æ8ÁŒ2²hã1ÚH#Œ0Ò(ãŒ.®(dŽ@¾X¤‘/®¤Ž/;torrentflux_2.4/html/themes/minimal/images/noglass.gif0000755000004100000410000000145111017132666023355 0ustar www-datawww-dataGIF89aLæfffyyy•••éééÿÿÿÙÙÙoooÿÿÿ¥¥¥¶¶¶ÈÈÈ÷÷÷ÈÇȇ‡‡‡†‡÷ø÷ÈÈÇø÷÷¶¶¸ÿÿÿ†‡‡‡††÷÷ø¶¸¶††‡ø÷ø‡‡†ono¥¦¥†‡†¦¥¥¸¶¶÷øøÙØÙ†††¸¶¸ÇÈÈ¥¥¦oonøøøÙÙØÈÇÇøø÷ÿÿÿÇÈǸ¸¸ØÙÙÇÇȸ¸¶ÿÿÿnoo¶¸¸¦¥¦ÿÿÿØÙØfffffffffffffffffffffffffff!ù,Lÿ€?‚ƒ„…†‡ˆ‰Š‹ŒŽ“”•“&•™”›“–2– —¡&¨¡ž2®¯°±²³´µ¶·¶  ÂÁ"ƺ  Ì"ÍÓ»ÆÁÚºо"ϺàÁóôõö÷øùúûüûÿÿyX€KHÁA€ þ{80àÁ‡Ĉ "À ?€™àB‚0Z”œQ¤ $””@Ó¤Ë.Y’1ò™>GJ)§Ê"‘~¸À@S$ 8UÂiSW¥:e•DS/P¡,M!4;u,µS†«bÅzV+تiØË·oPØ@±7„‹Âý*^Œ˜q`¿!v< ²å˘3kÞ̹³çÎ ¨X`A……'N‡‘!ô‰ @À†Á5éØ "\pA´(¢.%º©S¦H›&%Zaă ;torrentflux_2.4/html/themes/minimal/images/history.gif0000755000004100000410000000102511017132666023405 0ustar www-datawww-dataGIF89a1 ÕÈÈÈ”””éééÒÒÒnnn®®®ŠŠŠãããíííoooÜÜÜŸŸŸÛÛÛ€€€___¼¼¼   èèècccªªª‰‰‰ŒŒŒÉÉÉ´´´888<<<­­­‘‘‘’’’QQQKKK;;;111FFFïïï‚‚‚^^^JJJxxxyyy~~~}}}000ÇÇÇ|||222•••“““»»»OOOzzzCCCâââ{{{PPPDDD‹‹‹444NNN333MMM!ù,1 ÿ@ÖkG,ÅrÉ<†F¢Mmš«Z«Ôi {ín»`,hÑ«ùÎhôã¤}¼w¦Ãßõ7oåÙ™ávv2ytvp6x€h†Œg8ei‡>6 >‰66$-< Ÿ› 6 gusp’9Šg> „‰ < >„¸ g nz3‘“wy–Å»¹ œ>s‰‰q2 h²eæiƒÔÛ„&6<‰Ä–¸Â>÷•>8*1~ôÜaÇ.Q$ø àÆ 8Ár £’g³já9k%@"6:Í Ž“(Sžœ‘r†K–8`¶Ä‘Ì›,?”€¡áŠ2@oÐJcèРG…*š4(R¥Ei¤pQ!C thÕ`«W®]¿Šë5¬Ö ;torrentflux_2.4/html/themes/minimal/images/directory.gif0000755000004100000410000000106211017132666023711 0ustar www-datawww-dataGIF89a1 Õãããééézzz€€€®®®ŠŠŠ333”””^^^ŸŸŸÒÒÒnnn¼¼¼ÛÛÛÈÈÈ“““èèèooo___ÇÇÇ}}}ÜÜÜJJJ222íííïïï‘‘‘   ’’’ddd:::¯¯¯xxx<<<999ªªª000EEE‰‰‰ŒŒŒ´´´LLLqqqQQQ­­­CCCOOOâââ»»»PPP‹‹‹{{{DDDNNN444MMM!ù,1 ÿ@&G,Ȥrù9aD°Û-*­Z§VªöZ¥b­É¶Ò™Ï„‚î3·Ïï7€«ÇÏn8®ÒÉÁàg/3uxnm‡f3/…€xo4~…2•3:2˜3—: 23‹3:3jfc:‡—3ƒ™ 82 ¡»: Š ™ : j : ¸oŠ:‚˜:¹22݉/‚m™ ‹:Ôg1‘¸gǽÂáf8$Ø…ã…‚e2p8ƒ¶Ç Ùƒ0)s À‰Ó±¡…\•,LP]¬6˜! ¡ÐÄ1oåŠéHf®Ff,8ÔÆÞ­O?4b¥1t¨P¢1ŽEÊ4)S °JµÅ$.„°Áµ«^¿Š K–+X°fèPBÅ (j¨A×À\ºxåæÕ»·¯_»5R¸x;torrentflux_2.4/html/themes/minimal/images/proglass.gif0000755000004100000410000000570211017132666023544 0ustar www-datawww-dataGIF89añæYYYŽŽŽnnn ///***ƒƒƒ;;; pppccc!!!666   ZZZCCC===ˆˆˆLLL@@@+++œœœŸŸŸIII555NNN)))ŠŠŠ‹‹‹ qqq[[[™™™zzz“““˜˜˜:::%%%UUU{{{EEEuuuBBB………000‡‡‡111OOO---”””444ooo•••’’’$$$333FFF‚‚‚‘‘‘>>>GGGfffSSS\\\```ggg^^^]]]222 bbb???...999___rrrTTTKKKttt&&&HHHVVV<<[í³ÚVkm·Ù^-·ÜZël+¬ +Ðàî (Ä‹ÂòÒKŽT@¡ï½ú€jü 0Àþ‚J•‚ÂK…`Ãe„%ñÄa‰`AÿA\Œ±w¼1Ç"á#ÇÀÅ(§¬òÊ,³|rË(³14Ë<ÀÌ8Ó|sÍ:ó|óÏ3÷´Ï2½³ÑB÷LtÑK]ôÐ<7õÔ;CÍtÐ?+]sÎMsÍôÖ`[M5Ødk=õ×QgöÒeëŒ5ÎbŸm³ÜcÓÝöÐPcíöÖjÇM÷Û_NõÑ~ÛýôÜ|íuÚRÓL¡K/=yK/M^y°t³@sÎyæ( 0! -‘nz¤—ŽÂ Üຯ».ûì7À~à ·ãž®»ìöÞ§û»ðíÏîïóÆK¯¼Ì/Ÿï¾ÏCA…VHaýõ×Ë ýöNÈ€„ N„/¾ÿHïÄ N,°À ë«Ï¾úð!ÿüô×oòÉø¯ü?ðCþ‹Ã8@ðqHàHðƒ80$x 'ÁV°‚´ A`p` $XCè¯Ì„( ˜ÀJhBL`#$X eøBÂP…á UX0âP‡+Ìa ƒèCÎp‡B”!oÃÞ0‡$Ä!…øD*ÒІW„b«˜ÂŽÐ‹`üb }ˆÂ*‘‰.4£¥HÄ'ªñ…U4b¡¸Â:’‘…X#¸Æ&šqH Ȳ‡¤"©H@r4$!9Ò’—¤¤&)é@v2ÿt@(³QšÒ¥<%*U©ÊT²2•®d¥,ciJ˜a{¶ÄåöFpËÈ`=¦z0•§På˜È¤ Àƒf6ó Î䤩jÆ¡š¸&6³Y„¡›Þü¦8Ã)Î"<àœèL§:×y‚vºó í„'E‚Pk@T$Õ¨EM*ˆŠ$,5 ƒSkðÔAuEaÿzL®ru`f0à ̰võ«e%+XÇ:-˜u #X‚–@W¹ÚU s¥«x°hîšW,KM \á<¨@ÐÆžÓ€&;YH¶²”Íìe;@YΡølhGûYÑ‚v´§åÀiW»Z¨6µ }-i3ë#Ôv²¶¥­lkÛúö·À .p(Üâ÷¸ÈM®r—ËÜæ:÷¹Ð®t§ ]âR÷ºØÍ®v¸]ߢL0S™À»2ò~÷»ä¯yÕ{^öŽw¼çUð$'=©¾J‚Àô»€3Àï¿°€ìß~P_‚·Éà3@ÿ@a Wx®0°á À 1FLâ‹Ä`@VÌb8ÀÅpñ‹_¼b×øÆ1n±Œm¬ã ?^qa<䋸Ä&&ñ‡•¼d€Âmˆ²”£,á)gXÊP¶²•-¼e,k™ÊUÆr˜'Ìå.9ÃYs•-Ìå2™ÌTÆpœ» f9¿YËk³ž§ìæ;Ë™Íd>s™³Ìç+‹9Í‚V³ÿ|æ:ûYÌo4ž'íè5{yÎ}³¢½Üh:zÎwîtœ éB/zËøÀšÐU·ZÕ°Žõª[ÍjV»ZÖ¯–u¬gð|Mh°- ƒÛ²Ã6¶±cÿЂÀ ÐŽÈíjW›dH@ ´ÍÁ vû‚ô ¿ÝA–[ÜÌ`Ûv·m&ó\KïzÛÛµ à’“lŒx ¸ æ0¼à/8æP„Üá¸Ä'NñŠÏ¡s ÀÅ5N€ŽW ÿxÇ r‘“|ä OyÊQ~ò–ƒüä)·1e.óïøæ7¯1ÎwŽs›ó¼ç3§ùÏ…îsÛ¼è@ŸñÎu¾c¤/]èC7úÏžsŸ[]é9ŸºÔÎó¢#ÝëL×zÒ£Þô¨S]êeG;ÙÍ®v¬Ó¸ík/ûÙÝt¸¯}É!6rÞÌw™ïMþð °ÿÌàðˆßâ¿Å'þð-˜A ¶€ì [ØÉƼ°ƒ6ÀàÂPÖ°†+èѳYÏ¡ßóéÀÖs`Þ÷†}½}À,øÀö¶÷îwïø`X(xðNñ?á'¾Å—Ïüæ;ÿùоô§Oýê[ÿúØÏ¾ö·Ïýî{ÿûà¿øÇO~ëcœã#O¿ú=¾þ‘_<ã €æðaúÿýþ÷ñÞÏü÷ýÈÿ‡º—{·‡¶G>À~0÷rïW~ø€8Xx˜¸q hr!×~ê·r"ør!h‚×*¸‚,Ø‚.ø‚0ƒ28ƒ4Xƒ6xƒ8˜ƒ:¸ƒ<؃>øƒ@„B8„DX„Fx„H˜„J¸„;torrentflux_2.4/html/themes/chrome/0000755000004100000410000000000011026130110017554 5ustar www-datawww-datatorrentflux_2.4/html/themes/chrome/style.css0000755000004100000410000000737711017367654021500 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #000000; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/chrome/index.php0000755000004100000410000000051111017367654021425 0ustar www-datawww-datatorrentflux_2.4/html/themes/chrome/images/0000755000004100000410000000000011026130110021021 5ustar www-datawww-datatorrentflux_2.4/html/themes/chrome/images/messages_on.gif0000755000004100000410000000251511017132666024043 0ustar www-datawww-dataGIF89a1 æZxxxŠŠŠœœœ!ø PI|||4Ú#O}JMlJHHHIYH4í!AÛ1dddA«6FÑ8JÆ>PHD—;]]]F€@UUUFdCMMMû&ó”””ŽŽŽ£££*í/ä=¾0lll„„„///‹‹‹===BBB;;;{{{«««,ôwwwO¬F"ú ###¥¥¥&&&%%%¿¿¿222DDDJJJþ³³³ÿ9Í*eeefffttt¬¬¬P~KRLK[JOOOvvvCCCC®8>>>...­­­gggccc¤¤¤E˜<‰‰‰HfE^^^hhh(((M¹B;å*zzzGGGŒŒŒ''':::EEEÿÿÿ!ÿ NETSCAPE2.0!ùdZ,1 ÿ€-0Q„…†‡ˆ‰Š‹"E/2X‘’“”•–——&CPWX3Y ¡¢£¤¥¦¦V§¬­®  '« (·Y!¶¾!YÁ»¶YÅÐÆ±³XY VY Û <ÓVµÀÓ» »áÙYYVèÐÖ´Ó üèƲ@ñë‚Û*øÒP ¨x6| ˜`¡>l3‚›vDÜî Ñ$:wÔ²p âÂ:^HdíËæ¯ž¯]¾8T¨0Þ€Ž5óOÀ1ž¾.¾Z ê#²w§”V™JµªÕ«XƒøRò+U–)!€Ù³hÓª]Ëv-GH$i ®Ý»xóêÝ«wŠ!ù Z,1 ÷€ZZW„…†‡ˆ‰ŠŠ‚$‚‘’“”•%:–š›œZ*#¡¢‚TV S)RªZSS © ±Z´S ®R ©Z¸ RùZ¥§ZÌR+ƨ ³RÆ®®Ò ZSZS ZÙÃɦ‚ÆïáÙ ÈR)² ,̱ RñÈiakÊ|ûØ‚ÇPÚ®"4è Â;‰Ù¾Ó²À\Ü^ýP採¼s±\ÅZ€½qè1Ð,V8d.m’µ)â.p–JE1ÁS•>6áቊӧP£JJuj-(´ìa¥«×¯`Ê+vC-!ùdZ,,§€5„Zƒ‹ZŽˆƒZ’“ZZ¥9 ‚ ˆˆ«£ZZ²£ Ų¢5Œ7¥‹ÆZ¼Z7‹ÎÐÄàÆ«•¦ÕˆÆç²¸¡Z¾µ‰DÖù ‹ˆ‹($Û%!YJšé@I Âk#JœHQ‹¹J¹*jÜÈÑÉ?&!ù Z,,§€ S)R„ZSS ƒ ‹ZŽS ˆR ƒZ’ R“ZZ¥R+ ‚ R ˆˆ« £SZS Z²£ Ų ¢R)Œ ,¥‹ RÆZ¼Z,‹SÎÐÄàÆ«•¦ÕˆÆç²¸¡Z ¾ µ‰?Öù ‹ˆ‹ $Ûu JšéšBI Âk#JœHQ‹¹J¹*jÜÈÈ?;torrentflux_2.4/html/themes/chrome/images/admin.gif0000755000004100000410000000064211017132666022627 0ustar www-datawww-dataGIF89a1 ÕüŒŒŒ?]<ø(¼0›%ê"Ö|||‹‹‹(((///BBB===;;;%%%ÀÀÀDDD¥¥¥JJJ,¬xxx###á fff&&&www5ˆ,eee­­­ŽŽŽ222«««%ÊòzzzHHH''':::EEE!ù,1 ¿@ËÃD,ȤR©X42Ÿ“tJ­Z¯X¬ƒÁ1"¨°xLoeñ!Í®$¼ì8ª’ÛÅ%R'ˆk("ƒu!"h"(Šqy{'ru(u!u(Ÿ¢l“|l!†Ÿ!su§³‚µ¶i©•q™¡šœ²a´¤Á’zªiƒ(„¶ÂÐÅ”wÕÖd“ •%ÜÝÞßàáâá# $ëìíîïðñð  #úûüýþÿÿyè!;torrentflux_2.4/html/themes/chrome/images/profile.gif0000755000004100000410000000073211017132666023177 0ustar www-datawww-dataGIF89a1 Õá :s4ø(¼5ˆ,댌Œ,­û"Ö///(((|||‹‹‹===BBBxxxwwweee¥¥¥&&&DDDÀÀÀŽŽŽtorrentflux_2.4/html/themes/chrome/images/bar.gif0000755000004100000410000001521311017132666022303 0ustar www-datawww-dataGIF89aæ·²­¢™”Òýecj¸¸³òãÛª¢þÿû“ŠƒRRNŒ{ÖÉÃÕ×ÛäçëtjfÉÒÚZYaçÛÔÆÌÕ±ª¥Á³­ÈÈÄž—‘kjrÙÝãb^gýòêíò÷÷êâŠztÿýô„qm«¥ ¥—ͺ²¡–’³¡•ÚÑËÝá让£„}ãÕÎéí󳮩{vrub\}pl„zu‹~xĺµ§ šª›’™‰ÄÉÓöúü¨—ޙމ”Žœ’©žšÒ¾¶uqeTO±¥¡­¬©ðõù»¯ªáËÄš‹…À¶±‘‡€ÍÒÙÉÏØÊÐÖÇÎÖÅÊÓľ¹¸«¦®±­‹„‚mhïÞÖÊ¿ºK20ˆupÀŰ´±ÌÑÛ…}xñóô¹¾»¯’š’‹ZC>þøïÇÐØ–†ÍÔÜ¥¥¡ÆÏׯ¦ÍÎÊ™•Ž—ˆààÜðîéõ÷ö¡‡ÐÕ×§¨¤¯Ÿ“˜‡È·¯›Œ?$'ÅÍÍ©¯®_^XíÖÎËÔÜËÓÛGGG}gaÔÙßyn•xwolÿÿÿ!ù,ÿ€J‚c„_†‡ˆ‰‹ŒŽ‘’“Žx–—˜™š›–”‘‰‡„„‚¤¥¦§J¢ª ¬­® ¢‚³´µ´J_IIGGa¾{ÀÁÂÃÄ ¾Gº„¶¶ƒ¯ˆ“œÑÒ˜žÕΉª±¨¥Ú…ØÏÖâ­ÛËçè鵃cÎHÓñòóœãŒàøáÕñwýþÿ¾ H°à?zõì=p5J–ºsìÆèz°¤†Å%1Bäv ‰Ç CŠI²¤ÉWRª\É’åIDH:´•±&F‹8sæ´ÉÓæCu=ƒúœ%hWÀ0(Å`ÂDƒ§ THÝ@Uª ¨M³.Ýcì ’YB—0ãve˳h½š„S&G aÿmêœ[#,:ŽeIÂÜ6³VXºuãÆ ,öVª1&Ó*^̸qJ½‡ÚŽ)õ³2ÇR%«DhI³ç–k#·¥|N°Î¡Jtí:† 6aŽ\I‚¤¯àš€sëÞ øva¸¾ƒg\VJµq^Æ“ÓþxªòCR´uñêÅ鞥LM¨Ø ÆÆ?l RÕêTªÆ·Á~<úõ6þü¿ájƒ¦ö„™­„–ð¡Î-óŸ\¼ÑÕÓ:E7Ý‚ .¨šG¤ø5 i87–H¬v”uIaçá‡ØýåÛF—¥øV€4·Û„=í a!–×!iƒÊC0 Ftn( ˆÙ9%ß|푇Þÿ{A°ÇÞwò…gƒJšÕ•Xf©å–\Þ—Õ—D†)&v_B%UA¨ÑwG:馛TªçÞ’KÊiçxâIgyæõið)è „jè¡òÑŸ“HNY¥TX} 昔*UæSS¡¹&”ˆ*e’J¢ççy{R•' vºÉ©“qÖgŸ¤°feæ™Y¨é”ŸÎÉç¨Û¥·(§†:™ª›HÎiU¤“*%LuÌ6ëì³ÎC̘—FÕkØÚê$°‚gœYìŠe¬ø)Ë•@Ó¥Ýr)']ƒ¬…áZuÓVZ¤¬³^[«¶·ú¦xêÑÉ+¯tkðÁ'¬ð 7ìðÃÿ„ &ì¡DÿZXAÇÆÓa…ZhQÅl`Ð@§¬òÊ,·ìòË0Ç,óÌ4×lóÍ8¹À<÷ìóÏ”¬²6Ð"p­kj­ÀÐØŠ6Fà­r¥«vãj‡î¦ hààPh6¡s¡ó+êT7@P2•”0ˆoí8ÊQùªªÈ˪~é÷#´’y²4@Bi¹Ë]걉P”✲' Š™ÊŒ°ÿ˜ ‡u¶“šM¸&6ºMnΜž#ÇZVtªsnç;ã¹×ÙÒtøÔç7:\û3²¥,AµwžÀs ÕfM‡ºˆN”°U¥F7ÚQ†T¤#2JSŠ<ªX‚° b …¦ ØKáöb¦EHN’?­\×´¦I¾Ê }fhÝU›Š_¨Ju•ñÃAç¬ß©®’•­|%XÃ9b›•ÎEš†V½¸5®Ú­k(Y¼Æ`j=ü¡_¸:Ö ö°ˆMl+ÜX²ð̱ŽÿH6€°œõl¡>+ÚÑ–ö´©ut¥Y+¦¡ï -¦­m‡\Më–·ÁnpKÿÝX9š–ó”ìd¡¦µ"`iÐUëZ§;Ý!T¯»q 7\»ëÝžfg†Þ†>¢UjF›*_úÚ»¾ö•ïS±ºÕ~o ´@ ÝÃ<êqq|ÉÀà&ù˜–0…S, #tÃÚ]ˆ7Îñg›ÓÄgE±ÈÓÙ`ËÓÅ´„qýên»¼±²$+@'»c64}@u»^#Ö¢s¦Ý|=úÑ'Gù¤¹#žñFIÕ–6ÏyÐ[LýÁ›®P§<•dÐ|I¥±y“`Ÿ’ê^QÖÙΧLàa÷Üo­þÐ^],ÃúXÈ6!šÎåò¶Ûz]HGºp¥4^‹ðëÿLç¶t¼í´`/XÅ’z¸§FõÌŸÖ8(²ƒ¬â Ù)Š…¤5-j_É]·¶×°•m‰mÏÖßÖÍêEvo—ÍX˜;›œÐ® ¬6m¨iÛHÓ¶Ñ=4ž9šÜÈGþwÁËtWXšØd¨CUQÁ–Þñ½·öñïûÞÙß\UÞþ€ F–sz¤Ÿ˜à)F¥IˆBfÄ%ÎÌg^˜šf7‡;ÌñŽÕ ÷LM3€McÑ´çÅb(—r÷´r3fïF{ÌÖX%s’%5™„5>æ9ö¤qC6}¾%Q„JJ6;Ù×dERGç;ÂC<*5UÊse¤e\æe`¶ycÿ3;C^B\6kv>šêã7í“TWõNÕ}ûvJ¨dXkç^à×o¤@‚%wsW\¸Wbg•hjE]Žv]Øõw’&x–CxšÔbƆxîQ\ QpèxµV¸gAÒÆ8•÷G™B^$f98kZ¤H(dB§5zªez­åkBpPd Øzx\õDl؆½EjËVctDφ\Ä{½—A¿—VÁ'|F³3Æ—ÉgËgnáå|æµníVd!Hz†QKv‚Et¼È‹ôÅ„Qõ}á—@üãRþô‰+p`êÇ~•E 'Llp0W(MøwM:—qØÜ„OÇ…!‡ÿhXŽ×hr·z“GÞ4D(`8¦jXÓcÀÆW0æ-÷P!xd{Ju‚¼ød°‚.ЂTƒüó?XuS×A6f9U3Zä^¤u?XAˆ>{ÅI€#@òcô³„Ýw_ùågû³xd@S8ŒV(hs·‰#FK?pwˆÆe_†bWdX†w%L€†<´z H:”l¿õ[™Øl!`\de‡TãDO$2R”yV¤= ãy*4ˆ¢—k«uz¯e^œ3` eOàˆOöd[‡'D–H}ʶ”Äʼn¸ç‰ÒÆ{Bð4ä¸4¤XŠâµV@˜C@4Í7aÏWMì&}üès·ÿB7_(Ø‹’I÷f_Áè„U¨@ ”1wV“8˘‡!ãŒNÝ2ÔXÍt7M§ܘqÞx–áhV!G€|É4ÈNÈbÁV[*ÇrG‰”Iù–÷XçW5õxsŒÈ Øa-×["¨gR˜‹CGt¹‚¹tUp2ˆGWSƒÕsƒb–E;hf5”fT_·°wTðã˜ðU’ñåTi§<¡6Xÿ˜J¤™¯ô?Gh[8x—V{×h}—]=Iz•v†…§ŽùDÃùŽs¸‰Mùlv¸{+ • óKîwHXÙH¸E„ˆZ€'x¼¦ˆç5`fI›´9V“¸imYœ˜˜:cÿ{r £tÉbx9ŽM|aRÀÛ&˜¤rÛäMÓG}5‚A't¶3F'eSÆ Iœ‰ee%u3‘7Už4S‘¤u–ä6L Bõk|%vï#?#9Jö…Àj<úŒOÈ@Õ:+ÉŸ€ÖJ^e£*“ºgEŠÄÇwcØ“>Ù AYxÉI”Hd²·ÿ”L©…0š¡Ê¡ ·‡U¤Øy#z¸6iº&4`Y^‡PeÙ€gIGg©£ʆÄYœ´§‰"Ö‰žm¾ibXǨ)D ˜@c4mZadКLJdýÈ©Ž©‹“Ié‹ÜGJ˜ÙU^å@ÆžPƒpó1£ù6$c2hš¦ÉĦ6Û¦Éô¦Ð„+ª­§M.´ät\?•|:ŠÊ—» H¨êÈ€ÿúWnØ@Œ·xŠ\±TE;sôÈœµìšj‹ÔÙ© ªÙÙ;Ie @UgàRô¥âùe€ƒyžB)0>@èuB˜ŒE(vf oJè«ñ¬ˆ;¬ùUÿ¬\ xD‚©¤¥q qéq‡æ…Ä×A5ÕwØJW ºš†Ýº–àŠl4—M9N³”\x³~³U”Xä0ïZ¢¹Vƒy4a)Móˆûbàx\k9¡4ª”Á0g¡ü*‰.6O×Ä9¸°±»VÃǦ†I»n‰¹ ‡•dïå±h ²![¥ø†¥¬äJÿ APç™”s¦cªps{Ät05{³7K(Fr®©a‘(´ýš–¹Py9€IÛÀ»Ù´'œ0&£mHµ‚µ@[jµ£æ¨ ™\w)5¼÷›?t¨˜ÚsÕDZóf¸»È‹=ð-R“tJ÷‚V&ÿpqkABð%‘v+3ȃ‘B>uCi«í¹zF8v„k¸0€¸N¬¸0ÈR»:ÈZXý)¹ýƒ…¨; šA”¹ÖÊ“tUˆ&š­ »­¢K”a»§NZ؉z7ç²Qô¡ìú0?LZñzˆôŠ4»»¢¾cý‡–fIÁ—Ø@ ””Ëv£ßT°³DlùWbÑ+€ kz½Ø›½Û«;0D–à‹@§d¾ºÂNFPʪ|¾•¾‹[¬ýã?”{û§cg¤C3šsp¿%s2íJ(þÌ8»šp§—¯ˆ§üz“·—|™mJó§:¨ª'lÁ)v¼eÁÈŠÁeµÿ`Èŵ h5é˜r‚üëXúYØgÊÃð<<3UMÇHtA[Öe5euù2ŽÄƒ¨EC[§žìù·î©iž´ÄBçÄ }¥ÝÉR‹å¸[X…žK¹nÌÅW“wÚ†¦]d\ˆž+¯ÚІi¨ÆkÌOq ´pŒ~r<Ç 6H*ûÛ0yl»$»‰h¯÷êœúʃ<´”H¼Š ‡S\£ŒŒºË+‰ÄF“’|w'¶N–ÌËd±ÇÉ3àÉü8£œÂRzÊ!¥Êb=Ö!%²õù}]Õ@Î*“*KPs“Ë —l°`*PÓs³Ã‡¤™l˜JZÌÔtq‘Øh[›c£˜m¥ÿ̀ʴ+FOŒ¨©cÁLÑg€ìŒD[+ÎãL©ë¸Æh‰ŽËvLÕÎîÏS–R4ì6 SÍҵí¢.ãy\É IhPI7Ô5Fü·D¸>Iv°£„‡¬Ä“ÜÁêÐQ¼nXÅűŒÑº…Ÿ˜Ã˜ëÑ :Æ!ke¸k¡{Ònæ€*-G, ÇÄDçtà8÷»`VôËÝòÃ8ÍÇDãÇöÚ³-ÚÞ¸ÔC¨ ‡ph¼Îú¬ÊKGˉN}NÔÔNãXɨù¿9kLÚKˆ™MZ=ŒÙÕã{)øcâb]Ö­l;ÇsgĘÅ6Nt5•E¦!ãG»œÿwpШ0dã:¾ãî$àí[07îk°îõîÞ}ðÕ®ÊzPïö~ïøžïú¾ï© R%~âYŠ\cìâ~ãó²3Žsm2ÛÑ$O-àà9ïó0u0ôCŸFôHoôDOôAOñ%å,õRÏO_õ%õóXïô?õÊÍÐX€;$õó:OñöàQ|ÀðþD°îkîéÞ”F‰Tg€O€TïPñPO€Q½êᔹ}Ä£;¼ÿó3Ï;òÌ) 9¿ó’ßõQ†ø?ÿô@/ôK_IŸyúy€ô>àC?öNÏ;, t?ÏdèÛµóTÐÂ.0Ö‘?ù¨Ï÷O?õ¾/õ~pzOôðù¡ô§?ñY/óù¥„‹&™®ŒÖâ‡Q´ö·¿ü™Oó,ö|ßüÅSJ¥ìd8_ﺯû>ÿôj»øÔÎd*ÿþÜ/pûz ó¥ï]ÿúßSS‚Sr…†‡†ƒŠ]ŒŒ>‘>-u-–-™šš~~. .T¥T/X«X,~uu y´µ¶ ¸ ±½›zÁ,ªX ÆÇ (F`ÿg44\\:Ô9Ö9ÙÚÛÝÞßàáâãß3æç[é[nìíîí$ñíêôéç÷37Þ#ÖÔ\gÀy¢`Õ *\Ȱ¡Ã‡2õŠ+×,[y,âb$HŽ G“xâªGª`À0†ÂŒzZøèâ£Î€ [uìÉ2g\°iãg¡[sïØÅ[ÊTžÒ¦LçÑÃçM›?4Î0ø¤«¯ `°BÉÐÓ+‰½ÒÞ¼ ÒNVp‘u5òÓ4i:¬m#êí(¾|7 üßU€ b9øjb,¹0bĵ«N„«ö\ÖìYP¡#øêÀ7Ö¨&Bäë7(bËž-ûµÿkÖ¸Uë^éR©§ïÎvUGœã4p€YÎ|94ޝvm[¶o!ŽºƒJâtàհþèá*¢¦¿2yrÁÂ$Êb èÁgÄ ÒQÙÙC=˜p¸Ðw 5ÆÅr`0ƒ]\3ÖA5 ¸ä±Ôß .80@¤uÁˆ$–hâ‰(¦¨âŠ#ªåâ‹0Æ(#Œ,ÖHâ‹ †è z›˜eV(í™tÒ{*%ƒÂmD¨Ö›¿í7C7†q!PA®xXÑE“ébÓˆnñÄ’@~ñ̰Æ/8 ãŠ3¦•ã›pÆ™c›–ÙhcŒ:ªç‚{X¬›m€¾›xä5ö!ˆ"Úèy/*Ê¢ZlùqRŸG"™¤n¬¹† ãùqh¢*Î(稤–jj©t:ªª£mžêê«r¦ºê¬´Þù(ž°æª+©nîê믈2ê⢵«–,`B’3à†wA™5q ØtqL#TQc>e&šj®U¢ZÀ–k.¯ÂBZì­¸êÚ먇;c­ížkjº0Ú«ï¾úâû.¿¬+lðÁ'¬ð 7ìðÃG,ñÄ ÷›/ˆÛ$RÅÐ%ÛW]…rA ‹²2sêiÁ£RìòË0Ç̲¾2×lóÍ8ç¬óÎ<÷ìóÏ@7;torrentflux_2.4/html/themes/chrome/images/noglass.gif0000755000004100000410000000115711017132666023207 0ustar www-datawww-dataGIF89aLÕ,,,zzz”””kkkžžž;;;KKK[[[‡‡‡[Z[‡ˆ‡[[Zˆ‡‡KKLžŸž‡‡ˆKLKˆ‡ˆ;<;<;;LKK‡ˆˆkjkLKLZ[[;;<ˆˆˆkkj[ZZˆˆ‡ŸžžZ[ZLLLjkkZZ[LLKžžŸKLL<;<žŸŸjkj,Lÿ@€pH,ȤrÉl:ŸP¨aJ­NM›j–ºv»VƒÌ ¾†MtØ+ ¸ßð¸|N¯ÛïvŠ£âp40 ‚"†z  Œ"“{†šz~"z ³´µ¶·¸¹º»¼»¿À¿Á%ÀÃ%ÁÀ4ÇÀÊÊ¿ÏÃÁÇÏÎÈÀØÕÀ ààã  #0-å3åà0 åôæîáîìä#ã#òþÆI'Ÿºâ~¸À@C$ 8TÂaC%:d‘DC/P¡$ !49q$•+bÄxR#ÈŠ)ØÉ³g”PØ@±3„‹¢?}*]Š”iPŸ!ˆu: ªÕ«X³jÝʵ«×® ¨X`A……'Ά‘!ì‰ @À…Á-Ù¸ "ˆ B"´y˘3kÞ̹³çÏ ?]cÅèFÇ8mútêÓ£S¿>°6êÙ¶˜Æ;vnÔ£ƒ;torrentflux_2.4/html/themes/chrome/images/home.gif0000755000004100000410000000064411017132666022471 0ustar www-datawww-dataGIF89a1 Õ(¼ŒŒŒûë:s4|||BBB?]<‹‹‹ø///(((===á ¥¥¥%%%JJJ5ˆ,222"ÖxxxŽŽŽ«««;;;­­­ÀÀÀDDD###fffwwweee&&&0›%%ÊòzzzHHH''':::EEE!ù,1 ÁÀÍÃD,ȤR¹P0>’“tJ­Z¯XìÅà14¨°x ˆŒÏè´:LAx×áN‡—H7<$ê‡}( |(" skwy't!‰ !( ((ž"a"vxzkr(r¬(§§°¦ }²jªj¬r˜šœ²Â²‰©’{s¬€‚¦­}ƹÈuרg ’%Þßàáâãäã# $íîïðñòóò #üýþÿ XC† ;torrentflux_2.4/html/themes/chrome/images/history.gif0000755000004100000410000000070211017132666023235 0ustar www-datawww-dataGIF89a1 Õ5ˆ,øŒŒŒ:s4á "Ö?]<(¼///,­===(((þ‹‹‹BBBëû|||;;;ŽŽŽÀÀÀfffwww222­­­JJJ%%%###xxx&&&)½L±àăRˆI²¤É“(O.Ð ÁA†'bÊœI³¦Í›6'`;torrentflux_2.4/html/themes/chrome/images/proglass.gif0000755000004100000410000000502111017132666023365 0ustar www-datawww-dataGIF89añæÓpkÌçš·ÃurQ-pIm”G‘Ó…ÉÑ„M¡Q0),|-MgX’EYSŒ¨[‰J6²ò¥Íížj»lLs&u䔥pXi)²è›u4ÉÊ…U0醂æï¢“ÄwŒ¶i¹·v3k¸Ðƒfm!ÚÔ˜ÒÛŽÖÇ•§˜fr©]¸rbÜ–†…Azx7¥µhA°``dS‚5Š:uÊzÖ…y¨§eê—\Ì|»¨yÚ¹•j©IC…ƒBO¾nàæšcw*4ˆ8‚šM’™LµXQÔ¥Šnxǵ…“„R»šv3£SÁg_™—VÍ”}Ç¥‚d¥Ñ„ …]õŒ‰¢Þ‘Ñ·Žã“ã¢p8!b;Ÿ§Zš]I[ ®ŒiÂ…q'–Fàzv»Üi؈®DAZBpu*>”DŸ÷§~'€×‡Þ­’r u%¼ROÉ_]œ:5¾Žs¯´i‡²~eof.ÆÂ„¢PEð‘‹°¦o®aT¿¼~ÞÞšÈ|nY®_p €ïŸ‰ø¨ {+!ù,ñÿ€~‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ‡e ¡¢£¤¥£eª«¬­®°°´µ¶·¸º¼¾¿ÀÁÂÃÄÅÆ==ÊËÌÊyÏÐÑy$ÔÕÖÕ&ÙÚÛÙ8&8àáâáh8hçèéêUìíîïð5òóôõôu5uúûüýúQ HP`Ÿƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠd(¡¤É“(Sª\yƒ 0cÊœISf€›8sêÜ©³GŸÍ‚ J´¨´£Ò®)%a‚)·§Ú¦˜˜BµªÕ«S†dµ«×¯^U Q!–¬Ù³hӢ堂-‡·pÿãÊK·®]¹òêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžLÙ/•˘3kÞÌ9³*Ÿ¥ˆMº´iÑ_¤|Yͺµë׬K|)A»¶íÛ¸sëÞÍ[7‰~®¡¸ñãs’+_>LjóçС71Ò¤ºõëØ›0Ñ®‰÷ïàËg2ƒ|ùèÓ«_Ï~½—÷ðãËŸO¿~|0øóëßÏ¿¿ÿÿ(à€hà&¨à‚ 6èàƒF(á„ýaá…f¨á†Ðáxâˆ$’ø„O¤¨âŠ,®(Â"Ä(ãŒ4Òx€Àá8ÜŽ<öèãÄ'äÌ1‡Ç‘H&‰ÿL6yOÞ å”TÞ€„•Hd©å–Zºáå—`†ÉŘd–9¦\ ©‡šk¶éæ›m tÖiçxæ©çžtÚà矀*è „j衈&ªè¢Œ6êè£F*餔Vj饘f:¨ œvêé§ †**¨ÈPª¨¦ªêª¬¦*ª¯zðª³Òjë­¸æªë®¼öÊk“ÀËäÂðƱoØ‘¬Ì6묳' q´ÔV»Å [d«í¶ÜÆáí·à† n ä–kî¹è*¡îºì¶ëî»ê²!ï¼ôÖk¯½<ä«ï¾üöëï¿,ðÀlðÁ'¬ð 7ìðÃG,ñÄû;ÁÿÅðñÆwìñÇ {üÆ#—úñ|ì‚ IÈBòˆL¤"ÉÈF:ò‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉN’ÿ   ¥(GIÊR’’d@%VÉÊVºò•«,dÙÂYÂð–+(@.ÈË^úò—À ¦0y¹ƒ(Zñ˜SdÁXÀÌf:³™W`A4å0Í+ÈášÖ¤¦6Ã80vó›xÀÂ9ÎrŠÓá<§Ûhv> ïŒgæIÏzÚóžøÌ§>÷™8ÌÓŸýL@ JЂô M¨BÊІ:ô¡¨D'JÑŠZô¢ͨF7ÊÑŽz¡?iHc R’Šô¤(M©JU ƒ´0©LgJS™ú7Í 2àƒ ðÔ§@ ªP‡JÔ¢õ¨B}æ3ÇÀ‚18õ©Pƒ¤zͪZõª×ÿ€´Zήzõ«V(gXÇj…²šõ¬hMkYÍpV¶ºÕ fˆ«\çJ׺Ú5®pÈ«^÷Ê×¾úu¯¬`KØÂö°ˆM¬bËØÆ:ö±¬d'KÙÊZö²˜Í¬f7ËYÃ*à³ Uh ÚÑšö´¨M-h)ðYÖº–°­lgë Ôö¶¶õÁmuËÛÞúV·Q ®p‡KÜâBucr—+æ*W/€®t_@Ýê¾ ×mÀÀÝîz·»b¯xÇ;^+„×¼èCY7`… ´·½ˆ¯|çKßúÖ·À¯~‹Àßþú÷¿°€ àÎøÀN°‚Ìà;øÁ~¬ÿ&ü‡ SØÂΰ†7¬†t8 ±ˆGûùÏ€´ MèBÎDH´¢ÍèF;šÑ!Ht¤‰éJ“øÒ˜ñB°€N{úÓ 5¨_°RïøÔ¨NµªUÝ㻚»b2‘gmd&ÛúÖZØ–wÍë,gÙËÀ¶r0lb;ÈN¶²—nÍìf;Ù‡Ž¶´§Míj[ûÚØÎ¶¶·çFóáÑà7¥%Mi;Ó—Þ´º9ÍnQ»»Ó¦.5uå­ê¬úÞø¾nv÷ýêïÆZÈŸµx‘|äZߚɹN¸®Þë†ûÚ ¿¶—‰­åc?ûâ¿x ;torrentflux_2.4/html/themes/glass/0000755000004100000410000000000011026130107017416 5ustar www-datawww-datatorrentflux_2.4/html/themes/glass/style.css0000755000004100000410000000735411017367654021327 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #5A646D; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #5A646D; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #5A646D; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/glass/index.php0000755000004100000410000000051111017367654021261 0ustar www-datawww-datatorrentflux_2.4/html/themes/glass/images/0000755000004100000410000000000011026130107020663 5ustar www-datawww-datatorrentflux_2.4/html/themes/glass/images/messages_on.gif0000755000004100000410000000342411017132666023677 0ustar www-datawww-dataGIF89a1 æÉÉɤ¤¤ÝÝÝ………šššŒŒŒSSS|||777¸¸¸ªªªkkk¡¡¡ttt:::uuuŸŸŸ‘‘‘¯¯¯ÚÚÚzzz§§§yyy’’’ÑÑÑ‹‹‹888†††àààiiiooo˜˜˜···ÖÖÖ}}}ÁÁÁ€€€©©©–––ÊÊʵµµ555   HHHbbb³³³111lllVVVÈÈȰ°°hhhggg@@@¹¹¹CCC444âââvvvaaa___{{{ppp‚‚‚¢¢¢ááá“““~~~‡‡‡```jjj«««mmmÞÞÞ›››¥¥¥BBBAAAœœœžžžUUUŽŽŽÀÀÀTTTdddeee999fff™™™ccc!ÿ NETSCAPE2.0!ùd,1 ÿ€0+\„…†‡\„ŠŠ‰ˆˆ9U:-UYYU—˜˜›™œ—›ž£Ÿœ™2U=A._°_Z±°³²µ´¶´·¸Zº±Z´[¼²º¿À¸»¼¿³[ Y_TÚ_@ÙTIá_ä'ÞX Ù[è'_èÒÔÖ _&þ™(°ÁÞØ<|ðP‹o?¼ÁòÊ—´ðð,Xîí#vÍ“ œH÷¥€„ A¨¡åC8*NÊ ðEE¸<ÈÑåµb:u(pÄžLÄBá– '¥¦BåaÆM$©zõ€Q’? hIjD8«árN|ø°’烕T.h)  Ü5–úØ×Ê™agËx}ˆ²Î¢2cÓ o™L¹r—Ê[.gÞ\ÙÆ‚Nð˜|Y3éD„Üð‘‹+®AÊ {öìÚ¶iãÆ rÄ Y,xñB øðãÈ“HÎ|øòçÇ—W1#!ù ,,Ö€ WT„_WW ƒ 1$‹_ŽWˆƒ[—T_žW[_X§XT(  4‚ TZ$_ˆ( ¹WZW _<_$¥ ÍTT“_TW³4Z ‹ TÎ_Â_‹W$ Ú]áᬠ X X¨ZÎõÐ Z·q£öMŽc@Þhº{r"³Õ€n.s‚€x€3d…tm.8.81+™0™ 101˜m‹6/ˆk7 8 .8. ›–¼ ££¾ˆi‹¬xiÊ7µ„¶›0Ó› ÀÕ¨8ÆŽ‡o1uµ¸š¢Õ¢¢ چ܌~sz8 ..µ¤(çíè1ײaÛoÕ 6ʽˣp^B…ðœ`E‹+^Ô¨£ÅŠ=‚ ±D $>dÁRF–/[º„ISæÌ™/è´érB 4DT¨QCÑ£H‘MÊ´éÒ¢D/tp;torrentflux_2.4/html/themes/glass/images/profile.gif0000755000004100000410000000105611017132666023033 0ustar www-datawww-dataGIF89a1 Õééé»»»ÒÒÒŠŠŠÜÜÜnnnããã^^^®®®ÈÈÈ”””ooo“““¼¼¼íííèèèÇÇÇ‘‘‘ÛÛÛ’’’€€€___222‚‚‚ÓÓÓ111­­­ŸŸŸEEEQQQ   ªªª:::ÉÉÉLLL‰‰‰cccxxx<<³ÛnËD¡ÐEÔl‹Â“ÁÑomo9ƒg3 <8g“kk:199 =91= 9==r9ŠŒ}g9:º=ug=¢g=¹1©®®: =6¶2::ˆÝ¸= ¡kÏkÑà=11ÍÍÝž9×Ù }l®ððúÄ´b ÓYÏtø6 †1jÙùÙ+žŽI€àÉ SRIxM‡³˜Ù»µ&M 別r#èžE÷ṵ̈Á“çŒKDØØ9”‚Ÿ=‰&ýÙÓ'S0ÀxÑÂD«4®j¥Á+ׯZ½ŠÅ¶ÆW Và(Aâ†Û·¼u+îÜ»toÔ­{—ÅA;torrentflux_2.4/html/themes/glass/images/messages_off.gif0000755000004100000410000000111411017132666024027 0ustar www-datawww-dataGIF89a1 Õ€€€OOO^^^nnnÒÒÒ|||ãããÜÜÜŸŸŸéééÈÈȼ¼¼DDD‘‘‘oooèèèÛÛÛïïïÇÇÇ®®®íííiiiEEE:::111zzz°°°RRR   ```³³³KKKªªª’’’<<<___JJJ222444»»»âââPPPNNN}}}CCC333MMM!ù,1 ÿÀLF&K‹)#rÉTÇc’HMa.(RŒëz¿^.L.—&K*6k¿Úð7ÜMŸÇíö·üµÑ¬ñ/zr3y„w{wx,0.2l-+*“3+++š 3+ —*3 3šŒ- 3/**3‘%*×-3Â/-+3/*²·kÔà */äª+¤*+É»š*-Ã/Öšð9‚4ìž8 ² x€`†{—´X€àÅ"¸²–@/-"ŽhôhƽäÄÍ  é’¦@Ðä*ÁŠf¨°i­E:iRx²(0ÐPœAŠÉÐPÀ4£/4JÁ`F€,²²Àªµ+ׯ[µø`À@‚\½níàÀ†`È+·À\»0ðÒÝ‹W¯ß»Dp¸`Aƒ‹Ã-\$VÌXqâŇ3†Ü8r‹ÇŠA(;torrentflux_2.4/html/themes/glass/images/progressbar.gif0000755000004100000410000000047711017132666023732 0ustar www-datawww-dataGIF89adÕ‡¶ç­êþ·Ôò­íþˆ¹ê’Åû›ÑýŠ¼íˆ¶èœÒþ…¸ç£àý²òþÀñ¡ÛÿÃõŸÖþŽÂö’Èüоî°ðÿ§äþ‘Çù‰¼ëŽÀó²ñü£Ûþ­éü¨äý…ºæ«ëþ—Íü©çþªåþ‡·ç!ù,d\@pH,ȤrÉl&‘tJ­Z¯Ø¬vËí^;éå0i< ‹dÍŽ¸ßð¸|N¯ÛïtÌäB)¤    Ž‘’“”•–—˜™–! A;torrentflux_2.4/html/themes/glass/images/index.html0000755000004100000410000000001511017132666022673 0ustar www-datawww-datatorrentflux_2.4/html/themes/glass/images/bar.gif0000755000004100000410000000614111017132666022137 0ustar www-datawww-dataGIF89a÷³Ò熶ë­êþ»Öò¦äý·Ôò¨çý˜Îü­íþˆ¹êÀûÿ¬ôÿйå’Åû Ûý·ñüªèüŒ¾ðžÔÿˆ·å¥áþ›Ñýмí–Âë¨Ê톸鈶è ÅëœÒþ°îý±úüèöÿ…¸çžÄì¼Øô¢Þþ£àý™ÄìžØþÁÙñ’Åü¦Éí¼õþ½ê²òþ”À쑾éŽÄúÄÞõÀñÇÞõÃù©ÌìœÐþ¨Íñ–ÌüŸÙü¡ÛÿÃõŸÖþ²ôúÅÚòŽÂö’ÈüоîœÄë°öþ–ËüœÃì”Éýµôþ¬Îï«èþ°ðÿˆºëÇÝó®Ïï‹Áé“Òÿ¦êþ£ßþ•Êþ³åþ¨æÿ¢Çì«ÛýŒÁóÇÝõ¡×ÿ“ÀéšÂè»ç”Éú©ïÿ˜Õþ§äþ¶íþ˜ÍÿœÖü•ÇûÇÞó¼Öï—ÌÿŸÜü„µæ„¹àœÖþ–Ëÿ¢ßþŽÂò®àþœÓþ²ñÿ±þþ›Îÿ•Ìú¶÷ý‡µâ‘ÇùŸÙþÉàö®ÐëÀö¶Þø”ÉÿŽÀó²ñüšÈö³Ûõ£Ûþ³èÿ¤ØþÅÚó·ùû Ýü›ÄêªÌê˜Âîµêÿ¡ÜýœÓü¯äÿ‹¿ðŸÚýªçü×ýŽÈþ¡åü“Çþƒ¸à§áþ«æþÀÛó­éü«êýŸâüÅøÀÙó®ðý±òû¬Ïñ’ÍÿšÕü²ðü«éü¯ìü™Øþ©äÿ¨äý¨Ê뇳ë¸ÿÿÙûÂÝõÁôÔù™Òø“ÆúØþ¡Ýþ…ºæ¬Ïì‰Àö•ÃóÍùÄþÿ³áù°Ïí«ëþ—Íü¢àû—Àè¥âýˆÃûƒ¸æ–Èÿ£ÜúÄÛô°ôý³èú¨èþ·ïþ¦ÉêšØù©çþœÚþÕþ—Îû°óÿ‡¼âÇÛö£æú¤ÝüÂ÷Àö´öþ´êú«íü§ìÿŸÇíšÌÿ—ËÿƒºßœÃê–Ãë¯Ïï™ÏýÆÝõ¿Øð’Âï¥Éç®Íë¬Îð©ÏæÝþ‰¾æ¡ÏûœÊ÷™ÅíœËù‹»ñœÒ÷—Æôªåþ¤çü›Íý°Þõ„³åƒµà¡Òý±Ðñ©êüÂÙ퇷ç,ÿýùËCðØ1CL˜`™1#†Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cʬX¦f†8g<ư\¹<(P˜1£©è§£A“=Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·P•*}ºô“¹¡ØË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžL¹²å˘3kÞ̹³çÏŸó"ArC”iQHÒ©¾uk´ë×°cËžM»¶íÛ¸sëÞÍ»·ïßÀƒ N¼¸ñãÈ“+_μ¹óçЇ‹RG½º:ج³ko}£{éÓÖëÿëÎC·ó諨_Ͼ½û÷ðãËŸO¿¾ýûøóëßÏ¿¿ÿÿ(à€hà&¨à‚ 6È  X^0Á,"Ž8dxáfèᇠ†(âˆ$–hâ‰(¦x"…,ªèâ‹0Æ(ãŒ4Öhã8æ¨ãŽ<öèã@)äjxá‘f¨Å’Kºà¤“/D% TVÉÅ•W6 %\R`‡>ú`ÙΘípA%–U¦©æšl¶é&•RN™&–t¢ÉBxæ©çžYjé矀Ú@—„j衈&ªè¢Œ6êè£F*餔Vj饘fªé¦œvêé§ †*ª¢”Zꨦªêª©þãê«°Æÿ«v¤A 1!„ð©¼öê믾²*ì°Ä+ë±È&«ì²Ì6ëì³ÐF+í´ÔVkíµØf«í¶Üvëí·à†+î¸ä–ÛlùäCk®!ܪë?”jî¼ôÖkï½øæ«ï¾üöëï¿Loi¬›«»®Æ€À 7ìðÃG,ñÄWl±ÀÜî­ Ë{ñÇ ‡,òÈ$—lòÉÌ +Øb 8à¨áª¨bLðÍ8 ìξ¢ìóÏ@-ôÐDÛ€Ê,» ³ÌÿмAµìF-µÔ¸¬€Kì¡õÖZ_àµ×A„-v”möÙ¤­öÚl·íöÛp·ýõÜt×m÷Ýxç­÷Þ|÷ÿí÷߀.øà„nøáˆ'®øâŒ7îøã'ÎõWk`ùå˜k@®Çÿ ]µ-—\¢ÆÕ¬Ô<­\×=¶ØÈ ð»îÆì³ï`»í4äž»)¤à€žÇðÄÄñÈ'¯üòÌ7ï<ò?D/ýôÔWoýõØg¯ýöÜwïý÷à‡/þøä—oþù觯þúì·ïþûð—Ëüi_á:$ø‹íõÖûk½å Ð@®–5µîja°2ÕÊp«¥YNtU®FÁ fm›ð‡?Ø]a~° ^ðF8<Xâ„'ôƒ ÀBJá…R`ƒ eˆƒÚð†8ø…uˆ€öP bð†ÿ‡HÄ"ˆbð¡—ØC:ñ‰PŒ¢§HÅ*ZñŠXÌ¢·ÈÅ.zñ‹` £ÇHÆ2šñŒhL£×FåÍbÈ  æƒkØñ œŸ 8 ýM®‚¼\Ô’eªt1Ô€®ö¿¯­®ƒ°ƒÅíl7Báy,Ta gx†N"‘ ´€(Eiˆ²p€CP™ÊVºˆ¥,'ZÖr ¸Ìe.'ÁK^겗И¥0iiKPó˜ÈL¦2—ÉÌf:ó™ÐŒ¦4§IÍjZóšØÌ¦6·ÉÍnzó›à §8ÇIÎmöP‡ÑÐ!ˆ ….¸ÓÈû<ç8ÉHOø3[ؼ¶ÿ—iîU¾Bš\6i´Ãkò(þd@;7Ün„o|'È`„'v²“J å(7ꈎ:<é NÒ’âYHéIsÀÒœ40)Lu@ÓšÚô¦8Í©NwZÒžúô§@ ªP‡JÔ¢õ¨HMªR—ÊÔ¦:õ©PªT§JÕªZõªXͪV¡ZË ¸r•`µ€1‘Ä‹žáNl!Š7ÂÛyvùÜçþG×Î¥Ax ›öj;>莞(ÞÞéÎî°‡ÈܨX)Lò ¥<`)LÑ@Y44¢µ¨ ˆ(D¡ žõl F[‚ ˜ö´¨5­0„‘ÚÖºöµ§]-k_û€ÚÿÚö¶¸Í­nwËÛÞúö·À ®p‡KÜâ÷¸ÈM®r—ËÜæ:÷¹Ð®t§K]å²Ô®h)-¶»]h¬a ¤ +Ê%Úè%¬`=1GêÉàlòø.p1Œùã¹%ö«I^±],XáðÝïNb¤#=)bZ[Î"‚›%íhc+[0XøÂ¦Â6L*8ãÃN‚ˆGLâ›øÄ(NñˆaËâ»øÅ0ޱŒgLãÛøÆ8αŽwÌãûøÇ@²‡Lä{Â$Èl-.k[˜âÁ'Èex˰Šus@b'e(*ÏÑ Þæ;ŒaPb¢Hs GÁfÄn”ÿ±´ iJ³PˆB ‚¦—U2’=Ka ƒáÞ0ˆU<€Bû H´¢ÍèF;úÑŽô¢%AéJ[úҘδ¦7ÍéN{úÓ µ¨GMêR›úÔ¨NµªWÍêV»úհ޵¬gjg¨âÖ¸V…lW[ÏZÃHF2“ (Ÿ€—<èªWW)JrìPì|¡;ï _J°A‡ºÈv)¼J8ÔRÎ)­ó Æ=ˆ_›{¦õó­;ìagŒØ¦ØÄ¡-ix@ ö¶·JQ @ø»ÿ7ÀNð‚üà? ^è†;üá¸Ä'NñŠ[üâϸÆ7ÎñŽ{üã ¹ÈGNò’›üä(ÿO¹ÊWþñMl‚.9¥G\š§âæ©P…jW+á6ø¼7Uð“{:f7›>Tçñ¢/8ýé¼Ä®+ØAõª³£XÏz%¶¾u{x Pø:ØÇβ{áìhO;(Ö¾vi¸ÝíÈ@ÆÛ‡@÷ºÛýîxÏûöÎ÷¾ûýï€ÿ»Ý@øÂþðˆO¼âÏøÆ;þñ¼ä'OùÊ[þò˜Ï¼æ7ÏùÎ{þó ½èG¿ù´›Þ eO=7ÆÎz¯»Þõ\Ïz'€ank ¢¶ÅŽ2.]ù…'<á o0g}¾ëÕV£®g=Rú³;~ÿ€¦Oýê[ÿúÓo…ö·Ïýî{ÿûà¿Fø¹ýò›ÿüèO¿ú×Ïþö»ÿýð¿üçOÿúÛÿþøÏ¿þ÷Ïÿþï?ïu§x͇v«7vÊðˆ€À·€ hVPgV|;torrentflux_2.4/html/themes/glass/images/noglass.gif0000755000004100000410000000053411017132666023041 0ustar www-datawww-dataGIF89aLÄÍÞìÁÖéÁ×è¸ÏåÙåíÂÖèÂÖéžº×ØæíÂ×éÂ×èÁ×é¦ÃÝÁÖè¦ÃÞÎÞìÙæí·Ï垺ؠ¾Úåêí­Èáž·Õæêí!ù,LÙ %Ždižhª®lë¾0,Ít=v®ï¼ŽÛ¸oB,ȤrÉl2t •J£Œk–ªÍn»Ök”ZåZÇS/µÂn»ßð¸|N¯Ó#ø<~ ðó}{‚„ƒ…‚}‰    ’ ’ ’¡“›Ž›™‘Ÿ«©— µºº»¾¿¿½ÂÞļÇÀËÆÉ¿ÐÑÒÐÑ×ÔÛÓÝÞÜßÝÕÚßçèéêëìíîïðïóôõö÷øùúûüýþÿ H°àÀ;torrentflux_2.4/html/themes/glass/images/home.gif0000755000004100000410000000077711017132666022334 0ustar www-datawww-dataGIF89a1 Õ»»»®®®ŠŠŠ”””nnníííãããÜÜÜ‘‘‘^^^JJJ}}}111ÇÇǼ¼¼éééÒÒÒ´´´ŒŒŒÛÛÛ‰‰‰999LLLEEE•••ªªª“““QQQddd222yyy<<<¬¬¬xxx’’’ÓÓÓ:::zzzOOOCCCâââ{{{DDD‹‹‹PPP444NNN333MMM!ù,1 ÿ@‡C+È$’¨lÂNHÕªZ©Öª ›ÍR¹Þë¶Ê0ÈT™YL=k»wlݦÏÝø|]Þ(åykzt€…{z)0*ˆl+“j “1+3+„lk†‹vz  331 3 + m+†vk/Œ«znƒ3ƒ¥+3Ð3Á”‰{ƪÚu1 á²´&1Ð1ÔÑÔ1 Ä†Üxƒä1– ÑÁÿ’VÄc“ÈX‡zöâ1”ˆ¡Ãd©þ¼˜81E Š/.f¤hq#ÆŠ5~¤èA H°@±’åJ0cÂDáÒåK™4YÖ”¢ ->\pA´(¢.%º©S¦H›&%Zaă ;torrentflux_2.4/html/themes/glass/images/history.gif0000755000004100000410000000102511017132666023070 0ustar www-datawww-dataGIF89a1 ÕÈÈÈ”””éééÒÒÒnnn®®®ŠŠŠãããíííoooÜÜÜŸŸŸÛÛÛ€€€___¼¼¼   èèècccªªª‰‰‰ŒŒŒÉÉÉ´´´888<<<­­­‘‘‘’’’QQQKKK;;;111FFFïïï‚‚‚^^^JJJxxxyyy~~~}}}000ÇÇÇ|||222•••“““»»»OOOzzzCCCâââ{{{PPPDDD‹‹‹444NNN333MMM!ù,1 ÿ@ÖkG,ÅrÉ<†F¢Mmš«Z«Ôi {ín»`,hÑ«ùÎhôã¤}¼w¦Ãßõ7oåÙ™ávv2ytvp6x€h†Œg8ei‡>6 >‰66$-< Ÿ› 6 gusp’9Šg> „‰ < >„¸ g nz3‘“wy–Å»¹ œ>s‰‰q2 h²eæiƒÔÛ„&6<‰Ä–¸Â>÷•>8*1~ôÜaÇ.Q$ø àÆ 8Ár £’g³já9k%@"6:Í Ž“(Sžœ‘r†K–8`¶Ä‘Ì›,?”€¡áŠ2@oÐJcèРG…*š4(R¥Ei¤pQ!C thÕ`«W®]¿Šë5¬Ö ;torrentflux_2.4/html/themes/glass/images/directory.gif0000755000004100000410000000106211017132666023374 0ustar www-datawww-dataGIF89a1 Õãããééézzz€€€®®®ŠŠŠ333”””^^^ŸŸŸÒÒÒnnn¼¼¼ÛÛÛÈÈÈ“““èèèooo___ÇÇÇ}}}ÜÜÜJJJ222íííïïï‘‘‘   ’’’ddd:::¯¯¯xxx<<<999ªªª000EEE‰‰‰ŒŒŒ´´´LLLqqqQQQ­­­CCCOOOâââ»»»PPP‹‹‹{{{DDDNNN444MMM!ù,1 ÿ@&G,Ȥrù9aD°Û-*­Z§VªöZ¥b­É¶Ò™Ï„‚î3·Ïï7€«ÇÏn8®ÒÉÁàg/3uxnm‡f3/…€xo4~…2•3:2˜3—: 23‹3:3jfc:‡—3ƒ™ 82 ¡»: Š ™ : j : ¸oŠ:‚˜:¹22݉/‚m™ ‹:Ôg1‘¸gǽÂáf8$Ø…ã…‚e2p8ƒ¶Ç Ùƒ0)s À‰Ó±¡…\•,LP]¬6˜! ¡ÐÄ1oåŠéHf®Ff,8ÔÆÞ­O?4b¥1t¨P¢1ŽEÊ4)S °JµÅ$.„°Áµ«^¿Š K–+X°fèPBÅ (j¨A×À\ºxåæÕ»·¯_»5R¸x;torrentflux_2.4/html/themes/glass/images/proglass.gif0000755000004100000410000000334011017132666023223 0ustar www-datawww-dataGIF89añæ³Òç­êþ·Ôò˜Îü­íþˆ¹ê¬ôÿ’Åû ÛýŒ¾ðžÔÿˆ·å¥áþ›Ñýмí–Â놸鈶è Åë°îý±úü…¸ç£àýžØþÁÙñ’Åü¦Éí½ê²òþ”À쑾éŽÄúÄÞõÀñÇÞõÃù–ÌüŸÙü¡ÛÿÃõŸÖþŽÂö’Èüоî°öþµôþ«èþ°ðÿ‹Áé¦êþ•Êþ¨æÿ¢Çì«ÛýŒÁó¡×ÿ“Àé»ç”Éú©ïÿ§äþœÖüÇÞó—ÌÿŸÜü„µæ„¹àœÖþ¢ßþŽÂò®àþœÓþ±þþ›Îÿ•Ìú‡µâ‘ÇùŸÙþÉàö‰¼ëÀöŽÀó²ñü£Ûþ¤Øþ Ýü¯äÿªçü×ýŽÈþƒ¸à­éüÅøšÕü«éü©äÿ¨äý‡³ë¸ÿÿÙûÁô¡Ýþ‰Àö•ÃóÍù«ëþ—Àè¥âýƒ¸æ£ÜúÄÛô¨èþ©çþÕþ¤Ýü§ìÿƒºß–Ãë™ÏýÆÝõ’Âïªåþ¤çü„³åƒµàÂÙ퇷ç!ù,ñÿ€~~O„o†??x#!ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯ˆˆ#´´†o´xxOÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåÇ¿5ëìíîïðñòóôõö÷øùúûüýþÿ H° Áƒ*\Ȱ¡C{"L·f ;v hÄXQ£Ç CŠI²¤É“(SެÈR¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ u™ñ"Æ£s(Uê¡iÓP¡r˜JU‡U ²jeÀ¤O&L„´icÁŸhÓª]˶m pÿãÊK·®Ý¸òêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžL¹²å˘3kÞü7>`ËZkö„œS«^ͺµë×°cËžM»¶íÛ’… ]vl›¼§q N¼¸ñãÈ“+_Μ³n1b$”­Sgp ŒEkß®=BYࡈåyó,Ò«g¡ ½û÷RâËŸO¿¾ýûøçŸßÏ¿¿ÿÿ(à€hà&¨à‚ 6èàƒF(á„Vhá…žGxDàᇠFZz='†wl±ÅàE·˜äñ·žz ˆ  8ÚhÄŽ;¢à# $$h€]$ÙÄÿ’L.¹Â“PF)å”TViå *d©å–\véå—`†)æ˜d–iæ™h¦©æšl¶éæ›pÆ)çœtÖiçw–¡g|7Øèžzæ(vX–`Ü•Fâ^i}&ÁXÔ á¡ž7c{8ÞPÆ>&©d“PÎ ª¨@”jê©wÜáÀª¬²ŠÄ«°Æ*+ Ôj«¸âêî¼òšÅ¯¿úú«¶{k®©&«ì²Ì6ëì³ÐF+í´ÔVkíµØf«í¶Üvëí·à†+î¸ä–kî¹w îº”P ;Ä/”G œ¢ ¥ž"¼§@zæ`ˆz±¥›¥,Ä °QÙE“Mȯ»ì°lÿ«°+G )à€C &„lB$›a²EXaE,·\Ä0_ÐÀÌ4×ÜlجóÎ<ÏŒsÎ<' ôÐDmôÑH'­ôÒL7íôÓPG-õÔTWmõÕXg­õÖ\wíõ×`‡2dˆŒÁÙgËA^xD««Vìn KÔ-1Ä]€Àe¿î=Þ€ë™Gh$©…£ž „ºÉºëÚk£”‹,´Ê+§3Ì>ÿÜÃç ‡NC¤Ó0:餿 úꬷîúë°ÇþBÏ´×nûí¸ç®ûî¼÷îûïÀ/üðÄoüñÈ'¯üòÌ×ìr'›torrentflux_2.4/html/themes/hornet/images/0000755000004100000410000000000011026130105021047 5ustar www-datawww-datatorrentflux_2.4/html/themes/hornet/images/messages_on.gif0000755000004100000410000000274311017132666024070 0ustar www-datawww-dataGIF89a1 æjbFybi^,–”‰ðç˜Å»vrlW[P!MC@5 5*»±mogL‡€kÖ̓‘‡LWN2­£bŸ•Wvl7|q;ME%D;e[)MB;1 èß’Š}÷î –„€pÞÕŠ{vd`X>ñè™ÒÉ€¤š[„~hmfJldH„zBäÚŽ0&…i.%}w`$#›–ƒÉÀy8-ibKˆ‚mþõ£]U8¦¢“f^A ›‹µ¬i¼¹¯#©§¢-$QG'ûò¡|u]qiN²±¯/%]S#B8—”ŠÖÍ„k`/ZQ4}t=h`C0%-%’ˆN ž–zc"meI»¸®¥ ‘=4SK+YQ5÷žŽ‚{eOG(OE’ˆMÈ¿x*!|u^iaE+!4*2'!ÿ NETSCAPE2.0!ùd,1 ÿ€3#i„…†‡ˆ‰ŠŠ>1.#0dg“”•–—˜™™,9dj ¡¢£¤¥¦§)-ž§¬­®  «A·j!¶¾!jÁ»¶jÅÐÆ±³Ÿj"Ú"6ÓµÀÓ»»àjjjçÐÖ´ÓüçÆÔòKÇ#Ú.øâp ¨xG| °`¡>lþÞ}›¦AÄÛî Ñä¹vÔÔx 'Bƒ:^\díÓHóƒ¯]¾<\¸0ž€Ž5óõ. O__)õ™»SIÑHJµªÕ«Z–,¡æêÔFnA²ÃŒÙ³hÓª]Ëvm :„ )R¦®Ý»xóêÝ«÷!ù ,,´€ c+b„jcc ƒ ‹jŽcˆbƒj’b“ j¥b*  ‚ b ˆˆ« jcjc j ²£ Ʋ“jb+Œ $¥ ‹ bÇj½j$‹cÐÒźȫ• ¦×ˆÇ鲸¡j¿ µ‰MØû ‹ˆ‹$H Œe (iZ¤kÁE ²IœH±¢E5è*庨fš CŠIR L’Y#!ùd,1 ÿ€3#i„…†‡ˆ‰Š‹V.#0d‘’“”•–——g,NdjŸ ¡¢£¤¥¦_¦«¬­Ÿ ('ªD¶j%µ½%jÀºµjÄÏŰ²ž j&Ù&=Ò ´¿Òººßjjj æÏÕ³ÒûæÅj ñ•Žlzm0Àï<½T(x0ßµ~î¼IË`ƒ m u•à÷Ñ»ij:Ì3‘!Ý®)±ôeœ ¢—®^0`ø¯Â¿ Ƙõrpg/‹®’~òx¬©ji<¡™JµªÕ«Xà Ñå Vª5´ˆ €³hÓª]˶-Û+2²HÙò"€Ý»xóêÝËwo/X!ù ,1 ÿ€3#i„…†‡ˆ‰ŠŠ>1.#0dg“”•–—˜™™,9dj ¡¢£¤¥¦§)-ž§¬­®  « c+b·jcc ¶ ¾jÁc»b¶jÅbÐÆ±³ŸjÚb*Ó µ ÀbÓ»»à jcjc j çÐÖ´ÓüçÆÔˆYñKÚøb ¦¨x$|A`¡>lþÞ}›¦€B ÛîšÐä¹vÔÔ< GA:^MdíÓHS‚¯]¾$H0€ Ž5óõ. O__)õ™»SIÑHJµªÕ«JhÐ`’äêÔFnA²ÃŒÙ³hÓª]Ëvm :„ )R¦®Ý»xóêÝ«÷;torrentflux_2.4/html/themes/hornet/images/admin.gif0000755000004100000410000000065011017132666022650 0ustar www-datawww-dataGIF89a1 Õ*!‡€kogL÷îûò¡ÞÕŠ¤š[MBÒÉ€e[)|q;èß’µ¬imeI]U80&rjO|u]œ—„ ›‹3(1'-$#þõ£¦¢“ˆ‚m#g_B.%8-…iiaEQG'¼¹¯$/%}w`ðç˜Å»v‘‡LjbF|v_+!5*2'!ù,1 ÅÀ ãE,Ȥr©1L—tJ­Z¯Xl`bà°xNà Ǚ|yˆºë88%¯‡a\žHÔ)1+ ƒ*ƒ +*+‚ kxzr 1 t)…1¡¤*’y{q›s…©Œ³Œµµg“¬g+f t„¸´¦Åª”r))‡…³Ò·¦Òº«•vÚÛb»•0àáâãäåæå!',ïðñòóôõó#$-ÿ H° AJ;torrentflux_2.4/html/themes/hornet/images/profile.gif0000755000004100000410000000073011017132666023217 0ustar www-datawww-dataGIF89a1 ÕÅ»vèß’*!e[)MBÞÕŠ‡€kogLÒÉ€µ¬i|q;ûò¡¤š[meIQG'ÓÊœ—„3(|u]}w`.%#g_Bżw$ñè™/%rjO0&ˆ‚m]U81'#-$¦¢“¼¹¯iaE’ˆN…i ›‹8-÷LjbFðç˜|v_+!5*2'!ù,1 õ@HCF,Ȥr9º46‚˜tJ­Z¯Xì'Dˆhà°xL.ƒ D‚¶&S©®yN·Ú´Wy†8Èó ,‚h`,a-//,4 /-,,4, zzh/`|~`/Ž—4xŠ4 ‡y-–›4 4 4¡zy¤½Ž`·ÅÃÃ-˹‹‹¿Á£ÄØœ,ÃÊŸ-±Ã,´¥ÑÄ-¯¼ÖÅÙ`–‰Û/ãÊÛ–åzž´ëtÈvàÕ¸n†Áƒ9H@8…†#F\á†\hÜȱ£Ç =žx0¡‰`¨\ɲ¥Ë—0_ZPa";torrentflux_2.4/html/themes/hornet/images/messages_off.gif0000755000004100000410000000075111017132666024223 0ustar www-datawww-dataGIF89a1 ÕMBèß’÷î*!ÞÕŠÒÉ€¤š[‡€kogLµ¬iþõ£ûò¡ñè™meI$QG'iaEOEœ—„¼¹¯#g_B1'#’ˆN-$}t>rjO]U8/% ›‹¦¢“3(}w`|u]ˆ‚m÷îž0&8-…i.%e[)|q;‘‡LÅ»vðç˜jbF|v_5*+!2'!ù,1 ÿÀN£F,Ȥr™Y5 štJ­Z¯X,êC`là°xL.›Ë£‡ª{n»ßàYÁv`Œ¾e3À`,w-6‚0|/w6†/‘‡rt6.6œ/ ”,v/”|.|¢,š0606,©‘—u”.½©‡6/ € œ,/¾`² 0-ÇÉ»™ÏÚ¡”,Î|¾á©¯•6µ¬}s¼š¿¶|,,Á²-Á rô' Dýþ`ƒÃ ¸D°Î,œA±¢Å‹3Npàà‡ŒSx0aÄ…(Sª\ɲ¥K–P±!B 8sêÜɳ§Ïž$BT;torrentflux_2.4/html/themes/hornet/images/progressbar.gif0000755000004100000410000000021211017132666024103 0ustar www-datawww-dataGIF89ad³ÜÜ*.Š ÿÿA—§—¥ÿÿ@Ùá)ÿÿ>•«. ,d?ðˆI«½8ëÍ»/`A`žhª®lë¾p¼È@ xnß:Î÷„Û¯G,ڌŠo¸C‰€tJ­Z¯Ø¬vËí^;torrentflux_2.4/html/themes/hornet/images/torrents.gif0000755000004100000410000000070611017132666023442 0ustar www-datawww-dataGIF89a1 Õ5ˆ,:s4ŒŒŒû?]<,­"Ö(¼á ===|||‹‹‹///BBB(((ë­­­%%%www222###«««¥¥¥fff&&&xxxJJJDDDeee;;;ŽŽŽÀÀÀø0›%ò%ÊzzzHHH''':::EEE!ù,1 ã@JäD,ȤRé`$0”tJ­Z¯Xl§Á9¡6©°›Ïè39mÎ,¼éQˆMGË릒®€# s#"! ""Š)† ~Œ"efy{(q!") )#)!)#)©Ž£wgš|gr!¬¤s¼¤‰"¾¾w s™z¹frŸ¡±À¬«¡Æ w¬ Í›i€‰„Õaeß ãå ÙàÏuõöišœ&üýþÿ ¨A  $”XȰ¡Ã‡#BT`¡B‚ HhÜȱ£Ç ?z€ð!;torrentflux_2.4/html/themes/hornet/images/index.html0000755000004100000410000000001511017132666023061 0ustar www-datawww-datatorrentflux_2.4/html/themes/hornet/images/bar.gif0000755000004100000410000000325611017132666022331 0ustar www-datawww-dataGIF89adæÁªN€q#͵X=7KB ÿæŽÿÿ¶Ù¿c´ŸDÿî˜seû݃}*œ‰3ïÓx¨”;fZÿö¢åÊn.*.*~*ÿþ¬ÿö¤š‰3ñÓxYN.+fYœˆ3eZWMYM1*teÿþ¬}+û܃ÿí˜ÿö¢sefZïÔxåÊlù݃¨”<ïÓysg¨”;ÿö¢ÿþ®åÉnÿý¬ûÝ‚WNÙ¾c¨•;¶ŸDÿþ®ãÉnãÊlÿî˜ÿý¬Ù¿b.+¨”<åÉlÿý®WNYMYNãÉlÿî—œ‰2´ŸEfYØ¿c¨•úˆÃ–@B¹ãAJ©$b’)¦”@vy¦l¶éæ›pÆ)çœtÖiçs çž|öé矀*è „h „¡ˆ6†ˆê£ˆBš€¤“6zé¥:`º„¥ˆR§KÀAÅ•&)ªaPꨦ°&°Ä’¢Z+¢phšëŒæ9¸àBá‚ À‚¸À¬¯1@à„³¿þŠlÑÆ ­B@ƒ¯Í. 9øê‚Ñ ¡…¶ÝJëê"ë­1aî·ÓK¯´É*[,².8 °8PpÔáx0†ÁW!°{ ñÿà g@±{ DÃìÆ+a²À"/<ÆÂÌòÉ,WQ°g03ÍuTñðÁXÐ@m˜Q‚?[PBG#]‚Ï DQôÏ@?Ý€DC]ÂÑ~8 õ>mÑO3=õ×S;ÅÕQhýsÕC_½ô×8ísS—ÀÝxç­÷Þ|÷í÷߀.¸ß^,0 ¤8â0^øá7®xá‘#n¹á—ÃæˆCn¹#Œ‚æ)À xé CžÂ醯nøá˜~9ãˆ+¾€é DðAD Âî½óþA| B[DÀE0Á;[0±E¿3<Ë3¡ÂöÅ3¿½ôËw`‡ÿ ÒðÁòæï»ÃïÎ|ó*ø®;ïÚ¿?ñÃKÏû €PDO8B@°nàE8ÂŒpá  7PÀ„`GxB8@#ð¤ h„n!a ø Rð‚Dà Ø¿ÜÀƒ(Ä!  @ ¢‡HÄ"ñˆHL¢—xÄ8ñ‰PŒ¢§HÅ*ZñŠXÌb9P p€" CD|‘jà¢*P2¨aŒm¬‚Æ2rQŽÂÐÈ3ˆ€l£»È¨ yäE ‚3Ìñ‹xT$ÿ¨ÇAž¡‹kdÊèEDà“  ¥(GIÊRšò”¨L¥*M;torrentflux_2.4/html/themes/hornet/images/noglass.gif0000755000004100000410000000115711017132666023231 0ustar www-datawww-dataGIF89aLÕ,,,zzz”””kkkžžž;;;KKK[[[‡‡‡[Z[‡ˆ‡[[Zˆ‡‡KKLžŸž‡‡ˆKLKˆ‡ˆ;<;<;;LKK‡ˆˆkjkLKLZ[[;;<ˆˆˆkkj[ZZˆˆ‡ŸžžZ[ZLLLjkkZZ[LLKžžŸKLL<;<žŸŸjkj,Lÿ@€pH,ȤrÉl:ŸP¨aJ­NM›j–ºv»VƒÌ ¾†MtØ+ ¸ßð¸|N¯ÛïvŠ£âp40 ‚"†z  Œ"“{†šz~"z ³´µ¶·¸¹º»¼»¿À¿Á%ÀÃ%ÁÀ4ÇÀÊÊ¿ÏÃÁÇÏÎÈÀØÕÀ ààã  #0-å3åà0 åôæîáîìä#ã#òþÆI'Ÿºâ~¸À@C$ 8TÂaC%:d‘DC/P¡$ !49q$•+bÄxR#ÈŠ)ØÉ³g”PØ@±3„‹¢?}*]Š”iPŸ!ˆu: ªÕ«X³jÝʵ«×® ¨X`A……'Ά‘!ì‰ @À…Á-Ù¸ "ˆ B"´y˘3kÞ̹³çÏ ?]cÅèFÇ8mútêÓ£S¿>°6êÙ¶˜Æ;vnÔ£ƒ;torrentflux_2.4/html/themes/hornet/images/home.gif0000755000004100000410000000064411017132666022513 0ustar www-datawww-dataGIF89a1 Õ*!µ¬iogL‡€kèß’ûò¡e[)÷îMBmeIÞÕŠ]U8|q;}w`g_B# ›‹ˆ‚m|u].%¼¹¯1'¦¢“œ—„/%$iaEÒÉ€rjO0&QG'#-$8-3(…i‘‡LÅ»vðç˜jbF|v_+!5*2'!ù,1 Á@¢E,Ȥr)ª 6–tJ­Z¯Xì§\^à°Xà›Ïèô«´0uÕ`Ô N‡»„7•êƒ }/ |/) sjwyt(‰'(/' // ž )`)vxzjr/r¬/§§°¦'}²iªi¬r˜šœ²Â²‰©’{s¬€‚¦­}ƹÈuרfº’.ÝÞßàáâãâ$*ìíîïðñòð #!+üýþÿ ø@‚… ;torrentflux_2.4/html/themes/hornet/images/history.gif0000755000004100000410000000070111017132666023256 0ustar www-datawww-dataGIF89a1 Õ*!÷îe[)‡€kogLÒÉ€èß’ÞÕŠµ¬i¤š[ûò¡MBmeI|q;…i]U8þõ£/%ñè™1'¦¢“g_B|u]#}w`0&-$$œ—„#rjO.%ˆ‚m¼¹¯ ›‹iaEQG'8-ÓÊ3(‘‡LÅ»vðç˜jbF|v_+!5*2'!ù,1 ÞÀÓ#F,Ȥrù =:˜tJ­Z¯Xì&Tfà0Ø‘Äà2zÍ«n{¶bÍÁ­»^V ÈÛ+-3y--g‰… - `l|~s+3 vy  …y v3 ` gk™lut¡Ÿ +†3,¼½y3¨…²}´k¶¶yv y§©žÂ ‚m³›€©¸, 3Ž-®½­v˜ÈÙzìsÅ×ê32óôõö÷øõ)ù2( "2L¸à¢ Áƒ*\˜°D8˜Àð¢¢Å‹3jܨQ‰A;torrentflux_2.4/html/themes/hornet/images/directory.gif0000755000004100000410000000074011017132666023564 0ustar www-datawww-dataGIF89a1 Õ|q;÷î*!µ¬i‡€kMBogLe[)¤š[ÞÕŠèß’ÒÉ€þõ£ûò¡meI/%1'œ—„ ›‹¶­j¼¹¯#.%g],|u]3(g_BrjO0&÷îž]U8#¦¢“$…iiaEQG'-$8-ˆ‚m}w`‘‡LÅ»vðç˜jbF|v_+!5*2'!ù,1 ýÀHCF,Ȥr‰É4H‚˜tJ­Z¯Xì'4Lhà0€@c„Ïh0nŸ9R·Íj¹Ý-ÖÝ=;æg.‚v.4. -.v4 ‡-z-‡ l-d`}gv-„††Ž¤4 y…44 4«Ÿ~€`y4u†Æ4‚.”zÂ,ÅÆÃ¼»a Á4®¦Æ…¼« ®,±,³4µ·Í . g×¢g ƒÜ`,‚f†‡ ”.˜šp€æÝžƒÏP+LÔŒ‡#JœH‘¢$¦ð B„„/BŠI²¤É“%M@ 0ʼn 0bÊœI³¦Í›6WT¸;torrentflux_2.4/html/themes/hornet/images/proglass.gif0000755000004100000410000000501111017132666023406 0ustar www-datawww-dataGIF89añæÿ>-ÿÿ]ÿ¾6í ÿ>èmÿÞEÿÚDÂÿ “MÃ5ÐkÑ#ÿŽ ÿ ÿÿkÿÿhÿÿbå¯.ÂBðÿVÿ>äÿÿ^ðT ÿÌEÌ ÿYBÿÿgÿÀ8ÿ¥+ÿ¦7Ÿ9ÿÙCà;ÿà[ÿïOÿÇWÿt)í"ÿA&ÿpFÿcõG ÿ£*³›$Ù2ÊU s_ ðÌ:ÿX9ÿ‹(ÿqNÕÏ<ÿŽ9ÿ«WåÿÿVÆ´/ÿÿ]ÝF \ ýwÿuÿ&ÿˆKo<óÿ£EÿWÿw7Ÿ…ÿ5#ÿqÿm=ÿˆBÞÿÚDÿX"ÿbJÿõRÿ¦OÿÿUÿƒPëú0ÿ‹ ÿ+Ôÿb+ÿX2ŠpÿK7ÿñPäéIÿÓëD¯mÿÿmùûèGÿ•Tí|Dÿ"ÿ-"ÿ ÿd4ÿ¢+ÿÿO(ê4ÿ¼Dÿ ÿiLÿ‰0ÿ/ÿ°>ÿõ]ÿM/Ñ—#>ûÿcÿÿoIL,ñÿ€~‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ‡e ¡¢£¤¥£eª«¬­®°°´µ¶·¸º¼¾¿ÀÁÂÃÄÅÆ==ÊËÌÊyÏÐÑy$ÔÕÖÕ&ÙÚÛÙ8&8àáâáh8hçèéêUìíîïð5òóôõôu5uúûüýúQ HP`Ÿƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠd(¡¤É“(Sª\yƒ 0cÊœISf€›8sêÜ©³GŸÍ‚ J´¨´£Ò®)%a‚)·§Ú¦˜˜BµªÕ«S†dµ«×¯^U Q!–¬Ù³hӢ堂-‡·pÿãÊK·®]¹òêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžLÙ/•˘3kÞÌ9³*Ÿ¥ˆMº´iÑ_¤|Yͺµë׬K|)A»¶íÛ¸sëÞÍ[7‰~®¡¸ñãs’+_>LjóçС71Ò¤ºõëØ›0Ñ®‰÷ïàËg2ƒ|ùèÓ«_Ï~½—÷ðãËŸO¿~|0øóëßÏ¿¿ÿÿ(à€hà&¨à‚ 6èàƒF(á„ýaá…f¨á†Ðáxâˆ$’ø„O¤¨âŠ,®(Â"Ä(ãŒ4Òx€Àá8ÜŽ<öèãÄ'äÌ1‡Ç‘H&‰ÿL6yOÞ å”TÞ€„•Hd©å–Zºáå—`†ÉŘd–9¦\ ©‡šk¶éæ›m tÖiçxæ©çžtÚà矀*è „j衈&ªè¢Œ6êè£F*餔Vj饘f:¨ œvêé§ †**¨ÈPª¨¦ªêª¬¦*ª¯zðª³Òjë­¸æªë®¼öÊk“ÀËäÂðƱoØ‘¬Ì6묳' q´ÔV»Å [d«í¶ÜÆáí·à† n ä–kî¹è*¡îºì¶ëî»ê²!ï¼ôÖk¯½<ä«ï¾üöëï¿,ðÀlðÁ'¬ð 7ìðÃG,ñÄû;ÁÿÅðñÆwìñÇ {üÆ#—úñ|ì‚ IÈBòˆL¤"ÉÈF:ò‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉN’ÿ   ¥(GIÊR’’d@%VÉÊVºò•«,dÙÂYÂð–+(@.ÈË^úò—À ¦0y¹ƒ(Zñ˜SdÁXÀÌf:³™W`A4å0Í+ÈášÖ¤¦6Ã80vó›xÀÂ9ÎrŠÓá<§Ûhv> ïŒgæIÏzÚóžøÌ§>÷™8ÌÓŸýL@ JЂô M¨BÊІ:ô¡¨D'JÑŠZô¢ͨF7ÊÑŽz¡?iHc R’Šô¤(M©JU ƒ´0©LgJS™ú7Í 2àƒ ðÔ§@ ªP‡JÔ¢õ¨B}æ3ÇÀ‚18õ©Pƒ¤zͪZõª×ÿ€´Zήzõ«V(gXÇj…²šõ¬hMkYÍpV¶ºÕ fˆ«\çJ׺Ú5®pÈ«^÷Ê×¾úu¯¬`KØÂö°ˆM¬bËØÆ:ö±¬d'KÙÊZö²˜Í¬f7ËYÃ*à³ Uh ÚÑšö´¨M-h)ðYÖº–°­lgë Ôö¶¶õÁmuËÛÞúV·Q ®p‡KÜâBucr—+æ*W/€®t_@Ýê¾ ×mÀÀÝîz·»b¯xÇ;^+„×¼èCY7`… ´·½ˆ¯|çKßúÖ·À¯~‹Àßþú÷¿°€ àÎøÀN°‚Ìà;øÁ~¬ÿ&ü‡ SØÂΰ†7¬†t8 ±ˆGûùÏ€´ MèBÎDH´¢ÍèF;šÑ!Ht¤‰éJ“øÒ˜ñB°€N{úÓ 5¨_°RïøÔ¨NµªUÝ㻚»b2‘gmd&ÛúÖZØ–wÍë,gÙËÀ¶r0lb;ÈN¶²—nÍìf;Ù‡Ž¶´§Míj[ûÚØÎ¶¶·çFóáÑà7¥%Mi;Ó—Þ´º9ÍnQ»»Ó¦.5uå­ê¬úÞø¾nv÷ýêïÆZÈŸµx‘|äZߚɹN¸®Þë†ûÚ ¿¶—‰­åc?ûâ¿x ;torrentflux_2.4/html/themes/glyphic/0000755000004100000410000000000011026130106017743 5ustar www-datawww-datatorrentflux_2.4/html/themes/glyphic/style.css0000755000004100000410000000735511017367654021656 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #ffffff; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .bg { border: 0px outset #E6E6E6; background-color:#606060; } .fg { border: 0px outset #E6E6E6; background-color:#ffffff; } .overCaption {font-family:arial; color:#ffffff; font-size:9pt; font-weight:bold;} .overClose {font-family:arial; background:#E6E6E6; color:#000000; font-size:9pt; font-weight:bold;} .overBody {font-family:arial; background:#ffffff; font-size:9pt; font-weight:normal;} torrentflux_2.4/html/themes/glyphic/index.php0000755000004100000410000000051111017367654021607 0ustar www-datawww-datatorrentflux_2.4/html/themes/glyphic/images/0000755000004100000410000000000011026130106021210 5ustar www-datawww-datatorrentflux_2.4/html/themes/glyphic/images/messages_on.gif0000755000004100000410000000342411017132666024225 0ustar www-datawww-dataGIF89a1 æÉÉɤ¤¤ÝÝÝ………šššŒŒŒSSS|||777¸¸¸ªªªkkk¡¡¡ttt:::uuuŸŸŸ‘‘‘¯¯¯ÚÚÚzzz§§§yyy’’’ÑÑÑ‹‹‹888†††àààiiiooo˜˜˜···ÖÖÖ}}}ÁÁÁ€€€©©©–––ÊÊʵµµ555   HHHbbb³³³111lllVVVÈÈȰ°°hhhggg@@@¹¹¹CCC444âââvvvaaa___{{{ppp‚‚‚¢¢¢ááá“““~~~‡‡‡```jjj«««mmmÞÞÞ›››¥¥¥BBBAAAœœœžžžUUUŽŽŽÀÀÀTTTdddeee999fff™™™ccc!ÿ NETSCAPE2.0!ùd,1 ÿ€0+\„…†‡\„ŠŠ‰ˆˆ9U:-UYYU—˜˜›™œ—›ž£Ÿœ™2U=A._°_Z±°³²µ´¶´·¸Zº±Z´[¼²º¿À¸»¼¿³[ Y_TÚ_@ÙTIá_ä'ÞX Ù[è'_èÒÔÖ _&þ™(°ÁÞØ<|ðP‹o?¼ÁòÊ—´ðð,Xîí#vÍ“ œH÷¥€„ A¨¡åC8*NÊ ðEE¸<ÈÑåµb:u(pÄžLÄBá– '¥¦BåaÆM$©zõ€Q’? hIjD8«árN|ø°’烕T.h)  Ü5–úØ×Ê™agËx}ˆ²Î¢2cÓ o™L¹r—Ê[.gÞ\ÙÆ‚Nð˜|Y3éD„Üð‘‹+®AÊ {öìÚ¶iãÆ rÄ Y,xñB øðãÈ“HÎ|øòçÇ—W1#!ù ,,Ö€ WT„_WW ƒ 1$‹_ŽWˆƒ[—T_žW[_X§XT(  4‚ TZ$_ˆ( ¹WZW _<_$¥ ÍTT“_TW³4Z ‹ TÎ_Â_‹W$ Ú]áᬠ X X¨ZÎõÐ Z·q£öMŽc@Þhº{r"³Õ€n.s‚€x€3d…tm.8.81+™0™ 101˜m‹6/ˆk7 8 .8. ›–¼ ££¾ˆi‹¬xiÊ7µ„¶›0Ó› ÀÕ¨8ÆŽ‡o1uµ¸š¢Õ¢¢ چ܌~sz8 ..µ¤(çíè1ײaÛoÕ 6ʽˣp^B…ðœ`E‹+^Ô¨£ÅŠ=‚ ±D $>dÁRF–/[º„ISæÌ™/è´érB 4DT¨QCÑ£H‘MÊ´éÒ¢D/tp;torrentflux_2.4/html/themes/glyphic/images/profile.gif0000755000004100000410000000105611017132666023361 0ustar www-datawww-dataGIF89a1 Õééé»»»ÒÒÒŠŠŠÜÜÜnnnããã^^^®®®ÈÈÈ”””ooo“““¼¼¼íííèèèÇÇÇ‘‘‘ÛÛÛ’’’€€€___222‚‚‚ÓÓÓ111­­­ŸŸŸEEEQQQ   ªªª:::ÉÉÉLLL‰‰‰cccxxx<<³ÛnËD¡ÐEÔl‹Â“ÁÑomo9ƒg3 <8g“kk:199 =91= 9==r9ŠŒ}g9:º=ug=¢g=¹1©®®: =6¶2::ˆÝ¸= ¡kÏkÑà=11ÍÍÝž9×Ù }l®ððúÄ´b ÓYÏtø6 †1jÙùÙ+žŽI€àÉ SRIxM‡³˜Ù»µ&M 別r#èžE÷ṵ̈Á“çŒKDØØ9”‚Ÿ=‰&ýÙÓ'S0ÀxÑÂD«4®j¥Á+ׯZ½ŠÅ¶ÆW Và(Aâ†Û·¼u+îÜ»toÔ­{—ÅA;torrentflux_2.4/html/themes/glyphic/images/messages_off.gif0000755000004100000410000000111411017132666024355 0ustar www-datawww-dataGIF89a1 Õ€€€OOO^^^nnnÒÒÒ|||ãããÜÜÜŸŸŸéééÈÈȼ¼¼DDD‘‘‘oooèèèÛÛÛïïïÇÇÇ®®®íííiiiEEE:::111zzz°°°RRR   ```³³³KKKªªª’’’<<<___JJJ222444»»»âââPPPNNN}}}CCC333MMM!ù,1 ÿÀLF&K‹)#rÉTÇc’HMa.(RŒëz¿^.L.—&K*6k¿Úð7ÜMŸÇíö·üµÑ¬ñ/zr3y„w{wx,0.2l-+*“3+++š 3+ —*3 3šŒ- 3/**3‘%*×-3Â/-+3/*²·kÔà */äª+¤*+É»š*-Ã/Öšð9‚4ìž8 ² x€`†{—´X€àÅ"¸²–@/-"ŽhôhƽäÄÍ  é’¦@Ðä*ÁŠf¨°i­E:iRx²(0ÐPœAŠÉÐPÀ4£/4JÁ`F€,²²Àªµ+ׯ[µø`À@‚\½níàÀ†`È+·À\»0ðÒÝ‹W¯ß»Dp¸`Aƒ‹Ã-\$VÌXqâŇ3†Ü8r‹ÇŠA(;torrentflux_2.4/html/themes/glyphic/images/progressbar.gif0000755000004100000410000000022211017132666024244 0ustar www-datawww-dataGIF89ad³;Øg§2Sö¹H¸HSõ€9ÚfO÷~¼H«3!ù,d?ðˆI«½8ëÍ»/`A`žhª®lë¾p¼È@ xnß:Î÷„Û¯G,ڌŠo¸C‰€tJ­Z¯Ø¬vËí^;torrentflux_2.4/html/themes/glyphic/images/index.html0000755000004100000410000000001511017132666023221 0ustar www-datawww-datatorrentflux_2.4/html/themes/glyphic/images/bar.gif0000755000004100000410000002543311017132666022472 0ustar www-datawww-dataGIF89aæRRR¶¶¶===WWW,,,LLLºººJJJÆÆÆ888¼¼¼ÂÂÂÌÌÌOOODDDBBB¾¾¾555111ÀÀÀHHH@@@ÊÊÊ‚‚‚}}}~~~zzz|||………uuu‘‘‘[[[‰‰‰yyyˆˆˆ{{{vvvxxx†††„„„”””sssššš‡‡‡oooqqqlll‹‹‹ŒŒŒ’’’hhh___tttrrržžž“““•••gggfffeeeŸŸŸŽŽŽ–––ŠŠŠ˜˜˜dddppp¢¢¢aaa   cccnnn¡¡¡wwwœœœ­­­iii›››£££mmm]]]kkk———jjjbbb©©©UUU\\\ZZZ^^^¬¬¬XXX™™™¥¥¥YYY```§§§PPP¨¨¨±±±³³³¤¤¤«««¦¦¦ªªª°°°TTT®®®¹¹¹QQQGGG¯¯¯ÈÈȵµµ¸¸¸´´´ÉÉɲ²²ÑÑÑßß߃ƒƒ€€€!ù,ÿ€^^U …†‡ˆˆ\‹\‰ \I44@ŒŽ–ŽŒ‰^>GY¢¡£‰™˜‘“•¯—±›Ÿ®¶–¥§©«­]6?DBlJ9CÏj8-)D&*AAO8h,;,~ÔÔ}*l8:W,OMC19(ÕÖÖ#&?R4yBçŽ;)!°QÓ ÇŽ?PôIG-CŸíá€0¤Ï•5=BpÐ@ä‰@)Ý~ØÓÀÁ2eÌœA“VñZ¶mݾ…WîÅuíÞÅ›Wï^¾}×4ø( A&kø0bÆt1Rû³±ãÇ#KžL¹²å±dËš=mZ5›Úÿ¸y'Žœ9t逺ƒ'ž=|ú°%]p`Áƒ ñ2tQ"Åj3råè¤H’&›  ¢¢Ù—ie²¥ù[ÜœtyÞýÉnïP¿FóSú¯°SÄRWuL1«ä®•Áb˹¢K´1×¶­içÜv}æm-´oÑꑨv¦Ú™nùÝ”«³nO¼ê¨ó%ú÷¨à~µ›†šx!ÕÆW+FÞ üëe±š‘ÅÝYÞ‰¶\iã¡Ýy¬µl€!S†=•b÷Yõ˜oüQæ_X™m¦’:(Ç!ÌP‡11w ÑB%üÑG(Le qÆ* 44ñA $@d#ÿ uˆ1,¸¡Å2x€Âi´ƒ 6öCP¨ÑÆOÄЄ"x1C@¸ÑRä±F *œá†Œ#¡‚_Ø¡Fü¡P }¼àCðÅ&EˆàG˜ˆ¢Š,º£Œ4v™ãŽ=þäE™¤K6ùd”SVye–[vùe˜c–yfšk¶ùfœsÖyg yîÙçŸZ衉.Ú裑NZ饙ž˜âŠ-¾ãŒ5Þ8*>)$‘F"©dL: ¥”TZ‰¥–\Þx«˜dš‰¦šlº©œrÒi'žzòé' ‚j(¢Š2ê(¤’Rj)¦š^Û©¶ v‹£ÿŽàš:nªæ²Š®«ëÆê.­ñz &½ºÞÛ«¾üû/±K°²7«0´ Wz sší§ÜŠŠq©â¢Zª k»³fGÍÎ=cëé¶¡z;t¸§’«ê¹é¾Ê®¬ïÖ*ïɹÚËk¾¿ö+,ÀÆœ¬ÁÌ&ü,ÃÒŠµµ>O]±Ð¤b½ñÑ\ƒ¼4Ø$ÛJv½»âëë¾Àú;l±#[ð²;»p´ÿ7 pASÜà X° C *0Ñ…#¤ÆBäP`œàÇr„qFŒ”Zqƒ¬Ð UñÅ, àÁ/ôñƒSt`BQDVÐ<<ðÿ«:ì±%° Í à€ 0E#lp3$á >”€„ bHÁÀƒ+Ø` "(~€Îyt¢#éP§:Ö¹v²£íp§;ÞùîÀñŒ‡< (y΃žô¨g=ìi{ÞŸøÈg>ô©¯ìsüäG?ûáOüóH@"P tàçB7ºÒ.u«ëCë^»ÙÕîv¹Û]ïXÂà ¯xÇKÞòš÷¼èM¯z×ËÞöº÷½ðOP5LßúÚ÷¾øÍ¯~÷SBþö׿ÿp€<`ØÀÎ-1‚N¤`§ˆA+n0‹äb¿HB1¢°Œ+D£ ×C7Òðÿ|rÄ!wxGêˆ}" ˜ÀlÎlâ¡hA*fðŠÔâ'9Â0špŒNÃ@, ÄXJð‰”⫨A,vp‹¿ób/KxB2ªðŒ-T# Û8C8‚ò†9¬#ñøC> ñEd \YL&S‘µld3sÉhŠŒÔc ÍÈÂ4¾2|cù¾9GÚ±‡yÜcýHÄ@1hèÂGF°‚ |`NˆBLA„á(€Âj€©0-è4Ð;l  ¸†þ!!G ްƒ1p`MHÁ 8ð&\ E¨Adà„„à J@ÁÒ`‚1l ûÿJ$`¤Àø@üL‚ NðÀ šÀA:0Ðà‡.T€/Ä',À` pè(jQŒj”£©HIú“¢T¥,u)LeÚšÚ§:å©O*T¢©JeªS¡*UªZ«GÝjW¿Ö±"¡¬gMëZÛúָε®wÍë^_Ð׿v¢½hF7ÊŽ~4¤#-éISºÒ–¾4¦˜iMošÓöô§AjQšÔ¥6õ©QjU¯šUÕz¬b%«Y€Vµ²Õ­p•+]íŠW½òÕ¯€,a…{Øâ&¹Œu,s#û\ÊZ–º™½.gµûÙ¥/ÿjµÊÕó¶V½±u/mã{[úêö¾*ˆ(p ;\Äw±Ê}ls% ]é^¶ºšÅn ‚¹6¸†%®q›ÜÆ.²Îlt+;]ÌZw ؃:»]Ðzw´á5-yS[aÖ¦÷µëmïlákÛùæÖ¾¼ÅBˆõ‹ãû÷Ä=0Ylà"ø§I^2ƒ¹Úï’V¼§-o•ÑëZزW¶ï­­|q[ßÝöu*`AD° aøÚp`à¬RA°°8DêSЂp…'|À hAL³ƒ‚/0à HÁ.*’=Ä!A ú`ƒ>¬a (ƒ F°%„ºAÐÁ $ÿòŒ 'C: ´€Âì PaQ€AF€P!zýàƒ34!OpÁrPƒ¬aŠf´£!-iJ[ÓÐ4§=-P‹šÔ¦Fµª¹ØêWÇzÖ#¨õ­s½ë^ÿ:ØÃ.ö±“½ìÊ:ÚÒ¦¶µ±­mn{Üâ&·¹Ñu³ÛÝð–7½íïE7úÑ‘žt¥/éMwúÓ¡u©OêUƒÔÕ°–5­:q]óÚ×À6±<Ž3ûãÑžvµ¯ímW Ûß÷¸Ë}ît¯»ÝïŽ÷¼ë}ï|ßœß:ÿwÏôƒ]áFoxÒ!.q\;ÝâQÏ8Õ‘­ìÿ«?;ë"çzÉ¿~r±«¼ì-?;ÌÕNo$Úæûι¿ypŸÜàBOxÑŽô‡/ÝÖ¸vZèPÌã¼ß;¸À^ð #œè gué•q¦û½âPÇøÔ7^x>äÕî2°x°£|ì+7ûËÓ.óXÞ홇½Ü;O÷ÚÛ]ô¹?ºÃyßwŠ?ýâR×xÕ‹ßìãk½Ëo~ãSNv–»í1_»pð$¸e/ð0 0T%@dÀ=ð\0CVPðRðÐ920'P~°„W€p!FPb`jþ€H€ˆ€ È€HˆÈ‚"H‚&ˆ‚*È‚.ƒ$8ƒ5xƒ9¸ƒWЃ?„CX„G˜„1°„Mø„Q8…Ux…Y¸…(Ð…_†S0†ex†i¸†ý÷8€x€€ Ø€¸x¸ø‚#X‚'H)¸‚-ø‚1ˆˆ6ˆƒ:ȃ>„BH„Fˆ„JÈ„N…RH…Vˆ…ZÈ…^†bH†fˆ†jÈÿ†ªø†­(‡±X‡´ˆ‡¸¸‡»è‡¿ˆÂ8ˆÅhˆ2HƒÉ¸ˆÌøˆÏ(‰ÒX‰Ôˆ‰×¸‰Ú艠è£ަXü׆«‡®‹t8‹wh‹y˜‹|È‹¾ˆÁ8Œ„è4 RŠnÈŠqøŠs(‹vX‹·¨‡ºØ‡½ø‡À(ˆÄXˆÇˆŠ¸ŒØŒ“8P™ˆœ¸ŸØ¢HŠáh I’yŽ(™ŽÉ’éŽ0¹‘395iŒ‡ˆ“ÊȈŽèŒ‘”¸„A)š˜È¡ø¥ˆ†E0Àk&ÐY$°%`{Y"€>A \àm FÐÐC °ÿà-pP¬òZP5à0T@$°ë†. `4(P?pTà'`; àð‚&ÀÖmЃmÔp}Øs½Ô‹ÝÔxýØ{-ÙUmÎ&Îë¬ÒîÜÒñ Óô<Ó÷lÓúœÓýÌÓÍMToP+@]?n=€1˜9 @ W€yP\4€Ç*°(À¬œE°D0O@sðm"pÇVœ9€ÅFÀn@5@%J0w`XpE Ÿ010æ@>à+@8p U@8°cðqPa°ÿYSbäÜÐ-ÝÔmÝØ­ÝÜÍÞ ÞâMÞæÞêÍÞî ßòmômßø­ßüíß.NàŽà ÎàáNáŽá.Êþá!>â%~â)¾â-þâ1>ã5®7žãÏÝ 0ÝÕ}ÝÙ½ÝRÐÝßÞã]ÞçÞëÝÞ~ðÞñ=ßõ}ßù½ßýýß hå^àÎ ¾à þà>á~á¾áeî .â$nâ(®â4Àâ.ã2Nã6ŽãÍ]ç<žç?Îç~Nä~ä„®ä‡ÎäŠå>åà“žå–¾å™îåœæŸNæ.êg^êjŽêªîæ­^ãAç;~ç=®ÿç@ÞçBþçE.èH^èKžèN¾èQ¾ß’úÚnçxîã{äCèF>èInèˆÞäOÎèRþèU~å”®å˜Þ囿ž>æþ죎榾æ©Þæ¬ç]í±¾íñîí¶î¸~ïåÎëûþëþîèTéoì—Îåšþå.æ ÎðÑžæ§Îæ«þ殎Jà6 tõ{00`"ð27Ð.Ð=°0kâí$°$àj_P.°' Í:k+àLÀ@% i@Xð<°RL0 LÀ* u  :$6ð"°E°ÉS`ÿÅ–Q0/à@&;^`B.@EÐ @H’I µ= ó<ï>ôBOôFôJÏôNP/õToõX¯õ\ïõ`/ödoöh¯ölïöp/÷to÷x¯÷|ï÷€/ø„oøˆ¯ŠÏøŽù’Où–ùšÏùžO /ú¤ßó?ôC_ôGŸôKßô"ðôQ?õ PõWŸõx¼õ]ÿõa?öeöi¿ömÿöq?÷uJuJL]$06S8E0S&Y;JQc/I_O;9^FB0.tE28 D5$II}b=~6h~?{C0F"2!7-.=0"ÿ>$$_ _e.['<~:1kq+>LD%1iDX<R@LC L‚„†ˆŠŒŽ I¢d “&Nž@‰"e •*V®`ÉJ2E .]¼|FÌ2eÌœA“FÍ6mܼGÎ:uìþüÁpAŒ”‹»zý 6¬Ø±dËš=‹6­ÚµlÛº} 7®Ü¹tëÚ½‹7¯Þ½|û J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³*â̸“£ÏAE-y¥Ò•M]Beçž}jt›ñ£‰Œ$"RŒhÑ‚F†BØl°BbÉLL©A¸ O¸åÇ0%”°`òçC2;RxÁâB–$.¼pÑAå‚‚&(dà3±el ÿá„N‰¡•fé!—!~I¢˜'¦h&‹i¾È¦ŒoÖ(gxtêxgzÙç€9h’†2™(„H"å…Ujˆe‡[‚èåˆašH¦Šg¶¨&2ѤÆâšá•jùa—"‚Yâ˜(–¹"š.®£›4Æù©9ÚÉcž?ò)äŸE Šd¡K"êäµ6K峑ò:m¥À^›©¶Åvêm›3Âi#¹u{é'‘I¨’‡6©hHáÃ?xB@8qA 'HáÁ)¬ðA<(¡‡ 7t‚ 1ä F5¬ à Œ¡J1¤àB-tÐBK”à‡ x„ QtƒzLÿ±A3<ÃhRˆ ‚#†j´‘à :`1À ̱ÂNÜÀotÀàP„@*˜ Åİ<°€Á,l±…„AhÌ±Ç ‹L²É(«Ì²Ë0ËL³Í8ë̳Ï@ M´ÑH+Í´ÓPKMµÕXk͵×`‹M¶Ùh«Í¶ÛpËM·Ý<à­7ß~.8á†#®8ãŽwüqÈ#—|rÊ+·ürÌ3×|sÎ;÷üó7A]ôÑI/ÝôÓQO]õÕYo E×_‡=vÙg§½vÛoÇ=wÝwç½wß>xá‡KÜâÔи)/rÍ£ô.7=ÍY¯sÙ÷D÷½Ò‰uå[ú\·>عÿovñ³ýrw?ÞùnÁóñ¨8Œ%rÌ›Üó,'½ÌUsØûÜöbнÑÏtHÖÔЃ.OrΫ\ô0G½Í]ÏsÚ ÷H¾Ó‘OuçkúØ»÷ÑN~·«Ÿîð×;ý¯Ã ñ¶àB‰ ¤!ˆC(J‡¤"1ˆEÖ¥ïuí“üj7?ÜÙowùûÿ„÷¿â ° bhR°2œÀH Ц…(4À/ÐÁB…0!#èš -<"RÀnð?¨à#ÁZ@[^€.€\`)` DÉ?  RxBH  `ÿNðC8Š ”  18¬0“#`"è@ÀdÀ &`2<€…Р9XÃ>@‚xaˆS$%-‰IMrÒ“ %)M‰JU²Ò•€¥,iéË\î²—·¦0‰iLd*“™Î„¦4©iMlj3Üô&8ÅIN ˜êd§;á)ÏÐÓžøÔ'?ý PVò’™Üd:ùÉP޲”§Lå*[ùÊXβ–·´(/}©Ñaó˜ÉDHŸÍiVóšÙÜf7¿Îq–óœé\g;ßÏyÖóžùÜg?ÿ©†€Nò§*QzT†*õ¡M(Tq©Ë©f4˜VíhV—¹ƒfru¤_5ÿ©XUZÖ–¾4­2ekMo WÎu ‘¼+AƒzТ*© ]*D%úÔŠ£¿D,„¨†&øt´*BºÐ¤:”©u*E£úZªÊöªÕjcCÚU’‚õ¤)%+KÏ SµÎ´­6}kNåêOÐÞ¨¹Ý+oQûWà²v¸„½¨q7ŠÜÅnU¤^-iXQ:Ö•šÕ¥héZiêVœÆu§^ÃH„Á6˜Á„‘ôA] ~ È *8 > …ü )èÀlPƒÕ²&èƒ Zìà[€ƒ¼0 ! .ø0‚fT¡&ØÀ 8 t@ ÿ4@‡;\à$@Á 0Ð?ÐR&2ñfÐÀaà2PÂ_h¨ÜÀbP Œ`3ØÁ–0…-Œa sØÃ 1‰M쫘Å.†±Œilcë˜Ç>²‰ld$+™ÉN†²”©le,gyË]þrÂ<æ2Ÿ9Íknó›ã<ç'xÁhðƒ#<á _8Ãîð‡C<â;áÄ)^1 ZüâϸÆ7ÎñŽ{,‚yÈE>r’—Üä'GyÊU¾2–µÌe/ƒYÌd63Ьf6»Îr.°«ík<ÓzÏ·ö³®ÝkBZØÄVô±­lH7[ÒЮô´1mÿíMgÛÓµµ·G nSÕæ¾¬î:ÃZÖy®5Ÿqýç] Ú×À>ô°ml'«hµÅï„H„ x„ ¨„Ø„…8…h…¨…¨-6å>Ð?pV`/àTÀp`P;@" )àJ€D =a0E€5°“Ž( ( *ð* ÿ3à00ÐPÛÇEðÐp!ÐÐJ*°ð€GpD}àp@: j0Vðä4DePP4d°RðÐÉFPKgêèìèŽð(ôhø¨üè)i© é?‘I‘‰‘É‘ ’! ’$i’(©’,é’0)“4i“8©“<é“@)”DùF‰”JÉ”N • •Ti•ëØŽïóX÷˜ûØÿY™ ÙÙ`mY‘™‘Ù‘’#Y’'™’+Ù’=ð’19“P“7™“;Ù“?”CYÿ”jp”IÙKÙ”O¹Q9•~P•W™••É•˜ù•›)–žY–¡‰–¤¹–¦9‘¨ —«9—®y—±©—´i›~™›€É›ƒù›†)œÄ¹˜È阉ŽÏI™[y™^©™aÙ™d šg9šjÉ–Þù–ª9É‚gŽ“©•–Ù•™ –œ9–Ÿi–¢™–¥‘ššqÉšti—°™—³É—·ù—»)˜¾Y˜Á‰˜Ã©˜ÆÉ˜É¹œ`Ÿ ú¡Õ韚š¡§i *žuùšx)›{Y›}‰›º˜½I˜Ày˜‰YœÇÙ˜Êù˜S™’ä {Ó“20{&p~PUÐ#` D¶ÿ/ N0+`1 à@Þ!$ðp$p"¦`+ÀP"0}à@5 PrY`ÎGs€§!pàð‘pXPTà©] [ð) &@°Q@ApK`I` @Q9 ¥\Š^ ¦bJ¦fЦjªlê¦p*§tj§xzzʧ~ ¨‚j„j¨ˆª¨Œê¨*©”j©˜jšÊ©ž ª¢Jª¦ŠªªÊª® «²J«¶Š«ºÊ«¾ ¬ÂJ¬IÐ¥Dð¥;¦cZ¦gš¦kÚ¦oêq:§uz§yº§}ú§:ÿ¨…z¨‰º¨ú¨‘:©•z©™º©}ЩŸª0ª¥zªª«Úª¯«³Z«·š«»Ú«¿ZKÁ:¬[ú¯Æ°ÈZ°ËŠ°Îª°Ñê°Ô±ØJ±ÛÚ­ ®;®k®!«®%Û®) ¯-;¯0k¯3›¯6KKXª³Åz¬›¬ˬ ­ +­[­p­«­› aë¯+°«¬۬Ϻ° ;­k­›­Ë­û­+®[® ‹®"K²ìz²îª²,+¯/[¯2‹¯5»¯P·;{·?«·h;´jû·m‹´q[¸L‹¸áʱäú±çš®#»®&‹²ïº²ñê²ô³÷J³úzÿ³’wb@'p/à+°/Ð p7[Ps “J`P]P` P®ê¸`@°Y°I@5P4P¦ppK¿K0×[5P0fð¶a¿pOà ’-€•X°4À«æk¾!°L `y ð[ÀL"à ÂëÄk¼È«¼Ìë¼Ð+½Ôk½Ø«½À½Þ ¾âK¾ÿx¾é»¾íû¾ñ;¿õ{¿ú»¿ýû¿<À|ÀÀ“ÊÀTàÀ,Á\ÁœÁ\°Á>ÐÁÂ#\Â'¬)¼ÂÇ›¼ËÛÿ¼Ï½Ó[½×›½Û۽߾ã[¾>¬¾ìë¾ð+¿F@¿ö‹¿úË¿Uà¿,ÀlÀ}€À ,ÅTì<Áµ„ŬÁìÁ ,Â$lÂ(<¼Å{Æ.¬Æ1ÜÆ4 Ç7,Ç:\Ç=lè‹ÇA¼ÇDüÇG,È„¼Ä‡ìÄP¼À üÀŽlÅ‘lÁ“¼Å•üŘ\ÂÐeÜÉ-œÆ0ÌÆ3üÆ6ŒÃs¼Ãv¬Ê?œÇB,¿™¼œÌÂhüÂk,Ãn\ÃqœÃtÌÃæKͬ¬ÇCÜÇE Èù+ËJlÈMœÈO¼È¹\Å\Á~Å”ÜÅ– Æ™\ÌÇÌÍŸ¼Ìà<ÊÏlÊå<Í« ÄêÌÇ~lÄœÿÄ…ÌĈ¬ÈQ|Ï»œÏ’¬Å\ìÅ—Æl0°Uà€ÄdF¿@Ц猾Q Y€.ÀŽJ6ñË]šö[̸‘Bô<ÓFPÓ7í9½Ó=ýÓ^2ÔDm¿F}ÔëJÈPíÔLm¿RMÕVm¾X­ÕÌÕ^M` bMÖfÖ Ö'Ò+ýÖqÓäAÓ6Ó0 Ó5ÀÓÆêÓ€ÔC]Ôˆ)ØI}†ÝÔOýÓ‹]Õ½üؽÿÕ]ýÕa=Ö.PÖgm¾i]ÒÝÖ,íÒ0=פ}×yÚ{ÝÚ~ý×ÅÛG=ÛK}Ø·­Øæ;Õº}Õ}ÐÛæ+ÙÀmÙÂMܵœÍÖŸÍÜrMÍtmצڪݬ ÔÕ Û2AØQÝÞžíÖð-Úó]Úx}Úz½Ú|íÚB Û‚=Ø…ØOÜÝQýÝŒ½ÛãMÞæMÙÁÙÅÍÞÈíÞ×Í-ßÏ]ß Žß ¾ß€ÝHMØ´-áˆ Õ¹ÝØ~ÀÛ½á•}ÙÃÙúÜ6NÞB¾¥ãý.˜Õ“‡pJ¾äLÞäNþäPåQ ä½,ääMä tä?å\Þå^þåJ>åAnååF^xáœä`¾ælÞæˆéTNæCާYŽææ«ænžçzÎäb^åržÕf®åiæhç^æt~æH¾çŒÞè2Ñ燎èE.èwîè–~阞难éœÞéžþé ê¢>ê¤^ê¦~ꨞꪾê¬Þê®þê°ë²>ë´Þä;torrentflux_2.4/html/themes/glyphic/images/noglass.gif0000755000004100000410000000115711017132666023371 0ustar www-datawww-dataGIF89aLÕ,,,zzz”””kkkžžž;;;KKK[[[‡‡‡[Z[‡ˆ‡[[Zˆ‡‡KKLžŸž‡‡ˆKLKˆ‡ˆ;<;<;;LKK‡ˆˆkjkLKLZ[[;;<ˆˆˆkkj[ZZˆˆ‡ŸžžZ[ZLLLjkkZZ[LLKžžŸKLL<;<žŸŸjkj,Lÿ@€pH,ȤrÉl:ŸP¨aJ­NM›j–ºv»VƒÌ ¾†MtØ+ ¸ßð¸|N¯ÛïvŠ£âp40 ‚"†z  Œ"“{†šz~"z ³´µ¶·¸¹º»¼»¿À¿Á%ÀÃ%ÁÀ4ÇÀÊÊ¿ÏÃÁÇÏÎÈÀØÕÀ ààã  #0-å3åà0 åôæîáîìä#ã#òþÆI'Ÿºâ~¸À@C$ 8TÂaC%:d‘DC/P¡$ !49q$•+bÄxR#ÈŠ)ØÉ³g”PØ@±3„‹¢?}*]Š”iPŸ!ˆu: ªÕ«X³jÝʵ«×® ¨X`A……'Ά‘!ì‰ @À…Á-Ù¸ "ˆ B"´y˘3kÞ̹³çÏ ?]cÅèFÇ8mútêÓ£S¿>°6êÙ¶˜Æ;vnÔ£ƒ;torrentflux_2.4/html/themes/glyphic/images/home.gif0000755000004100000410000000077711017132666022662 0ustar www-datawww-dataGIF89a1 Õ»»»®®®ŠŠŠ”””nnníííãããÜÜÜ‘‘‘^^^JJJ}}}111ÇÇǼ¼¼éééÒÒÒ´´´ŒŒŒÛÛÛ‰‰‰999LLLEEE•••ªªª“““QQQddd222yyy<<<¬¬¬xxx’’’ÓÓÓ:::zzzOOOCCCâââ{{{DDD‹‹‹PPP444NNN333MMM!ù,1 ÿ@‡C+È$’¨lÂNHÕªZ©Öª ›ÍR¹Þë¶Ê0ÈT™YL=k»wlݦÏÝø|]Þ(åykzt€…{z)0*ˆl+“j “1+3+„lk†‹vz  331 3 + m+†vk/Œ«znƒ3ƒ¥+3Ð3Á”‰{ƪÚu1 á²´&1Ð1ÔÑÔ1 Ä†Üxƒä1– ÑÁÿ’VÄc“ÈX‡zöâ1”ˆ¡Ãd©þ¼˜81E Š/.f¤hq#ÆŠ5~¤èA H°@±’åJ0cÂDáÒåK™4YÖ”¢ ->\pA´(¢.%º©S¦H›&%Zaă ;torrentflux_2.4/html/themes/glyphic/images/history.gif0000755000004100000410000000102511017132666023416 0ustar www-datawww-dataGIF89a1 ÕÈÈÈ”””éééÒÒÒnnn®®®ŠŠŠãããíííoooÜÜÜŸŸŸÛÛÛ€€€___¼¼¼   èèècccªªª‰‰‰ŒŒŒÉÉÉ´´´888<<<­­­‘‘‘’’’QQQKKK;;;111FFFïïï‚‚‚^^^JJJxxxyyy~~~}}}000ÇÇÇ|||222•••“““»»»OOOzzzCCCâââ{{{PPPDDD‹‹‹444NNN333MMM!ù,1 ÿ@ÖkG,ÅrÉ<†F¢Mmš«Z«Ôi {ín»`,hÑ«ùÎhôã¤}¼w¦Ãßõ7oåÙ™ávv2ytvp6x€h†Œg8ei‡>6 >‰66$-< Ÿ› 6 gusp’9Šg> „‰ < >„¸ g nz3‘“wy–Å»¹ œ>s‰‰q2 h²eæiƒÔÛ„&6<‰Ä–¸Â>÷•>8*1~ôÜaÇ.Q$ø àÆ 8Ár £’g³já9k%@"6:Í Ž“(Sžœ‘r†K–8`¶Ä‘Ì›,?”€¡áŠ2@oÐJcèРG…*š4(R¥Ei¤pQ!C thÕ`«W®]¿Šë5¬Ö ;torrentflux_2.4/html/themes/glyphic/images/directory.gif0000755000004100000410000000106211017132666023722 0ustar www-datawww-dataGIF89a1 Õãããééézzz€€€®®®ŠŠŠ333”””^^^ŸŸŸÒÒÒnnn¼¼¼ÛÛÛÈÈÈ“““èèèooo___ÇÇÇ}}}ÜÜÜJJJ222íííïïï‘‘‘   ’’’ddd:::¯¯¯xxx<<<999ªªª000EEE‰‰‰ŒŒŒ´´´LLLqqqQQQ­­­CCCOOOâââ»»»PPP‹‹‹{{{DDDNNN444MMM!ù,1 ÿ@&G,Ȥrù9aD°Û-*­Z§VªöZ¥b­É¶Ò™Ï„‚î3·Ïï7€«ÇÏn8®ÒÉÁàg/3uxnm‡f3/…€xo4~…2•3:2˜3—: 23‹3:3jfc:‡—3ƒ™ 82 ¡»: Š ™ : j : ¸oŠ:‚˜:¹22݉/‚m™ ‹:Ôg1‘¸gǽÂáf8$Ø…ã…‚e2p8ƒ¶Ç Ùƒ0)s À‰Ó±¡…\•,LP]¬6˜! ¡ÐÄ1oåŠéHf®Ff,8ÔÆÞ­O?4b¥1t¨P¢1ŽEÊ4)S °JµÅ$.„°Áµ«^¿Š K–+X°fèPBÅ (j¨A×À\ºxåæÕ»·¯_»5R¸x;torrentflux_2.4/html/themes/glyphic/images/proglass.gif0000755000004100000410000000502111017132666023547 0ustar www-datawww-dataGIF89añæÓpkÌçš·ÃurQ-pIm”G‘Ó…ÉÑ„M¡Q0),|-MgX’EYSŒ¨[‰J6²ò¥Íížj»lLs&u䔥pXi)²è›u4ÉÊ…U0醂æï¢“ÄwŒ¶i¹·v3k¸Ðƒfm!ÚÔ˜ÒÛŽÖÇ•§˜fr©]¸rbÜ–†…Azx7¥µhA°``dS‚5Š:uÊzÖ…y¨§eê—\Ì|»¨yÚ¹•j©IC…ƒBO¾nàæšcw*4ˆ8‚šM’™LµXQÔ¥Šnxǵ…“„R»šv3£SÁg_™—VÍ”}Ç¥‚d¥Ñ„ …]õŒ‰¢Þ‘Ñ·Žã“ã¢p8!b;Ÿ§Zš]I[ ®ŒiÂ…q'–Fàzv»Üi؈®DAZBpu*>”DŸ÷§~'€×‡Þ­’r u%¼ROÉ_]œ:5¾Žs¯´i‡²~eof.ÆÂ„¢PEð‘‹°¦o®aT¿¼~ÞÞšÈ|nY®_p €ïŸ‰ø¨ {+!ù,ñÿ€~‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ‡e ¡¢£¤¥£eª«¬­®°°´µ¶·¸º¼¾¿ÀÁÂÃÄÅÆ==ÊËÌÊyÏÐÑy$ÔÕÖÕ&ÙÚÛÙ8&8àáâáh8hçèéêUìíîïð5òóôõôu5uúûüýúQ HP`Ÿƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠd(¡¤É“(Sª\yƒ 0cÊœISf€›8sêÜ©³GŸÍ‚ J´¨´£Ò®)%a‚)·§Ú¦˜˜BµªÕ«S†dµ«×¯^U Q!–¬Ù³hӢ堂-‡·pÿãÊK·®]¹òêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžLÙ/•˘3kÞÌ9³*Ÿ¥ˆMº´iÑ_¤|Yͺµë׬K|)A»¶íÛ¸sëÞÍ[7‰~®¡¸ñãs’+_>LjóçС71Ò¤ºõëØ›0Ñ®‰÷ïàËg2ƒ|ùèÓ«_Ï~½—÷ðãËŸO¿~|0øóëßÏ¿¿ÿÿ(à€hà&¨à‚ 6èàƒF(á„ýaá…f¨á†Ðáxâˆ$’ø„O¤¨âŠ,®(Â"Ä(ãŒ4Òx€Àá8ÜŽ<öèãÄ'äÌ1‡Ç‘H&‰ÿL6yOÞ å”TÞ€„•Hd©å–Zºáå—`†ÉŘd–9¦\ ©‡šk¶éæ›m tÖiçxæ©çžtÚà矀*è „j衈&ªè¢Œ6êè£F*餔Vj饘f:¨ œvêé§ †**¨ÈPª¨¦ªêª¬¦*ª¯zðª³Òjë­¸æªë®¼öÊk“ÀËäÂðƱoØ‘¬Ì6묳' q´ÔV»Å [d«í¶ÜÆáí·à† n ä–kî¹è*¡îºì¶ëî»ê²!ï¼ôÖk¯½<ä«ï¾üöëï¿,ðÀlðÁ'¬ð 7ìðÃG,ñÄû;ÁÿÅðñÆwìñÇ {üÆ#—úñ|ì‚ IÈBòˆL¤"ÉÈF:ò‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉN’ÿ   ¥(GIÊR’’d@%VÉÊVºò•«,dÙÂYÂð–+(@.ÈË^úò—À ¦0y¹ƒ(Zñ˜SdÁXÀÌf:³™W`A4å0Í+ÈášÖ¤¦6Ã80vó›xÀÂ9ÎrŠÓá<§Ûhv> ïŒgæIÏzÚóžøÌ§>÷™8ÌÓŸýL@ JЂô M¨BÊІ:ô¡¨D'JÑŠZô¢ͨF7ÊÑŽz¡?iHc R’Šô¤(M©JU ƒ´0©LgJS™ú7Í 2àƒ ðÔ§@ ªP‡JÔ¢õ¨B}æ3ÇÀ‚18õ©Pƒ¤zͪZõª×ÿ€´Zήzõ«V(gXÇj…²šõ¬hMkYÍpV¶ºÕ fˆ«\çJ׺Ú5®pÈ«^÷Ê×¾úu¯¬`KØÂö°ˆM¬bËØÆ:ö±¬d'KÙÊZö²˜Í¬f7ËYÃ*à³ Uh ÚÑšö´¨M-h)ðYÖº–°­lgë Ôö¶¶õÁmuËÛÞúV·Q ®p‡KÜâBucr—+æ*W/€®t_@Ýê¾ ×mÀÀÝîz·»b¯xÇ;^+„×¼èCY7`… ´·½ˆ¯|çKßúÖ·À¯~‹Àßþú÷¿°€ àÎøÀN°‚Ìà;øÁ~¬ÿ&ü‡ SØÂΰ†7¬†t8 ±ˆGûùÏ€´ MèBÎDH´¢ÍèF;šÑ!Ht¤‰éJ“øÒ˜ñB°€N{úÓ 5¨_°RïøÔ¨NµªUÝ㻚»b2‘gmd&ÛúÖZØ–wÍë,gÙËÀ¶r0lb;ÈN¶²—nÍìf;Ù‡Ž¶´§Míj[ûÚØÎ¶¶·çFóáÑà7¥%Mi;Ó—Þ´º9ÍnQ»»Ó¦.5uå­ê¬úÞø¾nv÷ýêïÆZÈŸµx‘|äZߚɹN¸®Þë†ûÚ ¿¶—‰­åc?ûâ¿x ;torrentflux_2.4/html/themes/matrix_chinese/0000755000004100000410000000000011026130106021306 5ustar www-datawww-datatorrentflux_2.4/html/themes/matrix_chinese/style.css0000755000004100000410000000654411017367654023220 0ustar www-datawww-dataFONT {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} TD {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} BODY {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} P {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} DIV {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} INPUT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} TEXTAREA {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} SELECT {BORDER-TOP-COLOR: #000000; BORDER-LEFT-COLOR: #000000; BORDER-RIGHT-COLOR: #000000; BORDER-BOTTOM-COLOR: #000000; BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 1px; FONT-FAMILY: Verdana,Helvetica; BORDER-RIGHT-WIDTH: 1px} FORM {FONT-FAMILY: Verdana,Helvetica; FONT-SIZE: 12px} A:link {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:active {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:visited {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} A:hover {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .titleblack {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 14px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .content {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .block-title {BACKGROUND: none; COLOR: #FFFFFF; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .storytitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .storycat {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .boxtitle {BACKGROUND: none; COLOR: #363636; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .boxcontent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica} .option {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 12px; FONT-WEIGHT: bold; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tiny {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinywhite {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} .tinyunderline {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .title {FONT-FAMILY: Verdana,Helvetica; FONT-WEIGHT: bold; COLOR: #ffffff; FONT-SIZE: 12px} .adminlink {BACKGROUND: none; COLOR: #ffffff; FONT-SIZE: 12px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: underline} .tinypercent {BACKGROUND: none; COLOR: #000000; FONT-SIZE: 9px; FONT-WEIGHT: normal; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none} torrentflux_2.4/html/themes/matrix_chinese/index.php0000755000004100000410000000051111017367654023152 0ustar www-datawww-datatorrentflux_2.4/html/themes/matrix_chinese/images/0000755000004100000410000000000011026130106022553 5ustar www-datawww-datatorrentflux_2.4/html/themes/matrix_chinese/images/messages_on.gif0000755000004100000410000000043311017132666025565 0ustar www-datawww-dataGIF89a1 ÄÌÌÌÀÀÀ­­­«««¥¥¥ŽŽŽŒŒŒ‹‹‹|||zzzxxxwwwfffeeeJJJHHHEEEDDDBBB===;;;:::222///((('''&&&%%%###!ùÿ,1 ˜`×idižhª®µ]V,ÏtmvnMŽfI‘ pB#rY |Ì¡²˜&©Ñ!Dq€F«T£5Y3·]K6•àuíý’Íå¢|έóxlfKtjYnˆdXzY…k‰‹‘a\j˜™šU˜™œœŸ£›¦˜  ®¯°±²²e³³ ½¾¿ÀÁÂÃÃ!;torrentflux_2.4/html/themes/matrix_chinese/images/admin.gif0000755000004100000410000000043711017132666024356 0ustar www-datawww-dataGIF89a1 ÄÀÀÀÿ­­­«««¥¥¥ŽŽŽŒŒŒ‹‹‹|||zzzxxxwwwfffeeeJJJHHHEEEDDDBBB===;;;:::222///((('''&&&%%%###!ùÿ,1 œ`×idižhª®µ]V,ÏrPÓx®[“£Y’ˆpHŽÈ±X\2™ ÄïÙT&C$RI%B‡i·™äËÚòø¶ŒÏè­q~}GØâñUžMc×`yThfUYvBxnˆKjD~ˆŠˆ\V–€nžŸž¢ £G¤¥¥  ±²³²H´·¸¹± ÁÂÃÄÅÆÇÇ!;torrentflux_2.4/html/themes/matrix_chinese/images/profile.gif0000755000004100000410000000046511017132666024727 0ustar www-datawww-dataGIF89a1 ÄÀÀÀÿ­­­«««¥¥¥ŽŽŽŒŒŒ‹‹‹|||zzzxxxwwwfffeeeJJJHHHEEEDDDBBB===;;;:::222///((('''&&&%%%###!ùÿ,1 ²`×idižhª®µ]Vrmß2×z<9‹$B$ŠÈ£ ÎdRY ‚Ó'“Jm6£Lï“ Q°_í¶¨lkÁF8ÙŒŽC¹÷ûvÌÎËgvK\^l}|ƒ‡G€u_ˆ…ˆ~‚i‡‹Rƒ]oKD˜†n¤p†vŸ¨¨€‚w°N°µ³´µ³¶»¹¶  ÅÆÆÇÊÇÉÈËÌÇ רÙÚÛÜÝÝ!;torrentflux_2.4/html/themes/matrix_chinese/images/messages_off.gif0000755000004100000410000000043311017132666025723 0ustar www-datawww-dataGIF89a1 ÄÀÀÀÿ­­­«««¥¥¥ŽŽŽŒŒŒ‹‹‹|||zzzxxxwwwfffeeeJJJHHHEEEDDDBBB===;;;:::222///((('''&&&%%%###!ùÿ,1 ˜`×idižhª®µ]V,ÏtmvnMŽfI‘ p B#rY |Ì¡²˜&©Ñ!Dq€F«T£5Y3·]K6•àuíý’Íå¢|έóxlfKtjYnˆdXzY…k‰‹‘a\j˜™šU˜™œœŸ£›¦˜  ®¯°±²²e³³ ½¾¿ÀÁÂÃÃ!;torrentflux_2.4/html/themes/matrix_chinese/images/progressbar.gif0000755000004100000410000000022211017132666025607 0ustar www-datawww-dataGIF89ad³;Øg§2Sö¹H¸HSõ€9ÚfO÷~¼H«3!ù,d?ðˆI«½8ëÍ»/`A`žhª®lë¾p¼È@ xnß:Î÷„Û¯G,ڌŠo¸C‰€tJ­Z¯Ø¬vËí^;torrentflux_2.4/html/themes/matrix_chinese/images/index.html0000755000004100000410000000001511017132666024564 0ustar www-datawww-datatorrentflux_2.4/html/themes/matrix_chinese/images/bar.gif0000755000004100000410000000326611017132666024035 0ustar www-datawww-dataGIF89adænnn>>>xxx ¨¨¨ÉÉÉ‚‚‚ddd±±±555ŸŸŸGGGQQQ•••ZZZ---¹¹¹ŒŒŒGHGÁÂÁ¹¹ºPQQ–••%%%-,,QPQ,--$$$%$$655ÂÂÁGGHŸžŸ±°±º¹¹556--,•–•ŒŒ‹žŸŸZZ[••–565[ZZ¹º¹ÂÂÂŒ‹ŒÁÁÁŸŸž$%%‚‚Z[ZeddÁ‹‹Œ‹Œ‹°±±ÂÁÁ‚‚[Z[Œ‹‹ÁÁÂ$%$%$%%%$‹‹‹±±°QQPdde-,-‚‚Z[[$$%¹ººHGGÊÉɺº¹dedPPQºººÂÁ––•‹ŒŒ[[[,,-,-,–––656ÉÊÉ[[ZdeeedePQP¨§¨GHHÉÉʺ¹º•––žŸžHHG‚§¨¨eedžžŸŸžž‚‚QPP,,,°°±°±°±°°–•–§§¨¨¨§HGHHHH!ù,dÿ€‚h‚…†R„ƒ‚_†ŒR“–R’—Œ•”…‰R35??;§;$;3$?5$°53³W¯DD$W?5Wµª²?D·®Â3Æ$½;Ê»$5·Ê¸D¤WÆ55ÏÂ;¥$3ÝͳáÁß$VV2SPë(Vi(÷ë2êñâM‘eŸ2ÞY)ˆ/Ÿ +àDž{SÖQ¤øp @|Òø‹˜ð Šu2î݃(á„'ÈŒ™ä¥‚—6cº”ÉSæž0Oļù2 P™F{%Ú3‰Î£ ’Îăgè§yŠžpªÀ€×¯`Êû¦Ìس^ùx5k€-Z°eÿú¼ ¶¬7L0`£×„ ½ â˜Ì@¯ -ü28ü—AaÇ&ZØ`ƒqä-(#–Ób1dÈ+f¼˜´ 9Ž Ní¸sœ½¡p~ðàmÚ/^hÐðË XvÓö­ÁöŠß/º$/®aî5]V¬ð-ýÁ àÑiï¶mü6ôî´ÛF~{Ïõ/Žïý` oáúˆÃ–@B¹ãAJ©$b’)¦”@vy¦l¶éæ›pÆ)çœtÖiçs çž|öé矀*è „h „¡ˆ6†ˆê£ˆBš€¤“6zé¥:`º„¥ˆR§KÀAÅ•&)ªaPꨦ°&°Ä’¢Z+¢phšëŒæ9¸àBá‚ À‚¸À¬¯1@à„³¿þŠlÑÆ ­B@ƒ¯Í. 9øê‚Ñ ¡…¶ÝJëê"ë­1aî·ÓK¯´É*[,².8 °8PpÔáx0†ÁW!°{ ñÿà g@±{ DÃìÆ+a²À"/<ÆÂÌòÉ,WQ°g03ÍuTñðÁXÐ@m˜Q‚?[PBG#]‚Ï DQôÏ@?Ý€DC]ÂÑ~8 õ>mÑO3=õ×S;ÅÕQhýsÕC_½ô×8ísS—ÀÝxç­÷Þ|÷í÷߀.¸ß^,0 ¤8â0^øá7®xá‘#n¹á—ÃæˆCn¹#Œ‚æ)À xé CžÂ醯nøá˜~9ãˆ+¾€é DðAD Âî½óþA| B[DÀE0Á;[0±E¿3<Ë3¡ÂöÅ3¿½ôËw`‡ÿ ÒðÁòæï»ÃïÎ|ó*ø®;ïÚ¿?ñÃKÏû €PDO8B@°nàE8ÂŒpá  7PÀ„`GxB8@#ð¤ h„n!a ø Rð‚Dà Ø¿ÜÀƒ(Ä!  @ ¢‡HÄ"ñˆHL¢—xÄ8ñ‰PŒ¢§HÅ*ZñŠXÌb9P p€" CD|‘jà¢*P2¨aŒm¬‚Æ2rQŽÂÐÈ3ˆ€l£»È¨ yäE ‚3Ìñ‹xT$ÿ¨ÇAž¡‹kdÊèEDà“  ¥(GIÊRšò”¨L¥*M;torrentflux_2.4/html/themes/matrix_chinese/images/noglass.gif0000755000004100000410000000115711017132666024734 0ustar www-datawww-dataGIF89aLÕ,,,zzz”””kkkžžž;;;KKK[[[‡‡‡[Z[‡ˆ‡[[Zˆ‡‡KKLžŸž‡‡ˆKLKˆ‡ˆ;<;<;;LKK‡ˆˆkjkLKLZ[[;;<ˆˆˆkkj[ZZˆˆ‡ŸžžZ[ZLLLjkkZZ[LLKžžŸKLL<;<žŸŸjkj,Lÿ@€pH,ȤrÉl:ŸP¨aJ­NM›j–ºv»VƒÌ ¾†MtØ+ ¸ßð¸|N¯ÛïvŠ£âp40 ‚"†z  Œ"“{†šz~"z ³´µ¶·¸¹º»¼»¿À¿Á%ÀÃ%ÁÀ4ÇÀÊÊ¿ÏÃÁÇÏÎÈÀØÕÀ ààã  #0-å3åà0 åôæîáîìä#ã#òþÆI'Ÿºâ~¸À@C$ 8TÂaC%:d‘DC/P¡$ !49q$•+bÄxR#ÈŠ)ØÉ³g”PØ@±3„‹¢?}*]Š”iPŸ!ˆu: ªÕ«X³jÝʵ«×® ¨X`A……'Ά‘!ì‰ @À…Á-Ù¸ "ˆ B"´y˘3kÞ̹³çÏ ?]cÅèFÇ8mútêÓ£S¿>°6êÙ¶˜Æ;vnÔ£ƒ;torrentflux_2.4/html/themes/matrix_chinese/images/home.gif0000755000004100000410000000043311017132666024212 0ustar www-datawww-dataGIF89a1 ÄÀÀÀÿ­­­«««¥¥¥ŽŽŽŒŒŒ‹‹‹|||zzzxxxwwwfffeeeJJJHHHEEEDDDBBB===;;;:::222///((('''&&&%%%###!ùÿ,1 ˜`×idižhª®µ]V,ÏtÔõד£Y’ˆpH„Çb`ÉŒ$‹Ðâ­‘Ч Q¨['ó¸tÉͰ°ûµ¨¯áñ{í«ÇZ¸yζÇÅyHr|unoeeUƒo}†wf‚{Œ^n˜™š™K›˜œ ¤  ¬­®¯°¬¯³±° ½¾¿ÀÁÂÃÃ!;torrentflux_2.4/html/themes/matrix_chinese/images/history.gif0000755000004100000410000000043611017132666024766 0ustar www-datawww-dataGIF89a1 ÄÀÀÀÿ­­­«««¥¥¥ŽŽŽŒŒŒ‹‹‹|||zzzxxxwwwfffeeeJJJHHHEEEDDDBBB===;;;:::222///((('''&&&%%%###!ùÿ,1 ›`×idižhª®µ]V,Ïtmßøäh–ýÀ 0 c±¸@ð–ÅäÐ!Z•ÐDqxf‘Õª5¨Lb³Û®å‹ÄºÍmé7íeKåà0ü¼¤¯íG|fW|}\uYce`‹l?~va’bCƒ”s\kœžžfI¤¡ Ÿ©  ±²³´µ¶¶¹ ÀÁÂÃÄÅÆÆ!;torrentflux_2.4/html/themes/matrix_chinese/images/directory.gif0000755000004100000410000000043111017132666025264 0ustar www-datawww-dataGIF89a1 ÄÀÀÀÿ­­­«««¥¥¥ŽŽŽŒŒŒ‹‹‹|||zzzxxxwwwfffeeeJJJHHHEEEDDDBBB===;;;:::222///((('''&&&%%%###!ùÿ,1 –`×idižhª®µ]V,Ïtmßøäh–ýÀ 0¢q¸@ð–¤T‰<“P DqxfTjŒýF¶]‹™8JÉe(Úû •W¬x9W›§{mof}kvwG`kg\tYyqH‚{Chj™š›™IœžŸœ¥  ¬­®¯°±±´ »¼½¾¿ÀÁÁ!;torrentflux_2.4/html/themes/matrix_chinese/images/proglass.gif0000755000004100000410000000502111017132666025112 0ustar www-datawww-dataGIF89añæÓpkÌçš·ÃurQ-pIm”G‘Ó…ÉÑ„M¡Q0),|-MgX’EYSŒ¨[‰J6²ò¥Íížj»lLs&u䔥pXi)²è›u4ÉÊ…U0醂æï¢“ÄwŒ¶i¹·v3k¸Ðƒfm!ÚÔ˜ÒÛŽÖÇ•§˜fr©]¸rbÜ–†…Azx7¥µhA°``dS‚5Š:uÊzÖ…y¨§eê—\Ì|»¨yÚ¹•j©IC…ƒBO¾nàæšcw*4ˆ8‚šM’™LµXQÔ¥Šnxǵ…“„R»šv3£SÁg_™—VÍ”}Ç¥‚d¥Ñ„ …]õŒ‰¢Þ‘Ñ·Žã“ã¢p8!b;Ÿ§Zš]I[ ®ŒiÂ…q'–Fàzv»Üi؈®DAZBpu*>”DŸ÷§~'€×‡Þ­’r u%¼ROÉ_]œ:5¾Žs¯´i‡²~eof.ÆÂ„¢PEð‘‹°¦o®aT¿¼~ÞÞšÈ|nY®_p €ïŸ‰ø¨ {+!ù,ñÿ€~‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ‡e ¡¢£¤¥£eª«¬­®°°´µ¶·¸º¼¾¿ÀÁÂÃÄÅÆ==ÊËÌÊyÏÐÑy$ÔÕÖÕ&ÙÚÛÙ8&8àáâáh8hçèéêUìíîïð5òóôõôu5uúûüýúQ HP`Ÿƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠd(¡¤É“(Sª\yƒ 0cÊœISf€›8sêÜ©³GŸÍ‚ J´¨´£Ò®)%a‚)·§Ú¦˜˜BµªÕ«S†dµ«×¯^U Q!–¬Ù³hӢ堂-‡·pÿãÊK·®]¹òêÝË·¯ß¿€ L¸°áÈ+^̸±ãÇ#KžLÙ/•˘3kÞÌ9³*Ÿ¥ˆMº´iÑ_¤|Yͺµë׬K|)A»¶íÛ¸sëÞÍ[7‰~®¡¸ñãs’+_>LjóçС71Ò¤ºõëØ›0Ñ®‰÷ïàËg2ƒ|ùèÓ«_Ï~½—÷ðãËŸO¿~|0øóëßÏ¿¿ÿÿ(à€hà&¨à‚ 6èàƒF(á„ýaá…f¨á†Ðáxâˆ$’ø„O¤¨âŠ,®(Â"Ä(ãŒ4Òx€Àá8ÜŽ<öèãÄ'äÌ1‡Ç‘H&‰ÿL6yOÞ å”TÞ€„•Hd©å–Zºáå—`†ÉŘd–9¦\ ©‡šk¶éæ›m tÖiçxæ©çžtÚà矀*è „j衈&ªè¢Œ6êè£F*餔Vj饘f:¨ œvêé§ †**¨ÈPª¨¦ªêª¬¦*ª¯zðª³Òjë­¸æªë®¼öÊk“ÀËäÂðƱoØ‘¬Ì6묳' q´ÔV»Å [d«í¶ÜÆáí·à† n ä–kî¹è*¡îºì¶ëî»ê²!ï¼ôÖk¯½<ä«ï¾üöëï¿,ðÀlðÁ'¬ð 7ìðÃG,ñÄû;ÁÿÅðñÆwìñÇ {üÆ#—úñ|ì‚ IÈBòˆL¤"ÉÈF:ò‘Œ¤$'IÉJZò’˜Ì¤&7ÉÉN’ÿ   ¥(GIÊR’’d@%VÉÊVºò•«,dÙÂYÂð–+(@.ÈË^úò—À ¦0y¹ƒ(Zñ˜SdÁXÀÌf:³™W`A4å0Í+ÈášÖ¤¦6Ã80vó›xÀÂ9ÎrŠÓá<§Ûhv> ïŒgæIÏzÚóžøÌ§>÷™8ÌÓŸýL@ JЂô M¨BÊІ:ô¡¨D'JÑŠZô¢ͨF7ÊÑŽz¡?iHc R’Šô¤(M©JU ƒ´0©LgJS™ú7Í 2àƒ ðÔ§@ ªP‡JÔ¢õ¨B}æ3ÇÀ‚18õ©Pƒ¤zͪZõª×ÿ€´Zήzõ«V(gXÇj…²šõ¬hMkYÍpV¶ºÕ fˆ«\çJ׺Ú5®pÈ«^÷Ê×¾úu¯¬`KØÂö°ˆM¬bËØÆ:ö±¬d'KÙÊZö²˜Í¬f7ËYÃ*à³ Uh ÚÑšö´¨M-h)ðYÖº–°­lgë Ôö¶¶õÁmuËÛÞúV·Q ®p‡KÜâBucr—+æ*W/€®t_@Ýê¾ ×mÀÀÝîz·»b¯xÇ;^+„×¼èCY7`… ´·½ˆ¯|çKßúÖ·À¯~‹Àßþú÷¿°€ àÎøÀN°‚Ìà;øÁ~¬ÿ&ü‡ SØÂΰ†7¬†t8 ±ˆGûùÏ€´ MèBÎDH´¢ÍèF;šÑ!Ht¤‰éJ“øÒ˜ñB°€N{úÓ 5¨_°RïøÔ¨NµªUÝ㻚»b2‘gmd&ÛúÖZØ–wÍë,gÙËÀ¶r0lb;ÈN¶²—nÍìf;Ù‡Ž¶´§Míj[ûÚØÎ¶¶·çFóáÑà7¥%Mi;Ó—Þ´º9ÍnQ»»Ó¦.5uå­ê¬úÞø¾nv÷ýêïÆZÈŸµx‘|äZߚɹN¸®Þë†ûÚ ¿¶—‰­åc?ûâ¿x ;torrentflux_2.4/html/all_services.php0000755000004100000410000000365411017367654020242 0ustar www-datawww-data
"; echo displayDriveSpaceBar(getDriveSpace($cfg["path"])); echo "
"; ?>
; position:relative; width:740; height:500; padding-left: 5px; padding-right: 5px; z-index:1; overflow: scroll; visibility: visible"> "; echo ""._DRIVESPACE."\n\n"; echo $result; echo "


"; echo $result2; echo "


"; echo ""._SERVERSTATS."\n\n"; echo $result4; echo "


"; echo $result5; echo ""; echo "
"; DisplayFoot(); ?> torrentflux_2.4/html/blank.html0000755000004100000410000000010611017132666017011 0ustar www-datawww-dataBlank Page torrentflux_2.4/html/admin.php0000755000004100000410000025754311017424431016652 0ustar www-datawww-data ".$newSite." [".$newLink."]"); } header("location: admin.php?op=editLinks"); } //**************************************************************************** // addLink -- adding a link //**************************************************************************** function addLink($newLink,$newSite) { if(!empty($newLink)) { if(strpos($newLink, "http://" ) !== 0 && strpos($newLink, "https://" ) !== 0 && strpos($newLink, "ftp://" ) !== 0) { $newLink = "http://".$newLink; } empty($newSite) && $newSite = $newLink; global $cfg; addNewLink($newLink, $newSite); AuditAction($cfg["constants"]["admin"], "New "._LINKS_MENU.": ".$newSite." [".$newLink."]"); } header("location: admin.php?op=editLinks"); } //**************************************************************************** // moveLink -- moving a link up or down in the list of links //**************************************************************************** function moveLink($lid, $direction) { global $db, $cfg; if (!isset($lid) && !isset($direction)&& $direction !== "up" && $direction !== "down" ) { header("location: admin.php?op=editLinks"); } $idx = getLinkSortOrder($lid); $position = array("up"=>-1, "down"=>1); $new_idx = $idx+$position[$direction]; $sql = "UPDATE tf_links SET sort_order=".$idx." WHERE sort_order=".$new_idx; $db->Execute($sql); showError($db, $sql); $sql = "UPDATE tf_links SET sort_order=".$new_idx." WHERE lid=".$lid; $db->Execute($sql); showError($db, $sql); header("Location: admin.php?op=editLinks"); } //**************************************************************************** // addRSS -- adding a RSS link //**************************************************************************** function addRSS($newRSS) { if(!empty($newRSS)){ global $cfg; addNewRSS($newRSS); AuditAction($cfg["constants"]["admin"], "New RSS: ".$newRSS); } header("location: admin.php?op=editRSS"); } //**************************************************************************** // addUser -- adding a user //**************************************************************************** function addUser($newUser, $pass1, $userType) { global $cfg; $newUser = strtolower($newUser); if (IsUser($newUser)) { DisplayHead(_ADMINISTRATION); // Admin Menu displayMenu(); echo "
"._TRYDIFFERENTUSERID."
".$newUser." "._HASBEENUSED."



"; DisplayFoot(); } else { addNewUser($newUser, $pass1, $userType); AuditAction($cfg["constants"]["admin"], _NEWUSER.": ".$newUser); header("location: admin.php?op=CreateUser"); } } //**************************************************************************** // updateUser -- updating a user //**************************************************************************** function updateUser($user_id, $org_user_id, $pass1, $userType, $hideOffline) { global $cfg; $user_id = strtolower($user_id); if (IsUser($user_id) && ($user_id != $org_user_id)) { DisplayHead(_ADMINISTRATION); // Admin Menu displayMenu(); echo "
"._TRYDIFFERENTUSERID."
".$user_id." "._HASBEENUSED."


"; echo "["._RETURNTOEDIT." ".$org_user_id."]



"; DisplayFoot(); } else { // Admin is changing id or password through edit screen if(($user_id == $cfg["user"] || $cfg["user"] == $org_user_id) && $pass1 != "") { // this will expire the user $_SESSION['user'] = md5($cfg["pagetitle"]); } updateThisUser($user_id, $org_user_id, $pass1, $userType, $hideOffline); AuditAction($cfg["constants"]["admin"], _EDITUSER.": ".$user_id); header("location: admin.php"); } } //**************************************************************************** // deleteLink -- delete a link //**************************************************************************** function deleteLink($lid) { global $cfg; AuditAction($cfg["constants"]["admin"], _DELETE." Link: ".getSite($lid)." [".getLink($lid)."]"); deleteOldLink($lid); header("location: admin.php?op=editLinks"); } //**************************************************************************** // deleteRSS -- delete a RSS link //**************************************************************************** function deleteRSS($rid) { global $cfg; AuditAction($cfg["constants"]["admin"], _DELETE." RSS: ".getRSS($rid)); deleteOldRSS($rid); header("location: admin.php?op=editRSS"); } //**************************************************************************** // deleteUser -- delete a user (only non super admin) //**************************************************************************** function deleteUser($user_id) { global $cfg; if (!IsSuperAdmin($user_id)) { DeleteThisUser($user_id); AuditAction($cfg["constants"]["admin"], _DELETE." "._USER.": ".$user_id); } header("location: admin.php"); } //**************************************************************************** // showIndex -- default view //**************************************************************************** function showIndex($min = 0) { global $cfg; DisplayHead(_ADMINISTRATION); // Admin Menu displayMenu(); // Show User Section displayUserSection(); echo "
"; // Display Activity displayActivity($min); DisplayFoot(); } //**************************************************************************** // showUserActivity -- Activity for a user //**************************************************************************** function showUserActivity($min=0, $user_id="", $srchFile="", $srchAction="") { global $cfg; DisplayHead(_ADMINUSERACTIVITY); // Admin Menu displayMenu(); // display Activity for user displayActivity($min, $user_id, $srchFile, $srchAction); DisplayFoot(); } //**************************************************************************** // backupDatabase -- backup the database //**************************************************************************** function backupDatabase() { global $cfg; $file = $cfg["db_name"]."_".date("Ymd").".tar.gz"; $back_file = $cfg["torrent_file_path"].$file; $sql_file = $cfg["torrent_file_path"].$cfg["db_name"].".sql"; $sCommand = ""; switch($cfg["db_type"]) { case "mysql": $sCommand = "mysqldump -h ".$cfg["db_host"]." -u ".$cfg["db_user"]." --password=".$cfg["db_pass"]." --all -f ".$cfg["db_name"]." > ".$sql_file; break; default: // no support for backup-on-demand. $sCommand = ""; break; } if($sCommand != "") { shell_exec($sCommand); shell_exec("tar -czvf ".$back_file." ".$sql_file); // Get the file size $file_size = filesize($back_file); // open the file to read $fo = fopen($back_file, 'r'); $fr = fread($fo, $file_size); fclose($fo); // Set the headers header("Content-type: APPLICATION/OCTET-STREAM"); header("Content-Length: ".$file_size.";"); header("Content-Disposition: attachement; filename=".$file); // send the tar baby echo $fr; // Cleanup shell_exec("rm ".$sql_file); shell_exec("rm ".$back_file); AuditAction($cfg["constants"]["admin"], _BACKUP_MENU.": ".$file); } } //**************************************************************************** // displayMenu -- displays Admin Menu //**************************************************************************** function displayMenu() { global $cfg; echo ""; echo ""; echo "
"; echo ""._ADMIN_MENU." | "; echo ""._SETTINGS_MENU." | "; echo ""._QMANAGER_MENU." | "; echo ""._SEARCHSETTINGS_MENU." | "; echo ""._ACTIVITY_MENU." | "; echo ""._LINKS_MENU." | "; echo "rss | "; echo ""._NEWUSER_MENU." | "; echo ""._BACKUP_MENU.""; echo "

"; } //**************************************************************************** // displayActivity -- displays Activity //**************************************************************************** function displayActivity($min=0, $user="", $srchFile="", $srchAction="") { global $cfg, $db; $sqlForSearch = ""; $userdisplay = $user; if($user != "") { $sqlForSearch .= "user_id='".$user."' AND "; } else { $userdisplay = _ALLUSERS; } if($srchFile != "") { $sqlForSearch .= "file like '%".$srchFile."%' AND "; } if($srchAction != "") { $sqlForSearch .= "action like '%".$srchAction."%' AND "; } $offset = 50; $inx = 0; if (!isset($min)) $min=0; $max = $min+$offset; $output = ""; $morelink = ""; $sql = "SELECT user_id, file, action, ip, ip_resolved, user_agent, time FROM tf_log WHERE ".$sqlForSearch."action!=".$db->qstr($cfg["constants"]["hit"])." ORDER BY time desc"; $result = $db->SelectLimit($sql, $offset, $min); while(list($user_id, $file, $action, $ip, $ip_resolved, $user_agent, $time) = $result->FetchRow()) { $user_icon = "images/user_offline.gif"; if (IsOnline($user_id)) { $user_icon = "images/user.gif"; } $ip_info = htmlentities($ip_resolved, ENT_QUOTES)."
".htmlentities($user_agent, ENT_QUOTES); $output .= "
".$user_id."  ".$user_id."  
".htmlentities($action, ENT_QUOTES)."
"; $output .= htmlentities($file, ENT_QUOTES); $output .= "
".date(_DATETIMEFORMAT, $time)."
-- "._NORECORDSFOUND." --
    :    :    :
"; echo ""; echo "
"; echo "  "._ACTIVITYLOG." ".$cfg["days_to_keep"]." "._DAYS." (".$userdisplay.")"; if(!empty($prevlink) && !empty($morelink)) echo "".$prevlink.$morelink."
"; elseif(!empty($prevlink)) echo "".$prevlink.""; elseif(!empty($prevlink)) echo "".$morelink.""; else echo ""; echo ""; echo ""; echo "
"._USER."
"; echo "
"._ACTION."
"; echo "
"._FILE."
"; echo "
"._IP."
"; echo "
"._TIMESTAMP."
"; echo ""; echo $output; if(!empty($prevlink) || !empty($morelink)) { echo ""; echo "
"; if(!empty($prevlink)) echo $prevlink; echo ""; if(!empty($morelink)) echo $morelink; echo "
"; echo ""; } echo ""; } //**************************************************************************** // displayUserSection -- displays the user section //**************************************************************************** function displayUserSection() { global $cfg, $db; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; $total_activity = GetActivityCount(); $sql= "SELECT user_id, hits, last_visit, time_created, user_level FROM tf_users ORDER BY user_id"; $result = $db->Execute($sql); while(list($user_id, $hits, $last_visit, $time_created, $user_level) = $result->FetchRow()) { $user_activity = GetActivityCount($user_id); if ($user_activity == 0) { $user_percent = 0; } else { $user_percent = number_format(($user_activity/$total_activity)*100); } $user_icon = "images/user_offline.gif"; if (IsOnline($user_id)) { $user_icon = "images/user.gif"; } echo ""; if (IsUser($user_id)) { echo ""; } else { echo ""; } echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
  "._USERDETAILS."
"._USER."
"._HITS."
"._UPLOADACTIVITY." (".$cfg["days_to_keep"]." "._DAYS.")
"._JOINED."
"._LASTVISIT."
"._ADMIN."
".$user_id."".$user_id."
".$hits."
"; ?>
/images/proglass.gif" width=""> /images/noglass.gif" width="">
%
" border="0">
"; echo "
".date(_DATEFORMAT, $time_created)."
".date(_DATETIMEFORMAT, $last_visit)."
"; $user_image = "images/user.gif"; $type_user = _NORMALUSER; if ($user_level == 1) { $user_image = "images/admin_user.gif"; $type_user = _ADMINISTRATOR; } if ($user_level == 2) { $user_image = "images/superadmin.gif"; $type_user = _SUPERADMIN; } if ($user_level <= 1 || IsSuperAdmin()) { echo ""; } echo ""; if ($user_level <= 1) { echo ""; } else { echo ""; } echo "
"; ?> qstr($user_id); list($user_id, $hits, $last_visit, $time_created, $user_level, $hide_offline, $theme, $language_file) = $db->GetRow($sql); $user_type = _NORMALUSER; if ($user_level == 1) { $user_type = _ADMINISTRATOR; $selected_n = ""; $selected_a = "selected"; $editUserImage = "images/admin_user.gif"; } if ($user_level >= 2) { $user_type = _SUPERADMIN; $editUserImage = "images/superadmin.gif"; } if ($hide_offline == 1) { $hide_checked = "checked"; } $user_activity = GetActivityCount($user_id); if ($user_activity == 0) { $user_percent = 0; } else { $user_percent = number_format(($user_activity/$total_activity)*100); } echo "
"; echo ""; echo ""; echo "
"; echo "   "._EDITUSER.": ".$user_id.""; echo "
"; ?>
" valign="top">
 
/images/proglass.gif" width=""> /images/noglass.gif" width="">
%
()





[]
">
:
:
:
:
>
"; echo "

"; // Show User Section displayUserSection(); echo "

"; DisplayFoot(); } //**************************************************************************** // CreateUser -- Create a user //**************************************************************************** function CreateUser() { global $cfg; DisplayHead(_USERADMIN); // Admin Menu displayMenu(); echo "
"; echo ""; echo ""; echo "
"; echo "   "._NEWUSER.""; echo "
"; ?>
:
:
:
:

"; echo "

"; // Show User Section displayUserSection(); echo "

"; DisplayFoot(); } //**************************************************************************** // editLinks -- Edit Links //**************************************************************************** function editLinks() { global $cfg; DisplayHead(_ADMINEDITLINKS); // Admin Menu displayMenu(); echo "
"; echo ""; echo ""; $arLinks = GetLinks(); if (is_array($arLinks)) { $arLid = Array_Keys($arLinks); $inx = 0; $link_count = count($arLinks); foreach($arLinks as $link) { $lid = $arLid[$inx++]; $ed = getRequestVar("edit"); if (!empty($ed) && $ed == $link['lid']) { echo "\n"; echo ""; } } } echo "
"; echo "  "._ADMINEDITLINKS.""; echo "
"; ?>
: Site Name:
"; ?>
: Site Name:
"; echo " "; echo " "; echo "".$link['sitename'].""; if ($inx > 1 ){ // Only put an 'up' arrow if this isn't the first entry: echo ""; echo "Up"; } if ($inx != count($arLinks)) { // Only put a 'down' arrow if this isn't the last item: echo ""; echo "Down"; } echo "



"; DisplayFoot(); } //**************************************************************************** // editRSS -- Edit RSS Feeds //**************************************************************************** function editRSS() { global $cfg; DisplayHead("Administration - RSS"); // Admin Menu displayMenu(); echo "
"; echo ""; echo ""; $arLinks = GetRSSLinks(); $arRid = Array_Keys($arLinks); $inx = 0; if(is_array($arLinks)) { foreach($arLinks as $link) { $rid = $arRid[$inx++]; echo "\n"; } } echo "
"; echo "  RSS Feeds"; echo "
"; ?>
:
 "; echo "".$link."



"; DisplayFoot(); } //**************************************************************************** // validateFile -- Validates the existance of a file and returns the status image //**************************************************************************** function validateFile($the_file) { $msg = "
Path is not Valid"; if (isFile($the_file)) { $msg = ""; } return $msg; } //**************************************************************************** // validatePath -- Validates TF Path and Permissions //**************************************************************************** function validatePath($path) { $msg = "
Path is not Valid"; if (is_dir($path)) { if (is_writable($path)) { $msg = ""; } else { $msg = "
Path is not Writable -- make sure you chmod +w this path"; } } return $msg; } //**************************************************************************** // configSettings -- Config the Application Settings //**************************************************************************** function configSettings() { global $cfg; include_once("AliasFile.php"); include_once("RunningTorrent.php"); DisplayHead("Administration - Settings"); // Admin Menu displayMenu(); // Main Settings Section echo "
"; echo ""; echo ""; echo "
"; echo "  TorrentFlux Settings"; echo "
"; ?>
Path
Define the PATH where the downloads will go
(make sure it ends with a / [slash]). It must be chmod'd to 777:
" size="55">
Python Path
Specify the path to the Python binary (usually /usr/bin/python or /usr/local/bin/python):
" size="55">
btphptornado Path
Specify the path to the btphptornado python script:
" size="55">
btshowmetainfo Path
Specify the path to the btshowmetainfo python script:
" size="55">
Use Advanced Start Dialog
When enabled, users will be given the advanced start dialog popup when starting a torrent:
Enable File Priority
When enabled, users will be allowed to select particular files from the torrent to download:
Max Upload Rate
Set the default value for the max upload rate per torrent:
" size="5"> KB/second
Max Download Rate
Set the default value for the max download rate per torrent (0 for no limit):
" size="5"> KB/second
Max Upload Connections
Set the default value for the max number of upload connections per torrent:
" size="5">
Port Range
Set the default values for the for port range (Min - Max):
" size="5"> - " size="5">
Rerequest Interval
Set the default value for the rerequest interval to the tracker (default 1800 seconds):
" size="5">
Allow encrypted connections
Check to allow the client to accept encrypted connections.
Only allow encrypted connections
Check to force the client to only create and accept encrypted connections.
Stealth crypto
Prevent all non-encrypted connection attempts. (Note: will result in an effectively firewalled state on older trackers.)
Extra BitTornado Commandline Options
DO NOT include --max_upload_rate, --minport, --maxport, --max_uploads, --crypto_allowed, --crypto_only, --crypto_stealth here as they are included by TorrentFlux settings above:
" size="55">
Enable Torrent Search
When enabled, users will be allowed to perform torrent searches from the home page:
Default Torrent Search Engine
Select the default search engine for torrent searches:
Enable Make Torrent
When enabled, users will be allowed make torrent files from the directory view:
btmakemetafile.py Path
Specify the path to the btmakemetafile.py python script (used for making torrents):
" size="55">
Enable Torrent File Download
When enabled, users will be allowed download the torrent meta file from the torrent list view:
Enable File Download
When enabled, users will be allowed download from the directory view:
Enable Text/NFO Viewer
When enabled, users will be allowed to view Text/NFO files from the directory listing:
Download Package Type
When File Download is enabled, users will be allowed download from the directory view using a packaging system. Make sure your server supports the package type you select:
Show Server Load
Enable showing the average server load over the last 15 minutes from file:
loadavg Path
Path to the loadavg file:
" size="55">
Days to keep Audit Actions in the Log
Number of days that audit actions will be held in the database:
" size="3">
Minutes to Keep User Online Status
Number of minutes before a user status changes to offline after leaving TorrentFlux:
" size="2">
Minutes to Cache RSS Feeds
Number of minutes to cache the RSS XML feed on server (speeds up reload):
" size="3">
Page Refresh (in seconds)
Number of seconds before the torrent list page refreshes:
" size="3">
Enable Security Code Login
Requires users to enter a security code from a generated graphic to login (if enabled automated logins will NOT work):
Default Theme
Select the default theme that users will have (including login screen):
Default Language
Select the default language that users will have:
Show SQL Debug Statements
SQL Errors will always be displayed but when this feature is enabled the SQL Statement that caused the error will be displayed as well:
Default Torrent Completion Activity
Select whether or not a torrent should keep seeding when download is complete (please seed your torrents):
Default Percentage When Seeding should Stop
Set the default share pecentage where torrents will shutoff when running torrents that do not die when done. Value '0' will seed forever.
" size="3">%


"; DisplayFoot(); } //**************************************************************************** // updateConfigSettings -- updating App Settings //**************************************************************************** function updateConfigSettings() { global $cfg; $tmpPath = getRequestVar("path"); if (!empty($tmpPath) && substr( $tmpPath, -1 ) != "/") { // path requires a / on the end $_POST["path"] = $_POST["path"] . "/"; } if ((array_key_exists("AllowQueing",$_POST) && $_POST["AllowQueing"] != $cfg["AllowQueing"]) || (array_key_exists("maxServerThreads",$_POST) && $_POST["maxServerThreads"] != $cfg["maxServerThreads"]) || (array_key_exists("maxUserThreads",$_POST) && $_POST["maxUserThreads"] != $cfg["maxUserThreads"]) || (array_key_exists("sleepInterval",$_POST) && $_POST["sleepInterval"] != $cfg["sleepInterval"]) || (array_key_exists("debugTorrents",$_POST) && $_POST["debugTorrents"] != $cfg["debugTorrents"]) || (array_key_exists("tfQManager",$_POST) && $_POST["tfQManager"] != $cfg["tfQManager"]) || (array_key_exists("btphpbin",$_POST) && $_POST["btphpbin"] != $cfg["btphpbin"]) ) { // kill QManager process; if(getQManagerPID() != "") { stopQManager(); } $settings = $_POST; saveSettings($settings); AuditAction($cfg["constants"]["admin"], " Updating TorrentFlux Settings"); // if enabling Start QManager if($cfg["AllowQueing"]) { sleep(2); startQManager($cfg["maxServerThreads"], $cfg["maxUserThreads"], $cfg["sleepInterval"]); sleep(1); } } else { $settings = $_POST; saveSettings($settings); AuditAction($cfg["constants"]["admin"], " Updating TorrentFlux Settings"); } $continue = getRequestVar('continue'); header("Location: admin.php?op=".$continue); } //**************************************************************************** // queueSettings -- Config the Queue Settings //**************************************************************************** function queueSettings() { global $cfg; include_once("AliasFile.php"); include_once("RunningTorrent.php"); DisplayHead("Administration - Search Settings"); // Admin Menu displayMenu(); // Queue Manager Section echo "
"; echo ""; echo ""; echo ""; echo "
"; echo ""; if(checkQManager() > 0) { echo "   Queue Manager Running [PID=".getQManagerPID()." with ".strval(getRunningTorrentCount())." torrent(s)]"; } else { echo "   Queue Manager Off"; } echo ""; echo "
"; ?>
Enable Queue Manager
Enable the Queue Manager to allow users to queue torrents:
tfQManager Path
Specify the path to the tfQManager python script:
" size="55">
Max Server Threads
Specify the maximum number of torrents the server will allow to run at one time (admins may override this):
" size="3">
Max User Threads
Specify the maximum number of torrents a single user may run at one time:
" size="3">
Polling Interval
Number of seconds the Queue Manager will sleep before checking for new torrents to run:
" size="3">



"; $displayQueue = True; $displayRunningTorrents = True; // Its a timming thing. if ($displayRunningTorrents) { // get Running Torrents. $runningTorrents = getRunningTorrents(); } if ($displayQueue) { $output = ""; echo "\n"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "\n"; $qDir = $cfg["torrent_file_path"]."queue/"; if (is_dir($cfg["torrent_file_path"])) { if (is_writable($cfg["torrent_file_path"]) && !is_dir($qDir)) { @mkdir($qDir, 0777); } // get Queued Items and List them out. $output .= ""; $handle = @opendir($qDir); while($filename = readdir($handle)) { if ($filename != "tfQManager.log") { if ($filename != "." && $filename != ".." && strpos($filename,".pid") == 0) { $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .= ""; $output .= "\n"; } } } closedir($handle); } if( strlen($output) == 0 ) { $output = ""; } echo $output; echo "
"; echo ""; echo ""; echo "
   Queued Items
"; echo "
"._USER."
"._FILE."
"._TIMESTAMP."
"; $af = new AliasFile(str_replace("queue/","",$qDir).str_replace(".Qinfo","",$filename), ""); $output .= $af->torrentowner; $output .= "
".str_replace(array(".Qinfo",".stat"),"",$filename)."
".date(_DATETIMEFORMAT, strval(filectime($qDir.$filename)))."
Queue is Empty
"; } if ($displayRunningTorrents) { $output = ""; echo "\n"; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "\n"; // get running torrents and List them out. $runningTorrents = getRunningTorrents(); if(is_array($runningTorrents)) { foreach ($runningTorrents as $key => $value) { $rt = new RunningTorrent($value); $output .= $rt->BuildAdminOutput(); } } if( strlen($output) == 0 ) { $output = ""; } echo $output; echo "
"; echo ""; echo ""; echo "
   Running Items
"; echo "
"._USER."
"._FILE."
".str_replace(" ","
",_FORCESTOP)."
No Running Torrents
"; } DisplayFoot(); } //**************************************************************************** // searchSettings -- Config the Search Engine Settings //**************************************************************************** function searchSettings() { global $cfg; include_once("AliasFile.php"); include_once("RunningTorrent.php"); include_once("searchEngines/SearchEngineBase.php"); DisplayHead("Administration - Search Settings"); // Admin Menu displayMenu(); // Main Settings Section echo "
"; echo ""; echo ""; echo "
"; echo "  Search Settings"; echo "
"; ?>
Select Search Engine
"; echo "\n"; echo ""; ?>
initialized) { echo ""; echo ""; echo "
  ".$sEngine->mainTitle." Search Settings
updateURL)>0) { ?> catFilterName == '') { ?> \n"; echo " \n"; } } } echo "
Search Engine URL: mainURL."\" target=\"_blank\">".$sEngine->mainTitle.""; ?>
Search Module Author: author; ?>
Version: version; ?>
Update Location: updateURL."\" target=\"_blank\">Check for Update"; ?>
Search Filter:
Select the items that you DO NOT want to show in the torrent search:
catFilterName."[]\" size=\"8\" STYLE=\"width: 125px\">"; echo ""; foreach ($sEngine->getMainCategories(false) as $mainId => $mainName) { echo ""; } echo ""; echo "
\n"; echo "
"; echo "
\n"; echo " "; echo " \n"; echo "
\n"; echo "
\n"; echo "
"; DisplayFoot(); } //**************************************************************************** // updateSearchSettings -- updating Search Engine Settings //**************************************************************************** function updateSearchSettings() { global $cfg; foreach ($_POST as $key => $value) { if ($key != "searchEngine") { $settings[$key] = $value; } } saveSettings($settings); AuditAction($cfg["constants"]["admin"], " Updating TorrentFlux Search Settings"); $searchEngine = getRequestVar('searchEngine'); if (empty($searchEngine)) $searchEngine = $cfg["searchEngine"]; header("location: admin.php?op=searchSettings&searchEngine=".$searchEngine); } //**************************************************************************** //**************************************************************************** //**************************************************************************** //**************************************************************************** // TRAFFIC CONTROLER $op = getRequestVar('op'); switch ($op) { default: $min = getRequestVar('min'); if(empty($min)) $min=0; showIndex($min); break; case "showUserActivity": $min = getRequestVar('min'); if(empty($min)) $min=0; $user_id = getRequestVar('user_id'); $srchFile = getRequestVar('srchFile'); $srchAction = getRequestVar('srchAction'); showUserActivity($min, $user_id, $srchFile, $srchAction); break; case "backupDatabase": backupDatabase(); break; case "editRSS": editRSS(); break; case "addRSS": $newRSS = getRequestVar('newRSS'); addRSS($newRSS); break; case "deleteRSS": $rid = getRequestVar('rid'); deleteRSS($rid); break; case "editLink": $lid = getRequestVar('lid'); $editLink = getRequestVar('editLink'); $editSite = getRequestVar('editSite'); editLink($lid, $editLink, $editSite); break; case "editLinks": editLinks(); break; case "addLink": $newLink = getRequestVar('newLink'); $newSite = getRequestVar('newSite'); addLink($newLink,$newSite); break; case "moveLink": $lid = getRequestVar('lid'); $direction = getRequestVar('direction'); moveLink($lid, $direction); break; case "deleteLink": $lid = getRequestVar('lid'); deleteLink($lid); break; case "CreateUser": CreateUser(); break; case "addUser": $newUser = getRequestVar('newUser'); $pass1 = getRequestVar('pass1'); $userType = getRequestVar('userType'); addUser($newUser, $pass1, $userType); break; case "deleteUser": $user_id = getRequestVar('user_id'); deleteUser($user_id); break; case "editUser": $user_id = getRequestVar('user_id'); editUser($user_id); break; case "updateUser": $user_id = getRequestVar('user_id'); $org_user_id = getRequestVar('org_user_id'); $pass1 = getRequestVar('pass1'); $userType = getRequestVar('userType'); $hideOffline = getRequestVar('hideOffline'); updateUser($user_id, $org_user_id, $pass1, $userType, $hideOffline); break; case "configSettings": configSettings(); break; case "updateConfigSettings": if (! array_key_exists("debugTorrents", $_REQUEST)) { $_REQUEST["debugTorrents"] = false; } updateConfigSettings(); break; case "queueSettings": queueSettings(); break; case "searchSettings": searchSettings(); break; case "updateSearchSettings": updateSearchSettings(); break; } //**************************************************************************** //**************************************************************************** //**************************************************************************** //**************************************************************************** ?> torrentflux_2.4/html/favicon.ico0000755000004100000410000000427611017132666017171 0ustar www-datawww-data ¨( @€€€€€€€€€ÀÀÀÀÜÀðʦ """)))UUUMMMBBB999€|ÿPPÿ“ÖÿìÌÆÖïÖçç©­3f™Ì3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿfÿ™ÿÌ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌ™fÌÌfÌÿfÿfÿ3fÿ™fÿÌÌÿÿÌ™™™3™™™™Ì™™33™f™3Ì™ÿ™f™f3™3f™f™™fÌ™3ÿ™™3™™f™™™™™Ì™™ÿ™Ì™Ì3fÌf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™Ìf™ÿ™™ÿÌ™ÿÿÌ™3ÌfÌ™ÌÌ™3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3™ffÌf™ÌfÌ™fÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3™ÿfÌÿ™ÌÿÌÌÿÿÌ3ÿfÿ™Ì3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3Ìffÿf™ÿfÌÌfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿ3Ìÿfÿÿ™ÿÿÌffÿfÿffÿÿÿffÿfÿÿÿf!¥___www†††–––ËË˲²²×××ÝÝÝãããêêêñññøøøðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿ ¼íêì ìCCCm ìCêmêêêêêêêêê ¼CmmmmmmmmmmmmmmC’ ïmmmmëìí’’’íìëmmmmêì ï mmmì÷ïï—r—÷ï÷ìmmmmì ðëmë’wwwwwww—˜ïíëmmmí ëëì÷ï—ww|äääää|ww—ï÷ìëëmC íCëëì÷ïww|äääääääää|wwï÷ìëìm Cmìì÷ïww|ä|||ää|||ää|wwï’ìììï ’ììí—w|||ÀžÀ||ÀžÀ|ä||w—ïìììmê mììï÷ww|||ÁÂÁ||žÂÁä||||w˜÷ìììCììírw||||ÁÂÁ||ÁÂÁä||||wrïíììê÷ìí÷ïqwww||ÁÂÁ||žÂÁ||||www÷÷ìíëìêíí÷‘Uwwww|ÁÂÁ||žÂÁ|||wwwUr÷í’ìmë’’ïrUwwwwwÁÂÁ||žÂÂÁžžÀwwUq÷’’ìêì÷÷ïrTwwwwwÁÂÀwwžÂÁÁÁÁwwUq÷÷÷íêìï÷ïrNwwwwwÁžwwwÁÁ———————wr÷÷ïíêmïïïìNTUUwwž—Á—r÷ïïímêïïïíOww˜ÁÂÂÁÂÂÂÂÂÁ˜˜ríïïïììïï÷r—ÂÂÁÂÂÂÂÂÁ˜r’ïïëïêíïìr˜˜˜˜˜˜»ÁÁÁÁÁÁ˜ì÷ïê÷mïír˜Âríï’ë ï¼ïìr‘ìïm ÷m¼¼÷ërÂÂÂÂÂóóóóóó‘ë÷¼¼÷ë ê’ðð¼÷ër˜óôôôôôôñ˜rë÷¼ððê ñïñð¼ïìmr혻írmìï¼ðð¼ëï ïññð¼÷ìëêlllêmì÷ðññðìí ïññññðï÷÷÷ï¼ñññòë’ ñmì¼òòòòòñññòòòòòñ÷mï ’míñòòòòòòòò¼÷mì ÷mëíïï’ìmí ÿàÿÿ€ÿþÿø?ðèÀÀ€€€€ÀÀàðø?þÿÿ€ÿtorrentflux_2.4/html/downloaddetails.php0000755000004100000410000001463011017367654020740 0ustar www-datawww-dataerrors); $inx++) { $error .= "
  • ".$af->errors[$inx]."
  • "; } if ($af->seedlimit <= 0) { $af->seedlimit = "none"; } else { $af->seedlimit .= "%"; } } else { die("fatal error torrent file not specified"); } if ($af->percent_done < 0) { $af->percent_done = round(($af->percent_done*-1)-100,1); $af->time_left = _INCOMPLETE; } if($af->percent_done < 1) { $graph_width = "1"; } else { $graph_width = $af->percent_done; } if($af->percent_done >= 100) { $af->percent_done = 100; $background = "#0000ff"; } if(strlen($torrent) >= 39) { $torrent = substr($torrent, 0, 35)."..."; } $hd = getStatusImage($af); DisplayHead(_DOWNLOADDETAILS, false, "5", $af->percent_done."% "); ?>
    "; } echo $torrent." (".formatBytesToKBMGGB($af->size).")"; ?>
    " width=352 cellpadding=1>
    /images/proglass.gif"> /images/noglass.gif" bgcolor="">
    :
    ">
    ".$af->time_left."" ?>
    :
    ">
    ".$af->percent_done."%" ?>
    :
    ">
    ".$torrentowner."" ?>
    :
    ">
    ".$af->down_speed."" ?>
    :
    ">
    ".$af->up_speed."" ?>
    Down:
    ">
    ".formatFreeSpace($af->GetRealDownloadTotal())."" ?>
    Up:
    ">
    ".formatFreeSpace($af->uptotal/(1024*1024))."" ?>
    Seeds:
    ">
    ".$af->seeds."" ?>
    Peers:
    ">
    ".$af->peers."" ?>
    :
    ">
    ".$af->sharing."%" ?>
    Seed Until:
    ">
    ".$af->seedlimit."" ?>
    Error(s):
    ".$error."" ?>
    torrentflux_2.4/html/tooltip.js0000755000004100000410000004274111017132666017077 0ustar www-datawww-data/* This notice must be untouched at all times. wz_tooltip.js v. 3.31 The latest version is available at http://www.walterzorn.com or http://www.devira.com or http://www.walterzorn.de Copyright (c) 2002-2004 Walter Zorn. All rights reserved. Created 1. 12. 2002 by Walter Zorn (Web: http://www.walterzorn.com ) Last modified: 22. 6. 2005 Cross-browser tooltips working even in Opera 5 and 6, as well as in NN 4, Gecko-Browsers, IE4+, Opera 7 and Konqueror. No onmouseouts required. Appearance of tooltips can be individually configured via commands within the onmouseovers. LICENSE: LGPL This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (LGPL) as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details on the GNU Lesser General Public License, see http://www.gnu.org/copyleft/lesser.html */ //////////////// GLOBAL TOOPTIP CONFIGURATION ///////////////////// var ttBgColor = "#FFFFE7"; var ttBgImg = ""; //images/help.gif"; // path to background image; var ttBorderColor = "#000000"; var ttBorderWidth = 1; var ttDelay = 250; // time span until tooltip shows up [milliseconds] var ttFontColor = "#000000"; var ttFontFace = "verdana,arial,helvetica,sans-serif"; var ttFontSize = "12px"; var ttFontWeight = "normal"; // alternative is "bold"; var ttOffsetX = 12; // horizontal offset of left-top corner from mousepointer var ttOffsetY = 15; // vertical offset " var ttOpacity = 100; // opacity of tooltip in percent (must be integer between 0 and 100) var ttPadding = 3; // spacing between border and content var ttShadowColor = "#808080"; var ttShadowWidth = 3; var ttTemp = 0; // time span after which the tooltip disappears; 0 (zero) means "infinite timespan" var ttTextAlign = "left"; var ttTitleColor = "#ffffff"; // color of caption text var ttWidth = 350; //////////////////// END OF TOOLTIP CONFIG //////////////////////// ////////////// TAGS WITH TOOLTIP FUNCTIONALITY //////////////////// // List may be extended or shortened: var tt_tags = new Array("a","area","b","big","caption","center","code","dd","div","dl","dt","em","h1","h2","h3","h4","h5","h6","i","img","input","li","map","ol","p","pre","s","small","span","strike","strong","sub","sup","table","td","th","tr","tt","u","var","ul","layer"); ///////////////////////////////////////////////////////////////////// ///////// DON'T CHANGE ANYTHING BELOW THIS LINE ///////////////////// var tt_obj, // current tooltip tt_ifrm, // iframe to cover windowed controls in IE tt_objW = 0, tt_objH = 0, // width and height of tt_obj tt_objX = 0, tt_objY = 0, tt_offX = 0, tt_offY = 0, xlim = 0, ylim = 0, // right and bottom borders of visible client area tt_sup = false, // true if T_ABOVE cmd tt_sticky = false, // tt_obj sticky? tt_wait = false, tt_act = false, // tooltip visibility flag tt_sub = false, // true while tooltip below mousepointer tt_u = "undefined", tt_mf, // stores previous mousemove evthandler // Opera: disable href when hovering tt_tag = null; // stores hovered dom node, href and previous statusbar txt var tt_db = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body? document.body : null, tt_n = navigator.userAgent.toLowerCase(), tt_nv = navigator.appVersion; // Browser flags var tt_op = !!(window.opera && document.getElementById), tt_op6 = tt_op && !document.defaultView, tt_op7 = tt_op && !tt_op6, tt_ie = tt_n.indexOf("msie") != -1 && document.all && tt_db && !tt_op, tt_ie6 = tt_ie && parseFloat(tt_nv.substring(tt_nv.indexOf("MSIE")+5)) >= 5.5; tt_n4 = (document.layers && typeof document.classes != tt_u), tt_n6 = (!tt_op && document.defaultView && typeof document.defaultView.getComputedStyle != tt_u), tt_w3c = !tt_ie && !tt_n6 && !tt_op && document.getElementById; function tt_Int(t_x) { var t_y; return isNaN(t_y = parseInt(t_x))? 0 : t_y; } function wzReplace(t_x, t_y) { var t_ret = "", t_str = this, t_xI; while((t_xI = t_str.indexOf(t_x)) != -1) { t_ret += t_str.substring(0, t_xI) + t_y; t_str = t_str.substring(t_xI + t_x.length); } return t_ret+t_str; } String.prototype.wzReplace = wzReplace; function tt_N4Tags(tagtyp, t_d, t_y) { t_d = t_d || document; t_y = t_y || new Array(); var t_x = (tagtyp=="a")? t_d.links : t_d.layers; for(var z = t_x.length; z--;) t_y[t_y.length] = t_x[z]; for(z = t_d.layers.length; z--;) t_y = tt_N4Tags(tagtyp, t_d.layers[z].document, t_y); return t_y; } function tt_Htm(tt, t_id, txt) { var t_bgc = (typeof tt.T_BGCOLOR != tt_u)? tt.T_BGCOLOR : ttBgColor, t_bgimg = (typeof tt.T_BGIMG != tt_u)? tt.T_BGIMG : ttBgImg, t_bc = (typeof tt.T_BORDERCOLOR != tt_u)? tt.T_BORDERCOLOR : ttBorderColor, t_bw = (typeof tt.T_BORDERWIDTH != tt_u)? tt.T_BORDERWIDTH : ttBorderWidth, t_ff = (typeof tt.T_FONTFACE != tt_u)? tt.T_FONTFACE : ttFontFace, t_fc = (typeof tt.T_FONTCOLOR != tt_u)? tt.T_FONTCOLOR : ttFontColor, t_fsz = (typeof tt.T_FONTSIZE != tt_u)? tt.T_FONTSIZE : ttFontSize, t_fwght = (typeof tt.T_FONTWEIGHT != tt_u)? tt.T_FONTWEIGHT : ttFontWeight, t_opa = (typeof tt.T_OPACITY != tt_u)? tt.T_OPACITY : ttOpacity, t_padd = (typeof tt.T_PADDING != tt_u)? tt.T_PADDING : ttPadding, t_shc = (typeof tt.T_SHADOWCOLOR != tt_u)? tt.T_SHADOWCOLOR : (ttShadowColor || 0), t_shw = (typeof tt.T_SHADOWWIDTH != tt_u)? tt.T_SHADOWWIDTH : (ttShadowWidth || 0), t_algn = (typeof tt.T_TEXTALIGN != tt_u)? tt.T_TEXTALIGN : ttTextAlign, t_tit = (typeof tt.T_TITLE != tt_u)? tt.T_TITLE : "", t_titc = (typeof tt.T_TITLECOLOR != tt_u)? tt.T_TITLECOLOR : ttTitleColor, t_w = (typeof tt.T_WIDTH != tt_u)? tt.T_WIDTH : ttWidth; if (t_shc || t_shw) { t_shc = t_shc || "#cccccc"; t_shw = t_shw || 5; } if (tt_n4 && (t_fsz == "10px" || t_fsz == "11px")) t_fsz = "12px"; var t_optx = (tt_n4? '' : tt_n6? ('-moz-opacity:'+(t_opa/100.0)) : tt_ie? ('filter:Alpha(opacity='+t_opa+')') : ('opacity:'+(t_opa/100.0))) + ';'; var t_y = '
    ' + ''; if (t_tit) { t_y += '
    ' + (tt_n4? ' ' : '')+t_tit+'<\/b><\/font><\/td><\/tr>'; } t_y += '
    ' + // added padding-left:30px; ''; if (t_fwght == 'bold') t_y += ''; t_y += txt; if (t_fwght == 'bold') t_y += '<\/b>'; t_y += '<\/font><\/td><\/tr><\/table><\/td><\/tr><\/table>'; if (t_shw) { var t_spct = Math.round(t_shw*1.3); if (tt_n4) { t_y += '<\/layer>' + '<\/layer>'; } else { t_optx = tt_n6? '-moz-opacity:0.85;' : tt_ie? 'filter:Alpha(opacity=85);' : 'opacity:0.85;'; t_y += '
    <\/div>' + '
    <\/div>'; } } return(t_y+'<\/div>' + (tt_ie ? '"; break; case 'poll2': echo "
    ";
    			$this->Poll($pollsecs);
    			break;
    		
    		case 'dosql':
    			if (!$allowsql) break;
    			
    			$this->DoSQLForm();
    			break;
    		case 'viewsql':
    			if (empty($_GET['hidem']))
    				echo "  Clear SQL Log
    "; echo($this->SuspiciousSQL($nsql)); echo($this->ExpensiveSQL($nsql)); echo($this->InvalidSQL($nsql)); break; case 'tables': echo $this->Tables(); break; } global $ADODB_vers; echo "

    $ADODB_vers Sponsored by phpLens
    "; } /* Runs in infinite loop, returning real-time statistics */ function Poll($secs=5) { $this->conn->fnExecute = false; //$this->conn->debug=1; if ($secs <= 1) $secs = 1; echo "Accumulating statistics, every $secs seconds...\n";flush(); $arro =& $this->PollParameters(); $cnt = 0; set_time_limit(0); sleep($secs); while (1) { $arr =& $this->PollParameters(); $hits = sprintf('%2.2f',$arr[0]); $reads = sprintf('%12.4f',($arr[1]-$arro[1])/$secs); $writes = sprintf('%12.4f',($arr[2]-$arro[2])/$secs); $sess = sprintf('%5d',$arr[3]); $load = $this->CPULoad(); if ($load !== false) { $oslabel = 'WS-CPU%'; $osval = sprintf(" %2.1f ",(float) $load); }else { $oslabel = ''; $osval = ''; } if ($cnt % 10 == 0) echo " Time ".$oslabel." Hit% Sess Reads/s Writes/s\n"; $cnt += 1; echo date('H:i:s').' '.$osval."$hits $sess $reads $writes\n"; flush(); if (connection_aborted()) return; sleep($secs); $arro = $arr; } } /* Returns basic health check in a command line interface */ function HealthCheckCLI() { return $this->HealthCheck(true); } /* Returns basic health check as HTML */ function HealthCheck($cli=false) { $saveE = $this->conn->fnExecute; $this->conn->fnExecute = false; if ($cli) $html = ''; else $html = $this->table.'
    '.$this->titles; $oldc = false; $bgc = ''; foreach($this->settings as $name => $arr) { if ($arr === false) break; if (!is_string($name)) { if ($cli) $html .= " -- $arr -- \n"; else $html .= "color>"; continue; } if (!is_array($arr)) break; $category = $arr[0]; $how = $arr[1]; if (sizeof($arr)>2) $desc = $arr[2]; else $desc = '   '; if ($category == 'HIDE') continue; $val = $this->_DBParameter($how); if ($desc && strncmp($desc,"=",1) === 0) { $fn = substr($desc,1); $desc = $this->$fn($val); } if ($val === false) { $m = $this->conn->ErrorMsg(); $val = "Error: $m"; } else { if (is_numeric($val) && $val >= 256*1024) { if ($val % (1024*1024) == 0) { $val /= (1024*1024); $val .= 'M'; } else if ($val % 1024 == 0) { $val /= 1024; $val .= 'K'; } //$val = htmlspecialchars($val); } } if ($category != $oldc) { $oldc = $category; //$bgc = ($bgc == ' bgcolor='.$this->color) ? ' bgcolor=white' : ' bgcolor='.$this->color; } if (strlen($desc)==0) $desc = ' '; if (strlen($val)==0) $val = ' '; if ($cli) { $html .= str_replace(' ','',sprintf($this->cliFormat,strip_tags($name),strip_tags($val),strip_tags($desc))); }else { $html .= "\n"; } } if (!$cli) $html .= "

    '.$this->conn->databaseType.'

    $arr  
    ".$name.''.$val.''.$desc."
    \n"; $this->conn->fnExecute = $saveE; return $html; } function Tables($orderby='1') { if (!$this->tablesSQL) return false; $savelog = $this->conn->LogSQL(false); $rs = $this->conn->Execute($this->tablesSQL.' order by '.$orderby); $this->conn->LogSQL($savelog); $html = rs2html($rs,false,false,false,false); return $html; } function CreateLogTable() { if (!$this->createTableSQL) return false; $savelog = $this->conn->LogSQL(false); $ok = $this->conn->Execute($this->createTableSQL); $this->conn->LogSQL($savelog); return ($ok) ? true : false; } function DoSQLForm() { $PHP_SELF = $_SERVER['PHP_SELF']; $sql = isset($_REQUEST['sql']) ? $_REQUEST['sql'] : ''; if (isset($_SESSION['phplens_sqlrows'])) $rows = $_SESSION['phplens_sqlrows']; else $rows = 3; if (isset($_REQUEST['SMALLER'])) { $rows /= 2; if ($rows < 3) $rows = 3; $_SESSION['phplens_sqlrows'] = $rows; } if (isset($_REQUEST['BIGGER'])) { $rows *= 2; $_SESSION['phplens_sqlrows'] = $rows; } ?>
    Form size:
    undomq(trim($sql)); if (substr($sql,strlen($sql)-1) === ';') { $print = true; $sqla = $this->SplitSQL($sql); } else { $print = false; $sqla = array($sql); } foreach($sqla as $sqls) { if (!$sqls) continue; if ($print) { print "

    ".htmlspecialchars($sqls)."

    "; flush(); } $savelog = $this->conn->LogSQL(false); $rs = $this->conn->Execute($sqls); $this->conn->LogSQL($savelog); if ($rs && is_object($rs) && !$rs->EOF) { rs2html($rs); while ($rs->NextRecordSet()) { print "
     
    "; rs2html($rs); } } else { $e1 = (integer) $this->conn->ErrorNo(); $e2 = $this->conn->ErrorMsg(); if (($e1) || ($e2)) { if (empty($e1)) $e1 = '-1'; // postgresql fix print '   '.$e1.': '.$e2; } else { print "

    No Recordset returned

    "; } } } // foreach } function SplitSQL($sql) { $arr = explode(';',$sql); return $arr; } function undomq($m) { if (get_magic_quotes_gpc()) { // undo the damage $m = str_replace('\\\\','\\',$m); $m = str_replace('\"','"',$m); $m = str_replace('\\\'','\'',$m); } return $m; } /************************************************************************/ /** * Reorganise multiple table-indices/statistics/.. * OptimizeMode could be given by last Parameter * * @example *
         *          optimizeTables( 'tableA');
         *      
    *
         *          optimizeTables( 'tableA', 'tableB', 'tableC');
         *      
    *
         *          optimizeTables( 'tableA', 'tableB', ADODB_OPT_LOW);
         *      
    * * @param string table name of the table to optimize * @param int mode optimization-mode * ADODB_OPT_HIGH for full optimization * ADODB_OPT_LOW for CPU-less optimization * Default is LOW ADODB_OPT_LOW * @author Markus Staab * @return Returns true on success and false on error */ function OptimizeTables() { $args = func_get_args(); $numArgs = func_num_args(); if ( $numArgs == 0) return false; $mode = ADODB_OPT_LOW; $lastArg = $args[ $numArgs - 1]; if ( !is_string($lastArg)) { $mode = $lastArg; unset( $args[ $numArgs - 1]); } foreach( $args as $table) { $this->optimizeTable( $table, $mode); } } /** * Reorganise the table-indices/statistics/.. depending on the given mode. * Default Implementation throws an error. * * @param string table name of the table to optimize * @param int mode optimization-mode * ADODB_OPT_HIGH for full optimization * ADODB_OPT_LOW for CPU-less optimization * Default is LOW ADODB_OPT_LOW * @author Markus Staab * @return Returns true on success and false on error */ function OptimizeTable( $table, $mode = ADODB_OPT_LOW) { ADOConnection::outp( sprintf( "

    %s: '%s' not implemented for driver '%s'

    ", __CLASS__, __FUNCTION__, $this->conn->databaseType)); return false; } /** * Reorganise current database. * Default implementation loops over all MetaTables() and * optimize each using optmizeTable() * * @author Markus Staab * @return Returns true on success and false on error */ function optimizeDatabase() { $conn = $this->conn; if ( !$conn) return false; $tables = $conn->MetaTables( 'TABLES'); if ( !$tables ) return false; foreach( $tables as $table) { if ( !$this->optimizeTable( $table)) { return false; } } return true; } // end hack } ?>torrentflux_2.4/html/adodb/adodb-csvlib.inc.php0000755000004100000410000002016011017367654021730 0ustar www-datawww-dataFieldCount() : 0; if ($sql) $sql = urlencode($sql); // metadata setup if ($max <= 0 || $rs->dataProvider == 'empty') { // is insert/update/delete if (is_object($conn)) { $sql .= ','.$conn->Affected_Rows(); $sql .= ','.$conn->Insert_ID(); } else $sql .= ',,'; $text = "====-1,0,$sql\n"; return $text; } $tt = ($rs->timeCreated) ? $rs->timeCreated : time(); ## changed format from ====0 to ====1 $line = "====1,$tt,$sql\n"; if ($rs->databaseType == 'array') { $rows =& $rs->_array; } else { $rows = array(); while (!$rs->EOF) { $rows[] = $rs->fields; $rs->MoveNext(); } } for($i=0; $i < $max; $i++) { $o =& $rs->FetchField($i); $flds[] = $o; } $savefetch = isset($rs->adodbFetchMode) ? $rs->adodbFetchMode : $rs->fetchMode; $class = $rs->connection->arrayClass; $rs2 = new $class(); $rs2->sql = $rs->sql; $rs2->oldProvider = $rs->dataProvider; $rs2->InitArrayFields($rows,$flds); $rs2->fetchMode = $savefetch; return $line.serialize($rs2); } /** * Open CSV file and convert it into Data. * * @param url file/ftp/http url * @param err returns the error message * @param timeout dispose if recordset has been alive for $timeout secs * * @return recordset, or false if error occured. If no * error occurred in sql INSERT/UPDATE/DELETE, * empty recordset is returned */ function &csv2rs($url,&$err,$timeout=0, $rsclass='ADORecordSet_array') { $false = false; $err = false; $fp = @fopen($url,'rb'); if (!$fp) { $err = $url.' file/URL not found'; return $false; } @flock($fp, LOCK_SH); $arr = array(); $ttl = 0; if ($meta = fgetcsv($fp, 32000, ",")) { // check if error message if (strncmp($meta[0],'****',4) === 0) { $err = trim(substr($meta[0],4,1024)); fclose($fp); return $false; } // check for meta data // $meta[0] is -1 means return an empty recordset // $meta[1] contains a time if (strncmp($meta[0], '====',4) === 0) { if ($meta[0] == "====-1") { if (sizeof($meta) < 5) { $err = "Corrupt first line for format -1"; fclose($fp); return $false; } fclose($fp); if ($timeout > 0) { $err = " Illegal Timeout $timeout "; return $false; } $rs = new $rsclass($val=true); $rs->fields = array(); $rs->timeCreated = $meta[1]; $rs->EOF = true; $rs->_numOfFields = 0; $rs->sql = urldecode($meta[2]); $rs->affectedrows = (integer)$meta[3]; $rs->insertid = $meta[4]; return $rs; } # Under high volume loads, we want only 1 thread/process to _write_file # so that we don't have 50 processes queueing to write the same data. # We use probabilistic timeout, ahead of time. # # -4 sec before timeout, give processes 1/32 chance of timing out # -2 sec before timeout, give processes 1/16 chance of timing out # -1 sec after timeout give processes 1/4 chance of timing out # +0 sec after timeout, give processes 100% chance of timing out if (sizeof($meta) > 1) { if($timeout >0){ $tdiff = (integer)( $meta[1]+$timeout - time()); if ($tdiff <= 2) { switch($tdiff) { case 4: case 3: if ((rand() & 31) == 0) { fclose($fp); $err = "Timeout 3"; return $false; } break; case 2: if ((rand() & 15) == 0) { fclose($fp); $err = "Timeout 2"; return $false; } break; case 1: if ((rand() & 3) == 0) { fclose($fp); $err = "Timeout 1"; return $false; } break; default: fclose($fp); $err = "Timeout 0"; return $false; } // switch } // if check flush cache }// (timeout>0) $ttl = $meta[1]; } //================================================ // new cache format - use serialize extensively... if ($meta[0] === '====1') { // slurp in the data $MAXSIZE = 128000; $text = fread($fp,$MAXSIZE); if (strlen($text)) { while ($txt = fread($fp,$MAXSIZE)) { $text .= $txt; } } fclose($fp); $rs = unserialize($text); if (is_object($rs)) $rs->timeCreated = $ttl; else { $err = "Unable to unserialize recordset"; //echo htmlspecialchars($text),' !--END--!

    '; } return $rs; } $meta = false; $meta = fgetcsv($fp, 32000, ","); if (!$meta) { fclose($fp); $err = "Unexpected EOF 1"; return $false; } } // Get Column definitions $flds = array(); foreach($meta as $o) { $o2 = explode(':',$o); if (sizeof($o2)!=3) { $arr[] = $meta; $flds = false; break; } $fld = new ADOFieldObject(); $fld->name = urldecode($o2[0]); $fld->type = $o2[1]; $fld->max_length = $o2[2]; $flds[] = $fld; } } else { fclose($fp); $err = "Recordset had unexpected EOF 2"; return $false; } // slurp in the data $MAXSIZE = 128000; $text = ''; while ($txt = fread($fp,$MAXSIZE)) { $text .= $txt; } fclose($fp); @$arr = unserialize($text); //var_dump($arr); if (!is_array($arr)) { $err = "Recordset had unexpected EOF (in serialized recordset)"; if (get_magic_quotes_runtime()) $err .= ". Magic Quotes Runtime should be disabled!"; return $false; } $rs = new $rsclass(); $rs->timeCreated = $ttl; $rs->InitArrayFields($arr,$flds); return $rs; } /** * Save a file $filename and its $contents (normally for caching) with file locking */ function adodb_write_file($filename, $contents,$debug=false) { # http://www.php.net/bugs.php?id=9203 Bug that flock fails on Windows # So to simulate locking, we assume that rename is an atomic operation. # First we delete $filename, then we create a $tempfile write to it and # rename to the desired $filename. If the rename works, then we successfully # modified the file exclusively. # What a stupid need - having to simulate locking. # Risks: # 1. $tempfile name is not unique -- very very low # 2. unlink($filename) fails -- ok, rename will fail # 3. adodb reads stale file because unlink fails -- ok, $rs timeout occurs # 4. another process creates $filename between unlink() and rename() -- ok, rename() fails and cache updated if (strncmp(PHP_OS,'WIN',3) === 0) { // skip the decimal place $mtime = substr(str_replace(' ','_',microtime()),2); // getmypid() actually returns 0 on Win98 - never mind! $tmpname = $filename.uniqid($mtime).getmypid(); if (!($fd = @fopen($tmpname,'a'))) return false; $ok = ftruncate($fd,0); if (!fwrite($fd,$contents)) $ok = false; fclose($fd); chmod($tmpname,0644); // the tricky moment @unlink($filename); if (!@rename($tmpname,$filename)) { unlink($tmpname); $ok = false; } if (!$ok) { if ($debug) ADOConnection::outp( " Rename $tmpname ".($ok? 'ok' : 'failed')); } return $ok; } if (!($fd = @fopen($filename, 'a'))) return false; if (flock($fd, LOCK_EX) && ftruncate($fd, 0)) { $ok = fwrite( $fd, $contents ); fclose($fd); chmod($filename,0644); }else { fclose($fd); if ($debug)ADOConnection::outp( " Failed acquiring lock for $filename
    \n"); $ok = false; } return $ok; } ?>torrentflux_2.4/html/adodb/adodb-datadict.inc.php0000755000004100000410000005106111017367654022227 0ustar www-datawww-data$str

    "; $a= Lens_ParseArgs($str); print "
    ";
    print_r($a);
    print "
    "; } if (!function_exists('ctype_alnum')) { function ctype_alnum($text) { return preg_match('/^[a-z0-9]*$/i', $text); } } //Lens_ParseTest(); /** Parse arguments, treat "text" (text) and 'text' as quotation marks. To escape, use "" or '' or )) Will read in "abc def" sans quotes, as: abc def Same with 'abc def'. However if `abc def`, then will read in as `abc def` @param endstmtchar Character that indicates end of statement @param tokenchars Include the following characters in tokens apart from A-Z and 0-9 @returns 2 dimensional array containing parsed tokens. */ function Lens_ParseArgs($args,$endstmtchar=',',$tokenchars='_.-') { $pos = 0; $intoken = false; $stmtno = 0; $endquote = false; $tokens = array(); $tokens[$stmtno] = array(); $max = strlen($args); $quoted = false; $tokarr = array(); while ($pos < $max) { $ch = substr($args,$pos,1); switch($ch) { case ' ': case "\t": case "\n": case "\r": if (!$quoted) { if ($intoken) { $intoken = false; $tokens[$stmtno][] = implode('',$tokarr); } break; } $tokarr[] = $ch; break; case '`': if ($intoken) $tokarr[] = $ch; case '(': case ')': case '"': case "'": if ($intoken) { if (empty($endquote)) { $tokens[$stmtno][] = implode('',$tokarr); if ($ch == '(') $endquote = ')'; else $endquote = $ch; $quoted = true; $intoken = true; $tokarr = array(); } else if ($endquote == $ch) { $ch2 = substr($args,$pos+1,1); if ($ch2 == $endquote) { $pos += 1; $tokarr[] = $ch2; } else { $quoted = false; $intoken = false; $tokens[$stmtno][] = implode('',$tokarr); $endquote = ''; } } else $tokarr[] = $ch; }else { if ($ch == '(') $endquote = ')'; else $endquote = $ch; $quoted = true; $intoken = true; $tokarr = array(); if ($ch == '`') $tokarr[] = '`'; } break; default: if (!$intoken) { if ($ch == $endstmtchar) { $stmtno += 1; $tokens[$stmtno] = array(); break; } $intoken = true; $quoted = false; $endquote = false; $tokarr = array(); } if ($quoted) $tokarr[] = $ch; else if (ctype_alnum($ch) || strpos($tokenchars,$ch) !== false) $tokarr[] = $ch; else { if ($ch == $endstmtchar) { $tokens[$stmtno][] = implode('',$tokarr); $stmtno += 1; $tokens[$stmtno] = array(); $intoken = false; $tokarr = array(); break; } $tokens[$stmtno][] = implode('',$tokarr); $tokens[$stmtno][] = $ch; $intoken = false; } } $pos += 1; } if ($intoken) $tokens[$stmtno][] = implode('',$tokarr); return $tokens; } class ADODB_DataDict { var $connection; var $debug = false; var $dropTable = 'DROP TABLE %s'; var $renameTable = 'RENAME TABLE %s TO %s'; var $dropIndex = 'DROP INDEX %s'; var $addCol = ' ADD'; var $alterCol = ' ALTER COLUMN'; var $dropCol = ' DROP COLUMN'; var $renameColumn = 'ALTER TABLE %s RENAME COLUMN %s TO %s'; // table, old-column, new-column, column-definitions (not used by default) var $nameRegex = '\w'; var $nameRegexBrackets = 'a-zA-Z0-9_\(\)'; var $schema = false; var $serverInfo = array(); var $autoIncrement = false; var $dataProvider; var $invalidResizeTypes4 = array('CLOB','BLOB','TEXT','DATE','TIME'); // for changetablesql var $blobSize = 100; /// any varchar/char field this size or greater is treated as a blob /// in other words, we use a text area for editting. function GetCommentSQL($table,$col) { return false; } function SetCommentSQL($table,$col,$cmt) { return false; } function MetaTables() { if (!$this->connection->IsConnected()) return array(); return $this->connection->MetaTables(); } function MetaColumns($tab, $upper=true, $schema=false) { if (!$this->connection->IsConnected()) return array(); return $this->connection->MetaColumns($this->TableName($tab), $upper, $schema); } function MetaPrimaryKeys($tab,$owner=false,$intkey=false) { if (!$this->connection->IsConnected()) return array(); return $this->connection->MetaPrimaryKeys($this->TableName($tab), $owner, $intkey); } function MetaIndexes($table, $primary = false, $owner = false) { if (!$this->connection->IsConnected()) return array(); return $this->connection->MetaIndexes($this->TableName($table), $primary, $owner); } function MetaType($t,$len=-1,$fieldobj=false) { return ADORecordSet::MetaType($t,$len,$fieldobj); } function NameQuote($name = NULL,$allowBrackets=false) { if (!is_string($name)) { return FALSE; } $name = trim($name); if ( !is_object($this->connection) ) { return $name; } $quote = $this->connection->nameQuote; // if name is of the form `name`, quote it if ( preg_match('/^`(.+)`$/', $name, $matches) ) { return $quote . $matches[1] . $quote; } // if name contains special characters, quote it $regex = ($allowBrackets) ? $this->nameRegexBrackets : $this->nameRegex; if ( !preg_match('/^[' . $regex . ']+$/', $name) ) { return $quote . $name . $quote; } return $name; } function TableName($name) { if ( $this->schema ) { return $this->NameQuote($this->schema) .'.'. $this->NameQuote($name); } return $this->NameQuote($name); } // Executes the sql array returned by GetTableSQL and GetIndexSQL function ExecuteSQLArray($sql, $continueOnError = true) { $rez = 2; $conn = &$this->connection; $saved = $conn->debug; foreach($sql as $line) { if ($this->debug) $conn->debug = true; $ok = $conn->Execute($line); $conn->debug = $saved; if (!$ok) { if ($this->debug) ADOConnection::outp($conn->ErrorMsg()); if (!$continueOnError) return 0; $rez = 1; } } return $rez; } /* Returns the actual type given a character code. C: varchar X: CLOB (character large object) or largest varchar size if CLOB is not supported C2: Multibyte varchar X2: Multibyte CLOB B: BLOB (binary large object) D: Date T: Date-time L: Integer field suitable for storing booleans (0 or 1) I: Integer F: Floating point number N: Numeric or decimal number */ function ActualType($meta) { return $meta; } function CreateDatabase($dbname,$options=false) { $options = $this->_Options($options); $sql = array(); $s = 'CREATE DATABASE ' . $this->NameQuote($dbname); if (isset($options[$this->upperName])) $s .= ' '.$options[$this->upperName]; $sql[] = $s; return $sql; } /* Generates the SQL to create index. Returns an array of sql strings. */ function CreateIndexSQL($idxname, $tabname, $flds, $idxoptions = false) { if (!is_array($flds)) { $flds = explode(',',$flds); } foreach($flds as $key => $fld) { # some indexes can use partial fields, eg. index first 32 chars of "name" with NAME(32) $flds[$key] = $this->NameQuote($fld,$allowBrackets=true); } return $this->_IndexSQL($this->NameQuote($idxname), $this->TableName($tabname), $flds, $this->_Options($idxoptions)); } function DropIndexSQL ($idxname, $tabname = NULL) { return array(sprintf($this->dropIndex, $this->NameQuote($idxname), $this->TableName($tabname))); } function SetSchema($schema) { $this->schema = $schema; } function AddColumnSQL($tabname, $flds) { $tabname = $this->TableName ($tabname); $sql = array(); list($lines,$pkey) = $this->_GenFields($flds); $alter = 'ALTER TABLE ' . $tabname . $this->addCol . ' '; foreach($lines as $v) { $sql[] = $alter . $v; } return $sql; } /** * Change the definition of one column * * As some DBM's can't do that on there own, you need to supply the complete defintion of the new table, * to allow, recreating the table and copying the content over to the new table * @param string $tabname table-name * @param string $flds column-name and type for the changed column * @param string $tableflds='' complete defintion of the new table, eg. for postgres, default '' * @param array/string $tableoptions='' options for the new table see CreateTableSQL, default '' * @return array with SQL strings */ function AlterColumnSQL($tabname, $flds, $tableflds='',$tableoptions='') { $tabname = $this->TableName ($tabname); $sql = array(); list($lines,$pkey) = $this->_GenFields($flds); $alter = 'ALTER TABLE ' . $tabname . $this->alterCol . ' '; foreach($lines as $v) { $sql[] = $alter . $v; } return $sql; } /** * Rename one column * * Some DBM's can only do this together with changeing the type of the column (even if that stays the same, eg. mysql) * @param string $tabname table-name * @param string $oldcolumn column-name to be renamed * @param string $newcolumn new column-name * @param string $flds='' complete column-defintion-string like for AddColumnSQL, only used by mysql atm., default='' * @return array with SQL strings */ function RenameColumnSQL($tabname,$oldcolumn,$newcolumn,$flds='') { $tabname = $this->TableName ($tabname); if ($flds) { list($lines,$pkey) = $this->_GenFields($flds); list(,$first) = each($lines); list(,$column_def) = split("[\t ]+",$first,2); } return array(sprintf($this->renameColumn,$tabname,$this->NameQuote($oldcolumn),$this->NameQuote($newcolumn),$column_def)); } /** * Drop one column * * Some DBM's can't do that on there own, you need to supply the complete defintion of the new table, * to allow, recreating the table and copying the content over to the new table * @param string $tabname table-name * @param string $flds column-name and type for the changed column * @param string $tableflds='' complete defintion of the new table, eg. for postgres, default '' * @param array/string $tableoptions='' options for the new table see CreateTableSQL, default '' * @return array with SQL strings */ function DropColumnSQL($tabname, $flds, $tableflds='',$tableoptions='') { $tabname = $this->TableName ($tabname); if (!is_array($flds)) $flds = explode(',',$flds); $sql = array(); $alter = 'ALTER TABLE ' . $tabname . $this->dropCol . ' '; foreach($flds as $v) { $sql[] = $alter . $this->NameQuote($v); } return $sql; } function DropTableSQL($tabname) { return array (sprintf($this->dropTable, $this->TableName($tabname))); } function RenameTableSQL($tabname,$newname) { return array (sprintf($this->renameTable, $this->TableName($tabname),$this->TableName($newname))); } /* Generate the SQL to create table. Returns an array of sql strings. */ function CreateTableSQL($tabname, $flds, $tableoptions=false) { if (!$tableoptions) $tableoptions = array(); list($lines,$pkey) = $this->_GenFields($flds, true); $taboptions = $this->_Options($tableoptions); $tabname = $this->TableName ($tabname); $sql = $this->_TableSQL($tabname,$lines,$pkey,$taboptions); $tsql = $this->_Triggers($tabname,$taboptions); foreach($tsql as $s) $sql[] = $s; return $sql; } function _GenFields($flds,$widespacing=false) { if (is_string($flds)) { $padding = ' '; $txt = $flds.$padding; $flds = array(); $flds0 = Lens_ParseArgs($txt,','); $hasparam = false; foreach($flds0 as $f0) { $f1 = array(); foreach($f0 as $token) { switch (strtoupper($token)) { case 'CONSTRAINT': case 'DEFAULT': $hasparam = $token; break; default: if ($hasparam) $f1[$hasparam] = $token; else $f1[] = $token; $hasparam = false; break; } } $flds[] = $f1; } } $this->autoIncrement = false; $lines = array(); $pkey = array(); foreach($flds as $fld) { $fld = _array_change_key_case($fld); $fname = false; $fdefault = false; $fautoinc = false; $ftype = false; $fsize = false; $fprec = false; $fprimary = false; $fnoquote = false; $fdefts = false; $fdefdate = false; $fconstraint = false; $fnotnull = false; $funsigned = false; //----------------- // Parse attributes foreach($fld as $attr => $v) { if ($attr == 2 && is_numeric($v)) $attr = 'SIZE'; else if (is_numeric($attr) && $attr > 1 && !is_numeric($v)) $attr = strtoupper($v); switch($attr) { case '0': case 'NAME': $fname = $v; break; case '1': case 'TYPE': $ty = $v; $ftype = $this->ActualType(strtoupper($v)); break; case 'SIZE': $dotat = strpos($v,'.'); if ($dotat === false) $dotat = strpos($v,','); if ($dotat === false) $fsize = $v; else { $fsize = substr($v,0,$dotat); $fprec = substr($v,$dotat+1); } break; case 'UNSIGNED': $funsigned = true; break; case 'AUTOINCREMENT': case 'AUTO': $fautoinc = true; $fnotnull = true; break; case 'KEY': case 'PRIMARY': $fprimary = $v; $fnotnull = true; break; case 'DEF': case 'DEFAULT': $fdefault = $v; break; case 'NOTNULL': $fnotnull = $v; break; case 'NOQUOTE': $fnoquote = $v; break; case 'DEFDATE': $fdefdate = $v; break; case 'DEFTIMESTAMP': $fdefts = $v; break; case 'CONSTRAINT': $fconstraint = $v; break; } //switch } // foreach $fld //-------------------- // VALIDATE FIELD INFO if (!strlen($fname)) { if ($this->debug) ADOConnection::outp("Undefined NAME"); return false; } $fid = strtoupper(preg_replace('/^`(.+)`$/', '$1', $fname)); $fname = $this->NameQuote($fname); if (!strlen($ftype)) { if ($this->debug) ADOConnection::outp("Undefined TYPE for field '$fname'"); return false; } else { $ftype = strtoupper($ftype); } $ftype = $this->_GetSize($ftype, $ty, $fsize, $fprec); if ($ty == 'X' || $ty == 'X2' || $ty == 'B') $fnotnull = false; // some blob types do not accept nulls if ($fprimary) $pkey[] = $fname; // some databases do not allow blobs to have defaults if ($ty == 'X') $fdefault = false; //-------------------- // CONSTRUCT FIELD SQL if ($fdefts) { if (substr($this->connection->databaseType,0,5) == 'mysql') { $ftype = 'TIMESTAMP'; } else { $fdefault = $this->connection->sysTimeStamp; } } else if ($fdefdate) { if (substr($this->connection->databaseType,0,5) == 'mysql') { $ftype = 'TIMESTAMP'; } else { $fdefault = $this->connection->sysDate; } } else if ($fdefault !== false && !$fnoquote) if ($ty == 'C' or $ty == 'X' or ( substr($fdefault,0,1) != "'" && !is_numeric($fdefault))) if (strlen($fdefault) != 1 && substr($fdefault,0,1) == ' ' && substr($fdefault,strlen($fdefault)-1) == ' ') $fdefault = trim($fdefault); else if (strtolower($fdefault) != 'null') $fdefault = $this->connection->qstr($fdefault); $suffix = $this->_CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned); if ($widespacing) $fname = str_pad($fname,24); $lines[$fid] = $fname.' '.$ftype.$suffix; if ($fautoinc) $this->autoIncrement = true; } // foreach $flds return array($lines,$pkey); } /* GENERATE THE SIZE PART OF THE DATATYPE $ftype is the actual type $ty is the type defined originally in the DDL */ function _GetSize($ftype, $ty, $fsize, $fprec) { if (strlen($fsize) && $ty != 'X' && $ty != 'B' && strpos($ftype,'(') === false) { $ftype .= "(".$fsize; if (strlen($fprec)) $ftype .= ",".$fprec; $ftype .= ')'; } return $ftype; } // return string must begin with space function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint) { $suffix = ''; if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; if ($fnotnull) $suffix .= ' NOT NULL'; if ($fconstraint) $suffix .= ' '.$fconstraint; return $suffix; } function _IndexSQL($idxname, $tabname, $flds, $idxoptions) { $sql = array(); if ( isset($idxoptions['REPLACE']) || isset($idxoptions['DROP']) ) { $sql[] = sprintf ($this->dropIndex, $idxname); if ( isset($idxoptions['DROP']) ) return $sql; } if ( empty ($flds) ) { return $sql; } $unique = isset($idxoptions['UNIQUE']) ? ' UNIQUE' : ''; $s = 'CREATE' . $unique . ' INDEX ' . $idxname . ' ON ' . $tabname . ' '; if ( isset($idxoptions[$this->upperName]) ) $s .= $idxoptions[$this->upperName]; if ( is_array($flds) ) $flds = implode(', ',$flds); $s .= '(' . $flds . ')'; $sql[] = $s; return $sql; } function _DropAutoIncrement($tabname) { return false; } function _TableSQL($tabname,$lines,$pkey,$tableoptions) { $sql = array(); if (isset($tableoptions['REPLACE']) || isset ($tableoptions['DROP'])) { $sql[] = sprintf($this->dropTable,$tabname); if ($this->autoIncrement) { $sInc = $this->_DropAutoIncrement($tabname); if ($sInc) $sql[] = $sInc; } if ( isset ($tableoptions['DROP']) ) { return $sql; } } $s = "CREATE TABLE $tabname (\n"; $s .= implode(",\n", $lines); if (sizeof($pkey)>0) { $s .= ",\n PRIMARY KEY ("; $s .= implode(", ",$pkey).")"; } if (isset($tableoptions['CONSTRAINTS'])) $s .= "\n".$tableoptions['CONSTRAINTS']; if (isset($tableoptions[$this->upperName.'_CONSTRAINTS'])) $s .= "\n".$tableoptions[$this->upperName.'_CONSTRAINTS']; $s .= "\n)"; if (isset($tableoptions[$this->upperName])) $s .= $tableoptions[$this->upperName]; $sql[] = $s; return $sql; } /* GENERATE TRIGGERS IF NEEDED used when table has auto-incrementing field that is emulated using triggers */ function _Triggers($tabname,$taboptions) { return array(); } /* Sanitize options, so that array elements with no keys are promoted to keys */ function _Options($opts) { if (!is_array($opts)) return array(); $newopts = array(); foreach($opts as $k => $v) { if (is_numeric($k)) $newopts[strtoupper($v)] = $v; else $newopts[strtoupper($k)] = $v; } return $newopts; } /* "Florian Buzin [ easywe ]" This function changes/adds new fields to your table. You don't have to know if the col is new or not. It will check on its own. */ function ChangeTableSQL($tablename, $flds, $tableoptions = false) { global $ADODB_FETCH_MODE; $save = $ADODB_FETCH_MODE; $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC; if ($this->connection->fetchMode !== false) $savem = $this->connection->SetFetchMode(false); // check table exists $save_handler = $this->connection->raiseErrorFn; $this->connection->raiseErrorFn = ''; $cols = $this->MetaColumns($tablename); $this->connection->raiseErrorFn = $save_handler; if (isset($savem)) $this->connection->SetFetchMode($savem); $ADODB_FETCH_MODE = $save; if ( empty($cols)) { return $this->CreateTableSQL($tablename, $flds, $tableoptions); } if (is_array($flds)) { // Cycle through the update fields, comparing // existing fields to fields to update. // if the Metatype and size is exactly the // same, ignore - by Mark Newham $holdflds = array(); foreach($flds as $k=>$v) { if ( isset($cols[$k]) && is_object($cols[$k]) ) { // If already not allowing nulls, then don't change $obj = $cols[$k]; if (isset($obj->not_null) && $obj->not_null) $v = str_replace('NOT NULL','',$v); $c = $cols[$k]; $ml = $c->max_length; $mt = $this->MetaType($c->type,$ml); if ($ml == -1) $ml = ''; if ($mt == 'X') $ml = $v['SIZE']; if (($mt != $v['TYPE']) || $ml != $v['SIZE']) { $holdflds[$k] = $v; } } else { $holdflds[$k] = $v; } } $flds = $holdflds; } // already exists, alter table instead list($lines,$pkey) = $this->_GenFields($flds); $alter = 'ALTER TABLE ' . $this->TableName($tablename); $sql = array(); foreach ( $lines as $id => $v ) { if ( isset($cols[$id]) && is_object($cols[$id]) ) { $flds = Lens_ParseArgs($v,','); // We are trying to change the size of the field, if not allowed, simply ignore the request. if ($flds && in_array(strtoupper(substr($flds[0][1],0,4)),$this->invalidResizeTypes4)) continue; $sql[] = $alter . $this->alterCol . ' ' . $v; } else { $sql[] = $alter . $this->addCol . ' ' . $v; } } return $sql; } } // class ?>torrentflux_2.4/html/adodb/tohtml.inc.php0000755000004100000410000001262411017367654020714 0ustar www-datawww-data */ // specific code for tohtml GLOBAL $gSQLMaxRows,$gSQLBlockRows,$ADODB_ROUND; $ADODB_ROUND=4; // rounding $gSQLMaxRows = 1000; // max no of rows to download $gSQLBlockRows=20; // max no of rows per table block // RecordSet to HTML Table //------------------------------------------------------------ // Convert a recordset to a html table. Multiple tables are generated // if the number of rows is > $gSQLBlockRows. This is because // web browsers normally require the whole table to be downloaded // before it can be rendered, so we break the output into several // smaller faster rendering tables. // // $rs: the recordset // $ztabhtml: the table tag attributes (optional) // $zheaderarray: contains the replacement strings for the headers (optional) // // USAGE: // include('adodb.inc.php'); // $db = ADONewConnection('mysql'); // $db->Connect('mysql','userid','password','database'); // $rs = $db->Execute('select col1,col2,col3 from table'); // rs2html($rs, 'BORDER=2', array('Title1', 'Title2', 'Title3')); // $rs->Close(); // // RETURNS: number of rows displayed function rs2html(&$rs,$ztabhtml=false,$zheaderarray=false,$htmlspecialchars=true,$echo = true) { $s ='';$rows=0;$docnt = false; GLOBAL $gSQLMaxRows,$gSQLBlockRows,$ADODB_ROUND; if (!$rs) { printf(ADODB_BAD_RS,'rs2html'); return false; } if (! $ztabhtml) $ztabhtml = "BORDER='1' WIDTH='98%'"; //else $docnt = true; $typearr = array(); $ncols = $rs->FieldCount(); $hdr = "\n\n"; for ($i=0; $i < $ncols; $i++) { $field = $rs->FetchField($i); if ($field) { if ($zheaderarray) $fname = $zheaderarray[$i]; else $fname = htmlspecialchars($field->name); $typearr[$i] = $rs->MetaType($field->type,$field->max_length); //print " $field->name $field->type $typearr[$i] "; } else { $fname = 'Field '.($i+1); $typearr[$i] = 'C'; } if (strlen($fname)==0) $fname = ' '; $hdr .= ""; } $hdr .= "\n"; if ($echo) print $hdr."\n\n"; else $html = $hdr; // smart algorithm - handles ADODB_FETCH_MODE's correctly by probing... $numoffset = isset($rs->fields[0]) ||isset($rs->fields[1]) || isset($rs->fields[2]); while (!$rs->EOF) { $s .= "\n"; for ($i=0; $i < $ncols; $i++) { if ($i===0) $v=($numoffset) ? $rs->fields[0] : reset($rs->fields); else $v = ($numoffset) ? $rs->fields[$i] : next($rs->fields); $type = $typearr[$i]; switch($type) { case 'D': if (empty($v)) $s .= "\n"; else if (!strpos($v,':')) { $s .= " \n"; } break; case 'T': if (empty($v)) $s .= "\n"; else $s .= " \n"; break; case 'N': if (abs($v) - round($v,0) < 0.00000001) $v = round($v); else $v = round($v,$ADODB_ROUND); case 'I': $s .= " \n"; break; /* case 'B': if (substr($v,8,2)=="BM" ) $v = substr($v,8); $mtime = substr(str_replace(' ','_',microtime()),2); $tmpname = "tmp/".uniqid($mtime).getmypid(); $fd = @fopen($tmpname,'a'); @ftruncate($fd,0); @fwrite($fd,$v); @fclose($fd); if (!function_exists ("mime_content_type")) { function mime_content_type ($file) { return exec("file -bi ".escapeshellarg($file)); } } $t = mime_content_type($tmpname); $s .= (substr($t,0,5)=="image") ? " \\n" : " \\n"; break; */ default: if ($htmlspecialchars) $v = htmlspecialchars(trim($v)); $v = trim($v); if (strlen($v) == 0) $v = ' '; $s .= " \n"; } } // for $s .= "\n\n"; $rows += 1; if ($rows >= $gSQLMaxRows) { $rows = "

    Truncated at $gSQLMaxRows

    "; break; } // switch $rs->MoveNext(); // additional EOF check to prevent a widow header if (!$rs->EOF && $rows % $gSQLBlockRows == 0) { //if (connection_aborted()) break;// not needed as PHP aborts script, unlike ASP if ($echo) print $s . "
    $fname
      ".$rs->UserDate($v,"D d, M Y") ."    ".$rs->UserTimeStamp($v,"D d, M Y, h:i:s") ." ".stripslashes((trim($v))) ." $t$t". str_replace("\n",'
    ',stripslashes($v)) ."
    \n\n"; else $html .= $s ."
    \n\n"; $s = $hdr; } } // while if ($echo) print $s."\n\n"; else $html .= $s."\n\n"; if ($docnt) if ($echo) print "

    ".$rows." Rows

    "; return ($echo) ? $rows : $html; } // pass in 2 dimensional array function arr2html(&$arr,$ztabhtml='',$zheaderarray='') { if (!$ztabhtml) $ztabhtml = 'BORDER=1'; $s = "";//';print_r($arr); if ($zheaderarray) { $s .= ''; for ($i=0; $i\n"; } else $s .= " \n"; $s .= "\n\n"; } $s .= '
     
    '; print $s; } ?>torrentflux_2.4/html/adodb/adodb.inc.php0000755000004100000410000033756711017367654020476 0ustar www-datawww-datafields is available on EOF $ADODB_FETCH_MODE; // DEFAULT, NUM, ASSOC or BOTH. Default follows native driver default... //============================================================================================== // GLOBAL SETUP //============================================================================================== $ADODB_EXTENSION = defined('ADODB_EXTENSION'); //********************************************************// /* Controls $ADODB_FORCE_TYPE mode. Default is ADODB_FORCE_VALUE (3). Used in GetUpdateSql and GetInsertSql functions. Thx to Niko, nuko#mbnet.fi 0 = ignore empty fields. All empty fields in array are ignored. 1 = force null. All empty, php null and string 'null' fields are changed to sql NULL values. 2 = force empty. All empty, php null and string 'null' fields are changed to sql empty '' or 0 values. 3 = force value. Value is left as it is. Php null and string 'null' are set to sql NULL values and empty fields '' are set to empty '' sql values. */ define('ADODB_FORCE_IGNORE',0); define('ADODB_FORCE_NULL',1); define('ADODB_FORCE_EMPTY',2); define('ADODB_FORCE_VALUE',3); //********************************************************// if (!$ADODB_EXTENSION || ADODB_EXTENSION < 4.0) { define('ADODB_BAD_RS','

    Bad $rs in %s. Connection or SQL invalid. Try using $connection->debug=true;

    '); // allow [ ] @ ` " and . in table names define('ADODB_TABLE_REGEX','([]0-9a-z_\:\"\`\.\@\[-]*)'); // prefetching used by oracle if (!defined('ADODB_PREFETCH_ROWS')) define('ADODB_PREFETCH_ROWS',10); /* Controls ADODB_FETCH_ASSOC field-name case. Default is 2, use native case-names. This currently works only with mssql, odbc, oci8po and ibase derived drivers. 0 = assoc lowercase field names. $rs->fields['orderid'] 1 = assoc uppercase field names. $rs->fields['ORDERID'] 2 = use native-case field names. $rs->fields['OrderID'] */ define('ADODB_FETCH_DEFAULT',0); define('ADODB_FETCH_NUM',1); define('ADODB_FETCH_ASSOC',2); define('ADODB_FETCH_BOTH',3); if (!defined('TIMESTAMP_FIRST_YEAR')) define('TIMESTAMP_FIRST_YEAR',100); // PHP's version scheme makes converting to numbers difficult - workaround $_adodb_ver = (float) PHP_VERSION; if ($_adodb_ver >= 5.0) { define('ADODB_PHPVER',0x5000); } else if ($_adodb_ver > 4.299999) { # 4.3 define('ADODB_PHPVER',0x4300); } else if ($_adodb_ver > 4.199999) { # 4.2 define('ADODB_PHPVER',0x4200); } else if (strnatcmp(PHP_VERSION,'4.0.5')>=0) { define('ADODB_PHPVER',0x4050); } else { define('ADODB_PHPVER',0x4000); } } //if (!defined('ADODB_ASSOC_CASE')) define('ADODB_ASSOC_CASE',2); /** Accepts $src and $dest arrays, replacing string $data */ function ADODB_str_replace($src, $dest, $data) { if (ADODB_PHPVER >= 0x4050) return str_replace($src,$dest,$data); $s = reset($src); $d = reset($dest); while ($s !== false) { $data = str_replace($s,$d,$data); $s = next($src); $d = next($dest); } return $data; } function ADODB_Setup() { GLOBAL $ADODB_vers, // database version $ADODB_COUNTRECS, // count number of records returned - slows down query $ADODB_CACHE_DIR, // directory to cache recordsets $ADODB_FETCH_MODE, $ADODB_FORCE_TYPE; $ADODB_FETCH_MODE = ADODB_FETCH_DEFAULT; $ADODB_FORCE_TYPE = ADODB_FORCE_VALUE; if (!isset($ADODB_CACHE_DIR)) { $ADODB_CACHE_DIR = '/tmp'; //(isset($_ENV['TMP'])) ? $_ENV['TMP'] : '/tmp'; } else { // do not accept url based paths, eg. http:/ or ftp:/ if (strpos($ADODB_CACHE_DIR,'://') !== false) die("Illegal path http:// or ftp://"); } // Initialize random number generator for randomizing cache flushes srand(((double)microtime())*1000000); /** * ADODB version as a string. */ $ADODB_vers = 'V4.80 8 Mar 2006 (c) 2000-2006 John Lim (jlim#natsoft.com.my). All rights reserved. Released BSD & LGPL.'; /** * Determines whether recordset->RecordCount() is used. * Set to false for highest performance -- RecordCount() will always return -1 then * for databases that provide "virtual" recordcounts... */ if (!isset($ADODB_COUNTRECS)) $ADODB_COUNTRECS = true; } //============================================================================================== // CHANGE NOTHING BELOW UNLESS YOU ARE DESIGNING ADODB //============================================================================================== ADODB_Setup(); //============================================================================================== // CLASS ADOFieldObject //============================================================================================== /** * Helper class for FetchFields -- holds info on a column */ class ADOFieldObject { var $name = ''; var $max_length=0; var $type=""; /* // additional fields by dannym... (danny_milo@yahoo.com) var $not_null = false; // actually, this has already been built-in in the postgres, fbsql AND mysql module? ^-^ // so we can as well make not_null standard (leaving it at "false" does not harm anyways) var $has_default = false; // this one I have done only in mysql and postgres for now ... // others to come (dannym) var $default_value; // default, if any, and supported. Check has_default first. */ } function ADODB_TransMonitor($dbms, $fn, $errno, $errmsg, $p1, $p2, &$thisConnection) { //print "Errorno ($fn errno=$errno m=$errmsg) "; $thisConnection->_transOK = false; if ($thisConnection->_oldRaiseFn) { $fn = $thisConnection->_oldRaiseFn; $fn($dbms, $fn, $errno, $errmsg, $p1, $p2,$thisConnection); } } //============================================================================================== // CLASS ADOConnection //============================================================================================== /** * Connection object. For connecting to databases, and executing queries. */ class ADOConnection { // // PUBLIC VARS // var $dataProvider = 'native'; var $databaseType = ''; /// RDBMS currently in use, eg. odbc, mysql, mssql var $database = ''; /// Name of database to be used. var $host = ''; /// The hostname of the database server var $user = ''; /// The username which is used to connect to the database server. var $password = ''; /// Password for the username. For security, we no longer store it. var $debug = false; /// if set to true will output sql statements var $maxblobsize = 262144; /// maximum size of blobs or large text fields (262144 = 256K)-- some db's die otherwise like foxpro var $concat_operator = '+'; /// default concat operator -- change to || for Oracle/Interbase var $substr = 'substr'; /// substring operator var $length = 'length'; /// string length ofperator var $random = 'rand()'; /// random function var $upperCase = 'upper'; /// uppercase function var $fmtDate = "'Y-m-d'"; /// used by DBDate() as the default date format used by the database var $fmtTimeStamp = "'Y-m-d, h:i:s A'"; /// used by DBTimeStamp as the default timestamp fmt. var $true = '1'; /// string that represents TRUE for a database var $false = '0'; /// string that represents FALSE for a database var $replaceQuote = "\\'"; /// string to use to replace quotes var $nameQuote = '"'; /// string to use to quote identifiers and names var $charSet=false; /// character set to use - only for interbase, postgres and oci8 var $metaDatabasesSQL = ''; var $metaTablesSQL = ''; var $uniqueOrderBy = false; /// All order by columns have to be unique var $emptyDate = ' '; var $emptyTimeStamp = ' '; var $lastInsID = false; //-- var $hasInsertID = false; /// supports autoincrement ID? var $hasAffectedRows = false; /// supports affected rows for update/delete? var $hasTop = false; /// support mssql/access SELECT TOP 10 * FROM TABLE var $hasLimit = false; /// support pgsql/mysql SELECT * FROM TABLE LIMIT 10 var $readOnly = false; /// this is a readonly database - used by phpLens var $hasMoveFirst = false; /// has ability to run MoveFirst(), scrolling backwards var $hasGenID = false; /// can generate sequences using GenID(); var $hasTransactions = true; /// has transactions //-- var $genID = 0; /// sequence id used by GenID(); var $raiseErrorFn = false; /// error function to call var $isoDates = false; /// accepts dates in ISO format var $cacheSecs = 3600; /// cache for 1 hour var $sysDate = false; /// name of function that returns the current date var $sysTimeStamp = false; /// name of function that returns the current timestamp var $arrayClass = 'ADORecordSet_array'; /// name of class used to generate array recordsets, which are pre-downloaded recordsets var $noNullStrings = false; /// oracle specific stuff - if true ensures that '' is converted to ' ' var $numCacheHits = 0; var $numCacheMisses = 0; var $pageExecuteCountRows = true; var $uniqueSort = false; /// indicates that all fields in order by must be unique var $leftOuter = false; /// operator to use for left outer join in WHERE clause var $rightOuter = false; /// operator to use for right outer join in WHERE clause var $ansiOuter = false; /// whether ansi outer join syntax supported var $autoRollback = false; // autoRollback on PConnect(). var $poorAffectedRows = false; // affectedRows not working or unreliable var $fnExecute = false; var $fnCacheExecute = false; var $blobEncodeType = false; // false=not required, 'I'=encode to integer, 'C'=encode to char var $rsPrefix = "ADORecordSet_"; var $autoCommit = true; /// do not modify this yourself - actually private var $transOff = 0; /// temporarily disable transactions var $transCnt = 0; /// count of nested transactions var $fetchMode=false; // // PRIVATE VARS // var $_oldRaiseFn = false; var $_transOK = null; var $_connectionID = false; /// The returned link identifier whenever a successful database connection is made. var $_errorMsg = false; /// A variable which was used to keep the returned last error message. The value will /// then returned by the errorMsg() function var $_errorCode = false; /// Last error code, not guaranteed to be used - only by oci8 var $_queryID = false; /// This variable keeps the last created result link identifier var $_isPersistentConnection = false; /// A boolean variable to state whether its a persistent connection or normal connection. */ var $_bindInputArray = false; /// set to true if ADOConnection.Execute() permits binding of array parameters. var $_evalAll = false; var $_affected = false; var $_logsql = false; /** * Constructor */ function ADOConnection() { die('Virtual Class -- cannot instantiate'); } function Version() { global $ADODB_vers; return (float) substr($ADODB_vers,1); } /** Get server version info... @returns An array with 2 elements: $arr['string'] is the description string, and $arr[version] is the version (also a string). */ function ServerInfo() { return array('description' => '', 'version' => ''); } function IsConnected() { return !empty($this->_connectionID); } function _findvers($str) { if (preg_match('/([0-9]+\.([0-9\.])+)/',$str, $arr)) return $arr[1]; else return ''; } /** * All error messages go through this bottleneck function. * You can define your own handler by defining the function name in ADODB_OUTP. */ function outp($msg,$newline=true) { global $ADODB_FLUSH,$ADODB_OUTP; if (defined('ADODB_OUTP')) { $fn = ADODB_OUTP; $fn($msg,$newline); return; } else if (isset($ADODB_OUTP)) { $fn = $ADODB_OUTP; $fn($msg,$newline); return; } if ($newline) $msg .= "
    \n"; if (isset($_SERVER['HTTP_USER_AGENT']) || !$newline) echo $msg; else echo strip_tags($msg); if (!empty($ADODB_FLUSH) && ob_get_length() !== false) flush(); // do not flush if output buffering enabled - useless - thx to Jesse Mullan } function Time() { $rs =& $this->_Execute("select $this->sysTimeStamp"); if ($rs && !$rs->EOF) return $this->UnixTimeStamp(reset($rs->fields)); return false; } /** * Connect to database * * @param [argHostname] Host to connect to * @param [argUsername] Userid to login * @param [argPassword] Associated password * @param [argDatabaseName] database * @param [forceNew] force new connection * * @return true or false */ function Connect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "", $forceNew = false) { if ($argHostname != "") $this->host = $argHostname; if ($argUsername != "") $this->user = $argUsername; if ($argPassword != "") $this->password = $argPassword; // not stored for security reasons if ($argDatabaseName != "") $this->database = $argDatabaseName; $this->_isPersistentConnection = false; if ($forceNew) { if ($rez=$this->_nconnect($this->host, $this->user, $this->password, $this->database)) return true; } else { if ($rez=$this->_connect($this->host, $this->user, $this->password, $this->database)) return true; } if (isset($rez)) { $err = $this->ErrorMsg(); if (empty($err)) $err = "Connection error to server '$argHostname' with user '$argUsername'"; $ret = false; } else { $err = "Missing extension for ".$this->dataProvider; $ret = 0; } if ($fn = $this->raiseErrorFn) $fn($this->databaseType,'CONNECT',$this->ErrorNo(),$err,$this->host,$this->database,$this); $this->_connectionID = false; if ($this->debug) ADOConnection::outp( $this->host.': '.$err); return $ret; } function _nconnect($argHostname, $argUsername, $argPassword, $argDatabaseName) { return $this->_connect($argHostname, $argUsername, $argPassword, $argDatabaseName); } /** * Always force a new connection to database - currently only works with oracle * * @param [argHostname] Host to connect to * @param [argUsername] Userid to login * @param [argPassword] Associated password * @param [argDatabaseName] database * * @return true or false */ function NConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "") { return $this->Connect($argHostname, $argUsername, $argPassword, $argDatabaseName, true); } /** * Establish persistent connect to database * * @param [argHostname] Host to connect to * @param [argUsername] Userid to login * @param [argPassword] Associated password * @param [argDatabaseName] database * * @return return true or false */ function PConnect($argHostname = "", $argUsername = "", $argPassword = "", $argDatabaseName = "") { if (defined('ADODB_NEVER_PERSIST')) return $this->Connect($argHostname,$argUsername,$argPassword,$argDatabaseName); if ($argHostname != "") $this->host = $argHostname; if ($argUsername != "") $this->user = $argUsername; if ($argPassword != "") $this->password = $argPassword; if ($argDatabaseName != "") $this->database = $argDatabaseName; $this->_isPersistentConnection = true; if ($rez = $this->_pconnect($this->host, $this->user, $this->password, $this->database)) return true; if (isset($rez)) { $err = $this->ErrorMsg(); if (empty($err)) $err = "Connection error to server '$argHostname' with user '$argUsername'"; $ret = false; } else { $err = "Missing extension for ".$this->dataProvider; $ret = 0; } if ($fn = $this->raiseErrorFn) { $fn($this->databaseType,'PCONNECT',$this->ErrorNo(),$err,$this->host,$this->database,$this); } $this->_connectionID = false; if ($this->debug) ADOConnection::outp( $this->host.': '.$err); return $ret; } // Format date column in sql string given an input format that understands Y M D function SQLDate($fmt, $col=false) { if (!$col) $col = $this->sysDate; return $col; // child class implement } /** * Should prepare the sql statement and return the stmt resource. * For databases that do not support this, we return the $sql. To ensure * compatibility with databases that do not support prepare: * * $stmt = $db->Prepare("insert into table (id, name) values (?,?)"); * $db->Execute($stmt,array(1,'Jill')) or die('insert failed'); * $db->Execute($stmt,array(2,'Joe')) or die('insert failed'); * * @param sql SQL to send to database * * @return return FALSE, or the prepared statement, or the original sql if * if the database does not support prepare. * */ function Prepare($sql) { return $sql; } /** * Some databases, eg. mssql require a different function for preparing * stored procedures. So we cannot use Prepare(). * * Should prepare the stored procedure and return the stmt resource. * For databases that do not support this, we return the $sql. To ensure * compatibility with databases that do not support prepare: * * @param sql SQL to send to database * * @return return FALSE, or the prepared statement, or the original sql if * if the database does not support prepare. * */ function PrepareSP($sql,$param=true) { return $this->Prepare($sql,$param); } /** * PEAR DB Compat */ function Quote($s) { return $this->qstr($s,false); } /** Requested by "Karsten Dambekalns" */ function QMagic($s) { return $this->qstr($s,get_magic_quotes_gpc()); } function q(&$s) { $s = $this->qstr($s,false); } /** * PEAR DB Compat - do not use internally. */ function ErrorNative() { return $this->ErrorNo(); } /** * PEAR DB Compat - do not use internally. */ function nextId($seq_name) { return $this->GenID($seq_name); } /** * Lock a row, will escalate and lock the table if row locking not supported * will normally free the lock at the end of the transaction * * @param $table name of table to lock * @param $where where clause to use, eg: "WHERE row=12". If left empty, will escalate to table lock */ function RowLock($table,$where) { return false; } function CommitLock($table) { return $this->CommitTrans(); } function RollbackLock($table) { return $this->RollbackTrans(); } /** * PEAR DB Compat - do not use internally. * * The fetch modes for NUMERIC and ASSOC for PEAR DB and ADODB are identical * for easy porting :-) * * @param mode The fetchmode ADODB_FETCH_ASSOC or ADODB_FETCH_NUM * @returns The previous fetch mode */ function SetFetchMode($mode) { $old = $this->fetchMode; $this->fetchMode = $mode; if ($old === false) { global $ADODB_FETCH_MODE; return $ADODB_FETCH_MODE; } return $old; } /** * PEAR DB Compat - do not use internally. */ function &Query($sql, $inputarr=false) { $rs = &$this->Execute($sql, $inputarr); if (!$rs && defined('ADODB_PEAR')) return ADODB_PEAR_Error(); return $rs; } /** * PEAR DB Compat - do not use internally */ function &LimitQuery($sql, $offset, $count, $params=false) { $rs = &$this->SelectLimit($sql, $count, $offset, $params); if (!$rs && defined('ADODB_PEAR')) return ADODB_PEAR_Error(); return $rs; } /** * PEAR DB Compat - do not use internally */ function Disconnect() { return $this->Close(); } /* Returns placeholder for parameter, eg. $DB->Param('a') will return ':a' for Oracle, and '?' for most other databases... For databases that require positioned params, eg $1, $2, $3 for postgresql, pass in Param(false) before setting the first parameter. */ function Param($name,$type='C') { return '?'; } /* InParameter and OutParameter are self-documenting versions of Parameter(). */ function InParameter(&$stmt,&$var,$name,$maxLen=4000,$type=false) { return $this->Parameter($stmt,$var,$name,false,$maxLen,$type); } /* */ function OutParameter(&$stmt,&$var,$name,$maxLen=4000,$type=false) { return $this->Parameter($stmt,$var,$name,true,$maxLen,$type); } /* Usage in oracle $stmt = $db->Prepare('select * from table where id =:myid and group=:group'); $db->Parameter($stmt,$id,'myid'); $db->Parameter($stmt,$group,'group',64); $db->Execute(); @param $stmt Statement returned by Prepare() or PrepareSP(). @param $var PHP variable to bind to @param $name Name of stored procedure variable name to bind to. @param [$isOutput] Indicates direction of parameter 0/false=IN 1=OUT 2= IN/OUT. This is ignored in oci8. @param [$maxLen] Holds an maximum length of the variable. @param [$type] The data type of $var. Legal values depend on driver. */ function Parameter(&$stmt,&$var,$name,$isOutput=false,$maxLen=4000,$type=false) { return false; } /** Improved method of initiating a transaction. Used together with CompleteTrans(). Advantages include: a. StartTrans/CompleteTrans is nestable, unlike BeginTrans/CommitTrans/RollbackTrans. Only the outermost block is treated as a transaction.
    b. CompleteTrans auto-detects SQL errors, and will rollback on errors, commit otherwise.
    c. All BeginTrans/CommitTrans/RollbackTrans inside a StartTrans/CompleteTrans block are disabled, making it backward compatible. */ function StartTrans($errfn = 'ADODB_TransMonitor') { if ($this->transOff > 0) { $this->transOff += 1; return; } $this->_oldRaiseFn = $this->raiseErrorFn; $this->raiseErrorFn = $errfn; $this->_transOK = true; if ($this->debug && $this->transCnt > 0) ADOConnection::outp("Bad Transaction: StartTrans called within BeginTrans"); $this->BeginTrans(); $this->transOff = 1; } /** Used together with StartTrans() to end a transaction. Monitors connection for sql errors, and will commit or rollback as appropriate. @autoComplete if true, monitor sql errors and commit and rollback as appropriate, and if set to false force rollback even if no SQL error detected. @returns true on commit, false on rollback. */ function CompleteTrans($autoComplete = true) { if ($this->transOff > 1) { $this->transOff -= 1; return true; } $this->raiseErrorFn = $this->_oldRaiseFn; $this->transOff = 0; if ($this->_transOK && $autoComplete) { if (!$this->CommitTrans()) { $this->_transOK = false; if ($this->debug) ADOConnection::outp("Smart Commit failed"); } else if ($this->debug) ADOConnection::outp("Smart Commit occurred"); } else { $this->_transOK = false; $this->RollbackTrans(); if ($this->debug) ADOCOnnection::outp("Smart Rollback occurred"); } return $this->_transOK; } /* At the end of a StartTrans/CompleteTrans block, perform a rollback. */ function FailTrans() { if ($this->debug) if ($this->transOff == 0) { ADOConnection::outp("FailTrans outside StartTrans/CompleteTrans"); } else { ADOConnection::outp("FailTrans was called"); adodb_backtrace(); } $this->_transOK = false; } /** Check if transaction has failed, only for Smart Transactions. */ function HasFailedTrans() { if ($this->transOff > 0) return $this->_transOK == false; return false; } /** * Execute SQL * * @param sql SQL statement to execute, or possibly an array holding prepared statement ($sql[0] will hold sql text) * @param [inputarr] holds the input data to bind to. Null elements will be set to null. * @return RecordSet or false */ function &Execute($sql,$inputarr=false) { if ($this->fnExecute) { $fn = $this->fnExecute; $ret =& $fn($this,$sql,$inputarr); if (isset($ret)) return $ret; } if ($inputarr) { if (!is_array($inputarr)) $inputarr = array($inputarr); $element0 = reset($inputarr); # is_object check because oci8 descriptors can be passed in $array_2d = is_array($element0) && !is_object(reset($element0)); //remove extra memory copy of input -mikefedyk unset($element0); if (!is_array($sql) && !$this->_bindInputArray) { $sqlarr = explode('?',$sql); if (!$array_2d) $inputarr = array($inputarr); foreach($inputarr as $arr) { $sql = ''; $i = 0; //Use each() instead of foreach to reduce memory usage -mikefedyk while(list(, $v) = each($arr)) { $sql .= $sqlarr[$i]; // from Ron Baldwin // Only quote string types $typ = gettype($v); if ($typ == 'string') //New memory copy of input created here -mikefedyk $sql .= $this->qstr($v); else if ($typ == 'double') $sql .= str_replace(',','.',$v); // locales fix so 1.1 does not get converted to 1,1 else if ($typ == 'boolean') $sql .= $v ? $this->true : $this->false; else if ($v === null) $sql .= 'NULL'; else $sql .= $v; $i += 1; } if (isset($sqlarr[$i])) { $sql .= $sqlarr[$i]; if ($i+1 != sizeof($sqlarr)) ADOConnection::outp( "Input Array does not match ?: ".htmlspecialchars($sql)); } else if ($i != sizeof($sqlarr)) ADOConnection::outp( "Input array does not match ?: ".htmlspecialchars($sql)); $ret =& $this->_Execute($sql); if (!$ret) return $ret; } } else { if ($array_2d) { if (is_string($sql)) $stmt = $this->Prepare($sql); else $stmt = $sql; foreach($inputarr as $arr) { $ret =& $this->_Execute($stmt,$arr); if (!$ret) return $ret; } } else { $ret =& $this->_Execute($sql,$inputarr); } } } else { $ret =& $this->_Execute($sql,false); } return $ret; } function &_Execute($sql,$inputarr=false) { if ($this->debug) { global $ADODB_INCLUDED_LIB; if (empty($ADODB_INCLUDED_LIB)) include_once(ADODB_DIR.'/adodb-lib.inc.php'); $this->_queryID = _adodb_debug_execute($this, $sql,$inputarr); } else { $this->_queryID = @$this->_query($sql,$inputarr); } /************************ // OK, query executed *************************/ if ($this->_queryID === false) { // error handling if query fails if ($this->debug == 99) adodb_backtrace(true,5); $fn = $this->raiseErrorFn; if ($fn) { $fn($this->databaseType,'EXECUTE',$this->ErrorNo(),$this->ErrorMsg(),$sql,$inputarr,$this); } $false = false; return $false; } if ($this->_queryID === true) { // return simplified recordset for inserts/updates/deletes with lower overhead $rs =& new ADORecordSet_empty(); return $rs; } // return real recordset from select statement $rsclass = $this->rsPrefix.$this->databaseType; $rs = new $rsclass($this->_queryID,$this->fetchMode); $rs->connection = &$this; // Pablo suggestion $rs->Init(); if (is_array($sql)) $rs->sql = $sql[0]; else $rs->sql = $sql; if ($rs->_numOfRows <= 0) { global $ADODB_COUNTRECS; if ($ADODB_COUNTRECS) { if (!$rs->EOF) { $rs = &$this->_rs2rs($rs,-1,-1,!is_array($sql)); $rs->_queryID = $this->_queryID; } else $rs->_numOfRows = 0; } } return $rs; } function CreateSequence($seqname='adodbseq',$startID=1) { if (empty($this->_genSeqSQL)) return false; return $this->Execute(sprintf($this->_genSeqSQL,$seqname,$startID)); } function DropSequence($seqname='adodbseq') { if (empty($this->_dropSeqSQL)) return false; return $this->Execute(sprintf($this->_dropSeqSQL,$seqname)); } /** * Generates a sequence id and stores it in $this->genID; * GenID is only available if $this->hasGenID = true; * * @param seqname name of sequence to use * @param startID if sequence does not exist, start at this ID * @return 0 if not supported, otherwise a sequence id */ function GenID($seqname='adodbseq',$startID=1) { if (!$this->hasGenID) { return 0; // formerly returns false pre 1.60 } $getnext = sprintf($this->_genIDSQL,$seqname); $holdtransOK = $this->_transOK; $save_handler = $this->raiseErrorFn; $this->raiseErrorFn = ''; @($rs = $this->Execute($getnext)); $this->raiseErrorFn = $save_handler; if (!$rs) { $this->_transOK = $holdtransOK; //if the status was ok before reset $createseq = $this->Execute(sprintf($this->_genSeqSQL,$seqname,$startID)); $rs = $this->Execute($getnext); } if ($rs && !$rs->EOF) $this->genID = reset($rs->fields); else $this->genID = 0; // false if ($rs) $rs->Close(); return $this->genID; } /** * @param $table string name of the table, not needed by all databases (eg. mysql), default '' * @param $column string name of the column, not needed by all databases (eg. mysql), default '' * @return the last inserted ID. Not all databases support this. */ function Insert_ID($table='',$column='') { if ($this->_logsql && $this->lastInsID) return $this->lastInsID; if ($this->hasInsertID) return $this->_insertid($table,$column); if ($this->debug) { ADOConnection::outp( '

    Insert_ID error

    '); adodb_backtrace(); } return false; } /** * Portable Insert ID. Pablo Roca * * @return the last inserted ID. All databases support this. But aware possible * problems in multiuser environments. Heavy test this before deploying. */ function PO_Insert_ID($table="", $id="") { if ($this->hasInsertID){ return $this->Insert_ID($table,$id); } else { return $this->GetOne("SELECT MAX($id) FROM $table"); } } /** * @return # rows affected by UPDATE/DELETE */ function Affected_Rows() { if ($this->hasAffectedRows) { if ($this->fnExecute === 'adodb_log_sql') { if ($this->_logsql && $this->_affected !== false) return $this->_affected; } $val = $this->_affectedrows(); return ($val < 0) ? false : $val; } if ($this->debug) ADOConnection::outp( '

    Affected_Rows error

    ',false); return false; } /** * @return the last error message */ function ErrorMsg() { if ($this->_errorMsg) return '!! '.strtoupper($this->dataProvider.' '.$this->databaseType).': '.$this->_errorMsg; else return ''; } /** * @return the last error number. Normally 0 means no error. */ function ErrorNo() { return ($this->_errorMsg) ? -1 : 0; } function MetaError($err=false) { include_once(ADODB_DIR."/adodb-error.inc.php"); if ($err === false) $err = $this->ErrorNo(); return adodb_error($this->dataProvider,$this->databaseType,$err); } function MetaErrorMsg($errno) { include_once(ADODB_DIR."/adodb-error.inc.php"); return adodb_errormsg($errno); } /** * @returns an array with the primary key columns in it. */ function MetaPrimaryKeys($table, $owner=false) { // owner not used in base class - see oci8 $p = array(); $objs =& $this->MetaColumns($table); if ($objs) { foreach($objs as $v) { if (!empty($v->primary_key)) $p[] = $v->name; } } if (sizeof($p)) return $p; if (function_exists('ADODB_VIEW_PRIMARYKEYS')) return ADODB_VIEW_PRIMARYKEYS($this->databaseType, $this->database, $table, $owner); return false; } /** * @returns assoc array where keys are tables, and values are foreign keys */ function MetaForeignKeys($table, $owner=false, $upper=false) { return false; } /** * Choose a database to connect to. Many databases do not support this. * * @param dbName is the name of the database to select * @return true or false */ function SelectDB($dbName) {return false;} /** * Will select, getting rows from $offset (1-based), for $nrows. * This simulates the MySQL "select * from table limit $offset,$nrows" , and * the PostgreSQL "select * from table limit $nrows offset $offset". Note that * MySQL and PostgreSQL parameter ordering is the opposite of the other. * eg. * SelectLimit('select * from table',3); will return rows 1 to 3 (1-based) * SelectLimit('select * from table',3,2); will return rows 3 to 5 (1-based) * * Uses SELECT TOP for Microsoft databases (when $this->hasTop is set) * BUG: Currently SelectLimit fails with $sql with LIMIT or TOP clause already set * * @param sql * @param [offset] is the row to start calculations from (1-based) * @param [nrows] is the number of rows to get * @param [inputarr] array of bind variables * @param [secs2cache] is a private parameter only used by jlim * @return the recordset ($rs->databaseType == 'array') */ function &SelectLimit($sql,$nrows=-1,$offset=-1, $inputarr=false,$secs2cache=0) { if ($this->hasTop && $nrows > 0) { // suggested by Reinhard Balling. Access requires top after distinct // Informix requires first before distinct - F Riosa $ismssql = (strpos($this->databaseType,'mssql') !== false); if ($ismssql) $isaccess = false; else $isaccess = (strpos($this->databaseType,'access') !== false); if ($offset <= 0) { // access includes ties in result if ($isaccess) { $sql = preg_replace( '/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.((integer)$nrows).' ',$sql); if ($secs2cache>0) { $ret =& $this->CacheExecute($secs2cache, $sql,$inputarr); } else { $ret =& $this->Execute($sql,$inputarr); } return $ret; // PHP5 fix } else if ($ismssql){ $sql = preg_replace( '/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.((integer)$nrows).' ',$sql); } else { $sql = preg_replace( '/(^\s*select\s)/i','\\1 '.$this->hasTop.' '.((integer)$nrows).' ',$sql); } } else { $nn = $nrows + $offset; if ($isaccess || $ismssql) { $sql = preg_replace( '/(^\s*select\s+(distinctrow|distinct)?)/i','\\1 '.$this->hasTop.' '.$nn.' ',$sql); } else { $sql = preg_replace( '/(^\s*select\s)/i','\\1 '.$this->hasTop.' '.$nn.' ',$sql); } } } // if $offset>0, we want to skip rows, and $ADODB_COUNTRECS is set, we buffer rows // 0 to offset-1 which will be discarded anyway. So we disable $ADODB_COUNTRECS. global $ADODB_COUNTRECS; $savec = $ADODB_COUNTRECS; $ADODB_COUNTRECS = false; if ($offset>0){ if ($secs2cache>0) $rs = &$this->CacheExecute($secs2cache,$sql,$inputarr); else $rs = &$this->Execute($sql,$inputarr); } else { if ($secs2cache>0) $rs = &$this->CacheExecute($secs2cache,$sql,$inputarr); else $rs = &$this->Execute($sql,$inputarr); } $ADODB_COUNTRECS = $savec; if ($rs && !$rs->EOF) { $rs =& $this->_rs2rs($rs,$nrows,$offset); } //print_r($rs); return $rs; } /** * Create serializable recordset. Breaks rs link to connection. * * @param rs the recordset to serialize */ function &SerializableRS(&$rs) { $rs2 =& $this->_rs2rs($rs); $ignore = false; $rs2->connection =& $ignore; return $rs2; } /** * Convert database recordset to an array recordset * input recordset's cursor should be at beginning, and * old $rs will be closed. * * @param rs the recordset to copy * @param [nrows] number of rows to retrieve (optional) * @param [offset] offset by number of rows (optional) * @return the new recordset */ function &_rs2rs(&$rs,$nrows=-1,$offset=-1,$close=true) { if (! $rs) { $false = false; return $false; } $dbtype = $rs->databaseType; if (!$dbtype) { $rs = &$rs; // required to prevent crashing in 4.2.1, but does not happen in 4.3.1 -- why ? return $rs; } if (($dbtype == 'array' || $dbtype == 'csv') && $nrows == -1 && $offset == -1) { $rs->MoveFirst(); $rs = &$rs; // required to prevent crashing in 4.2.1, but does not happen in 4.3.1-- why ? return $rs; } $flds = array(); for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) { $flds[] = $rs->FetchField($i); } $arr =& $rs->GetArrayLimit($nrows,$offset); //print_r($arr); if ($close) $rs->Close(); $arrayClass = $this->arrayClass; $rs2 = new $arrayClass(); $rs2->connection = &$this; $rs2->sql = $rs->sql; $rs2->dataProvider = $this->dataProvider; $rs2->InitArrayFields($arr,$flds); $rs2->fetchMode = isset($rs->adodbFetchMode) ? $rs->adodbFetchMode : $rs->fetchMode; return $rs2; } /* * Return all rows. Compat with PEAR DB */ function &GetAll($sql, $inputarr=false) { $arr =& $this->GetArray($sql,$inputarr); return $arr; } function &GetAssoc($sql, $inputarr=false,$force_array = false, $first2cols = false) { $rs =& $this->Execute($sql, $inputarr); if (!$rs) { $false = false; return $false; } $arr =& $rs->GetAssoc($force_array,$first2cols); return $arr; } function &CacheGetAssoc($secs2cache, $sql=false, $inputarr=false,$force_array = false, $first2cols = false) { if (!is_numeric($secs2cache)) { $first2cols = $force_array; $force_array = $inputarr; } $rs =& $this->CacheExecute($secs2cache, $sql, $inputarr); if (!$rs) { $false = false; return $false; } $arr =& $rs->GetAssoc($force_array,$first2cols); return $arr; } /** * Return first element of first row of sql statement. Recordset is disposed * for you. * * @param sql SQL statement * @param [inputarr] input bind array */ function GetOne($sql,$inputarr=false) { global $ADODB_COUNTRECS; $crecs = $ADODB_COUNTRECS; $ADODB_COUNTRECS = false; $ret = false; $rs = &$this->Execute($sql,$inputarr); if ($rs) { if (!$rs->EOF) $ret = reset($rs->fields); $rs->Close(); } $ADODB_COUNTRECS = $crecs; return $ret; } function CacheGetOne($secs2cache,$sql=false,$inputarr=false) { $ret = false; $rs = &$this->CacheExecute($secs2cache,$sql,$inputarr); if ($rs) { if (!$rs->EOF) $ret = reset($rs->fields); $rs->Close(); } return $ret; } function GetCol($sql, $inputarr = false, $trim = false) { $rv = false; $rs = &$this->Execute($sql, $inputarr); if ($rs) { $rv = array(); if ($trim) { while (!$rs->EOF) { $rv[] = trim(reset($rs->fields)); $rs->MoveNext(); } } else { while (!$rs->EOF) { $rv[] = reset($rs->fields); $rs->MoveNext(); } } $rs->Close(); } return $rv; } function CacheGetCol($secs, $sql = false, $inputarr = false,$trim=false) { $rv = false; $rs = &$this->CacheExecute($secs, $sql, $inputarr); if ($rs) { if ($trim) { while (!$rs->EOF) { $rv[] = trim(reset($rs->fields)); $rs->MoveNext(); } } else { while (!$rs->EOF) { $rv[] = reset($rs->fields); $rs->MoveNext(); } } $rs->Close(); } return $rv; } /* Calculate the offset of a date for a particular database and generate appropriate SQL. Useful for calculating future/past dates and storing in a database. If dayFraction=1.5 means 1.5 days from now, 1.0/24 for 1 hour. */ function OffsetDate($dayFraction,$date=false) { if (!$date) $date = $this->sysDate; return '('.$date.'+'.$dayFraction.')'; } /** * * @param sql SQL statement * @param [inputarr] input bind array */ function &GetArray($sql,$inputarr=false) { global $ADODB_COUNTRECS; $savec = $ADODB_COUNTRECS; $ADODB_COUNTRECS = false; $rs =& $this->Execute($sql,$inputarr); $ADODB_COUNTRECS = $savec; if (!$rs) if (defined('ADODB_PEAR')) { $cls = ADODB_PEAR_Error(); return $cls; } else { $false = false; return $false; } $arr =& $rs->GetArray(); $rs->Close(); return $arr; } function &CacheGetAll($secs2cache,$sql=false,$inputarr=false) { return $this->CacheGetArray($secs2cache,$sql,$inputarr); } function &CacheGetArray($secs2cache,$sql=false,$inputarr=false) { global $ADODB_COUNTRECS; $savec = $ADODB_COUNTRECS; $ADODB_COUNTRECS = false; $rs =& $this->CacheExecute($secs2cache,$sql,$inputarr); $ADODB_COUNTRECS = $savec; if (!$rs) if (defined('ADODB_PEAR')) { $cls = ADODB_PEAR_Error(); return $cls; } else { $false = false; return $false; } $arr =& $rs->GetArray(); $rs->Close(); return $arr; } /** * Return one row of sql statement. Recordset is disposed for you. * * @param sql SQL statement * @param [inputarr] input bind array */ function &GetRow($sql,$inputarr=false) { global $ADODB_COUNTRECS; $crecs = $ADODB_COUNTRECS; $ADODB_COUNTRECS = false; $rs =& $this->Execute($sql,$inputarr); $ADODB_COUNTRECS = $crecs; if ($rs) { if (!$rs->EOF) $arr = $rs->fields; else $arr = array(); $rs->Close(); return $arr; } $false = false; return $false; } function &CacheGetRow($secs2cache,$sql=false,$inputarr=false) { $rs =& $this->CacheExecute($secs2cache,$sql,$inputarr); if ($rs) { $arr = false; if (!$rs->EOF) $arr = $rs->fields; $rs->Close(); return $arr; } $false = false; return $false; } /** * Insert or replace a single record. Note: this is not the same as MySQL's replace. * ADOdb's Replace() uses update-insert semantics, not insert-delete-duplicates of MySQL. * Also note that no table locking is done currently, so it is possible that the * record be inserted twice by two programs... * * $this->Replace('products', array('prodname' =>"'Nails'","price" => 3.99), 'prodname'); * * $table table name * $fieldArray associative array of data (you must quote strings yourself). * $keyCol the primary key field name or if compound key, array of field names * autoQuote set to true to use a hueristic to quote strings. Works with nulls and numbers * but does not work with dates nor SQL functions. * has_autoinc the primary key is an auto-inc field, so skip in insert. * * Currently blob replace not supported * * returns 0 = fail, 1 = update, 2 = insert */ function Replace($table, $fieldArray, $keyCol, $autoQuote=false, $has_autoinc=false) { global $ADODB_INCLUDED_LIB; if (empty($ADODB_INCLUDED_LIB)) include_once(ADODB_DIR.'/adodb-lib.inc.php'); return _adodb_replace($this, $table, $fieldArray, $keyCol, $autoQuote, $has_autoinc); } /** * Will select, getting rows from $offset (1-based), for $nrows. * This simulates the MySQL "select * from table limit $offset,$nrows" , and * the PostgreSQL "select * from table limit $nrows offset $offset". Note that * MySQL and PostgreSQL parameter ordering is the opposite of the other. * eg. * CacheSelectLimit(15,'select * from table',3); will return rows 1 to 3 (1-based) * CacheSelectLimit(15,'select * from table',3,2); will return rows 3 to 5 (1-based) * * BUG: Currently CacheSelectLimit fails with $sql with LIMIT or TOP clause already set * * @param [secs2cache] seconds to cache data, set to 0 to force query. This is optional * @param sql * @param [offset] is the row to start calculations from (1-based) * @param [nrows] is the number of rows to get * @param [inputarr] array of bind variables * @return the recordset ($rs->databaseType == 'array') */ function &CacheSelectLimit($secs2cache,$sql,$nrows=-1,$offset=-1,$inputarr=false) { if (!is_numeric($secs2cache)) { if ($sql === false) $sql = -1; if ($offset == -1) $offset = false; // sql, nrows, offset,inputarr $rs =& $this->SelectLimit($secs2cache,$sql,$nrows,$offset,$this->cacheSecs); } else { if ($sql === false) ADOConnection::outp( "Warning: \$sql missing from CacheSelectLimit()"); $rs =& $this->SelectLimit($sql,$nrows,$offset,$inputarr,$secs2cache); } return $rs; } /** * Flush cached recordsets that match a particular $sql statement. * If $sql == false, then we purge all files in the cache. */ /** * Flush cached recordsets that match a particular $sql statement. * If $sql == false, then we purge all files in the cache. */ function CacheFlush($sql=false,$inputarr=false) { global $ADODB_CACHE_DIR; if (strlen($ADODB_CACHE_DIR) > 1 && !$sql) { /*if (strncmp(PHP_OS,'WIN',3) === 0) $dir = str_replace('/', '\\', $ADODB_CACHE_DIR); else */ $dir = $ADODB_CACHE_DIR; if ($this->debug) { ADOConnection::outp( "CacheFlush: $dir
    \n", $this->_dirFlush($dir),"
    "); } else { $this->_dirFlush($dir); } return; } global $ADODB_INCLUDED_CSV; if (empty($ADODB_INCLUDED_CSV)) include_once(ADODB_DIR.'/adodb-csvlib.inc.php'); $f = $this->_gencachename($sql.serialize($inputarr),false); adodb_write_file($f,''); // is adodb_write_file needed? if (!@unlink($f)) { if ($this->debug) ADOConnection::outp( "CacheFlush: failed for $f"); } } /** * Private function to erase all of the files and subdirectories in a directory. * * Just specify the directory, and tell it if you want to delete the directory or just clear it out. * Note: $kill_top_level is used internally in the function to flush subdirectories. */ function _dirFlush($dir, $kill_top_level = false) { if(!$dh = @opendir($dir)) return; while (($obj = readdir($dh))) { if($obj=='.' || $obj=='..') continue; if (!@unlink($dir.'/'.$obj)) $this->_dirFlush($dir.'/'.$obj, true); } if ($kill_top_level === true) @rmdir($dir); return true; } function xCacheFlush($sql=false,$inputarr=false) { global $ADODB_CACHE_DIR; if (strlen($ADODB_CACHE_DIR) > 1 && !$sql) { if (strncmp(PHP_OS,'WIN',3) === 0) { $cmd = 'del /s '.str_replace('/','\\',$ADODB_CACHE_DIR).'\adodb_*.cache'; } else { //$cmd = 'find "'.$ADODB_CACHE_DIR.'" -type f -maxdepth 1 -print0 | xargs -0 rm -f'; $cmd = 'rm -rf '.$ADODB_CACHE_DIR.'/[0-9a-f][0-9a-f]/'; // old version 'rm -f `find '.$ADODB_CACHE_DIR.' -name adodb_*.cache`'; } if ($this->debug) { ADOConnection::outp( "CacheFlush: $cmd
    \n", system($cmd),"
    "); } else { exec($cmd); } return; } global $ADODB_INCLUDED_CSV; if (empty($ADODB_INCLUDED_CSV)) include_once(ADODB_DIR.'/adodb-csvlib.inc.php'); $f = $this->_gencachename($sql.serialize($inputarr),false); adodb_write_file($f,''); // is adodb_write_file needed? if (!@unlink($f)) { if ($this->debug) ADOConnection::outp( "CacheFlush: failed for $f"); } } /** * Private function to generate filename for caching. * Filename is generated based on: * * - sql statement * - database type (oci8, ibase, ifx, etc) * - database name * - userid * - setFetchMode (adodb 4.23) * * When not in safe mode, we create 256 sub-directories in the cache directory ($ADODB_CACHE_DIR). * Assuming that we can have 50,000 files per directory with good performance, * then we can scale to 12.8 million unique cached recordsets. Wow! */ function _gencachename($sql,$createdir) { global $ADODB_CACHE_DIR; static $notSafeMode; if ($this->fetchMode === false) { global $ADODB_FETCH_MODE; $mode = $ADODB_FETCH_MODE; } else { $mode = $this->fetchMode; } $m = md5($sql.$this->databaseType.$this->database.$this->user.$mode); if (!isset($notSafeMode)) $notSafeMode = !ini_get('safe_mode'); $dir = ($notSafeMode) ? $ADODB_CACHE_DIR.'/'.substr($m,0,2) : $ADODB_CACHE_DIR; if ($createdir && $notSafeMode && !file_exists($dir)) { $oldu = umask(0); if (!mkdir($dir,0771)) if ($this->debug) ADOConnection::outp( "Unable to mkdir $dir for $sql"); umask($oldu); } return $dir.'/adodb_'.$m.'.cache'; } /** * Execute SQL, caching recordsets. * * @param [secs2cache] seconds to cache data, set to 0 to force query. * This is an optional parameter. * @param sql SQL statement to execute * @param [inputarr] holds the input data to bind to * @return RecordSet or false */ function &CacheExecute($secs2cache,$sql=false,$inputarr=false) { if (!is_numeric($secs2cache)) { $inputarr = $sql; $sql = $secs2cache; $secs2cache = $this->cacheSecs; } if (is_array($sql)) { $sqlparam = $sql; $sql = $sql[0]; } else $sqlparam = $sql; global $ADODB_INCLUDED_CSV; if (empty($ADODB_INCLUDED_CSV)) include_once(ADODB_DIR.'/adodb-csvlib.inc.php'); $md5file = $this->_gencachename($sql.serialize($inputarr),true); $err = ''; if ($secs2cache > 0){ $rs = &csv2rs($md5file,$err,$secs2cache,$this->arrayClass); $this->numCacheHits += 1; } else { $err='Timeout 1'; $rs = false; $this->numCacheMisses += 1; } if (!$rs) { // no cached rs found if ($this->debug) { if (get_magic_quotes_runtime()) { ADOConnection::outp("Please disable magic_quotes_runtime - it corrupts cache files :("); } if ($this->debug !== -1) ADOConnection::outp( " $md5file cache failure: $err (see sql below)"); } $rs = &$this->Execute($sqlparam,$inputarr); if ($rs) { $eof = $rs->EOF; $rs = &$this->_rs2rs($rs); // read entire recordset into memory immediately $txt = _rs2serialize($rs,false,$sql); // serialize if (!adodb_write_file($md5file,$txt,$this->debug)) { if ($fn = $this->raiseErrorFn) { $fn($this->databaseType,'CacheExecute',-32000,"Cache write error",$md5file,$sql,$this); } if ($this->debug) ADOConnection::outp( " Cache write error"); } if ($rs->EOF && !$eof) { $rs->MoveFirst(); //$rs = &csv2rs($md5file,$err); $rs->connection = &$this; // Pablo suggestion } } else @unlink($md5file); } else { $this->_errorMsg = ''; $this->_errorCode = 0; if ($this->fnCacheExecute) { $fn = $this->fnCacheExecute; $fn($this, $secs2cache, $sql, $inputarr); } // ok, set cached object found $rs->connection = &$this; // Pablo suggestion if ($this->debug){ $inBrowser = isset($_SERVER['HTTP_USER_AGENT']); $ttl = $rs->timeCreated + $secs2cache - time(); $s = is_array($sql) ? $sql[0] : $sql; if ($inBrowser) $s = ''.htmlspecialchars($s).''; ADOConnection::outp( " $md5file reloaded, ttl=$ttl [ $s ]"); } } return $rs; } /* Similar to PEAR DB's autoExecute(), except that $mode can be 'INSERT' or 'UPDATE' or DB_AUTOQUERY_INSERT or DB_AUTOQUERY_UPDATE If $mode == 'UPDATE', then $where is compulsory as a safety measure. $forceUpdate means that even if the data has not changed, perform update. */ function& AutoExecute($table, $fields_values, $mode = 'INSERT', $where = FALSE, $forceUpdate=true, $magicq=false) { $sql = 'SELECT * FROM '.$table; if ($where!==FALSE) $sql .= ' WHERE '.$where; else if ($mode == 'UPDATE' || $mode == 2 /* DB_AUTOQUERY_UPDATE */) { ADOConnection::outp('AutoExecute: Illegal mode=UPDATE with empty WHERE clause'); return false; } $rs =& $this->SelectLimit($sql,1); if (!$rs) return false; // table does not exist $rs->tableName = $table; switch((string) $mode) { case 'UPDATE': case '2': $sql = $this->GetUpdateSQL($rs, $fields_values, $forceUpdate, $magicq); break; case 'INSERT': case '1': $sql = $this->GetInsertSQL($rs, $fields_values, $magicq); break; default: ADOConnection::outp("AutoExecute: Unknown mode=$mode"); return false; } $ret = false; if ($sql) $ret = $this->Execute($sql); if ($ret) $ret = true; return $ret; } /** * Generates an Update Query based on an existing recordset. * $arrFields is an associative array of fields with the value * that should be assigned. * * Note: This function should only be used on a recordset * that is run against a single table and sql should only * be a simple select stmt with no groupby/orderby/limit * * "Jonathan Younger" */ function GetUpdateSQL(&$rs, $arrFields,$forceUpdate=false,$magicq=false,$force=null) { global $ADODB_INCLUDED_LIB; //********************************************************// //This is here to maintain compatibility //with older adodb versions. Sets force type to force nulls if $forcenulls is set. if (!isset($force)) { global $ADODB_FORCE_TYPE; $force = $ADODB_FORCE_TYPE; } //********************************************************// if (empty($ADODB_INCLUDED_LIB)) include_once(ADODB_DIR.'/adodb-lib.inc.php'); return _adodb_getupdatesql($this,$rs,$arrFields,$forceUpdate,$magicq,$force); } /** * Generates an Insert Query based on an existing recordset. * $arrFields is an associative array of fields with the value * that should be assigned. * * Note: This function should only be used on a recordset * that is run against a single table. */ function GetInsertSQL(&$rs, $arrFields,$magicq=false,$force=null) { global $ADODB_INCLUDED_LIB; if (!isset($force)) { global $ADODB_FORCE_TYPE; $force = $ADODB_FORCE_TYPE; } if (empty($ADODB_INCLUDED_LIB)) include_once(ADODB_DIR.'/adodb-lib.inc.php'); return _adodb_getinsertsql($this,$rs,$arrFields,$magicq,$force); } /** * Update a blob column, given a where clause. There are more sophisticated * blob handling functions that we could have implemented, but all require * a very complex API. Instead we have chosen something that is extremely * simple to understand and use. * * Note: $blobtype supports 'BLOB' and 'CLOB', default is BLOB of course. * * Usage to update a $blobvalue which has a primary key blob_id=1 into a * field blobtable.blobcolumn: * * UpdateBlob('blobtable', 'blobcolumn', $blobvalue, 'blob_id=1'); * * Insert example: * * $conn->Execute('INSERT INTO blobtable (id, blobcol) VALUES (1, null)'); * $conn->UpdateBlob('blobtable','blobcol',$blob,'id=1'); */ function UpdateBlob($table,$column,$val,$where,$blobtype='BLOB') { return $this->Execute("UPDATE $table SET $column=? WHERE $where",array($val)) != false; } /** * Usage: * UpdateBlob('TABLE', 'COLUMN', '/path/to/file', 'ID=1'); * * $blobtype supports 'BLOB' and 'CLOB' * * $conn->Execute('INSERT INTO blobtable (id, blobcol) VALUES (1, null)'); * $conn->UpdateBlob('blobtable','blobcol',$blobpath,'id=1'); */ function UpdateBlobFile($table,$column,$path,$where,$blobtype='BLOB') { $fd = fopen($path,'rb'); if ($fd === false) return false; $val = fread($fd,filesize($path)); fclose($fd); return $this->UpdateBlob($table,$column,$val,$where,$blobtype); } function BlobDecode($blob) { return $blob; } function BlobEncode($blob) { return $blob; } function SetCharSet($charset) { return false; } function IfNull( $field, $ifNull ) { return " CASE WHEN $field is null THEN $ifNull ELSE $field END "; } function LogSQL($enable=true) { include_once(ADODB_DIR.'/adodb-perf.inc.php'); if ($enable) $this->fnExecute = 'adodb_log_sql'; else $this->fnExecute = false; $old = $this->_logsql; $this->_logsql = $enable; if ($enable && !$old) $this->_affected = false; return $old; } function GetCharSet() { return false; } /** * Usage: * UpdateClob('TABLE', 'COLUMN', $var, 'ID=1', 'CLOB'); * * $conn->Execute('INSERT INTO clobtable (id, clobcol) VALUES (1, null)'); * $conn->UpdateClob('clobtable','clobcol',$clob,'id=1'); */ function UpdateClob($table,$column,$val,$where) { return $this->UpdateBlob($table,$column,$val,$where,'CLOB'); } // not the fastest implementation - quick and dirty - jlim // for best performance, use the actual $rs->MetaType(). function MetaType($t,$len=-1,$fieldobj=false) { if (empty($this->_metars)) { $rsclass = $this->rsPrefix.$this->databaseType; $this->_metars =& new $rsclass(false,$this->fetchMode); $this->_metars->connection =& $this; } return $this->_metars->MetaType($t,$len,$fieldobj); } /** * Change the SQL connection locale to a specified locale. * This is used to get the date formats written depending on the client locale. */ function SetDateLocale($locale = 'En') { $this->locale = $locale; switch (strtoupper($locale)) { case 'EN': $this->fmtDate="'Y-m-d'"; $this->fmtTimeStamp = "'Y-m-d H:i:s'"; break; case 'US': $this->fmtDate = "'m-d-Y'"; $this->fmtTimeStamp = "'m-d-Y H:i:s'"; break; case 'NL': case 'FR': case 'RO': case 'IT': $this->fmtDate="'d-m-Y'"; $this->fmtTimeStamp = "'d-m-Y H:i:s'"; break; case 'GE': $this->fmtDate="'d.m.Y'"; $this->fmtTimeStamp = "'d.m.Y H:i:s'"; break; default: $this->fmtDate="'Y-m-d'"; $this->fmtTimeStamp = "'Y-m-d H:i:s'"; break; } } function &GetActiveRecordsClass($class, $table,$whereOrderBy=false,$bindarr=false, $primkeyArr=false) { global $_ADODB_ACTIVE_DBS; $save = $this->SetFetchMode(ADODB_FETCH_NUM); if (empty($whereOrderBy)) $whereOrderBy = '1=1'; $rows = $this->GetAll("select * from ".$table.' WHERE '.$whereOrderBy,$bindarr); $this->SetFetchMode($save); $false = false; if ($rows === false) { return $false; } if (!isset($_ADODB_ACTIVE_DBS)) { include_once(ADODB_DIR.'/adodb-active-record.inc.php'); } if (!class_exists($class)) { ADOConnection::outp("Unknown class $class in GetActiveRcordsClass()"); return $false; } $arr = array(); foreach($rows as $row) { $obj =& new $class($table,$primkeyArr,$this); if ($obj->ErrorMsg()){ $this->_errorMsg = $obj->ErrorMsg(); return $false; } $obj->Set($row); $arr[] =& $obj; } return $arr; } function &GetActiveRecords($table,$where=false,$bindarr=false,$primkeyArr=false) { $arr =& $this->GetActiveRecordsClass('ADODB_Active_Record', $table, $where, $bindarr, $primkeyArr); return $arr; } /** * Close Connection */ function Close() { $rez = $this->_close(); $this->_connectionID = false; return $rez; } /** * Begin a Transaction. Must be followed by CommitTrans() or RollbackTrans(). * * @return true if succeeded or false if database does not support transactions */ function BeginTrans() {return false;} /** * If database does not support transactions, always return true as data always commited * * @param $ok set to false to rollback transaction, true to commit * * @return true/false. */ function CommitTrans($ok=true) { return true;} /** * If database does not support transactions, rollbacks always fail, so return false * * @return true/false. */ function RollbackTrans() { return false;} /** * return the databases that the driver can connect to. * Some databases will return an empty array. * * @return an array of database names. */ function MetaDatabases() { global $ADODB_FETCH_MODE; if ($this->metaDatabasesSQL) { $save = $ADODB_FETCH_MODE; $ADODB_FETCH_MODE = ADODB_FETCH_NUM; if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); $arr = $this->GetCol($this->metaDatabasesSQL); if (isset($savem)) $this->SetFetchMode($savem); $ADODB_FETCH_MODE = $save; return $arr; } return false; } /** * @param ttype can either be 'VIEW' or 'TABLE' or false. * If false, both views and tables are returned. * "VIEW" returns only views * "TABLE" returns only tables * @param showSchema returns the schema/user with the table name, eg. USER.TABLE * @param mask is the input mask - only supported by oci8 and postgresql * * @return array of tables for current database. */ function &MetaTables($ttype=false,$showSchema=false,$mask=false) { global $ADODB_FETCH_MODE; $false = false; if ($mask) { return $false; } if ($this->metaTablesSQL) { $save = $ADODB_FETCH_MODE; $ADODB_FETCH_MODE = ADODB_FETCH_NUM; if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); $rs = $this->Execute($this->metaTablesSQL); if (isset($savem)) $this->SetFetchMode($savem); $ADODB_FETCH_MODE = $save; if ($rs === false) return $false; $arr =& $rs->GetArray(); $arr2 = array(); if ($hast = ($ttype && isset($arr[0][1]))) { $showt = strncmp($ttype,'T',1); } for ($i=0; $i < sizeof($arr); $i++) { if ($hast) { if ($showt == 0) { if (strncmp($arr[$i][1],'T',1) == 0) $arr2[] = trim($arr[$i][0]); } else { if (strncmp($arr[$i][1],'V',1) == 0) $arr2[] = trim($arr[$i][0]); } } else $arr2[] = trim($arr[$i][0]); } $rs->Close(); return $arr2; } return $false; } function _findschema(&$table,&$schema) { if (!$schema && ($at = strpos($table,'.')) !== false) { $schema = substr($table,0,$at); $table = substr($table,$at+1); } } /** * List columns in a database as an array of ADOFieldObjects. * See top of file for definition of object. * * @param $table table name to query * @param $normalize makes table name case-insensitive (required by some databases) * @schema is optional database schema to use - not supported by all databases. * * @return array of ADOFieldObjects for current table. */ function &MetaColumns($table,$normalize=true) { global $ADODB_FETCH_MODE; $false = false; if (!empty($this->metaColumnsSQL)) { $schema = false; $this->_findschema($table,$schema); $save = $ADODB_FETCH_MODE; $ADODB_FETCH_MODE = ADODB_FETCH_NUM; if ($this->fetchMode !== false) $savem = $this->SetFetchMode(false); $rs = $this->Execute(sprintf($this->metaColumnsSQL,($normalize)?strtoupper($table):$table)); if (isset($savem)) $this->SetFetchMode($savem); $ADODB_FETCH_MODE = $save; if ($rs === false || $rs->EOF) return $false; $retarr = array(); while (!$rs->EOF) { //print_r($rs->fields); $fld = new ADOFieldObject(); $fld->name = $rs->fields[0]; $fld->type = $rs->fields[1]; if (isset($rs->fields[3]) && $rs->fields[3]) { if ($rs->fields[3]>0) $fld->max_length = $rs->fields[3]; $fld->scale = $rs->fields[4]; if ($fld->scale>0) $fld->max_length += 1; } else $fld->max_length = $rs->fields[2]; if ($ADODB_FETCH_MODE == ADODB_FETCH_NUM) $retarr[] = $fld; else $retarr[strtoupper($fld->name)] = $fld; $rs->MoveNext(); } $rs->Close(); return $retarr; } return $false; } /** * List indexes on a table as an array. * @param table table name to query * @param primary true to only show primary keys. Not actually used for most databases * * @return array of indexes on current table. Each element represents an index, and is itself an associative array. Array ( [name_of_index] => Array ( [unique] => true or false [columns] => Array ( [0] => firstname [1] => lastname ) ) */ function &MetaIndexes($table, $primary = false, $owner = false) { $false = false; return $false; } /** * List columns names in a table as an array. * @param table table name to query * * @return array of column names for current table. */ function &MetaColumnNames($table, $numIndexes=false) { $objarr =& $this->MetaColumns($table); if (!is_array($objarr)) { $false = false; return $false; } $arr = array(); if ($numIndexes) { $i = 0; foreach($objarr as $v) $arr[$i++] = $v->name; } else foreach($objarr as $v) $arr[strtoupper($v->name)] = $v->name; return $arr; } /** * Different SQL databases used different methods to combine strings together. * This function provides a wrapper. * * param s variable number of string parameters * * Usage: $db->Concat($str1,$str2); * * @return concatenated string */ function Concat() { $arr = func_get_args(); return implode($this->concat_operator, $arr); } /** * Converts a date "d" to a string that the database can understand. * * @param d a date in Unix date time format. * * @return date string in database date format */ function DBDate($d) { if (empty($d) && $d !== 0) return 'null'; if (is_string($d) && !is_numeric($d)) { if ($d === 'null' || strncmp($d,"'",1) === 0) return $d; if ($this->isoDates) return "'$d'"; $d = ADOConnection::UnixDate($d); } return adodb_date($this->fmtDate,$d); } /** * Converts a timestamp "ts" to a string that the database can understand. * * @param ts a timestamp in Unix date time format. * * @return timestamp string in database timestamp format */ function DBTimeStamp($ts) { if (empty($ts) && $ts !== 0) return 'null'; # strlen(14) allows YYYYMMDDHHMMSS format if (!is_string($ts) || (is_numeric($ts) && strlen($ts)<14)) return adodb_date($this->fmtTimeStamp,$ts); if ($ts === 'null') return $ts; if ($this->isoDates && strlen($ts) !== 14) return "'$ts'"; $ts = ADOConnection::UnixTimeStamp($ts); return adodb_date($this->fmtTimeStamp,$ts); } /** * Also in ADORecordSet. * @param $v is a date string in YYYY-MM-DD format * * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format */ function UnixDate($v) { if (is_object($v)) { // odbtp support //( [year] => 2004 [month] => 9 [day] => 4 [hour] => 12 [minute] => 44 [second] => 8 [fraction] => 0 ) return adodb_mktime($v->hour,$v->minute,$v->second,$v->month,$v->day, $v->year); } if (is_numeric($v) && strlen($v) !== 8) return $v; if (!preg_match( "|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})|", ($v), $rr)) return false; if ($rr[1] <= TIMESTAMP_FIRST_YEAR) return 0; // h-m-s-MM-DD-YY return @adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]); } /** * Also in ADORecordSet. * @param $v is a timestamp string in YYYY-MM-DD HH-NN-SS format * * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format */ function UnixTimeStamp($v) { if (is_object($v)) { // odbtp support //( [year] => 2004 [month] => 9 [day] => 4 [hour] => 12 [minute] => 44 [second] => 8 [fraction] => 0 ) return adodb_mktime($v->hour,$v->minute,$v->second,$v->month,$v->day, $v->year); } if (!preg_match( "|^([0-9]{4})[-/\.]?([0-9]{1,2})[-/\.]?([0-9]{1,2})[ ,-]*(([0-9]{1,2}):?([0-9]{1,2}):?([0-9\.]{1,4}))?|", ($v), $rr)) return false; if ($rr[1] <= TIMESTAMP_FIRST_YEAR && $rr[2]<= 1) return 0; // h-m-s-MM-DD-YY if (!isset($rr[5])) return adodb_mktime(0,0,0,$rr[2],$rr[3],$rr[1]); return @adodb_mktime($rr[5],$rr[6],$rr[7],$rr[2],$rr[3],$rr[1]); } /** * Also in ADORecordSet. * * Format database date based on user defined format. * * @param v is the character date in YYYY-MM-DD format, returned by database * @param fmt is the format to apply to it, using date() * * @return a date formated as user desires */ function UserDate($v,$fmt='Y-m-d',$gmt=false) { $tt = $this->UnixDate($v); // $tt == -1 if pre TIMESTAMP_FIRST_YEAR if (($tt === false || $tt == -1) && $v != false) return $v; else if ($tt == 0) return $this->emptyDate; else if ($tt == -1) { // pre-TIMESTAMP_FIRST_YEAR } return ($gmt) ? adodb_gmdate($fmt,$tt) : adodb_date($fmt,$tt); } /** * * @param v is the character timestamp in YYYY-MM-DD hh:mm:ss format * @param fmt is the format to apply to it, using date() * * @return a timestamp formated as user desires */ function UserTimeStamp($v,$fmt='Y-m-d H:i:s',$gmt=false) { if (!isset($v)) return $this->emptyTimeStamp; # strlen(14) allows YYYYMMDDHHMMSS format if (is_numeric($v) && strlen($v)<14) return ($gmt) ? adodb_gmdate($fmt,$v) : adodb_date($fmt,$v); $tt = $this->UnixTimeStamp($v); // $tt == -1 if pre TIMESTAMP_FIRST_YEAR if (($tt === false || $tt == -1) && $v != false) return $v; if ($tt == 0) return $this->emptyTimeStamp; return ($gmt) ? adodb_gmdate($fmt,$tt) : adodb_date($fmt,$tt); } function escape($s,$magic_quotes=false) { return $this->addq($s,$magic_quotes); } /** * Quotes a string, without prefixing nor appending quotes. */ function addq($s,$magic_quotes=false) { if (!$magic_quotes) { if ($this->replaceQuote[0] == '\\'){ // only since php 4.0.5 $s = adodb_str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s); //$s = str_replace("\0","\\\0", str_replace('\\','\\\\',$s)); } return str_replace("'",$this->replaceQuote,$s); } // undo magic quotes for " $s = str_replace('\\"','"',$s); if ($this->replaceQuote == "\\'") // ' already quoted, no need to change anything return $s; else {// change \' to '' for sybase/mssql $s = str_replace('\\\\','\\',$s); return str_replace("\\'",$this->replaceQuote,$s); } } /** * Correctly quotes a string so that all strings are escaped. We prefix and append * to the string single-quotes. * An example is $db->qstr("Don't bother",magic_quotes_runtime()); * * @param s the string to quote * @param [magic_quotes] if $s is GET/POST var, set to get_magic_quotes_gpc(). * This undoes the stupidity of magic quotes for GPC. * * @return quoted string to be sent back to database */ function qstr($s,$magic_quotes=false) { if (!$magic_quotes) { if ($this->replaceQuote[0] == '\\'){ // only since php 4.0.5 $s = adodb_str_replace(array('\\',"\0"),array('\\\\',"\\\0"),$s); //$s = str_replace("\0","\\\0", str_replace('\\','\\\\',$s)); } return "'".str_replace("'",$this->replaceQuote,$s)."'"; } // undo magic quotes for " $s = str_replace('\\"','"',$s); if ($this->replaceQuote == "\\'") // ' already quoted, no need to change anything return "'$s'"; else {// change \' to '' for sybase/mssql $s = str_replace('\\\\','\\',$s); return "'".str_replace("\\'",$this->replaceQuote,$s)."'"; } } /** * Will select the supplied $page number from a recordset, given that it is paginated in pages of * $nrows rows per page. It also saves two boolean values saying if the given page is the first * and/or last one of the recordset. Added by Iván Oliva to provide recordset pagination. * * See readme.htm#ex8 for an example of usage. * * @param sql * @param nrows is the number of rows per page to get * @param page is the page number to get (1-based) * @param [inputarr] array of bind variables * @param [secs2cache] is a private parameter only used by jlim * @return the recordset ($rs->databaseType == 'array') * * NOTE: phpLens uses a different algorithm and does not use PageExecute(). * */ function &PageExecute($sql, $nrows, $page, $inputarr=false, $secs2cache=0) { global $ADODB_INCLUDED_LIB; if (empty($ADODB_INCLUDED_LIB)) include_once(ADODB_DIR.'/adodb-lib.inc.php'); if ($this->pageExecuteCountRows) $rs =& _adodb_pageexecute_all_rows($this, $sql, $nrows, $page, $inputarr, $secs2cache); else $rs =& _adodb_pageexecute_no_last_page($this, $sql, $nrows, $page, $inputarr, $secs2cache); return $rs; } /** * Will select the supplied $page number from a recordset, given that it is paginated in pages of * $nrows rows per page. It also saves two boolean values saying if the given page is the first * and/or last one of the recordset. Added by Iván Oliva to provide recordset pagination. * * @param secs2cache seconds to cache data, set to 0 to force query * @param sql * @param nrows is the number of rows per page to get * @param page is the page number to get (1-based) * @param [inputarr] array of bind variables * @return the recordset ($rs->databaseType == 'array') */ function &CachePageExecute($secs2cache, $sql, $nrows, $page,$inputarr=false) { /*switch($this->dataProvider) { case 'postgres': case 'mysql': break; default: $secs2cache = 0; break; }*/ $rs =& $this->PageExecute($sql,$nrows,$page,$inputarr,$secs2cache); return $rs; } } // end class ADOConnection //============================================================================================== // CLASS ADOFetchObj //============================================================================================== /** * Internal placeholder for record objects. Used by ADORecordSet->FetchObj(). */ class ADOFetchObj { }; //============================================================================================== // CLASS ADORecordSet_empty //============================================================================================== /** * Lightweight recordset when there are no records to be returned */ class ADORecordSet_empty { var $dataProvider = 'empty'; var $databaseType = false; var $EOF = true; var $_numOfRows = 0; var $fields = false; var $connection = false; function RowCount() {return 0;} function RecordCount() {return 0;} function PO_RecordCount(){return 0;} function Close(){return true;} function FetchRow() {return false;} function FieldCount(){ return 0;} function Init() {} } //============================================================================================== // DATE AND TIME FUNCTIONS //============================================================================================== include_once(ADODB_DIR.'/adodb-time.inc.php'); //============================================================================================== // CLASS ADORecordSet //============================================================================================== if (PHP_VERSION < 5) include_once(ADODB_DIR.'/adodb-php4.inc.php'); else include_once(ADODB_DIR.'/adodb-iterator.inc.php'); /** * RecordSet class that represents the dataset returned by the database. * To keep memory overhead low, this class holds only the current row in memory. * No prefetching of data is done, so the RecordCount() can return -1 ( which * means recordcount not known). */ class ADORecordSet extends ADODB_BASE_RS { /* * public variables */ var $dataProvider = "native"; var $fields = false; /// holds the current row data var $blobSize = 100; /// any varchar/char field this size or greater is treated as a blob /// in other words, we use a text area for editing. var $canSeek = false; /// indicates that seek is supported var $sql; /// sql text var $EOF = false; /// Indicates that the current record position is after the last record in a Recordset object. var $emptyTimeStamp = ' '; /// what to display when $time==0 var $emptyDate = ' '; /// what to display when $time==0 var $debug = false; var $timeCreated=0; /// datetime in Unix format rs created -- for cached recordsets var $bind = false; /// used by Fields() to hold array - should be private? var $fetchMode; /// default fetch mode var $connection = false; /// the parent connection /* * private variables */ var $_numOfRows = -1; /** number of rows, or -1 */ var $_numOfFields = -1; /** number of fields in recordset */ var $_queryID = -1; /** This variable keeps the result link identifier. */ var $_currentRow = -1; /** This variable keeps the current row in the Recordset. */ var $_closed = false; /** has recordset been closed */ var $_inited = false; /** Init() should only be called once */ var $_obj; /** Used by FetchObj */ var $_names; /** Used by FetchObj */ var $_currentPage = -1; /** Added by Iván Oliva to implement recordset pagination */ var $_atFirstPage = false; /** Added by Iván Oliva to implement recordset pagination */ var $_atLastPage = false; /** Added by Iván Oliva to implement recordset pagination */ var $_lastPageNo = -1; var $_maxRecordCount = 0; var $datetime = false; /** * Constructor * * @param queryID this is the queryID returned by ADOConnection->_query() * */ function ADORecordSet($queryID) { $this->_queryID = $queryID; } function Init() { if ($this->_inited) return; $this->_inited = true; if ($this->_queryID) @$this->_initrs(); else { $this->_numOfRows = 0; $this->_numOfFields = 0; } if ($this->_numOfRows != 0 && $this->_numOfFields && $this->_currentRow == -1) { $this->_currentRow = 0; if ($this->EOF = ($this->_fetch() === false)) { $this->_numOfRows = 0; // _numOfRows could be -1 } } else { $this->EOF = true; } } /** * Generate a SELECT tag string from a recordset, and return the string. * If the recordset has 2 cols, we treat the 1st col as the containing * the text to display to the user, and 2nd col as the return value. Default * strings are compared with the FIRST column. * * @param name name of SELECT tag * @param [defstr] the value to hilite. Use an array for multiple hilites for listbox. * @param [blank1stItem] true to leave the 1st item in list empty * @param [multiple] true for listbox, false for popup * @param [size] #rows to show for listbox. not used by popup * @param [selectAttr] additional attributes to defined for SELECT tag. * useful for holding javascript onChange='...' handlers. & @param [compareFields0] when we have 2 cols in recordset, we compare the defstr with * column 0 (1st col) if this is true. This is not documented. * * @return HTML * * changes by glen.davies@cce.ac.nz to support multiple hilited items */ function GetMenu($name,$defstr='',$blank1stItem=true,$multiple=false, $size=0, $selectAttr='',$compareFields0=true) { global $ADODB_INCLUDED_LIB; if (empty($ADODB_INCLUDED_LIB)) include_once(ADODB_DIR.'/adodb-lib.inc.php'); return _adodb_getmenu($this, $name,$defstr,$blank1stItem,$multiple, $size, $selectAttr,$compareFields0); } /** * Generate a SELECT tag string from a recordset, and return the string. * If the recordset has 2 cols, we treat the 1st col as the containing * the text to display to the user, and 2nd col as the return value. Default * strings are compared with the SECOND column. * */ function GetMenu2($name,$defstr='',$blank1stItem=true,$multiple=false,$size=0, $selectAttr='') { return $this->GetMenu($name,$defstr,$blank1stItem,$multiple, $size, $selectAttr,false); } /* Grouped Menu */ function GetMenu3($name,$defstr='',$blank1stItem=true,$multiple=false, $size=0, $selectAttr='') { global $ADODB_INCLUDED_LIB; if (empty($ADODB_INCLUDED_LIB)) include_once(ADODB_DIR.'/adodb-lib.inc.php'); return _adodb_getmenu_gp($this, $name,$defstr,$blank1stItem,$multiple, $size, $selectAttr,false); } /** * return recordset as a 2-dimensional array. * * @param [nRows] is the number of rows to return. -1 means every row. * * @return an array indexed by the rows (0-based) from the recordset */ function &GetArray($nRows = -1) { global $ADODB_EXTENSION; if ($ADODB_EXTENSION) { $results = adodb_getall($this,$nRows); return $results; } $results = array(); $cnt = 0; while (!$this->EOF && $nRows != $cnt) { $results[] = $this->fields; $this->MoveNext(); $cnt++; } return $results; } function &GetAll($nRows = -1) { $arr =& $this->GetArray($nRows); return $arr; } /* * Some databases allow multiple recordsets to be returned. This function * will return true if there is a next recordset, or false if no more. */ function NextRecordSet() { return false; } /** * return recordset as a 2-dimensional array. * Helper function for ADOConnection->SelectLimit() * * @param offset is the row to start calculations from (1-based) * @param [nrows] is the number of rows to return * * @return an array indexed by the rows (0-based) from the recordset */ function &GetArrayLimit($nrows,$offset=-1) { if ($offset <= 0) { $arr =& $this->GetArray($nrows); return $arr; } $this->Move($offset); $results = array(); $cnt = 0; while (!$this->EOF && $nrows != $cnt) { $results[$cnt++] = $this->fields; $this->MoveNext(); } return $results; } /** * Synonym for GetArray() for compatibility with ADO. * * @param [nRows] is the number of rows to return. -1 means every row. * * @return an array indexed by the rows (0-based) from the recordset */ function &GetRows($nRows = -1) { $arr =& $this->GetArray($nRows); return $arr; } /** * return whole recordset as a 2-dimensional associative array if there are more than 2 columns. * The first column is treated as the key and is not included in the array. * If there is only 2 columns, it will return a 1 dimensional array of key-value pairs unless * $force_array == true. * * @param [force_array] has only meaning if we have 2 data columns. If false, a 1 dimensional * array is returned, otherwise a 2 dimensional array is returned. If this sounds confusing, * read the source. * * @param [first2cols] means if there are more than 2 cols, ignore the remaining cols and * instead of returning array[col0] => array(remaining cols), return array[col0] => col1 * * @return an associative array indexed by the first column of the array, * or false if the data has less than 2 cols. */ function &GetAssoc($force_array = false, $first2cols = false) { global $ADODB_EXTENSION; $cols = $this->_numOfFields; if ($cols < 2) { $false = false; return $false; } $numIndex = isset($this->fields[0]); $results = array(); if (!$first2cols && ($cols > 2 || $force_array)) { if ($ADODB_EXTENSION) { if ($numIndex) { while (!$this->EOF) { $results[trim($this->fields[0])] = array_slice($this->fields, 1); adodb_movenext($this); } } else { while (!$this->EOF) { $results[trim(reset($this->fields))] = array_slice($this->fields, 1); adodb_movenext($this); } } } else { if ($numIndex) { while (!$this->EOF) { $results[trim($this->fields[0])] = array_slice($this->fields, 1); $this->MoveNext(); } } else { while (!$this->EOF) { $results[trim(reset($this->fields))] = array_slice($this->fields, 1); $this->MoveNext(); } } } } else { if ($ADODB_EXTENSION) { // return scalar values if ($numIndex) { while (!$this->EOF) { // some bug in mssql PHP 4.02 -- doesn't handle references properly so we FORCE creating a new string $results[trim(($this->fields[0]))] = $this->fields[1]; adodb_movenext($this); } } else { while (!$this->EOF) { // some bug in mssql PHP 4.02 -- doesn't handle references properly so we FORCE creating a new string $v1 = trim(reset($this->fields)); $v2 = ''.next($this->fields); $results[$v1] = $v2; adodb_movenext($this); } } } else { if ($numIndex) { while (!$this->EOF) { // some bug in mssql PHP 4.02 -- doesn't handle references properly so we FORCE creating a new string $results[trim(($this->fields[0]))] = $this->fields[1]; $this->MoveNext(); } } else { while (!$this->EOF) { // some bug in mssql PHP 4.02 -- doesn't handle references properly so we FORCE creating a new string $v1 = trim(reset($this->fields)); $v2 = ''.next($this->fields); $results[$v1] = $v2; $this->MoveNext(); } } } } $ref =& $results; # workaround accelerator incompat with PHP 4.4 :( return $ref; } /** * * @param v is the character timestamp in YYYY-MM-DD hh:mm:ss format * @param fmt is the format to apply to it, using date() * * @return a timestamp formated as user desires */ function UserTimeStamp($v,$fmt='Y-m-d H:i:s') { if (is_numeric($v) && strlen($v)<14) return adodb_date($fmt,$v); $tt = $this->UnixTimeStamp($v); // $tt == -1 if pre TIMESTAMP_FIRST_YEAR if (($tt === false || $tt == -1) && $v != false) return $v; if ($tt === 0) return $this->emptyTimeStamp; return adodb_date($fmt,$tt); } /** * @param v is the character date in YYYY-MM-DD format, returned by database * @param fmt is the format to apply to it, using date() * * @return a date formated as user desires */ function UserDate($v,$fmt='Y-m-d') { $tt = $this->UnixDate($v); // $tt == -1 if pre TIMESTAMP_FIRST_YEAR if (($tt === false || $tt == -1) && $v != false) return $v; else if ($tt == 0) return $this->emptyDate; else if ($tt == -1) { // pre-TIMESTAMP_FIRST_YEAR } return adodb_date($fmt,$tt); } /** * @param $v is a date string in YYYY-MM-DD format * * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format */ function UnixDate($v) { return ADOConnection::UnixDate($v); } /** * @param $v is a timestamp string in YYYY-MM-DD HH-NN-SS format * * @return date in unix timestamp format, or 0 if before TIMESTAMP_FIRST_YEAR, or false if invalid date format */ function UnixTimeStamp($v) { return ADOConnection::UnixTimeStamp($v); } /** * PEAR DB Compat - do not use internally */ function Free() { return $this->Close(); } /** * PEAR DB compat, number of rows */ function NumRows() { return $this->_numOfRows; } /** * PEAR DB compat, number of cols */ function NumCols() { return $this->_numOfFields; } /** * Fetch a row, returning false if no more rows. * This is PEAR DB compat mode. * * @return false or array containing the current record */ function &FetchRow() { if ($this->EOF) { $false = false; return $false; } $arr = $this->fields; $this->_currentRow++; if (!$this->_fetch()) $this->EOF = true; return $arr; } /** * Fetch a row, returning PEAR_Error if no more rows. * This is PEAR DB compat mode. * * @return DB_OK or error object */ function FetchInto(&$arr) { if ($this->EOF) return (defined('PEAR_ERROR_RETURN')) ? new PEAR_Error('EOF',-1): false; $arr = $this->fields; $this->MoveNext(); return 1; // DB_OK } /** * Move to the first row in the recordset. Many databases do NOT support this. * * @return true or false */ function MoveFirst() { if ($this->_currentRow == 0) return true; return $this->Move(0); } /** * Move to the last row in the recordset. * * @return true or false */ function MoveLast() { if ($this->_numOfRows >= 0) return $this->Move($this->_numOfRows-1); if ($this->EOF) return false; while (!$this->EOF) { $f = $this->fields; $this->MoveNext(); } $this->fields = $f; $this->EOF = false; return true; } /** * Move to next record in the recordset. * * @return true if there still rows available, or false if there are no more rows (EOF). */ function MoveNext() { if (!$this->EOF) { $this->_currentRow++; if ($this->_fetch()) return true; } $this->EOF = true; /* -- tested error handling when scrolling cursor -- seems useless. $conn = $this->connection; if ($conn && $conn->raiseErrorFn && ($errno = $conn->ErrorNo())) { $fn = $conn->raiseErrorFn; $fn($conn->databaseType,'MOVENEXT',$errno,$conn->ErrorMsg().' ('.$this->sql.')',$conn->host,$conn->database); } */ return false; } /** * Random access to a specific row in the recordset. Some databases do not support * access to previous rows in the databases (no scrolling backwards). * * @param rowNumber is the row to move to (0-based) * * @return true if there still rows available, or false if there are no more rows (EOF). */ function Move($rowNumber = 0) { $this->EOF = false; if ($rowNumber == $this->_currentRow) return true; if ($rowNumber >= $this->_numOfRows) if ($this->_numOfRows != -1) $rowNumber = $this->_numOfRows-2; if ($this->canSeek) { if ($this->_seek($rowNumber)) { $this->_currentRow = $rowNumber; if ($this->_fetch()) { return true; } } else { $this->EOF = true; return false; } } else { if ($rowNumber < $this->_currentRow) return false; global $ADODB_EXTENSION; if ($ADODB_EXTENSION) { while (!$this->EOF && $this->_currentRow < $rowNumber) { adodb_movenext($this); } } else { while (! $this->EOF && $this->_currentRow < $rowNumber) { $this->_currentRow++; if (!$this->_fetch()) $this->EOF = true; } } return !($this->EOF); } $this->fields = false; $this->EOF = true; return false; } /** * Get the value of a field in the current row by column name. * Will not work if ADODB_FETCH_MODE is set to ADODB_FETCH_NUM. * * @param colname is the field to access * * @return the value of $colname column */ function Fields($colname) { return $this->fields[$colname]; } function GetAssocKeys($upper=true) { $this->bind = array(); for ($i=0; $i < $this->_numOfFields; $i++) { $o = $this->FetchField($i); if ($upper === 2) $this->bind[$o->name] = $i; else $this->bind[($upper) ? strtoupper($o->name) : strtolower($o->name)] = $i; } } /** * Use associative array to get fields array for databases that do not support * associative arrays. Submitted by Paolo S. Asioli paolo.asioli#libero.it * * If you don't want uppercase cols, set $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC * before you execute your SQL statement, and access $rs->fields['col'] directly. * * $upper 0 = lowercase, 1 = uppercase, 2 = whatever is returned by FetchField */ function &GetRowAssoc($upper=1) { $record = array(); // if (!$this->fields) return $record; if (!$this->bind) { $this->GetAssocKeys($upper); } foreach($this->bind as $k => $v) { $record[$k] = $this->fields[$v]; } return $record; } /** * Clean up recordset * * @return true or false */ function Close() { // free connection object - this seems to globally free the object // and not merely the reference, so don't do this... // $this->connection = false; if (!$this->_closed) { $this->_closed = true; return $this->_close(); } else return true; } /** * synonyms RecordCount and RowCount * * @return the number of rows or -1 if this is not supported */ function RecordCount() {return $this->_numOfRows;} /* * If we are using PageExecute(), this will return the maximum possible rows * that can be returned when paging a recordset. */ function MaxRecordCount() { return ($this->_maxRecordCount) ? $this->_maxRecordCount : $this->RecordCount(); } /** * synonyms RecordCount and RowCount * * @return the number of rows or -1 if this is not supported */ function RowCount() {return $this->_numOfRows;} /** * Portable RecordCount. Pablo Roca * * @return the number of records from a previous SELECT. All databases support this. * * But aware possible problems in multiuser environments. For better speed the table * must be indexed by the condition. Heavy test this before deploying. */ function PO_RecordCount($table="", $condition="") { $lnumrows = $this->_numOfRows; // the database doesn't support native recordcount, so we do a workaround if ($lnumrows == -1 && $this->connection) { IF ($table) { if ($condition) $condition = " WHERE " . $condition; $resultrows = &$this->connection->Execute("SELECT COUNT(*) FROM $table $condition"); if ($resultrows) $lnumrows = reset($resultrows->fields); } } return $lnumrows; } /** * @return the current row in the recordset. If at EOF, will return the last row. 0-based. */ function CurrentRow() {return $this->_currentRow;} /** * synonym for CurrentRow -- for ADO compat * * @return the current row in the recordset. If at EOF, will return the last row. 0-based. */ function AbsolutePosition() {return $this->_currentRow;} /** * @return the number of columns in the recordset. Some databases will set this to 0 * if no records are returned, others will return the number of columns in the query. */ function FieldCount() {return $this->_numOfFields;} /** * Get the ADOFieldObject of a specific column. * * @param fieldoffset is the column position to access(0-based). * * @return the ADOFieldObject for that column, or false. */ function &FetchField($fieldoffset) { // must be defined by child class } /** * Get the ADOFieldObjects of all columns in an array. * */ function& FieldTypesArray() { $arr = array(); for ($i=0, $max=$this->_numOfFields; $i < $max; $i++) $arr[] = $this->FetchField($i); return $arr; } /** * Return the fields array of the current row as an object for convenience. * The default case is lowercase field names. * * @return the object with the properties set to the fields of the current row */ function &FetchObj() { $o =& $this->FetchObject(false); return $o; } /** * Return the fields array of the current row as an object for convenience. * The default case is uppercase. * * @param $isupper to set the object property names to uppercase * * @return the object with the properties set to the fields of the current row */ function &FetchObject($isupper=true) { if (empty($this->_obj)) { $this->_obj = new ADOFetchObj(); $this->_names = array(); for ($i=0; $i <$this->_numOfFields; $i++) { $f = $this->FetchField($i); $this->_names[] = $f->name; } } $i = 0; if (PHP_VERSION >= 5) $o = clone($this->_obj); else $o = $this->_obj; for ($i=0; $i <$this->_numOfFields; $i++) { $name = $this->_names[$i]; if ($isupper) $n = strtoupper($name); else $n = $name; $o->$n = $this->Fields($name); } return $o; } /** * Return the fields array of the current row as an object for convenience. * The default is lower-case field names. * * @return the object with the properties set to the fields of the current row, * or false if EOF * * Fixed bug reported by tim@orotech.net */ function &FetchNextObj() { $o =& $this->FetchNextObject(false); return $o; } /** * Return the fields array of the current row as an object for convenience. * The default is upper case field names. * * @param $isupper to set the object property names to uppercase * * @return the object with the properties set to the fields of the current row, * or false if EOF * * Fixed bug reported by tim@orotech.net */ function &FetchNextObject($isupper=true) { $o = false; if ($this->_numOfRows != 0 && !$this->EOF) { $o = $this->FetchObject($isupper); $this->_currentRow++; if ($this->_fetch()) return $o; } $this->EOF = true; return $o; } /** * Get the metatype of the column. This is used for formatting. This is because * many databases use different names for the same type, so we transform the original * type to our standardised version which uses 1 character codes: * * @param t is the type passed in. Normally is ADOFieldObject->type. * @param len is the maximum length of that field. This is because we treat character * fields bigger than a certain size as a 'B' (blob). * @param fieldobj is the field object returned by the database driver. Can hold * additional info (eg. primary_key for mysql). * * @return the general type of the data: * C for character < 250 chars * X for teXt (>= 250 chars) * B for Binary * N for numeric or floating point * D for date * T for timestamp * L for logical/Boolean * I for integer * R for autoincrement counter/integer * * */ function MetaType($t,$len=-1,$fieldobj=false) { if (is_object($t)) { $fieldobj = $t; $t = $fieldobj->type; $len = $fieldobj->max_length; } // changed in 2.32 to hashing instead of switch stmt for speed... static $typeMap = array( 'VARCHAR' => 'C', 'VARCHAR2' => 'C', 'CHAR' => 'C', 'C' => 'C', 'STRING' => 'C', 'NCHAR' => 'C', 'NVARCHAR' => 'C', 'VARYING' => 'C', 'BPCHAR' => 'C', 'CHARACTER' => 'C', 'INTERVAL' => 'C', # Postgres ## 'LONGCHAR' => 'X', 'TEXT' => 'X', 'NTEXT' => 'X', 'M' => 'X', 'X' => 'X', 'CLOB' => 'X', 'NCLOB' => 'X', 'LVARCHAR' => 'X', ## 'BLOB' => 'B', 'IMAGE' => 'B', 'BINARY' => 'B', 'VARBINARY' => 'B', 'LONGBINARY' => 'B', 'B' => 'B', ## 'YEAR' => 'D', // mysql 'DATE' => 'D', 'D' => 'D', ## 'TIME' => 'T', 'TIMESTAMP' => 'T', 'DATETIME' => 'T', 'TIMESTAMPTZ' => 'T', 'T' => 'T', ## 'BOOL' => 'L', 'BOOLEAN' => 'L', 'BIT' => 'L', 'L' => 'L', ## 'COUNTER' => 'R', 'R' => 'R', 'SERIAL' => 'R', // ifx 'INT IDENTITY' => 'R', ## 'INT' => 'I', 'INT2' => 'I', 'INT4' => 'I', 'INT8' => 'I', 'INTEGER' => 'I', 'INTEGER UNSIGNED' => 'I', 'SHORT' => 'I', 'TINYINT' => 'I', 'SMALLINT' => 'I', 'I' => 'I', ## 'LONG' => 'N', // interbase is numeric, oci8 is blob 'BIGINT' => 'N', // this is bigger than PHP 32-bit integers 'DECIMAL' => 'N', 'DEC' => 'N', 'REAL' => 'N', 'DOUBLE' => 'N', 'DOUBLE PRECISION' => 'N', 'SMALLFLOAT' => 'N', 'FLOAT' => 'N', 'NUMBER' => 'N', 'NUM' => 'N', 'NUMERIC' => 'N', 'MONEY' => 'N', ## informix 9.2 'SQLINT' => 'I', 'SQLSERIAL' => 'I', 'SQLSMINT' => 'I', 'SQLSMFLOAT' => 'N', 'SQLFLOAT' => 'N', 'SQLMONEY' => 'N', 'SQLDECIMAL' => 'N', 'SQLDATE' => 'D', 'SQLVCHAR' => 'C', 'SQLCHAR' => 'C', 'SQLDTIME' => 'T', 'SQLINTERVAL' => 'N', 'SQLBYTES' => 'B', 'SQLTEXT' => 'X' ); $tmap = false; $t = strtoupper($t); $tmap = (isset($typeMap[$t])) ? $typeMap[$t] : 'N'; switch ($tmap) { case 'C': // is the char field is too long, return as text field... if ($this->blobSize >= 0) { if ($len > $this->blobSize) return 'X'; } else if ($len > 250) { return 'X'; } return 'C'; case 'I': if (!empty($fieldobj->primary_key)) return 'R'; return 'I'; case false: return 'N'; case 'B': if (isset($fieldobj->binary)) return ($fieldobj->binary) ? 'B' : 'X'; return 'B'; case 'D': if (!empty($this->connection) && !empty($this->connection->datetime)) return 'T'; return 'D'; default: if ($t == 'LONG' && $this->dataProvider == 'oci8') return 'B'; return $tmap; } } function _close() {} /** * set/returns the current recordset page when paginating */ function AbsolutePage($page=-1) { if ($page != -1) $this->_currentPage = $page; return $this->_currentPage; } /** * set/returns the status of the atFirstPage flag when paginating */ function AtFirstPage($status=false) { if ($status != false) $this->_atFirstPage = $status; return $this->_atFirstPage; } function LastPageNo($page = false) { if ($page != false) $this->_lastPageNo = $page; return $this->_lastPageNo; } /** * set/returns the status of the atLastPage flag when paginating */ function AtLastPage($status=false) { if ($status != false) $this->_atLastPage = $status; return $this->_atLastPage; } } // end class ADORecordSet //============================================================================================== // CLASS ADORecordSet_array //============================================================================================== /** * This class encapsulates the concept of a recordset created in memory * as an array. This is useful for the creation of cached recordsets. * * Note that the constructor is different from the standard ADORecordSet */ class ADORecordSet_array extends ADORecordSet { var $databaseType = 'array'; var $_array; // holds the 2-dimensional data array var $_types; // the array of types of each column (C B I L M) var $_colnames; // names of each column in array var $_skiprow1; // skip 1st row because it holds column names var $_fieldarr; // holds array of field objects var $canSeek = true; var $affectedrows = false; var $insertid = false; var $sql = ''; var $compat = false; /** * Constructor * */ function ADORecordSet_array($fakeid=1) { global $ADODB_FETCH_MODE,$ADODB_COMPAT_FETCH; // fetch() on EOF does not delete $this->fields $this->compat = !empty($ADODB_COMPAT_FETCH); $this->ADORecordSet($fakeid); // fake queryID $this->fetchMode = $ADODB_FETCH_MODE; } /** * Setup the array. * * @param array is a 2-dimensional array holding the data. * The first row should hold the column names * unless paramter $colnames is used. * @param typearr holds an array of types. These are the same types * used in MetaTypes (C,B,L,I,N). * @param [colnames] array of column names. If set, then the first row of * $array should not hold the column names. */ function InitArray($array,$typearr,$colnames=false) { $this->_array = $array; $this->_types = $typearr; if ($colnames) { $this->_skiprow1 = false; $this->_colnames = $colnames; } else { $this->_skiprow1 = true; $this->_colnames = $array[0]; } $this->Init(); } /** * Setup the Array and datatype file objects * * @param array is a 2-dimensional array holding the data. * The first row should hold the column names * unless paramter $colnames is used. * @param fieldarr holds an array of ADOFieldObject's. */ function InitArrayFields(&$array,&$fieldarr) { $this->_array =& $array; $this->_skiprow1= false; if ($fieldarr) { $this->_fieldobjects =& $fieldarr; } $this->Init(); } function &GetArray($nRows=-1) { if ($nRows == -1 && $this->_currentRow <= 0 && !$this->_skiprow1) { return $this->_array; } else { $arr =& ADORecordSet::GetArray($nRows); return $arr; } } function _initrs() { $this->_numOfRows = sizeof($this->_array); if ($this->_skiprow1) $this->_numOfRows -= 1; $this->_numOfFields =(isset($this->_fieldobjects)) ? sizeof($this->_fieldobjects):sizeof($this->_types); } /* Use associative array to get fields array */ function Fields($colname) { $mode = isset($this->adodbFetchMode) ? $this->adodbFetchMode : $this->fetchMode; if ($mode & ADODB_FETCH_ASSOC) { if (!isset($this->fields[$colname])) $colname = strtolower($colname); return $this->fields[$colname]; } if (!$this->bind) { $this->bind = array(); for ($i=0; $i < $this->_numOfFields; $i++) { $o = $this->FetchField($i); $this->bind[strtoupper($o->name)] = $i; } } return $this->fields[$this->bind[strtoupper($colname)]]; } function &FetchField($fieldOffset = -1) { if (isset($this->_fieldobjects)) { return $this->_fieldobjects[$fieldOffset]; } $o = new ADOFieldObject(); $o->name = $this->_colnames[$fieldOffset]; $o->type = $this->_types[$fieldOffset]; $o->max_length = -1; // length not known return $o; } function _seek($row) { if (sizeof($this->_array) && 0 <= $row && $row < $this->_numOfRows) { $this->_currentRow = $row; if ($this->_skiprow1) $row += 1; $this->fields = $this->_array[$row]; return true; } return false; } function MoveNext() { if (!$this->EOF) { $this->_currentRow++; $pos = $this->_currentRow; if ($this->_numOfRows <= $pos) { if (!$this->compat) $this->fields = false; } else { if ($this->_skiprow1) $pos += 1; $this->fields = $this->_array[$pos]; return true; } $this->EOF = true; } return false; } function _fetch() { $pos = $this->_currentRow; if ($this->_numOfRows <= $pos) { if (!$this->compat) $this->fields = false; return false; } if ($this->_skiprow1) $pos += 1; $this->fields = $this->_array[$pos]; return true; } function _close() { return true; } } // ADORecordSet_array //============================================================================================== // HELPER FUNCTIONS //============================================================================================== /** * Synonym for ADOLoadCode. Private function. Do not use. * * @deprecated */ function ADOLoadDB($dbType) { return ADOLoadCode($dbType); } /** * Load the code for a specific database driver. Private function. Do not use. */ function ADOLoadCode($dbType) { global $ADODB_LASTDB; if (!$dbType) return false; $db = strtolower($dbType); switch ($db) { case 'ado': if (PHP_VERSION >= 5) $db = 'ado5'; $class = 'ado'; break; case 'ifx': case 'maxsql': $class = $db = 'mysqlt'; break; case 'postgres': case 'postgres8': case 'pgsql': $class = $db = 'postgres7'; break; default: $class = $db; break; } $file = ADODB_DIR."/drivers/adodb-".$db.".inc.php"; @include_once($file); $ADODB_LASTDB = $class; if (class_exists("ADODB_" . $class)) return $class; //ADOConnection::outp(adodb_pr(get_declared_classes(),true)); if (!file_exists($file)) ADOConnection::outp("Missing file: $file"); else ADOConnection::outp("Syntax error in file: $file"); return false; } /** * synonym for ADONewConnection for people like me who cannot remember the correct name */ function &NewADOConnection($db='') { $tmp =& ADONewConnection($db); return $tmp; } /** * Instantiate a new Connection class for a specific database driver. * * @param [db] is the database Connection object to create. If undefined, * use the last database driver that was loaded by ADOLoadCode(). * * @return the freshly created instance of the Connection class. */ function &ADONewConnection($db='') { GLOBAL $ADODB_NEWCONNECTION, $ADODB_LASTDB; if (!defined('ADODB_ASSOC_CASE')) define('ADODB_ASSOC_CASE',2); $errorfn = (defined('ADODB_ERROR_HANDLER')) ? ADODB_ERROR_HANDLER : false; $false = false; if ($at = strpos($db,'://')) { $origdsn = $db; if (PHP_VERSION < 5) $dsna = @parse_url($db); else { $fakedsn = 'fake'.substr($db,$at); $dsna = @parse_url($fakedsn); $dsna['scheme'] = substr($db,0,$at); if (strncmp($db,'pdo',3) == 0) { $sch = explode('_',$dsna['scheme']); if (sizeof($sch)>1) { $dsna['host'] = isset($dsna['host']) ? rawurldecode($dsna['host']) : ''; $dsna['host'] = rawurlencode($sch[1].':host='.rawurldecode($dsna['host'])); $dsna['scheme'] = 'pdo'; } } } if (!$dsna) { // special handling of oracle, which might not have host $db = str_replace('@/','@adodb-fakehost/',$db); $dsna = parse_url($db); if (!$dsna) return $false; $dsna['host'] = ''; } $db = @$dsna['scheme']; if (!$db) return $false; $dsna['host'] = isset($dsna['host']) ? rawurldecode($dsna['host']) : ''; $dsna['user'] = isset($dsna['user']) ? rawurldecode($dsna['user']) : ''; $dsna['pass'] = isset($dsna['pass']) ? rawurldecode($dsna['pass']) : ''; $dsna['path'] = isset($dsna['path']) ? rawurldecode(substr($dsna['path'],1)) : ''; # strip off initial / if (isset($dsna['query'])) { $opt1 = explode('&',$dsna['query']); foreach($opt1 as $k => $v) { $arr = explode('=',$v); $opt[$arr[0]] = isset($arr[1]) ? rawurldecode($arr[1]) : 1; } } else $opt = array(); } /* * phptype: Database backend used in PHP (mysql, odbc etc.) * dbsyntax: Database used with regards to SQL syntax etc. * protocol: Communication protocol to use (tcp, unix etc.) * hostspec: Host specification (hostname[:port]) * database: Database to use on the DBMS server * username: User name for login * password: Password for login */ if (!empty($ADODB_NEWCONNECTION)) { $obj = $ADODB_NEWCONNECTION($db); } else { if (!isset($ADODB_LASTDB)) $ADODB_LASTDB = ''; if (empty($db)) $db = $ADODB_LASTDB; if ($db != $ADODB_LASTDB) $db = ADOLoadCode($db); if (!$db) { if (isset($origdsn)) $db = $origdsn; if ($errorfn) { // raise an error $ignore = false; $errorfn('ADONewConnection', 'ADONewConnection', -998, "could not load the database driver for '$db'", $db,false,$ignore); } else ADOConnection::outp( "

    ADONewConnection: Unable to load database driver '$db'

    ",false); return $false; } $cls = 'ADODB_'.$db; if (!class_exists($cls)) { adodb_backtrace(); return $false; } $obj = new $cls(); } # constructor should not fail if ($obj) { if ($errorfn) $obj->raiseErrorFn = $errorfn; if (isset($dsna)) { if (isset($dsna['port'])) $obj->port = $dsna['port']; foreach($opt as $k => $v) { switch(strtolower($k)) { case 'new': $nconnect = true; $persist = true; break; case 'persist': case 'persistent': $persist = $v; break; case 'debug': $obj->debug = (integer) $v; break; #ibase case 'role': $obj->role = $v; break; case 'dialect': $obj->dialect = (integer) $v; break; case 'charset': $obj->charset = $v; $obj->charSet=$v; break; case 'buffers': $obj->buffers = $v; break; case 'fetchmode': $obj->SetFetchMode($v); break; #ado case 'charpage': $obj->charPage = $v; break; #mysql, mysqli case 'clientflags': $obj->clientFlags = $v; break; #mysql, mysqli, postgres case 'port': $obj->port = $v; break; #mysqli case 'socket': $obj->socket = $v; break; #oci8 case 'nls_date_format': $obj->NLS_DATE_FORMAT = $v; break; } } if (empty($persist)) $ok = $obj->Connect($dsna['host'], $dsna['user'], $dsna['pass'], $dsna['path']); else if (empty($nconnect)) $ok = $obj->PConnect($dsna['host'], $dsna['user'], $dsna['pass'], $dsna['path']); else $ok = $obj->NConnect($dsna['host'], $dsna['user'], $dsna['pass'], $dsna['path']); if (!$ok) return $false; } } return $obj; } // $perf == true means called by NewPerfMonitor(), otherwise for data dictionary function _adodb_getdriver($provider,$drivername,$perf=false) { switch ($provider) { case 'odbtp': if (strncmp('odbtp_',$drivername,6)==0) return substr($drivername,6); case 'odbc' : if (strncmp('odbc_',$drivername,5)==0) return substr($drivername,5); case 'ado' : if (strncmp('ado_',$drivername,4)==0) return substr($drivername,4); case 'native': break; default: return $provider; } switch($drivername) { case 'mysqlt': case 'mysqli': $drivername='mysql'; break; case 'postgres7': case 'postgres8': $drivername = 'postgres'; break; case 'firebird15': $drivername = 'firebird'; break; case 'oracle': $drivername = 'oci8'; break; case 'access': if ($perf) $drivername = ''; break; case 'db2' : break; case 'sapdb' : break; default: $drivername = 'generic'; break; } return $drivername; } function &NewPerfMonitor(&$conn) { $false = false; $drivername = _adodb_getdriver($conn->dataProvider,$conn->databaseType,true); if (!$drivername || $drivername == 'generic') return $false; include_once(ADODB_DIR.'/adodb-perf.inc.php'); @include_once(ADODB_DIR."/perf/perf-$drivername.inc.php"); $class = "Perf_$drivername"; if (!class_exists($class)) return $false; $perf = new $class($conn); return $perf; } function &NewDataDictionary(&$conn,$drivername=false) { $false = false; if (!$drivername) $drivername = _adodb_getdriver($conn->dataProvider,$conn->databaseType); include_once(ADODB_DIR.'/adodb-lib.inc.php'); include_once(ADODB_DIR.'/adodb-datadict.inc.php'); $path = ADODB_DIR."/datadict/datadict-$drivername.inc.php"; if (!file_exists($path)) { ADOConnection::outp("Database driver '$path' not available"); return $false; } include_once($path); $class = "ADODB2_$drivername"; $dict = new $class(); $dict->dataProvider = $conn->dataProvider; $dict->connection = &$conn; $dict->upperName = strtoupper($drivername); $dict->quote = $conn->nameQuote; if (!empty($conn->_connectionID)) $dict->serverInfo = $conn->ServerInfo(); return $dict; } /* Perform a print_r, with pre tags for better formatting. */ function adodb_pr($var,$as_string=false) { if ($as_string) ob_start(); if (isset($_SERVER['HTTP_USER_AGENT'])) { echo "
    \n";print_r($var);echo "
    \n"; } else print_r($var); if ($as_string) { $s = ob_get_contents(); ob_end_clean(); return $s; } } /* Perform a stack-crawl and pretty print it. @param printOrArr Pass in a boolean to indicate print, or an $exception->trace array (assumes that print is true then). @param levels Number of levels to display */ function adodb_backtrace($printOrArr=true,$levels=9999) { global $ADODB_INCLUDED_LIB; if (empty($ADODB_INCLUDED_LIB)) include_once(ADODB_DIR.'/adodb-lib.inc.php'); return _adodb_backtrace($printOrArr,$levels); } } ?> torrentflux_2.4/html/adodb/adodb-php4.inc.php0000755000004100000410000000047711017367654021332 0ustar www-datawww-datatorrentflux_2.4/html/adodb/lang/0000755000004100000410000000000011026130126017013 5ustar www-datawww-datatorrentflux_2.4/html/adodb/lang/adodb-it.inc.php0000755000004100000410000000371111017367654022006 0ustar www-datawww-data 'it', DB_ERROR => 'errore sconosciuto', DB_ERROR_ALREADY_EXISTS => 'esiste già', DB_ERROR_CANNOT_CREATE => 'non posso creare', DB_ERROR_CANNOT_DELETE => 'non posso cancellare', DB_ERROR_CANNOT_DROP => 'non posso eliminare', DB_ERROR_CONSTRAINT => 'violazione constraint', DB_ERROR_DIVZERO => 'divisione per zero', DB_ERROR_INVALID => 'non valido', DB_ERROR_INVALID_DATE => 'data od ora non valida', DB_ERROR_INVALID_NUMBER => 'numero non valido', DB_ERROR_MISMATCH => 'diversi', DB_ERROR_NODBSELECTED => 'nessun database selezionato', DB_ERROR_NOSUCHFIELD => 'nessun campo trovato', DB_ERROR_NOSUCHTABLE => 'nessuna tabella trovata', DB_ERROR_NOT_CAPABLE => 'DB backend non abilitato', DB_ERROR_NOT_FOUND => 'non trovato', DB_ERROR_NOT_LOCKED => 'non bloccato', DB_ERROR_SYNTAX => 'errore di sintassi', DB_ERROR_UNSUPPORTED => 'non supportato', DB_ERROR_VALUE_COUNT_ON_ROW => 'valore inserito troppo grande per una colonna', DB_ERROR_INVALID_DSN => 'DSN non valido', DB_ERROR_CONNECT_FAILED => 'connessione fallita', 0 => 'nessun errore', // DB_OK DB_ERROR_NEED_MORE_DATA => 'dati inseriti insufficienti', DB_ERROR_EXTENSION_NOT_FOUND=> 'estensione non trovata', DB_ERROR_NOSUCHDB => 'database non trovato', DB_ERROR_ACCESS_VIOLATION => 'permessi insufficienti' ); ?>torrentflux_2.4/html/adodb/lang/adodb-es.inc.php0000755000004100000410000000360111017367654021777 0ustar www-datawww-data $ADODB_LANG_ARRAY = array ( 'LANG' => 'es', DB_ERROR => 'error desconocido', DB_ERROR_ALREADY_EXISTS => 'ya existe', DB_ERROR_CANNOT_CREATE => 'imposible crear', DB_ERROR_CANNOT_DELETE => 'imposible borrar', DB_ERROR_CANNOT_DROP => 'imposible hacer drop', DB_ERROR_CONSTRAINT => 'violacion de constraint', DB_ERROR_DIVZERO => 'division por cero', DB_ERROR_INVALID => 'invalido', DB_ERROR_INVALID_DATE => 'fecha u hora invalida', DB_ERROR_INVALID_NUMBER => 'numero invalido', DB_ERROR_MISMATCH => 'error', DB_ERROR_NODBSELECTED => 'no hay base de datos seleccionada', DB_ERROR_NOSUCHFIELD => 'campo invalido', DB_ERROR_NOSUCHTABLE => 'tabla no existe', DB_ERROR_NOT_CAPABLE => 'capacidad invalida para esta DB', DB_ERROR_NOT_FOUND => 'no encontrado', DB_ERROR_NOT_LOCKED => 'no bloqueado', DB_ERROR_SYNTAX => 'error de sintaxis', DB_ERROR_UNSUPPORTED => 'no soportado', DB_ERROR_VALUE_COUNT_ON_ROW => 'la cantidad de columnas no corresponden a la cantidad de valores', DB_ERROR_INVALID_DSN => 'DSN invalido', DB_ERROR_CONNECT_FAILED => 'fallo la conexion', 0 => 'sin error', // DB_OK DB_ERROR_NEED_MORE_DATA => 'insuficientes datos', DB_ERROR_EXTENSION_NOT_FOUND=> 'extension no encontrada', DB_ERROR_NOSUCHDB => 'base de datos no encontrada', DB_ERROR_ACCESS_VIOLATION => 'permisos insuficientes' ); ?>torrentflux_2.4/html/adodb/lang/adodb-cn.inc.php0000755000004100000410000000334211017367654021772 0ustar www-datawww-data 'cn', DB_ERROR => 'δ֪´íÎó', DB_ERROR_ALREADY_EXISTS => 'ÒѾ­´æÔÚ', DB_ERROR_CANNOT_CREATE => '²»ÄÜ´´½¨', DB_ERROR_CANNOT_DELETE => '²»ÄÜɾ³ý', DB_ERROR_CANNOT_DROP => '²»ÄܶªÆú', DB_ERROR_CONSTRAINT => 'Ô¼ÊøÏÞÖÆ', DB_ERROR_DIVZERO => '±»0³ý', DB_ERROR_INVALID => 'ÎÞЧ', DB_ERROR_INVALID_DATE => 'ÎÞЧµÄÈÕÆÚ»òÕßʱ¼ä', DB_ERROR_INVALID_NUMBER => 'ÎÞЧµÄÊý×Ö', DB_ERROR_MISMATCH => '²»Æ¥Åä', DB_ERROR_NODBSELECTED => 'ûÓÐÊý¾Ý¿â±»Ñ¡Ôñ', DB_ERROR_NOSUCHFIELD => 'ûÓÐÏàÓ¦µÄ×Ö¶Î', DB_ERROR_NOSUCHTABLE => 'ûÓÐÏàÓ¦µÄ±í', DB_ERROR_NOT_CAPABLE => 'Êý¾Ý¿âºǫ́²»¼æÈÝ', DB_ERROR_NOT_FOUND => 'ûÓз¢ÏÖ', DB_ERROR_NOT_LOCKED => 'ûÓб»Ëø¶¨', DB_ERROR_SYNTAX => 'Óï·¨´íÎó', DB_ERROR_UNSUPPORTED => '²»Ö§³Ö', DB_ERROR_VALUE_COUNT_ON_ROW => 'ÔÚÐÐÉÏÀÛ¼ÆÖµ', DB_ERROR_INVALID_DSN => 'ÎÞЧµÄÊý¾ÝÔ´ (DSN)', DB_ERROR_CONNECT_FAILED => 'Á¬½Óʧ°Ü', 0 => 'ûÓдíÎó', // DB_OK DB_ERROR_NEED_MORE_DATA => 'ÌṩµÄÊý¾Ý²»ÄÜ·ûºÏÒªÇó', DB_ERROR_EXTENSION_NOT_FOUND=> 'À©Õ¹Ã»Óб»·¢ÏÖ', DB_ERROR_NOSUCHDB => 'ûÓÐÏàÓ¦µÄÊý¾Ý¿â', DB_ERROR_ACCESS_VIOLATION => 'ûÓкÏÊʵÄȨÏÞ' ); ?>torrentflux_2.4/html/adodb/lang/adodb-esperanto.inc.php0000755000004100000410000000356311017367654023377 0ustar www-datawww-data 'eo', DB_ERROR => 'nekonata eraro', DB_ERROR_ALREADY_EXISTS => 'jam ekzistas', DB_ERROR_CANNOT_CREATE => 'maleblas krei', DB_ERROR_CANNOT_DELETE => 'maleblas elimini', DB_ERROR_CANNOT_DROP => 'maleblas elimini (drop)', DB_ERROR_CONSTRAINT => 'rompo de kondicxoj de provo', DB_ERROR_DIVZERO => 'divido per 0 (nul)', DB_ERROR_INVALID => 'malregule', DB_ERROR_INVALID_DATE => 'malregula dato kaj tempo', DB_ERROR_INVALID_NUMBER => 'malregula nombro', DB_ERROR_MISMATCH => 'eraro', DB_ERROR_NODBSELECTED => 'datumbazo ne elektita', DB_ERROR_NOSUCHFIELD => 'ne ekzistas kampo', DB_ERROR_NOSUCHTABLE => 'ne ekzistas tabelo', DB_ERROR_NOT_CAPABLE => 'DBMS ne povas', DB_ERROR_NOT_FOUND => 'ne trovita', DB_ERROR_NOT_LOCKED => 'ne blokita', DB_ERROR_SYNTAX => 'sintaksa eraro', DB_ERROR_UNSUPPORTED => 'ne apogata', DB_ERROR_VALUE_COUNT_ON_ROW => 'nombrilo de valoroj en linio', DB_ERROR_INVALID_DSN => 'malregula DSN-o', DB_ERROR_CONNECT_FAILED => 'konekto malsukcesa', 0 => 'cxio bone', // DB_OK DB_ERROR_NEED_MORE_DATA => 'ne suficxe da datumo', DB_ERROR_EXTENSION_NOT_FOUND=> 'etendo ne trovita', DB_ERROR_NOSUCHDB => 'datumbazo ne ekzistas', DB_ERROR_ACCESS_VIOLATION => 'ne suficxe da rajto por atingo' ); ?>torrentflux_2.4/html/adodb/lang/adodb-sv.inc.php0000755000004100000410000000344411017367654022025 0ustar www-datawww-data 'en', DB_ERROR => 'Okänt fel', DB_ERROR_ALREADY_EXISTS => 'finns redan', DB_ERROR_CANNOT_CREATE => 'kan inte skapa', DB_ERROR_CANNOT_DELETE => 'kan inte ta bort', DB_ERROR_CANNOT_DROP => 'kan inte släppa', DB_ERROR_CONSTRAINT => 'begränsning kränkt', DB_ERROR_DIVZERO => 'division med noll', DB_ERROR_INVALID => 'ogiltig', DB_ERROR_INVALID_DATE => 'ogiltigt datum eller tid', DB_ERROR_INVALID_NUMBER => 'ogiltigt tal', DB_ERROR_MISMATCH => 'felaktig matchning', DB_ERROR_NODBSELECTED => 'ingen databas vald', DB_ERROR_NOSUCHFIELD => 'inget sådant fält', DB_ERROR_NOSUCHTABLE => 'ingen sådan tabell', DB_ERROR_NOT_CAPABLE => 'DB backend klarar det inte', DB_ERROR_NOT_FOUND => 'finns inte', DB_ERROR_NOT_LOCKED => 'inte låst', DB_ERROR_SYNTAX => 'syntaxfel', DB_ERROR_UNSUPPORTED => 'stöds ej', DB_ERROR_VALUE_COUNT_ON_ROW => 'värde räknat på rad', DB_ERROR_INVALID_DSN => 'ogiltig DSN', DB_ERROR_CONNECT_FAILED => 'anslutning misslyckades', 0 => 'inget fel', // DB_OK DB_ERROR_NEED_MORE_DATA => 'otillräckligt med data angivet', DB_ERROR_EXTENSION_NOT_FOUND=> 'utökning hittades ej', DB_ERROR_NOSUCHDB => 'ingen sådan databas', DB_ERROR_ACCESS_VIOLATION => 'otillräckliga rättigheter' ); ?>torrentflux_2.4/html/adodb/lang/adodb-bgutf8.inc.php0000755000004100000410000000471311017132666022565 0ustar www-datawww-data */ $ADODB_LANG_ARRAY = array ( 'LANG' => 'bgutf8', DB_ERROR => 'неизвеÑтна грешка', DB_ERROR_ALREADY_EXISTS => 'вече ÑъщеÑтвува', DB_ERROR_CANNOT_CREATE => 'не може да бъде Ñъздадена', DB_ERROR_CANNOT_DELETE => 'не може да бъде изтрита', DB_ERROR_CANNOT_DROP => 'не може да бъде унищожена', DB_ERROR_CONSTRAINT => 'нарушено уÑловие', DB_ERROR_DIVZERO => 'деление на нула', DB_ERROR_INVALID => 'неправилно', DB_ERROR_INVALID_DATE => 'некоректна дата или чаÑ', DB_ERROR_INVALID_NUMBER => 'невалиден номер', DB_ERROR_MISMATCH => 'погрешна употреба', DB_ERROR_NODBSELECTED => 'не е избрана база данни', DB_ERROR_NOSUCHFIELD => 'неÑъщеÑтвуващо поле', DB_ERROR_NOSUCHTABLE => 'неÑъщеÑтвуваща таблица', DB_ERROR_NOT_CAPABLE => 'DB backend not capable', DB_ERROR_NOT_FOUND => 'не е намерена', DB_ERROR_NOT_LOCKED => 'не е заключена', DB_ERROR_SYNTAX => 'грешен ÑинтакÑиÑ', DB_ERROR_UNSUPPORTED => 'не Ñе поддържа', DB_ERROR_VALUE_COUNT_ON_ROW => 'некоректен брой колони в реда', DB_ERROR_INVALID_DSN => 'невалиден DSN', DB_ERROR_CONNECT_FAILED => 'връзката не може да бъде оÑъщеÑтвена', 0 => 'нÑма грешки', // DB_OK DB_ERROR_NEED_MORE_DATA => 'предоÑтавените данни Ñа недоÑтатъчни', DB_ERROR_EXTENSION_NOT_FOUND=> 'разширението не е намерено', DB_ERROR_NOSUCHDB => 'неÑъщеÑтвуваща база данни', DB_ERROR_ACCESS_VIOLATION => 'нÑмате доÑтатъчно права' ); ?> torrentflux_2.4/html/adodb/lang/adodb-en.inc.php0000755000004100000410000000333511017367654021776 0ustar www-datawww-data 'en', DB_ERROR => 'unknown error', DB_ERROR_ALREADY_EXISTS => 'already exists', DB_ERROR_CANNOT_CREATE => 'can not create', DB_ERROR_CANNOT_DELETE => 'can not delete', DB_ERROR_CANNOT_DROP => 'can not drop', DB_ERROR_CONSTRAINT => 'constraint violation', DB_ERROR_DIVZERO => 'division by zero', DB_ERROR_INVALID => 'invalid', DB_ERROR_INVALID_DATE => 'invalid date or time', DB_ERROR_INVALID_NUMBER => 'invalid number', DB_ERROR_MISMATCH => 'mismatch', DB_ERROR_NODBSELECTED => 'no database selected', DB_ERROR_NOSUCHFIELD => 'no such field', DB_ERROR_NOSUCHTABLE => 'no such table', DB_ERROR_NOT_CAPABLE => 'DB backend not capable', DB_ERROR_NOT_FOUND => 'not found', DB_ERROR_NOT_LOCKED => 'not locked', DB_ERROR_SYNTAX => 'syntax error', DB_ERROR_UNSUPPORTED => 'not supported', DB_ERROR_VALUE_COUNT_ON_ROW => 'value count on row', DB_ERROR_INVALID_DSN => 'invalid DSN', DB_ERROR_CONNECT_FAILED => 'connect failed', 0 => 'no error', // DB_OK DB_ERROR_NEED_MORE_DATA => 'insufficient data supplied', DB_ERROR_EXTENSION_NOT_FOUND=> 'extension not found', DB_ERROR_NOSUCHDB => 'no such database', DB_ERROR_ACCESS_VIOLATION => 'insufficient permissions' ); ?> torrentflux_2.4/html/adodb/lang/adodb-fr.inc.php0000755000004100000410000000326711017367654022007 0ustar www-datawww-data 'fr', DB_ERROR => 'erreur inconnue', DB_ERROR_ALREADY_EXISTS => 'existe déjà', DB_ERROR_CANNOT_CREATE => 'crétion impossible', DB_ERROR_CANNOT_DELETE => 'effacement impossible', DB_ERROR_CANNOT_DROP => 'suppression impossible', DB_ERROR_CONSTRAINT => 'violation de contrainte', DB_ERROR_DIVZERO => 'division par zéro', DB_ERROR_INVALID => 'invalide', DB_ERROR_INVALID_DATE => 'date ou heure invalide', DB_ERROR_INVALID_NUMBER => 'nombre invalide', DB_ERROR_MISMATCH => 'erreur de concordance', DB_ERROR_NODBSELECTED => 'pas de base de donnéessélectionnée', DB_ERROR_NOSUCHFIELD => 'nom de colonne invalide', DB_ERROR_NOSUCHTABLE => 'table ou vue inexistante', DB_ERROR_NOT_CAPABLE => 'fonction optionnelle non installée', DB_ERROR_NOT_FOUND => 'pas trouvé', DB_ERROR_NOT_LOCKED => 'non verrouillé', DB_ERROR_SYNTAX => 'erreur de syntaxe', DB_ERROR_UNSUPPORTED => 'non supporté', DB_ERROR_VALUE_COUNT_ON_ROW => 'valeur insérée trop grande pour colonne', DB_ERROR_INVALID_DSN => 'DSN invalide', DB_ERROR_CONNECT_FAILED => 'échec à la connexion', 0 => "pas d'erreur", // DB_OK DB_ERROR_NEED_MORE_DATA => 'données fournies insuffisantes', DB_ERROR_EXTENSION_NOT_FOUND=> 'extension non trouvée', DB_ERROR_NOSUCHDB => 'base de données inconnue', DB_ERROR_ACCESS_VIOLATION => 'droits insuffisants' ); ?>torrentflux_2.4/html/adodb/lang/adodb-ar.inc.php0000755000004100000410000000274311017367654022000 0ustar www-datawww-data $ADODB_LANG_ARRAY = array ( 'LANG' => 'ar', DB_ERROR => 'ÎØÃ ÛíÑ ãÍÏÏ', DB_ERROR_ALREADY_EXISTS => 'ãæÌæÏ ãÓÈÞÇ', DB_ERROR_CANNOT_CREATE => 'áÇ íãßä ÅäÔÇÁ', DB_ERROR_CANNOT_DELETE => 'áÇ íãßä ÍÐÝ', DB_ERROR_CANNOT_DROP => 'áÇ íãßä ÍÐÝ', DB_ERROR_CONSTRAINT => 'ÚãáíÉ ÅÏÎÇá ããäæÚÉ', DB_ERROR_DIVZERO => 'ÚãáíÉ ÇáÊÞÓíã Úáì ÕÝÑ', DB_ERROR_INVALID => 'ÛíÑ ÕÍíÍ', DB_ERROR_INVALID_DATE => 'ÕíÛÉ æÞÊ Ãæ ÊÇÑíÎ ÛíÑ ÕÍíÍÉ', DB_ERROR_INVALID_NUMBER => 'ÕíÛÉ ÑÞã ÛíÑ ÕÍíÍÉ', DB_ERROR_MISMATCH => 'ÛíÑ ãÊØÇÈÞ', DB_ERROR_NODBSELECTED => 'áã íÊã ÅÎÊíÇÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ ÈÚÏ', DB_ERROR_NOSUCHFIELD => 'áíÓ åäÇáß ÍÞá ÈåÐÇ ÇáÇÓã', DB_ERROR_NOSUCHTABLE => 'áíÓ åäÇáß ÌÏæá ÈåÐÇ ÇáÇÓã', DB_ERROR_NOT_CAPABLE => 'ÞÇÚÏÉ ÇáÈíÇäÇÊ ÇáãÑÊÈØ ÈåÇ ÛíÑ ÞÇÏÑÉ', DB_ERROR_NOT_FOUND => 'áã íÊã ÅíÌÇÏå', DB_ERROR_NOT_LOCKED => 'ÛíÑ ãÞÝæá', DB_ERROR_SYNTAX => 'ÎØÃ Ýí ÇáÕíÛÉ', DB_ERROR_UNSUPPORTED => 'ÛíÑ ãÏÚæã', DB_ERROR_VALUE_COUNT_ON_ROW => 'ÚÏÏ ÇáÞíã Ýí ÇáÓÌá', DB_ERROR_INVALID_DSN => 'DSN ÛíÑ ÕÍíÍ', DB_ERROR_CONNECT_FAILED => 'ÝÔá ÚãáíÉ ÇáÅÊÕÇá', 0 => 'áíÓ åäÇáß ÃÎØÇÁ', // DB_OK DB_ERROR_NEED_MORE_DATA => 'ÇáÈíÇäÇÊ ÇáãÒæÏÉ ÛíÑ ßÇÝíÉ', DB_ERROR_EXTENSION_NOT_FOUND=> 'áã íÊã ÅíÌÇÏ ÇáÅÖÇÝÉ ÇáãÊÚáÞÉ', DB_ERROR_NOSUCHDB => 'áíÓ åäÇáß ÞÇÚÏÉ ÈíÇäÇÊ ÈåÐÇ ÇáÇÓã', DB_ERROR_ACCESS_VIOLATION => 'ÓãÇÍíÇÊ ÛíÑ ßÇÝíÉ' ); ?> torrentflux_2.4/html/adodb/lang/adodb-ro.inc.php0000755000004100000410000000354711017367654022021 0ustar www-datawww-data */ $ADODB_LANG_ARRAY = array ( 'LANG' => 'ro', DB_ERROR => 'eroare necunoscuta', DB_ERROR_ALREADY_EXISTS => 'deja exista', DB_ERROR_CANNOT_CREATE => 'nu se poate creea', DB_ERROR_CANNOT_DELETE => 'nu se poate sterge', DB_ERROR_CANNOT_DROP => 'nu se poate executa drop', DB_ERROR_CONSTRAINT => 'violare de constrain', DB_ERROR_DIVZERO => 'se divide la zero', DB_ERROR_INVALID => 'invalid', DB_ERROR_INVALID_DATE => 'data sau timp invalide', DB_ERROR_INVALID_NUMBER => 'numar invalid', DB_ERROR_MISMATCH => 'nepotrivire-mismatch', DB_ERROR_NODBSELECTED => 'nu exista baza de date selectata', DB_ERROR_NOSUCHFIELD => 'camp inexistent', DB_ERROR_NOSUCHTABLE => 'tabela inexistenta', DB_ERROR_NOT_CAPABLE => 'functie optionala neinstalata', DB_ERROR_NOT_FOUND => 'negasit', DB_ERROR_NOT_LOCKED => 'neblocat', DB_ERROR_SYNTAX => 'eroare de sintaxa', DB_ERROR_UNSUPPORTED => 'nu e suportat', DB_ERROR_VALUE_COUNT_ON_ROW => 'valoare prea mare pentru coloana', DB_ERROR_INVALID_DSN => 'DSN invalid', DB_ERROR_CONNECT_FAILED => 'conectare esuata', 0 => 'fara eroare', // DB_OK DB_ERROR_NEED_MORE_DATA => 'data introduse insuficiente', DB_ERROR_EXTENSION_NOT_FOUND=> 'extensie negasita', DB_ERROR_NOSUCHDB => 'nu exista baza de date', DB_ERROR_ACCESS_VIOLATION => 'permisiuni insuficiente' ); ?> torrentflux_2.4/html/adodb/lang/adodb-bg.inc.php0000755000004100000410000000376411017367654021772 0ustar www-datawww-data */ $ADODB_LANG_ARRAY = array ( 'LANG' => 'bg', DB_ERROR => 'íåèçâåñòíà ãðåøêà', DB_ERROR_ALREADY_EXISTS => 'âå÷å ñúùåñòâóâà', DB_ERROR_CANNOT_CREATE => 'íå ìîæå äà áúäå ñúçäàäåíà', DB_ERROR_CANNOT_DELETE => 'íå ìîæå äà áúäå èçòðèòà', DB_ERROR_CANNOT_DROP => 'íå ìîæå äà áúäå óíèùîæåíà', DB_ERROR_CONSTRAINT => 'íàðóøåíî óñëîâèå', DB_ERROR_DIVZERO => 'äåëåíèå íà íóëà', DB_ERROR_INVALID => 'íåïðàâèëíî', DB_ERROR_INVALID_DATE => 'íåêîðåêòíà äàòà èëè ÷àñ', DB_ERROR_INVALID_NUMBER => 'íåâàëèäåí íîìåð', DB_ERROR_MISMATCH => 'ïîãðåøíà óïîòðåáà', DB_ERROR_NODBSELECTED => 'íå å èçáðàíà áàçà äàííè', DB_ERROR_NOSUCHFIELD => 'íåñúùåñòâóâàùî ïîëå', DB_ERROR_NOSUCHTABLE => 'íåñúùåñòâóâàùà òàáëèöà', DB_ERROR_NOT_CAPABLE => 'DB backend not capable', DB_ERROR_NOT_FOUND => 'íå å íàìåðåíà', DB_ERROR_NOT_LOCKED => 'íå å çàêëþ÷åíà', DB_ERROR_SYNTAX => 'ãðåøåí ñèíòàêñèñ', DB_ERROR_UNSUPPORTED => 'íå ñå ïîääúðæà', DB_ERROR_VALUE_COUNT_ON_ROW => 'íåêîðåêòåí áðîé êîëîíè â ðåäà', DB_ERROR_INVALID_DSN => 'íåâàëèäåí DSN', DB_ERROR_CONNECT_FAILED => 'âðúçêàòà íå ìîæå äà áúäå îñúùåñòâåíà', 0 => 'íÿìà ãðåøêè', // DB_OK DB_ERROR_NEED_MORE_DATA => 'ïðåäîñòàâåíèòå äàííè ñà íåäîñòàòú÷íè', DB_ERROR_EXTENSION_NOT_FOUND=> 'ðàçøèðåíèåòî íå å íàìåðåíî', DB_ERROR_NOSUCHDB => 'íåñúùåñòâóâàùà áàçà äàííè', DB_ERROR_ACCESS_VIOLATION => 'íÿìàòå äîñòàòú÷íî ïðàâà' ); ?> torrentflux_2.4/html/adodb/lang/adodb-uk1251.inc.php0000755000004100000410000000355711017367654022332 0ustar www-datawww-data 'uk1251', DB_ERROR => 'íåâ³äîìà ïîìèëêà', DB_ERROR_ALREADY_EXISTS => 'âæå ³ñíóº', DB_ERROR_CANNOT_CREATE => 'íåìîæëèâî ñòâîðèòè', DB_ERROR_CANNOT_DELETE => 'íåìîæëèâî âèäàëèòè', DB_ERROR_CANNOT_DROP => 'íåìîæëèâî çíèùèòè (drop)', DB_ERROR_CONSTRAINT => 'ïîðóøåííÿ óìîâ ïåðåâ³ðêè', DB_ERROR_DIVZERO => 'ä³ëåííÿ íà 0', DB_ERROR_INVALID => 'íåïðàâèëüíî', DB_ERROR_INVALID_DATE => 'íåïðàâèëüíà äàòà ÷è ÷àñ', DB_ERROR_INVALID_NUMBER => 'íåïðàâèëüíå ÷èñëî', DB_ERROR_MISMATCH => 'ïîìèëêà', DB_ERROR_NODBSELECTED => 'íå âèáðàíî ÁÄ', DB_ERROR_NOSUCHFIELD => 'íå ³ñíóº ïîëå', DB_ERROR_NOSUCHTABLE => 'íå ³ñíóº òàáëèöÿ', DB_ERROR_NOT_CAPABLE => 'ÑÓÁÄ íå â ñòàí³', DB_ERROR_NOT_FOUND => 'íå çíàéäåíî', DB_ERROR_NOT_LOCKED => 'íå çàáëîêîâàíî', DB_ERROR_SYNTAX => 'ñèíòàêñè÷íà ïîìèëêà', DB_ERROR_UNSUPPORTED => 'íå ï³äòðèìóºòüñÿ', DB_ERROR_VALUE_COUNT_ON_ROW => 'ðàõ³âíèê çíà÷åíü â ñòð³÷ö³', DB_ERROR_INVALID_DSN => 'íåïðàâèëüíà DSN', DB_ERROR_CONNECT_FAILED => 'ç\'ºäíàííÿ íåóñï³øíå', 0 => 'âñå ãàðàçä', // DB_OK DB_ERROR_NEED_MORE_DATA => 'íàäàíî íåäîñòàòíüî äàíèõ', DB_ERROR_EXTENSION_NOT_FOUND=> 'ðîçøèðåííÿ íå çíàéäåíî', DB_ERROR_NOSUCHDB => 'íå ³ñíóº ÁÄ', DB_ERROR_ACCESS_VIOLATION => 'íåäîñòàòíüî ïðàâ äîñòóïà' ); ?> torrentflux_2.4/html/adodb/lang/adodb-da.inc.php0000755000004100000410000000362711017367654021764 0ustar www-datawww-data 'da', DB_ERROR => 'ukendt fejl', DB_ERROR_ALREADY_EXISTS => 'eksisterer allerede', DB_ERROR_CANNOT_CREATE => 'kan ikke oprette', DB_ERROR_CANNOT_DELETE => 'kan ikke slette', DB_ERROR_CANNOT_DROP => 'kan ikke droppe', DB_ERROR_CONSTRAINT => 'begrænsning krænket', DB_ERROR_DIVZERO => 'division med nul', DB_ERROR_INVALID => 'ugyldig', DB_ERROR_INVALID_DATE => 'ugyldig dato eller klokkeslet', DB_ERROR_INVALID_NUMBER => 'ugyldigt tal', DB_ERROR_MISMATCH => 'mismatch', DB_ERROR_NODBSELECTED => 'ingen database valgt', DB_ERROR_NOSUCHFIELD => 'felt findes ikke', DB_ERROR_NOSUCHTABLE => 'tabel findes ikke', DB_ERROR_NOT_CAPABLE => 'DB backend opgav', DB_ERROR_NOT_FOUND => 'ikke fundet', DB_ERROR_NOT_LOCKED => 'ikke låst', DB_ERROR_SYNTAX => 'syntaksfejl', DB_ERROR_UNSUPPORTED => 'ikke understøttet', DB_ERROR_VALUE_COUNT_ON_ROW => 'resulterende antal felter svarer ikke til forespørgslens antal felter', DB_ERROR_INVALID_DSN => 'ugyldig DSN', DB_ERROR_CONNECT_FAILED => 'tilslutning mislykkedes', 0 => 'ingen fejl', // DB_OK DB_ERROR_NEED_MORE_DATA => 'utilstrækkelige data angivet', DB_ERROR_EXTENSION_NOT_FOUND=> 'udvidelse ikke fundet', DB_ERROR_NOSUCHDB => 'database ikke fundet', DB_ERROR_ACCESS_VIOLATION => 'utilstrækkelige rettigheder' ); ?>torrentflux_2.4/html/adodb/lang/adodb-pl.inc.php0000755000004100000410000000356111017367654022010 0ustar www-datawww-data $ADODB_LANG_ARRAY = array ( 'LANG' => 'pl', DB_ERROR => 'niezidentyfikowany b³±d', DB_ERROR_ALREADY_EXISTS => 'ju¿ istniej±', DB_ERROR_CANNOT_CREATE => 'nie mo¿na stworzyæ', DB_ERROR_CANNOT_DELETE => 'nie mo¿na usun±æ', DB_ERROR_CANNOT_DROP => 'nie mo¿na porzuciæ', DB_ERROR_CONSTRAINT => 'pogwa³cenie uprawnieñ', DB_ERROR_DIVZERO => 'dzielenie przez zero', DB_ERROR_INVALID => 'b³êdny', DB_ERROR_INVALID_DATE => 'b³êdna godzina lub data', DB_ERROR_INVALID_NUMBER => 'b³êdny numer', DB_ERROR_MISMATCH => 'niedopasowanie', DB_ERROR_NODBSELECTED => 'baza danych nie zosta³a wybrana', DB_ERROR_NOSUCHFIELD => 'nie znaleziono pola', DB_ERROR_NOSUCHTABLE => 'nie znaleziono tabeli', DB_ERROR_NOT_CAPABLE => 'nie zdolny', DB_ERROR_NOT_FOUND => 'nie znaleziono', DB_ERROR_NOT_LOCKED => 'nie zakmniêty', DB_ERROR_SYNTAX => 'b³±d sk³adni', DB_ERROR_UNSUPPORTED => 'nie obs³uguje', DB_ERROR_VALUE_COUNT_ON_ROW => 'warto¶æ liczona w szeregu', DB_ERROR_INVALID_DSN => 'b³êdny DSN', DB_ERROR_CONNECT_FAILED => 'po³±czenie nie zosta³o zrealizowane', 0 => 'brak b³êdów', // DB_OK DB_ERROR_NEED_MORE_DATA => 'niedostateczna ilo¶æ informacji', DB_ERROR_EXTENSION_NOT_FOUND=> 'nie znaleziono rozszerzenia', DB_ERROR_NOSUCHDB => 'nie znaleziono bazy', DB_ERROR_ACCESS_VIOLATION => 'niedostateczne uprawnienia' ); ?> torrentflux_2.4/html/adodb/lang/adodb-ca.inc.php0000755000004100000410000000371111017367654021755 0ustar www-datawww-data 'ca', DB_ERROR => 'error desconegut', DB_ERROR_ALREADY_EXISTS => 'ja existeix', DB_ERROR_CANNOT_CREATE => 'no es pot crear', DB_ERROR_CANNOT_DELETE => 'no es pot esborrar', DB_ERROR_CANNOT_DROP => 'no es pot eliminar', DB_ERROR_CONSTRAINT => 'violació de constraint', DB_ERROR_DIVZERO => 'divisió per zero', DB_ERROR_INVALID => 'no és vàlid', DB_ERROR_INVALID_DATE => 'la data o l\'hora no són vàlides', DB_ERROR_INVALID_NUMBER => 'el nombre no és vàlid', DB_ERROR_MISMATCH => 'no hi ha coincidència', DB_ERROR_NODBSELECTED => 'cap base de dades seleccionada', DB_ERROR_NOSUCHFIELD => 'camp inexistent', DB_ERROR_NOSUCHTABLE => 'taula inexistent', DB_ERROR_NOT_CAPABLE => 'l\'execució secundària de DB no pot', DB_ERROR_NOT_FOUND => 'no trobat', DB_ERROR_NOT_LOCKED => 'no blocat', DB_ERROR_SYNTAX => 'error de sintaxi', DB_ERROR_UNSUPPORTED => 'no suportat', DB_ERROR_VALUE_COUNT_ON_ROW => 'el nombre de columnes no coincideix amb el nombre de valors en la fila', DB_ERROR_INVALID_DSN => 'el DSN no és vàlid', DB_ERROR_CONNECT_FAILED => 'connexió fallida', 0 => 'cap error', // DB_OK DB_ERROR_NEED_MORE_DATA => 'les dades subministrades són insuficients', DB_ERROR_EXTENSION_NOT_FOUND=> 'extensió no trobada', DB_ERROR_NOSUCHDB => 'base de dades inexistent', DB_ERROR_ACCESS_VIOLATION => 'permisos insuficients' ); ?> torrentflux_2.4/html/adodb/lang/adodb-cz.inc.php0000755000004100000410000000401411017367654022003 0ustar www-datawww-data $ADODB_LANG_ARRAY = array ( 'LANG' => 'cz', DB_ERROR => 'neznámá chyba', DB_ERROR_ALREADY_EXISTS => 'ji? existuje', DB_ERROR_CANNOT_CREATE => 'nelze vytvo?it', DB_ERROR_CANNOT_DELETE => 'nelze smazat', DB_ERROR_CANNOT_DROP => 'nelze odstranit', DB_ERROR_CONSTRAINT => 'poru?ení omezující podmínky', DB_ERROR_DIVZERO => 'd?lení nulou', DB_ERROR_INVALID => 'neplatné', DB_ERROR_INVALID_DATE => 'neplatné datum nebo ?as', DB_ERROR_INVALID_NUMBER => 'neplatné ?íslo', DB_ERROR_MISMATCH => 'nesouhlasí', DB_ERROR_NODBSELECTED => '?ádná databáze není vybrána', DB_ERROR_NOSUCHFIELD => 'pole nenalezeno', DB_ERROR_NOSUCHTABLE => 'tabulka nenalezena', DB_ERROR_NOT_CAPABLE => 'nepodporováno', DB_ERROR_NOT_FOUND => 'nenalezeno', DB_ERROR_NOT_LOCKED => 'nezam?eno', DB_ERROR_SYNTAX => 'syntaktická chyba', DB_ERROR_UNSUPPORTED => 'nepodporováno', DB_ERROR_VALUE_COUNT_ON_ROW => '', DB_ERROR_INVALID_DSN => 'neplatné DSN', DB_ERROR_CONNECT_FAILED => 'p?ipojení selhalo', 0 => 'bez chyb', // DB_OK DB_ERROR_NEED_MORE_DATA => 'málo zdrojových dat', DB_ERROR_EXTENSION_NOT_FOUND=> 'roz?í?ení nenalezeno', DB_ERROR_NOSUCHDB => 'databáze neexistuje', DB_ERROR_ACCESS_VIOLATION => 'nedostate?ná práva' ); ?>torrentflux_2.4/html/adodb/lang/adodb-hu.inc.php0000755000004100000410000000363111017367654022007 0ustar www-datawww-data $ADODB_LANG_ARRAY = array ( 'LANG' => 'hu', DB_ERROR => 'ismeretlen hiba', DB_ERROR_ALREADY_EXISTS => 'már létezik', DB_ERROR_CANNOT_CREATE => 'nem sikerült létrehozni', DB_ERROR_CANNOT_DELETE => 'nem sikerült törölni', DB_ERROR_CANNOT_DROP => 'nem sikerült eldobni', DB_ERROR_CONSTRAINT => 'szabályok megszegése', DB_ERROR_DIVZERO => 'osztás nullával', DB_ERROR_INVALID => 'érvénytelen', DB_ERROR_INVALID_DATE => 'érvénytelen dátum vagy idõ', DB_ERROR_INVALID_NUMBER => 'érvénytelen szám', DB_ERROR_MISMATCH => 'nem megfelelõ', DB_ERROR_NODBSELECTED => 'nincs kiválasztott adatbázis', DB_ERROR_NOSUCHFIELD => 'nincs ilyen mezõ', DB_ERROR_NOSUCHTABLE => 'nincs ilyen tábla', DB_ERROR_NOT_CAPABLE => 'DB backend nem támogatja', DB_ERROR_NOT_FOUND => 'nem található', DB_ERROR_NOT_LOCKED => 'nincs lezárva', DB_ERROR_SYNTAX => 'szintaktikai hiba', DB_ERROR_UNSUPPORTED => 'nem támogatott', DB_ERROR_VALUE_COUNT_ON_ROW => 'soron végzett érték számlálás', DB_ERROR_INVALID_DSN => 'hibás DSN', DB_ERROR_CONNECT_FAILED => 'sikertelen csatlakozás', 0 => 'nincs hiba', // DB_OK DB_ERROR_NEED_MORE_DATA => 'túl kevés az adat', DB_ERROR_EXTENSION_NOT_FOUND=> 'bõvítmény nem található', DB_ERROR_NOSUCHDB => 'nincs ilyen adatbázis', DB_ERROR_ACCESS_VIOLATION => 'nincs jogosultság' ); ?>torrentflux_2.4/html/adodb/lang/adodb-de.inc.php0000755000004100000410000000403011017367654021755 0ustar www-datawww-data $ADODB_LANG_ARRAY = array ( 'LANG' => 'de', DB_ERROR => 'Unbekannter Fehler', DB_ERROR_ALREADY_EXISTS => 'existiert bereits', DB_ERROR_CANNOT_CREATE => 'kann nicht erstellen', DB_ERROR_CANNOT_DELETE => 'kann nicht löschen', DB_ERROR_CANNOT_DROP => 'Tabelle oder Index konnte nicht gelöscht werden', DB_ERROR_CONSTRAINT => 'Constraint Verletzung', DB_ERROR_DIVZERO => 'Division durch Null', DB_ERROR_INVALID => 'ung¨ltig', DB_ERROR_INVALID_DATE => 'ung¨ltiges Datum oder Zeit', DB_ERROR_INVALID_NUMBER => 'ung¨ltige Zahl', DB_ERROR_MISMATCH => 'Unverträglichkeit', DB_ERROR_NODBSELECTED => 'keine Dantebank ausgewählt', DB_ERROR_NOSUCHFIELD => 'Feld nicht vorhanden', DB_ERROR_NOSUCHTABLE => 'Tabelle nicht vorhanden', DB_ERROR_NOT_CAPABLE => 'Funktion nicht installiert', DB_ERROR_NOT_FOUND => 'nicht gefunden', DB_ERROR_NOT_LOCKED => 'nicht gesperrt', DB_ERROR_SYNTAX => 'Syntaxfehler', DB_ERROR_UNSUPPORTED => 'nicht Unterst¨tzt', DB_ERROR_VALUE_COUNT_ON_ROW => 'Anzahl der zur¨ckgelieferten Felder entspricht nicht der Anzahl der Felder in der Abfrage', DB_ERROR_INVALID_DSN => 'ung¨ltiger DSN', DB_ERROR_CONNECT_FAILED => 'Verbindung konnte nicht hergestellt werden', 0 => 'kein Fehler', // DB_OK DB_ERROR_NEED_MORE_DATA => 'Nicht gen¨gend Daten geliefert', DB_ERROR_EXTENSION_NOT_FOUND=> 'erweiterung nicht gefunden', DB_ERROR_NOSUCHDB => 'keine Datenbank', DB_ERROR_ACCESS_VIOLATION => 'ungen¨gende Rechte' ); ?>torrentflux_2.4/html/adodb/lang/adodb-pt-br.inc.php0000755000004100000410000000361711017367654022423 0ustar www-datawww-data 'pt-br', DB_ERROR => 'erro desconhecido', DB_ERROR_ALREADY_EXISTS => 'já existe', DB_ERROR_CANNOT_CREATE => 'impossível criar', DB_ERROR_CANNOT_DELETE => 'impossível excluír', DB_ERROR_CANNOT_DROP => 'impossível remover', DB_ERROR_CONSTRAINT => 'violação do confinamente', DB_ERROR_DIVZERO => 'divisão por zero', DB_ERROR_INVALID => 'inválido', DB_ERROR_INVALID_DATE => 'data ou hora inválida', DB_ERROR_INVALID_NUMBER => 'número inválido', DB_ERROR_MISMATCH => 'erro', DB_ERROR_NODBSELECTED => 'nenhum banco de dados selecionado', DB_ERROR_NOSUCHFIELD => 'campo inválido', DB_ERROR_NOSUCHTABLE => 'tabela inexistente', DB_ERROR_NOT_CAPABLE => 'capacidade inválida para este BD', DB_ERROR_NOT_FOUND => 'não encontrado', DB_ERROR_NOT_LOCKED => 'não bloqueado', DB_ERROR_SYNTAX => 'erro de sintaxe', DB_ERROR_UNSUPPORTED => 'não suportado', DB_ERROR_VALUE_COUNT_ON_ROW => 'a quantidade de colunas não corresponde ao de valores', DB_ERROR_INVALID_DSN => 'DSN inválido', DB_ERROR_CONNECT_FAILED => 'falha na conexão', 0 => 'sem erro', // DB_OK DB_ERROR_NEED_MORE_DATA => 'dados insuficientes', DB_ERROR_EXTENSION_NOT_FOUND=> 'extensão não encontrada', DB_ERROR_NOSUCHDB => 'banco de dados não encontrado', DB_ERROR_ACCESS_VIOLATION => 'permissão insuficiente' ); ?> torrentflux_2.4/html/adodb/lang/adodb-nl.inc.php0000755000004100000410000000354611017367654022011 0ustar www-datawww-data 'nl', DB_ERROR => 'onbekende fout', DB_ERROR_ALREADY_EXISTS => 'bestaat al', DB_ERROR_CANNOT_CREATE => 'kan niet aanmaken', DB_ERROR_CANNOT_DELETE => 'kan niet wissen', DB_ERROR_CANNOT_DROP => 'kan niet verwijderen', DB_ERROR_CONSTRAINT => 'constraint overtreding', DB_ERROR_DIVZERO => 'poging tot delen door nul', DB_ERROR_INVALID => 'ongeldig', DB_ERROR_INVALID_DATE => 'ongeldige datum of tijd', DB_ERROR_INVALID_NUMBER => 'ongeldig nummer', DB_ERROR_MISMATCH => 'is incorrect', DB_ERROR_NODBSELECTED => 'geen database geselecteerd', DB_ERROR_NOSUCHFIELD => 'onbekend veld', DB_ERROR_NOSUCHTABLE => 'onbekende tabel', DB_ERROR_NOT_CAPABLE => 'database systeem is niet tot uitvoer in staat', DB_ERROR_NOT_FOUND => 'niet gevonden', DB_ERROR_NOT_LOCKED => 'niet vergrendeld', DB_ERROR_SYNTAX => 'syntaxis fout', DB_ERROR_UNSUPPORTED => 'niet ondersteund', DB_ERROR_VALUE_COUNT_ON_ROW => 'waarde telling op rij', DB_ERROR_INVALID_DSN => 'ongeldige DSN', DB_ERROR_CONNECT_FAILED => 'connectie mislukt', 0 => 'geen fout', // DB_OK DB_ERROR_NEED_MORE_DATA => 'onvoldoende data gegeven', DB_ERROR_EXTENSION_NOT_FOUND=> 'extensie niet gevonden', DB_ERROR_NOSUCHDB => 'onbekende database', DB_ERROR_ACCESS_VIOLATION => 'onvoldoende rechten' ); ?>torrentflux_2.4/html/adodb/lang/adodb-ru1251.inc.php0000755000004100000410000000364211017367654022334 0ustar www-datawww-data 'ru1251', DB_ERROR => 'íåèçâåñòíàÿ îøèáêà', DB_ERROR_ALREADY_EXISTS => 'óæå ñóùåñòâóåò', DB_ERROR_CANNOT_CREATE => 'íåâîçìîæíî ñîçäàòü', DB_ERROR_CANNOT_DELETE => 'íåâîçìîæíî óäàëèòü', DB_ERROR_CANNOT_DROP => 'íåâîçìîæíî óäàëèòü (drop)', DB_ERROR_CONSTRAINT => 'íàðóøåíèå óñëîâèé ïðîâåðêè', DB_ERROR_DIVZERO => 'äåëåíèå íà 0', DB_ERROR_INVALID => 'íåïðàâèëüíî', DB_ERROR_INVALID_DATE => 'íåêîððåêòíàÿ äàòà èëè âðåìÿ', DB_ERROR_INVALID_NUMBER => 'íåêîððåêòíîå ÷èñëî', DB_ERROR_MISMATCH => 'îøèáêà', DB_ERROR_NODBSELECTED => 'ÁÄ íå âûáðàíà', DB_ERROR_NOSUCHFIELD => 'íå ñóùåñòâóåò ïîëå', DB_ERROR_NOSUCHTABLE => 'íå ñóùåñòâóåò òàáëèöà', DB_ERROR_NOT_CAPABLE => 'ÑÓÁÄ íå â ñîñòîÿíèè', DB_ERROR_NOT_FOUND => 'íå íàéäåíî', DB_ERROR_NOT_LOCKED => 'íå çàáëîêèðîâàíî', DB_ERROR_SYNTAX => 'ñèíòàêñè÷åñêàÿ îøèáêà', DB_ERROR_UNSUPPORTED => 'íå ïîääåðæèâàåòñÿ', DB_ERROR_VALUE_COUNT_ON_ROW => 'ñ÷åò÷èê çíà÷åíèé â ñòðîêå', DB_ERROR_INVALID_DSN => 'íåïðàâèëüíàÿ DSN', DB_ERROR_CONNECT_FAILED => 'ñîåäèíåíèå íåóñïåøíî', 0 => 'íåò îøèáêè', // DB_OK DB_ERROR_NEED_MORE_DATA => 'ïðåäîñòàâëåíî íåäîñòàòî÷íî äàííûõ', DB_ERROR_EXTENSION_NOT_FOUND=> 'ðàñøèðåíèå íå íàéäåíî', DB_ERROR_NOSUCHDB => 'íå ñóùåñòâóåò ÁÄ', DB_ERROR_ACCESS_VIOLATION => 'íåäîñòàòî÷íî ïðàâ äîñòóïà' ); ?>torrentflux_2.4/html/adodb/toexport.inc.php0000755000004100000410000000641511017367654021272 0ustar www-datawww-dataFieldTypesArray(); reset($fieldTypes); while(list(,$o) = each($fieldTypes)) { $v = $o->name; if ($escquote) $v = str_replace($quote,$escquotequote,$v); $v = strip_tags(str_replace("\n", $replaceNewLine, str_replace("\r\n",$replaceNewLine,str_replace($sep,$sepreplace,$v)))); $elements[] = $v; } $s .= implode($sep, $elements).$NEWLINE; } $hasNumIndex = isset($rs->fields[0]); $line = 0; $max = $rs->FieldCount(); while (!$rs->EOF) { $elements = array(); $i = 0; if ($hasNumIndex) { for ($j=0; $j < $max; $j++) { $v = $rs->fields[$j]; if (!is_object($v)) $v = trim($v); else $v = 'Object'; if ($escquote) $v = str_replace($quote,$escquotequote,$v); $v = strip_tags(str_replace("\n", $replaceNewLine, str_replace("\r\n",$replaceNewLine,str_replace($sep,$sepreplace,$v)))); if (strpos($v,$sep) !== false || strpos($v,$quote) !== false) $elements[] = "$quote$v$quote"; else $elements[] = $v; } } else { // ASSOCIATIVE ARRAY foreach($rs->fields as $v) { if ($escquote) $v = str_replace($quote,$escquotequote,trim($v)); $v = strip_tags(str_replace("\n", $replaceNewLine, str_replace("\r\n",$replaceNewLine,str_replace($sep,$sepreplace,$v)))); if (strpos($v,$sep) !== false || strpos($v,$quote) !== false) $elements[] = "$quote$v$quote"; else $elements[] = $v; } } $s .= implode($sep, $elements).$NEWLINE; $rs->MoveNext(); $line += 1; if ($fp && ($line % $BUFLINES) == 0) { if ($fp === true) echo $s; else fwrite($fp,$s); $s = ''; } } if ($fp) { if ($fp === true) echo $s; else fwrite($fp,$s); $s = ''; } return $s; } ?>torrentflux_2.4/html/adodb/adodb-lib.inc.php0000755000004100000410000007576011017367654021234 0ustar www-datawww-data$value) $new_array[strtoupper($key)] = $value; return $new_array; } return $an_array; } function _adodb_replace(&$zthis, $table, $fieldArray, $keyCol, $autoQuote, $has_autoinc) { if (count($fieldArray) == 0) return 0; $first = true; $uSet = ''; if (!is_array($keyCol)) { $keyCol = array($keyCol); } foreach($fieldArray as $k => $v) { if ($autoQuote && !is_numeric($v) and strncmp($v,"'",1) !== 0 and strcasecmp($v,'null')!=0) { $v = $zthis->qstr($v); $fieldArray[$k] = $v; } if (in_array($k,$keyCol)) continue; // skip UPDATE if is key if ($first) { $first = false; $uSet = "$k=$v"; } else $uSet .= ",$k=$v"; } $where = false; foreach ($keyCol as $v) { if (isset($fieldArray[$v])) { if ($where) $where .= ' and '.$v.'='.$fieldArray[$v]; else $where = $v.'='.$fieldArray[$v]; } } if ($uSet && $where) { $update = "UPDATE $table SET $uSet WHERE $where"; $rs = $zthis->Execute($update); if ($rs) { if ($zthis->poorAffectedRows) { /* The Select count(*) wipes out any errors that the update would have returned. http://phplens.com/lens/lensforum/msgs.php?id=5696 */ if ($zthis->ErrorNo()<>0) return 0; # affected_rows == 0 if update field values identical to old values # for mysql - which is silly. $cnt = $zthis->GetOne("select count(*) from $table where $where"); if ($cnt > 0) return 1; // record already exists } else { if (($zthis->Affected_Rows()>0)) return 1; } } else return 0; } // print "

    Error=".$this->ErrorNo().'

    '; $first = true; foreach($fieldArray as $k => $v) { if ($has_autoinc && in_array($k,$keyCol)) continue; // skip autoinc col if ($first) { $first = false; $iCols = "$k"; $iVals = "$v"; } else { $iCols .= ",$k"; $iVals .= ",$v"; } } $insert = "INSERT INTO $table ($iCols) VALUES ($iVals)"; $rs = $zthis->Execute($insert); return ($rs) ? 2 : 0; } // Requires $ADODB_FETCH_MODE = ADODB_FETCH_NUM function _adodb_getmenu(&$zthis, $name,$defstr='',$blank1stItem=true,$multiple=false, $size=0, $selectAttr='',$compareFields0=true) { $hasvalue = false; if ($multiple or is_array($defstr)) { if ($size==0) $size=5; $attr = ' multiple size="'.$size.'"'; if (!strpos($name,'[]')) $name .= '[]'; } else if ($size) $attr = ' size="'.$size.'"'; else $attr =''; $s = '\n"; } // Requires $ADODB_FETCH_MODE = ADODB_FETCH_NUM function _adodb_getmenu_gp(&$zthis, $name,$defstr='',$blank1stItem=true,$multiple=false, $size=0, $selectAttr='',$compareFields0=true) { $hasvalue = false; if ($multiple or is_array($defstr)) { if ($size==0) $size=5; $attr = ' multiple size="'.$size.'"'; if (!strpos($name,'[]')) $name .= '[]'; } else if ($size) $attr = ' size="'.$size.'"'; else $attr =''; $s = '\n"; } /* Count the number of records this sql statement will return by using query rewriting heuristics... Does not work with UNIONs, except with postgresql and oracle. Usage: $conn->Connect(...); $cnt = _adodb_getcount($conn, $sql); */ function _adodb_getcount(&$zthis, $sql,$inputarr=false,$secs2cache=0) { $qryRecs = 0; if (preg_match("/^\s*SELECT\s+DISTINCT/is", $sql) || preg_match('/\s+GROUP\s+BY\s+/is',$sql) || preg_match('/\s+UNION\s+/is',$sql)) { // ok, has SELECT DISTINCT or GROUP BY so see if we can use a table alias // but this is only supported by oracle and postgresql... if ($zthis->dataProvider == 'oci8') { $rewritesql = preg_replace('/(\sORDER\s+BY\s.*)/is','',$sql); // Allow Oracle hints to be used for query optimization, Chris Wrye if (preg_match('#/\\*+.*?\\*\\/#', $sql, $hint)) { $rewritesql = "SELECT ".$hint[0]." COUNT(*) FROM (".$rewritesql.")"; } else $rewritesql = "SELECT COUNT(*) FROM (".$rewritesql.")"; } else if (strncmp($zthis->databaseType,'postgres',8) == 0) { $info = $zthis->ServerInfo(); if (substr($info['version'],0,3) >= 7.1) { // good till version 999 $rewritesql = preg_replace('/(\sORDER\s+BY\s[^)]*)/is','',$sql); $rewritesql = "SELECT COUNT(*) FROM ($rewritesql) _ADODB_ALIAS_"; } } } else { // now replace SELECT ... FROM with SELECT COUNT(*) FROM $rewritesql = preg_replace( '/^\s*SELECT\s.*\s+FROM\s/Uis','SELECT COUNT(*) FROM ',$sql); // fix by alexander zhukov, alex#unipack.ru, because count(*) and 'order by' fails // with mssql, access and postgresql. Also a good speedup optimization - skips sorting! // also see http://phplens.com/lens/lensforum/msgs.php?id=12752 if (preg_match('/\sORDER\s+BY\s*\(/i',$rewritesql)) $rewritesql = preg_replace('/(\sORDER\s+BY\s.*)/is','',$rewritesql); else $rewritesql = preg_replace('/(\sORDER\s+BY\s[^)]*)/is','',$rewritesql); } if (isset($rewritesql) && $rewritesql != $sql) { if ($secs2cache) { // we only use half the time of secs2cache because the count can quickly // become inaccurate if new records are added $qryRecs = $zthis->CacheGetOne($secs2cache/2,$rewritesql,$inputarr); } else { $qryRecs = $zthis->GetOne($rewritesql,$inputarr); } if ($qryRecs !== false) return $qryRecs; } //-------------------------------------------- // query rewrite failed - so try slower way... // strip off unneeded ORDER BY if no UNION if (preg_match('/\s*UNION\s*/is', $sql)) $rewritesql = $sql; else $rewritesql = preg_replace('/(\sORDER\s+BY\s.*)/is','',$sql); $rstest = &$zthis->Execute($rewritesql,$inputarr); if (!$rstest) $rstest = $zthis->Execute($sql,$inputarr); if ($rstest) { $qryRecs = $rstest->RecordCount(); if ($qryRecs == -1) { global $ADODB_EXTENSION; // some databases will return -1 on MoveLast() - change to MoveNext() if ($ADODB_EXTENSION) { while(!$rstest->EOF) { adodb_movenext($rstest); } } else { while(!$rstest->EOF) { $rstest->MoveNext(); } } $qryRecs = $rstest->_currentRow; } $rstest->Close(); if ($qryRecs == -1) return 0; } return $qryRecs; } /* Code originally from "Cornel G" This code might not work with SQL that has UNION in it Also if you are using CachePageExecute(), there is a strong possibility that data will get out of synch. use CachePageExecute() only with tables that rarely change. */ function &_adodb_pageexecute_all_rows(&$zthis, $sql, $nrows, $page, $inputarr=false, $secs2cache=0) { $atfirstpage = false; $atlastpage = false; $lastpageno=1; // If an invalid nrows is supplied, // we assume a default value of 10 rows per page if (!isset($nrows) || $nrows <= 0) $nrows = 10; $qryRecs = false; //count records for no offset $qryRecs = _adodb_getcount($zthis,$sql,$inputarr,$secs2cache); $lastpageno = (int) ceil($qryRecs / $nrows); $zthis->_maxRecordCount = $qryRecs; // ***** Here we check whether $page is the last page or // whether we are trying to retrieve // a page number greater than the last page number. if ($page >= $lastpageno) { $page = $lastpageno; $atlastpage = true; } // If page number <= 1, then we are at the first page if (empty($page) || $page <= 1) { $page = 1; $atfirstpage = true; } // We get the data we want $offset = $nrows * ($page-1); if ($secs2cache > 0) $rsreturn = &$zthis->CacheSelectLimit($secs2cache, $sql, $nrows, $offset, $inputarr); else $rsreturn = &$zthis->SelectLimit($sql, $nrows, $offset, $inputarr, $secs2cache); // Before returning the RecordSet, we set the pagination properties we need if ($rsreturn) { $rsreturn->_maxRecordCount = $qryRecs; $rsreturn->rowsPerPage = $nrows; $rsreturn->AbsolutePage($page); $rsreturn->AtFirstPage($atfirstpage); $rsreturn->AtLastPage($atlastpage); $rsreturn->LastPageNo($lastpageno); } return $rsreturn; } // Iván Oliva version function &_adodb_pageexecute_no_last_page(&$zthis, $sql, $nrows, $page, $inputarr=false, $secs2cache=0) { $atfirstpage = false; $atlastpage = false; if (!isset($page) || $page <= 1) { // If page number <= 1, then we are at the first page $page = 1; $atfirstpage = true; } if ($nrows <= 0) $nrows = 10; // If an invalid nrows is supplied, we assume a default value of 10 rows per page // ***** Here we check whether $page is the last page or whether we are trying to retrieve a page number greater than // the last page number. $pagecounter = $page + 1; $pagecounteroffset = ($pagecounter * $nrows) - $nrows; if ($secs2cache>0) $rstest = &$zthis->CacheSelectLimit($secs2cache, $sql, $nrows, $pagecounteroffset, $inputarr); else $rstest = &$zthis->SelectLimit($sql, $nrows, $pagecounteroffset, $inputarr, $secs2cache); if ($rstest) { while ($rstest && $rstest->EOF && $pagecounter>0) { $atlastpage = true; $pagecounter--; $pagecounteroffset = $nrows * ($pagecounter - 1); $rstest->Close(); if ($secs2cache>0) $rstest = &$zthis->CacheSelectLimit($secs2cache, $sql, $nrows, $pagecounteroffset, $inputarr); else $rstest = &$zthis->SelectLimit($sql, $nrows, $pagecounteroffset, $inputarr, $secs2cache); } if ($rstest) $rstest->Close(); } if ($atlastpage) { // If we are at the last page or beyond it, we are going to retrieve it $page = $pagecounter; if ($page == 1) $atfirstpage = true; // We have to do this again in case the last page is the same as the first //... page, that is, the recordset has only 1 page. } // We get the data we want $offset = $nrows * ($page-1); if ($secs2cache > 0) $rsreturn = &$zthis->CacheSelectLimit($secs2cache, $sql, $nrows, $offset, $inputarr); else $rsreturn = &$zthis->SelectLimit($sql, $nrows, $offset, $inputarr, $secs2cache); // Before returning the RecordSet, we set the pagination properties we need if ($rsreturn) { $rsreturn->rowsPerPage = $nrows; $rsreturn->AbsolutePage($page); $rsreturn->AtFirstPage($atfirstpage); $rsreturn->AtLastPage($atlastpage); } return $rsreturn; } function _adodb_getupdatesql(&$zthis,&$rs, $arrFields,$forceUpdate=false,$magicq=false,$force=2) { if (!$rs) { printf(ADODB_BAD_RS,'GetUpdateSQL'); return false; } $fieldUpdatedCount = 0; $arrFields = _array_change_key_case($arrFields); $hasnumeric = isset($rs->fields[0]); $setFields = ''; // Loop through all of the fields in the recordset for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) { // Get the field from the recordset $field = $rs->FetchField($i); // If the recordset field is one // of the fields passed in then process. $upperfname = strtoupper($field->name); if (adodb_key_exists($upperfname,$arrFields,$force)) { // If the existing field value in the recordset // is different from the value passed in then // go ahead and append the field name and new value to // the update query. if ($hasnumeric) $val = $rs->fields[$i]; else if (isset($rs->fields[$upperfname])) $val = $rs->fields[$upperfname]; else if (isset($rs->fields[$field->name])) $val = $rs->fields[$field->name]; else if (isset($rs->fields[strtolower($upperfname)])) $val = $rs->fields[strtolower($upperfname)]; else $val = ''; if ($forceUpdate || strcmp($val, $arrFields[$upperfname])) { // Set the counter for the number of fields that will be updated. $fieldUpdatedCount++; // Based on the datatype of the field // Format the value properly for the database $type = $rs->MetaType($field->type); if ($type == 'null') { $type = 'C'; } if (strpos($upperfname,' ') !== false) $fnameq = $zthis->nameQuote.$upperfname.$zthis->nameQuote; else $fnameq = $upperfname; // is_null requires php 4.0.4 //********************************************************// if (is_null($arrFields[$upperfname]) || (empty($arrFields[$upperfname]) && strlen($arrFields[$upperfname]) == 0) || $arrFields[$upperfname] === 'null' ) { switch ($force) { //case 0: // //Ignore empty values. This is allready handled in "adodb_key_exists" function. //break; case 1: //Set null $setFields .= $field->name . " = null, "; break; case 2: //Set empty $arrFields[$upperfname] = ""; $setFields .= _adodb_column_sql($zthis, 'U', $type, $upperfname, $fnameq,$arrFields, $magicq); break; default: case 3: //Set the value that was given in array, so you can give both null and empty values if (is_null($arrFields[$upperfname]) || $arrFields[$upperfname] === 'null') { $setFields .= $field->name . " = null, "; } else { $setFields .= _adodb_column_sql($zthis, 'U', $type, $upperfname, $fnameq,$arrFields, $magicq); } break; } //********************************************************// } else { //we do this so each driver can customize the sql for //DB specific column types. //Oracle needs BLOB types to be handled with a returning clause //postgres has special needs as well $setFields .= _adodb_column_sql($zthis, 'U', $type, $upperfname, $fnameq, $arrFields, $magicq); } } } } // If there were any modified fields then build the rest of the update query. if ($fieldUpdatedCount > 0 || $forceUpdate) { // Get the table name from the existing query. if (!empty($rs->tableName)) $tableName = $rs->tableName; else { preg_match("/FROM\s+".ADODB_TABLE_REGEX."/is", $rs->sql, $tableName); $tableName = $tableName[1]; } // Get the full where clause excluding the word "WHERE" from // the existing query. preg_match('/\sWHERE\s(.*)/is', $rs->sql, $whereClause); $discard = false; // not a good hack, improvements? if ($whereClause) { #var_dump($whereClause); if (preg_match('/\s(ORDER\s.*)/is', $whereClause[1], $discard)); else if (preg_match('/\s(LIMIT\s.*)/is', $whereClause[1], $discard)); else if (preg_match('/\s(FOR UPDATE.*)/is', $whereClause[1], $discard)); else preg_match('/\s.*(\) WHERE .*)/is', $whereClause[1], $discard); # see http://sourceforge.net/tracker/index.php?func=detail&aid=1379638&group_id=42718&atid=433976 } else $whereClause = array(false,false); if ($discard) $whereClause[1] = substr($whereClause[1], 0, strlen($whereClause[1]) - strlen($discard[1])); $sql = 'UPDATE '.$tableName.' SET '.substr($setFields, 0, -2); if (strlen($whereClause[1]) > 0) $sql .= ' WHERE '.$whereClause[1]; return $sql; } else { return false; } } function adodb_key_exists($key, &$arr,$force=2) { if ($force<=0) { // the following is the old behaviour where null or empty fields are ignored return (!empty($arr[$key])) || (isset($arr[$key]) && strlen($arr[$key])>0); } if (isset($arr[$key])) return true; ## null check below if (ADODB_PHPVER >= 0x4010) return array_key_exists($key,$arr); return false; } /** * There is a special case of this function for the oci8 driver. * The proper way to handle an insert w/ a blob in oracle requires * a returning clause with bind variables and a descriptor blob. * * */ function _adodb_getinsertsql(&$zthis,&$rs,$arrFields,$magicq=false,$force=2) { static $cacheRS = false; static $cacheSig = 0; static $cacheCols; $tableName = ''; $values = ''; $fields = ''; $recordSet = null; $arrFields = _array_change_key_case($arrFields); $fieldInsertedCount = 0; if (is_string($rs)) { //ok we have a table name //try and get the column info ourself. $tableName = $rs; //we need an object for the recordSet //because we have to call MetaType. //php can't do a $rsclass::MetaType() $rsclass = $zthis->rsPrefix.$zthis->databaseType; $recordSet = new $rsclass(-1,$zthis->fetchMode); $recordSet->connection = &$zthis; if (is_string($cacheRS) && $cacheRS == $rs) { $columns =& $cacheCols; } else { $columns = $zthis->MetaColumns( $tableName ); $cacheRS = $tableName; $cacheCols = $columns; } } else if (is_subclass_of($rs, 'adorecordset')) { if (isset($rs->insertSig) && is_integer($cacheRS) && $cacheRS == $rs->insertSig) { $columns =& $cacheCols; } else { for ($i=0, $max=$rs->FieldCount(); $i < $max; $i++) $columns[] = $rs->FetchField($i); $cacheRS = $cacheSig; $cacheCols = $columns; $rs->insertSig = $cacheSig++; } $recordSet =& $rs; } else { printf(ADODB_BAD_RS,'GetInsertSQL'); return false; } // Loop through all of the fields in the recordset foreach( $columns as $field ) { $upperfname = strtoupper($field->name); if (adodb_key_exists($upperfname,$arrFields,$force)) { $bad = false; if (strpos($upperfname,' ') !== false) $fnameq = $zthis->nameQuote.$upperfname.$zthis->nameQuote; else $fnameq = $upperfname; $type = $recordSet->MetaType($field->type); /********************************************************/ if (is_null($arrFields[$upperfname]) || (empty($arrFields[$upperfname]) && strlen($arrFields[$upperfname]) == 0) || $arrFields[$upperfname] === 'null' ) { switch ($force) { case 0: // we must always set null if missing $bad = true; break; case 1: $values .= "null, "; break; case 2: //Set empty $arrFields[$upperfname] = ""; $values .= _adodb_column_sql($zthis, 'I', $type, $upperfname, $fnameq,$arrFields, $magicq); break; default: case 3: //Set the value that was given in array, so you can give both null and empty values if (is_null($arrFields[$upperfname]) || $arrFields[$upperfname] === 'null') { $values .= "null, "; } else { $values .= _adodb_column_sql($zthis, 'I', $type, $upperfname, $fnameq, $arrFields, $magicq); } break; } // switch /*********************************************************/ } else { //we do this so each driver can customize the sql for //DB specific column types. //Oracle needs BLOB types to be handled with a returning clause //postgres has special needs as well $values .= _adodb_column_sql($zthis, 'I', $type, $upperfname, $fnameq, $arrFields, $magicq); } if ($bad) continue; // Set the counter for the number of fields that will be inserted. $fieldInsertedCount++; // Get the name of the fields to insert $fields .= $fnameq . ", "; } } // If there were any inserted fields then build the rest of the insert query. if ($fieldInsertedCount <= 0) return false; // Get the table name from the existing query. if (!$tableName) { if (!empty($rs->tableName)) $tableName = $rs->tableName; else if (preg_match("/FROM\s+".ADODB_TABLE_REGEX."/is", $rs->sql, $tableName)) $tableName = $tableName[1]; else return false; } // Strip off the comma and space on the end of both the fields // and their values. $fields = substr($fields, 0, -2); $values = substr($values, 0, -2); // Append the fields and their values to the insert query. return 'INSERT INTO '.$tableName.' ( '.$fields.' ) VALUES ( '.$values.' )'; } /** * This private method is used to help construct * the update/sql which is generated by GetInsertSQL and GetUpdateSQL. * It handles the string construction of 1 column -> sql string based on * the column type. We want to do 'safe' handling of BLOBs * * @param string the type of sql we are trying to create * 'I' or 'U'. * @param string column data type from the db::MetaType() method * @param string the column name * @param array the column value * * @return string * */ function _adodb_column_sql_oci8(&$zthis,$action, $type, $fname, $fnameq, $arrFields, $magicq) { $sql = ''; // Based on the datatype of the field // Format the value properly for the database switch($type) { case 'B': //in order to handle Blobs correctly, we need //to do some magic for Oracle //we need to create a new descriptor to handle //this properly if (!empty($zthis->hasReturningInto)) { if ($action == 'I') { $sql = 'empty_blob(), '; } else { $sql = $fnameq. '=empty_blob(), '; } //add the variable to the returning clause array //so the user can build this later in //case they want to add more to it $zthis->_returningArray[$fname] = ':xx'.$fname.'xx'; } else if (empty($arrFields[$fname])){ if ($action == 'I') { $sql = 'empty_blob(), '; } else { $sql = $fnameq. '=empty_blob(), '; } } else { //this is to maintain compatibility //with older adodb versions. $sql = _adodb_column_sql($zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq,false); } break; case "X": //we need to do some more magic here for long variables //to handle these correctly in oracle. //create a safe bind var name //to avoid conflicts w/ dupes. if (!empty($zthis->hasReturningInto)) { if ($action == 'I') { $sql = ':xx'.$fname.'xx, '; } else { $sql = $fnameq.'=:xx'.$fname.'xx, '; } //add the variable to the returning clause array //so the user can build this later in //case they want to add more to it $zthis->_returningArray[$fname] = ':xx'.$fname.'xx'; } else { //this is to maintain compatibility //with older adodb versions. $sql = _adodb_column_sql($zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq,false); } break; default: $sql = _adodb_column_sql($zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq,false); break; } return $sql; } function _adodb_column_sql(&$zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq, $recurse=true) { if ($recurse) { switch($zthis->dataProvider) { case 'postgres': if ($type == 'L') $type = 'C'; break; case 'oci8': return _adodb_column_sql_oci8($zthis, $action, $type, $fname, $fnameq, $arrFields, $magicq); } } switch($type) { case "C": case "X": case 'B': $val = $zthis->qstr($arrFields[$fname],$magicq); break; case "D": $val = $zthis->DBDate($arrFields[$fname]); break; case "T": $val = $zthis->DBTimeStamp($arrFields[$fname]); break; default: $val = $arrFields[$fname]; if (empty($val)) $val = '0'; break; } if ($action == 'I') return $val . ", "; return $fnameq . "=" . $val . ", "; } function _adodb_debug_execute(&$zthis, $sql, $inputarr) { $ss = ''; if ($inputarr) { foreach($inputarr as $kk=>$vv) { if (is_string($vv) && strlen($vv)>64) $vv = substr($vv,0,64).'...'; $ss .= "($kk=>'$vv') "; } $ss = "[ $ss ]"; } $sqlTxt = is_array($sql) ? $sql[0] : $sql; /*str_replace(', ','##1#__^LF',is_array($sql) ? $sql[0] : $sql); $sqlTxt = str_replace(',',', ',$sqlTxt); $sqlTxt = str_replace('##1#__^LF', ', ' ,$sqlTxt); */ // check if running from browser or command-line $inBrowser = isset($_SERVER['HTTP_USER_AGENT']); $dbt = $zthis->databaseType; if (isset($zthis->dsnType)) $dbt .= '-'.$zthis->dsnType; if ($inBrowser) { if ($ss) { $ss = ''.htmlspecialchars($ss).''; } if ($zthis->debug === -1) ADOConnection::outp( "
    \n($dbt): ".htmlspecialchars($sqlTxt)."   $ss\n
    \n",false); else ADOConnection::outp( "


    \n($dbt): ".htmlspecialchars($sqlTxt)."   $ss\n
    \n",false); } else { ADOConnection::outp("-----\n($dbt): ".$sqlTxt."\n-----\n",false); } $qID = $zthis->_query($sql,$inputarr); /* Alexios Fakios notes that ErrorMsg() must be called before ErrorNo() for mssql because ErrorNo() calls Execute('SELECT @ERROR'), causing recursion */ if ($zthis->databaseType == 'mssql') { // ErrorNo is a slow function call in mssql, and not reliable in PHP 4.0.6 if($emsg = $zthis->ErrorMsg()) { if ($err = $zthis->ErrorNo()) ADOConnection::outp($err.': '.$emsg); } } else if (!$qID) { ADOConnection::outp($zthis->ErrorNo() .': '. $zthis->ErrorMsg()); } if ($zthis->debug === 99) _adodb_backtrace(true,9999,2); return $qID; } # pretty print the debug_backtrace function function _adodb_backtrace($printOrArr=true,$levels=9999,$skippy=0) { if (!function_exists('debug_backtrace')) return ''; $html = (isset($_SERVER['HTTP_USER_AGENT'])); $fmt = ($html) ? " %% line %4d, file:
    %s" : "%% line %4d, file: %s"; $MAXSTRLEN = 128; $s = ($html) ? '
    ' : '';
    	
    	if (is_array($printOrArr)) $traceArr = $printOrArr;
    	else $traceArr = debug_backtrace();
    	array_shift($traceArr);
    	array_shift($traceArr);
    	$tabs = sizeof($traceArr)-2;
    	
    	foreach ($traceArr as $arr) {
    		if ($skippy) {$skippy -= 1; continue;}
    		$levels -= 1;
    		if ($levels < 0) break;
    		
    		$args = array();
    		for ($i=0; $i < $tabs; $i++) $s .=  ($html) ? '   ' : "\t";
    		$tabs -= 1;
    		if ($html) $s .= '';
    		if (isset($arr['class'])) $s .= $arr['class'].'.';
    		if (isset($arr['args']))
    		 foreach($arr['args'] as $v) {
    			if (is_null($v)) $args[] = 'null';
    			else if (is_array($v)) $args[] = 'Array['.sizeof($v).']';
    			else if (is_object($v)) $args[] = 'Object:'.get_class($v);
    			else if (is_bool($v)) $args[] = $v ? 'true' : 'false';
    			else {
    				$v = (string) @$v;
    				$str = htmlspecialchars(substr($v,0,$MAXSTRLEN));
    				if (strlen($v) > $MAXSTRLEN) $str .= '...';
    				$args[] = $str;
    			}
    		}
    		$s .= $arr['function'].'('.implode(', ',$args).')';
    		
    		
    		$s .= @sprintf($fmt, $arr['line'],$arr['file'],basename($arr['file']));
    			
    		$s .= "\n";
    	}	
    	if ($html) $s .= '
    '; if ($printOrArr) print $s; return $s; } ?>torrentflux_2.4/html/adodb/adodb-pager.inc.php0000755000004100000410000001766511017367654021564 0ustar www-datawww-data implemented Render_PageLinks(). Please note, this class is entirely unsupported, and no free support requests except for bug reports will be entertained by the author. */ class ADODB_Pager { var $id; // unique id for pager (defaults to 'adodb') var $db; // ADODB connection object var $sql; // sql used var $rs; // recordset generated var $curr_page; // current page number before Render() called, calculated in constructor var $rows; // number of rows per page var $linksPerPage=10; // number of links per page in navigation bar var $showPageLinks; var $gridAttributes = 'width=100% border=1 bgcolor=white'; // Localize text strings here var $first = '|<'; var $prev = '<<'; var $next = '>>'; var $last = '>|'; var $moreLinks = '...'; var $startLinks = '...'; var $gridHeader = false; var $htmlSpecialChars = true; var $page = 'Page'; var $linkSelectedColor = 'red'; var $cache = 0; #secs to cache with CachePageExecute() //---------------------------------------------- // constructor // // $db adodb connection object // $sql sql statement // $id optional id to identify which pager, // if you have multiple on 1 page. // $id should be only be [a-z0-9]* // function ADODB_Pager(&$db,$sql,$id = 'adodb', $showPageLinks = false) { global $PHP_SELF; $curr_page = $id.'_curr_page'; if (empty($PHP_SELF)) $PHP_SELF = htmlspecialchars($_SERVER['PHP_SELF']); // htmlspecialchars() to prevent XSS attacks $this->sql = $sql; $this->id = $id; $this->db = $db; $this->showPageLinks = $showPageLinks; $next_page = $id.'_next_page'; if (isset($_GET[$next_page])) { $_SESSION[$curr_page] = (integer) $_GET[$next_page]; } if (empty($_SESSION[$curr_page])) $_SESSION[$curr_page] = 1; ## at first page $this->curr_page = $_SESSION[$curr_page]; } //--------------------------- // Display link to first page function Render_First($anchor=true) { global $PHP_SELF; if ($anchor) { ?> first;?>   first   "; } } //-------------------------- // Display link to next page function render_next($anchor=true) { global $PHP_SELF; if ($anchor) { ?> next;?>   next   "; } } //------------------ // Link to last page // // for better performance with large recordsets, you can set // $this->db->pageExecuteCountRows = false, which disables // last page counting. function render_last($anchor=true) { global $PHP_SELF; if (!$this->db->pageExecuteCountRows) return; if ($anchor) { ?> last;?>   last   "; } } //--------------------------------------------------- // original code by "Pablo Costa" function render_pagelinks() { global $PHP_SELF; $pages = $this->rs->LastPageNo(); $linksperpage = $this->linksPerPage ? $this->linksPerPage : $pages; for($i=1; $i <= $pages; $i+=$linksperpage) { if($this->rs->AbsolutePage() >= $i) { $start = $i; } } $numbers = ''; $end = $start+$linksperpage-1; $link = $this->id . "_next_page"; if($end > $pages) $end = $pages; if ($this->startLinks && $start > 1) { $pos = $start - 1; $numbers .= "$this->startLinks "; } for($i=$start; $i <= $end; $i++) { if ($this->rs->AbsolutePage() == $i) $numbers .= "linkSelectedColor>$i "; else $numbers .= "$i "; } if ($this->moreLinks && $end < $pages) $numbers .= "$this->moreLinks "; print $numbers . '   '; } // Link to previous page function render_prev($anchor=true) { global $PHP_SELF; if ($anchor) { ?> prev;?>   prev   "; } } //-------------------------------------------------------- // Simply rendering of grid. You should override this for // better control over the format of the grid // // We use output buffering to keep code clean and readable. function RenderGrid() { global $gSQLBlockRows; // used by rs2html to indicate how many rows to display include_once(ADODB_DIR.'/tohtml.inc.php'); ob_start(); $gSQLBlockRows = $this->rows; rs2html($this->rs,$this->gridAttributes,$this->gridHeader,$this->htmlSpecialChars); $s = ob_get_contents(); ob_end_clean(); return $s; } //------------------------------------------------------- // Navigation bar // // we use output buffering to keep the code easy to read. function RenderNav() { ob_start(); if (!$this->rs->AtFirstPage()) { $this->Render_First(); $this->Render_Prev(); } else { $this->Render_First(false); $this->Render_Prev(false); } if ($this->showPageLinks){ $this->Render_PageLinks(); } if (!$this->rs->AtLastPage()) { $this->Render_Next(); $this->Render_Last(); } else { $this->Render_Next(false); $this->Render_Last(false); } $s = ob_get_contents(); ob_end_clean(); return $s; } //------------------- // This is the footer function RenderPageCount() { if (!$this->db->pageExecuteCountRows) return ''; $lastPage = $this->rs->LastPageNo(); if ($lastPage == -1) $lastPage = 1; // check for empty rs. if ($this->curr_page > $lastPage) $this->curr_page = 1; return "$this->page ".$this->curr_page."/".$lastPage.""; } //----------------------------------- // Call this class to draw everything. function Render($rows=10) { global $ADODB_COUNTRECS; $this->rows = $rows; if ($this->db->dataProvider == 'informix') $this->db->cursorType = IFX_SCROLL; $savec = $ADODB_COUNTRECS; if ($this->db->pageExecuteCountRows) $ADODB_COUNTRECS = true; if ($this->cache) $rs = &$this->db->CachePageExecute($this->cache,$this->sql,$rows,$this->curr_page); else $rs = &$this->db->PageExecute($this->sql,$rows,$this->curr_page); $ADODB_COUNTRECS = $savec; $this->rs = &$rs; if (!$rs) { print "

    Query failed: $this->sql

    "; return; } if (!$rs->EOF && (!$rs->AtFirstPage() || !$rs->AtLastPage())) $header = $this->RenderNav(); else $header = " "; $grid = $this->RenderGrid(); $footer = $this->RenderPageCount(); $this->RenderLayout($header,$grid,$footer); $rs->Close(); $this->rs = false; } //------------------------------------------------------ // override this to control overall layout and formating function RenderLayout($header,$grid,$footer,$attributes='border=1 bgcolor=beige') { echo "
    ", $header, "
    ", $grid, "
    ", $footer, "
    "; } } ?>torrentflux_2.4/html/adodb/readme.txt0000755000004100000410000000320611017367654020116 0ustar www-datawww-data>> ADODB Library for PHP4 (c) 2000-2004 John Lim (jlim@natsoft.com.my) Released under both BSD and GNU Lesser GPL library license. This means you can use it in proprietary products. >> Introduction PHP's database access functions are not standardised. This creates a need for a database class library to hide the differences between the different databases (encapsulate the differences) so we can easily switch databases. We currently support MySQL, Interbase, Sybase, PostgreSQL, Oracle, Microsoft SQL server, Foxpro ODBC, Access ODBC, Informix, DB2, Sybase SQL Anywhere, generic ODBC and Microsoft's ADO. We hope more people will contribute drivers to support other databases. >> Documentation and Examples Refer to the adodb/docs directory for full documentation and examples. There is also a tutorial tute.htm that contrasts ADODB code with mysql code. >>> Files Adodb.inc.php is the main file. You need to include only this file. Adodb-*.inc.php are the database specific driver code. Test.php contains a list of test commands to exercise the class library. Adodb-session.php is the PHP4 session handling code. Testdatabases.inc.php contains the list of databases to apply the tests on. Benchmark.php is a simple benchmark to test the throughput of a simple SELECT statement for databases described in testdatabases.inc.php. The benchmark tables are created in test.php. readme.htm is the main documentation. tute.htm is the tutorial. >> More Info For more information, including installation see readme.htm or visit http://adodb.sourceforge.net/ >> Feature Requests and Bug Reports Email to jlim@natsoft.com.my torrentflux_2.4/html/who.php0000755000004100000410000000343211017367654016356 0ustar www-datawww-data"; echo displayDriveSpaceBar(getDriveSpace($cfg["path"])); echo ""; ?>
    ; position:relative; width:740; height:500; padding-left: 5px; padding-right: 5px; z-index:1; overflow: scroll; visibility: visible"> "; echo $result; echo "


    "; echo $result2; echo ""; if (IsAdmin()) { echo "


    "; echo "
    ";
        RunningProcessInfo();
        echo "
    "; } echo "
    "; DisplayFoot(); ?>torrentflux_2.4/html/RunningTorrent.php0000755000004100000410000001104211017367654020553 0ustar www-datawww-data 0) { while (strpos($psLine," ") > 0) { $psLine = str_replace(" ",' ',trim($psLine)); } $arr = split(' ',$psLine); $this->processId = $arr[0]; foreach($arr as $key =>$value) { if ($key == 0) { $startArgs = false; } if ($value == $cfg["btphpbin"]) { $offset = 2; if(!strpos($arr[$key+$offset],"/",1) > 0) { $offset += 1; } if(!strpos($arr[$key+$offset],"/",1) > 0) { $offset += 1; } $this->filePath = substr($arr[$key+$offset],0,strrpos($arr[$key+$offset],"/")+1); $this->statFile = str_replace($this->filePath,'',$arr[$key+$offset]); $this->torrentOwner = $arr[$key+$offset+1]; } if ($value == '--display_interval') { $startArgs = true; } if ($startArgs) { if (!empty($value)) { if (strpos($value,"-",1) > 0) { if(array_key_exists($key+1,$arr)) { if(strpos($value,"priority") > 0) { $this->args .= "\n file ".$value." set"; } else { $this->args .= $value.":".$arr[$key+1].","; } } else { $this->args .= ""; } } } } if ($value == '--responsefile') { $this->torrentFile = str_replace($this->filePath,'',$arr[$key+1]); } } $this->args = str_replace("--","",$this->args); $this->args = substr($this->args,0,strlen($this->args)); } } //---------------------------------------------------------------- // Private Function to put the variables into a string for writing to file function BuildAdminOutput() { $output = ""; $output .= "
    "; $output .= $this->torrentOwner; $output .= "
    "; $output .= "
    "; $output .= str_replace(array(".stat"),"",$this->statFile); $output .= "
    ".$this->args."
    "; $output .= "statFile; $output .= "&kill=".$this->processId; $output .= "&kill_torrent=".urlencode($this->torrentFile); $output .= "&return=admin\">"; $output .= ""; $output .= ""; $output .= "\n"; return $output; } } ?> torrentflux_2.4/html/images/0000755000004100000410000000000011026130123016263 5ustar www-datawww-datatorrentflux_2.4/html/images/black.gif0000755000004100000410000000174211017132666020053 0ustar www-datawww-dataGIF89a÷!!!)))111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒ”””œœœ¥¥¥­­­µµµ½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù,¿?üÐC .hð0°!†& ´pᇆ(<€ @G0`Ð00C $P @2\ì ABÊ44H@€œ0LèxàAÅ øD°ÃA ,Øè ¥ÏM+TðIÁ  ð € [¡0pÀÀX²8\°@êG²:tÐpá@Ý¿x|`¼~à`ðå_¬5dÈÀqÁŠrȹ¡)½™z0Û´Cè;torrentflux_2.4/html/images/delete_off.gif0000755000004100000410000000120611017132666021066 0ustar www-datawww-dataGIF89aæs#u‹=*Š1PAN>K;‹#‹4E3E4•qgC2u‹:%’_S‹%Š3UEŠ,B1@.Œ?-‹7#‹6!6ˆ3p ‡0uoÿÿÿœœœA0;"‹;(Œ>+”of•nbŽH8•sjŽ:L=–yqœššœ››˜ynO@no ŽL;‹-F6Œ/‘[M, ‡ ˆ3Š1•tkRC=)q Œ.‡-Œ@-‹8#„&‹(C2“lbˆ# ‹* ŽH6‘A#’?!p•rgu‰-–pb‡.€>,r#UGH8Ž/ –wlTE—}yt! t ˆ3Œ8 •xq–{u–xr•fYŽF6—uhˆ0Œ.‹-u8&Š/Œ=*•tl’aT’cW02–|u—}w8Ž3ŽM=M=ˆ(Š+Š0rŠ5Œ<%†+, –xqŠ0!ù,。ƒ„…‚bY* !B$#CxDF‚UGlY<* $jz‚/m6/4 B2]‚J-Z#~, AT‚ q _¼k ;eÂtV a %% w³'' $( &g35[‚ cåç&f@ni\‚:!!+@8Y"Ê•>3‚2"+DÈÁ‚Ì›"ÙÑS§œ="RdpÁ‚ÉŒDp` ‡—s2,¹q ƒ |8HáCÀ?I@ÀáAÐM~Äø‘§Á“:x@c¨*¡@;torrentflux_2.4/html/images/down.gif0000755000004100000410000000006011017132666017736 0ustar www-datawww-dataGIF87a €U»Dÿÿÿ, „›°ÑzôP8Yl¼;torrentflux_2.4/html/images/view_nfo.gif0000755000004100000410000000122311017132666020605 0ustar www-datawww-dataGIF89aæqéééÝÝÝîîîåååôôôðððßßßýýýàààÍÍÍíííÜÜÜÔÔÔõõõÞÞÞLLLüüümmmhhhççç²²²ñññ¼¼¼ÁÁÁÄÄÄŒŒŒVVV>>>½½½»»»«««WWW´´´’’’\\\333þþþJJJ---¹¹¹úúúUUUttt¢¢¢ÅÅÅ|||pppYYY%%%¿¿¿©©©ooo¯¯¯NNNâââëëë¶¶¶áááÌÌÌœœœHHH]]]ªªªSSSïï£ÑÑѺººøøø¦¦¦êêêÛÛÛKKK¤¤¤ƒƒƒ———rrr±±±lllyyy¬¬¬///žžžkkk³³³;;;ÙÙÙ×××RRRËËË···bbb˜˜˜111ùùùAAA~~~PPP§§§EEE÷÷÷¡¡¡äääÏÏÏãããÿÿÿÿÿÿ!ùq,ð€q1"`T,X] qŽM=ph-ŽAGpi.2$5›O_ /@;nŽ FIK>4kB&gY !6(b%Zl#JoD ^o\!oCoSd7Wo oH*o?ooP:0 R:¤h4F‚‰0(Z”pÃF™2"4ŠÂB€•NR°A`¡ˆ¶â˜‡Ž[0 `Å…lªÀq  †|I@œNÀz" !Tàa éƒ0p3b@£l´ÙÊuk‚+â;torrentflux_2.4/html/images/delete.png0000755000004100000410000000035211017132666020254 0ustar www-datawww-data‰PNG  IHDR H+d gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< PLTEÿÿÿÿÿÿsx¥ctRNSÿÿ×Ê AXIDATxÚb`B€b@b2 €Àl0@ 0Í L„,@@… Œ`ÈÄ@Èl€Bf2 €ÙÄÀ3ˆ‰ À;4¥ß ýþIEND®B`‚torrentflux_2.4/html/images/all.gif0000755000004100000410000000117311017132666017545 0ustar www-datawww-dataGIF89aæ™ÖƒÂ¬¬­ôû'‚4:xWêêê*vHÑÕÕÒìÇé üýìùèõâó?Œ,gsÞø^´'¡Ð™;/Œ\ýýýððð&šBüüü©Ú Öî÷÷÷,ƒG.‘9æèé%M¼å—>zÆVž'š8;¨o»;öööP”n.‘*ÃÆÄm‡y&€E›×„¿ÅÅv‹€´Ú‰¾’àön¸4Myc›ÕíííîïïÙÙÙ³¾»WjP˜$d¼îîî+ž&-!ÑÖØøøøf•}f« – ši”†Çç±x›Š\€k®à—¤ Þáàš³±óóó…̉Ϡ¤¢1Ÿ%-ŒF)“F!–JœÓx%“<=€W#•$ŠÇ1’Ó_«…` …f­ñòñ‰ –¾Þ ^œyÙóÐÐЃ›‘•“l·2ÊÊÊÈÍËÊÎÏÅæ “Í•Êâââáäääää|†ÜÜÜ.“\+™U6’b<™b$Ÿ?R{fc¸–²©ñññÒêÖïïïÿÿÿ!ù,Ø€‚`jM‚ŠŠ„{ctVwD;‹ƒB]U&&*uIC‹_3>n!5Af‹N4  7+‚9^ d  = rv@!WH[ Q<kS .}'È\%yp)2 Phmb$TG-$D°!ƒK<8ƒCЋ ZFÄ8˜€6Òð¹–y€§€€7þ1ÉÒ…*”˜ƒÂÒFX@€!¥L6 ýáàçÇ…'Bm2Jº(;torrentflux_2.4/html/images/make.gif0000755000004100000410000000120611017132666017707 0ustar www-datawww-dataGIF89aæ„ògƒÅƒzÈh‘´Œõ÷õêíéj˜h=‘9¤~¶o=ƒ=vìX„©~£{…´yÞåÞž¬ÃÔ„­zU”SlÛT,–,íòì¿Ê¿âæâýþý[ÕEBˆ@òõò®Á«úûúÓÚÒ~íbæêæ¼Ç»V½Vž¶ž?¾3TÎE£¼AÃ3…ïiùúùçïæŽªŽÐÙÎeÐ^PœFo¬m\¸H˜¬“@È1]ÅH8¹*yÃy“®“yÖdÓ~¼Ë¼lÌYmçO`Â`œ°œ.¤.7™,¨½§RµRMžMº…TˆTµÇ±µÌµ¹ÉµÂϾM¤MÏÓÏ]ÊV}ƒ¢ƒm´mb§_v¦lüüüÖáÖi³ZßéßPÈ?G¯8ÞâÜ`±R`¾\‹®h½Q/°/OÆ==¡4ªÊ¤ÚÝÙr±geÃVhÆQA¸AlÏW\ªX\ËB¡Ú•ÙâÙeÉK¸Í¸Žós}¨rš±šèñæ›µš Ÿ '¬'.‚./¦'-¯,ùùù0„(}²p‚Ú| ¸ ““ÿÿÿ!ù,。lG>7,,"ƒO6Bt!Ž:ye=JC##r™‚ sr ]ME}v?~ ƒSU$oK$q|jNag0:APZR_{L*!x%.u %&(@Ž53( VWƒ*/Lxi€! 1+VÀáðG `ÆP™u‚ÆŽbœð ÇL¢døcAxA‚DŠdZ úÀ%€’¬ÐÄGF$Ð#ã Ü`qô'wþ´èàAÊ @;torrentflux_2.4/html/images/logout.gif0000755000004100000410000000105211017132666020302 0ustar www-datawww-dataGIF89a æ^ÿÿÿŽ † c _£fg§ t [ ż¹¤ ¡ “ Š ‰ ‡ ~ r p n f ¶ š ‚ w s g ÈlZ$&Äil®fh¬jmÙ¨ª¹"¾!,áÐÑÆ$1Í,;¹)6Ì1BJv!*Û¯´ëáâPÑ:Nh'†-9ä±·¿8KÆ>RDš=L¼@UÓJbH"M%ܶ½ÖOiT*ÖPj]#0ÆOiØZyÊXvÚ`˜E\å¼ÇÛe‡Öc„{:NÛiÞo•…Ia‹Snµvž™eˆº€ª¢s™™m’¨}¦«„ªœ«Æ­Ç_z£§·Î½ÉÛÆÐßÝÐÐ!ù^, ‡€^‚^VUSTQƒƒRMLIDA;2GƒPJEHC;65+)4‚F˜>7/%& ^Q?:90±BO2,+.³0  BN*)'$± @K "±!±#=^ ( ]‚. 1ƒ3-Š‚==xàÀ¡(;torrentflux_2.4/html/images/delete_on.gif0000755000004100000410000000120411017132666020726 0ustar www-datawww-dataGIF89aæâV2ë‰qåb<é‚jÿýý÷ÍÄéRáP-ôĹã8ée¼7ä^=ãZ:æmPçpRåfJèuZô½¯ò¶§ãIäaAßR+º1 ¿.öÊ¿çqUåeGµ¾"âNãJ·2åfGäcE»:ãX6âS0¿'¿+ÿÿÿækNæ`7é}cè^0ó¼®À\>çv[ÞN)áQ%çHÜO,Þ9ó¹¨ÑeHô§‘àO%½0 é~c×>æiLÞT/ä:ÜL(çsXôº¨ó´¡³&ßT1íj:ô¹§ædCÓ.Ý5ãEçNí•~åKåLÓmRç\.¼9ÛG"ÝJ&èz`éz_êgèMõĹê„jê†mâN)øÆ³¸2åiJáFÿüûàI$îg6åM"¾4èrXèu\ë‹sêY$õƸéW$ãB êHåiLçmSænRådDßBã<ñ° ·. è|aö°ô´¡ô¾±ö·¡ÝO+å[5÷¿ª!ù,á€)‚ƒ„…‚8,*_# %\ß÷eVBØð±—l"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ Hˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:ØOHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©™(G$@»`UR,À ¬@".À®€Y¶2G€½vŽX@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù@+Í—¤ã¼è\¨”LÆD *°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9\@úÛÈ 2ŠüмG1”²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V5cX7vÀžaï$‹€ì^„Âl‚GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±XF¬&î!!ž%^'_“H$É’äN !%2I IkHÛH-¤S¤>ÒiœL&ëmÉÞä²€¬ —‘·O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwRPÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘fæqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup@,õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046l18cðÌcèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã§›§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/ >B Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3gAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFšIDATxÚbüþý;)€å×?Æ3'Ž©ÚÊÊŠéão’,``Â*M¬¸R¬z˜°ª~ÏÈý‘C« ~ñŸYx~>¿ûïǸ J(!s6-œ7õç‹û K—.%ÊÓ$‡™ þAi¬êØ%8q& L¡,L, ÿˆÔ°eî|~eÿO’§IMÞ€Ù›-8ºêáYIEND®B`‚torrentflux_2.4/html/images/files/0000755000004100000410000000000011026130122017364 5ustar www-datawww-datatorrentflux_2.4/html/images/files/java.png0000755000004100000410000000222111017132666021032 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<#IDATxÚA¾ÿ¶mýûüÿ ÷îöNa$,2ÜàìôÇÇÔ¸ñî÷¥ýþº îóÿ »ÙA¾ÿÿÿþüýýýH g84;/;&:öú% @è×^ßÍÁZÑÆÉäåàÞ½ãéÿ™ ËÿA¾ÿ¶m a%,#. úñîåÏÎ  ÿøðíâØÝÔÖüÖÔÛÞ‘·ëwA¾ÿŇ/ï8Ulüó÷éïðóõêÇ  òÒÁQg›ÈˆèŠLŸï00¼þÆð“U˜á-³8Ãóo\ ™Ä¥ÅØ%€¤þs00|}ÇÀðô(Ãßg >ˆ2Øðßg0â¸ÀðK@AHÊáе@½ Äô‰áÏû— ßNÕ1p°ÝbàäÿÍÀ/ø™‰ùÖs_žr‰1|—f¨CÿA9Ieã¿Þ.^ÎðèPô($¾CûÉcg†o«M´ßs0¤Šó0<ßçÏðø™ 0&þ1ðºÿâM†÷{ö0<9{”á×»÷ °@,L@³NÜec¸üË‘Á’íÇëovz3ü—Hbùø‡áù£O ß9€qËðóéS†¿@MlÌÌ À4€bùþí7ÃýW¿žÙ82lµufxûðÃ÷Ÿü |œ `faà~üŒýû3`ú`e`gfÛü‹•h Ä A¾ÿ æÛöþ"õúØÕàEî‘H:ÃàêÞìéÞ"ZWýþýýýˆåç†k^†W/0ì9øŽá;Ã_¿þ|ùÌà)üŒÁMQžá<ÃG‘ o­>3Èjë1Hhé2¼þü €¹¹¹¥¤¤Ò€ºXa ”¼Q Žg&¤Ì gyýúõ×÷ïßO0¸„±~ñA‹üIEND®B`‚torrentflux_2.4/html/images/files/rar.png0000755000004100000410000000134411017132666020702 0ustar www-datawww-data‰PNG  IHDR(-SgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<€PLTEeï[»QÛi¸ø’’–Œ¼¹º~RÎÑÓJJI&FY9;:ƒ<*] /´´´ólÓe…H ‘[˜ \CCD¤¦¬A}ªªª>·ÉÝÞÞ±±±—˜›tts'~ *ÁÁÁLLK'½‰´­¯ïô÷—o ŽÁ¾Á` ª>BPQTÁ®3M©ð^²ò_‹kǤ_acxA–——c‘Ì´#‡RÑÔÏ ¦i7e²µ¸··¶>¤ïHHG…‘ Àƒ=Á‘n;îú¿E£íïËíU­ñgghCCi;;Y,@ÓÓÓf !m3§» öùýLObUSòzÊo@ò‡Ññ”Ýâââ †JKf$uPøúýÄÄÄH9\s#m˜Z ±š˜";ÂÂÂKKKÿÿÿP°ÓêIDATxÚb0ª©Ñ (ubee`«4a7ŒLaªúd%† ýJIIvOOG €1¯œ©œ"¦(1ðyÕ³ Ääædñó32ºê2ðq³*ó˜ C€ }ƒš‹u¦”ñ8ê=ª3¤¤ä幸¸Êë\DTK4£˜™-c-¢C4µ9dY¸]+Âl’Ä@ $.jf›/ vΜ âêõÅ>îLLzáþ @ ueß4o! ‘ÉÎj©×µÊ”€€øÄP†à<Õ¸"­Zàöa0Rª]0Á)â`À}7—\ž¹ IEND®B`‚torrentflux_2.4/html/images/files/zip.png0000755000004100000410000000136111017132666020717 0ustar www-datawww-data‰PNG  IHDR(-SgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<€PLTEÿOWÁÁÁPlrÿûœñññÿÙiýýør›£§¦sééé[[8XÙÙÙ¬¬¬°¢›½½½[ÉÉÉþÿÔ4ääã)Rh JJIrÃììì´´´“••ÿ##Db$%'*ÿý)ÓÒÒ(6EªªªMMM #(CBA°°°ÿjpp•º*/:ÿÍ3LLKÿÿØãÒ3T•¨œ—FšÅ4ŠÅ´ÄÄÿ9&ÝÝÝÿÔVCHMÿf"RmfjHP[óóóöN4oJPäÜÛå° ŽŸ•‘·¸·ÆŠJǚǞ'ÿÿ°êíëËÐȶ¦£HHGÿæ7ÿÖ‘él/ÿy?\czy[v;OYÿaHCˆªÿwOøÒÕJ‚Ÿú¼ºÿß;IMV¹’ÿiµŒ9ÿÊTñbc®ÿÏlKt‘)ošx«ÄnÂÂÂKKKÿÿÿ„ñ;÷IDATxÚb­­eZRVfˆ¬wÉu©—QrRPPð‹SQgˆÌÏ2 ggçà0qg2 §ú¦‚@f•¤³:ƒ´0ƒ¶¶]N–uqy°®Ž†>ƒ´¬k=›3kA’¼ªŽFƒ–¬¢‡s…£§BÀ€¹¢TOÏ.à›l)"""¯`àŽò))Љæä“t ”YêŠóðÈqÛ˜Ùؤ¤¤ÜüyäÒÒmż%ÔØ¸¤¸¸DùÄ3⥀*êXXø+™Øyò2³"D-x ZIΙ]INI“!T½ôÁ„„¦ @€H6I\êë÷IEND®B`‚torrentflux_2.4/html/images/files/ac3.png0000755000004100000410000000203611017132666020563 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<°IDATxÚb¬ªª:íááaÌÀÀðÀ 0ÅÀÈÂŒ È€‰‰‰ñÀß[ZZ ˆaÇŽ?þþüùóÿׯ_ÿþü æ_¾|ù¿¼¼ü!€b²ÿAlý ¶ùÓ§Ÿ ïÞ}gøþý/ƒ ÃÖ‹Û„yù-ݾýøÎðãç>>~  '3 ˆ?€Î{Íðîýo.n6 $#Û'ÿ®ÜÇð˜g'ƒƒ²7;7à ü÷ïØÏÄò"Ðe »÷¾ºèƒ¨ƒ‚€"ó[¯®>»ÏÀ/ÀÍpèÝA†6¦ffv°A¾ÿññúñòþ!#õ÷ììÞÛüáßôÙÙýïëü"éÚü=Óf+ 'ŠÆ‹ïïñˆé×Ï@“9¸¸Ø~móŠáÕËÇ ×nex÷öÃí R_m~Hg`gÆ1?/+ÉßK6ët2°Ø}axax—á›ù†+l׿~ÄÀø‰áï¿¿àè óåäùÞxÇpøð]& M¾¼c8ÿàÃùÏþSØOnÁW lÒ, þC(%‚S•’ƒÃõ믆½b0f¶`Èø’ÇpìÍ †ß@KÌ8µâ4bÄÄ$¾ýúÆð÷ï_°!LÌŒ,,,ÀL”ä`çjøÅÀôŸ…!æŸ Ã»Ïoüfàçb``c`øòã '''''(£1˹sç¾[XXpü¦ ©ðêDFfFf0ûó÷'°ä Œ±_ ÀÌÄðùóç_ÄÈÍÍ(%%•TÍ ËX0ÊÊ0¿"‹1Ëëׯ¿¾ÿ~@€«e¬ššäIEND®B`‚torrentflux_2.4/html/images/files/cab.png0000755000004100000410000000136111017132666020642 0ustar www-datawww-data‰PNG  IHDR(-SgAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<€PLTEÿOWÁÁÁPlrÿûœñññÿÙiýýør›£§¦sééé[[8XÙÙÙ¬¬¬°¢›½½½[ÉÉÉþÿÔ4ääã)Rh JJIrÃììì´´´“••ÿ##Db$%'*ÿý)ÓÒÒ(6EªªªMMM #(CBA°°°ÿjpp•º*/:ÿÍ3LLKÿÿØãÒ3T•¨œ—FšÅ4ŠÅ´ÄÄÿ9&ÝÝÝÿÔVCHMÿf"RmfjHP[óóóöN4oJPäÜÛå° ŽŸ•‘·¸·ÆŠJǚǞ'ÿÿ°êíëËÐȶ¦£HHGÿæ7ÿÖ‘él/ÿy?\czy[v;OYÿaHCˆªÿwOøÒÕJ‚Ÿú¼ºÿß;IMV¹’ÿiµŒ9ÿÊTñbc®ÿÏlKt‘)ošx«ÄnÂÂÂKKKÿÿÿ„ñ;÷IDATxÚb­­eZRVfˆ¬wÉu©—QrRPPð‹SQgˆÌÏ2 ggçà0qg2 §ú¦‚@f•¤³:ƒ´0ƒ¶¶]N–uqy°®Ž†>ƒ´¬k=›3kA’¼ªŽFƒ–¬¢‡s…£§BÀ€¹¢TOÏ.à›l)"""¯`àŽò))Љæä“t ”YêŠóðÈqÛ˜Ùؤ¤¤ÜüyäÒÒmż%ÔØ¸¤¸¸DùÄ3⥀*êXXø+™Øyò2³"D-x ZIΙ]INI“!T½ôÁ„„¦ @€H6I\êë÷IEND®B`‚torrentflux_2.4/html/images/files/nfo.png0000755000004100000410000000167411017132666020706 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<NIDATxÚb¬ªª:íááaÌÀÀðÐ### Ÿ‰‰‰ñÀß[ZZ ˆaÇŽ?þãÿþÿû÷÷ÿŸ?þÿúõëÿÏŸ?Á¢—/_þ/// €XþÈd  J0ýíço†ß¿ÿ2€ÀÉtÉF†¯?ÿÕýeàå娺 €X ú@4+#Ëwß]ÿÆp÷53ÃçŸL Œÿþ0ˆrÿfpÕaeP“bcøôâ-zKnHóõG_þÎðƒY€A›ƒAUŠáùû ×_üf8ví-CœíWCn Æ0ˆ nï?~g˜·ï ó?" Ÿþq1üedb°RgbàæÚÆÂÊÀÈ)ÆÐ»þÕ»_8Øà.`   þ‚ 8wë3ù§ ¿yÙ@ñÁÀôû†óÿ.<üÏðäí?&†Û¯¸6yÅ`¬'ÊðŸb3@±üƒ:áí‡? ÷_ñ0<~üˆB Œ ^, _üaXyé'Ã?†ï2Üÿ qFH¼3 0–Àp0þaøùåßß\ ß~3\¹Å ,f†ßß¾úÃðã7×/ þbØ»ÿ9ƒ°4ƒ¶¸4ãmîÇR ,w¥¤~H3È+ó39þ†áÅ‹o ¬¬Œ`Í @,0ÆåËïEy$8زÌX|¾}daàæýà -ÁÉ (¦ÉpàÙG†3g1(+‰À   þ3üúõ›áý‡ß ZR Ÿ00p1‰3H33|dúÀÀÃÈÇ ÄÌÆðð9Ÿ Ã[Þ¾ûÊÀÌ N8 Ä"~ý&p&&†WoÞ|yÍpóÉI†×Ÿ5ÿþÃÀÀÎÎŒ>F†¯_‚ÒØ€Ç;P×ÿ¿ Ÿ>ýe`caeàçg`øõU„AƒÕšá#'0,™@1б œœÌ ¯_Cb €Xþþý a!f†›—ß08:È0pq10ðð°2ºÉ`j*ÄŠ8XJ fffFFFf>>gN†3g^1ìÝsü <|l ß¾ýbx ¶÷ a! ¼¼¼ ,,ì@op252˹sç¾[XXp€b‚‘ñ?ƒ¢â †/ /_¾døð(ÆôŸAE‘AJŠ[¿ž={ 6˜™>þü €¹¹¹¥¤¤Ò€ÞaeDpÀ°0Ã… ìD -`'ƒü ã1Ëëׯ¿¾ÿ~@€ÙB¦¸`óVIEND®B`‚torrentflux_2.4/html/images/files/mpg.png0000755000004100000410000000137711017132666020707 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<‘IDATxÚb¬ªª:íááaÌÀÀðÐ###œ ’gbbb`ggg1¼{÷Ž››‡ABB,’Àòガ ÷ ýÏg„‰™ sÆ8·ú½þ"r@Ó½ÉLª wg-'"03T•9Çqú>ÿnÀû÷ï^¿~ÍðáÃ'†[·n|ÏpåÊQ†ÏŸ?2èèè0¨««1())2üùóî€bÐѣǶoß t"/Ãׯ_455ôõõ€þdàgàááa`ccÛüë×/¸ÄN°$;; ƒ°° //7ëW/~üøÁðöí; Ÿè' **Ê@o„‚½ Ä‹:IIq++K##3†ïß¿Mÿùó''П@š“AQñ Ы¯rÿ`aÀ@ð0bPSÓúQ ÿáq P Š™?¾3œ?šd'ÌåwH!ȹ_¾|'d2ä2Htÿƒ‡@Á]¢ALˆÁÿÐ%H1Hîï_DÚ€‚»€‰‰˜PÞ‚ãdP T##Üß¾}{ä˜>€b™ ,11a`:xÉÀµå?Ô%[ÿþà --N#°@ `t0‚LųµµTâÔÉÿàÞ±a–ÒÈ%LÄrîÜ¹ïæææ°¼ –1///ÃåË—)ôó/€bäææN”’’Jªee>ô¬Œ 1 f&û¯ïß¿Ÿ` ¼¿Õêõ¹ IEND®B`‚torrentflux_2.4/html/images/files/rm.png0000755000004100000410000000163411017132666020536 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<.IDATxÚb¬ªª:íááaÌÀÀðÐ### Ÿ‰‰‰ñÀß[ZZ ˆaÇŽ?þãÿþýûÿ÷ïßÿþüùÿëׯÿ?þ‹_¾|ù¿¼¼ü!€ŽA Ã:æ±ÿªjµÛ!ÐC(TÏP33ŒKtOËæöQ;$Û¯â/€X úÁllL Ÿ¾üb8sã+Ó×@ ¸9™”ÅôXØ>y‹ ¬ä€‚ôÑ ïVüÆ %%È +ÉÁð(uæÙw†u—ÿ1ÈqþcHsúYöf@1ÁîÌÕ÷ ö|fvgˆµþÊ )ñ˜A”áç£% jŠ/nó3”¯bfxüì7;+Ü€‚ðŸaå¡ .VÒ ÚâïvïÚËððò]iVF Y†'o2ˆK30<ãàeØvú/ã_ ˆÅÄ1àûOÿZö²1ìºþÁ[T”!ØÛ†™›áãÏ? OÏýgàûÈ f†Oßÿ÷ÿ?ˆÄò÷/( ˜|MØ–ÌÅpõ¹0Ã3Ák ‡ïíeЕåa`ýñ‚á×M†¯?8?}d0ÓüÅð¨¤d9@] D+!†þ÷¯Úÿe8üÓ™áÜg¯¸^}fÓf`af``þÍ .ËŒH€@½L( ßÿgÈða°Pûİã"0ÐÞ±0üøÏÂÀ¯aÊðë'#ÃÓg_®|âfØ|úC–ì°·Azˆ ¿€ÆþÆ»–ƒŽ"ÐÀ¿€bÿXY˜~ýúËpóц“w™Ä~3üø J÷¤ @,°è€ÐŒ Ÿ~CÙÀpa¦{!À”à¥Â «2è²_ÿá) €X˜i—………‹‹‹æTC!4(¬ÿ€æ¿@µœ œœœ ŒÆ@,çÎûnaaÁñû÷opXÀ `€dO >3031|þüù@1rss'JII¥åYÿâ)+£gq³¼~ýúëû÷ï'z€Åв¥}ëIEND®B`‚torrentflux_2.4/html/images/files/txt.png0000755000004100000410000000120311017132666020727 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDATxÚb¬ªª:íááaÌÀÀðŸ`ddc666Æ|oii) †;vüøÿþýûÿû÷oüãÇÿ¿~ý³?þüÿÇÿß¾} V{ùòåÿòòò‡ð4Æ(À0t(äÿϪ2Šwúêv=ßK$HêffsXØÉíš¿N9 0 ©S–üÿ“!½­qñÅcaÌ º±Uµœ™ I[rfÿ_xà>rذà«W¯ÀŠ@6ø ä ƒÀ@,°âââb••KÀ‚€0ˆýíÛ70 2Y €X@ Ó€6@N±AâÌÌÌ`1X˜€\ÂÏÏ€b‚ÙÒS s̯ RÒ òÌU @LÈN†(, `! sÌ0@4@±À8 ²¤@ÑÒˆì˜Á°@€‡HÈy FXTÁb„Alz  ̉ÀT6¤$JTè1 5°p€‚§˜b˜ó@6ü s ÌU 1˜7@zˆ(È Yqqq”ÀaÂïß¿ÃÃdH='''ÈP&€b9wîÜw dͰ¨‰Áä`þ`fåŸ_ÄLû‰RRRi@1VXÆBξÈ4Ì` Ÿåõë×_ùe@€•^´À¨¯ÏIEND®B`‚torrentflux_2.4/html/images/files/wmv.png0000755000004100000410000000137711017132666020735 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<‘IDATxÚb¬ªª:íááaÌÀÀðÐ###œ ’gbbb`ggg1¼{÷Ž››‡ABB,’Àòガ ÷ ýÏg„‰™ sÆ8·ú½þ"r@Ó½ÉLª wg-'"03T•9Çqú>ÿnÀû÷ï^¿~ÍðáÃ'†[·n|ÏpåÊQ†ÏŸ?2èèè0¨««1())2üùóî€bÐѣǶoß t"/Ãׯ_455ôõõ€þdàgàááa`ccÛüë×/¸ÄN°$;; ƒ°° //7ëW/~üøÁðöí; Ÿè' **Ê@o„‚½ Ä‹:IIq++K##3†ïß¿Mÿùó''П@š“AQñ Ы¯rÿ`aÀ@ð0bPSÓúQ ÿáq P Š™?¾3œ?šd'ÌåwH!ȹ_¾|'d2ä2Htÿƒ‡@Á]¢ALˆÁÿÐ%H1Hîï_DÚ€‚»€‰‰˜PÞ‚ãdP T##Üß¾}{ä˜>€b™ ,11a`:xÉÀµå?Ô%[ÿþà --N#°@ `t0‚LųµµTâÔÉÿàÞ±a–ÒÈ%LÄrîÜ¹ïæææ°¼ –1///ÃåË—)ôó/€bäææN”’’Jªee>ô¬Œ 1 f&û¯ïß¿Ÿ` ¼¿Õêõ¹ IEND®B`‚torrentflux_2.4/html/images/files/cue.png0000755000004100000410000000202611017132666020670 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¨IDATxÚb¬ªª:íááaÌÀÀð@#~øü…Ÿ‡›‰™‰áï¿@°ã¾·´´ÃŽ;~üGÿþüÿìÊÅÿËoû¿ÿüéÿ?ü‹ÿþýûÿÏŸ?ÁìË—/ÿ———?@Lÿ€h0ß?þýýËðáËg†µ'v0\þ~AH—‘á1Ë]†ÕG¶2¼xõšáç÷Ÿ ?~dVr-@1Aõ3°0³0|ùú¡fMæ¯ëX”2<þñˆá“ä+†}¼ÛJÖ70þbØ»ÿ9ƒ°4ƒ¶¸4ãmîÇR ,w¥¤~H3È+ó39þ†áÅ‹o ¬¬Œ`Í @,0ÆåËïEy$8زÌX|¾}daàæýà -ÁÉ (¦ÉpàÙG†3g1(+‰À   þ3üúõ›áý‡ß ZR Ÿ00p1‰3H33|dúÀÀÃÈÇ ÄÌÆðð9Ÿ Ã[Þ¾ûÊÀÌ N8 Ä"~ý&p&&†WoÞ|yÍpóÉI†×Ÿ5ÿþÃÀÀÎÎŒ>F†¯_‚ÒØ€Ç;P×ÿ¿ Ÿ>ýe`caeàçg`øõU„AƒÕšá#'0,™@1б œœÌ ¯_Cb €Xþþý a!f†›—ß08:È0pq10ðð°2ºÉ`j*ÄŠ8XJ fffFFFf>>gN†3g^1ìÝsü <|l ß¾ýbx ¶÷ a! ¼¼¼ ,,ì@op252˹sç¾[XXp€b‚‘ñ?ƒ¢â †/ /_¾døð(ÆôŸAE‘AJŠ[¿ž={ 6˜™>þü €¹¹¹¥¤¤Ò€ÞaeDpÀ°0Ã… ìD -`'ƒü ã1Ëëׯ¿¾ÿ~@€ÙB¦¸`óVIEND®B`‚torrentflux_2.4/html/images/files/mpeg.png0000755000004100000410000000137711017132666021054 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<‘IDATxÚb¬ªª:íááaÌÀÀðÐ###œ ’gbbb`ggg1¼{÷Ž››‡ABB,’Àòガ ÷ ýÏg„‰™ sÆ8·ú½þ"r@Ó½ÉLª wg-'"03T•9Çqú>ÿnÀû÷ï^¿~ÍðáÃ'†[·n|ÏpåÊQ†ÏŸ?2èèè0¨««1())2üùóî€bÐѣǶoß t"/Ãׯ_455ôõõ€þdàgàááa`ccÛüë×/¸ÄN°$;; ƒ°° //7ëW/~üøÁðöí; Ÿè' **Ê@o„‚½ Ä‹:IIq++K##3†ïß¿Mÿùó''П@š“AQñ Ы¯rÿ`aÀ@ð0bPSÓúQ ÿáq P Š™?¾3œ?šd'ÌåwH!ȹ_¾|'d2ä2Htÿƒ‡@Á]¢ALˆÁÿÐ%H1Hîï_DÚ€‚»€‰‰˜PÞ‚ãdP T##Üß¾}{ä˜>€b™ ,11a`:xÉÀµå?Ô%[ÿþà --N#°@ `t0‚LųµµTâÔÉÿàÞ±a–ÒÈ%LÄrîÜ¹ïæææ°¼ –1///ÃåË—)ôó/€bäææN”’’Jªee>ô¬Œ 1 f&û¯ïß¿Ÿ` ¼¿Õêõ¹ IEND®B`‚torrentflux_2.4/html/images/files/midi.png0000755000004100000410000000141311017132666021035 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IDATxÚb¬ªª:íááaÌÀÀðÐ### Ÿ‰‰‰ñÀß[ZZ ˆaÇŽ?þãÿþýûÿ÷ï_0þóçÏÿ_¿~1\ºt鿼¼ü!€b*ú2DlÑ r : ¿ÿfàææ†‹ Ðt˜@[À4È™0 ß¿gààà`€y……lH-È%Äâüüù“aéÒ¥ çÎckJJJ ·oßòáÆ¸¸8¸%Ä2ñÑ£G ÷ïßgxùò%XÓãÇÁlöòòËúô ¬æÊåË oÞ¼»d@±ÀüÂËË 4]ŸAVVìL&&FVV6QQ1UUU~~>Pœ0pqó0À¼ 6€d£¨ È (ôßo†ÿÿþƒý÷ïo 7QÇäs‚]…°Ä"@&2331¸¸º]ÂÍðãç/ ]@ÈtCppØ5Ÿ>b˜3{60*Á¶ƒôÄ @üéý ¦ï˜ÿÿe`g‚9ñ?×8€^bfúÿÊðåÓ[ í@@c €X@¦ÉË+0ˆˆˆ1̘>èÔ½`¬H€íûo`uÂ"" ïÞ½@àtÀÍÍÅŸ˜Áðùóxüƒ1(QüûBƒ ââäd`ea†{ €ÀaJ¿~ýdàädÛ Oyÿ l(4…þþý fìp5ÄÂÌÌÌŠ6...xjÖœalf ‹99¹€˜ä-&€b¦¾ï 4Žœ¬a¡ŒÎ‡å‡ËÀõùóç_Ä̉RRRi@yVPDÏÊèY$Ä,¯_¿þúþýûIf¼Äc{m€IEND®B`‚torrentflux_2.4/html/images/files/c.png0000755000004100000410000000147511017132666020345 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÏIDATxÚb¬ªª:íááaÌÈÈøÿß¿ è(ŽÂgbbb`cccP#XHÄy $û@, H#HðãÇo`Mì ¯_*øfùòhÜVV°üß¿ÿà† ˆøýûÃû÷ŸÀ¦sss]Ä4”¨ì’ÿ˜ÀŠýú 6¦„ˆ¤àË—Ÿ Ÿ?càåå»äë×ï@rAÿ® ×Àb €XþþýTÌ @†Ÿ?ÿ ût3ÐÀ¯`… ðùþý'fÎ6Ù€z¨ñ7ÿÀ’\\ìИøôë_° q…ÍIEND®B`‚torrentflux_2.4/html/images/files/vob.png0000755000004100000410000000137711017132666020712 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<‘IDATxÚb¬ªª:íááaÌÀÀðÐ###œ ’gbbb`ggg1¼{÷Ž››‡ABB,’Àòガ ÷ ýÏg„‰™ sÆ8·ú½þ"r@Ó½ÉLª wg-'"03T•9Çqú>ÿnÀû÷ï^¿~ÍðáÃ'†[·n|ÏpåÊQ†ÏŸ?2èèè0¨««1())2üùóî€bÐѣǶoß t"/Ãׯ_455ôõõ€þdàgàááa`ccÛüë×/¸ÄN°$;; ƒ°° //7ëW/~üøÁðöí; Ÿè' **Ê@o„‚½ Ä‹:IIq++K##3†ïß¿Mÿùó''П@š“AQñ Ы¯rÿ`aÀ@ð0bPSÓúQ ÿáq P Š™?¾3œ?šd'ÌåwH!ȹ_¾|'d2ä2Htÿƒ‡@Á]¢ALˆÁÿÐ%H1Hîï_DÚ€‚»€‰‰˜PÞ‚ãdP T##Üß¾}{ä˜>€b™ ,11a`:xÉÀµå?Ô%[ÿþà --N#°@ `t0‚LųµµTâÔÉÿàÞ±a–ÒÈ%LÄrîÜ¹ïæææ°¼ –1///ÃåË—)ôó/€bäææN”’’Jªee>ô¬Œ 1 f&û¯ïß¿Ÿ` ¼¿Õêõ¹ IEND®B`‚torrentflux_2.4/html/images/files/jar.png0000755000004100000410000000222111017132666020665 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<#IDATxÚA¾ÿ¶mýûüÿ ÷îöNa$,2ÜàìôÇÇÔ¸ñî÷¥ýþº îóÿ »ÙA¾ÿÿÿþüýýýH g84;/;&:öú% @è×^ßÍÁZÑÆÉäåàÞ½ãéÿ™ ËÿA¾ÿ¶m a%,#. úñîåÏÎ  ÿøðíâØÝÔÖüÖÔÛÞ‘·ëwA¾ÿŇ/ï8Ulüó÷éïðóõêÇ  òÒÁQg›ÈˆèŠLŸï00¼þÆð“U˜á-³8Ãóo\ ™Ä¥ÅØ%€¤þs00|}ÇÀðô(Ãßg >>>V&&f1(ÑÐÐtëQUU=žŸŸÿYOOïPœ €XÀÿÿ ÿþeøóç7ˆ« °µµufddÒ677 cY´h ƒŠŠ:Ãw /]º¤ @Œ0ÍÊÊJ²Ïž=óæããwrw÷0—“““|òä kyyáC6mÚÀ ¥¥÷íÚ•??~ü ¨åèïß¿êˆQZZºODDÄMWWO)--ƒsÓ¦@”ÄĤš›€Þaÿùòåó×=8Ô´ˆñY˜ÅĘ™™ýÅÌÌ‚{ýú5 zzÆ ›7¯ÿsëÖÿþ»ýë×Ï“@5;€ø¿â C1|A¾ÿÙÙÙÝ !.òòì!!!221'ÞÞß%!!]ùùûççé))&ããä ¡¡ •ˆYJJ2ÎÞÞAöçÏŸ ))© aâä`eKOKå|òô)—¶¶.§“³ ÇÃ÷ØýýýÙaÃþãÇw6 ¶;w²óË—/rrrz§¤¤°üùóŸAFFŠá?›ÃÝÇ_¬ŒµÄD„XÙ8¬ÂÀÊÊÎ ,,Ê ¡¡ÁpäÈa w7 –_¿~­`aaé011’þúõ7+#ÃOÖ —Ÿÿ`xÁÈΠ-Π(ÁÉ🅃áë÷Ÿ  hãáag¸té<(Ê_(ð0#úׯ @À á×o?ný`¸ñaË× f¢< xxy8~Õqq±3üû÷˜ð™ˆ’€þ3üþýhÀfÖ ßþaØ{ë/3/0¥ÜùÁ°øÜ}†7v]a ºÿ@Ûÿƒ£ €˜`)ð÷ï?ÀÄ@C~ÿþÇÀ Œ(>†_?0~{Á`-õƒA€›‰áÛß`uÿþý@`€8 ÛA˜‘ñ/ÿÿ%ÿ3üûþŒÁ„ñƒ¿5;ƒ¦¢8÷¿Ì _¿ýb`çøtÁ?pÞ °¬¬À¨ãäšü— è&®¿ 2Ïž2¸*±2è+È10³³3|:›‘ù3+;;³ƒÒ!@ øóöí[†›7¯1|ûö ,@/¸ˆýfàcâd¸~ïÜ6àããe¸uë6Pí¿_fâââ*¦¼Àÿ f&FP]„ªšúÁ¡ÿ¾|ùÜ`÷9]¤ÐÊÖÚIEND®B`‚torrentflux_2.4/html/images/files/wma.png0000755000004100000410000000161611017132666020704 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< IDATxÚb¬ªª:íááaÌÀÀðþÌLL Œ@úï¿ ŒŒ 0娨Ø8ð½¥¥¥ €vìØñã?xûáãÿ÷ï¿€Ùÿþýûÿ÷ïßÿþüùÿëׯÿ?þ‹_¾|ù¿¼¼ü!€b*ø2¨€( ¶e×ÅC © Kî>~ÌÀø—‘áû·o Ÿ>}bøüù3˜þñãX=ÈÅÄÕÏ¢A ÿ3è*¨3p˳0,»¼Žaçùà ¬ l œly¨7 êÿ†?ÿbægPãVaÔäb8ñõÃÄC³Þ½ÿÄÀÅÎ —P R@L°À ÿù÷—A€—A˜C€aÖ® ?>üc8ÿçCåáF†§¯_1p²°£@LÀBqÁ? r †: ŒÿŒ…M Õ n¾¿Í0áð4æÌàX‚y €˜` °f¨!þþaPRfça8ÿé,ƒ©šC­a)ÿOÞ}ÿŒbF˜×ˆæt˜' 'Ãï߀¶31èòk3y|Œáñ“' ŽšÖ ²Ú ÿÿ1üüó îe€bÙ Â\¬\ ç^fØûx?#Û?†{?n0¼bzÊpëÍ]K^S†ß~½ùn!@±À¼ÀÁÌÁpüþI†Åg1D1ðóp1pþ»ÅÀp“áô“Ó ÆR†`¯Áà JÄ bÎÁG¾Š_axÅ/ÎpùÓ†,oþýùÊðäÓCX`Ã\ ³ €X`QòçßO;†Ã—·0Ì|½çì ß>33p¿QfÈÐ f¿ ~þG!È@!ÄÂÌÌÌÈÂÊÂð“õƒ­ºÃ$þÅ »îîbxÿã ƒ¢€*ƒƒƒ¨€ ןŸ888À999Á˜Ñ˜ˆåܹsß-,,8€hò_.†`…@°·ÿ3üøùáþ“(Îÿýû703òÆ/€bäææN”’’Jʳ‚2ÊÞ@Ìòúõë¯ïß¿Ÿ`¹¿ÜyëÞáIEND®B`‚torrentflux_2.4/html/images/files/index.html0000755000004100000410000000001511017132666021377 0ustar www-datawww-datatorrentflux_2.4/html/images/files/html.png0000755000004100000410000000166711017132666021072 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<IIDATxÚb¬ªª:íááaÌÀÀðÐ### Ÿ‰‰‰ñÀß[ZZ ˆaÇŽ?þãÿþþÿû÷ïÿ?þüÿõë×ÿŸ?‚…/_¾ü_^^þ@Ç „au»øÿ¯uÖžr¡Z3–GñHCÐxžˆÈå«‚ì‚G­cfëóñ@,Pý ÿþc`ef`øÔxóùO†_ÿ1°³21üüõ‡ƒùƒª8 ÷Ÿ@o½Òr @Á `eþÏðñÛ_†W¿1ó±3è+r30 |ÿõÃã·v\ûÂ`«üŸAˆ›áßß0ˆ 8ËN}`x÷‹Á\•—Ÿ“áù»¯ ï>ÿ`àüÃpóÅ;†Y{Ÿ½õ…é?Ü€bØ€'o2l=óˆAMCáâ{†+§.0\¹v‹™•ááó÷ ‡ÏÝe•cð3ð`°æc€Å@±üƒ2¾übbxxû.ÑCÇÞ| bSf¸òé9ñ}‡þ2°0h™š1H ñ3<ýèˆ @ €XþÿƒÀÉÊÀÀÇ+ÈÀüúÃûoÿ¹øä ­nßýÄ ª¡È ­ ÏðïíK~n&†ß@Wü@,Àˆ¥! Þÿ ž–ª zfF ÚZ o?30ð‹ð1DE{1ÈJð0|ýð™áÓÏ_ RB\ À.€X @, S€é„ hH´• þ{ÀxgøÅÀÏÇÆÀÂÌÄÀ§ÀÏð÷×o†WïÞ2Øp3òr£ö/Èb^€b(áücàgfpWùÁpöþS†‹O˜>ÿdbâÿÍ Åõ•ÁH”‰A^ЬŽê| ˜_þýû L$Œ <œ, œ úÒ?>ýÉÀ Œ2^>V üP¬A\ ¡ˆ…™™™‘…˜Ê¸¸  fdøÇ ÉÉÅ Røýçà°FNNN0f4&€b9wîÜw Žß¿3ÀÒ8ŠþƒÐ°¡0çÂØ µÀÌÄðùóç_ÄÈÍÍ(%%•JÍÿ!Q‚’•ѳ8H ˆY^¿~ýõýû÷“ ® ¾J^ØTIEND®B`‚torrentflux_2.4/html/images/files/mp3.png0000755000004100000410000000161611017132666020617 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< IDATxÚb¬ªª:íááaÌÀÀðþÌLL Œ@úï¿ ŒŒ 0娨Ø8ð½¥¥¥ €vìØñã?xûáãÿ÷ï¿€Ùÿþýûÿ÷ïßÿþüùÿëׯÿ?þ‹_¾|ù¿¼¼ü!€b*ø2¨€( ¶e×ÅC © Kî>~ÌÀø—‘áû·o Ÿ>}bøüù3˜þñãX=ÈÅÄÕÏ¢A ÿ3è*¨3p˳0,»¼Žaçùà ¬ l œly¨7 êÿ†?ÿbægPãVaÔäb8ñõÃÄC³Þ½ÿÄÀÅÎ —P R@L°À ÿù÷—A€—A˜C€aÖ® ?>üc8ÿçCåáF†§¯_1p²°£@LÀBqÁ? r †: ŒÿŒ…M Õ n¾¿Í0áð4æÌàX‚y €˜` °f¨!þþaPRfça8ÿé,ƒ©šC­a)ÿOÞ}ÿŒbF˜×ˆæt˜' 'Ãï߀¶31èòk3y|Œáñ“' ŽšÖ ²Ú ÿÿ1üüó îe€bÙ Â\¬\ ç^fØûx?#Û?†{?n0¼bzÊpëÍ]K^S†ß~½ùn!@±À¼ÀÁÌÁpüþI†Åg1D1ðóp1pþ»ÅÀp“áô“Ó ÆR†`¯Áà JÄ bÎÁG¾Š_axÅ/ÎpùÓ†,oþýùÊðäÓCX`Ã\ ³ €X`QòçßO;†Ã—·0Ì|½çì ß>33p¿QfÈÐ f¿ ~þG!È@!ÄÂÌÌÌÈÂÊÂð“õƒ­ºÃ$þÅ »îîbxÿã ƒ¢€*ƒƒƒ¨€ ןŸ888À999Á˜Ñ˜ˆåܹsß-,,8€hò_.†`…@°·ÿ3üøùáþ“(Îÿýû703òÆ/€bäææN”’’Jʳ‚2ÊÞ@Ìòúõë¯ïß¿Ÿ`¹¿ÜyëÞáIEND®B`‚torrentflux_2.4/html/images/files/gz.png0000755000004100000410000000214611017132666020537 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<øIDATxÚA¾ÿ²hÿýüü÷ýÿQ "Y#*-ØÚæíÝÒÖ¹þ÷§ØèÁ üþ«ÑA¾ÿÿÿþýüý] \%06/>#5úþ'TòâÔcÞÍÂ^ÈËäæáß»äêÿŸ ÈÿA¾ÿµn –!R'.$.ÿýøñðêØÕ  þûòîâÚÞÕÓüÔÒÝÛµêwˆñÂtÇ¿zÞ‰LŒ ÿ|`øûí-ÃߟþýºìÑ=1)&F&vNq –d``gfx{n7CHƼãÄÂÌøÿãÛkL ß¿20rð2°K300|úKAˆÙDþ³…Þ20<9”{ÆÀðõ)Ãïÿ LÄò—™›K(ðžáÅ%†ß_˜Ùx€š„€âÀÐz~žáÛS†Ÿø€ñò3üdäføÿé?@ à*zú# Pás†OO€†c`PöŠÙ,@Àf 0Ü>ñáÁ¹Û âÜ ,Àp ¦¿Ì<Û@®àa a|²@ @ÛY€Ñ#ÄÇpóâ†ó{>2üdåcxþð7Ëûßø5¤þüf` –,ÜM<Ÿþüôßýû'¿ ÃÅýnìÍ é¬ÂÀ¥"Í ¢ýOAŠCF‚áÏÏ Äò÷?пÌ@›¹€þû 3 ¾|be¸~ô-ƒYŒùM·µäN̽À "' l&6€bù÷¨˜â…@'35ÿºßxÞ¿øÆpïì+†Ÿßþ3üúÍ dÆ d«Ãð‹ñ'Б;ˆ…• ¬@ÿmúh ñß¿ ür¢ 6V O.>fp,÷a2QbPv†ƒë»ýÏ@Ì’ì¿29˜ñˆŠ0°ðJ10Ó3п®aåa·gPu1dà•’jäþ“áéå û×dØqøöm€b4‘å¾ûòG¶µ®Œ¿››½ª“§+«š¾&+ç/ «€^c&š_Þ>xÉpjßE†ý{/üÙôÖ³›Ï¾úúa*@1š+ò2œ»ÿ™èk`*°WbŠ40Ðñôu7•2µ³`yóòÃöÇÿ8zëÍ•;ï~üǰ¨t3y €,”x¸€áÈ Ä °d sI°3)‹ò¬çbÙäDZ`¶`Hì΃²IEND®B`‚torrentflux_2.4/html/images/files/sh.png0000755000004100000410000000146711017132666020536 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÉIDATxÚb¬ªª:íááaÌÀÀðÐ### Ÿ‰‰‰ñÀß[ZZ ˆaÇŽ?þãÿþýûÿ÷ï_0þýû÷ÿ_¿~Å/_¾ü_^^þ@±üc€XÏsH¨Jÿ‡Ó4Ð n.†?þ€ÅˆªŸáÖÍ› ¯^(f®\¹Âðùóç_Ä4-h{Pžõ?,d²2z‡&o–ׯ_ÆÐ$€52£S @©ûIEND®B`‚torrentflux_2.4/html/images/files/doc.png0000755000004100000410000000152711017132666020666 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<éIDATxÚb¬ªª:íááaÌÀÀðÿß¿ 0ÀÈȈBÃã¾·´´ÃŽ;~üÇþþý Æþüùÿëׯÿ?þ‹_¾|ù¿¼¼ü!€b²ÁÖÞ¹s‡áĉ _¿~eg––f””d‹Õ1€\Â<<< @ÁbÄ4ì´7oÞ0,_¾œaÛ¶m œœœ ¾~¾ :º† i© ¼ _¾|EñÈ Kˆ æo^^^†¨¨(†ïß¿3ìߘáýËë Û6Ífxùê  +LÜ% 6@¼6@AAáýû÷ ¡a ÿ¾=g03b0Ñc8u⃉Mƒ° ÃÿÁš`†€h€b‚ °³³3¨kh1ˆ ó3Ô&+1Ø«¼ex|ñ8ƒ©ø+†¿/O0|ÿÃŽ—ašA €X@Ä?øøxôôt.žò``ù~—!!?€ADê'ÃåM- 7¿ýcPµ g`üóî d'ýüñAFV‘AF1‡áÓ«G _žgQÖa±‰d¸´¾žáÐR%?°F˜>€b‚9f0®~}ûÈÀÁ'Êðí+Ãë‹ ž¾üË ¤fÎðóÑL†§ï102³ÕBb €˜`~A6âÏ? ürÆ Oî~dþ´ALÉŽQPáû—— -ÿþAÔ<Ññßß?¸¸Ù òžþfxpûÃÙKïn^»ÂÀÈ€Hòijd+(0‘£èÏŸï <| ²F ?¾~d}ÃÏðý7È›?ájˆ…™™™‘………‹‹‹Ý;°Ãðÿ'0¡ñ0¸D5ÿ``caG;ÐB&€b9wîÜw Žß¿3À’5,Š „ðAø8Õ3ÃçÏŸ#77w¢””TPž–±³4Ìd1 fyýúõW`Ê`b€Ùý‰»C`IEND®B`‚torrentflux_2.4/html/images/files/log.png0000755000004100000410000000146411017132666020702 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÆIDATxÚb¬ªª:íááaÌÀÀðÐ### Ÿ‰‰‰ñÀß[ZZ ˆaÇŽ?þãÿþýûÿ÷ïßÿþüùÿëׯÿ?þ‹_¾|ù¿¼¼ü!€b*ø2¨€Ä¹DÃØ` â333þüüÉÀÃË V’ ¨~¸Føá?Èß¿Ch AL@ªþ?@1!ðïï_†@?þgaØ 5”‘ƒƒáëªU ï7mbøÏÅÅðêJ@1Á,;¨ñß«W Ÿ>eøÔôŸ••düßwï¾ÿøÁðëõk†ß@9:¨Ä ˆPçýÜ¿Ÿáóöí`CþÞ¾ 6è÷ Œ** ¼66 _Ož„¸êM€b‚GÐÔ¿÷î1|æáa`UWgøÙÛËðy˰s cc`×Òbø tÅw :z^€bù´õßË— ?öìaøt&“µ5‡„çgÏ þ?Îð €l’’ ÿØØØ54¾]ºÄðGVœFˆ‰è…?2üaø/#ÃÀ ´éP‚#2’ä’­[þðó3°0üùü™U[›C_Ÿá/(V€Ëßß¿Ø8¥¥Á&þÆóß_¿þýÉ(%ÅðÈfºÿ@qô-ˆ h ÄŽ& 7þƒ4º hÈÉL ìÜÜ ÿ¿~E$2 %°° –Дöh:Èÿ‘â$Ç,$ÄðèJPlÁR(HÄ© fffF`ˆrÌTä$ NPÐhñA999Áh!@±œ;wî»……Ço¨-0`‰  µÀÌÄðùóç_ÄÈÍÍ(%%•”ge>ô¬ŒžÅAb@Ìòúõë¯ïß¿Ÿ`êÖ!¶+ZIEND®B`‚torrentflux_2.4/html/images/files/man.png0000755000004100000410000000167311017132666020676 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<MIDATxÚb¬ªª:íááaÌÀÀðÿß¿ ÀÈÈÈÈl`bbb`ccc& øßÿ^}üÈðîã.V>>>†¿ÿ‚õ ˆ?b¸~ç67 3ý³G> ò1ˆòð2|ùñáá«× ¼2J ˜Ø>úÄ`aiɲä€b™ÏÞ¾e`ùú‰kÕ #Ee™ªfnÛ$/`x4yÃÿàp†—Ââ ?ýd€¹ €à 0¼Ù~ŽAñÆ]ám^Ê)3<36dzþ‚A¬{"ƒÔ×/ ¥3G0°²q0üùól@1ÁBžëýkm''¥UkÞ¸;1\P#XHÄy $û@, H#HðãÇo`Mì ¯_*øfùòhÜVV°üß¿ÿà† ˆøýûÃû÷ŸÀ¦sss]Ä4”¨ì’ÿ˜ÀŠýú 6¦„ˆ¤àË—Ÿ Ÿ?càåå»äë×ï@rAÿ® ×Àb €XþþýTÌ @†Ÿ?ÿ ût3ÐÀ¯`… ðùþý'fÎ6Ù€z¨ñ7ÿÀ’\\ìИøôë_° q…ÍIEND®B`‚torrentflux_2.4/html/images/files/xls.png0000755000004100000410000000173611017132666020731 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<pIDATxÚb¬ªª:íééaÌÌÌðÿß¿ÿ ÀÈ€öÿÿ y&vv6Æ|oii) ;]KK[Æ÷ïÁjÿñ†¿ú?CØ<< llÌ ,,¬ œ\S§N FÆÿž?a`xýö//Hó_†_¿~1<{þ…AZ†•$öŸáËçÏ lì ‚ \\Ü ÿþ» ÉcŒƒ°ÚÖÿ¿jÔ‰…ƒ¤%…è$ï Ç¥,­²ñêJ,&’´õ¥@µ/ÙÌ@, ƒœÎÆÆÈÀÆÊÆ_ ÍŒ ¬lL@C€òLÿ€|fe 0 r@1!^ŒˆpcÒ̬ì@—½t0”†ü;f@±@‰áçÿ ?¾ÿú¨è7РÂß2üøøá×?VÆŸ, b\| ̬@/ÿƒÆ@±üºÊf9†MŒŒ¼ wXyV\ùÂ,>…Á€ç!CÇa†',< %<1 êÜ*`C@ €X@ι˜•›™áÛÿÏ ^½`8þRˆáômQ•ßš ï5–2,c}Àðäç_†‡gŽ2Ì´šÏÀÎÄv@±üÁÑÌÄÀ 4jý›Ý \¥ \ê‚ Ì\º 3Þq10½ÿÀð÷/ƒ,ЦkŸ÷1ìy´‡ÁœÁ½Äò+?0î0üþÅÉðéû[†Ï2þŠ>`à’>Ïðë=0 ¿]Ä eeäbøøý+Ãö¿ ŸÈv!‘¿ ¢’_8E0¸ˆš3]šL\ÌÿY€©–…Ì,\ _~ 10½Ve0â×cøËø+ÿ  ¨ü÷÷?Ã×_Ô…•º¾w1L87™á*Û†,ß~ü`bøó‘‡Aæ«C¦Z,ƒ¥¢ÃÉ §Á@,ÌÌÌŒ,,,Àäɉ rPµe0‘4d¸þöãOÏþpýe—®ÈÀÇÍÇÀ lvvvPŠd –sçÎ}·°°àøýû78¥sÐEÌŒÌ Rì 2"Rà„Lð _|cxÿù0Sñ0\¹r…áóçÏ¿ˆ‘››;QJJ* “ÿAþAÿ)˜B Y–‘‘åõë×_ß¿? À®`Qv u'IEND®B`‚torrentflux_2.4/html/images/files/avi.png0000755000004100000410000000205511017132666020675 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¿IDATxÚb`666uuuFF>>>V&&f1(ÑÐÐtëQUU=žŸŸÿYOOïPœ €XÀÿÿ ÿþeøóç7ˆ« °µµufddÒ677 cY´h ƒŠŠ:Ãw /]º¤ @Œ0ÍÊÊJ²Ïž=óæããwrw÷0—“““|òä kyyáC6mÚÀ ¥¥÷íÚ•??~ü ¨åèïß¿êˆQZZºODDÄMWWO)--ƒsÓ¦@”ÄĤš›€Þaÿùòåó×=8Ô´ˆñY˜ÅĘ™™ýÅÌÌ‚{ýú5 zzÆ ›7¯ÿsëÖÿþ»ýë×Ï“@5;€ø¿â C1|A¾ÿÙÙÙÝ !.òòì!!!221'ÞÞß%!!]ùùûççé))&ããä ¡¡ •ˆYJJ2ÎÞÞAöçÏŸ ))© aâä`eKOKå|òô)—¶¶.§“³ ÇÃ÷ØýýýÙaÃþãÇw6 ¶;w²óË—/rrrz§¤¤°üùóŸAFFŠá?›ÃÝÇ_¬ŒµÄD„XÙ8¬ÂÀÊÊÎ ,,Ê ¡¡ÁpäÈa w7 –_¿~­`aaé011’þúõ7+#ÃOÖ —Ÿÿ`xÁÈΠ-Π(ÁÉ🅃áë÷Ÿ  hãáag¸té<(Ê_(ð0#úׯ @À á×o?ný`¸ñaË× f¢< xxy8~Õqq±3üû÷˜ð™ˆ’€þ3üþýhÀfÖ ßþaØ{ë/3/0¥ÜùÁ°øÜ}†7v]a ºÿ@Ûÿƒ£ €˜`)ð÷ï?ÀÄ@C~ÿþÇÀ Œ(>†_?0~{Á`-õƒA€›‰áÛß`uÿþý@`€8 ÛA˜‘ñ/ÿÿ%ÿ3üûþŒÁ„ñƒ¿5;ƒ¦¢8÷¿Ì _¿ýb`çøtÁ?pÞ °¬¬À¨ãäšü— è&®¿ 2Ïž2¸*±2è+È10³³3|:›‘ù3+;;³ƒÒ!@ øóöí[†›7¯1|ûö ,@/¸ˆýfàcâd¸~ïÜ6àããe¸uë6Pí¿_fâââ*¦¼Àÿ f&FP]„ªšúÁ¡ÿ¾|ùÜ`÷9]¤ÐÊÖÚIEND®B`‚torrentflux_2.4/html/images/files/gif.png0000755000004100000410000000147011017132666020663 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÊIDATxÚb¬ªª:íááaÌÀÀðÿß¿ È€‘‘ƒÏÄÄÄÀÆÆÆxàÀï---İcÇŽÿI¿ÿÓ—.]ú/// €XþA­ýòõ+ógOØ™Ana` ÿûÿÈü´ù?ÃÏ_øƒ„„$ƒˆˆ0Ãß¿€æ0 ˆÏŸ=cxúäßÿì ß¾ÿ;÷ÿ¿ÿ`ƒþüþÃÀËÃÍðëçG ÄÅÅÀâ — È`gedøûŸ™aþE†?ür |œÿ¾~ÿÏðêù†§~2˜½cÈá``afÛ5€ €à€lû”VbiA W^ÿf`¸ú”áÞ‡ ï>2]òì¿ÿP/‚ô ,äÿüýÇÀ -ÀÄà(ñ“A™ýÃÒ÷˜€‚ðë×/NwPÌ‚öïÌ&°'.\8ÁðçÏo”p ¸@ñþæÍ†[·n3üÆ;ÈŸÈ¡Í £wïÞ0ˆŠ Ab j1@±Àü#""vŧOoá £ÿ½ÈË ,,tÅxJ fffFPd‚ÛˆPÈd 031prr‚\Í@,çÎûnnnÎÌ$ŠA9Îaâ?þd¸|ù2ÃçÏŸ#77w¢””TPžõ?È­hÙ¦Y ˆY^¿~ýõýû÷“ nÝsyJŒIEND®B`‚torrentflux_2.4/html/images/files/tar.png0000755000004100000410000000203211017132666020677 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¬IDATxÚA¾ÿ²hÿýüü÷ýÿQ "Y#*-ØÚæíÝÒÖ¹þ÷§ØèÁ üþ«ÑA¾ÿÿÿþýüý] \%06/>#5úþ'TòâÔcÞÍÂ^ÈËäæáß»äêÿŸ ÈÿA¾ÿµn –!R'.$.ÿýøñðêØÕ  þûòîâÚÞÕÓüÔÒÝÛµêwˆñÂtÇ¿zÞ‰LŒ ÿ|`øûí-ÃߟþýºìÑ=1)&F&vNq –d``gfx{n7CHƼãÄÂÌøÿãÛkL ß¿20rð2°K300|úKAˆÙDþ³…Þ20<9ÄÀð÷ ÃÿOOþüg` –¿ÌÜ \" _ß30¼¸ÄÀðû+3;P“PZ/.00|{ÂÀðç#ÐP&~†¿l¼ ÿþ3ý  \@Åâ@Oc``d*|ÎÀð ¨øÅ9å K10üzÃÀÀÁÄ ¬ |¼ ÿ?¾ÀÀ@@x ¶}ûÌ=Æ@MŒ@63ÿ:h§D# Ð̬@ó}ôáÿ&€bùÇô7Ð< @šÿCè??€šù€šB ¿ ±°B½ÇÇðŸã ÿŒ Äò÷?P€\Ÿ€ƒlP0P¸@] 5€¨ž‹áÛG ˆd 0^ ù˜¢Þ`ø5èo®¯±qB¼Âl@/0ÃèU€bacc+/P¨dþÄ¿†p à„† +ÐV6Í ÂÀÆŒRFF&€b–dÿ•ÉÁü‹GTD€…W âlf ¦?@Ì4˜HsÏ.ç»æéå; û×bØqèÖm€b4‘å¾ûòG¶µ®Œ¿››½ª“§+«š¾&Т_ÿ2>†Í7†·^1œÚ{aÿÞ ö½õìæ³ï‡¾þc˜ @ŒæŠ¼ çî0Ø+ 1Eèxúº›J™ÚY°¼yyaû¦ã¹õæÊw?þcXTºˆ¿< @ J¼ \ÀpdbPX2ƒ…¹$Ø‚”EyÖŠs±lòcXŒ 0»³&ÝžÏxIEND®B`‚torrentflux_2.4/html/images/files/py.png0000755000004100000410000000154111017132666020545 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<óIDATxÚb¬ªª:íááaÌÈÈðÿß¿ÿ è€( ˜˜˜ØØØ8ð½¥¥¥ €vîÜñã?üýûï?.ð÷ïßÿþüùÿëׯÿ?þ‹]¾|ù¿¼¼ü!€Î1 CÑZPèýïèஈÕ8&„GʽÄZ›ÞîœÂ0K̹‰8Ôjÿ‹ú£Ú9‘Ã@L LLŒ ÜÜì ,,L@Á@ÅÿÁ’0ä5°b&F¸·@\@,ÛX€šY¾}ûÁÒÇÎÎÂðñãW°F66ˆ8((˜™™Á,À@, Ћ _¿~ ‚ ‚#X3Äf&°k@^ñA–‚ôØÄòȆϟ¿½Á¶äwþüƒÛ2üïß?po@±üùó—““——“áׯ?`ƒ@¿~9bû¯_¿áþ‡Ñ A €X@Š@†üüù 8ììl`§ƒBäT†ÈfZ˜ÿA €À M hyçÇ&° MŒÿÁ.b(¬þÕ0Íü5 €X NùŒk6pHƒüöçÏocX€ÿ÷“á7Ó?n&ãùX¹¾þû4è˜@,°øeee;`,,l ìŒì ¿½`˜xkØ6 vAVf 8 0¼xôåÀ‰ €˜`þ¥2° €lf äO KîyÎðæç)v>fn†·3X é10ÿ¦L et%3#(z¸¸¸ÃÈÌðüÛ†›?1芨0„ɺ2˜ j0y}áå_{=Q †ÓON30122˹sç¾[XXpüþýì pˆ£øÃ¯Ï "¿¹ÂøD~p2Ü}zŸç+ƒ—ãO.^¾ŒòÏ¿ˆ‘››;QJJ* ¨õ?$#€rÐ, ¬LÌ À<Êðëßo¨3Xü7Öׯ_}ÿþý$€ûåµ·S4®IEND®B`‚torrentflux_2.4/html/images/files/mov.png0000755000004100000410000000164311017132666020721 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<5IDATxÚb¬ªª:íááaÌÀÀðÐ### Ÿ‰‰‰ñÀß[ZZ ˆaÇŽ?þãÿþýûÿ÷ïßÿþüùÿëׯÿ?þ‹_¾|ù¿¼¼ü!€b*ø2¨€ÂüÏÀÊ$ÿþeøýû/#Ø ßþaøó÷X X=ÈÅÄÕ–ºlÀÕ{_n?ûÃðý÷?NV%1fuY  #Ð\°7@êA. ¸ ›~ÿþðæð;†ûß8ùØ€š™¸þ3ì¿ý™áÊÃw >f¼ ,Ì @CþÁ ` &Xà03ÿcØvê=ÃåÏ< ,ܬ 2<õ™A€‹‘áÈ€ÿW 0¦Á !~6 Ï 7þüdø%(Űòì[Ižo O>WH‚AЉáã»ßÀ€å"Ш×ìs€1Æ`¯ÇÇ ûç%ß¿o ‚rb …E„äD0ð°þcø Ô|÷ùW`$‚-a€byáׯ¿Àðcfð³b¸xç#ËgïØ|†?€1ôèI¦Ÿ ü\À…D€bEÇ¿~üb§:# A†Ÿ?3üø  ­ì, ß¾ýjädÝ` ÅH@±0333²°°0pqqAI•¬@@¼÷ˆÙ¹XØô/`æâädàb`Fc –sçÎ}·°°àøýû7,M@\IÖ0¿2@²+ÿúõ›˜™€Þúü €¹¹¹¥¤¤Ò€ò¬ Ì‡ž•ѳ8H ˆY^¿~ýõýû÷“ Zå·RÿôuIEND®B`‚torrentflux_2.4/html/images/files/pdf.png0000755000004100000410000000153111017132666020665 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ëIDATxÚb¬ªª:íááaÌÀÀðÐ#˜`„󙘘ØØØ8ð½¥¥¥ €vìØñã?.ðïßÿ¿ ˆÿÙ¿~ýúÿóçO°ÔåË—ÿËËË –@2ùÏŸ? &È $øŸ‰éðv†?Ï2üñŒ``âädøýó'///X=H-@±@õÃ5ƒˆfç``|÷ŠyJÃç×/þØù0ððò10 yªþ?@a5ì‚¿þ3³0°ñ&!Q†¿¿~"\U@L°ÀqPðïß ¼ü $eþè˜20só0ü9ªf@±üÚ³•Y’ƒ“áßó‡ ?/_e`úÇ4ðP3Hî/H̵Äc Lb ˜˜~®_ÁðL]—áï‡ ¿®_ÊÅðÉË @L0'ÃcàÐt..†¿—Î0¼¿x³¢KψáßÖµ 8¹þqñ2ü¦‹ÿPõÄÓv33ØÆŸ¿þÎíaø/%ÉÀýé=ÃW6N¶ÍóXø€r:† ÿõ-þ22c €XÀNE ;ãëç ÿßg`Þ½Žá ÐÙŒÚæ Ÿo\eøcdÅÀÊÍÁÀ¼x ÃÇC2 ¿Ûç00°²‚- –@“?d`\5áË×/ ¿î\gøÅÌÆÀÖ6‡APPá0ð€áñßÈŒá£%÷ßøÄ¥þ¿¼NâÄöÏ÷o ?®]bøñïÃCk.`jûûé#Ã?X´!‹²ïß? ŒÀè„¥D€baþô˜$WÓöoߘ€qÏŒ‰¿?0ü&]äDŠBœÀ@æÊ1222˹óç¿›[Zrüù Ì!©µèi„031|þüù@1rss'JII¥åYA%+ƒ¼‡–ÅAb@Ìòúõë¯ïß¿Ÿ`Ò+ØóKª“IEND®B`‚torrentflux_2.4/html/images/files/ogg.png0000755000004100000410000000161611017132666020674 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< IDATxÚb¬ªª:íááaÌÀÀðþÌLL Œ@úï¿ ŒŒ 0娨Ø8ð½¥¥¥ €vìØñã?xûáãÿ÷ï¿€Ùÿþýûÿ÷ïßÿþüùÿëׯÿ?þ‹_¾|ù¿¼¼ü!€b*ø2¨€( ¶e×ÅC © Kî>~ÌÀø—‘áû·o Ÿ>}bøüù3˜þñãX=ÈÅÄÕÏ¢A ÿ3è*¨3p˳0,»¼Žaçùà ¬ l œly¨7 êÿ†?ÿbægPãVaÔäb8ñõÃÄC³Þ½ÿÄÀÅÎ —P R@L°À ÿù÷—A€—A˜C€aÖ® ?>üc8ÿçCåáF†§¯_1p²°£@LÀBqÁ? r †: ŒÿŒ…M Õ n¾¿Í0áð4æÌàX‚y €˜` °f¨!þþaPRfça8ÿé,ƒ©šC­a)ÿOÞ}ÿŒbF˜×ˆæt˜' 'Ãï߀¶31èòk3y|Œáñ“' ŽšÖ ²Ú ÿÿ1üüó îe€bÙ Â\¬\ ç^fØûx?#Û?†{?n0¼bzÊpëÍ]K^S†ß~½ùn!@±À¼ÀÁÌÁpüþI†Åg1D1ðóp1pþ»ÅÀp“áô“Ó ÆR†`¯Áà JÄ bÎÁG¾Š_axÅ/ÎpùÓ†,oþýùÊðäÓCX`Ã\ ³ €X`QòçßO;†Ã—·0Ì|½çì ß>33p¿QfÈÐ f¿ ~þG!È@!ÄÂÌÌÌÈÂÊÂð“õƒ­ºÃ$þÅ »îîbxÿã ƒ¢€*ƒƒƒ¨€ ןŸ888À999Á˜Ñ˜ˆåܹsß-,,8€hò_.†`…@°·ÿ3üøùáþ“(Îÿýû703òÆ/€bäææN”’’Jʳ‚2ÊÞ@Ìòúõë¯ïß¿Ÿ`¹¿ÜyëÞáIEND®B`‚torrentflux_2.4/html/images/files/php.png0000755000004100000410000000172411017132666020707 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<fIDATxÚb¬ªª:íááaÌÀÀðÐ### Ÿ‰‰‰ñÀß[ZZ ˆaÇŽ?þãÿþýýÿ÷ïßÿþüùÿë×/ þ ¿téòyyùC(ƒ@†EQôÿ_œn=µPBšG’²Öò¨±÷¹)0z!0˜™3çBº©Ì@,Pý@ ¬Ì@¿ÿ3Ü~ñƒáÍÇß ¬ ÿ€ ™€†+‹r0p²120³þg`cg«¹ €à°2ÿgøôý/ö‹Ÿø 4åyþÿþÍðèö†{þ|Í Ï'ÅÀÈÂÄ nñ‹™å?ØÄ œ¿@ƒ–žxÏðõÇ?;  óÿ19ø…áÑS ?~=†&3Ã#v†Gw_1(]¶`Ð3ÿv @±lÀ“·¿¶œ}Ì ®©Àpç+é]—nnûÄÀÂúˆ•‡‹AZJáå« o¾~b`~÷‰Aþóf`ŒË?hÔ}ùÅtî]†c‡3¼ùÈ !.Ëð^æ6Ã×ãJ B| ?¿³00²«2()Ë0øz+mÿÀðýû€búÿb'+/¯ Ð¥< ¾10üäd`7We¸ ñ…á©æ†Wjœ /€é¢Æ`c£Èðç70€ÿ1 0¦AiˆA‚÷?ƒ—¥*ƒ¾™ƒ¶–ÃÛÏ üB Q± 2R¼ _?~eøóü?ƒ”;÷¯¿ÀÑÈŒb€b…$0ãþ?C´µ ÃûŒ l ¿øxYX˜øäþÿùËðáógm]N.`À¤„ˆ’|ÿÎ? >fwå_ ç½d¸ø”‰áËFYÁ ²¼? Eþ1H sÓ 0ôÿA4ƒ@ÓˆL² ß~2‚m°UaaЗúÍðùÛ6`²äãfe`†ø×_þƒÕS$0ö@úˆ…™™™‘………‹‹ bÐ`F `x1ˆ ~ÿùNyœLœœœ` ÌhLÄrîܹï¿©–& ®b{ æWHvcÚË—/3|þüù@1rss'JII¥RóH” deô,b–ׯ_}ÿþý$€ýR®’ ¿ÑfIEND®B`‚torrentflux_2.4/html/images/files/img.png0000755000004100000410000000202611017132666020670 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<¨IDATxÚb¬ªª:íááaÌÀÀð@#~øü…Ÿ‡›‰™‰áï¿@°ã¾·´´ÃŽ;~üGÿþüÿìÊÅÿËoû¿ÿüéÿ?ü‹ÿþýûÿÏŸ?ÁìË—/ÿ———?@Lÿ€h0ß?þýýËðáËg†µ'v0\þ~AH—‘á1Ë]†ÕG¶2¼xõšáç÷Ÿ ?~dVr-@1Aõ3°0³0|ùú¡fMæ¯ëX”2<þñˆá“ä+†}¼ÛJÖ70þbØ»ÿ9ƒ°4ƒ¶¸4ãmîÇR ,w¥¤~H3È+ó39þ†áÅ‹o ¬¬Œ`Í @,0ÆåËïEy$8زÌX|¾}daàæýà -ÁÉ (¦ÉpàÙG†3g1(+‰À   þ3üúõ›áý‡ß ZR Ÿ00p1‰3H33|dúÀÀÃÈÇ ÄÌÆðð9Ÿ Ã[Þ¾ûÊÀÌ N8 Ä"~ý&p&&†WoÞ|yÍpóÉI†×Ÿ5ÿþÃÀÀÎÎŒ>F†¯_‚ÒØ€Ç;P×ÿ¿ Ÿ>ýe`caeàçg`øõU„AƒÕšá#'0,™@1б œœÌ ¯_Cb €Xþþý a!f†›—ß08:È0pq10ðð°2ºÉ`j*ÄŠ8XJ fffFFFf>>gN†3g^1ìÝsü <|l ß¾ýbx ¶÷ a! ¼¼¼ ,,ì@op252˹sç¾[XXp€b‚‘ñ?ƒ¢â †/ /_¾døð(ÆôŸAE‘AJŠ[¿ž={ 6˜™>þü €¹¹¹¥¤¤Ò€ÞaeDpÀ°0Ã… ìD -`'ƒü ã1Ëëׯ¿¾ÿ~@€ÙB¦¸`óVIEND®B`‚torrentflux_2.4/html/images/files/wav.png0000755000004100000410000000161611017132666020715 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe< IDATxÚb¬ªª:íááaÌÀÀðþÌLL Œ@úï¿ ŒŒ 0娨Ø8ð½¥¥¥ €vìØñã?xûáãÿ÷ï¿€Ùÿþýûÿ÷ïßÿþüùÿëׯÿ?þ‹_¾|ù¿¼¼ü!€b*ø2¨€( ¶e×ÅC © Kî>~ÌÀø—‘áû·o Ÿ>}bøüù3˜þñãX=ÈÅÄÕÏ¢A ÿ3è*¨3p˳0,»¼Žaçùà ¬ l œly¨7 êÿ†?ÿbægPãVaÔäb8ñõÃÄC³Þ½ÿÄÀÅÎ —P R@L°À ÿù÷—A€—A˜C€aÖ® ?>üc8ÿçCåáF†§¯_1p²°£@LÀBqÁ? r †: ŒÿŒ…M Õ n¾¿Í0áð4æÌàX‚y €˜` °f¨!þþaPRfça8ÿé,ƒ©šC­a)ÿOÞ}ÿŒbF˜×ˆæt˜' 'Ãï߀¶31èòk3y|Œáñ“' ŽšÖ ²Ú ÿÿ1üüó îe€bÙ Â\¬\ ç^fØûx?#Û?†{?n0¼bzÊpëÍ]K^S†ß~½ùn!@±À¼ÀÁÌÁpüþI†Åg1D1ðóp1pþ»ÅÀp“áô“Ó ÆR†`¯Áà JÄ bÎÁG¾Š_axÅ/ÎpùÓ†,oþýùÊðäÓCX`Ã\ ³ €X`QòçßO;†Ã—·0Ì|½çì ß>33p¿QfÈÐ f¿ ~þG!È@!ÄÂÌÌÌÈÂÊÂð“õƒ­ºÃ$þÅ »îîbxÿã ƒ¢€*ƒƒƒ¨€ ןŸ888À999Á˜Ñ˜ˆåܹsß-,,8€hò_.†`…@°·ÿ3üøùáþ“(Îÿýû703òÆ/€bäææN”’’Jʳ‚2ÊÞ@Ìòúõë¯ïß¿Ÿ`¹¿ÜyëÞáIEND®B`‚torrentflux_2.4/html/images/files/jpg.png0000755000004100000410000000147011017132666020676 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÊIDATxÚb¬ªª:íááaÌÀÀðÿß¿ È€‘‘ƒÏÄÄÄÀÆÆÆxàÀï---İcÇŽÿI¿ÿÓ—.]ú/// €XþA­ýòõ+ógOØ™Ana` ÿûÿÈü´ù?ÃÏ_øƒ„„$ƒˆˆ0Ãß¿€æ0 ˆÏŸ=cxúäßÿì ß¾ÿ;÷ÿ¿ÿ`ƒþüþÃÀËÃÍðëçG ÄÅÅÀâ — È`gedøûŸ™aþE†?ür |œÿ¾~ÿÏðêù†§~2˜½cÈá``afÛ5€ €à€lû”VbiA W^ÿf`¸ú”áÞ‡ ï>2]òì¿ÿP/‚ô ,äÿüýÇÀ -ÀÄà(ñ“A™ýÃÒ÷˜€‚ðë×/NwPÌ‚öïÌ&°'.\8ÁðçÏo”p ¸@ñþæÍ†[·n3üÆ;ÈŸÈ¡Í £wïÞ0ˆŠ Ab j1@±Àü#""vŧOoá £ÿ½ÈË ,,tÅxJ fffFPd‚ÛˆPÈd 031prr‚\Í@,çÎûnnnÎÌ$ŠA9Îaâ?þd¸|ù2ÃçÏŸ#77w¢””TPžõ?È­hÙ¦Y ˆY^¿~ýõýû÷“ nÝsyJŒIEND®B`‚torrentflux_2.4/html/images/files/bin.png0000755000004100000410000000150711017132666020667 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<ÙIDATxÚb¬ªª:íááaÌÈÈøÿïß¿ LLL ðÿÿ ˜ £AbÌÌÌ lllŒû÷ïÿÞÒÒR€ƒ1¶aX?áÿX{¯°€@¤%“­XÊQÕø3³@U¡»é™¹§dDpww63ƒˆÜ'‡sl0 @ð‹Ô‚1Àbllà\#V‰bå&¸çz«ŠîfÎÉZ 3ÃÝÉL"UåœÃ²÷fŒˆü£O1œ râÇ€60 {$r.ŒýéÓ'†ïß¿ƒÅ@jAú@¾ Æ-[¶|šÌ RÀÅÅ6è°A è- 7@~Ó<<< WÀ›À ¬KQ(þÿlÑÑ!!Ø‚X“ä¨HRÏÛݱÝ仫 \ö ÀÛ„ ý‡Ôc,l­¨>¾üîÄÌ™dýªòœîÆîºôç À€ ðû—±…–p°€£»Jþx "03ªŠSâ.ÀÝénfFã}(3¹¤ö VÄ"À@¡¯©©ÉÀÉÉ ¶MLL ¬äPL€ Ñ 9PX€ €X@¤ªªÊ ++ ,kkk°ÿ@ @lÈk¶¶¶ À´VËÏÏÏpæÌ°áÄ’ @ŠA‚ 1é°ãÃH Œ ¿žûÌÀÄôŸá?PÃÿÿÿPéÿ€Ðð¿ << ÷>e`ÜûÐá¬,@±Ü}üãÿµßŒÿÙÁ6ý¹àφ_@ü¨áÏ_ þmÿvÝï¿L Œ?øØ zø˜äÕËÛÿT-ùU˜>|fjd`øÄ?Cè_06ÿ:äýo‘ç ëÏ©3<>.d@,ŒŒÿ¾þÎ öú+ß/-Œ @ 4ÿc`Z ¦3üeÊqÿ`øüþÓo¢ß¿ˆåPóßß þÚÌ œ,Ì` Œ`ŒHf&†_," ÷§½c8þãÏ€bùóûP3ƒ˜„ Ñ€•õ0pˆé0ªþ¿ÿ¯¤ôÏ_HÌ(~A þ£ö?@1£é/(Ή×ül„ @L rÎÒ"ˆ‰‰‰h;#I.»ìíÿ ÄôþíËÿ¿ÿdà`#^3 3B  –sç®Pòüïüú$\ÀÞÑ â”w=0]|ýÇJ ÌÄòçꔋgŸ9¦4ýfú L¯ÿ€áÉ‘Àpî?pŽ„°!QÇÀÄÂp÷Î[ ?þ#G(Ãß[M YŒ€’¿VÁÜÀ±›‰ %TPâ~² Àà&Tó_ÊÅÛIEND®B`‚torrentflux_2.4/html/images/files/rpm.png0000755000004100000410000000214311017132666020712 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<õIDATxÚA¾ÿ²hÿýüü÷ýÿQ "Y#*-ØÚæíÝÒÖ¹þ÷§ØèÁ üþ«ÑA¾ÿÿÿþýüý] \%06/>#5úþ'TòâÔcÞÍÂ^ÈËäæáß»äêÿŸ ÈÿA¾ÿµn –!R'.$.ÿýøñðêØÕ  þûòîâÚÞÕÓüÔÒÝÛµêwˆñÂtÇ¿zÞ‰LŒ ÿ|`øûí-ÃߟþýºìÑ=1)&F&vNq –d``gfx{n7CHƼãÄÂÌøÿãÛkL ß¿20rð2°K300|úKAˆÙDþ³…Þ20<9ÄÀð÷ ÃÿOOþüg` –¿ÌÜ \" _ß30¼¸ÄÀðû+3;P“PZ/.00|{ÂÀðç##ƒ Ã_v>†ÿ™þÐ. bq §¿%Y€ Ÿ30|*~qŽA9è’G ¿^30p@,âZ(À tÍ+†ÿhĶoŸÀ¡Ç†.à fúÍÀÀ ”gæÀÍðç÷/ÿžŸ~ÎðãçwN6€bùÇ4‘è Íÿ!ôïŸ œ| ¿˜ÿ3|ûø™áÁÞg oŸ|axví-Ó?f;IFVV€bùûè_fÓ>fÐ%ÿ~3üãâg8¶à ÇGo~þ``×’ú⃒<7ÃÏ…çˆåß? SØ!þûLQŒ@Íÿ4Æ¿,| ¯î}a`fbbPóÒaÐ 2¦Öÿ Ürr O¯Þcøóó@±°±±ƒ(,@Û¾šÂ@ƒXù,2íxeyøeʸ9VqÕ1°°½†#@1K²ÿÊä`þÅ#*"ÀÀÂ+ ,> —€šÿa`æâcà×ågàb`d¦ 3<½r›aÿúC ;ݺ @Œ&²Òw_þȶ֕ñws³WuòteUÓ×d`åütÐkŒÏ€¾ùÂðöñk†Sû.0ìßsáÏþ£·žÝ|öýÐ× SˆÑ\‘—áÜýÏ Àc¦{%!¦HO_wS)S; –7/¯1lßtüÏ#·Þ\¹óîàÇ ëJ7ñ7‡ˆÁB‰— ެ@, Kf°0—;C²(ÏZq.–@~,‹1`°åCcDéõ¶IEND®B`‚torrentflux_2.4/html/images/files/readme.txt0000755000004100000410000000471311017367654021420 0ustar www-datawww-data++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ This copyright and license notice covers the images in this directory. Note the license notice contains an add-on. ************************************************************************ TITLE: NUVOLA ICON THEME for KDE 3.x AUTHOR: David Vignoni | ICON KING SITE: http://www.icon-king.com MAILING LIST: http://mail.icon-king.com/mailman/listinfo/nuvola_icon-king.com Copyright (c) 2003-2004 David Vignoni. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2.1 of the License. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library (see the the license.txt file); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #######**** NOTE THIS ADD-ON ****####### The GNU Lesser General Public License or LGPL is written for software libraries in the first place. The LGPL has to be considered valid for this artwork library too. Nuvola icon theme for KDE 3.x is a special kind of software library, it is an artwork library, it's elements can be used in a Graphical User Interface, or GUI. Source code, for this library means: - raster png image* . The LGPL in some sections obliges you to make the files carry notices. With images this is in some cases impossible or hardly usefull. With this library a notice is placed at a prominent place in the directory containing the elements. You may follow this practice. The exception in section 6 of the GNU Lesser General Public License covers the use of elements of this art library in a GUI. dave [at] icon-king.com Date: 15 october 2004 Version: 1.0 DESCRIPTION: Icon theme for KDE 3.x. Icons where designed using Adobe Illustrator, and then exported to PNG format. Icons shadows and minor corrections were done using Adobe Photoshop. Kiconedit was used to correct some 16x16 and 22x22 icons. LICENSE Released under GNU Lesser General Public License (LGPL) Look at the license.txt file. CONTACT David Vignoni e-mail : david [at] icon-king.com ICQ : 117761009 http: http://www.icon-king.com torrentflux_2.4/html/images/run_off.gif0000755000004100000410000000061311017132666020431 0ustar www-datawww-dataGIF89aÕÿÿÿ›áýᆋ¥‹ –}—}pŠpy“y›g‚g`z`?Z?tŽtZtZ_y_e~e%?%m†mee"<"^y^PiPuusŽsTnTa{a/I/QkQ]w]-2L27u;U;PjPb}bXpWD^D ”XrX}˜}VoVh‚h\v\IcIE`EOe "„NhN9u:T:MgMm‡mc}c^x^)C)*öþöb|b!ù,¨@€pH, eƒ¤r™ S'A¨œh@(>†Äa±8$ Ÿ(·€ah¾ÇC‚Ð00Ûn)r@Ø, ,y ;(& \' eƒ ‡8k"<¨!$‡/ . +*‡-T1Ã4j]QU07:ZkZ9ZÓ5åèZ3=FíCA;torrentflux_2.4/html/images/index.html0000755000004100000410000000001511017132666020275 0ustar www-datawww-datatorrentflux_2.4/html/images/folder.png0000755000004100000410000000102511017132666020263 0ustar www-datawww-data‰PNG  IHDRóÿagAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<§IDATxÚbd```šÝ,ø— ¤Ö¾×R·øcÈÃ@15ÿÿóã‰倘 ˆY ˜ˆ‘õHá÷—‹'–^’Ú{ ¹ €Àüûó"û(ÆÈ¦¾ß5h_âd@~½aøóýÚU ˆ@ïí‡@P¼kÆn#.  2Ä € ü~úõéÔ+þÿÿ¤}ó ˆ‚Ù o{±‚S,fŠ+@A xË¡?00áùD3ˆþ ûû¨î#Ìa€‚ðjñ'†ÿ@[þÿûÖv и+ Âä5àÄ>Bbh H(ýüÿ÷j;Ä`À®€€B‰FpXüÿq R@ ú6äïßß( ÄéŸ]qDˆ qú?°Ìß Pï€Á€%K-`¼’°¹ H­ ¬@lÄÎ@,D¤þï@|ˆ÷,c€hv¨aÄPî΀bü 4r@€œô2s˜^IEND®B`‚torrentflux_2.4/html/images/user_group.gif0000755000004100000410000000174411017132666021173 0ustar www-datawww-dataGIF89a÷ÿÿÿµµµ‹‹‹”””kkk{{{JJJ“ò.÷!÷!˜ÿ)˜ÿM’òâýÅ”ÿ!Šæ€æŒøš÷!wÜ {ÞßúÂsÖoÎb¾kÎM”gÆò.N÷!D÷!Dÿ)LÿMZòEýÅÐÿ!Kæ?æ5øB÷!NÜ -Þ7úÂËÖ/Î)¾Î'”Æ!.òð!÷ô!÷ô)ÿüMðÿòåÅýü!ÿüæÚæäøõ!÷ê ÜÚÞÜÂúùÖÔÎ̾¼ÎÌ”’ÆÄ.xò!r÷!r÷)zÿM„ÿsòÅÛý!zÿlæbærø!|÷ YÜbÞÂ×úZÖSÎH¾RÎ8”KÆò´.÷³!÷³!ÿ»)ÿ×Mò¢ýëÅÿ¸!æ™æ£ø±÷©!Ü™ ÞúèÂ֕ξ‚ΔeƇæ.òê!÷ê!÷ò)ÿÿMýÛòøÅýí!ÿÐæÚææøà!÷Ð ÜÍÞ÷ÂúÅÖÂγ¾½Î‹”ºÆòë.÷ï!÷ï!ÿ÷)ùÿMòàýúÅÿò!æÕæßøë÷å!ÜÕ ÞÒúøÂÖÊÎǾ·Î”ƿò.¯÷!®÷!®ÿ)¶ÿM¶ò±ýÅëÿ!¹æ¨æžø±÷!¸Ü ”ÞúÂç֕΋¾}Δbƃ!ù,Á@P Á  ` BlH`a\̸Ñà~ `dE¨$reË $Q¢„ D‰-bD`Á‚X:qò F=zDà„XF‘âd H‘IšD` XV±rÅ J•,!%pÃ, `±…å¥JXf¸ %Ê,Z¬°Ä”©K .œ$°… –š6]bÉ¡C†Å]¸laÉi“&–:pX¬æK–¥+;torrentflux_2.4/html/images/blank.gif0000755000004100000410000000005311017132666020060 0ustar www-datawww-dataGIF89a€ÀÀÀf!ù,D;torrentflux_2.4/html/images/reply.gif0000755000004100000410000000033011017132666020122 0ustar www-datawww-dataGIF89aÄýüúþýüþþþþþý™3™›6›üüù–-–ž<žÿÿÿûúö„ „ÿþþŠŠ€€ÿÿÿ!ù,U $Ždiž'¤ª¨¨FðšBp-Ai¹ä£¸°Q7<· ‰(<7ÚŽ'yH€‹y,²`„âáô8ê Ò‚€*kÂ…e‰è°¶H!;torrentflux_2.4/html/images/info.gif0000755000004100000410000000166311017132666017734 0ustar www-datawww-dataGIF89a÷€ÿ}§ÙÿÿÌÿÿÒÿÿÓÿÿÕÿÿÖÿÿ×ÿÿØÿÿÚÿÿÛÿÿÝÿÿàÿÿâÿÿãÿÿåÿÿæÿÿèÿÿéÿÿëÿÿìÿÿîÿÿñÿÿóÿÿôÿÿõÿÿöÿÿøÿÿùÿÿúÿÿüÿÿÿ!ù,@° AÁ°¡C†ñÁ‡ .X˜1áÂ`@„Ž;ly¡ÂÈ(†à ¡d… #Ä\¨!c "4ØÂç„  m9!BÉ Ý‚¨ ¥ ბ ØI ¬Ù²ÊFTx€Úµ ã*Œ)·.ÁºxæÝËwo@;torrentflux_2.4/html/images/progress_bar.gif0000755000004100000410000004762111017132666021475 0ustar www-datawww-dataGIF89aÈ÷ÿ0VqqqÜ-ä9 …ÐÈZZZ±P}}}E }¹BBB¶ b }¡ mí Š Ž>>>aaaº ‚Ãë5 r]]]***444………¸EEE  zSؘ$Ø uìVVV ›Ö !Öš¬¬¥III*Ÿ ]µÃOOOZÄ®”””Æî»777¬ê³ jB& ’ l oggg® ˆ `°K©• À™IÔ cªH­ ^ v¥’ ‡ hU§(ª kJ fW hB > €>N¾<< >§@– • –ª@ e —ÀÒN]KXA< fîéèÛËÓãâ£ÔÛ y yÞÒÕLÁ¢åß{{{ÌÌã xáÚ¢<çÊÎè ˜âÚŽŽŽ¿ dddÞçâ wËÊÞÌÏÊáæéßáÓÎïàáËÍÎ...xxx:::mmmLLLSSS¦ïßààããâ xͽMèÕ?Ï xÔ#Ä£ÞZàßÏÏuuu‚‚‚```ÿÿÿ!ÿ NETSCAPE2.0!ùÿ,Èÿý H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠDØ`¤É“(S*$3°¤Ê—0cj|"ABK™8sê\Ì„‰›;ƒ Åy"Ê  C“*©‚Â6¤K£J͈DH¨S³j}Xõª@—[ÊEØëسaË~EËVìn̶›4Ø réêÕ) „¼{ÃtìïZÁˆq¢à‚×`psů²å˘3kÞ̹³çÏ C‹Mº4h¾˜0ñåJÁU2L¨PÀEÀ¾Û¸sëÞÍ»·ïßÀƒ N¼¸ñãµ9X. Ÿ  `›èÐíF‰~سkßν»÷ïàËO¾¼ùóèÇ{æ¡„7 Ù$!ùÿ,jIeH ®Dp±ãIR[ÒèQg¡B†JLU@3>Xð`Â…"K‘äˆð#Æ*%ª3y1eD=-‚©gG…!3ôÙr§Ã˜;º´¹Q©Ñ‘M‹¾,±¤Î©7YzDé0 !ùÿ,ñ3eÒÄ‹S4cG&° e¦ÏRÒHÅÇ€+\ìxÒ@à&s£D½ ¡!‡‡[ÒèQgÅ"F8Ñ*¤5’ ‚€¨2UKu"ÌØØ`Z¦M=uJ¸$Œ“<'V¼˜‘¨QMÄFyº©p^Ã¥"Nüf'GAqRJ²©™“aUª›úÒêLµ¢:á4 6¥Š.…¨ ¯±½owFüûãИN6á]:Á-ÔÅ>-}ÜñhVQ°Ã›hUŽ™"«E£·dâR~Ko<ð“ÖÖ99(îIötgšk)çî+0U³àÌâCÓ§ `óÖì; !ùÿ,)ÿi ö Z¬ÍtM™bCC¦LšxqŠfìÈ6¡Ìô9@*Cš©øp%‚‹OôBf*\µOoibèäá&s£D½ q1#Ž[ÒèQgedÉ“){ 0ÕjÌa›4‰hèĉ&P9­ñĨDG¡©Š¨aÊœ–¶‚FaÔ©¦eÚ$ÑS'‹KBÁøù¤H’&Ï 4%Î)«[Qf’«‰Ø(OZ/ÎÓx ”GbÉ"m PX+fŸX%tÆPCÍM 8Ùå™×ÌOËBÕý=*x²{ E¿m8ÍjjQ¶ú¬TOH£eÏŽ²ý9–è[Îà>ÔõÛ˜p×^=[ÒlÊåÈðUŠ;Ø,1U'¨9Ç;üëö‘d½7XNšS·RÚt, Öõ×—…_`)¥Å1¡5³i6Ô„^jh×v¥'àXÉ%µ5 „v‹.ù=Ñ'IÈÙ•h 4Î,ÎA•ŸC¥f—E'÷Ñq€m&2Ï€R+2–DÂyíB…*¸Y@!ùÿ,7ÿÓýR¥¤I‚e°°!ðï… Z„=ƒ«@3]S¦ØÐ)“&^œ¢;2M(3}Ê&@*>\‰àbÇ“ ì„΂S¨d¼è…ÌT¸jŸ,ÞÒ¤ÑIÇMæF‰z¢äI*·¤Ñ£ÎJÌ™5oæ,˜à,i Qõ:ÀT«YI‡mÒ$b£'š@IµVÕ$J+·¦ò  N„6qþ:rÄ .X¹~}Á©m+hä,έ«aZ¦M =u"¹$ ¬]”I3q:HªBÕTÔÌov9a'’†``(ÆdØŠŠéã5ʤ¥CÐC \šÑµÑSĉ ‰í57˜‘­±aöEMP2Tæ1ß5³Žx68åãyhhU‰¥(øeaŠ‹Ƽ‚PÚõÒ5 |w‹.VväÑ'ÅÙé& ö\˜ @±Y¸$Óä)¢TX™0ã̲¡\VräÑy¢‘4i‚-1*ÈZt锂le½Ò¤'ìh·ß3 ”à ªããH†ðAi§§¥`F!ùÿ,DÿkZ„Ž)]P©Jº_ª”4I° 6žà½Ak€°gÐbh¦kÊ2eÒÄ‹S4cG&° e¦ÏRÒHÅÇ€+\ìxÒ ‘Zo "Th¤áÈ;¡s‡à*/z!3®Ú§‘·4t¢r“¹Q¢^…I“ÃÍ-iô¨³â¨P¢FW%Uó#á žJLp –4Œ¨zd`ªÕ¬¯Ã6iÒ‰M ÐZ[;³&œqSÑP'ÂŒ¡E‰¤cÈ…&8üuäÈD\°rU½ú‚ãVÐÈ”LYôL›ZzêsI(nAïìù3(꼟†"0$U!&ÿ»¦ÛêÆŽ¦Ä=fuKòÉLÇ5åi³Ìy5”ʹst黩aPPk¯-ämƒ-óŠn‘ˆ¢GµÂÌ'¬äÌIµ (œ,·–sf¸µ_\êPg×uGqˆKQÑT` ÖI2™÷BGÈÜ3a…Ä¡4ÍeŠÒ gmé—<ÕeŠHÂÈ65x)¨Ïn=È0ÊÈHK…·8SœJºi ‘!~–’£u^)®%l€=% à–b/¼°%2øT#R3îUæÄ†œÙ\‘ ±éSio¦VKv}q7å`¸\£ b:ø9=Ô<6Üd(•5Ÿ(° )"¢=j^eª'E±ÁHe3êÍU2øÖ16³Î…6u(‡h ÉVš¥Ù*iKÂ9é7-† MžÆ¼r˜UöÂ5 Px‹.¤ª´Ò'ô)Ûj†æß«’ª(F¥~‚·%³é)¢dé›0ãÌòed¤¦´‡ËÅô®‘:%Y€F5É~ÅæP!„GØ+›zÂ΃8>J9¬ Œ!8+µ$d8ÍÊë*€!ùÿ,Rÿe±€ðÄ/pÔↅV¡#FJ—T*¤€’î—*%M,ƒ… 'x/dÐ ì´Xšéš2ņ†L™4ñâÍØ‘ lB™és€T†4Rñ1àJ;ž4(ÆâBÁƒ û0tXƒH­7-b4²±ãÇйCp •Œ½™ WíSÌ[šj:Á¹ÉÜ(Q¯BÊ¡è–4zÔYaêªÔsU¯"TÈp×C"«Àªùq1ã„fA&8KšIT=à0Õj–Ýa›4‰°éĉ&P­ :„QÄ©¨aFÔ©%'\8æÑe‰tìY‚±ÂŽ¿Ž ‰ V.¶n_pÿZÝ ¹˜±gk˜–iÓNO~. £ðï¤;þé×\ Uƒ“1ç\WЉ1]u)€‰*!„tÌ5ßµ•ÒJ¦ˆã+·ÄVS&ìiBÌ(žèÔÕÀÔŒ†´9!%'‚ÊWèo·*úÔ? 4àŸr“VŠæDbp† §¢ár2§éíôPãz²ÙÄׇ¢À2k–(.€ùUÿEJcsEÄ®Æ~fVƒ Ìù]4nÉ0kÄ,ÙÌ:NÚ°—¶S¢1è`´–rhpLgœTb^%)¥Š<"¬WA|SÑ`¡‘§!,kÌ+¦µed/«QÊ’·èÒ/N9}âʼqP+pÂ瘹N¦Õ»ìœæ!ív¦ÑPüÈ]2ôž" ©ã 3Î,ªÂÖïM9MB ßOYŠT¢M=cÃ’ÖSã€^½‘)j_—N!`|Ì+ôzÂŽ‘x>J9¬èý$89í$hÌW.s³áR!ùÿ,_ÿçTJRä‹GrîdØB‚†,þ€8àeŽzXÁðQ£Ðª tÄHé²€J…PÒýR¥¤I‚e°°!ðï… Z„=ƒ«@3]S¦ØÐ)“&^œ¢;2M(3}Ê&@*>\‰àbÇ““Lú’¡B†4б¸ ‘¢Å>7Ö RëMÈ‘% TÉÒe'tîœB%ãE/d¦ÂUûäó–&¡NŠn27JÔ«MŸrº%uV²níú5lÁƒ{ª,lxnmÛŠ3îâHd•]5?HšœðoËÇ`I›‰ª‡á¦ZÍbĽðBºÈàSMOÍ r’ë»öZIÿLÒï¿3Ô‘,ˆY´%Z'¾ö¶Ÿ‚$Fn1†û.×(Cœ@5Ë1øÜP’!) ,{Xh‰‡þc…¢ À¬xLz{œÕZ(Pm=b²è‘ÐRPÌ_6& ê€ÑÎ&ÃɃg3ëìiCd(ŠÆ ™™Á¥t¦‡wY…7ÞW”ž="´šRû³"@LW߈´FœnóÊpƒÍÙ rÔ€‚ç-ºL]”QŸ$Éxvs7y•–fÞif)jZ„Ž)]P©Jº_ª”4I° 6žà½Ak€°gÐbh¦kÊ2eÒÄ‹S4cG&° e¦ÏRÒHÅÇ€+\ìxÒ@ @~,=H˜Š¡Cˆ“¾¤©x1#b,.| 9²I”5ˆÔzã¦L#5oæÜÙ ;§PÉxÑ ™©pÕ>-½¥é©©›Ìõ*„V®¾nI£G³hÕ²uKÈÐÁ„”$5|q¢£=U0j<x°H’&w¥$²Š±š1gNø Yg‚c°¤ÿEÕƒóS­f‰¶I“¨NœhµÚšë­]A€¥ê6€:̰V[ bB çIäµ—Éù˜G =WÒLÇv±„LL`Ó/G±.°ä‚™f/pr^+ÐCÀ?4þ£…Ód²IUžt’Õ¡ÀÛ~c•À5þC AqÍu%ê ‡—q*·QsŽta†‰m(†‡ ¦À$ª„°Ó1ר˜ÙPE™"Žz©ÜÁ$S0IŽš3Š'öi5OW”ÖXVDOOì°Ö?nd Õ(e+ù!Í?ÑÿpKŒ°Æ;àHÓ#ªèn]BVßÕ •jÄ‘`YâЇÈâ¶$va®ì.×(3žq@5êpð?mØðºC"ÿìð±O[cÏJüãP ùBW§u_†ù¦b˜ÒJžKaöv’™™@»*F£™ .¢G ­Í¬ãŒi™8± (œ ÑÉ}°PÊlzôg€O r%F”-¸Vq,U¹¿| $ßÚœ"!6Åá/YŒ@“•…`mÆx…x2óª^œ‡  Õ-táHe*ŸØÓû^cè',õó€t­&]l8 ’ˆ¥˜w%M=Ç0cØEwÇuˆÏe‡&€ªN” ÓB1s‘0Æ1‹›±§„Q™ ûz”üÄf~b! nÒ2 Fd.Õ’œ+RÀËŒ$žâ’bÞ`2 QDé(C´wŒW˜Îìx•¼žŠr°âŠOÑ8¦RQ¼ï@’üèg¿ÿ‘-!ùÿ,zÿg̈@0^¼+u† `Älµ³dåÁJ´˜S)I‘/ɹ“a ²X@ø‗ 8êaQÃGB«‚Ð#¥Ë*R@I÷K•’& –Á†À¼2h ö Z¬ÍtM™bCC¦LšxqŠfìÈ6¡Ìô9@*Cš©øp%‚‹O$G¼ 6|hK,¦Ê¸±ã¤/iD’4I£‹ ,]Âì3³f "µÞììùÓˆP¢F‘vBçÁ)T2^ôBf*\µOXoiâêäë&s£D½ q6-¶[ÒèQgenÝ»y÷öå¡B†!2DÑ"%I9zÿéhO•’'Ï]Îü2æÌ]6‰¬­æ‡O > >šà,iM¡Òƒl˜ÒÊ,¸ ³‰&"t儚€œ5Ä¡¥m)—JsÔÁ xé5AÔY·Ð` 2QE·‘I<™çQfÙJ-µ'ÓÄ—v±ÄOL0Ô/GTÿ4ùϱqR`+ЃՂ j0M&›ˆåI'Gàä?üÁ[q9gWˆÒñPb`ÄiÀC¶–Ø”¨žcäшJëåÓŽ=~ö£B™‚~¨RV\“A §¬•T¦ˆƒ +·,ÈU&[jBÌ(ždÑÇX`€œq&\zÿˆ$ú˜Bq6‘D–ðñžŒ‰÷XH~R–ŽÄ1(cxF:9$P§!Éß2¯d0G$¢Ð$ nüC@“ãBÁ?˜ý3É?yxûÏ©šaÀ®òÏZ˜Ùäÿ4@ët1Üzbv2‘¯-j@%ö +ÙŸ7f¦¬{ÍÆWK‡¨A¦éW$£í)üÿ”ñOŸL2É&@pÍ?­ðÁ#ˆ¨6y½gÆ3ÿÔ1ÃxE7b_†a~¬è‹Àèp±'½£’Ä›1 ßg¡ÂÈÓšv¤£Ha;2ÿÈ0Ê?¡üóF,“°°É¹M.Á#ßDÿàÉΨªj®¦!´E_±Cl.ý&®( bwÀ*ÜÑG‘™÷ç±ì Š9€q}Óé±*ò(‘.°LêIÉõò2ÿKv’ƒ{÷­ó›q\ápï w5ðÄ?ÒõUÓ‘_rXE•7cŸ5ž”f‚âЇ×ë$†}ŠžÍ.49*îî?ß4Ɉ¹ÿhñǘsŒ°ƒ˜ê×$!`^¿ê·<5ïq'Ò•ä¤V½…'s“9‰e¸—¬eñÈ&8ŸJ—Ô<*!Ë¢HÉ@Äø+š±gð&NØ(8†NTÈ8 (Erô°¡¹xDJã‹­ì G0B1 ƒžZàÀ+{•ÙZK&ö=E<"t  Â7x²0!(g êŒñ ½F2èE¨ ÞB ²ÁWÀò RÙ°8ÂÃ[x«5± M»NœC;M-<0râÃŒ%EÍxïs»ÀâÅ1¾ûåP°Rp‘ e¸F=0áTÆ1‹X°BAqô Xfø%³Xè8:D“\èâǹéy‚$¯“0ë)k€¢àÄêÁ¬Bæ b‚%”Ž2„àƒÇx…'=Á4JÏE9Né©®€,b… ?°„PÀ€9Üa;TË€!ùÿ,‡ÿ4xBp‡ÁZ´¸p1cF„‡ñâ]©3„#F0`«%+ÖP Ä ÅœJIŠ|±àHÎ [HÐżlÀQ‹">jZ„Ž)]P©Jº_ª”4I° 6žà½Ak€°gÐbh¦kÊ2eÒÄ‹S4cG&° e¦ÏRÒHÅÇ€+\ìx"P Á'.lø0x1(^Ä¨Ñ ?–„LEÒ$ÊI_Ò´|“F1næÜÙÇ'ÐDj½1ŠT©‘¦O£Ní„΂S¨d¼è…ÌT¸jŸÆÞÒtÖ‰ÚMæF‰zB.]w·¤Ñ£ÎŠ_À‚ ÿ>œX!C‡ŽyĘXñbÆ„ } IIRÉ“)W:ÚS¦Ìs¨©¦O>í«Ì¦ÆI-5Á¹I•À1°Hƒ*= 7€)­Ì’Ü0›h"ZN8¡ (ÒYSÝ\u€×v©x@Ì0Øx䤨y©ÇžE”m4ˆG ‰dŸIz$šhrôWÚi6á4`Oc1¬5ZÇ XŒšUChÕ1p‹È±ŸHáí>IR‰¸ˆ¸)s ¨5cØ…#qv6ˆ)€˜$„‹d(ã7¢èÁ½2ŽYÄ‚ BeZÖ‚Æ;Å…EØy£^ШgÉo{H¢ø§ÇlyD3* 0[b+ !ùÿ,•ÿý Hp`ƒƒOîX¸C‹.f̈@1^¼+u† `Älµ³dåÁJ´˜S)I‘/ɹ“a ²X@ø‗ 8êaQÃGB«‚Ð#¥Ë*R@I÷K•’& –Á†À¼2h ö Z¬ÍtM™bCC¦LšxqŠfìÈ6¡Ìô9@*Cš©øp%‚‹O\,ð B… B”H1x12rìøÑ ?–˜L•reËI_ÒȤi“F1xúÚghÑDj½YÚô©©T­bí„΂S¨d¼è…ÌT¸jŸÐÞÒÄÖÉÛMæF‰zân^|·¤ÿÑ£ÎÊà‡3^ì¸AÂ' %Gœh™G Œ9zIÈI“”H¢K.ÁäÈUÔtÓ9°ÉöSPCíb«ì¦ÆNA5ÁÁ]•À1°HÓ*=,7€)­ÌÝ0›h"B[N8¡ (ÚYÓ^zÐ×x©˜@Ì€˜bëäØ{ðEöÐ|•Ù‡ßFœ4ÈH%$àJz$šjr$ØÚk;õÁ?dþóÄ#&E‡@,ñTLõËG`…‹5”ù ÿ‚"4ä Õâ‹L“É&ryÒ‰]K„x;&a† Y¤‘%©ädôñà¤f„jÀG¶€&Ú”¨3àiv© N öÿDÀa€·Q¨”m¾™‡¨VY$’‹ ò# ø)ŽŠ¬ÜÒ"[™ª 1£xbã]óèu@)~æ#éy©?G¾ß’”Õ‡¨¡v&’%|<€ji¢“«­åæql@‰pŒÁ™sðdÆóO3ü£Ú?ü3ÉdB`À¢ C³ü# ÿlñ?X· (œ(Ú]£f€îxêLŠž¥ç¢›©¦K2Y_ ™å¥„ŒT¯•*P‰=ú®ö*˜²<0+üs€ÿààBjˆ¶!ñ3$ ü£6yþcÀ Í"“„,Ÿü“@dÀA¡2²ÿ,J'7~÷­xzv^8Ÿ›.d ±KŸei¦_g~P à•dÙ4¿7½£SÔœÆ?FýSŒ ,0ò@ DLæ3pPÚÿ,¢²¨¤ñ1!rˋݷLÀne¢‹ßƳŽ~îcaBª—s{ênê³e÷Á»ŸSþwoÒ-½¤‚¯úë`èTÿ#Gÿ<‚z׬2džéÄñ2ÿÄ‘î/ÀÍ{U¨€Ý€Ð#F+ãÄß%¸9o0@Šž¹.…÷0N>íÂÞ“&’K€¦$ß3–Z奛ä$6=ñÈdƒ‘é ûȈ‘ÉzbÀÜF¦?èàd:€"ÿþ‘„2A  ÿhÇu°% X(Ofáê+%=Åíl]œjRö„Ö)Y.„J+ÐøXs“× `@©GÁÐt51ÅMâPU†•€N$#ˆFrdÀ‰µ‚Ÿ`E3ÖáŒêd D༳¼RNŠ?B\)˜)†4.‹¹LР´=B"4& ƒªZÆ—ì«„®ù\O†ƒ>ÀAÈnj„o¼ FˆŠœ„¥„ã"BŽdЋQ¼….\dƒ·ÀåÙZ$Ž8À<‹Š,Òâ,‰ÁÇYdƒñâ©.7 ,™ÒiýRålZ‰…1ìB–¹ Â!Ä€!_} sò.’¡qŒãˆ¢|Ë8f V°ˆ™Å›QËÅH™‰GR‡+WÎtfÁ :.“ŸÚöæ%¤‰ðœœƒÕY©Æ1°17o8#€!8M¥ ! ã1^ÑOO°c˜bAÆ3@QƒN«-à€‹\þ‚4êQ p¤5§X®€!ùÿ,•ÿý Hp`ƒƒOîX¸C‹.f̈@1^¼+u† `Älµ³dåÁJ´˜S)I‘/ɹ“a ²X@ø‗ 8êaQÃGB«‚Ð#¥Ë*R@I÷K•’& –Á†À¼2h ö Z¬ÍtM™bCC¦LšxqŠfìÈ6¡Ìô9@*Cš©øp%‚‹O\,ð B… B”H1x12rìøÑ ?–˜L•reËI_ÒȤi“F1xúÚghÑDj½YÚô©©T­bí„΂S¨d¼è…ÌT¸jŸÐÞÒÄÖÉÛMæF‰zân^|·¤ÿÑ£ÎÊà‡3^ì¸AÂ' %Gœh™G Œ9zIÈI“”H¢K.ÁäÈUÔtÓ9°ÉöSPCíb«ì¦ÆNA5ÁÁ]•À1°HÓ*=,7€)­ÌÝ0›h"B[N8¡ (ÚYÓ^zÐ×x©˜@Ì€˜bëäØ{ðEöÐ|•Ù‡ßFœ4ÈH%$àJz$Z.ü㥗®éä PBñÈ„IÑaKðå?Žü3ÂXáK.Ç%÷''¶ 9hµø¢Ód²‰\žtbסÀÞŽ€ F˜aCiäcI*9}<8© ð‘- ‰v%ê xL<Èa[\ÿSƒ==X晸¥)F,@)`P #„€Õ1×à‰Xb™"ŽŠ¬ÜÒ"[™ª 1£xbã]óèu@)~æ#éi©?G¾ß’”Õ‡Ù§ v&’%|ÖÜä5±éIÈ3)JaÊžRÿUÅX èD2ðäÈ€O("Éš±Ž“ÙÀ:dçç•Âp\ü‘â¾èAL1äqc¤Èe‚¥ï¡1IRÕ‚5¾d_ jÍkv"GÚÀAöÃM-‚ð =‚ÁQ™Ê•c¼BDÈÑ zq"j€‚d·ÐÅß—Od‹’8âôx4./v°Hû¤#g‘Æ‹?¥ÊÜ€²ôÊÕ(hV´œ j3†]Ü/7A8„0Ä€Ç| ¿8‚‡p‘ eG=8äXÆ1‹â±hŠn Ëe—lî/ˆ›T¹r¦3†r¢ô”о7/Ñ …í”C,o’“8`ŽA©#®ró†C0êãTÊ@ãõ;”y·g€¢¬x(ÊÀ¹.`”£@pInv±\!ùÿ,–ÿý H`ƒƒOîX¸C‹.f̈@1^¼+u† `Älµ³dåÁJ´˜S)I‘/ɹ“a ²X@ø‗ 8êaQÃGB«‚Ð#¥Ë*R@I÷K•’& –Á†À¼2h ö Z¬ÍtM™bCC¦LšxqŠfìÈ6¡Ìô9@*Cš©øp%‚‹O\<ð B… B”H1x12rìøÑ ?–˜L•reËI_ÒȤi“F1xúÚghÑDj½YÚô©©T­bí„΂S¨d¼è…ÌT¸jŸÐÞÒÄÖÉÛMæF‰zân^|·¤ÿÑ£ÎÊà‡3fì¸AÂ' %Gœh™G Œ9zIÈI“”H¢K.ÁäÈUÔtÓ9°ÉöSPCíb«ì¦ÆNA5ÁÁ]•À1°HÓ*=,7€)­ÌÝ0›h"B[N8¡ (ÚYÓ^zÐ×x©˜@Ì€˜bëäØ{ðEöÐ|•Ù‡ßFœ4H;;ücå? ¨G¨©&G‚­½¶SO?]qå?-ü3DRtØÄOU0ÁT¿qV¸À’ËqɽÀɉ­@CZ-¾¨Á4™l"—'صD(0€·#`‚fØEùX’JNFNjÀ¨|d‹.<C”Ì0ài~ÿ© N öt&8\QÉ ¬ÑÆšJ‰ñfœ)p‰*!`uÌ5{"–X¦ˆ£"+·´ÈV&ˆjBÌ(žØx×|ö Ã( cr,)ß⌡oéR¸1ˆ×¬£_ŒûX˜êõìO{ív*´e÷Í»ŸS’Ä´ÓàñÏ¥§Q‡UÄ0ÂM²¸^Dì“Ì>Æ#9ø•Ú$á…À  w°@ –y(!yÊLj^ðä!Õ8K3¬#'¼Œ†sTâv”½Á‰{éRBÜ39ùÀ‹|OÒH.šX)Ø×?Fp°§YI³RÁÿ®4‚<ÁL“Æ2ð§Yé g0X‡ðt eŒH=¨¡"B¹¨-×Ù–(`Q=›‘«G&¼T÷"÷3wyªIå3ZG¤Ô¹œ%* @K^¢š=°æ&¯‰MOâ”zÀáFAJ°¤' Ñ-x ¸Ûž¢‘ü EÄ@Y3Ö±2Xǃ0CÃá¼c½R,?zÜU¸)†Pî¹LÑ t>B"4& ƒ:ò¸ÇX :‘ !qÐ8(€¸©E¾Á”%€ÁQ^hŒWˆ9#ëʼn¨ ”ÝB_| \>Á­Qâˆ×㑹ԘÂLIΕ.´œEbH/þ€F4'ÐJ¶ô’’˜ÌdV9Ólˆ‰…1ì"É Â!Ä€!b} uò.’aÅSˆÂxÆ8fÁ<}Ñ-p£ìrNÅý¥q–B—÷¾×FñÁ Tq¤e½F‚Ͻª@þü%­y€a‘É|Ã!„ Éi*eA²>ô +z‚#ãÛ3@QVx”eà€‹\ ‚<*R 0¥:Óˆ®€!ùÿ,+•ÿý Hp`ƒƒOîX¸C‹.f̈@1^¼+u† `Älµ³dåÁJ´˜S)I‘/ɹ“a ²X@ø‗ 8êaQÃGB«‚Ð#¥Ë*R@I÷K•’& –Á†À¼2h ö Z¬ÍtM™bCC¦LšxqŠfìÈ6¡Ìô9@*Cš©øp%‚‹O\,ð B… B”H1x12rìøÑ ?–˜L•reËI_ÒȤi“F1xúÚghÑDj½YÚô©©T­bí„΂S¨d¼è…ÌT¸jŸÐÞÒÄÖÉÛMæF‰zân^|·¤ÿÑ£ÎÊà‡3^ì¸AÂ' %Gœh™G Œ9zIÈI“”H¢K.ÁäÈUÔtÓ9°ÉöSPCíb«ì¦ÆNA5ÁÁ]•À1°HÓ*=,7€)­ÌÝ0›h"B[N8¡ (ÚYÓ^zÐ×x©˜@Ì€˜bëäØ{ðEöÐ|•ñð„‘œ4ÈH%$àJz$šjrD@P;þðà PBñÈ„IÑaKyö Ã( ƒr,+ßâÌ o邸1‹ß¬£_ûX˜êýÜ^»šmÙ}H‡I€?#„u g̃J¤þÀiìð@ë7-,æ€dv•`@°€¸É­wnÚPpä¡„Ø)#zÁ ‡ |Tã,ͰŒœ3N$nQŒÛQö$î¥ËRqåä¯ñ¹@ ¤ª—?âá¥`]ü{RÎ7Â<lÀ‰@ÿR¡ôùãIÄç ¨1`ˆXÀó.®¡Œé`‚ 5T(µå:Û,ª‡3rõˆ„”ê傿®M5é>šÙLg¦ôV•€RÍXs“×Ħ'q Ìd¤4Q {ÓÝ‚—½á)É‘ŸPD •5c-³u8(34(Î;Ö+…ãÎø#É©…˜bÈåÜH‘Ëd&?Q2!“„ÁU-ÀãKb"‡µæ5;$mà ˆG䀉ß`ÊÀ`„¨/ 4Æ+D„œ’õâDÔ…Ên¡ /¾.ŸàÖ'qÄëñÈ\i7BÒ"϶´e-å G3ø–·¾u¤he8ÀJpdyG„HHŽÌas±QŠÔªÑI×PÆ…tà¾ЃŠ“ˆÚòb‰¸ûX³bô¿™¬!a”cÿÕHUfHó9JT€–¼D4{ ÍMN“ËéËJFAŠ¥0¾åFV àš¢°‰CĈX3ÖA18ç~CÛ¬“»RÀ‡#«bDÆPä1‘)â{ @@dÆ$aPª'Mq{—Ëœ"ñ½~ƒ)Kƒ¢2º Ï¯°pÖ‹ Q»….fø¸|¢Xsdt£Þ J?âbÐ3®‹Hf2•!f4sû¬Dù‰ÉLD•)uði»¨¤Ô1ÂEåP(X™’¡ÂSˆ"ulÆ8fñ:ÍÐ-pÉXžì"Ë·ýEnyôayúˆøè—A ÉHˆYAŸû0R™ŽUp¹zì U±yƒç€`M0¥£ !ã1^¡BO°ƒaa{(ÊÁ sV p‘ËÚBð>ù v¬e@!ùÿ,E€ÿý H`ƒƒOîX¸C‹.f̈@1^¼+u† `Älµ³dåÁJ´˜S)I‘/ɹ“a ²X@ø‗ 8êaQÃGB«‚Ð#¥Ë*R@I÷K•’& –Á†À¼2h ö Z¬ÍtM™bCC¦LšxqŠV°îÀƒ.tQ"Å<âÅÈȱãG€üXz`2UÊ•-'}I#“¦MÅX\àéhŸ¡Ek©õfiÓ§F¤RµŠµ:wN¡’ñ¢2Sáª}B{K['o7™É®]¼ >aÈ7âDÀR¬Šþ½ð‚ÖÈàSÍYÍPº Þrb²Ù ô„@ */ê§ËAGÅS‡?3„:ć.ÜZ§‹7å´™ž8ô‘4ÃJ‰1Ÿ Rç‡Ë5Êø§ÃåÐCMP&ØVp™ŽÎé–\6çEÑM·4¢vp>æ÷K€[vSf¿û lF!U¼ŒÛ·Ú¡ \|d4³‘Á’DŒk5cÚ²p@÷-4./êR†À'ÂTç0„ÄbL9¬%/Éï0c´ž$LxŠxâF„o0e `0BT¤‚Èãý‘´z! j€âZ·Ð…õŽÞ—OhêÉáRC0ô½XD|…Á ›¶s¢9¤(„ÛU ;<Ãíb… ;„ñè•@aYDJFóN! ¬-I㘅×d=·Àå[áÚ#è½/…Ï‚†‰H6h¢9G„‚Ë“ü‚¬>æ M”Ž2„€ÇxEó<Áiqì (+è¸-pÀE.¢!ùÿ,Srÿý Hp`ƒƒOîX¸C‹.f̈@1^¼+u† `Älµ³dåÁJ´˜S)I‘/ɹ“a ²X@ø‗ 8êaQÃGB«‚Ð#¥Ë*R@I÷K•’& –Á†À¼2h ö Z¬‚hD¨p¡Cˆ)Fà/FFŽ?äÇÒ“©R®l9éK™4mÒ(ÆâOŸ@û -ZƒH­7K›>5"•ªU¬Ð¹Cp •Œ½™ Ç TZ´k$|ÂðmĉsyÄÀ¨‘£G„ ‘4II’J–.a:ÚS¥æÍsÿ :t—Q"«0«ùáꄞ¯&ÿ8KZWT=P0ÕjÖ§××Φ½£ÁþžPÔÍ{c^ƒŒTÒIÆ­¤G…&GsŠ1¶SOÓ 5Æ#×%E‡@,ñTLõËG`… ,¹fÚ œ¬× 4äÀG| ɦE;¸ ÅBúñÀß]ôhÀG¶ôõ×”¨saÊ-èNÑA”„Vf¡n˜x¨VÇ\Sbi`‰eŠ8î¹ø¢?ö$Ð4ºðÄ ;<¡…?Z<áÏ á^"YÂÇD †\a1)©XNÇ“pŒA(…¡†Puö¡x˼Rb$¢èÖX­0óž™j¡i›rÚ—ß uFÐP þÄÿÁ.ì©!#ýI JTb¡ˆ-éàc‹RçèuµqˆšQÁxU‰×I2\ù‚XÈÜ#*©¥ÊçÏBm¾ÙjCñÄ:Düf€W`kèMïèDldZWÙe‡0ò¥œy¨%V™êcb2Œ22¡žEªš²å'[}5F§«;D«Dpv`»òÚÒK‡1·$¢Ò=‰Å„9ì«ìv”r­*ò(‘Àˆùœ÷ #ƒO5?übšÕˆ'.|‹æsî ×%}•ò`&ÉàM99æ$}䋬Rbpg¥Àâár2çéÀóôPSæÃlµÕÐC·Éµco=êàpS÷Ñš\ɉÝĘ֊2:¡QH-EÌßy¶eÓ–i2¤È1£š #}nÑ×~uÝåÛ­€øeRF¶à÷K…^½˜½=Ûµ"´lYß0µFD%p6óŠy¥yÚËzÔ€’¹‹›347\¸E`QxÝ*¤»ÇÈz°‡Â×+ïb{²‡„Ý]T@q©ˆÉ }Š(§(Ì8³Í|ÜœÛö¹Ž»‰þ_H#ùË®¨¶½y1‰pŪG£¢d™7ô çëP:Ê‚Çãhó;<…­g€¢!ùÿ,`eÿý H`ƒƒOîX¸C‹.f̈@1^¼+u† `Älµ³dåÁJ´˜S)I‘/ɹ“a ²X@ø‗ 8êaQÃGB«‚Ð#¥Ë*R@I÷K•’& jx¡Â…!J¤G¼9vühKL¦J¹²å¤/idÒ´I£‹ <}í3´h "µÞ,múÔˆTªV±nÝÚµAÂ' ÃFœX–G Œ9zIÈI“”$©d馣=UjÞ<÷7ðÏ Cw%²J±šN¡NøùjÖÉ“/cûp3YÏ 7®9hdÉ“ªWêIr7¯œØ|ýîÿìy[è˜G»“Ò±dÉÓ ¦þ:rD2ò‚ ü]fذùØÎŸ¥À€|dË[qA‰:«ÙåÚw²áTy@™‡Þaê‰ÑÞ{)‰*!ØwWþäw~=áÏÿñ`Z ØH"YÂÇ ÒÅÚ]1AÈWNãG…pŒa(Åž{P=6Ÿq#’¨B+>aÙΣt£@ÈH7b§R•ØÃ£^Šظ¹[-A¢cT8F\UPF)‰–©¸•ýWÖEi‰Æ–Ö¡–]ÛéãMïè´æ`EêvXb‡0ò“ŽÉ¢ˆ#æW"•;(Ô@–eãtTwZŽc¶ðôR^°E¤mbq^—Æù“ðÝ©Š‰br>VhQ‹Ðå•Û€}¦}Ü‘édjâ¥èE±iet#Ys28\“!ùÿ,‰<ÿý Hp`ƒƒOîX¸C‹.f̈@1^¼+u† `Älµ³dåÁJ´˜S)I‘/ Êx¡Â…!J¤G¼9vühKL¦J¹²å$˜3eÖlð Ü'öä£FŽA2DÒ$%I*Yº„•`ͪVq>ÌÊ“«×CAYò$Ú•z’Ú:šô %ui²-ìïmÕ«swnýéø1Q‘–ø<°ÌTíÓ˜œ;F<—îÖ@¿æ5@h¤j¿*T²÷:¶lªŸÛîy1(X¢~øšý pñØS“7 ­µg×Òa ìg-Ë:xË—„±SEN›{ÝïºÃ_:Z²|SÁ› {¾¹]ñû»B5^}(™·VzœíÇPËù”^áR&…Y ­[‚‡-ˆ•hX ibQ6]Z½´¡~³æßm#†‡ZRÀݧb@;torrentflux_2.4/html/images/code_bg.jpg0000755000004100000410000000165311017132666020375 0ustar www-datawww-dataÿØÿàJFIFHHÿþCreated with The GIMPÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀM"ÿÄÿÄ.!1#Qq"2AÁSb3BaðÿÄÿÄÿÚ ?û—Ôi€RMZW¹íík}öŠY•ÃqjD´ÔZÒårÍúø¿^±Ñ!çu5Ä%åëÉMÃ<ÌÕ¯GxÌæøL%@@) Ea¿(Ûúmnÿp×Y–ÄÀ1j„ÕRZÒæòËúø·N±y×—ÔiÀQÏZV¹-íkýw‰˜<ß ‹º€ Uˆ,6åoMíÛî4œóºš2òõä¨Ážfjˆ÷£´;9 µ{ñOEimœõ{_oWOy—Ôi€RMZW¹íík}ö†dæŸü7¾h»çííÙìý.ߨ‡Ô×——«%7 ó39Úôw€ç ²+†âÔ‰i¨µ¥Êå›õñ~½`ºÈ ¶&‹T&ª’Ö—7–_ןuo„ÂYšVò¿¦Öï÷ ƒÍ𘻠ˆÕX‚ÃnQvôÞݾà ëËꎴà (ç­+\–öµþ»ÂQypDÏ 5AjÑÚ³0Ü¿;ùµ£QÏ;© #//^JŒæf¨z;B@ó¼9š^\C9[ŠÂ¬Ïývø6€òI4µu’©vÉ ¿£îoš¢”$’L j]ÏKóÏøŒ6½¼B1$‘dñs— sþ"ï1yäÒÕÑJ¥Û$âüJ¹~j„ 3ð‰éÕÔ³ñ´6qÙ¸Šv}Úï»ßxÐI4µu’©vÉ ¿£îoš¡ P’He0©w=/Ï?â0Úöñ1$‘dñs— sþ"ï0„ç“KVE:—l“‹ñ ?¸¿5G¬>A%Ža<À2ê—Ó0pÙC_ó˜BÿÙtorrentflux_2.4/html/images/user.gif0000755000004100000410000000161511017132666017754 0ustar www-datawww-dataGIF89a÷ÿÿÿµµµ‹‹‹”””kkk{{{JJJ“ò.÷!÷!˜ÿ)˜ÿM’òâýÅ”ÿ!Šæ€æŒøš÷!wÜ {ÞßúÂsÖoÎb¾kÎM”gÆò.N÷!D÷!Dÿ)LÿMZòEýÅÐÿ!Kæ?æ5øB÷!NÜ -Þ7úÂËÖ/Î)¾Î'”Æ!.òð!÷ô!÷ô)ÿüMðÿòåÅýü!ÿüæÚæäøõ!÷ê ÜÚÞÜÂúùÖÔÎ̾¼ÎÌ”’ÆÄ.xò!r÷!r÷)zÿM„ÿsòÅÛý!zÿlæbærø!|÷ YÜbÞÂ×úZÖSÎH¾RÎ8”KÆò´.÷³!÷³!ÿ»)ÿ×Mò¢ýëÅÿ¸!æ™æ£ø±÷©!Ü™ ÞúèÂ֕ξ‚ΔeƇæ.òê!÷ê!÷ò)ÿÿMýÛòøÅýí!ÿÐæÚææøà!÷Ð ÜÍÞ÷ÂúÅÖÂγ¾½Î‹”ºÆòë.÷ï!÷ï!ÿ÷)ùÿMòàýúÅÿò!æÕæßøë÷å!ÜÕ ÞÒúøÂÖÊÎǾ·Î”ƿò.¯÷!®÷!®ÿ)¶ÿM¶ò±ýÅëÿ!¹æ¨æžø±÷!¸Ü ”ÞúÂç֕΋¾}Δbƃ!ù,jHP`€ƒ `…(`à!Ä@`ñ" Bv„H@Á‚ ŒLHàÁ"¬,H@„*Ì$HÀ .w$@ à D=~Ô°á‚Pž:dx:ÔCT‚ ;torrentflux_2.4/html/images/time.gif0000755000004100000410000000114111017132666017726 0ustar www-datawww-dataGIF89aæcäêôÂÂù¹¹·ÂÓòõúîò÷¥¥¥ÝÞÞ´´´µµµÂÂÂííí»ÇÚÂËÔéèæ½¼¼êîöçèè³³³èçåîîîÓÛèÚãñÚÞäÏÛ샊•ÂÍáéééÊÒß®¸ÅÇÑ人ºÅÑÚååå±´¹àçò©©©èééÙÙÙ¼ÈÛž¢©ßßßÐÛåáàßÓÓÓ¾½½íóúÏÏϸ¸¹¸º¾ÎÖã±°°ÍÕâÝÞß³¼Í»ÅÓ´½Î¼¼¼ÀÀÀÀÀÁ··¸– °²¾Ó¬·Ê­­®ÍÏѾÉÔ°°±ûûû¯¯¯¡«½ÍÍÎñïíÂÍØÉÏØ¦¦¦°°°âáàËËËÃÃÄóñïÃÎÙËÓಲ²ðîí¦¨«®®®ììì—¥¾ÃÃ䤤ÜÝÝüüüíììöøýóóóäääýýýÿÿÿ!ùc,¾€c‚O. ‚‹‹Abaa,\ZLŒŒ`Naa\\1-0—c4_\aHT ¢+RJ!C\a= :[Œ  aaŒ>`^__^a`M‹3/b^b_8a^`F‹Ûbb?`_Œ5Ûaè\`b‹G_ÙÛ€À'`Q ^ D@âÆ1ø.i0E‡, âq©@Ž´¡CWp1IªDYðÀÄîDÉtBP ;torrentflux_2.4/html/images/seed_on.gif0000755000004100000410000000175011017132666020412 0ustar www-datawww-dataGIF89a‡!#% -3H:RTwZ€aŠel™ožq r¡!{¯!}±"€¶#·$‡À%ˆÁ%‰Ã&ŒÆ'’Ï(”Ò-šÙ8ŸÚ9 Û>¢Ü@£ÜB¤ÜH§ÞMªßO«ßS¬ßX®à]±á`³âc´ãeµãh·äj¸äl¸äm¹åoºåt¼æv½æ{Àç}ÀçˆÆê‘Êë™Îí›ÏíÐí§Õï³Úñ½ßóÖìøäòúöûþÿÿÿ!ùÿ,ÅwH° À*\˜@ *x¸£"Ž"VȱcB…6nÄpá"Æ "rœ°á)Dˆ`QƒÆ‰ ;r0£(؈aâCÎ "PÀ˜AÁ 5`¨A‚#ˆ%m0@ÁP'޲ˆaÇàˆÊ¢ÄÊ6`4 €¶@„3PQã…#ÄÑ /(^ @Ž%TvŒÈ¢"† 8lD–ì1¢‰ 2d¬Ð(yéÓè0Èz`@;torrentflux_2.4/html/images/favicon.ico0000755000004100000410000000427611017132666020436 0ustar www-datawww-data ¨( @€€€€€€€€€ÀÀÀÀÜÀðʦ """)))UUUMMMBBB999€|ÿPPÿ“ÖÿìÌÆÖïÖçç©­3f™Ì3333f3™3Ì3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿfÿ™ÿÌ3333f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™fÌfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌf™f™3f™ff™™f™Ìf™ÿfÌfÌ3fÌ™fÌÌfÌÿfÿfÿ3fÿ™fÿÌÌÿÿÌ™™™3™™™™Ì™™33™f™3Ì™ÿ™f™f3™3f™f™™fÌ™3ÿ™™3™™f™™™™™Ì™™ÿ™Ì™Ì3fÌf™Ì™™ÌÌ™Ìÿ™ÿ™ÿ3™Ìf™ÿ™™ÿÌ™ÿÿÌ™3ÌfÌ™ÌÌ™3Ì33Ì3fÌ3™Ì3ÌÌ3ÿÌfÌf3™ffÌf™ÌfÌ™fÿ̙̙3Ì™fÌ™™Ì™ÌÌ™ÿÌÌÌÌ3ÌÌfÌÌ™ÌÌÌÌÌÿÌÿÌÿ3™ÿfÌÿ™ÌÿÌÌÿÿÌ3ÿfÿ™Ì3ÿ33ÿ3fÿ3™ÿ3Ìÿ3ÿÿfÿf3Ìffÿf™ÿfÌÌfÿÿ™ÿ™3ÿ™fÿ™™ÿ™Ìÿ™ÿÿÌÿÌ3ÿÌfÿÌ™ÿÌÌÿÌÿÿÿ3Ìÿfÿÿ™ÿÿÌffÿfÿffÿÿÿffÿfÿÿÿf!¥___www†††–––ËË˲²²×××ÝÝÝãããêêêñññøøøðûÿ¤  €€€ÿÿÿÿÿÿÿÿÿÿÿÿ ¼íêì ìCCCm ìCêmêêêêêêêêê ¼CmmmmmmmmmmmmmmC’ ïmmmmëìí’’’íìëmmmmêì ï mmmì÷ïï—r—÷ï÷ìmmmmì ðëmë’wwwwwww—˜ïíëmmmí ëëì÷ï—ww|äääää|ww—ï÷ìëëmC íCëëì÷ïww|äääääääää|wwï÷ìëìm Cmìì÷ïww|ä|||ää|||ää|wwï’ìììï ’ììí—w|||ÀžÀ||ÀžÀ|ä||w—ïìììmê mììï÷ww|||ÁÂÁ||žÂÁä||||w˜÷ìììCììírw||||ÁÂÁ||ÁÂÁä||||wrïíììê÷ìí÷ïqwww||ÁÂÁ||žÂÁ||||www÷÷ìíëìêíí÷‘Uwwww|ÁÂÁ||žÂÁ|||wwwUr÷í’ìmë’’ïrUwwwwwÁÂÁ||žÂÂÁžžÀwwUq÷’’ìêì÷÷ïrTwwwwwÁÂÀwwžÂÁÁÁÁwwUq÷÷÷íêìï÷ïrNwwwwwÁžwwwÁÁ———————wr÷÷ïíêmïïïìNTUUwwž—Á—r÷ïïímêïïïíOww˜ÁÂÂÁÂÂÂÂÂÁ˜˜ríïïïììïï÷r—ÂÂÁÂÂÂÂÂÁ˜r’ïïëïêíïìr˜˜˜˜˜˜»ÁÁÁÁÁÁ˜ì÷ïê÷mïír˜Âríï’ë ï¼ïìr‘ìïm ÷m¼¼÷ërÂÂÂÂÂóóóóóó‘ë÷¼¼÷ë ê’ðð¼÷ër˜óôôôôôôñ˜rë÷¼ððê ñïñð¼ïìmr혻írmìï¼ðð¼ëï ïññð¼÷ìëêlllêmì÷ðññðìí ïññññðï÷÷÷ï¼ñññòë’ ñmì¼òòòòòñññòòòòòñ÷mï ’míñòòòòòòòò¼÷mì ÷mëíïï’ìmí ÿàÿÿ€ÿþÿø?ðèÀÀ€€€€ÀÀàðø?þÿÿ€ÿtorrentflux_2.4/html/images/folder.gif0000755000004100000410000000117711017132666020254 0ustar www-datawww-dataGIF89aæ¼ÓëÅÇÉ'}Õ:i™âïû“ÁïÎâøùùù«Îó.„Ü1ˆâ˜§¹[¡çñññ&g¨ââ㣴ÆÑäù®Ñõ¨Ææ(}Ö«´¼3†Ý³ËäîöÿÐÕÚƒ·ìöúÿïõý­Æâ3~Ì4‰á1‡à¿ÅÊñøþ#wÍ i´ÿÿÿAâ8ÏÖØÚ¨Ìò‰¨Ès„–ïöþÆÊÏ­·ÀÊØç/‡âð÷þëòúÌÖànÀƒ¬ÜÀÁÉž³àðÿ—Âï¢ÃæÕâñnŸÒ‹¼îPq’D’ãÕ×Ù°Ñó²Òô,€ÖËÍÎT›æ‘µÚˆ“Ÿ¤·Ì©»Î…¹ï–¤D†ÌPŠÈ ­»|¨ÖÃÔç¯ÎîÇØêÔàëõõõçè霣©ÃÉÐÁÌØÌÏÒœ­°¿Í\”ÐõüÿÕÕÖ¿åK—ä¸ÕõÑãôîúþ¡Çï×äñf‘ÂkŠ«š­Â:…Ôk¸³Îìæï÷°³·äæçbz“ºÁÉ­Çä½ÅÌG•æ%qÁ·¾Åˆ¹íÇßø¾îÝèñÖæ÷´Òñ´Óõòòóýýýÿÿÿ!ù,Ü€‚ƒ„…†…(! „}Y!DUr3"l@n.S]%py"eqH/X %,Rqqz1%%WNcS_:Q,,2u 8POdawÓb;[-k<))AB|{IT*\Jv=x99F7_Ls&&~€)  ƒ&hþT¨áƇ‡ €‘ ˜9¡àá †P0ÂA…?~ΤrI| p@#G¨ðÆŠ—š„B 1`E›‡5XbƒQÒ?;torrentflux_2.4/html/images/download_owner.gif0000755000004100000410000000056511017132666022022 0ustar www-datawww-dataGIF89aÕ8àCËV5ÅG¡ aÖrIÍ[‘埂à‘sÜ„WÒiun1ÃB%½6äžJÍ]‡BËTº/·+”æ¢WÓiµ'¸. ©BÊT§,Á>¯=ÈO+¿<GºïÅ:ÇLQÐc´&ŒPLÏ^™|bÖtNÏ`uÝ…YÓk/ÂA™¥ê°ÍôÔ¹ïÂÿþÿ!ù8,’@œpH,@ a$>h¶¨öhRj´p Õ(EKá2S ‰Ù¥`!j€ÙŠÁÔQA, 3. B5 wD 56 7763/ C05("œ)2D%34 # $1E-P6£FQ'65MB8&ÏÖרA;torrentflux_2.4/html/images/tar_down.gif0000755000004100000410000000121111017132666020603 0ustar www-datawww-dataGIF89a澦‚ØÑª½§wÿúêw,ù׋ѹ–ãÒx¿³–{m@ËɷưïÜ»ë®4iT(É£gâÔ$ã۲Dž(ºsôçÍÆ·“êÜÙÅ™áÒ¶L3þüÒÿýäβ„íÜ®àÌ¢7 ©˜o©„MÑœEÿì«ÖÕÈÒÍ£š†Vê¼gÿä£Ý̪ÿÿéìàÁ¥‹dz^7’yYúíÓŒPÄ£tŽsFþóÚñᾋzXfR0g\2ðÜÁŽm>êџį}ïÔªšbÄÀªïÕ¦ÐÁ¦ÔÁŸÐ›KååÅåäÏïäÌïéÀïïÌß°[Ôʪÿÿ´þîÁÍžU¬ }ÆÆŸåã¼Å¿¨uX/æ×·ôíØÕϼ÷ëÌþçÂÿÿ÷À¶œ²¡ƒÁ¸êäÐȼ–ÿÏxÐÄ—ÝÆ–Æ:ѽÍͧ¶›_±…Šiȵ‹È¹ŠÏ§YؤMi\?VB.ɨyè´AÍͬ°”`äч»¶ôéж­•ÔʳæÂYÝβİqÑÆ¡×ŤêÌ¡ÿý£Ò˜AàáÞ!ù,怂ƒk1ƒ‰‚#@ \j‡ƒJZ0:›(b?~)$,6*C*6,Z$( ~_T,zh^K,T D|-77!A=o N)"/3q;'`wäv X38íM&@Èà`åž3.päHB‚®PÐ…Îlräx‚D”ˆn²¬(Q…Æ–Œs6D!Ãä ®Œä@£NÊ$púÈáO /†(`¤H€ e¦€¨¡(B›ò¸Xª¨j¦U;torrentflux_2.4/html/images/green.gif0000755000004100000410000000201311017132666020067 0ustar www-datawww-dataGIF89a÷cks{!{!!„!!Œ!!”!)„))œ))¥))­))µ))½)1œ11µ11½11Æ11Î19­99Î9BµBBÖBJµJJÆJJÖJRÎRRÖRZ½ZZÖZcÆccÞckÎkkÞks”ssÞs{{{{Ö{{Þ{„„„„焌ŒŒŒçŒ””””甜œœœçœ¥¥¥­­­µµµµÎµ½½½ÆÆÆÆ÷ÆÎÎÎÖÖÖÞÞÞÞ÷Þçççç÷çïïï÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ù>,è}ôÁƒŒ0fÜè1°!+Z Œ1c†Ž†>^8á€*Рqc "\1"„†dظÈcÅ PäÈ"D n,¤ÑbB‚,jÔ`1bCpè8hB‡*\ôÜ À©0`ˆáÃ#:XP 1``@!C‡2H @3b(0°—‚á½<àÁãÆ ìüô@‰˜gÐX  ª„ €àƒ¡4d<( @ ìÀxÆ ,€pÙtCBqHÕÁØwÃo¥ò0î# ;torrentflux_2.4/html/images/kill.gif0000755000004100000410000000060311017132666017725 0ustar www-datawww-dataGIF89aÕçNÿÿÿúàØåËÃëÑÉÞļѷ¯‡ne¹Ÿ—×½µ¯•Ī¢' Ѹ¯·•(̲ªÀ¥ž_E=nUM¢ˆ€¦Œ„Z@8ºŸ˜)Ö½´ †~¶œ”. ؾ¶>$åÌö›”œ‚z²˜e]dKC½£œª‘ˆ€f^¬’Š–}t¡‡¼¢š³š’. Žtl©ˆƒ{vn̳«À¦ž»¡™D*"sZRÁ¦ŸÅª£!ù, À€pH, ȤRyDV‚¨€PI6)Bc±häQƒèh E¤ÐAhG•ÃPY,‡Áñ‚  $.+ ,B& z ~  2G76¢5' ›"-(›8P10 bH3Q)! VÏH%KMKâ~FåBA;torrentflux_2.4/html/images/run_on.gif0000755000004100000410000000113411017132666020272 0ustar www-datawww-dataGIF89aæÿÿÿì.ÌáýáÓûÓã¾å¾ÄìÄ·ß·ªÑª`ˆ`°Ø°ˆ°ˆ’¹’(Å)¸8_8¥Ì¥ªÒª™À™.)“º“y y±Ù±3[3GoG§¯×¯{£{·LtLT² />e>´–½–4Éo—o¥Í¥ƒ©ƒ”¼”xši‘iX€Xz¡závžv†ª„šÁ𕽕™Á™¾æ¾uu¶…­…YYW± gg?EöþöžÅž‹³‹!ù,¹€‚ƒ„…‚,‰Š‹‰"‚0•‘‘œ +  ›/ .  *¹  $<4 %œ2  à Ç) «3!=é>: ÇA Œ€A9ŽB©Å… 1,¡ªS¤•PÜ `‡¦Uš"ðàÁ„¦Š;NªÔt⇡—ƒ;torrentflux_2.4/html/images/download.gif0000755000004100000410000000110111017132666020573 0ustar www-datawww-dataGIF89aæM­­­õõõööö÷÷÷ëëëÔÔÔ°¯°½½½ûûûtttÇÇǸ·¸ÛÛÛCCCÆÆÆÍÍÍÕÕÕùùùÈÈÈ™™™===§§§ÒÒÒ±°±ÂÂÂòòòêêêVVV¡¡¡”””‘‘‘¬¬¬ÓÓÓÊÊÊkkk³³³|||¸¸¸“’“ººº\\\ÚÚÚjjjœååå©©©### ËË˲²²µ´µ¬«¬~~~ŽŽŽ«««¨¨¨   ¹¸¹¾½¾žžž†††JJJ¢¢¢¤¤¤ìììÜÜÜúúúäääþþþýýýÌÌÌÿÿÿ!ùM,ž€M‚ƒ„…†D†„EI‘IEHEEH…!F5DD F!„*LF. HL/„D B (F'D1‚@LH ·„ HI KKIF "ƒ>H,9Ü2&„FE 3 0L=…?8 @èHR`œ¡‘‚”H‚äF#AšŒaã¡Å‹;torrentflux_2.4/html/images/locked.gif0000755000004100000410000000106511017132666020236 0ustar www-datawww-dataGIF89aæi’sFQE9N/(èÏ4ìÓ4ëÓ2J0'I92e7'Y:8J<4íÒ*ðÔ3…E*âÄ27"!îÖ+>"U1$ÓÀmH04 S-G,ôÛ+óÚ-ìÑ2íÓ0…p_¹«æÎ3¾g/¬‰;D-3îÑ7ψ.o:)åË-‡ne ©ÊåÙXêÌ2ßµ2Áj1a2"¿Äˆ„jC:FlG6çâˆíÏ1ܪ1×™0ëÒ2¨®±ìÏOwD/¶¶·îàP©…PzJ9?)&d7(Z1'?+(õÜ.’bRîÐ1xH9²d.èÐ2•SêÒ3êË1´À¥ñãBЇ1lV7íÕ3›†B+&åÆ3æÈlA*'”¢¾Ç¦0êÏ/å¿.ùœiUBËy2íÐ1žt1Õ™,^83íÓ5Ò¼<â»3À“1K,'{V7ÏЊ~WG½¹¡ðÕ4Y8+!ùi,’€i‚ X‚ˆ‰ƒƒLŠŠNŠFˆŒ‰W”-Š_0”‚Q6!@Jf/*\VBg^dŠhY`Z U95O>2H1 ,8Š<3(4E$'SŠ7?#KPGI&‰AbD)MT:=R "a[c eŠ; Ò…‚ J‚J¬0€°!Â@;torrentflux_2.4/html/images/downarrow.png0000755000004100000410000000561211017132666021040 0ustar www-datawww-data‰PNG  IHDR‘h6 pHYs  šœ MiCCPPhotoshop ICC profilexÚSwX“÷>ß÷eVBØð±—l"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ Hˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:ØOHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©™(G$@»`UR,À ¬@".À®€Y¶2G€½vŽX@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù@+Í—¤ã¼è\¨”LÆD *°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9\@úÛÈ 2ŠüмG1”²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V5cX7vÀžaï$‹€ì^„Âl‚GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±XF¬&î!!ž%^'_“H$É’äN !%2I IkHÛH-¤S¤>ÒiœL&ëmÉÞä²€¬ —‘·O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwRPÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘fæqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup@,õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046l18cðÌcèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡só5¦KË—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã§›§Âóç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËýø¿áyòñN`Áå½³k™¥5»/ >B Yr“oÀòùc3Üg,šÑÊZú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3gAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF§IDATxÚbüþý;)€…áØ±cDª¶²²b"Éø×?Y0E}’ àì-s'`q`úóãÏŸ? ,,,Øý€ ~¾¸ÏÀÀ (!Å8L!Þ?Ÿñxƒ4O“£Å~ñ÷°K(B¼áŸÁÀÀ°iá ì6À%˜8xØ%•!þAVÅIK—.e``àÿñZðÿW8—€àŠ0U㌬JÉ %~VFR“7`š:4¿sÑîGIEND®B`‚torrentflux_2.4/html/images/dtree/0000755000004100000410000000000011026130123017366 5ustar www-datawww-datatorrentflux_2.4/html/images/dtree/join.gif0000755000004100000410000000010511017132666021031 0ustar www-datawww-dataGIF89a€€€€ÿÿÿ!ù,Œ€Ëí«žœ(Òë,ÞGùj4–bI¨¤®A;torrentflux_2.4/html/images/dtree/plus.gif0000755000004100000410000000013111017132666021054 0ustar www-datawww-dataGIF89a‘€€€ÿÿÿ!ù,*”/€Ëí«žœ Zû"Ì'ÍhžnÁy&ª¢‰gŒªS’ÙuM:½÷¼¯+;torrentflux_2.4/html/images/dtree/joinbottom.gif0000755000004100000410000000010211017132666022253 0ustar www-datawww-dataGIF89a€€€€ÿÿÿ!ù,Œ€Ëí«žœ(Òë,ÞGùjÜH–扦F;torrentflux_2.4/html/images/dtree/minusbottom.gif0000755000004100000410000000012511017132666022454 0ustar www-datawww-dataGIF89a‘€€€ÿÿÿ!ù,&”/€Ëí«žœ Zû"ÌM3€ˆ”e‚*šˆ:,k¼ÙuMöçz^;torrentflux_2.4/html/images/dtree/nolines_minus.gif0000755000004100000410000000153511017132666022764 0ustar www-datawww-dataGIF89a÷‚‚‚€€€!ù,:H° Áƒ*\˜0€Ã‡ Ñ E„ f´8àŸG6jœXq$F’!BdȲ¥Ë—0;torrentflux_2.4/html/images/dtree/folder.gif0000755000004100000410000000056411017132666021356 0ustar www-datawww-dataGIF89aÕûûûïïïÛ·RÌ™4äääÁÁÁ£q Â*···žlº‡"œjÉ–1½Š%³™gÛ·qµ‚ n˘3ÿÿº°~Å’-§uÇ”/¦¦¦¥s ·„«yÈ•0À(ÆÆÆ®|šh¨v¬zÿÔoÿø“ëëëÿÿœÿÛuÿäÿ¶¶ÿÿÿÿÿ™!ù.,‘@—pH,ȤÒ5L@9`Y)”az@`0¤¡ØD•Àpbm»Û£ÏÑ:ÙïøÖ1Ä´þ€+C-%‰Š‹-…B-*“”•- .-)žŸ- ™ -(¦§¨-!™ -$¯°±-|Bg " C+ÉÊËD&ÒÓÔRKJA;torrentflux_2.4/html/images/dtree/empty.gif0000755000004100000410000000007611017132666021237 0ustar www-datawww-dataGIF89a‘ÿÿÿ€€€ÿÿÿ!ù,œ©Ëí£œ´Ú‹³Þœ;torrentflux_2.4/html/images/dtree/minus.gif0000755000004100000410000000012611017132666021230 0ustar www-datawww-dataGIF89a‘‚‚‚€€€ÿÿÿ!ù,'œ?Ëí«žœ¡Zû"ÌM3€ˆ"”e‚*šˆ:,k¼ÙuM¶ܺ»ß;torrentflux_2.4/html/images/dtree/base.gif0000755000004100000410000000202011017132666021002 0ustar www-datawww-dataGIF89a÷ûúüùøúiÍÿŒßÿ¾¸ÇkÎÿðïóÙÿ˜åÿFF™ôóöòòòQÁÿìëïK¾ÿ´´ÜƒƒµÞÝéÏÏÒwjНðÿƒÛÿ”Š£óòõóòöÔÔ×mdßßàÌÌÓ­­ÇŸ³ËšÎë±°ÄÐÌׇ|˜œçÿ¶°Â¼»×|×ÿÖÖÛ»»ÖQQ™nn¡ŸŸÆ3²ÿ9µÿÑÐÚàÿl_—Œ¦V¯îÉýÿ  ¿~×ÿ éÿxÔÿk‰ØÎÉÔºÞùùúýüýÞÞßÃÃÑžèÿÒÑà´´ÕÃÃÌöõøÜÛä‚v”p„¿–äÿÂÜÊÉÝ~z·ééé{£rlÔÔåk`‡‘‡ ¦ž²âââjÎÿ_QvyÕÿ…¨^PucÊÿ½nn»ºááâ®ðÿÞÞëÀ½Ï­ðÿÓÓÓììì[[™eWz´´Éª¢¶›’©ee¥ÂúÿÈÃÐÂöeZŽ¥®Þqp¥Š‡´WÄÿƒ¥¥Ñ´óÿ“·îîîÚÚå˜Ïääç§Ìèg¤æ‘¹Ð±©¼ááïbÉÿÕÔæVÃÿ¡§ÀznðîòližÜÛãšš¿³Çã_§è——ÉFF¢œ˜±g†È;¶ÿ¢ÐãŠÞÿ\•ãTÃÿÂÂ×8±þÄ¿ÍÔÔá ±ßÜä¾óù®®ÌO·ùq¼ô¾¾ÓÎÎÖÄÃÜ­­Âµe[‚‰¨àÿÿÿ!ù£,íG ¸O!;IP¬` ÃQa2ññ)$:˜„høp”K{aš‘Ì‘&tÅáã]æP°1À Ÿ!+]ä11Á/j‰¢`%‘CSn¨p JF ¬ `IÄ •£JÈpÀ špLhÖ"-m¥„M¶+ÿè™´¦E¡ ¨áØÑÉr%H@ˆDÑ•^êôYÀ%š è\[iÉ1=$má +#t’²á'*²h8#µ#/‹@”é`ÈÊA)ÁÈ•+dâPº¶¹óç;torrentflux_2.4/html/images/dtree/nolines_plus.gif0000755000004100000410000000154611017132666022616 0ustar www-datawww-dataGIF89a÷‚‚‚€€€!ù,CH° Áƒ*\˜0€Ã‡ Qà¿fpQàFƒÿ‰9àcÁKVäˆq%A“/!BdH³¦Í›8;torrentflux_2.4/html/images/dtree/line.gif0000755000004100000410000000010211017132666021016 0ustar www-datawww-dataGIF89a€€€€ÿÿÿ!ù,Œ€Ëí«žœ(Òë,ÞGóí}W(Ndùœh;torrentflux_2.4/html/images/dtree/folderopen.gif0000755000004100000410000000057011017132666022235 0ustar www-datawww-dataGIF89aÕïïï¥s ûûûÌ™4ÁÁÁäääšh n˘3É–1žlœjúûü···ÿÿ¥Æšðäz½Š%Ï¢&§u°~â³CÂ*¢p ³µ‚·„׸@Ú¿lÿë„™g÷ð‰¦¦¦âÁPÉ !ýÕp¤r ÿׄº‡"£q È•0ÆÆÆ¬zÿäÿÛuÿï‰ëëë¶¶¶ÿø“Æšÿÿœÿÿ™ÿÿÿ!ù5,•ÀšpH,ȤR8 (€@9 Y Kaz¬Ê¾_ZĤÉ`(€!‚n[­ªÔ0AƒÙïxÙ¤!Œùÿ€~!'/}3mm31%†51ˆxw21# ’-žŸž" ’2+ª«+5œ3,¶·¶|B§ÀÀ$  D/ÎÏÐE.ÖרRKIA;torrentflux_2.4/html/images/dtree/plusbottom.gif0000755000004100000410000000013011017132666022300 0ustar www-datawww-dataGIF89a‘€€€ÿÿÿ!ù,)”/€Ëí«žœ Zû"Ì'ÍhžnÁy&ª¢‰gŒªS’ÙuMúÎ÷~_;torrentflux_2.4/html/images/dtree/page.gif0000755000004100000410000000110611017132666021010 0ustar www-datawww-dataGIF89aæûûûïïïøûÿíöÿÁÁÁäääýýýØëÿÀßÿþÿÿóùÿÃáÿôôõùùù•Ãkt¥Îçÿ^aU§í“ªÒzƒ°ÀÀÿÙá턛ʊ¨Ùäñÿ‘¸ê’¼ïs~°õúÿ÷÷÷£ËÍæÿºÝÿØåömw¨ejš‡¡Ò޼³åŒ®ßÎÓÿöúÿgmžüýÿ}‰¶”¿òÆÆÆþþþÛç÷ip¢oz¬r|®t€²‡©ÜÑéÿÉäÿ···ëëë¶¶¶éõÿux£áðÿÛíÿÿÿÿ!ùA,£€A‚ƒ„…†‡ˆ.6‹Œ65‡@  5†0@¡ 15†'¢"5±/†(¡<<)9†,¸¹>Ç73Ê„Î<ÐÆ7 #ÕƒºÚ?788ß‚&ÙÑäæ 2éA-í7å +òöæB×£ Áƒ*@`‡Ã‡ 0 €Ž‹/vBÄÑP ;torrentflux_2.4/html/images/user_offline.gif0000755000004100000410000000022211017132666021447 0ustar www-datawww-dataGIF89a³ JJJkkk‹‹‹{{{”””µµµÿÿÿ!ù ,?0ÉI%A¨j[ È…†˜'Š!š4ÝjÈaÔw…;›ì·ÛõDˆ#KŒB3Að Ž>OK¹¼;torrentflux_2.4/html/images/delete.psd0000755000004100000410000003052611017132666020264 0ustar www-datawww-data8BPS%8BIM%8BIM$) adobe:docid:photoshop:b7fb2565-126d-11d8-9e95-e6b4adb49bd7 8BIMíHH8BIM&?€8BIM x8BIM8BIMó 8BIM 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM8BIM8BIM@@8BIM8BIMAdeletenullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM Ø0¼ÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀ"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ??TêUýS>š3ò+}y¶ª›m5ïnÆmxkv·è1WÁê½ag¦QoQÈ{ìÊ¥·Ðn±Í uŒo§fç–¿{ïb]K ¬×Ö:••tÌ«ü›¶‹Ð×X÷z•ícšýÍ>Ç¡ôþŸÖmë}2ëz^Un¯*‡_{¨±­-mŒw©fæ5¬ØÆûÞª’lowãÝÑŒE—‡‡ú·|?ô_ÿÙ8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIM"&MM*bj(1r2†‡iœÈHHAdobe Photoshop 7.02003:11:08 21:36:37 ÿÿ  (&HH8BIM Úmopt€XÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿXTargetSettings autoReducebool ditherPercentlongX zonedLossyObjc ZonedInfo emphasizeTextboolemphasizeVectorsbool channelIDlongÿÿÿÿfloorlongzonedHistogramWeightObjc ZonedInfo emphasizeTextboolemphasizeVectorsbool channelIDlongÿÿÿÿfloorlongreductionAlgorithmenumReductionAlgorithmPercditherAlgorithmenumDitherAlgorithmDfsnlossylongcolorTableControlObjcColorTableControl lockedColorsVlLs shiftEntriesVlLswebShiftPercentlongClrTObjc ColorTableClrsVlLsisExactbool numColorslong€transparencyDitherAmountlongd interlacedbool noMatteColorboolMttCObjc NativeQuadBl longÿGrn longÿRd longÿ fileFormatenum FileFormatGIFTrnsboolrolloverMasterPalettebool zonedDitherObjc ZonedInfo emphasizeTextboolemphasizeVectorsbool channelIDlongÿÿÿÿfloorlongtransparencyDitherAlgorithmenumDitherAlgorithmNone8BIM¡-msetnullVersionlong , ÿÿ‚8BIMnormÿ(è(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpÿÿzBBB8BIMnormÿ(è(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 38BIMluniLayer 38BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpÿÿ::::8BIMnormc(è(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 48BIMluniLayer 48BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrphóïhøóÿøïóÿïïóÿïïóÿïïóÿïïóÿïïóÿïïóÿïïóÿïïóÿïïóÿïïóÿïïóÿïøóÿøhóïh£×ùøøøøøøø÷÷÷ôؤÛôëéçæååääããâ×ÓÏþëñîêêéééèçäåà·èùêïíîéççæäåèäߺèùèëîÿ÷åäãâõÿçÝ»èøæêé÷ÿôãâôÿôãÞ»èøåèççõÿòòÿóáâß¼èøäèèæåôÿÿóããåà½èøãçèçåóÿÿôååçâ¾è÷áæææõÿôôÿöèçã¿é÷àäæöÿõæçöÿ÷êã¿è÷ßâéÿöåæèéøÿîã¿é÷Þâäéæåæèèêíêä½èõÓÛÜÜÝÞßáâãâãÝ´ëÓѳ··¶¸º½¿¿¾¿¶ÀÓ¤ÓæççççèèééééçÎ¥»ÓÚØ×ÖÖÕÔÔÓÓÑÎÒ»×§‰}qkieca[XN>mÍß‹°Ÿ‰†ƒ}zqedV1ËÙ¢•œsqnci|^T7ËØu‹›ýÍe`ZRÄüpJ:Ì×m„‚ÌÿÄYS¾ÿ½UN9ÌÖg~vmÄÿ¶µÿ¹FHQ9ÌÕ_uumf¼ÿÿ´JIMO6ÌÓXqrlf¼ÿÿ´LKNM4ËÑPkkiÅÿº¹ÿ·MHJ/ÊÐIapÉÿÆ`\Âÿ¿QB+ÉÎBV~ýÊba^WÆüg8&ÈÍ9S^zd[`^SYjH:!ÇÌ.GOLOTSQNE;<5ÊÏe&.21210-+'"\оÑÈÉÊÊÊÊÊÉÉÈÇÆÍ½ïæÓÐÏÍÍÌÌËÉÊÇÄâðç‘qcUNJFDA:5)RàÕt Špmkfc`UGD3ÂÑgŽ~‡iXWRELa<1ÄÑYq†ýÅJB:0¹üQ&ÅÏPjjÃÿ¹90±ÿ¯1)ÅÎId[Sºÿ§¦ÿ¨+ÅÌ>[\QG®ÿÿ¡"%ÅÊ6TXPF®ÿÿ¡ÃÈ-NNL¹ÿ¨§ÿ¡ÃÆ$AS¿ÿ¸7.°ÿª ÁÄ3cý¿<80$³û6ÀÃ/=_C570$:¿Á",(+/*%¿áH  >áôâÀÂÃÃÃÃÂÁÀÀ¿¿àóñÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿÿóÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóóó8BIMPattÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ŒŒ‹‹‹‹Š„ÿÿ“’Ž‹Œ‰pÿÿ’‘’‹ŒŽ‹ˆrÿÿŽ’œ—Œ‹‹Š–œ‡rÿÿ—œ•‹Š•œ•‹ˆrÿÿŒŽ–œ””œ•ŠŠˆsÿÿ‹ŽŽŒ•œœ•‹‹Œ‰tÿÿ‹ŽŒ•œœ•ŒŒŠtÿÿŠ–œ••œ–Ž‹uÿÿ‰‹–œ––œ—‹uÿÿˆŠœ–ŒŽ˜œ’‹uÿÿˆŠ‹ŒŽŽ‘‹tÿÿ†‡‡‡ˆˆŠŠ‹Š‹‡nÿÿ€nppoqrtuutuouÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfTLEA@>=;860&CÿÿUlaTRPNLKE>=5ÿÿOc[_OFEC=@L:3"ÿÿHU_›}>;72xšE-#ÿÿCQP}œx63tœt40#ÿÿ?MHCxœooœq+,2#ÿÿ:HHC>sœœn--/0!ÿÿ6EFB>sœœn..0/ ÿÿ1AA@yœrqœp/,-ÿÿ-;E{œy;8wœu2(ÿÿ(5M›|<;:5yš?"ÿÿ#3:K=8;:36A,#ÿÿ+0.03320*$% ÿÿ>8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿYE=40-+*(# 2ÿÿGbTECA>=;4+* ÿÿ?WMS@652*.;% ÿÿ6ER›y-(#qš2ÿÿ1AAwœq#lœkÿÿ-=83rœffœgÿÿ&882+jœœb ÿÿ!361+jœœb ÿÿ00.qœgfœb ÿÿ(3uœq"lœhÿÿ=›u%"nš!ÿÿ %:) "# ÿÿ ÿÿ, &ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtorrentflux_2.4/html/images/yellow.gif0000755000004100000410000000201511017132666020304 0ustar www-datawww-dataGIF89a÷cJkRkZsZ{Z{c{c{{{„c„k„„„ŒkŒsŒŒŒ”s”{”Œc”””œ{œ{œœœ¥„¥Œ¥¥¥­„­Œ­”!­­­µŒµŒµ”µ”µ”!µµµ½”½”½¥9½½½ÆœÆ¥!Æ¥)Æ­9ÆÆÆÎ¥Î¥Î¥Î¥έέ!έJÎÆ­ÎƵÎÎÎÖ­!Ö­)Öµ)Öµ1Öµ9Ö½BÖ½ZÖ½cÖÖÖÞ½JÞ½RÞÆZÞÆcÞÞÞçÆkçÎsçÎ{çççïïï÷çµ÷ïÖ÷÷Þ÷÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ùL,ê™drDņ JôX2°¡Š( Q¢„‘†L.P0a€4¨PÑc hÐñC  dиx$B„(‚$IDŒz,TAÁÂD !òÆ)„9¸àŽDŠô„ab©6 0#Ç >p¸0Ôˆ‘d`k»V8b¤D L˜`Ñ‚…`:9Ò£‰K1€%˜K¨¨0`"*@ð C&FTÈÈ`€|P‚± 1:T¨ðáòé†F„ ‘jdñï†KÜJ=rœI@;torrentflux_2.4/html/images/properties.png0000755000004100000410000000042711017132666021211 0ustar www-datawww-data‰PNG  IHDR “Î+gAMA¯È7ŠétEXtSoftwareAdobe ImageReadyqÉe<PLTEøüøÌÌÌ€ÿÿÿmStRNSÿÿÿÿû¶S}IDATxÚb`ÁÄg€ 33 @Á„˜À€(@ 0¨P € :˜`b@!€ 12BD $äAD!ÆX¨"6 €ÀÁdX €BŒ0!€‚j[  ,ªê.(  åâBåèIIEND®B`‚torrentflux_2.4/html/images/admin_user.gif0000755000004100000410000000161511017132666021124 0ustar www-datawww-dataGIF89a÷ÿÿÿµµµ‹‹‹”””kkk{{{JJJ“ò.÷!÷!˜ÿ)˜ÿM’òâýÅ”ÿ!Šæ€æŒøš÷!wÜ {ÞßúÂsÖoÎb¾kÎM”gÆò.N÷!D÷!Dÿ)LÿMZòEýÅÐÿ!Kæ?æ5øB÷!NÜ -Þ7úÂËÖ/Î)¾Î'”Æ!.òð!÷ô!÷ô)ÿüMðÿòåÅýü!ÿüæÚæäøõ!÷ê ÜÚÞÜÂúùÖÔÎ̾¼ÎÌ”’ÆÄ.xò!r÷!r÷)zÿM„ÿsòÅÛý!zÿlæbærø!|÷ YÜbÞÂ×úZÖSÎH¾RÎ8”KÆò´.÷³!÷³!ÿ»)ÿ×Mò¢ýëÅÿ¸!æ™æ£ø±÷©!Ü™ ÞúèÂ֕ξ‚ΔeƇæ.òê!÷ê!÷ò)ÿÿMýÛòøÅýí!ÿÐæÚææøà!÷Ð ÜÍÞ÷ÂúÅÖÂγ¾½Î‹”ºÆòë.÷ï!÷ï!ÿ÷)ùÿMòàýúÅÿò!æÕæßøë÷å!ÜÕ ÞÒúøÂÖÊÎǾ·Î”ƿò.¯÷!®÷!®ÿ)¶ÿM¶ò±ýÅëÿ!¹æ¨æžø±÷!¸Ü ”ÞúÂç֕΋¾}Δbƃ!ù,jHP`€ƒ `…(`à!Ä@`ñ" Bv„Hà"FŒLH€‰&L¬,Hà )TÌ$H`‹.w$@À‹D=~|ƒ…Pž1d¸x:t†ŒT‚ ;torrentflux_2.4/html/images/hdd.gif0000755000004100000410000000121111017132666017525 0ustar www-datawww-dataGIF89aæi½½Â¬¬²åååÄÄʘ˜ž°°¶žž£µµ»‘‘–  ¦ªª¯¥¥ª¢¹¹¾WW[ÖÖÛŽŽ“aabDDKŠŠŽ‡‡ÉÉʾ¾Ããããßßà¿¿À™™ŸÆÆÇ’’—ÅÅËôôô¡¡§ÜÜá^^_ÅÅÆááçÊÊÎffr[[_““˜’ÛÛÛÙÙßWWbbcY¬¬®®®±]]aùùù¥¥«ÏÏл»»”±±³°°³||€xx{óóóÁÁÆ[[bÂÂݰ´‰‰Œ‡òòòUUZÐÐÑëëì××Ü¿¿¿ºº¿__`”¾¾¾ÀÀ——||ƒ››œttw¤¤¦NNNððð¾¾Â||~|}jŒŒäääeepÒÒÒKKUeeg==DÊÊÌýýýšš îîîooyÐÐÔ±±·¢¢¨ÍÍÍRRU¬¬±UUXÿÿÿ!ùi,æ€i0J"\‡5t me/t‚ri hl9c›t[tT]K¿ 2JB4«t'OAdX”VªU@°f^¢ÔtjW.C0Y M!q=n0;#1,-)-e #$[,EZ3Y1L02r$juT9QvcmGS$s\='|BK'&lD546ˆ™à¥J Lì‘BB€‚0`:ÀðãÂ…”è!@Á qÈ Å'W(Lñôá7\ °ÒË<T,AhE Þ„Ñ`$‚ ^ Ä@ gxðƒ–>p BDˆ+J(á Ä/(H@èÚ2,´$dA ;torrentflux_2.4/html/images/red.gif0000755000004100000410000000201611017132666017544 0ustar www-datawww-dataGIF89a÷{{{„„„„ŒŒŒŒ””””œœœccœœœ¥¥¥¥­­­­µµµµ½½½½½ÆÆÆÆÎÎÎÎÎÖÖ))Ö­­ÖµµÖÖÖÞÞ!!Þ99ÞÞÞçççççïïï))ï99ïJJïïï÷÷))÷ZZ÷cc÷÷÷ÿÿÿÿÿ!!ÿ))ÿ11ÿ99ÿBBÿJJÿRRÿZZÿccÿkkÿssÿ{{ÿŒŒÿ½½ÿÖÖÿÞÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ùD,ë‰$¢¢‚&tx1°a „0a‰†D@¡‚ >T¨Ða  hÈ¡#Ç 6`¸¨Â€'zÒ#:,¬ à‚„?‚ù¡£ÆŠ(B8Ø`„?€øÈQF R8(°‚ŽÏâÏú÷íÿÛ‰Ú¶J³Ð²rn¥d¬GÞ¿bïß«…êSíß±I‘ItØG¹œM–LëוýüúAŒ>ïõ¼üä|/”Œ | ÿø¦ÿò©æ¼Q yêן7z êÀWïá´ÿÿçìÆNõùõæÉyÿÜwp I½%üùÏÿÿ¬&‹<¡ÿÿÑŽô\a“.:6ˆ´€¼‡|'ŒâÆqòÌ[ùóÞ ïõïD·"`Å@ÿôÈûøåòÕdÿÿÿ!ùt,­€t‚ƒt „‰ƒn$#e7Š„!Fm o"3Y‘t;M ]4 ah,„§1+ *t0%Nƒ\4”À²‚)-¶¬±Q$‚Ž)z%Àá‡H6Âáp“ @;torrentflux_2.4/html/images/queued.gif0000755000004100000410000000061011017132666020260 0ustar www-datawww-dataGIF89aÕÿÿÿÿüÿý3þþÓÿý-éè¾ïïÄâá·ÕÔª³³ˆ½¼’ÛÛ°ÈÈ+*ÄÙ‹‹`ÐÏ¥»ºcb8ÕÕª,+¤£yÿýW¦¦{º¹rrG^]3ÚÚ¯¾½“Üܱªª21-,¸·”ÁÀ–®¬ƒÉÈžºº—22’’g”“iÀ¿•  uÐÐ¥ššo¿¾”ÅÚHH¶µ‹ih>é龡¡v„ƒY°°…BB®®ƒwwLƒƒX¥¤z!ù,¥@€pH, Ȥ2ižÃ`:0xžgàR0LŒ‰¡p dŠ¢sh%ŽCGQ9tÄ!§Ñ< #v  1') !B7 € v +%N.86¥/4 v0&25v$R( 3 fZS,*ÐÑhO"ÝÛKæHMFêCA;torrentflux_2.4/html/settingsfunctions.php0000755000004100000410000001261111024310576021336 0ustar www-datawww-data $value); { $tmpArr[$key] = htmlentities(trim($value), ENT_QUOTES); } return $tmpArr; } else { return htmlentities(trim($_REQUEST[$varName]), ENT_QUOTES); } } else { return ''; } } //********************************************************* // AuditAction function AuditAction($action, $file="") { global $_SERVER, $cfg, $db; $host_resolved = $cfg['ip']; $create_time = time(); $rec = array( 'user_id' => $cfg['user'], 'file' => $file, 'action' => $action, 'ip' => htmlentities($cfg['ip'], ENT_QUOTES), 'ip_resolved' => htmlentities($host_resolved, ENT_QUOTES), 'user_agent' => htmlentities($_SERVER['HTTP_USER_AGENT'], ENT_QUOTES), 'time' => $create_time ); $sTable = 'tf_log'; $sql = $db->GetInsertSql($sTable, $rec); // add record to the log $result = $db->Execute($sql); showError($db,$sql); } //********************************************************* function loadSettings() { global $cfg, $db; // pull the config params out of the db $sql = "SELECT tf_key, tf_value FROM tf_settings"; $recordset = $db->Execute($sql); showError($db, $sql); while(list($key, $value) = $recordset->FetchRow()) { $tmpValue = ''; if(strpos($key,"Filter")>0) { $tmpValue = unserialize($value); } elseif($key == 'searchEngineLinks') { $tmpValue = unserialize($value); } if(is_array($tmpValue)) { $value = $tmpValue; } $cfg[$key] = $value; } } //********************************************************* function insertSetting($key,$value) { global $cfg, $db; $update_value = $value; if (is_array($value)) { $update_value = serialize($value); } $sql = "INSERT INTO tf_settings VALUES ('".$key."', '".$update_value."')"; if ( $sql != "" ) { $result = $db->Execute($sql); showError($db,$sql); // update the Config. $cfg[$key] = $value; } } //********************************************************* function updateSetting($key,$value) { global $cfg, $db; $update_value = $value; if (is_array($value)) { $update_value = serialize($value); } $sql = "UPDATE tf_settings SET tf_value = '".$update_value."' WHERE tf_key = '".$key."'"; if ( $sql != "" ) { $result = $db->Execute($sql); showError($db,$sql); // update the Config. $cfg[$key] = $value; } } //********************************************************* function saveSettings($settings) { global $cfg, $db; if ($settings == null) return; foreach ($settings as $key => $value) { if (array_key_exists($key, $cfg)) { if(is_array($cfg[$key]) || is_array($value)) { if(serialize($cfg[$key]) != serialize($value)) { updateSetting($key, $value); } }elseif ($cfg[$key] != $value) { updateSetting($key, $value); } else { // Nothing has Changed.. } }else{ insertSetting($key,$value); } } } //********************************************************* function isFile($file) { $rtnValue = False; if (is_file($file)) { $rtnValue = True; } else { if ($file == trim(shell_exec("ls ".escapeshellarg($file)))) { $rtnValue = True; } } return $rtnValue; } //********************************************************* function getCode($rnd) { global $db, $cfg; $datekey = date("F j"); $rcode = hexdec(md5($_SERVER['HTTP_USER_AGENT'] . $cfg["db_user"] . $rnd . $datekey)); return substr($rcode, 3, 6); } ?>torrentflux_2.4/html/torrentSearch.php0000755000004100000410000001614511017367654020411 0ustar www-datawww-data.tinyRow {font-size:2px;height:2px;}"; // Display the search box echo "
    "; echo ""; echo ""; echo ""; if (is_file('searchEngines/'.$searchEngine.'Engine.php')) { include_once('searchEngines/'.$searchEngine.'Engine.php'); $sEngine = new SearchEngine(serialize($cfg)); if ($sEngine->initialized) { echo "
    "; $mainStart = true; $catLinks = ''; $tmpCatLinks = ''; $tmpLen = 0; foreach ($sEngine->getMainCategories() as $mainId => $mainName) { if (strlen($tmpCatLinks) >= 500 && $mainStart == false) { $catLinks .= $tmpCatLinks . "
    "; $tmpCatLinks = ''; $mainStart = true; } if ($mainStart == false) $tmpCatLinks .= " | "; $tmpCatLinks .= "".$mainName.""; $mainStart = false; } echo $catLinks . $tmpCatLinks; if ($mainStart == false) { echo "

    "; } echo "
    "; echo ""; $mainGenre = getRequestVar('mainGenre'); if (!empty($mainGenre) && !array_key_exists("subGenre",$_REQUEST)) { $subCats = $sEngine->getSubCategories($mainGenre); if (count($subCats) > 0) { echo ""; echo "
    "; echo "
    "; echo _SEARCH." Torrents:
    "; echo " "; echo buildSearchEngineDDL($searchEngine); echo "   "; echo "\n\n"; echo "  Show Latest Torrents"; echo "
    "; echo "* Click on Torrent Links to add them to the Torrent Download List"; echo "
    Visit:    ".buildSearchEngineLinks($searchEngine). "
    "; echo ""; $mainGenreName = $sEngine->GetMainCatName($mainGenre); echo "Category: ".$mainGenreName." -> "; echo " "; echo ""; echo "
    \n"; } else { echo "
    "; // Set the Sub to equal the main for groups that don't have subs. $_REQUEST["subGenre"] = $mainGenre; echo $sEngine->getLatest(); } } else { echo "
    "; if (array_key_exists("LATEST",$_REQUEST) && $_REQUEST["LATEST"] == "1") { echo $sEngine->getLatest(); } else { echo $sEngine->performSearch($searchterm); } } } else { // there was an error connecting echo ""; echo "

    ".$sEngine->msg."


    "; echo "
    "; } } else { // there was an error connecting echo ""; echo "

    Search Engine not installed.


    "; echo "
    "; } DisplayFoot(); ?> torrentflux_2.4/html/maketorrent.php0000755000004100000410000006040511017367654020117 0ustar www-datawww-data [file...] [params...] --announce_list a list of announce URLs - explained below (defaults to '') --httpseeds a list of http seed URLs - explained below (defaults to '') --piece_size_pow2 which power of 2 to set the piece size to (0 = automatic) (defaults to 0) --comment optional human-readable comment to put in .torrent (defaults to '') --filesystem_encoding optional specification for filesystem encoding (set automatically in recent Python versions) (defaults to '') --target optional target file for the torrent (defaults to '') announce_list = optional list of redundant/backup tracker URLs, in the format: url[,url...][|url[,url...]...] where URLs separated by commas are all tried first before the next group of URLs separated by the pipe is checked. If none is given, it is assumed you don't want one in the metafile. If announce_list is given, clients which support it will ignore the value. Examples: http://tracker1.com|http://tracker2.com|http://tracker3.com (tries trackers 1-3 in order) http://tracker1.com,http://tracker2.com,http://tracker3.com (tries trackers 1-3 in a randomly selected order) http://tracker1.com|http://backup1.com,http://backup2.com (tries tracker 1 first, then tries between the 2 backups randomly) httpseeds = optional list of http-seed URLs, in the format: url[|url...] *****/ include_once("config.php"); include_once("functions.php"); // Variable information $tpath = $cfg["torrent_file_path"]; $tfile = getRequestVar('torrent'); $file = getRequestVar('path'); $torrent = cleanFileName(StripFolders( trim($file) )) . ".torrent"; $announce = ( getRequestVar('announce') ) ? getRequestVar('announce') : "http://"; $ancelist = getRequestVar('announcelist'); $comment = getRequestVar('comments'); $peice = getRequestVar('piecesize'); $alert = ( getRequestVar('alert') ) ? 1 : "''"; $private = ( getRequestVar('Private') == "Private" ) ? true : false; $dht = ( getRequestVar('DHT') == "DHT" ) ? true : false; // Let's create the torrent if( !empty( $announce ) && $announce != "http://" ) { // Create maketorrent directory if it doesn't exist if( !is_dir( $tpath ) ) { @mkdir( $tpath ); } // Clean up old files if( @file_exists( $tpath . $tfile ) ) { @unlink( $tpath . $tfile ); } // This is the command to execute $app = "nohup " . $cfg["pythonCmd"] . " -OO " . $cfg["btmakemetafile"] . " " . escapeshellarg($announce) . " " . escapeshellarg( $cfg['path'] . $file ) . " "; // Is there comments to add? if( !empty( $comment ) ) { $app .= "--comment " . escapeshellarg( $comment ) . " "; } // Set the piece size if( !empty( $peice ) ) { $app .= "--piece_size_pow2 " . escapeshellarg( $peice ) . " "; } if( !empty( $ancelist ) ) { $check = "/" . str_replace( "/", "\/", quotemeta( $announce ) ) . "/i"; // if they didn't add the primary tracker in, we will add it for them if( preg_match( $check, $ancelist, $result ) ) $app .= "--announce_list " . escapeshellarg( $ancelist ) . " "; else $app .= "--announce_list " . escapeshellarg ( $announce . "," . $ancelist ) . " "; } // Set the target torrent fiel $app .= "--target " . escapeshellarg( $tpath . $tfile ); // Set to never timeout for large torrents set_time_limit( 0 ); // Let's see how long this takes... $time_start = microtime( true ); // Execute the command -- w00t! exec( $app ); // We want to check to make sure the file was successful $success = false; $raw = @file_get_contents( $tpath . $tfile ); if( preg_match( "/6:pieces([^:]+):/i", $raw, $results ) ) { // This means it is a valid torrent $success = true; // Make an entry for the owner AuditAction($cfg["constants"]["file_upload"], $tfile); // Check to see if one of the flags were set if( $private || $dht ) { // Add private/dht Flags // e7:privatei1e // e17:dht_backup_enablei1e // e20:dht_backup_requestedi1e if( preg_match( "/6:pieces([^:]+):/i", $raw, $results ) ) { $pos = strpos( $raw, "6:pieces" ) + 9 + strlen( $results[1] ) + $results[1]; $fp = @fopen( $tpath . $tfile, "r+" ); @fseek( $fp, $pos, SEEK_SET ); if( $private ) { @fwrite( $fp, "7:privatei1eee" ); } else { @fwrite( $fp, "e7:privatei0e17:dht_backup_enablei1e20:dht_backup_requestedi1eee" ); } @fclose( $fp ); } } } else { // Something went wrong, clean up if( @file_exists( $tpath . $tfile ) ) { @unlink( $tpath . $tfile ); } } // We are done! how long did we take? $time_end = microtime( true ); $diff = duration($time_end - $time_start); // make path URL friendly to support non-standard characters $downpath = urlencode( $tfile ); // Depending if we were successful, display the required information if( $success ) { $onLoad = "completed( '" . $downpath . "', " . $alert. ", '" . $diff . "' );"; } else { $onLoad = "failed( '" . $downpath . "', " . $alert . " );"; } } // This is the torrent download prompt if( isset( $_REQUEST["download"] ) ) { $tfile = getRequestVar("download"); // ../ is not allowed in the file name if (!ereg("(\.\.\/)", $tfile)) { // Does the file exist? if (file_exists($tpath . $tfile)) { // Prompt the user to download the new torrent file. header( "Content-type: application/octet-stream\n" ); header( "Content-disposition: attachment; filename=\"" . $tfile . "\"\n" ); header( "Content-transfer-encoding: binary\n"); header( "Content-length: " . @filesize( $tpath . $tfile ) . "\n" ); // Send the torrent file $fp = @fopen( $tpath . $tfile, "r" ); @fpassthru( $fp ); @fclose( $fp ); AuditAction($cfg["constants"]["fm_download"], $tfile); } else { AuditAction($cfg["constants"]["error"], "File Not found for download: ".$cfg['user']." tried to download ".$tfile); } } else { AuditAction($cfg["constants"]["error"], "ILLEGAL DOWNLOAD: ".$cfg['user']." tried to download ".$tfile); } exit(); } // Strip the folders from the path function StripFolders( $path ) { $pos = strrpos( $path, "/" ) + 1; $path = substr( $path, $pos ); return $path; } // Convert a timestamp to a duration string function duration( $timestamp ) { $years = floor( $timestamp / ( 60 * 60 * 24 * 365 ) ); $timestamp %= 60 * 60 * 24 * 365; $weeks = floor( $timestamp / ( 60 * 60 * 24 * 7 ) ); $timestamp %= 60 * 60 * 24 * 7; $days = floor( $timestamp / ( 60 * 60 * 24 ) ); $timestamp %= 60 * 60 * 24; $hrs = floor( $timestamp / ( 60 * 60 ) ); $timestamp %= 60 * 60; $mins = floor( $timestamp / 60 ); $secs = $timestamp % 60; $str = ""; if( $years >= 1 ) $str .= "{$years} years "; if( $weeks >= 1 ) $str .= "{$weeks} weeks "; if( $days >= 1 ) $str .= "{$days} days "; if( $hrs >= 1 ) $str .= "{$hrs} hours "; if( $mins >= 1 ) $str .= "{$mins} minutes "; if( $secs >= 1 ) $str.="{$secs} seconds "; return $str; } ?> <?php echo $cfg["pagetitle"]; ?> - Torrent Maker /style.css" TYPE="text/css" /> " style="font-family:Tahoma, 'Times New Roman'; font-size:12px;" onLoad=" ">
    " cellpadding="4" cellspacing="0">
    " background="themes//images/bar.gif">
    ">
    ">
    Torrent name:
    Announcement URL:
    Announce List:
    Piece size: bytes
    Comments:
    Private Torrent: >Yes >No
    DHT Support: value="DHT">
     
    torrentflux_2.4/html/viewnfo.php0000755000004100000410000000516211017367654017240 0ustar www-datawww-data
    
    
    ", "\\", "//", "..", "'"); foreach ($array as $char) { $string = str_replace($char, NULL, $string); } if( (strtolower( substr( $string, -4 ) ) == ".txt") || (strtolower( substr( $string, -4 ) ) == ".nfo") ) { // we are good } else { AuditAction($cfg["constants"]["error"], "Not a text or NFO: " . $string); die("Invalid file specified. Action has been logged."); } return $string; } ?>torrentflux_2.4/html/downloads/0000755000004100000410000000000011026130110017004 5ustar www-datawww-datatorrentflux_2.4/html/downloads/index.html0000755000004100000410000000001511017132666021022 0ustar www-datawww-datatorrentflux_2.4/COPYING0000755000004100000410000003560511017134712015131 0ustar www-datawww-data GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS torrentflux_2.4/sql/0000755000004100000410000000000011026130100014644 5ustar www-datawww-datatorrentflux_2.4/sql/mysql_torrentflux.sql0000755000004100000410000001373611023145126021236 0ustar www-datawww-data-- phpMyAdmin SQL Dump -- -------------------------------------------------------- -- -- Table structure for table `tf_links` -- CREATE TABLE `tf_links` ( `lid` int(10) NOT NULL auto_increment, `url` varchar(255) NOT NULL default '', `sitename` varchar(255) NOT NULL default 'Old Link', `sort_order` tinyint(3) unsigned default '0', PRIMARY KEY (`lid`) ) ENGINE=MyISAM; -- -- Dumping data for table `tf_links` -- INSERT INTO `tf_links` VALUES (1, 'http://www.torrentflux.com', 'TorrentFlux.com', 0); -- -------------------------------------------------------- -- -- Table structure for table `tf_log` -- CREATE TABLE `tf_log` ( `cid` int(14) NOT NULL auto_increment, `user_id` varchar(32) NOT NULL default '', `file` varchar(200) NOT NULL default '', `action` varchar(200) NOT NULL default '', `ip` varchar(15) NOT NULL default '', `ip_resolved` varchar(200) NOT NULL default '', `user_agent` varchar(200) NOT NULL default '', `time` varchar(14) NOT NULL default '0', PRIMARY KEY (`cid`) ) ENGINE=MyISAM AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `tf_messages` -- CREATE TABLE `tf_messages` ( `mid` int(10) NOT NULL auto_increment, `to_user` varchar(32) NOT NULL default '', `from_user` varchar(32) NOT NULL default '', `message` text, `IsNew` int(11) default NULL, `ip` varchar(15) NOT NULL default '', `time` varchar(14) NOT NULL default '0', `force_read` tinyint(1) default '0', PRIMARY KEY (`mid`) ) ENGINE=MyISAM AUTO_INCREMENT=1 ; -- -------------------------------------------------------- -- -- Table structure for table `tf_rss` -- CREATE TABLE `tf_rss` ( `rid` int(10) NOT NULL auto_increment, `url` varchar(255) NOT NULL default '', PRIMARY KEY (`rid`) ) ENGINE=MyISAM AUTO_INCREMENT=1 ; -- -- Dumping data for table `tf_rss` -- -- -------------------------------------------------------- -- -- Table structure for table `tf_settings` -- CREATE TABLE `tf_settings` ( `tf_key` varchar(255) NOT NULL default '', `tf_value` text NOT NULL, PRIMARY KEY (`tf_key`) ) ENGINE=MyISAM; -- -- Dumping data for table `tf_settings` -- INSERT INTO `tf_settings` VALUES ('path', '/usr/local/torrent/'); INSERT INTO `tf_settings` VALUES ('btphpbin', '/var/www/TF_BitTornado/btphptornado.py'); INSERT INTO `tf_settings` VALUES ('btshowmetainfo', '/var/www/TF_BitTornado/btshowmetainfo.py'); INSERT INTO `tf_settings` VALUES ('advanced_start', '1'); INSERT INTO `tf_settings` VALUES ('max_upload_rate', '10'); INSERT INTO `tf_settings` VALUES ('max_download_rate', '0'); INSERT INTO `tf_settings` VALUES ('max_uploads', '4'); INSERT INTO `tf_settings` VALUES ('minport', '49160'); INSERT INTO `tf_settings` VALUES ('maxport', '49300'); INSERT INTO `tf_settings` VALUES ('rerequest_interval', '1800'); INSERT INTO `tf_settings` VALUES ('cmd_options', ''); INSERT INTO `tf_settings` VALUES ('enable_search', '1'); INSERT INTO `tf_settings` VALUES ('enable_file_download', '1'); INSERT INTO `tf_settings` VALUES ('enable_view_nfo', '1'); INSERT INTO `tf_settings` VALUES ('package_ENGINE', 'zip'); INSERT INTO `tf_settings` VALUES ('show_server_load', '1'); INSERT INTO `tf_settings` VALUES ('loadavg_path', '/proc/loadavg'); INSERT INTO `tf_settings` VALUES ('days_to_keep', '30'); INSERT INTO `tf_settings` VALUES ('minutes_to_keep', '3'); INSERT INTO `tf_settings` VALUES ('rss_cache_min', '20'); INSERT INTO `tf_settings` VALUES ('page_refresh', '60'); INSERT INTO `tf_settings` VALUES ('default_theme', 'matrix'); INSERT INTO `tf_settings` VALUES ('default_language', 'lang-english.php'); INSERT INTO `tf_settings` VALUES ('debug_sql', '1'); INSERT INTO `tf_settings` VALUES ('torrent_dies_when_done', 'False'); INSERT INTO `tf_settings` VALUES ('sharekill', '150'); INSERT INTO `tf_settings` VALUES ('tfQManager', '/var/www/TF_BitTornado/tfQManager.py'); INSERT INTO `tf_settings` VALUES ('AllowQueing', '0'); INSERT INTO `tf_settings` VALUES ('maxServerThreads', '5'); INSERT INTO `tf_settings` VALUES ('maxUserThreads', '2'); INSERT INTO `tf_settings` VALUES ('sleepInterval', '10'); INSERT INTO `tf_settings` VALUES ('debugTorrents', '0'); INSERT INTO `tf_settings` VALUES ('pythonCmd', '/usr/bin/python'); INSERT INTO `tf_settings` VALUES ('searchEngine', 'TorrentSpy'); INSERT INTO `tf_settings` VALUES ('TorrentSpyGenreFilter', 'a:3:{i:0;s:2:"11";i:1;s:1:"6";i:2;s:1:"7";}'); INSERT INTO `tf_settings` VALUES ('TorrentBoxGenreFilter', 'a:3:{i:0;s:1:"0";i:1;s:1:"9";i:2;s:2:"10";}'); INSERT INTO `tf_settings` VALUES ('TorrentPortalGenreFilter', 'a:3:{i:0;s:1:"0";i:1;s:1:"6";i:2;s:2:"10";}'); INSERT INTO `tf_settings` VALUES ('enable_maketorrent','0'); INSERT INTO `tf_settings` VALUES ('btmakemetafile','/var/www/TF_BitTornado/btmakemetafile.py'); INSERT INTO `tf_settings` VALUES ('enable_torrent_download','1'); INSERT INTO `tf_settings` VALUES ('enable_file_priority','1'); INSERT INTO `tf_settings` VALUES ('security_code','0'); INSERT INTO `tf_settings` VALUES ('crypto_allowed', '1'); INSERT INTO `tf_settings` VALUES ('crypto_only', '1'); INSERT INTO `tf_settings` VALUES ('crypto_stealth', '0'); -- -------------------------------------------------------- -- -- Table structure for table `tf_users` -- CREATE TABLE `tf_users` ( `uid` int(10) NOT NULL auto_increment, `user_id` varchar(32) NOT NULL default '', `password` varchar(34) NOT NULL default '', `hits` int(10) NOT NULL default '0', `last_visit` varchar(14) NOT NULL default '0', `time_created` varchar(14) NOT NULL default '0', `user_level` tinyint(1) NOT NULL default '0', `hide_offline` tinyint(1) NOT NULL default '0', `theme` varchar(100) NOT NULL default 'mint', `language_file` varchar(60) default 'lang-english.php', PRIMARY KEY (`uid`) ) ENGINE=MyISAM AUTO_INCREMENT=1 ; -- -- Table structure for table `tf_cookies` -- CREATE TABLE `tf_cookies` ( `cid` int(10) NOT NULL auto_increment, `uid` int(10) NOT NULL, `host` varchar(255) default NULL, `data` varchar(255) default NULL, PRIMARY KEY (`cid`) ) ENGINE=MyISAM ;torrentflux_2.4/sql/pgsql7/0000755000004100000410000000000011026130100016061 5ustar www-datawww-datatorrentflux_2.4/sql/pgsql7/pgsql_01_create_db_and_user.sql0000755000004100000410000000044211021420252024110 0ustar www-datawww-data/* Run this script as the database superuser. This should be postgres. Run it thusly: psql -d template1 -f pgsql_01_create_db_and_user.sql */ /* create the database */ create database torrentflux; /* This will prompt for a password */ create user tf_user password 'tfdefaultpassword'; torrentflux_2.4/sql/pgsql7/pgsql_02_create_tables.sql0000755000004100000410000001260311021420252023120 0ustar www-datawww-data/* Run this as the torrentflux user. Example: psql -d torrentflux tf_user -p -f pgsql_02_create_tables.sql */ CREATE SEQUENCE tf_links_sequence START 1; CREATE TABLE `tf_links` ( lid integer PRIMARY KEY DEFAULT nextval('tf_links_sequence'), url varchar(255) NOT NULL default '', sitename varchar(255) NOT NULL default 'Old Link', sort_order smallint unsigned default '0', PRIMARY KEY (`lid`) ); /* data */ INSERT INTO tf_links VALUES (1, 'http://www.torrentflux.com', 'TorrentFlux.com', 0); /* -------------------------------------------------------- */ /* Table structure for table `tf_log` */ CREATE SEQUENCE tf_log_sequence START 1; CREATE TABLE tf_log ( cid integer PRIMARY KEY DEFAULT nextval('tf_log_sequence'), user_id varchar(32) NOT NULL DEFAULT '', file varchar(200) NOT NULL DEFAULT '', action varchar(200) NOT NULL DEFAULT '', ip varchar(15) NOT NULL DEFAULT '', ip_resolved varchar(200) NOT NULL DEFAULT '', user_agent varchar(200) NOT NULL DEFAULT '', time varchar(14) NOT NULL DEFAULT '0' ); /* Table structure for table `tf_messages` */ CREATE SEQUENCE tf_messages_sequence START 1; -- column 'new' is now 'IsNew' CREATE TABLE tf_messages ( mid integer PRIMARY KEY default nextval('tf_messages_sequence'), to_user varchar(32) NOT NULL default '', from_user varchar(32) NOT NULL default '', message text, IsNew integer NOT NULL default '1', ip varchar(15) NOT NULL default '', time varchar(14) NOT NULL default '0', force_read smallint default '0' ); /* Table structure for table `tf_rss` */ CREATE SEQUENCE tf_rss_sequence START 1; CREATE TABLE tf_rss ( rid integer PRIMARY KEY default nextval('tf_rss_sequence'), url varchar(255) NOT NULL default '' ); /* Table structure for table `tf_settings` */ CREATE TABLE tf_settings ( tf_key varchar(255) PRIMARY KEY NOT NULL default '', tf_value text NOT NULL ); /* data */ INSERT INTO tf_settings VALUES ('path', '/usr/local/torrent/'); INSERT INTO tf_settings VALUES ('btphpbin', '/var/www/TF_BitTornado/btphptornado.py'); INSERT INTO tf_settings VALUES ('btshowmetainfo', '/var/www/TF_BitTornado/btshowmetainfo.py'); INSERT INTO tf_settings VALUES ('advanced_start', '1'); INSERT INTO tf_settings VALUES ('max_upload_rate', '10'); INSERT INTO tf_settings VALUES ('max_download_rate', '0'); INSERT INTO tf_settings VALUES ('max_uploads', '4'); INSERT INTO tf_settings VALUES ('minport', '49160'); INSERT INTO tf_settings VALUES ('maxport', '49300'); INSERT INTO tf_settings VALUES ('rerequest_interval', '1800'); INSERT INTO tf_settings VALUES ('cmd_options', ''); INSERT INTO tf_settings VALUES ('enable_search', '1'); INSERT INTO tf_settings VALUES ('enable_file_download', '1'); INSERT INTO tf_settings VALUES ('package_type', 'zip'); INSERT INTO tf_settings VALUES ('show_server_load', '1'); INSERT INTO tf_settings VALUES ('loadavg_path', '/proc/loadavg'); INSERT INTO tf_settings VALUES ('days_to_keep', '30'); INSERT INTO tf_settings VALUES ('minutes_to_keep', '3'); INSERT INTO tf_settings VALUES ('rss_cache_min', '20'); INSERT INTO tf_settings VALUES ('page_refresh', '60'); INSERT INTO tf_settings VALUES ('default_theme', 'matrix'); INSERT INTO tf_settings VALUES ('default_language', 'lang-english.php'); INSERT INTO tf_settings VALUES ('debug_sql', '1'); INSERT INTO tf_settings VALUES ('torrent_dies_when_done', 'False'); INSERT INTO tf_settings VALUES ('sharekill', '150'); INSERT INTO tf_settings VALUES ('tfQManager', '/var/www/TF_BitTornado/tfQManager.py'); INSERT INTO tf_settings VALUES ('AllowQueing', '0'); INSERT INTO tf_settings VALUES ('maxServerThreads', '5'); INSERT INTO tf_settings VALUES ('maxUserThreads', '2'); INSERT INTO tf_settings VALUES ('sleepInterval', '10'); INSERT INTO tf_settings VALUES ('debugTorrents', '0'); INSERT INTO tf_settings VALUES ('pythonCmd', '/usr/bin/python'); INSERT INTO tf_settings VALUES ('searchEngine', 'TorrentSpy'); INSERT INTO tf_settings VALUES ('TorrentSpyGenreFilter', 'a:3:{i:0;s:2:"11";i:1;s:1:"6";i:2;s:1:"7";}'); INSERT INTO tf_settings VALUES ('TorrentBoxGenreFilter', 'a:3:{i:0;s:1:"0";i:1;s:1:"9";i:2;s:2:"10";}'); INSERT INTO tf_settings VALUES ('TorrentPortalGenreFilter', 'a:3:{i:0;s:1:"0";i:1;s:1:"6";i:2;s:2:"10";}'); INSERT INTO tf_settings VALUES ('enable_maketorrent','0'); INSERT INTO tf_settings VALUES ('btmakemetafile','/var/www/TF_BitTornado/btmakemetafile.py'); INSERT INTO tf_settings VALUES ('enable_torrent_download','1'); INSERT INTO tf_settings VALUES ('enable_file_priority','1'); INSERT INTO tf_settings VALUES ('security_code','0'); /* -------------------------------------------------------- */ /* Table structure for table `tf_users` */ CREATE SEQUENCE tf_users_sequence START 1; CREATE TABLE tf_users ( uid integer PRIMARY KEY default nextval('tf_users_sequence'), user_id varchar(32) NOT NULL default '', password varchar(34) NOT NULL default '', hits integer NOT NULL default '0', last_visit varchar(14) NOT NULL default '0', time_created varchar(14) NOT NULL default '0', user_level smallint NOT NULL default '0', hide_offline smallint NOT NULL default '0', theme varchar(100) NOT NULL default 'mint', language_file varchar(60) default 'lang-english.php' ); /* Table structure for table `tf_cookies` */ CREATE SEQUENCE tf_cookies_sequence START 1; CREATE TABLE tf_cookies ( cid integer PRIMARY KEY default nextval('tf_cookies_sequence'), uid integer NOT NULL, host varchar(255) default NULL, data varchar(255) default NULL ); torrentflux_2.4/sql/pgsql8/0000755000004100000410000000000011026130100016062 5ustar www-datawww-datatorrentflux_2.4/sql/pgsql8/pgsql-8.3_02_create_tables.sql0000644000004100000410000001253711021420252023432 0ustar www-datawww-data/* Run this as the torrentflux user. Example: psql -d torrentflux tf_user -W -f pgsql_02_create_tables.sql */ CREATE SEQUENCE tf_links_sequence START 1; CREATE TABLE tf_links ( lid integer PRIMARY KEY DEFAULT nextval('tf_links_sequence'), url varchar(255) NOT NULL default '', sitename varchar(255) NOT NULL default 'Old Link', sort_order integer default '0' ); /* data */ INSERT INTO tf_links VALUES (1, 'http://www.torrentflux.com', 'TorrentFlux.com', 0); /* -------------------------------------------------------- */ /* Table structure for table `tf_log` */ CREATE SEQUENCE tf_log_sequence START 1; CREATE TABLE tf_log ( cid integer PRIMARY KEY DEFAULT nextval('tf_log_sequence'), user_id varchar(32) NOT NULL DEFAULT '', file varchar(200) NOT NULL DEFAULT '', action varchar(200) NOT NULL DEFAULT '', ip varchar(15) NOT NULL DEFAULT '', ip_resolved varchar(200) NOT NULL DEFAULT '', user_agent varchar(200) NOT NULL DEFAULT '', time varchar(14) NOT NULL DEFAULT '0' ); /* Table structure for table `tf_messages` */ CREATE SEQUENCE tf_messages_sequence START 1; -- column 'new' is now 'IsNew' CREATE TABLE tf_messages ( mid integer PRIMARY KEY default nextval('tf_messages_sequence'), to_user varchar(32) NOT NULL default '', from_user varchar(32) NOT NULL default '', message text, IsNew integer NOT NULL default '1', ip varchar(15) NOT NULL default '', time varchar(14) NOT NULL default '0', force_read smallint default '0' ); /* Table structure for table `tf_rss` */ CREATE SEQUENCE tf_rss_sequence START 1; CREATE TABLE tf_rss ( rid integer PRIMARY KEY default nextval('tf_rss_sequence'), url varchar(255) NOT NULL default '' ); /* Table structure for table `tf_settings` */ CREATE TABLE tf_settings ( tf_key varchar(255) PRIMARY KEY NOT NULL default '', tf_value text NOT NULL ); /* data */ INSERT INTO tf_settings VALUES ('path', '/usr/local/torrent/'); INSERT INTO tf_settings VALUES ('btphpbin', '/var/www/TF_BitTornado/btphptornado.py'); INSERT INTO tf_settings VALUES ('btshowmetainfo', '/var/www/TF_BitTornado/btshowmetainfo.py'); INSERT INTO tf_settings VALUES ('advanced_start', '1'); INSERT INTO tf_settings VALUES ('max_upload_rate', '10'); INSERT INTO tf_settings VALUES ('max_download_rate', '0'); INSERT INTO tf_settings VALUES ('max_uploads', '4'); INSERT INTO tf_settings VALUES ('minport', '49160'); INSERT INTO tf_settings VALUES ('maxport', '49300'); INSERT INTO tf_settings VALUES ('rerequest_interval', '1800'); INSERT INTO tf_settings VALUES ('cmd_options', ''); INSERT INTO tf_settings VALUES ('enable_search', '1'); INSERT INTO tf_settings VALUES ('enable_file_download', '1'); INSERT INTO tf_settings VALUES ('package_type', 'zip'); INSERT INTO tf_settings VALUES ('show_server_load', '1'); INSERT INTO tf_settings VALUES ('loadavg_path', '/proc/loadavg'); INSERT INTO tf_settings VALUES ('days_to_keep', '30'); INSERT INTO tf_settings VALUES ('minutes_to_keep', '3'); INSERT INTO tf_settings VALUES ('rss_cache_min', '20'); INSERT INTO tf_settings VALUES ('page_refresh', '60'); INSERT INTO tf_settings VALUES ('default_theme', 'matrix'); INSERT INTO tf_settings VALUES ('default_language', 'lang-english.php'); INSERT INTO tf_settings VALUES ('debug_sql', '1'); INSERT INTO tf_settings VALUES ('torrent_dies_when_done', 'False'); INSERT INTO tf_settings VALUES ('sharekill', '150'); INSERT INTO tf_settings VALUES ('tfQManager', '/var/www/TF_BitTornado/tfQManager.py'); INSERT INTO tf_settings VALUES ('AllowQueing', '0'); INSERT INTO tf_settings VALUES ('maxServerThreads', '5'); INSERT INTO tf_settings VALUES ('maxUserThreads', '2'); INSERT INTO tf_settings VALUES ('sleepInterval', '10'); INSERT INTO tf_settings VALUES ('debugTorrents', '0'); INSERT INTO tf_settings VALUES ('pythonCmd', '/usr/bin/python'); INSERT INTO tf_settings VALUES ('searchEngine', 'TorrentSpy'); INSERT INTO tf_settings VALUES ('TorrentSpyGenreFilter', 'a:3:{i:0;s:2:"11";i:1;s:1:"6";i:2;s:1:"7";}'); INSERT INTO tf_settings VALUES ('TorrentBoxGenreFilter', 'a:3:{i:0;s:1:"0";i:1;s:1:"9";i:2;s:2:"10";}'); INSERT INTO tf_settings VALUES ('TorrentPortalGenreFilter', 'a:3:{i:0;s:1:"0";i:1;s:1:"6";i:2;s:2:"10";}'); INSERT INTO tf_settings VALUES ('enable_maketorrent','0'); INSERT INTO tf_settings VALUES ('btmakemetafile','/var/www/TF_BitTornado/btmakemetafile.py'); INSERT INTO tf_settings VALUES ('enable_torrent_download','1'); INSERT INTO tf_settings VALUES ('enable_file_priority','1'); INSERT INTO tf_settings VALUES ('security_code','0'); /* -------------------------------------------------------- */ /* Table structure for table `tf_users` */ CREATE SEQUENCE tf_users_sequence START 1; CREATE TABLE tf_users ( uid integer PRIMARY KEY default nextval('tf_users_sequence'), user_id varchar(32) NOT NULL default '', password varchar(34) NOT NULL default '', hits integer NOT NULL default '0', last_visit varchar(14) NOT NULL default '0', time_created varchar(14) NOT NULL default '0', user_level smallint NOT NULL default '0', hide_offline smallint NOT NULL default '0', theme varchar(100) NOT NULL default 'mint', language_file varchar(60) default 'lang-english.php' ); /* Table structure for table `tf_cookies` */ CREATE SEQUENCE tf_cookies_sequence START 1; CREATE TABLE tf_cookies ( cid integer PRIMARY KEY default nextval('tf_cookies_sequence'), uid integer NOT NULL, host varchar(255) default NULL, data varchar(255) default NULL ); torrentflux_2.4/sql/pgsql8/pgsql-8.3_01_create_db_and_user.sql0000644000004100000410000000044211021420252024414 0ustar www-datawww-data/* Run this script as the database superuser. This should be postgres. Run it thusly: psql -d template1 -f pgsql_01_create_db_and_user.sql */ /* create the database */ create database torrentflux; /* This will prompt for a password */ create user tf_user password 'tfdefaultpassword'; torrentflux_2.4/README0000755000004100000410000000144411017367654014765 0ustar www-datawww-dataTorrentFlux is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. TorrentFlux is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with TorrentFlux; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Visit TorrentFlux.com Contact Qrome: http://www.torrentflux.com/contact.php View the INSTALL file for installation instructions.torrentflux_2.4/INSTALL0000755000004100000410000002431611021420252015114 0ustar www-datawww-dataTorrentFlux: PHP Torrent Download Manager ================================================================= TorrentFlux is a PHP based Torrent client that runs on a web server. Manage all of your Torrent downloads through a convenient web interface from anywhere. ================================================================= TorrentFlux was written by Qrome (http://www.torrentflux.com/contact.php) For support visit the forums: (http://www.torrentflux.com/forum/) See the thanks list at the bottom. ================================================================= TorrentFlux Version: 2.4 ================================================================= PLEASE READ CAREFULLY THE FOLLOWING INSTRUCTIONS. IF YOU DO THIS, YOU WILL HAVE YOUR SITE UP AND RUNNING IN JUST A FEW MINUTES. ----------------------------------------------------------------- System Requirements ----------------------------------------------------------------- -- A Linux Box (http://www.linux.com) Installed and working properly. (tested on Debian, RedHat, Fedora, and others) -- Apache Web Server (http://www.apache.org) -- PHP Apache module version 4.1.x or better with MySQL, Session, and PCRE support enabled (http://www.php.net) -- MySQL database server (http://www.mysql.com) others also supported through ADODB. -- Python 2.2 or higher -- SELinux should be turned off or configured to allow TorrentFlux to work with files in the application Path. -- Safe Mode must be turned off in the php.ini file. TorrentFlux reads, writes files that Safe Mode will restrict. -- allow_url_fopen (in the php.ini) must be on for torrent fetching, RSS, and torrent searches. Second option is to have the CURL libs installed. If you only plan on uploading directly then these options do not matter. -- CURL libs are required for some of the search engine modules but not required for general opperation. * BSD User notes: TorrentFlux uses the ps command to see what it is running. Usually BSD does not allow the results to be large enough for TF to work. To fix this, edit /etc/sysctl.conf to add the following line kern.ps_arg_cache_limit=1024 Without this set, the OS truncates the output of ps to only 256 characters. ----------------------------------------------------------------- Installing ----------------------------------------------------------------- *** Make sure the System Requirements are met. 1. Untar the package into a directory then copy the contents of the "html" folder into your web site directory. tar -zxvf torrentflux.tar.gz 2. Create a database and load the mysql_torrentflux.sql script. Database abstraction is supported starting in TorrentFlux 2.0 using ADODB for PHP. You may specify type of database you want to use in the config.php, but the examples here use MySQL. mysqladmin create torrentflux "mysql_torrentflux.sql" contains the commands to build the table structure and the default data for the TorrentFlux. Run the script on your torrentflux database. mysql torrentflux < mysql_torrentflux.sql Or load the script with PHPMyAdmin (web interface) 3. Edit 'config.php' for database settings. Database abstraction is supported starting in TorrentFlux 2.0 using ADODB for PHP. You may specify type of database you want to use, but the examples here use MySQL. 4. IMPORTANT: The first time you access the application, you will be prompted for a user/password -- this is when you will set the SUPER ADMIN user and password by what you enter. For example, you pull the site up for the first time, you will be prompted to login and if you put in user: 'goombah' and password: 'iama' then your super admin user account will be set to goombah/iama -- cool? You are ready to access the application! 5. On your first login, you will be taken to the admin settings page. This is where you will check all your TorrentFlux Settings (previous versions had these settings in the config.php). At the top of this page is "Path" -- you will need to create a directory with read/write permissions for TorrentFlux to use. You can create a directory and chmod 777 it then specify this path on the Admin Settings page. When the path is valid and writable, there will be a green light next to it. While you are on the TorrentFlux Settings page, you may want to verify that you have green lights down the page (if not you will want to fix them). Enjoy! -- TorrentFlux.com ----------------------------------------------------------------- Upgrading from Previous Versions of TorrentFlux ----------------------------------------------------------------- IMPORTANT: Remember to always backup your database before any upgrade -- just in case. If you run into problems, a clean install never hurt anyone. 1. Rename your config.php file to config.old.php or something like that so you can look at it when entering settings in the new config.php file. 2. Copy all the new files over your old ones including the themes and subdirectories. 3. Edit the new config.php to contain the settings needed. 4. IMPORTANT: To upgrade a previous TorrentFlux installation to this new version you need to select the correct upgrade file from the upgrades directory. Place the upgrade file in your web root with your config.php file and launch your web browser to that file: http://www.yourdomain.com/upgrade23_24.php All the database changes will be added and updated automatically without touching your old data. You should delete the upgrade PHP file after it has run and performed the upgrade. 5. It is important that you use the new TF_BitTornado along with the new btphptornado.py file. You should also clean up the old TF_BitTornado from your previous version of TorrentFlux. ----------------------------------------------------------------- Known Issues ----------------------------------------------------------------- Please check the forums at: http://www.torrentflux.com ----------------------------------------------------------------- TorrentFlux Features ----------------------------------------------------------------- TorrentFlux is a feature rich Torrent download manager. * Upload Torrents via URL or File Upload * RSS Feeds, download torrents files with a click * Start, Stop, and Delete Torrents with ease * Advanced Torrent start options (ports, speeds, etc.) * Multi-user interface * Run several torrents at once * View Download Progress of all torrents at a glance * View drive space at a glance * View Torrent file meta information * Built-in User management and Security * Private Messaging * Themes (selectable per user) * Upload History * Detailed User Administration * Admin Searchable Logs * Torrent Search (many popular sites) * Language Support * Make your own torrents * Add torrents to a download Queue * Multi delete files in directory listing ----------------------------------------------------------------- Is TorrentFlux Open Source? ----------------------------------------------------------------- YES, use it, modify it, but please always give credit. Donations can be given through http://www.torrentflux.com TorrentFlux is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. TorrentFlux is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with TorrentFlux; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Visit TorrentFlux.com Contact benajnim with questions / comments -- I may or may not respond. =) Visit the forum: http://www.torrentflux.com/forum/ ----------------------------------------------------------------- Special Thanks To: ----------------------------------------------------------------- Thanks to all those who have helped with bits of code, ideas, and bug finding. Thanks to all those that post ideas in the forums, too many to name here. A special thanks to the following: --Qrome for leading the torch on this project during initial phases --Supporting Members -- those that have donated time and money (or items from my wishlist -- Huge thanks for all the testing and suggestions. --Eradan and the Lanbash team for ideas, support, and beta testing. --MMaster23 converted the scripts to run under Windows. Email MMaster23 with questions only about the windows version. Yes, there is a Windows version too. =) --Comm who has picked up the windows port after MMaster23 and has been a great help in the forums and to the windows TF users. --IJs provided the nice blue icon for seeding and some code for displaying seeding status. --wrk for some additions for displaying distributed seeds and some other code additions. --Remko Jantzen for code snip on adding mime type images for file types in the directory view. --David Vignoni | ICON KING for the file icons used for mime types from NUVOLA ICON THEME for KDE 3.x (http://www.icon-king.com). --IhatemyISP for helping with the reading of the Torrent download size on the main page. Also helps provide support and cool TF hacks in the forums. He has been a great help in the forums. --kluzz for posting information in the TorrentFlux forum on taring directories on the fly for package downloading. --Infinity for integrating the ADODB database abstraction layer. --TreboniouS for suggesting showing server load from /proc/loadavg --remedy for adding code support for reading file size over 2.0 GB --kboy for his awesome work on the queue system and for helping to keep the torrent search current and fancy. ;) Big thanks for spending some time to make the code cleaner and getting rid of the annoying NOTICES in the apache log. --NovaKing for his great help with cookies and the RSS portion. --Cubby for the multi-select delete option on directory listing. ... I could keep adding to this list, but the names are too many. Big Thanks to all you out there in the forums. torrentflux_2.4/upgrades/0000755000004100000410000000000011026130131015663 5ustar www-datawww-datatorrentflux_2.4/upgrades/upgrade14_15.php0000755000004100000410000000275611017367654020540 0ustar www-datawww-data
    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make sure you have edited your new config.php
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } ?> torrentflux_2.4/upgrades/upgrade20_21.php0000755000004100000410000001072411017367654020524 0ustar www-datawww-data
    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "THIS IS FOR MYSQL DATABASE UPGRADE ONLY!

    "; echo "Upgrade from TorrentFlux 2.0 to 2.1
    "; echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make sure you have edited your new config.php with your database settings.
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } ?> torrentflux_2.4/upgrades/upgrade22_23.php0000755000004100000410000000301711017367654020525 0ustar www-datawww-data
    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "THIS IS FOR MYSQL DATABASE UPGRADE ONLY!

    "; echo "Upgrade from TorrentFlux 2.2 to 2.3
    "; echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make sure you have edited your new config.php with your database settings.
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } ?> torrentflux_2.4/upgrades/upgrade21_22.php0000755000004100000410000000415111017367654020523 0ustar www-datawww-data
    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "THIS IS FOR MYSQL DATABASE UPGRADE ONLY!

    "; echo "Upgrade from TorrentFlux 2.1 to 2.2
    "; echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make sure you have edited your new config.php with your database settings.
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } ?> torrentflux_2.4/upgrades/upgrade12_13.php0000755000004100000410000000372511017367654020531 0ustar www-datawww-data
    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make suer you have edited your new config.php
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } // *************************************************************************** // *************************************************************************** // Checks for the location of the torrents // If it does not exist, then it creates it. function checkTorrentPath() { global $cfg; // is there a stat and torrent dir? if (!is_dir($cfg["torrent_file_path"])) { //Then create it mkdir($cfg["torrent_file_path"]); } } ?> torrentflux_2.4/upgrades/upgrade23_24.php0000755000004100000410000000355511017367654020536 0ustar www-datawww-data
    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "THIS IS FOR MYSQL DATABASE UPGRADE ONLY!

    "; echo "Upgrade from TorrentFlux 2.3 to 2.4
    "; echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make sure you have edited your new config.php with your database settings.
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } ?> torrentflux_2.4/upgrades/upgrade11_12.php0000755000004100000410000000461511017367654020526 0ustar www-datawww-data
    "; shell_exec("mv ".$cfg["path"]."*.stat ".$cfg["torrent_file_path"]."."); echo "Moving torrent files to: ".$cfg["torrent_file_path"]."

    "; shell_exec("mv ".$cfg["path"]."*.torrent ".$cfg["torrent_file_path"]."."); echo "TorrentFlux upgrade to version 1.2 is complete!

    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make suer you have edited your new config.php
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } // *************************************************************************** // *************************************************************************** // Checks for the location of the torrents // If it does not exist, then it creates it. function checkTorrentPath() { global $cfg; // is there a stat and torrent dir? if (!is_dir($cfg["torrent_file_path"])) { //Then create it mkdir($cfg["torrent_file_path"]); } } ?> torrentflux_2.4/upgrades/upgrade13_14.php0000755000004100000410000000275011017367654020530 0ustar www-datawww-data
    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make sure you have edited your new config.php
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } ?> torrentflux_2.4/upgrades/upgrade15_20.php0000755000004100000410000000355711017367654020535 0ustar www-datawww-data
    " ."You should now delete this upgrade file from your server.

    "; echo "DONE"; } else { echo "THIS IS FOR MYSQL DATABASE UPGRADE ONLY!

    "; echo "Upgrade from TorrentFlux 1.5 to 2.0
    "; echo "
      "; echo "
    1. Make sure all your torrent downloads are stopped before performing upgrade.
    2. "; echo "
    3. Make sure you have copied over all the new PHP files.
    4. "; echo "
    5. Make sure you have edited your new config.php with your database settings.
    6. "; echo "
    "; echo "Are you ready to upgrade? YES"; } ?>